意外的 chsh 命令出错后,如何重新获得 root 访问权限?

意外的 chsh 命令出错后,如何重新获得 root 访问权限?

我做了一件很傻的事。在尝试更改用户“x”的 shell 时,我太着急,没有在命令末尾输入用户名,所以我最终运行了这个:

chsh /sbin/nologin

这似乎将 root 的默认 shell 更改为不存在的 shell,因此 root 无法再登录。我在 Linode VPS 上运行 Ubuntu 10.04 LTS。幸运的是,他们为您提供了一个恢复控制台来启动,从那里您可以挂载您的/dev/xdva到某个位置并编辑文件。以下是我遵循的步骤:

  • 登录恢复安装
  • /dev/xvda 到 /media/xvda 并 cd 到
  • /media/xvda/ 编辑 /etc/passwd 和
  • 将 root shell 改回 /bin/bash
  • 将用户“onestp”添加到 sudoers
  • 列表,作为我的后备帐户

现在,我仍然无法通过 SSH 以 root 身份登录 VPS,它显示访问被拒绝。我尝试更改密码,但仍然无法访问。然而,我可以以用户 onestp 身份登录,但即使我sudo su -s /bin/bash root我仍然收到目录的错误消息/sbin/nologin不存在,即使我刚刚将 root 的 shell 改回 /bin/bash!

我可以通过输入以下内容来确认 shell 是否正确sudo cat /etc/passwd | grep root输出如下:

root:x:0:0:root:/root:/bin/bash

有人可以解释一下这个问题吗,我已经筋疲力尽了,花了很多年将 apache 配置为带有 php、mysql 等的 Web 服务器,真的不想重建。

需要说明的是,在此之前我没有做过完整的映像备份。我真是太傻了!

答案1

@全部,

这是一个愚蠢的错误,但我已经解决了。当使用 VPS 的恢复映像启动时,我必须安装我的/dev/xvda/媒体/xvda但是当运行如下命令时sudo nano /etc/passwd它们是相对于 RECOVERY IMAGE 运行的,而不是我的安装位置。

只需运行 sudo nano etc/passwd 就可以解决这一混乱,因为现在我正在编辑密码:代替[恢复图像]/etc/passwd

我将 shell 改回 root 的 /bin/bash,SSH 访问就恢复了。

我希望有人能从我的这个愚蠢错误中吸取一些教训。

相关内容