web服务器 技术随笔

Linux centos7忘记root密码,修改root密码

场景

CentOS 7 默认使用 systemd 与 grub2 启动。忘记 root 密码无法登录时,可通过单用户(emergency/rescue)模式重置。

一、进入单用户模式

  1. 开机进入 grub 启动菜单,在对应内核项上迅速按 e 进入编辑。
  2. 找到以 linux16(或 linux)开头的内核行,在行尾(LANG=zh_cn.UTF-8 之后)追加 init=/bin/sh。注意必须追加在同一行末尾,另起一行会导致无法进入单用户命令行。
  3. 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)正常重启,用新密码登录。

标签
centosLinux