问题描述:
使用命令更新软件包的时候遇到了问题:
sudo apt-get update
报错提示:
sudo: /etc/sudoers 属于用户 ID 1000,应为 0 sudo: 没有找到有效的 sudoers 资源,退出 sudo: 无法初始化策略插件
回顾这个问题的来源应该是我对 /etc 文件夹下面的文件进行修改导致的。
回顾: (希望看到的人避开这个坑,对这类文件夹操作一定要慎之又慎。)
之前再进行某项操作的时候,把 /etc/ 文件夹下面的文件全部锁住了,于是我上浏览器搜索解决办法,解决办法很好找:https://blog.csdn.net/twlkyao/article/details/9897451 (亲试可能会导致上述问题,慎用)
所以我就按照链接里的步骤再/etc目录下运行了
sudo chown 用户名 etc/ -R
之后再sudo就不能用了,应该是对 sudoers和sudoers.d这两个文档的权限进行了修改。
解决思路
在百度和谷歌上面用中文搜索了半天,sudo不能用的描述和我的这个好像都不太一致,基本上所有方案都试了一遍,包括再recovery models中进入单用户模式再root下进行修改,都试了一遍。进入单用户模式的可靠方式 https://jingyan.baidu.com/article/f3ad7d0f36675c09c3345b2f.html
在问了N个人,试了无数个教程,就在我放弃要重装的时候,都已经打开diskpart了,不甘心调了这么久的环境就这么重装了,于是鬼使神差的我使用我的蹩脚英文去google上面去搜,一搜果然很多人遇到了和我相同的问题。
在某个页面做的挺好看的英文论坛里面找到了答案(链接:https://askubuntu.com/questions/513523/sudo-doesnt-work-etc-sudoers-is-owned-by-uid-1000-should-be-0)
pkexec chown root:root /etc/sudoers /etc/sudoers.d -R 或者 pkexec visudo
我选择了第一个代码(长的看起来可靠),输入之后两个文件的权限应该都进行了修改,可以试用sudo命令了。
但是多了个提示:
sudo: 无法 stat /etc/sudoers.d/README: 权限不够
解决办法很简单,在root权限下(此时可以用sudo):https://www.cnblogs.com/xiongzaiqiren/archive/2019/06/12/11011296.html
chown -R root:root /etc/sudoers.d chmod u=rwx,g=rx,o=rx /etc/sudoers.d/ chmod u=r,g=r,o= /etc/sudoers.d/*
大功告成。