今天不小心使用命令:
sudo chmod -R 777 /usr
结果悲剧了,sudo命令失去了作用,报错:must be setuid root。
于是搜了很多文章,不能说他们的方法不对,但是都没彻底解决我的问题,最后把几篇文章综合起来,终于解决了问题。
解决步骤:
我的系统是Ubuntu 12.04 Desktop
1.重启按住Shift键进入Ubuntu recovery 模式(有人说是ESC,有人说是Shift,自己试一下,我的是Shift,建议重启的时候一直按住)
2.在revovery menu菜单中,选择root项进入系统。此时命令行出现了我们熟悉的root@ubuntu:~#
3.执行
root@ubuntu:~# mount -o remount,rw /
这一步非常重要,很多文章里没有这一步。因为recovery模式默认是以只读模式挂载的,如果不执行这句的话会报错:
1
4.执行
root@ubuntu:~# ls -l /usr/bin/sudo
root@ubuntu:~# chown root:root /usr/bin/sudo
root@ubuntu:~# chmod 4755 /usr/bin/sudo
root@ubuntu:~# reboot
5.重启的时候选择
Ubuntu with Linux-版本号这个选项,就能正常进入系统。
进入系统后,执行:
root@ubuntu:~# sudo ls
报错:
#sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0
#sudo: fatal error, unable to load plugins
问题还没解决,按照一篇大神的说法。
原因在于etc目录由于所有者不是root。系统在执行sudo时仍然会报错。
这时即执行如下命令让etc目录所有者为root。再次进入Recovery模式,执行如下命令:
1、chown -R root /etc/sudoers
作用为让/etc目录所有者为root
2、chmod 755 /etc/
作用为让/etc目录权限为755,最后这项自己检查一下就行了,其实一般用不到这步。
再次重启,sudo命令能够正常使用了。