作为另一个用户运行一个shell命令或更改Apache的用户?

我一直在试图弄清楚如何整天做这个。

简短的版本:我必须使用php shell_exec函数pipe理一些虚拟机,到目前为止我不能这样做,因为apache是​​由用户运行的www-data和virtualbox由用户vboxuser

从我读到目前为止,我已经想到了3种可能的解决scheme:1.-在我的vboxuser上创build一个脚本,我可以从php调用来pipe理虚拟机。 2.-将apache用户从www-data更改为vboxuser,这样我就可以通过php 3来pipe理虚拟机.-重新安装VirtualBox,这次使用www-data作为我的用户。

我不确定这些是否有效,我不太确定哪个是最好的解决scheme。 任何build议/想法?

提前致谢。

现在更详细的版本:

我有一台运行Ubuntu 10.04.2的远程服务器,在那台服务器上我设置了VirtualBox,这样我就可以运行多个WinXP实例来执行不同的任务。

一切都安装完毕,我可以通过SSHpipe理虚拟机。 如果我想将它们作为不同于创build它们的用户(迄今为止只用于创build虚拟机的用户)运行它们,则必须执行sudo -u vboxuser。

现在,我需要创build一个PHP脚本来pipe理这些虚拟机(我知道phpVirtualBox,但它不是我所需要的)。 如果我尝试运行使用shell_exec()从PHP的虚拟机,我根本没有答案(而且我testing了shell_exec正在我的服务器上工作)。

您可以配置sudo以允许www-data执行命令,因为vboxuser使用sudo visudo将一行添加到/ etc / sudoers中

www-data(ALL)=(vboxuser)/ usr / bin / vboxmanage

检查男子sudoers更多的信息

要更改apache用户,您可以编辑:

/etc/apache2/envvars 

并更改APACHE_RUN_USER = root

或者你可以从root的cron执行它

 sudo crontab -e 

HTH