前言:失手給了用戶賬號 /usr 目錄的權限,結果 sudo 的時候報 sudo:must be setuid root....,裏面東西都部署好了,不想重裝系統啊。遂,跑到機房一番掙扎,成功恢復。在恢復的過程中,發現很多的教程都只說了一部分,照着執行有很多坑。所以,試圖用這篇講解全部過程,並指出需要注意的地方。
一、進入Ubuntu Recovery模式
其實就是在進入系統前,這個頁面上選擇 後面有 recovery mode項,進入恢復模式。
網上其他都說要按 Esc或者Shift,目的在於讓開機過程停在這個頁面,不然這個頁面會一閃而過。
我實際操作 在bios之後,一直按住 Esc鍵。
進入後,會有圖形頁面,選擇 root那一行即可。
之後還要敲一下 Enter鍵。
二、文件系統重新掛載爲 RW ,默認只讀,無法操作
mount -o remount rw /
執行下即可
三、恢復
chown root:root /usr/bin/sudo #所有者變爲 root
chown -R root /usr
chmod 4755 usr/bin/sudo #賦權限
chmod 755 /usr/lib/sudo/sesh
chmod 644 /usr/lib/sudo/sudoers.so
chmod 644 /usr/lib/sudo/sudo_noexec.so
reboot #重啓
四、問題排查方法
如果還不行,無非兩個問題: 所有者不是root,沒有setuid項(執行權限s)
ls -l /usr/bin/sudo
正常結果如下:
注意幾點:
- 所有者 root root
- 有 s 權限 見 -rwsr