我使用命令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