我希望能够从在 www-user 帐户下运行的 php 脚本重新启动服务。
执行这些操作的首选方法是什么?
我认为我可以创建一个包含排队命令的文件,由 CRON 读取,但解决方案很棘手。
我正在考虑的是一个微型服务,在 root 权限下运行,允许预定义的“方法”,因此无法执行任意的 root 操作。
有什么工具可以实现这个吗?
答案1
您可以重新发明轮子,但老实说,我使用无密码 sudo 来执行此操作。例如,我的监控系统需要能够运行命令来检查硬件 RAID。这需要 root 权限,但我不想以 root 身份运行整个监控系统,因此我改为使用sudoers
一行
nagios ALL=(root) NOPASSWD: /usr/lib/nagios/plugins/check_md_raid
然后sudo /usr/lib/nagios/plugins/check_md_raid
当我需要检查 RAID 时,以监控用户身份运行该命令。
你可以有一个 sudoers 行,说
www-user ALL=(root) NOPASSWD: /etc/rc.d/init.d/myservice
然后让 php 执行sudo /etc/rc.d/init.d/myservice restart
。
答案2
看一眼须藤:它允许指定可以作为另一个用户(在您的情况下为 root)执行的操作。
例如,您可以添加到您的/etc/sudoers
(不要直接使用编辑文件visudo
)
www-user-account ALL= NOPASSWD: /usr/bin/mypredefinedaction
请man sudo
参阅文件的详细信息和语法