我尝试更改用户的 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 的答案是永久修复。