在意外chsh命令变糟后,如何重新获得root权限?

我做了一件愚蠢的事情。 在尝试更改用户'x'的shell的时候,我很忙,没有在命令末尾键入用户名,所以我最终运行了这个:

chsh /sbin/nologin 

这似乎已经改变了root的默认shell,不存在,因此root可以不再login。我在Linode VPS上运行Ubuntu 10.04 LTS。 幸运的是,他们给你一个恢复控制台来启动,从那里你可以挂载/ dev / xdva到一个位置并编辑文件。 这些是我遵循的步骤:

  • login到恢复安装
  • / dev / xvda到/ media / xvda和cd到
  • / media / xvda / Edited / etc / passwd和
  • shell改回到/ bin / bash
  • 增加了用户'onestp'给sudoers
  • 列表,作为我的后备帐户

现在,我仍然无法通过SSHlogin到VPS作为根,它说拒绝访问。 我试图改变密码,但仍然无法访问。 我可以以用户onestp身份login,但即使在sudo su -s / bin / bash根目录下,我仍然收到错误消息,即/ sbin / nologin目录不存在,即使通过我只是将shell更改为root /斌/庆典!

我可以通过键入sudo cat / etc / passwd |来确认shell是否正确 这个输出的grep根

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

任何人都可以解释一下这个问题,我在我的白细胞结束,花了AGESconfigurationApache作为一个Web服务器与PHP,MySQL等,reeeeealy不想重build。

为了logging,在此之前,我没有做出完整的映像备份。 傻傻的我!

@所有,

这是一个愚蠢的错误,但我已经解决了。 当启动VPS的恢复映像时,我必须将/ dev / xvda挂载到/ media / xvda,但是在运行诸如sudo nano / etc / passwd之类的命令时,它们相对于RECOVERY IMAGE运行,而不是我的挂载位置。

简单地运行sudo nano etc / passwd就可以把这个问题搞乱了,因为现在我正在编辑/ meda / xvda / etc / passwd而不是[RECOVERY IAMGE] / etc / passwd

我将shell更改为/ bin / bash作为root用户,并且SSH访问已恢复。

我希望有人能从我这个愚蠢的错误中带走一些东西。