我做了一件很傻的事。在尝试更改用户“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 访问就恢复了。
我希望有人能从我的这个愚蠢错误中吸取一些教训。