Запустить команду оболочки от имени другого пользователя или изменить пользователя Apache? - PullRequest
3 голосов
/ 27 апреля 2011

Я пытался выяснить, как это сделать целый день.

Краткая версия: Мне нужно управлять некоторыми виртуальными машинами, используя функцию php shell_exec, но пока я не могу этого сделать, потому что apache запускается пользователем www-data и 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, но это не то, что мне нужно). Если я пытаюсь запустить виртуальные машины с помощью shell_exec () из php, я не получаю никакого ответа (и я проверил, что shell_exec работает на моем сервере).

Ответы [ 2 ]

2 голосов
/ 28 апреля 2011

вы можете настроить sudo, чтобы разрешить www-данным выполнять команды как vboxuser используйте sudo visudo, чтобы добавить строку в / etc / sudoers, например

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

проверьте man sudoers для получения дополнительной информации

1 голос
/ 27 апреля 2011

Чтобы изменить пользователя apache, вы можете отредактировать:

/etc/apache2/envvars

И изменить APACHE_RUN_USER = root

Или вы можете выполнить его из cron'а root

sudo crontab -e

НТН

...