Linux 用户管理知识与应用实践
本章将深入讲解用户管理的知识,并带领小伙伴们实践 Linux 运维中有关用户管理的工作。
六、添加用户组命令 groupadd
在 groupadd 命令后面指定用户组名执行就可以建立新的用户组了。但 groupadd 命令的用途不大,因为 useradd 命令在创建用户的同时会创建与用户同名的用户组,正常情况下都可以满足创建用户组的需求。
1、groupadd 命令语法和常用参数
groupadd [options] [group] groupadd [选项] [用户组]表 14-12 groupadd 命令的常见参数及说明
2、groupadd 命令实例
在生产环境中,增加用户组的用法一般来说都是非常简单的,比如下面的示例是添加 GID 为 802 的用户组 zumahome。实现代码具体如下:
[root@shy ~]# groupadd -g 802 zumahome [root@shy ~]# tail -l /etc/group zumahome:x:802:提示:groupadd 的命令在工作场景中的应用绝大多数情况下最多仅限于此。
七、删除用户组命令 groupdel
groupdel 命令用于删除指定的用户组,此命令的使用频率极低,了解一下即可。
groupdel 命令语法和使用范例:
groupdel [group] groupdel [用户组]说明:groupdel 不能删除还有用户归属的主用户组。
范例14 -12:删除 zumahome 用户组。
[root@shy ~]# grep -w zumahome /etc/group zumahome:x:802: [root@shy ~]# groupdel zumahome # 删除 zumahome 用户组命令 [root@shy ~]# grep -w zumahome /etc/group # zumahome 用户组已经被删除了。 [root@shy ~]# groupdel root # 删除root用户组失败,因为组内的root用户还存在。 groupdel:不能移除用户“root”的主组八、修改用户密码命令 passwd
passwd 命令可以修改用户密码及密码过期时间等内容,是很常用的命令。普通用户和超级用户都可以运行 passwd 命令,但普通用户只能更改自身的用户密码,超级用户 root 则可以设置或修改所有用户的密码。
1、passwd 命令语法和常用参数
passwd [option] [username] passwd [选项] [用户名]表 14-13 passwd 命令常见参数及说明
注意:
- root 用户可以修改任何用户的密码,普通用户只能修改自身的密码。
- root 用户修改密码时,如果不符合系统密码规则,则会给出警告信息,但密码设置仍然有效。而普通用户修改密码时,如果使用的是弱密码,则会给出告警信息,且修改无效。
2、passwd 命令使用范例
范例14-13:修改用户密码的示例。
(1)修改自身用户密码
当只执行 passwd 无任何参数和内容时,表示修改当前执行命令用户自身的密码。具体代码如下:
[root@shy ~]# passwd 更改用户 root 的密码 。 新的 密码: # 输入密码 12345678,系统不会输出用户输入的密码。 无效的密码: 密码未通过字典检查 - 过于简单化/系统化 重新输入新的 密码: # 再次输入密码 123456 passwd:所有的身份验证令牌已经成功更新。(2)设置及修改普通用户的密码
[root@shy ~]# useradd oldgirl useradd:用户“oldgirl”已存在 [root@shy ~]# passwd oldgirl # 为 oldgirl 用户添加密码 更改用户 oldgirl 的密码 。 新的 密码: 无效的密码: 密码未通过字典检查 - 过于简单化/系统化 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [root@shy ~]# su - oldgirl # 切换到 oldgirl 用户 上一次登录:二 5月 19 22:00:53 CST 2026pts/0 上 [oldgirl@shy ~]$ whoami oldgirl [oldgirl@shy ~]$ passwd 更改用户 oldgirl 的密码 。 为 oldgirl 更改 STRESS 密码。 (当前)UNIX 密码: 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。范例14-14:显示账号密码信息。
[oldgirl@shy ~]$ passwd -S oldgirl 只有根用户才能进行此操作。 [oldgirl@shy ~]$ exit 登出 [root@shy ~]# passwd -S oldgirl oldgirl PS 2026-07-05 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)范例14-15:一条命令非人工交互设置密码(生产使用技巧)。
[root@shy ~]# echo "12345678"|passwd --stdin oldgirl # --stdin参数能从标准输入中获取密码。 更改用户 oldgirl 的密码 。 passwd:所有的身份验证令牌已经成功更新。提示:这个命令用于在工作中批量设置密码。
范例14-16:要求 oldgirl 用户 7 天之内不能更改密码,60 天以后必须修改密码,过期前 10 天通知用户,过期后 30 天禁止用户登录。
[root@shy ~]# passwd -n 7 -x 60 -w 10 -i 30 oldgirl 调整用户密码老化数据oldgirl。 passwd: 操作成功 [root@shy ~]# chage -l oldgirl # -l 参数用于查看账户的信息。 最近一次密码修改时间 :7月 05, 2026 密码过期时间 :9月 03, 2026 密码失效时间 :10月 03, 2026 # 对应 -i 参数,密码过期30天之后停权。 帐户过期时间 :从不 两次改变密码之间相距的最小天数 :7 # 对应 -n 参数 两次改变密码之间相距的最大天数 :60 # 对应 -x 参数 在密码过期之前警告的天数 :10 # 对应 -w 参数3、生产场景下实用技巧
- 用户密码要足够复杂,最好是 8 位以上字母(含大小写)、数字、 特殊字符的组合。
- 较大的企业用户和密码可以统一管理(采用微软活动目录或 openldap 开源工具)。
- 动态密码:动态口令,需要时登录到动态口令系统中,即时申请获得密码,但如果若干时间内不操作服务器,密码则会失效。
九、批量更新用户的密码命令 chpasswd
chpasswd 命令可从标准输入中读取一定格式的用户名、密码来批量更新用户的密码。这个格式为 “用户名:密码”,注意,用户名必须事先真实存在,否则,该命令无法为一个不存在的用户设置密码。
范例14-17:批量修改密码。
[root@shy ~]# id oldboy # 确认要修改密码的 oldboy 用户是否存在。 uid=996(oldboy) gid=1004(incahome) 组=1004(incahome),1003(sa) [root@shy ~]# id oldgirl # 确认要修改密码的 oldgirl 用户是否存在。 uid=1004(oldgirl) gid=1004(incahome) 组=1004(incahome) [root@shy ~]# chpasswd # 命令行直接输入对应格式。 root:12345678 oldboy:12345678 oldgirl:12345678 # 在新的空行输入 Ctrl + D 结束输入。 [root@shy ~]#或者将用户和密码字符串放到文件里执行。
[root@shy ~]# cat user.txt t: user.txt: 没有那个文件或目录 [root@shy ~]# touch user.txt # 新建一个文件用于存放用户及其对应的密码 [root@shy ~]# vim user.txt # 编辑该文件 root:12345678 oldboy:12345678 oldgirl:12345678 ~ ~ [root@shy ~]# cat user.txt root:12345678 oldboy:12345678 oldgirl:12345678 [root@shy ~]# chpasswd <user.txt # 利用输入重定向一次性为所有用户设置预先指定的密码。