我正在使用亚马逊Linux。如果我以“otheruser”用户身份登录,并使用以下文本创建脚本 test.sh
sleep 5 ; sudo reboot now
我可以像这样登录并运行脚本......
[davea@mydevbox ~]$ sudo su - otheruser
[sudo] password for davea:
Last login: Wed Apr 20 21:18:48 UTC 2016 on pts/0
[otheruser@mydevbox ~]$ sh test.sh
[otheruser@mydevbox ~]$
Broadcast message from [email protected]
(/dev/pts/0) at 21:19 ...
The system is going down for reboot NOW!
但是,如果我将脚本的内容更改为
sudo service jboss restart
然后我运行脚本,系统提示我输入密码......
[davea@mydevbox ~]$ sudo su - otheruser
[sudo] password for davea:
Last login: Wed Apr 20 21:09:03 UTC 2016 on pts/0
[otheruser@mydevbox ~]$ sh test.sh
[sudo] password for otheruser:
我希望第二个序列与第一个序列类似,因为第二次不会提示我输入密码。我怎样才能做到这一点?
答案1
另一种方法是配置 PolicyKit 以允许特定组的成员重新启动;也就是说,直接授权,从而避免了满足身份验证以获得超级用户授权的整个问题。
创建文件 /etc/polkit-1/localauthority/50-local.d/50-local.pkla 并添加如下子句:
[Allow reboot by booters group]
Identity=unix-group:booters
Action=Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultAny=yes
然后从具有该组成员身份的用户运行该作业。