更改了shell并且不能s​​shlogin到root帐户

我使用命令usermod -s /bin/fish root来更改root用户的shell,现在我无法login到我的root帐户。 为什么发生这种情况?

我正试图通过在Windows上通过Putty运行Ubuntu的SSH服务器。 获得权限拒绝错误。

首先,如果您仍然通过另一个shelllogin: 不要注销
(这是为什么你总是testing之前注销)。

其次,你还能通过其他用户login吗?
其他用户是否有(uid 0),然后使用它来检查/ bin / fish是否不仅安装,而且还存在于/ etc / shells(允许的shell列表)中。 如果不是,请再试一次。

如果该用户被允许使用su或sudo,请尝试使用sudo /usr/local/bin/bash

如果所有的失败,那么你必须以其他方式login。 Tim的init=/bin/sh是对物理访问服务器的人的传统解决scheme。 (惠普国际劳工组织或戴尔的DRAC也将作为物理访问的替代品)。

从LILO引导装载程序中,这将通过init=/bin/sh ,然后在login后执行mount -o remount,rw / (否则/只会是只读的,这会使更正内容变得困难)。 从grub中select允许编辑内核参数的选项。 为内核参数的末尾添加1 (对于运行模式1,也称为单用户)或“单个”。

如果这些都不适用,您将不得不物理删除磁盘并将其攻击到您完全访问的操作系统,以便对其进行更正。

如果没有安装shell,login后会立即被locking,因为shell无法加载。

如果你不使用sudo并运行linux,你可以在grub / lilo中将有效的shell传递给内核。 喜欢:

 init=/bin/sh