我安装了鱼鱼(一个用户友好的交互式命令行外壳)在Linux服务器上,后来有人卸载了它但我不知道。我chsh -s /usr/local/bin/fish
不小心运行后,现在无法登录服务器。显示错误消息“登录:没有外壳:没有这样的文件或目录”,这显然表明贝类不再存在。
服务器只提供了CLI接口,那么我连登录都无法登录的情况下如何更改登录shell呢?
答案1
如果您有权访问 root 帐户,则可以使用 更改用户的 shell chsh -u user -s $SHELL
。
如果您有权访问引导过程,则可以将其附加init=$SHELL
到单用户 shell,您可以在其中修复此问题,再次使用chsh -u user -s $SHELL
(某些使用带有 initrd 映像的两阶段引导的系统可能需要您使用real_init
) 。您可能需要重新挂载包含/etc/passwd
读写(使用mount -o remount,rw /
或类似)的文件系统。
否则,如果您可以su
从另一个用户进入该用户,请尝试su user -c $SHELL
,或者如果您可以 ssh 进入该用户,您可以尝试类似的操作ssh user@localhost $SHELL
。
您还可以启动到 Live CD/USB,手动安装/
和修复/etc/passwd
。
答案2
我有同样的问题,这个解决方案对我有用:
- 在实时模式下使用 Live CD 启动(我使用 debían 7.6)
- 在实时终端中,运行以下命令获取 root 访问权限:
passwd root
- 挂载崩溃发行版分区的磁盘
- 转到该磁盘并运行以下命令:
cat etc/shells
- 删除
nano etc/passwd
鱼引用并输入第 4 点的有效控制台名称 - 重新启动并享受。
答案3
当尝试登录时,我收到以下消息: 无法执行 /sbin/nologin: 没有这样的文件或目录
这就是我所做的,它对我有用。
- 我使用另一个具有超级用户权限的帐户登录系统
- 输入以下命令:
sudo chsh -u 用户 -s $SHELL
其中 user 是有问题的帐户名
- 退出系统
- 使用有问题的帐户名登录
答案4
我在 Elementary OS Loki 中也遇到了同样的问题。为了解决该问题,我执行了以下操作
- 首先我删除与 zsh 相关的所有内容sudo apt-get 删除 zsh && apt-get 自动删除
- 之后我编辑了/etc/密码文件并发现 root 用户的 shell 未定义,所以我编辑了 shell /bin/bash 这一切都帮助我解决了问题。