passwd 命令用于修改用户密码,过期时间,认证信息等。
普通用户只能使用 passwd 命令修改自身的系统密码,而 root 管理员则有权限修改其他所有人的密码。更酷的是,root 管理员在 Linux 系统中
修改自己或他人的密码时不需要验证旧密码,这一点特别方便。既然 root 管理员可以修改其他用户的密码,就表示完全拥有该用户的管理权限。
参数 | 作用 |
-l | 锁定用户,禁止登陆。 |
-u | 解除锁定,允许登陆。 |
--stdin | 允许通过标准输入修改用户密码,如 echo "NewPassWord" | passwd --stdin Username |
-d | 删除密码,允许用户空密码登陆 |
-e | 强制用户在下次登陆时修改密码 |
-S | 显示用户的密码是否被锁定,以及密码所采用的加密算法名称 |
知识扩展
与用户、组账户信息相关的文件
存放用户信息:
/etc/passwd /etc/shadow
存放组信息:
/etc/group /etc/gshadow
用户信息文件分析(每项用:
隔开)
例如:jack:X:503:504:::/home/jack/:/bin/bash
jack //用户名
X //口令、密码
503 //用户id(0代表root、普通新建用户从500开始)
504 //所在组
: //描述
/home/jack/ //用户主目录
/bin/bash //用户缺省Shell
组信息文件分析
例如:jack:$!$:???:13801:0:99999:7:*:*: jack //组名 $!$ //被加密的口令 13801 //创建日期与今天相隔的天数 0 //口令最短位数 99999 //用户口令 7 //到7天时提醒 * //禁用天数 * //过期天数
实例
如果是普通用户执行passwd只能修改自己的密码。如果新建用户后,要为新用户创建密码,则用passwd 用户名,注意要以root用户的权限来创建。
[root@localhost ~]# passwd linuxde //更改或创建linuxde用户的密码; Changing password for user linuxde. New UNIX password: //请输入新密码; Retype new UNIX password: //再输入一次; passwd: all authentication tokens updated successfully. //成功;
普通用户如果想更改自己的密码,直接运行passwd即可,比如当前操作的用户是linuxde。
[linuxde@localhost ~]$ passwd Changing password for user linuxde. //更改linuxde用户的密码; (current) UNIX password: //请输入当前密码; New UNIX password: //请输入新密码; Retype new UNIX password: //确认新密码; passwd: all authentication tokens updated successfully. //更改成功;
比如我们让某个用户不能修改密码,可以用-l
选项来锁定:
[root@localhost ~]# passwd -l linuxde //锁定用户linuxde不能更改密码; Locking password for user linuxde. passwd: Success //锁定成功; [linuxde@localhost ~]# su linuxde //通过su切换到linuxde用户; [linuxde@localhost ~]$ passwd //linuxde来更改密码; Changing password for user linuxde. Changing password for linuxde (current) UNIX password: //输入linuxde的当前密码; passwd: Authentication token manipulation error //失败,不能更改密码;
清除密码:
[root@localhost ~]# passwd -d linuxde //清除linuxde用户密码; Removing password for user linuxde. passwd: Success //清除成功; [root@localhost ~]# passwd -S linuxde //查询linuxde用户密码状态; Empty password. //空密码,也就是没有密码;
查看有户状态: passwd -s username
用户状态标志:
PS:表示用户密码已设置。
NL:表示用户帐号是不可登录帐号。
LK:表示用户已被锁定。
NP:表示用户没有密码,登录时不需要密码认证。非交互式修改密码
echo 123456 | passwd --stdin user002
echo "user003:123456" | chpasswd