Linux运维与DevOps实战-实验5
一、用户概念
1. 用户与用户组
用户
用户组
用户与用户组联系
一对一
一对多
多对一
多对多
2. 相关配置文件
2.1 用户信息文件(/etc/passwd)
用户信息是被保存在 /etc/passwd 文件中,可以通过 cat /etc/passwd 来查看文件的内容:
$ cat /etc/passwd
用户名:密码占位符(x 表示用户需要密码登录):用户标识号(UID):组标识号(GID):注释性描述:主目录:登录的 shell
2.2 密码文件(/etc/shadow)
用户信息文件中的密码信息是被单独保存在 /etc/shadow 文件中,文件格式和用户信息类似,通过 cat /etc/shadow 命令来查看:
$ sudo cat /etc/shadow
用户名:加密口令:最后一次修改时间:密码最短有效天数:密码最长有效天数:密码过期前的警告时间:不活动时间:用户失效时间:暂时保留未使用
2.3 用户组文件(/etc/group)
Linux 系统对用户组的所有信息被保留在 /etc/group 文件中, 同样通过 cat /etc/group 命令来查看。
$ cat /etc/group
组名:口令:组标识号(GID):组内用户列表(多用户可用逗号分隔开)
二、用户管理
1.创建用户
添加新的用户账号是通过 useradd 命令。此外 adduser 命令也可以用于添加用户,掌握前者就已经足够。
1.1 语法
useradd [选项] [用户名]
1.2 选项说明
选项
说明
-c
comment,指定一段注释性描述
-d
目录,指定用户主目录或者说家目录;如果此目录不存在,则同时使用 -m 选项来创建主目录
-g
用户组,指定用户所属的用户组
-G
用户组,指定用户所属的附加组
-s
Shell 文件,指定用户的登录 shell
-u
用户号,指定用户的用户号,若有 -o 选项,则可以重复使用其它用户的标识号
1.3 举例
eg 1:新建一个用户 loulou,并设置某些属性值,然后查看 /etc/passwd 中相应的内容:
# 添加用户,指定 `shell`
$ sudo useradd -s /bin/bash loulou
# 设置密码
$ sudo passwd loulou
# 查看 /etc/passwd 文件最后 10 行
$ sudo tail /etc/passwd
# 查看文件的最后一行
$ sudo tail -1 /etc/passwd
eg 2:锁定用户密码和解除密码锁定:
$ sudo passwd -l loulou
# 锁定 loulou 用户密码
$ su loulou
$ sudo passwd -u loulou
# 解除锁定 loulou 用户密码
$ su loulou
exit
eg 3:清除用户密码:
$ sudo passwd -S loulou
# 查看 loulou 用户密码状态
$ sudo passwd -d loulou
# 清除 loulou 用户密码
$ sudo passwd -S loulou
# 再次查看 loulou 用户密码状态
2. 修改用户
通常情况下,可以通过 usermod 来修改已经存在用户信息:
2.1 语法
usermod [选项] [用户名]
常用选项包括 -c、-d、-m、-g、-G、-s、-u、-o 等,选项用法与 useradd 相同。
这里额外介绍一个 -a 参数,该参数可以给用户添加一个新的附加组。
2.2 举例
eg 1:使用选项 -c,修改用户 loulou 的备注信息:
$ sudo usermod -c "shiyanlou" loulou
# 修改 loulou 用户的备注信息
$ tail /etc/passwd
# 查看密码文件
3. 删除用户
从系统中删除一个不再使用的用户,可以通过 userdel 命令实现。如果一个用户的账号不再使用,删除用户账号就要把 /etc/passwd 等系统文件中的该用户记录都删除,必要时还要删除用户的主目录。
3.1语法
userdel [选项] [用户名]
选项 -r 用于把用户的主目录一起删除。
3.2 举例
eg 1:先用 useradd 新建一个用户 louplus,然后再删除:
$ sudo useradd louplus
# 新建 louplus 用户
$ tail -3 /etc/passwd
# 查看密码文件
$ sudo userdel louplus
# 删除 louplus 用户
$ tail -3 /etc/passwd
# 查看密码文件
4. 查看用户
在 Linux 终端里,我们先来查看一下 /etc/passwd 文件。第三个参数为 5000 以上的就是我们后来建立的用户,其它的是系统用户:
$ cat /etc/passwd
也可以通过下面这些命令来查看用户的信息。
4.1 查看当前用户
$ w
4.2 查看主机上的用户
$ who
$ whoami
# 查看当前登录的用户
查看登录记录:
$ lastlog
4.3 查看用户 ID 和组信息
$ id
5. 用户批量创建
使用 newusers + chpasswd 来批量添加用户。
5.1 首先创建用户文件和密码文件
# 创建用户文件
$ touch userfile.txt
# 创建密码文件
$ touch userpwdfile.txt
5.2 newusers 批量添加用户
使用 newusers 命令批量添加用户:
# 添加用户
$ sudo newusers < userfile.txt
# 可以从文件中查看到新添加的用户
$ tail -5 /etc/passwd
5.3 关闭影子文件
# 关闭影子文件
$ sudo pwunconv
5.4 用 chpasswd 批量修改密码
# 批量修改密码
$ sudo chpasswd < userpwdfile.txt
5.5 恢复影子文件
# 恢复影子文件
$ sudo pwconv
# 倒序输出 5 条影子文件记录
$ sudo tail -5 /etc/shadow
三、管理用户组
用户组的管理和用户的管理相类似,主要包括:用户组的添加、删除和修改以及用户组间切换的权限。其中用户组的增删改实际上就是对 /etc/group 文件的处理。
1. 新增用户组
增加一个新的用户组调用 groupadd 命令。
1.1 语法
groupadd [选项] [用户组]
1.2 选项说明
选项
说明
-g
指定新用户组的组标识号(GID),该参数指定的值必须唯一
-o
与 -g 同时使用,允许用户组的新 GID 和系统已有用户组的相同
1.3 举例
eg:创建一个用户组test,并且组标识号为 1024,然后查看组信息:
# 创建test组,组标识为 1024
$ sudo groupadd -g 1024 test
# 在 /etc/group 中检索test
$ sudo grep test /etc/group
grep 是一个检索命令,检索指定的字符串是否在文件中出现,有则打印出来,后续章节会详细讲解。
2. 修改用户组
通常使用 groupmod 命令修改用户组的属性。
2.1 语法
groupmod [选项] [用户组]
2.2 选项说明
选项
说明
-g
为用户组指定一个新的组标识号
-o
与 -g 同时使用时,允许将组 GID 更改为非唯一值
-n
将用户组的名字修改为新的名字
2.3 举例
eg 1:
# 修改用户组 `test` 的用户组名为 `test1`
$ sudo groupmod -n test1 test
eg 2:
# 修改用户组 test1 的 GID
$ sudo groupmod -g 1023 test1
# 并查看用户组信息
$ sudo grep test1 /etc/group
3. 删除用户组
使用 groupdel 命令把一个用户组从系统中删除。
3.1 语法
groupdel 用户组
3.2 举例
eg:
# 删除用户组 test1
$ sudo groupdel test1
4. 用户的禁用和恢复登录登录
若一个用户在操作过程中存在违法行为或长时间未曾登录,可以对其进行用户的锁定。
4.1语法
禁用:
$ usermod -L username
$ passwd -l username
恢复:
$ usermod -U username
$ passwd -u username
4.2 举例
eg 1:
# 禁止用户 loulou 登录
$ sudo passwd -l loulou
# 然后再恢复
$ sudo passwd -u loulou
禁用原理
$ sudo grep loulou /etc/shadow
$ sudo passwd -l loulou
$ sudo grep loulou /etc/shadow