在实验的时候,我们要求通过自己编写程序替换Ubuntu原来的shell来实现一个自己的功能,在实现了shell以后,本来应该恢复到原来的shell,也就是通过
PATH = $PATH /bin/bash
chsh -s /bin/bash
这两个语句恢复到原来的shell当中,这样就可以通过sudo su等的方式重新回到root的环境当中
可是这一次失败了,在修改了以后,通过echo $SHELL发现,shell的默认值已经被修改了,是/bin/bash,但是一直无法进入。
我则认为是root账户本身出现了问题,因为在使用如 sudo -s的时候是可以进入当前用户的管理员模式的,但是通过su root或者是sudo su这几个通过进入root账户的方式就失败了,很明显是root出现了问题。
那么如果账户出现问题,首先就要去看账户的情况
在输入grep root /etc/passwd后
显示的结果是root:x:0:0:root:/root:/usr/bin/newshell
居然在这里显示的root对应的shell依然是我自己写的那个newshell!
问题症结找到,接着输入sudo -s进入到当前账号的管理员模式
然后输入vim /etc/passwd(这里小心不要修改了其余的数据)将最顶上root后面的shell默认值改成/bin/bash
BINGO!
搞定了!在重新输入sudo su的时候,成功的进入了原来的root,一切都是那么的完美哈哈哈哈!!
方法参考自:https://unix.stackexchange.com/questions/165174/su-cannot-execute-bin-bash