误删/etc/passwd中root行将导致无法root登录、sudo失效,须在单用户或Live环境挂载可写后,用echo追加标准格式root行并同步修复/etc/shadow对应项,再校验权限与字段合法性。

统信UOS系统中误删了/etc/passwd文件里的root行,会导致无法以root身份登录、sudo失效、系统管理功能瘫痪,必须立即在可写环境下手动恢复该关键条目。
确认root用户是否真的被删除
进入单用户模式或Live环境后,先执行:cat /etc/passwd | grep '^root:'。若无任何输出,说明root行确实丢失;若返回类似root:x:0:0:root:/root:/bin/bash:/bin/bash的完整行,则问题不在passwd文件本身。
注意:不要仅凭id root命令结果判断——该命令可能缓存或回退到nsswitch配置的其他源(如systemd或files),不具备权威性。
手动重建root行的正确格式
root行必须严格符合POSIX标准字段顺序,共7个冒号分隔字段,缺一不可:
root:x:0:0:root:/root:/bin/bash:/bin/bash
其中第4字段(GID)必须为0,第7字段(shell)必须是/bin/bash(UOS默认shell,非sh或dash);第6字段(home)必须为/root,不能是空或/;第2字段(password placeholder)必须是x,表示密码存于/etc/shadow中。
【错误示例】 root::0:0:root:/root:/bin/bash(缺少第2字段x,会导致login直接拒绝)、root:x:0:1:root:/root:/bin/bash(GID≠0,sudo将失效)。
在单用户模式下安全写入root行
第一步:确保根分区已挂载为可写——执行mount -o remount,rw /,否则vi或echo会报“Read-only file system”错误。
第二步:用echo追加方式写入,避免编辑器意外中断导致passwd文件损坏:
echo 'root:x:0:0:root:/root:/bin/bash:/bin/bash' >> /etc/passwd
第三步:立即验证格式合法性——运行getent passwd root,应完整返回该行;再执行id root,输出中uid和gid都必须显示为0。
第四步:修复shadow文件对应项(关键!)——若/etc/shadow中root行也丢失,仅补passwd无法登录。执行:echo 'root:!:19345:0:99999:7:::' >> /etc/shadow(此处!表示密码锁定,后续用passwd root重设)。
验证并退出
方法一:在当前shell中直接测试——运行su - root,输入新密码(若已用passwd设置)或提示密码错误则说明shadow未同步,需重跑上一步echo命令。
方法二:重启前强制校验权限——执行ls -l /etc/passwd /etc/shadow,确认两者均为-rw-r--r-- 1 root root;若权限异常(如777或属主非root),立即执行chown root:root /etc/passwd /etc/shadow && chmod 644 /etc/passwd && chmod 600 /etc/shadow。
执行exec /sbin/init重启系统。

















