一千萬個為什麽

搜索

對EC2實例中的sudoers文件進行錯誤編輯,如何修復它?



當編寫腳本來編輯sudoers文件而不使用 visudo 時,腳本沒有檢查問題,並且我在 sudoers 文件中引入了一些錯誤的編輯,因此不能再一次使用sudo。 (我知道我做了一件非常糟糕的事情,應該使用這個

Question: Is there anyway I can recover from this mistake, or do I have to destroy the VM and start from scratch with a new one?

轉載註明原文: 對EC2實例中的sudoers文件進行錯誤編輯,如何修復它?

一共有 5 個回答:

用戶數據如何?

我相信添加“#cloud-boothook”可以強制用戶數據在每次重新啟動時運行。

#cloud-boothook
#!/bin/bash
echo 'test' > /home/ec2-user/user-script-output.txt

If so, you could fix your sudo scripts hopefully... or install/add AWS run commands configuration https://aws.amazon.com/blogs/aws/new-ec2-run-command-remote-instance-management-at-scale/

For sure if it is an EBS Drive, you can detach & fix and then re-attach on the original system. A bit of a pain though.

通常從這種錯誤中恢復涉及編輯引導加載程序以強制執行根shell。由於您無法物理訪問(非物理)機器,因此情況有點不同。

如果這是EBS啟動驅動器,您可以嘗試分離它,在另一臺計算機上修復它,然後重新連接

這是了解為什麽使用配置管理工具對所有內容都很有用的好機會:如果您正在這樣做,您可以在幾分鐘內和一個命令中替換實例。

您需要通過使用 su 命令來擁有root訪問權限,因為 sudo 似乎不可用,然後進行適當的更改。現在最重要的一點是:

Always use visudo to edit sudoers file

為什麽?它會告訴您在進行更改後是否有任何錯誤,從而防止發生 sudo 訪問混亂。

要解決破解的 sudo ,請按照指南。

*這在虛擬計算中可能無法實現。

如果您知道root密碼,通常可以鍵入“su”切換到超級用戶。然後你可以編輯你的sudoers文件來修復sudo。

分離根卷,將其附加到正在運行的實例並恢復卷中的sudoers文件。 分離卷並重新連接到有問題的實例並重新啟動。 這應該工作。