能够以用户身份停止/重新启动服务器

能够以用户身份停止/重新启动服务器

我需要能够以用户身份停止 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!)

我怎样才能正确解决这个问题?

答案1

我想您正在寻找:

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

这与:

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

一般来说,您应该始终使用visudo来编辑您的sudoers配置,因为它会在将文件放置到最终位置之前对其执行语法检查。

请参阅sudoers(5)手册页以获取完整的文档,包括一长串记录示例。


如果您的问题是“我如何从这种情况中恢复”,如果您无法直接登录root,那么您最好的选择可能是删除 EC2 实例并创建一个新实例。

答案2

如果您正在使用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关于、shutdownreboot等之间的区别

相关内容