passwd命令可修改已知密码的用户密码;单用户模式、救援模式可重置遗忘的root密码;PAM策略能强制密码复杂度;统信UOS/Deepin需重置PAM计数器解除锁定。

一、使用passwd命令修改已知密码的用户账户
当用户已知当前密码且具备对应权限时,可通过标准passwd命令安全修改自身或他人密码。该命令直接操作/etc/shadow文件,由PAM模块校验策略并写入加密哈希值。
1、以普通用户身份登录后,仅可修改自身密码:执行passwd命令,按提示依次输入当前密码、新密码及确认密码。
2、以root用户身份登录后,可修改任意用户密码:执行passwd username(将username替换为目标用户名),跳过当前密码验证,直接设置新密码。
3、普通用户需提权修改root密码时:执行sudo passwd root,先输入本用户密码获得授权,再输入并确认新root密码。
二、通过单用户模式重置遗忘密码的root账户
当root密码完全遗忘且无其他具备sudo权限的账户时,需中断正常启动流程,以读写模式挂载根文件系统并绕过认证机制执行密码重置。
1、重启系统,在GRUB启动菜单出现时立即按下e键进入编辑模式。
2、定位以linux开头的内核参数行,删除其中的ro quiet splash字段,替换为rw init=/bin/bash。
3、按Ctrl+X或F10启动修改后的配置,系统将直接进入bash shell环境。
4、执行mount -o remount,rw /确保根分区以读写方式挂载。
5、运行passwd root,输入两次新密码完成重置。
6、若系统启用SELinux,需额外执行touch /.autorelabel以触发重启后自动重标。
三、利用安装介质进入救援模式重置密码
适用于无法访问GRUB菜单的场景(如云服务器控制台无引导干预能力、UEFI Secure Boot锁定等),通过外部可启动介质加载独立Linux环境,挂载原系统磁盘进行密码修复。
1、使用与目标系统同架构的Linux安装U盘或光盘启动,选择Troubleshooting → Rescue a CentOS/RHEL/Ubuntu system类选项。
2、等待救援环境初始化完成后,选择Continue挂载本地系统到/mnt/sysimage目录。
3、执行chroot /mnt/sysimage切换至原系统根环境。
4、运行passwd root或passwd username修改指定账户密码。
5、退出chroot环境:exit;重启系统并拔除安装介质。
四、配置PAM密码复杂度策略
通过修改PAM配置文件,可对非root用户的密码设置强制性复杂度要求,包括最小长度、字符类型组合、历史密码禁止复用等规则,所有变更即时生效无需重启服务。
1、在Debian/Ubuntu系统中,编辑/etc/pam.d/common-password文件,添加或修改含pam_cracklib.so的行:
2、设置最小长度为10位且至少包含3类字符:password requisite pam_cracklib.so retry=3 minlen=10 difok=3。
3、在RHEL/CentOS/Fedora系统中,编辑/etc/pam.d/system-auth文件,定位password段落,追加:password [success=1 default=ignore] pam_unix.so obscure sha512 remember=5以启用5次旧密码记忆限制。
4、保存文件后,新策略仅对后续执行passwd命令的非root用户生效,root用户不受此约束。
五、解除深度系统密码锁定状态
统信UOS或深度Deepin系统在多次输错密码后会触发PAM计数器锁定机制,导致即使输入正确密码也无法登录,需清除计数文件或重置策略状态。
1、以root权限登录后,执行pam_tally2 -u username --reset命令重置指定用户的失败计数器。
2、若系统使用deepin-authenticate服务,需手动清除其状态文件:rm /var/lib/deepin/authenticate/limit-states.json。
3、重启认证服务使更改生效:systemctl restart deepin-authenticate.service。










