You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

误操作导致root用户名变更、/etc/passwd文件异常及权限丢失的求助

误操作导致root用户名变更、/etc/passwd文件异常及权限丢失的求助

兄弟你这情况确实挺闹心的,不过万幸还能通过SSH连进服务器,这就有得救!咱们一步步来把这个问题修好:

首先得明确问题根源:你误操作把服务器密码字符串插到了/etc/passwd的root用户条目前面,导致系统识别不了正确的root用户格式,自然就出现了权限异常的问题。正常的root行应该是root:x:0:0:root:/root:/bin/bash,现在前面多了那串密码字符,系统根本认不出这是合法的root条目。

第一步:先备份原文件,留好后路

不管怎么操作,先把坏了的/etc/passwd备份一份,免得越改越乱:

sudo cp /etc/passwd /etc/passwd.bak

如果输入sudo后提示权限问题,试试用管道传密码(虽然明文输密码不太安全,但紧急情况只能先这么办):

echo "你的服务器登录密码" | sudo -S cp /etc/passwd /etc/passwd.bak

第二步:修复/etc/passwd里的root条目

咱们要把那串多余的密码字符删掉,恢复正确的root行。这里给你两种方法,选一种能用的就行:

  • 方法一:用sed命令快速替换
    sed可以直接定位并替换文件内容,这条命令会把root行开头的多余字符全部删掉:
sudo sed -i 's/^.*root:x:0:0:root:/root:x:0:0:root:/' /etc/passwd
  • 方法二:用临时文件重建passwd(更稳妥)
    如果sed用不了,就先把除了坏的root行之外的所有内容提取出来,再加上正确的root行:
sudo bash -c 'grep -v "root:x:0:0:root:" /etc/passwd > /tmp/passwd.tmp && echo "root:x:0:0:root:/root:/bin/bash" >> /tmp/passwd.tmp && cp /tmp/passwd.tmp /etc/passwd'

第三步:验证修复效果

运行这条命令,看看root行是不是恢复正常了:

cat /etc/passwd | grep root

如果输出是root:x:0:0:root:/root:/bin/bash,说明修复成功了!

第四步:测试权限恢复情况

试试之前进不去的目录,比如cd /root,再执行个sudo ls /,确认权限已经正常。

最后提醒一句:以后从论坛复制命令的时候,一定要仔细核对内容,尤其是涉及/etc/passwd、/etc/shadow这种系统核心文件的操作,先备份再执行才稳妥!

备注:内容来源于stack exchange,提问作者Aye Chan Maung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:43:02