问题出现
事情的起因是这样的,我的imx6ull的板子很久没用了,这次重新上电之后,我习惯性的敲了一个sudo随后就发现报错
sudo: error in /etc/sudo.conf, line 0 while loading plugin `sudoers_policy' sudo: /usr/libexec/sudo/sudoers.so must be owned by uid 0 sudo: fatal error, unable to load plugins
随后在网上找解决办法,发现基本所有的帖子都是出自一个国外的帖子并且解决方法如下:
$ chmod 644 /usr/lib/sudo/sudoers.so
$ chown -R root /usr/lib/sudo
很显然这种解决方法没有对症下药,而且大多数人/usr/lib/sudo/sudoers.so的权限就是644,也不是所有人的系统都有/usr/lib/sudo这个文件,所以这种方法基本解决不了问题。
问题分析
让我们来看上图的第二行报错:/usr/libexec/sudo/sudoers.so must be owned by uid 0;翻译过来就是/usr/libexec/sudo/sudoers.so这个文件所有者必须是uid为0的用户。
接下来我们用命令查看一下uid为0的用户,可以看到是root用户。
那么问题来了,既然sudoers.so目前不属于root用户那它属于谁呢?于是我们继续敲ls -lh /usr/libexec/sudo/sudoers.so查看,发现sudoers.so目前属于uid为1000的用户,我们继续敲命令id 1000查看uid 1000是哪个用户,可以看到根本就没有这个用户,所以可以判定这个1000就是个废值。
接下来我们根据报错将/usr/libexec/sudo/sudoers.so这个文件的拥有者修改为root(注意,你修改为root或者0都是代表root用户,只是root方便用户记忆而已)。使用命令chown root /usr/libexec/sudo/sudoers.so。完成后我们再敲sudo发现新的报错:/etc/sudoers is owned by uid 1000, should be 0;意思要你继续把/etc/sudoers这个文件拥有者也修改成root用户。
根据报错继续修改chown root /etc/sudoers,随后继续敲sudo,可以发现只剩下最后一个报错了:/etc/sudoers.d is owned by uid 1000, should be 0;最后我们还需要修改/etc/sudoers.d的拥有者
执行chown root /etc/sudoers.d命令修改后,尝试使用sudo,可以发现sudo现在可以使用了,问题完美解决。
问题解决
- ls -lh /usr/libexec/sudo/sudoers.so查看sudoers.so文件权限是否是644,如果是的就往下面走,不是就修改成644
- chown root /usr/libexec/sudo/sudoers.so根据报错修改sudoers.so文件所有者为root
- chown root /etc/sudoers根据报错修改sudoers文件所有者为root
- chown root /etc/sudoers.d根据报错修改sudoers.d文件所有者为root
参考帖子:sudo详解
标签:sudoers,sudo,正点,so,usr,报错,imx6ull,root From: https://blog.51cto.com/u_16132687/6361929