从脚本重启 EC2 Amazon Linux(基于 Redhat)

从脚本重启 EC2 Amazon Linux(基于 Redhat)

我想通过脚本重启 Linux。脚本无法以 root 身份运行。

使用sudo reboot产品

sudo:抱歉,您必须有一个 tty 才能运行 sudo。

一个简单的reboot错误

需要 root 权限

我知道我可以编辑我的sudoers文件,但是有没有更简单的方法?

答案1

亚马逊为所有这些类型的功能提供了一个库,以便它们可以在 EC2 级别执行,而无需借助虚拟机本身的糟糕想法。

您可以使用ec2-reboot-instances instance_id请求 EC2 重启任何实例,包括其自身。实例可以使用以下任一方式获取其自己的 ID:

curl -s http://169.254.169.254/latest/meta-data/instance-id

或者

ec2-metadata -i

因此,作为命令行上的一行程序,您可以使用以下命令:

ec2-reboot-instances -O YOURAWSKEY -W YOURAWSSECRET --region=YOURREGION $(ec2-metadata -i |cut -d':' -f 2)

EC2 功能的完整列表如下这里

答案2

出于安全原因reboothaltshutdown命令通常需要 root 权限 [1]
在谷歌上写,how to run sudo in a script它回答

将您的脚本添加到具有 NOPASSWD 属性的 /etc/sudoers 文件中,以便允许它在不提示输入密码的情况下运行。您可以将其绑定到特定用户(或一组用户),或允许系统上的任何人使用 sudo 运行它。

如果你能reboot将上述内容限制为仅启动命令的一行脚本。但是,这将导致您的计算机无需密码即可重新启动脚本+用户配置。

否则,您将面临每个人都有可能重新启动您的机器的风险。阅读答案 [245] 例如

... 你需要添加 suid 位[345] 到这些命令。但请注意,系统上有权访问 shell 的每个人都可以关闭您的机器。

但我也相信使用 suid这是个坏主意在[
的评论中2] 再次建议用 visudo 修改……

%sudo ALL = NOPASSWD: /sbin/reboot 

但此时最好这样做一行脚本即可重启为您的用户设置重启功能,并限制该用户只有重启功能。(因此,如果没有该脚本,即使以没有密码的用户身份也无法重启)。

相关内容