Linux 用户管理知识与应用实践
本章将深入讲解用户管理的知识,并带领小伙伴们实践 Linux 运维中有关用户管理的工作。
六、添加用户组命令 groupadd
在 groupadd 命令后面指定用户组名执行就可以建立新的用户组了。但 groupadd 命令的用途不大,因为 useradd 命令在创建用户的同时会创建与用户同名的用户组,正常情况下都可以满足创建用户组的需求。
1、groupadd 命令语法和常用参数
css
groupadd [options] [group]
groupadd [选项] [用户组]
表 14-12 groupadd 命令的常见参数及说明

2、groupadd 命令实例
在生产环境中,增加用户组的用法一般来说都是非常简单的,比如下面的示例是添加 GID 为 802 的用户组 zumahome。实现代码具体如下:
csharp
[root@shy ~]# groupadd -g 802 zumahome
[root@shy ~]# tail -l /etc/group
zumahome:x:802:
提示:groupadd 的命令在工作场景中的应用绝大多数情况下最多仅限于此。
七、删除用户组命令 groupdel
groupdel 命令用于删除指定的用户组,此命令的使用频率极低,了解一下即可。
groupdel 命令语法和使用范例:
css
groupdel [group]
groupdel [用户组]
说明:groupdel 不能删除还有用户归属的主用户组。
范例 14 -12:删除 zumahome 用户组。
csharp
[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 命令语法和常用参数
css
passwd [option] [username]
passwd [选项] [用户名]
表 14-13 passwd 命令常见参数及说明

注意:
- root 用户可以修改任何用户的密码,普通用户只能修改自身的密码。
- root 用户修改密码时,如果不符合系统密码规则,则会给出警告信息,但密码设置仍然有效。而普通用户修改密码时,如果使用的是弱密码,则会给出告警信息,且修改无效。
2、passwd 命令使用范例
范例 14-13:修改用户密码的示例。
(1)修改自身用户密码
当只执行 passwd 无任何参数和内容时,表示修改当前执行命令用户自身的密码。具体代码如下:
csharp
[root@shy ~]# passwd
更改用户 root 的密码 。
新的 密码: # 输入密码 12345678,系统不会输出用户输入的密码。
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码: # 再次输入密码 123456
passwd:所有的身份验证令牌已经成功更新。
(2)设置及修改普通用户的密码
ruby
[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:显示账号密码信息。
ruby
[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:一条命令非人工交互设置密码(生产使用技巧)。
css
[root@shy ~]# echo "12345678"|passwd --stdin oldgirl # --stdin参数能从标准输入中获取密码。
更改用户 oldgirl 的密码 。
passwd:所有的身份验证令牌已经成功更新。
提示:这个命令用于在工作中批量设置密码。
范例 14-16:要求 oldgirl 用户 7 天之内不能更改密码,60 天以后必须修改密码,过期前 10 天通知用户,过期后 30 天禁止用户登录。
yaml
[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:批量修改密码。
ini
[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 ~]#
或者将用户和密码字符串放到文件里执行。
makefile
[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 # 利用输入重定向一次性为所有用户设置预先指定的密码。