問題描述:
使用命令更新軟件包的時候遇到了問題:
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/*
大功告成。