我已将默认 root shell 更改为错误的路径。现在的第一行/etc/passwd
看起来像下面的字符串:
root:x:0:0:root:/root:/usr/bin/bash
然后我从服务器注销,现在无法通过 root 登录。
服务器上没有其他用户。
我知道,这里有很多愚蠢的错误,但我该如何解决呢?
只能通过 ssh 访问服务器。
更新
这个任务是不可能完成的。我找到了一种以 www-data 用户身份执行任何命令的方法。如何更改/etc/passwd
为非 sudo 用户?
答案1
无法使用 ssh 和无效的 shell 登录。设置无效的 shell 也是使用某些 ssh 服务而不允许用户登录的标准方法(参见例如 git)。因此,如果采用替代方式,许多服务器的安全将面临危险。
同样,访问非 sudoer 帐户也不会帮助您。您已将 root 帐户设置为“不允许登录”的配置。所以不允许你登录。
您需要使用自定义内核参数或某些本地控制台重新启动。
答案2
尝试显式运行 shell 命令
ssh <hostname> /bin/bash
否则尝试编写一个命令来修复 etc passwd 文件。我相信 shell 可以运行显式命令,并且 run shell 可能只是默认设置。还要检查 ssh 选项,您可能必须选择一些才能使其运行。