五、linux用户及用户组的管理
5.1 用户及用户管理
linux系统是多用户操作系统,它支持多个用户在同一时间内登录,不同用户可移植性不同的任务,并且互不影响。
每个用户都拥有唯一跌用户和密码,在登录系统时,只有正确输入用户名和密码,才能进入系统和自己的主目录
5.1.1linux用户和组的关系
用户和组的对应关系有以下四种:
- 一对一:一个用户可以存在一个组中,是组中的唯一成员
- 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的权限
- 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限
- 多对多:多个用户可以存在多个组中
5.1.2 UID、GID
在登录linux系统时,虽然输入的是自己的用户名和密码,但事实上linux并不认识用户名称,它只识别用户名对应得ID号,所以用户名只是方便用户记忆而已,并没有实际作用,linux系统把所有的用户的名称和他们对应的ID的对应关系都存储在/etc/passwd文件中。
在linux系统中,每个用户的ID分为两种,一个是用户ID(User ID)和组ID(Group ID)
5.1.3 创建用户
在linux系统中,可以使用 useradd 命令新建用户,使用格式为 useradd [-选项] 用户名
常用选项:
- -D 查看创建用户的默认值
- -u 指定用户的UID(UID的范围应不小于500)
- -d 指定用户的主目录(主目录必须为绝对路径)
- -g 指定用户的初始组
- -G 指定用户的附加组
- -r 创建系统用户,注意限定UID应该在1~499之间,工系统程序使用的用户
5.1.4 修改用户
usermod用于修改系统账户相关的各项属性,使用格式为 useromd [选项] 用户账号
选项:
- -c 修改用户账号的备注文字
- -d 修改用户登入是的目录
- -e 修改账号的有效日期
- -f 修改在密码过期后多少天关闭该账号
- -g 修改用户所属的群组
- -G 修改用户所属的附加组
- -l,-L 修改用户名称
- -o 允许使用重复UID
- -p 修改用户密码
- -u 修改用户id
- -U 解除密码锁定
5.1.5 删除用户
userdel 用于删除用户账号和相关文件,只能系统管理员使用
在使用userdel 命令时实际时修改了系统的用户账户文件 /etc/passwd 、/etc/shadow以及/etc/group文件,这也体现了linux的思想:"一切皆文件"
使用格式 userdel [-选项] 用户名
选项:
- -f 强制删除用户
- -r 删除用户的同时删除与用户相关的所有文件
在删除用户时有时因为已经登录了该用户,该用户占用着系统进程这时将无法仅仅使用userdel删除用户,想要删除该用户可以使用 -f选项
5.1.6 用户配置文件解析
- /etc/passwd
可以看到在 /etc/passwd 下每一行记录一个用户,每行记录被冒号分割为7个字段,这7个字段的含义为:
用户名:用户密码:用户UID:用户GID:用户备注信息:用户home目录:用户默认shell
- /etc/shadow
可以看到shadow与passwd文件格式类似,由若干个字段组成,字段之间也是用:隔开,这些字段代表的含义是:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- /etc/group
用户组的所有信息存放在/etc/group文件中,它的格式也与passwd文件类似,由:分隔开若干个字段,它们的含义是:
组名:口令:组标识号:组内用户列表
5.2 用户组管理
5.2.1 初始组和附加组
一个用户可以所属多个附加组,但只能有一个初始组
我们可以使用groups查看用户属于哪些群组
5.2.2 创建用户组
groupadd命令用于添加用户组,使用格式 group add [-选项] 组名
选项:
- -g GID:指定组ID
- -r 创建系统群组
5.2.3 修改用户组
groupmod命令用于修改用户组的相关信息,使用格式 groupmod [-选项] 组名
选项:
- -g 修改组ID
- -n 修改组名
5.2.4 删除用户组
groupmod命令用于删除用户组,使用格式 groupdel 组名
5.2.5 用户组配置文件解析
- /etc/group
略
- /etc/gshadow
与用户密码文件一样,,组用户的密码信息存储在 /etc/gshadow文件中 ,并且格式由:分隔为若干个字段,这些字段的含义为:
组名:加密密码:组管理员:组附加用户列表
5.2.6 用户附加组
我们根据 /etc/passwd 文件中的第四个字段可以得出用户拥有的权限是与它所属组的权限是相同的,但是用户可以有多个组,它却只会继承初始组的权限,我们可以通过newgrp改变用户的初始组,使用格式 newgrp 组名
5.3 用户切换及用户用户组密码管理
5.3.1 su
su 是最简单的用户切换命令,可以通过这个命令实现从普通用户切换为root用户,从root用户qie切换为普通用户,或者从普通用户切换到另一个普通用户,使用格式 su [-选项] 用户名
选项:
- -l 在切换用户的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号
- -p 表示切换为指定用户,但不改变当前的工作环境
- -c 进切换用户执行一次命令,执行后自动切换回来
5.3.2 su-
su 和 su- 是完全不同的,-选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的,。也就是说 su- 切换更彻底
5.3.3 whoami 和who am i
whoami 和who am i 是两个不同的命令,前者用来打印当前执行操作的用户名,后者用来打印登录当前linux系统的用户名
5.3.4 passwd
当使用 useradd 创建新用户时并没有给它设置密码,此时这个用户无法用来登录,我们要通过passwd 命令为它配置密码,另它实现登录功能,使用格式 passwd [-选项] 用户名
选项:
- -S 查询用户密码状态,仅root用户可使用
- -l 暂时锁定用户
- -u 解锁用户
- --stdin 将管道符输入的数据用作用户的密码
- -n 设置用户修改密码后,多长时间不能再次修改密码
- -x 设置该用户的密码有效期
- -w 设置用户密码过期前的警告天数
- -i 设置用户密码的失效日期
5.3.5 gpasswd
为了避免系统管理员太忙碌,无法及时管理群组,我们可以使用 gpasswd 命令给群组设置一个群组管理员,代替root完成将用户加入或移出群组的操作,使用格式 gpasswd [- 选项] 组名
选项:
- -A 将群组的控制权交给......
- -M 将......加入到此群组中,仅 root 使用
- -r 移除群组的密码,仅 root 使用
- -R 让群组的密码失效,仅 root 使用
- -a user 将 user 用户加入到群组中
- -d user 将 user 用户从群组中移除