Ubuntu使用sudo命令出现must be setuid root错误的解决方法

今天不小心使用命令

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模式默认是以只读模式挂载的,如果不执行这句的话会报错:
这里写图片描述

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命令能够正常使用了。

你可能感兴趣的:(原创)