
我不小心在sudoers
文件中犯了一個錯誤,現在我無法修復它,因為如果我嘗試更改文件,它會給出權限被拒絕的訊息。如果我用來sudo
開啟該文件,則會顯示語法錯誤並且找不到有效的sudoers
來源,並且不會執行該命令。我使用的是 raspbian,一種 Debian 風格。
有誰知道如何擺脫這個第22條軍規?
答案1
- 如果您知道
root
密碼(並且已設定),您可以使用su
Beenroot
和 edit/etc/sudoers
。 - 如果您的根檔案系統位於 SD 卡上,您可以將其推出並
/etc/sudoers
在 PC 或任何其他裝置上進行編輯(只要它有讀卡機)。 - 您可以進入U-Boot(引導程式)命令列(通常透過按下鍵盤上的按鈕或透過UART)並新增
1
至Linux核心命令列以進入單一使用者模式。在這種模式下,您將root
並且可以編輯/etc/sudoers
。也可以看看這。
答案2
您將必須啟動到單一使用者模式。
https://serverfault.com/questions/482079/debian-boot-to-single-user-mode
作為 root 用戶,您將能夠編輯 sudoers 檔案來修復它。我強烈建議您visudo
將來使用該命令編輯 sudoers 文件,以避免再次執行此操作,因為 visudo 在保存文件之前會對文件進行語法檢查。
答案3
如果您在雲端實例上,那麼您會遇到更多麻煩。
有一些技術取決於發行版,但如果您已經安裝並運行了 Docker,那麼您通常可以透過 Docker 容器來解決問題。這是因為,通常,Docker 服務以 root 身分運行,對容器內已安裝磁碟區所做的任何操作都會受到主機上 root 的影響。
在主機上:
docker run --rm -ti -v /etc:/usr/local/etc busybox sh
「busybox」只是一個不錯的小型發行版,下載起來並不需要很長時間。如果您已經有一個包含可用 shell 的 Docker 映像,則只需使用它即可。
在 Docker 容器上:
cd /usr/local/etc
vi sudoers
您可能已將錯誤檔案新增至/etc/sudoers.d/
目錄。在這種情況下,可能只需刪除該檔案即可。
當您退出容器時,您可以sudo
再次進行。
哇!