Ubuntu:意外将 root 用户更改为不存在的 shell

Ubuntu:意外将 root 用户更改为不存在的 shell

我尝试更改用户的 shell,但使用了“sudo chsh”,并将 root shell 更改为“bash”而不是“/bin/bash”。现在,当我尝试更改它时,我收到“chsh:PAM 身份验证失败”,并且似乎其他东西也不起作用。

~$ sudo su
Cannot execute bash: No such file or directory

恢复模式也会发生这种情况。我该怎么做才能将其更改为可用的状态?

答案1

如果你能够使用常规用户登录,只需直接更改 root 用户的 shell:

sudo gedit /etc/passwd

找到 root 用户的行(通常是第一行),然后将最后一部分从

...:bash

...:/bin/bash

你就可以出发了。

(注意:用您喜欢的任何编辑器替换 gedit。)

答案2

使用 Ubuntu 安装盘启动实时会话。

在硬盘上安装根('/')分区(确保它是可写的)。

编辑'[HD 挂载点]/etc/passwd'(例如 /media/sda1/etc/passwd),

root 应该是第一行,只需更正登录 shell 即可,它将是该行的最后一个条目。

卸载硬盘。取出 CD。重新启动

答案3

我很久以前玩过这个:

cd /bin ; sudo su

发生的情况是,如果前面没有 /,shell 将被解释为相对路径。哦,天啊,如果我们在 /bin 中,它就会正确解析。

如果您真的遇到困难,救援 CD 是一条漫长的路。启动选项 init=/bin/sh 立即为您提供 root shell。光标只是闪烁,没有提示,但您有一个 root shell。请执行

set -i
# mount / -o remmount,rw
# vi /etc/passwd
<fix it>
# mount / -o remount,ro
# reboot -f

答案4

请注意,作为短期解决方法,您可以使用 su 命令上的“-s”开关来指定 shell。例如:

su -s /bin/bash

会使用 /bin/bash shell 启动 su 会话。sudo su -s /bin/bash(或任何你喜欢的 shell)也是如此。@Bjarke Freund-Hansen 的答案是永久修复。

相关内容