我可以登录到非默认 shell 吗?

我可以登录到非默认 shell 吗?

我喜欢 fish。我有一台运行着一些服务的 Ubuntu 8.04 服务器。所以我像过去一样编辑了 /etc/passwd 文件,将我的默认 shell 从 bash 更改为 fish。是的,我打错了(顺便说一句:我知道 chsh,我就是这么愚蠢和自负)。拜托,别笑了。

正如预期的那样,现在我无法登录。是否可以在不重新启动服务器的情况下登录?我知道我可以在安全模式下重新启动服务器并解决问题,但我想避免这样做。

哦,是的,我没有其他用户在该服务器上拥有 sudo 权限。别再笑了。

顺便说一句,我使用 ssh 弄得一团糟,但我可以轻松物理访问服务器,它就在几个房间之外。

答案1

不幸的是,没有;您已将自己锁定。如果缺少 shell,SSH 将不允许您登录。以下是尝试操作/var/log/auth.log

Dec 23 15:04:59 ubuntu sshd[5585]: User kees not allowed because shell /bin/fish does not exist

控制台上的 TTY 登录将始终尝试启动您配置的 shell。如果没有其他具有sudo权限的用户,您将需要启动到单用户模式来修复此问题。:(

答案2

如果您已设置 root 密码,您可以以 root 身份在机器上登录(在 X 中或在虚拟控制台上按 alt-F1),或者以非 sudo 用户身份远程登录,然后在su终端中切换到 root。

当然,Ubuntu 默认不允许您以 root 身份登录,因此假设您之前已经更改过这一点。

答案3

如果您想将某些配置文件恢复到以前的状态,您可以随时尝试编辑它们,通过使用某些 Ubuntu CD 的 Live 版本启动您的服务器,挂载 /etc 文件所在的实际分区并使用 vi 编辑它们。

您还可以编辑文件 /etc/sudoers,以便赋予更多用户成为 root 的权限。

相关内容