以另一个用户运行shell命令或更改apache的用户


Run a shell command as another user or change Apache's user?

我一整天都在想该怎么做。

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

从我读到目前为止,我想到了3个可能的解决方案:1.-在我的vboxuser上创建一个脚本,我可以从php调用来管理虚拟机。2.—将apache用户从"www-data"修改为"vboxuser",以便通过php管理虚拟机3.重新安装VirtualBox,这次使用www-data作为我的用户。

我不确定这些是否有效,我不太确定哪一个是最好的解决方案。任何建议/想法吗?

现在是更详细的版本:

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

一切都设置好了,我可以通过SSH管理虚拟机。如果我想以不同于创建它们的用户(到目前为止只用于创建虚拟机的用户)的身份运行它们,我必须执行sudo -u vboxuser。

现在,我需要创建一个PHP脚本来管理这些虚拟机(我知道关于phpVirtualBox,但它不是我需要的)。如果我尝试从php中使用shell_exec()运行虚拟机,我根本得不到答案(我已经测试了shell_exec在我的服务器上工作)。

可以配置sudo,允许www-data以vboxuser的身份执行命令使用sudo visudo在/etc/sudoers中添加一行,如

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

查看man sudoers获取更多信息

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

/etc/apache2/envvars

修改APACHE_RUN_USER=root

或者您可以从root的cron

执行它
sudo crontab -e

HTH