我有一个 Java 应用程序,当无头计算机(Ubuntu 14.04 Server)启动并以用户身份运行时,它会自动启动。当应用程序完成时,我需要它执行一个脚本来关闭电源,因为即将抛出一个外部断路器,这将切断电源。
如果下次启动时检测到关闭错误,我不能允许挂起。
我尝试编写脚本都会导致请求超级用户的密码。我可以接受脚本中文本形式的密码,因为机器与互联网隔离。
我不精通 bash 或 Linux。
脚本权限:
$ ls -la shutdown
-rwsr-xr-x 1 root root 209 Mar 18 16:55 shutdown
答案1
有多种方法可以做到这一点。最简单也是最糟糕的是按照您的建议在脚本中包含密码。由于您的计算机未连接到互联网,因此大多数安全问题都没有实际意义,您可以使用sudo
的-S
选项来允许从 STDIN 传递密码:
echo password | sudo -S shutdown -h now
更安全的方法是允许特定用户shutdown
在没有密码的情况下运行该命令。首先,运行visudo
编辑sudoers
文件并添加以下行:
nate ALL=NOPASSWD:/sbin/shutdown
这将允许用户在不要求密码的情况下nate
运行。sudo /sbin/shutdown