passwd
在 Linux 或类 Unix 系统中,passwd
命令用于修改用户密码。
🔧 修改当前用户密码
passwd
执行后,系统会提示你输入:
Changing password for user yourusername.
Current password: # 输入当前密码
New password: # 输入新密码
Retype new password: # 再次输入新密码确认
🔧 以 root 身份修改其他用户的密码
sudo passwd username
例如:
sudo passwd alice
将会修改用户 alice
的密码。你需要输入你的 sudo 密码,然后设置新密码(不需要当前密码)。
🛡️ 密码规则
- 密码长度一般不少于 8 位(依据系统策略)
- 包含大小写字母、数字、特殊符号会更安全
- 系统可能会限制太简单的密码,给出错误提示,如
BAD PASSWORD: it is too simplistic/systematic
🧩 示例
$ passwd
Changing password for user chuan
Current password: [输入原密码]
New password: [输入新密码]
Retype new password: [再次输入新密码]
passwd: all authentication tokens updated successfully.
passwd
无法成功修改密码问题的解决方案
passwd: Authentication token manipulation error
passwd: password unchanged
表示 passwd
无法成功修改密码,通常是以下几种原因之一。
✅ 1. 权限不足(最常见原因)
如果你不是 root 用户,而又试图修改其他用户的密码,或者系统权限不足,就会出现此错误。
解决方法:
使用 sudo
(需要你具备 sudo 权限):
sudo passwd your_username
或者切换到 root 用户再执行:
su -
passwd your_username
✅ 2. /etc/shadow
文件权限错误
passwd
命令需要写入 /etc/shadow
文件。如果该文件权限或所有者被意外修改,就无法写入,导致此错误。
检查并修复:
ls -l /etc/shadow
输出应类似于:
-r-------- 1 root shadow 1234 Jul 22 14:33 /etc/shadow
如果权限或所有者不是 root:shadow
,请修复它:
sudo chown root:shadow /etc/shadow
sudo chmod 640 /etc/shadow
✅ 3. 文件系统只读
如果系统文件所在的分区处于只读状态,也无法修改 /etc/shadow
,因此不能更新密码。
检查挂载状态:
mount | grep ' / '
如果你看到如 ro
(只读):
/dev/sda1 on / type ext4 (ro,relatime,...)
说明根分区是只读的。
尝试重新挂载为读写:
sudo mount -o remount,rw /
✅ 4. PAM 相关问题(罕见)
如果系统的 Pluggable Authentication Modules(PAM)配置被破坏,也可能导致密码修改失败。
解决方法:
确保你没有误修改 /etc/pam.d/passwd
文件。如果有备份,恢复原始配置。
✅ 5. SELinux 问题(部分系统中)
如果你开启了 SELinux,它可能限制 passwd
对某些文件的访问。
暂时关闭 SELinux(测试):
sudo setenforce 0
passwd
如果成功,说明是 SELinux 策略问题,建议稍后修复策略。