引言
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
用户账号管理
用户账号管理,主要分为三个方面 用户账号的添加,修改和删除。
useradd 选项 用户名
- 用户删除 userdel
userdel 选项 用户名
- 用户修改 usermod
usermod 选项 用户名
- 口令管理(密码管理)passwd
passwd 选项 用户名
用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理,实际上就是对/etc/group 文件的操作
- 添加一个新的用户组 groupadd
groupadd 选项 用户组
- 删除一个已有用户组 groupdel
groupdel 用户组
groupdel 用户组的gid
- 修改用户组的属性 groupmod
groupmod 选项 用户组
扩展命令 id,groups,gpasswd
- id : id命令用于显示用户ID和所属的组ID。
id [OPTION]... [USER]
由上图可以看到 root超级用户的uid=0,gid=0即所属主组为root组,附加组为testgroup。
2. groups : groups命令用于显示用户所属的组。
groups [选项]... [用户名]...
- gpasswd:gpasswd用来设置组密码以及组中的用户管理。
gpasswd [选项] 组
选项:
-a, --add USER 向组 GROUP 中添加用户 USER
-d, --delete USER 从组 GROUP 中添加或删除用户
-h, --help 显示此帮助信息并推出
-Q, --root CHROOT_DIR 要 chroot 进的目录
-r, --delete-password remove the GROUP's password
-R, --restrict 向其成员访问组 GROUP
-M, --members USER,... 设置组 GROUP 的成员列表
-A, --administrators ADMIN,... 设置组的管理员列表
三个文件
/etc/passwd
/etc/passwd 文件是用户管理工作涉及的最重要的一个文件,Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
root:x:0:0:root:/root:/bin/bash
说明:
- 口令,口令即存放的是用户口令的加密字符串,不是明文,然后由于 /etc/passwd文件对所有用户都是可读的,所以我们在 /etc/passwd 中无法看到加密的口令,只能看到一个特殊的字符 (“x”或者 “*”),而实际的密码在 /etc/shadow 中可以看到。
- 用户标识号,是一个整数,用于在系统内部来标识用户
a. 标识号的取值范围 : 0~65535
b. 0 为超级用户 root 的标识号,1~999为系统保留(centos8是这样),普通用户的标识号从1000开始。 - 组标识号:记录用户所属的用户组,对应着 /etc/group 文件的一条记录
- 主目录:用户的起始工作目录
- 登录shell就是用户登录linux所使用的shell,默认的话就是/bin/shell
/etc/shadow
/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生
root:$加密口令::0:99999:7:::
- "登录名"是与/etc/passwd文件中的登录名相一致的用户账号
- "口令"字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
- "最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。通常是1970年1月1日。
- "最小时间间隔"指的是两次修改口令之间所需的最小天数。
- "最大时间间隔"指的是口令保持有效的最大天数。
- "警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
- "不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。
- "失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
/etc/group
每个用于都属于某个用户主,一个组中可以有多个用户,一个用户也可以属于不同的组。
在/etc/passwd中记录的是用户所属的主组,登录时的默认组,其他组称为附加组。
root:x:0:user1
- "组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
- "口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
- "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。(普通用户从1000开始,系统用户为1-999,超级管理员root为0)
- "组内用户列表"是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。