我一整天都在想该怎么做。
短版本:我必须管理一些虚拟机使用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