我做了一件愚蠢的事情。 在尝试更改用户'x'的shell的时候,我很忙,没有在命令末尾键入用户名,所以我最终运行了这个:
chsh /sbin/nologin
这似乎已经改变了root的默认shell,不存在,因此root可以不再login。我在Linode VPS上运行Ubuntu 10.04 LTS。 幸运的是,他们给你一个恢复控制台来启动,从那里你可以挂载/ dev / xdva到一个位置并编辑文件。 这些是我遵循的步骤:
现在,我仍然无法通过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访问已恢复。
我希望有人能从我这个愚蠢的错误中带走一些东西。