我已經使用 Raspberry Pi 幾個星期了,並花了很多時間為我的大學專案配置一切。
我想安裝 Samba 並將所有內容都當作網路資料夾。我用了sudo chown -R pi:pi /
。
現在,我的 sudo 已損壞,並且sudo: effective uid is not 0, is sudo installed setuid root?
每次運行時都會列印(例如,sudo nano
)。
這個可以修復嗎?請幫幫我,這樣我就不必重新安裝一切。我甚至不記得過去幾週我做了什麼…太多的工作。
答案1
運行sudo chown -R pi:pi /
基本上破壞了系統上每個檔案的所有權。
不幸的是,對於您的情況,重新安裝可能是最簡單的選擇。嘗試手動恢復正確的所有權(大概使用不同的計算機)將非常乏味且容易出錯。我建議您在重新安裝之前對 Raspberry Pi 的儲存進行映像,以便在重新安裝後,您可以恢復所做的一些變更。
答案2
可執行檔中的位元setuid
表示相關檔案可能會將其有效 UID 變更為擁有使用者的 UID,而不是呼叫/執行使用者的 UID。
透過運行,sudo chwon -R pi:pi /
您將sudo
被使用者擁有pi
(非零 UID),因此,當sudo
檢查它是否可以將其有效 UID 更改為 0 ( root
) 時,它發現它不能,因為它不再被擁有root
。
您可以嘗試透過執行chown root:root
over來修復它sudo
,但它可能會說您沒有足夠的權限來執行此操作,因此重新安裝可能是唯一的可能性。
答案3
最簡單的方法是尋找並儲存「過去幾週」修改過的所有文件,然後重新安裝並重新套用變更。
- 啟動救援磁碟。
- 尋找並儲存「最近」變更的檔案 -
cd /mnt/root && tar czvf /mnt/usb/tarball.tgz --newer-mtime='2015-10-01 00:00:00' .
確保這/mnt/root
是 Pi 系統的根目錄而不是救援磁碟的根目錄,並且該檔案/mnt/usb
位於安全的地方,例如 USB 記憶棒 - 重新安裝
- 恢復您精心保存的文件 -
cd / && tar xzvf /root/tarball.tgz
- 重啟