Not-Root-User

能夠以使用者身份停止/重新啟動伺服器

  • January 29, 2020

我需要能夠以使用者身份停止 aws EC2 伺服器。我找到了https://www.cyberciti.biz/tips/howto-linux-allow-users-to-shutdown-server.html但由於我需要在 aws EC2 實例上使用此功能,所以我沒有一個靜態主機名,所以我嘗試了:

ubuntu ALL=(ALL:ALL) ALL=/sbin/halt /sbin/reboot

但這讓我:

>>> /etc/sudoers: syntax error near line 21 <<<
What now?     
Options are:
 (e)dit sudoers file again
 e(x)it without saving changes to sudoers file
 (Q)uit and save changes to sudoers file (DANGER!)

我怎樣才能正確解決這個問題?

如果您使用的是AWS CLI,作為使用者,您可以(在實例本身上)執行以下操作:

aws ec2 reboot-instances --instance-ids $(curl -s http://instance-data/latest/meta-data/instance-id)

請參閱有關從實例本身獲取 EC2 ID 的討論。

如果您想在執行前測試您是否具有所需的權限,請嘗試包含以下--dry-run標誌:

–幹執行| –no-dry-run(布爾值)

在沒有實際發出請求的情況下檢查您是否具有操作所需的權限,並提供錯誤響應。如果您具有所需的權限,則錯誤響應為 DryRunOperation 。否則,它是 UnauthorizedOperation 。

有關上下文,請參閱有關、、等之間區別的討論。halt``shutdown``reboot

我想你正在尋找:

ubuntu ALL=/sbin/halt, /sbin/reboot

這等同於:

ubuntu ALL=(ALL:ALL) /sbin/halt, /sbin/reboot

通常,您應該始終使用visudo來編輯您的sudoers配置,因為它在將文件放置到最終位置之前會對文件執行語法檢查。

有關完整文件,請參閱sudoers(5)手冊頁,包括一長串文件範例。


如果您的問題是“我如何從這種情況中恢復”,如果您無法直接以 身份登錄root,那麼您最好的選擇可能是刪除 EC2 實例並創建一個新實例。

引用自:https://unix.stackexchange.com/questions/563996