passwd 命令的基本格式如下:
[root@localhost ~]#passwd [选项] 用户名
选项:
-S:查询用户密码的状态,也就是 /etc/shadow 文件中此用户密码的内容。仅 root 用户可用;-l:暂时锁定用户,该选项会在 /etc/shadow 文件中指定用户的加密密码串前添加 "!",使密码失效。仅 root 用户可用;-u:解锁用户,和 -l 选项相对应,也是只能root 用户使用;--stdin:可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用;-n 天数:设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段;-x 天数:设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段;-w 天数:设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段;-i 日期:设置用户密码失效日期,对应 /etc/shadow 文件中各行密码的第 7 个字段。
我们使用 root 账户修改 lamp 普通用户的密码,可以使用如下命令:
[root@localhost ~]#passwd lamp
Changing password for user lamp.
New password: <==直接输入新的口令,但屏幕不会有任何反应
BAD PASSWORD: it is WAY too short <==口令太简单或过短的错误!这里只是警告信息,输入的密码依旧能用
Retype new password: <==再次验证输入的密码,再输入一次即可
passwd: all authentication tokens updated successfully. <==提示修改密码成功
使用 root 用户,无论是修改普通用户的密码,还是修改自己的密码,都可以不遵守 PAM 模块设定的规则,就比如我刚刚给 lamp 用户设定的密码是 "123",系统虽然会提示密码过短和过于简单,但依然可以设置成功。当然,在实际应用中,就算是 root 身份,在设定密码时也要严格遵守密码规范,因为只有好的密码规范才是服务器安全的基础。
除了passwd -S
命令可以查看用户的密码信息外,还可以利用 chage 命令,它可以显示更加详细的用户密码信息,并且和 passwd 命令一样,提供了修改用户密码信息的功能。
如果你要修改用户的密码信息,我个人建议,还是直接修改 /etc/shadow 文件更加方便。
chage 命令的基本格式:
[root@localhost ~]#chage [选项] 用户名
选项:
-l:列出用户的详细密码状态;-d 日期:修改 /etc/shadow 文件中指定用户密码信息的第 3 个字段,也就是最后一次修改密码的日期,格式为 YYYY-MM-DD;-m 天数:修改密码最短保留的天数,也就是 /etc/shadow 文件中的第 4 个字段;-M 天数:修改密码的有效期,也就是/etc/shadow 文件中的第 5 个字段;-W 天数:修改密码到期前的警告天数,也就是/etc/shadow 文件中的第 6个字段;-i 天数:修改密码过期后的宽限天数,也就是/etc/shadow 文件中的第 7个字段;-E 日期:修改账号失效日期,格式为 YYYY-MM-DD,也就是/etc/shadow 文件中的第 8个字段。
chage 命令除了修改密码信息的功能外,还可以强制用户在第一次登录后,必须先修改密码,并利用新密码重新登陆系统,此用户才能正常使用。
例如,我们创建 lamp 用户,并让其首次登陆系统后立即修改密码,执行命令如下:
#创建新用户 lamp
[root@localhost ~]#useradd lamp
#设置用户初始密码为 lamp
[root@localhost ~]#echo "lamp" | passwd --stdin lamp
#通过chage命令设置此账号密码创建的日期为 1970 年 1 月 1 日(0 就表示这一天),这样用户登陆后就必须修改密码
[root@localhost ~]#chage -d 0 lamp
这样修改完 lamp 用户后,我们尝试用 lamp 用户登陆系统(初始密码也是 lamp):
local host login:lamp
Password: <--输入密码登陆
You are required to change your password immediately (root enforced)
changing password for lamp. <--有一些提示,就是说明 root 强制你登录后修改密码
(current)UNIX password:
#输入旧密码
New password:
Retype new password:
#输入两次新密码