我如何从非root帐户执行根操作?

我希望能够从一个php脚本重新启动服务。 在www用户帐户下运行。

执行这些操作的首选方法是什么?

我想我可以创build一个queon命令的文件,由CRON读取,但解决scheme痒。

我在想的是一个微小的服务,在root下运行,允许预定义的“方法”,以便任意的根操作不能被执行。

任何工具在那里?

你可以重新发明轮子,但说实话,我使用无密码的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

看一下sudo :它允许指定可以作为另一个用户执行的操作(在你的情况下为root)。

你可以例如添加到你的/etc/sudoers (不要直接使用visudo编辑文件)

 www-user-account ALL= NOPASSWD: /usr/bin/mypredefinedaction 

有关文件的详细信息和语法,请参见man sudo