能夠以使用者身份停止/重新啟動伺服器
我需要能夠以使用者身份停止 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 實例並創建一個新實例。