Linux(四) 用户、用户组

Linux_04 —用户、用户组

一、用户与用户组记录的文件

  1. 在Linux系统当中 , 所有的系统上的账号信息都被记录在/etc/passwd这个文件中 (包括root用户) 。 而个人密码记录在/etc/shadow这个文件内 。 所有的组名记录在/etc/group文件内 。这三个文件非常重要 , 不要轻易做变动 。
  2. 用户 和用户组能够帮助Linux多任务环境变得更容易管理 。
  3. 实现账号的管理 , 主要有:
    1. 用户账号的添加 、 修改(以及修改用户所属的用户组) 、 删除
    2. 用户口令管理
    3. 用户组的添加、删除管理

二、添加用户

  1. 添加一个用户账号就是在系统中创建一个新账号 , 然后为新账号分配用户号 、 用户组、 主目录 和登录shell等资源 。 注意: 刚被创建的账号是被锁定的 , 无法使用 。
  2. 添加用户 : useradd [选项] 用户名
  3. 参数说明:
    1. -p : 指定用户密码
    2. -c : 指定一段注释性描述
    3. -d : 指定用户主目录 , 如果此目录不存在 , 则同时使用-m选项 , 可以创建主目录 。
    4. -g : 指定用户所属的用户组
    5. -G : 指定用户所属的附加组
    6. -s : 指定用户的登录Shell
    7. -u : 指定用户号 。 如果同时有-o选项 , 则可以重复使用其他用户的标识号
  4. 实例:

    1. 创建用户tom
    [root@bogon outman02]# useradd tom
    2. 查看用户信息  --> 显示UID 、GID 、以及tom所属的组
    [root@bogon outman02]# id tom
    uid=501(tom) gid=501(tom) groups=501(tom)
    3. 创建用户 , 并指定用户UID
    [root@bogon outman02]# useradd -u 800 jerry
    [root@bogon outman02]# id jerry
    uid=800(jerry) gid=800(jerry) groups=800(jerry)
    4. 创建用户 ,  并设置用户的个人主目录 (**注意:**用户编号默认跟随上一个用户的UID排序) 其中 -d用于指定用户主目录 ,  如果主目录不存在则-m创建主目录 。 
    [root@bogon outman02]# useradd -d /home/lucy -m lucy
    [root@bogon outman02]# id lucy
    uid=801(lucy) gid=801(lucy) groups=801(lucy)
    5. 创建用户gm ,  指定他属于主用户组"jerry"  ,  附加组"adm , root" , 登录使用的shell是/bin/sh
    [root@bogon home]# useradd -s /bin/sh -g jerry -G adm,root gm
    [root@bogon home]# id gm
    uid=802(gm) gid=800(jerry) groups=800(jerry),0(root),4(adm)
    6. 创建用户(伪用户) , 没有可登陆的shell 
    [root@bogon home]# useradd -s /sbin/nologin alice
    [root@bogon home]# su tom
    [tom@bogon home]$ exit
    exit
    [root@bogon home]# su alice
    This account is currently not available.
    
  5. 增加用户账号就是在/etc/passwd文件中为新用户增加一条记录 , 同时更新其他系统文件 。 如:/etc/shadow 、/etc/group

三、修改用户

  1. 修改用户账号就是根据实际情况更改用户的相关属性 , 如:用户号 、 主目录 、 用户组 、 登录shell等 。
  2. 修改用户 : usermod [选项] 用户名 。
  3. 常用的选项(-c ,-d , -m . -g , -G , -s , -u , -o)的意义与useradd命令中的含义相同 , 可以为用户指定新的资源值 。
  4. 注意:“ ”(空格) , 这个选项是指定一个新的账号 , 即将原来的用户名改为新的用户名 。
  5. 实例:

    1. 将用户gm的登录shell改为bash  , 主目录改为/home/z , 用户组(主组)改为root
    [root@bogon home]# usermod -s /home/bash -d  /home/z -g root  gm
    [root@bogon home]# id gm
    uid=802(gm) gid=0(root) groups=0(root),4(adm)
    [root@bogon home]# su gm
    su: /home/bash: No such file or directory
    **注意:** 如果该主目录不存在 , 即使加上-m也不会创建该目录 。  
    

四、用户口令的管理

  1. 用户账号刚刚创建时没有口令 , 但是被系统锁定, 无法使用 , 必须为其指定口令之后才能使用, 可以指定空口令。
  2. passwd : 指定或修改用户指令 。 超级用户可以为自己和其他用户指定口令, 普通用户只能用它修改自己的口令 。
  3. 命令格式 : passwd [选项] 用户名
  4. 选项 :
    1. -l(lock) : 锁定口令 , 即禁用账号 。
    2. -u(unlook) : 口令解锁
    3. -d(HOME_DIR) : 使用账号无口令 。(删除密码)
    4. -f : 强迫用户下次登录时修改口令。
    5. 注意: 默认无用户名,则修改当前用户的口令 。

五、切换用户

  1. su : 切换用户 管理员切普通用户不需要密码 , 用户切管理员需要密码

六、删除用户

  1. userdel : 删除用户 。
  2. 实例:

    1. 删除用户
    [root@bogon home]# userdel jerry
    2. 删除用户的工作目录
    [root@bogon home]# rm -rf jerry
    3. 在删除指定用户名的同时删除他的home目录(工作中不建议使用 , 一个用户离职之后,用户可以删掉 , 但是他的工作文件可能还有用。 )
    [root@bogon home]# userdel -r jerry
    

七、用户组管理

  1. 每个用户都有一个用户组 , 系统对一个用户组的所有用户进行集中管理 。 不同Linux系统对用户组的规定有所不同 , 如Linux下的用户属于它同名的用户组 , 这个用户组在用户创建时创建 。
  2. 用户组的管理涉及添加、删除 、 修改 , 实际上就是对/etc/group文件的更新操作。

八、用户组管理 — 添加

  1. 命令格式: groupadd [选项] 用户组
  2. 选项 :
    1. -g : GID 指定新用户组的组标识号
    2. -o : 一般与-g选项同时使用, 表示新用户组的GID可以与系统已有用户组的GID相同。
  3. 实例

    1. 添加用户组 emp
    [root@bogon home]# groupadd emp
    2. 添加用户组market , 并指定标识号为8000
    [root@bogon home]# groupadd -g 8000 market
    3. 将用户添加到附加组 (a: append    G : 附加组)
    [root@bogon home]# usermod -aG morket tom
    

九、用户组管理 — 删除

  1. 命令格式 : groupdel 组名
  2. 如果删除的用户组 , 已经被用户追加为附加组 , 对应的用户的该附加组会被撤销 。
  3. 如果被删除的用户组 , 已经被用户指定为主组 , 则该用户组无法删除 。

十、用户组管理 — 修改

  1. 命令格式: groupmod [选项] 用户组
  2. 选项:
    1. -g : GID 为用户组指定新的组标识号
    2. -o : 与 -g选项一般同时使用, 用户组的新GID可以与系统中已有用户组的GID相同 。
    3. -n : 新用户组 , 将为用户组重命名 。
  3. 实例:

    1. 将组group1的组标识号修改为102
    [root@bogon home]# groupmod -g 102 group1
    2. 将组group2的组标识号改为10000 , 并将名字改为group3
    [root@bogon home]# groupmod -g 10000 -n group3 group2
    

十一、用户组管理 — 当前用户切换用户组

  1. 如果一个用户同时属于多个用户组 , 那么用户可以在用户组之间切换 , 以便有其他用户组的权限。
  2. 用户可以 登录后使用newgrp切换到其他用户组 。这个命令的参数就是目标用户组 。 如: $newgrp root 将当前用户切换到root用户组 , 前提条件是root 确实是该用户的主组或附加组。

十二、用户账号有关的系统文件详细介绍

  1. sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
  2. /etc/passwd文件中每一行记录都对应一个用户 , 每行记录又被冒号”:” 分割为7个字段 , 具体含义如下 : 用户名: 口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
    1. 用户名: 是代表用户账号 的字符串 。 通常长度不超过8个字符 , 并且由大小写字母或数字组成 , 用户名中不能有”:” , 因为”:”在这里是分隔符 , 为了兼容起见 , 登录名中最好不要包含”.” , 并且不适用”+” 和”-“开头 。
    2. 口令 : 一些系统中存放着加密后的用户口令 。 虽然这个字段存放的只是用户口令的加密串 , 不是明文, 但是由于/etc/passwd这个文件对所有用户可读 , 所以仍然 存在一些安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
    3. 用户标识号:是一个整数 , 系统内部用它来表示用户 。 一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
    4. 组标识号: 记录的是用户所属的主用户组 。 他对应着/etc/group文件中的一条记录 。
    5. 注释性描述: 记录着用户的一些个人情况 。 没有实际性的用途 , 在不同的linux系统中 , 这个字段的格式并没有统一 。 在许多Linux系统中 , 这个 字段存放的是一段任意的注释性描述文字 , 用于finger输出 。
    6. 主目录: 也就是用户的其实工作目录 。 它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
    7. 用户登录后 , 要启动一个进程 , 负责将用户的操作传给内核 , 这个进程是用户登录到系统后的运行命令解释器或某个特定的程序 。 即shell 。
  3. 系统中存在一类用户 被称为伪用户 。
    1. 这些用户在/etc/passwd文件中也占有一条记录 , 但是不能登录 , 因为他们没有shell(或shell为/sbin/nologin) 。 他们的存在主要是方便管理系统 , 满足相应的系统进程对文件属主的要求 。
    2. 常见的伪用户:
    3. 伪用户 | 含义
      –|–
      bin| 拥有可执行的用户命令文件
      sys | 拥有系统文件
      adm | 拥有账户文件
      uucp | UUCP使用
      IP | IP或PD子系统使用
      nobady | NFS使用
  4. /etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生 。 它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用”:”隔开。这些字段是:
    1. 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
      1. ”登录名”是与/etc/passwd文件中的登录名相一致的用户账号
      2. “口令”字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
      3. “最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
      4. “最小时间间隔”指的是两次修改口令之间所需的最小天数。
      5. “最大时间间隔”指的是口令保持有效的最大天数。
      6. “警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
      7. “不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
      8. “失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
  5. 用户组的所有信息存放在/etc/group文件中 。
    1. 将用户分组是Linux系统对用户进行管理及控制访问权限的一种手段。
    2. 每个用户都属于某个用户组 , 一个组中可以有多个用户 , 一个用户也可以属于不同的用户组 。
    3. 当一个用户同时是多个用户组中的成员时 , 在/etc/passwd文件中记录的是用户所属的主组, 也就是当时的默认组 , 而其他组称为附加组 。
    4. 用户要访问属于附加组的文件时 , 必须首先使用newgrp命令是自己成为所要访问的用户组的成员
    5. 用户组的所有信息存放在/etc/group文件中, 此文件的格式也类似与/etc/passwd文件 , 由”:”分割多个字段, 这些字段有:
      1. 组名 :口令:组标识号 :组内用户列表
      2. 组名: 用户组的名称 , 有字母或数字构成 , 不能含有”:” ,不能重复 。
      3. 口令: 存放用户加密后的指令 ,一般的Linux系统的用户组没有口令 , 所以这个字段一般是空或者是”*”。
      4. 组标识号 : 一个整数 , 用于被系统内部表示组 。
      5. 组内用户列表 : 属于这个组的所有用户的列表 , 不同 用户之间用”,”分割 , 这个用户组可能是用户的主组 , 也可能是附加组 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值