web服务器
技术随笔
Linux centos7忘记root密码,修改root密码
场景
CentOS 7 默认使用 systemd 与 grub2 启动。忘记 root 密码无法登录时,可通过单用户(emergency/rescue)模式重置。
一、进入单用户模式
- 开机进入 grub 启动菜单,在对应内核项上迅速按
e进入编辑。 - 找到以
linux16(或linux)开头的内核行,在行尾(LANG=zh_cn.UTF-8之后)追加init=/bin/sh。注意必须追加在同一行末尾,另起一行会导致无法进入单用户命令行。 - 按
Ctrl+X启动,进入sh-4.2#单用户 shell。
二、重新挂载根分区为可写
单用户模式下根文件系统默认是只读(read-only),直接 passwd 会报 Authentication token manipulation error。先重新挂载:
mount -o remount,rw /三、修改 root 密码
passwd root输入两次新密码即可。若提示密码过于简单(BAD PASSWORD: it is too simplistic),可换一个复杂密码,或使用:
echo "新密码" | passwd --stdin root四、若仍报 Authentication token 错误的排查
- 密码文件被加锁:
lsattr /etc/passwd /etc/shadow若存在i属性,用chattr -i /etc/passwd /etc/shadow解除。 - passwd 与 shadow 不同步:执行
pwconv同步。 - inode 用满:
df -i若 100%,需清理。 - 根分区满:
df -h清理空间。 - selinux 干扰:临时
setenforce 0后重试。 - pam 模块损坏:/lib/security/pam_unix.so 出现 invalid ELF header,用备份恢复。
五、收尾
执行 exec /sbin/init(或 reboot -f)正常重启,用新密码登录。