0
点赞
收藏
分享

微信扫一扫

正点原子imx6ull中sudo命令失效问题

问题出现

事情的起因是这样的,我的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

正点原子imx6ull中sudo命令失效问题_root用户


随后在网上找解决办法,发现基本所有的帖子都是出自一个国外的帖子并且解决方法如下:

$ 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用户。

正点原子imx6ull中sudo命令失效问题_解决方法_02


那么问题来了,既然sudoers.so目前不属于root用户那它属于谁呢?于是我们继续敲ls -lh /usr/libexec/sudo/sudoers.so查看,发现sudoers.so目前属于uid为1000的用户,我们继续敲命令id 1000查看uid 1000是哪个用户,可以看到根本就没有这个用户,所以可以判定这个1000就是个废值。

正点原子imx6ull中sudo命令失效问题_root用户_03

接下来我们根据报错将/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用户。

正点原子imx6ull中sudo命令失效问题_so文件_04


根据报错继续修改chown root /etc/sudoers,随后继续敲sudo,可以发现只剩下最后一个报错了:/etc/sudoers.d is owned by uid 1000, should be 0;最后我们还需要修改/etc/sudoers.d的拥有者

正点原子imx6ull中sudo命令失效问题_解决方法_05


执行chown root /etc/sudoers.d命令修改后,尝试使用sudo,可以发现sudo现在可以使用了,问题完美解决。

正点原子imx6ull中sudo命令失效问题_解决方法_06


问题解决

  1. ls -lh /usr/libexec/sudo/sudoers.so查看sudoers.so文件权限是否是644,如果是的就往下面走,不是就修改成644
  2. chown root /usr/libexec/sudo/sudoers.so根据报错修改sudoers.so文件所有者为root
  3. chown root /etc/sudoers根据报错修改sudoers文件所有者为root
  4. chown root /etc/sudoers.d根据报错修改sudoers.d文件所有者为root

参考帖子:sudo详解

举报

相关推荐

0 条评论