我误输入了
chsh -s /usr/bin
代替
chsh -s /bin/bash
现在我无法登录到root shell,如何以root用户身份启动bash shell?
sudo vipw
工作?
我误输入了
chsh -s /usr/bin
代替
chsh -s /bin/bash
现在我无法登录到root shell,如何以root用户身份启动bash shell?
sudo vipw
工作?
Answers:
尽管root用户无权访问,但sudo组中的用户仍可以运行特权命令-似乎错误不在sudo中,而是在sudo chsh
命令的其他地方(例如chsh错误)。
因此,您的sudo显然可以正常工作。
可以使用以下方法编辑passwd文件:
sudo vipw
和根外壳手动更改。
(/etc/passwd
通常是第一行)
root:x:0:0:root:/root:/bin/bash
FOM人用vipw
vipw和vigr命令分别编辑文件/ etc / passwd和/ etc / group。使用-s标志,它们将分别编辑这些文件的影子版本/ etc / shadow和/ etc / gshadow。程序将设置适当的锁以防止文件损坏。
vipw
和vigr
,谢谢!我一直都用过sudo vim /etc/passwd
sudo -e
,执行此锁定编辑功能以进行任何编辑。
出于安全考虑,登录不论文字还是图形和公用事业一样su
,并sudo
允许您运行命令以不同的用户运行的所有通过目标用户的shell命令者。如果目标用户的shell无法正常运行,那么您已经看到了结果:-(
除非您碰巧在某个地方运行了仍然起作用的root shell,或者像setuid-root二进制文件之类的东西或使您可以绕过它的东西运行,否则使用应急系统或实时映像重新启动并纠正问题可能是您的最佳选择。
引导救援系统,将实际系统的根文件系统挂载到某个位置,例如/mnt/foo
,然后进行编辑/mnt/foo/etc/passwd
以修复外壳。保存,卸载并完成。
/etc/passwd
不是明文?至少有十年来,我从未见过。在某些系统上这仍然是问题吗?无论如何,我想chroot /mnt/foo chsh -s /bin/bash
在这种情况下可能会解决问题?