我如何利用suexec来允许php脚本运行一个linux命令?

我想在浏览器中执行一个php脚本,然后执行一个单一的linux命令并返回它的输出。 当我第一次决定testing这个时,我创build了这个:

<?php $command = "ls"; exec($command, $output); print_r($output); ?> 

这工作得很好。 但是当我改变命令我真的想运行的命令:

 $command = "/etc/init.d/mycontrollerd status /etc/mycontrollerconfig"; 

它给了我这个输出:

 Array ( [0] => You need root privileges to run this script ) 

我被build议使用suexec。 然而,在检查手册页后,我甚至无法确定从哪里开始。 当然,我不想造成安全风险。 那么有人可以给我配方让我的命令运行并返回它的输出?

顺便说一句,这是一个运行Ubuntu的基本LAMP框。

编辑:@womlbe下面build议sudo suexec。 安全仍然是至高无上的,我怎么能这样做呢?

据我所知,suexec不会授予root权限(或apache用户的权限)。

要以最简单的forms使用suexec,我相信你会:

  1. 如果你正在运行FastCGI,你将定义suexec的path(我不相信suexec适用于mod_php)(在httpd.conf中):

    例如FastCgiSuexec /usr/sbin/suexec (可能需要更改suexec上的权限)。 这里有一个简短但有些过时的概述。

  2. 添加一行到你的VirtualHost来指定你想运行的用户:

    SuexecUserGroup "#UID" "#GID" (用实际的号码replace – 保留号码)

其他变体将允许您使用suPHP或suexec,将它们设置为所有脚本的处理程序。 您需要将组件编译进来,并且需要为您的PHP脚本使用CGI / FastCGI。

由于您当前需要root权限才能运行该脚本,因此不能只使用suexec。 你的一些select是:

  1. 改变脚本的权限 – 可能很难/不安全取决于它的作用(例如,如果一个简单的chmod执行的任务需要某些权限,那么这个脚本不够用)
  2. 使用sudo命令,从你的php脚本(把用户添加到sudoers等)
  3. 使用setuid的外部脚本

以上所有的安全性充其量都是值得怀疑的。