Апач как рут на убунту - PullRequest
       11

Апач как рут на убунту

3 голосов
/ 26 марта 2012

Хорошо, мне нужно запустить мой веб-сервер Apache как root . Для этого я набрал whoami; в терминале. Это дает мне вывод: root . Но когда я проверяю свой сервер apache, работающий от имени пользователя root или нет, выполняя следующий php-скрипт: <? Php echo whoami; ?> Это дает мне вывод: nobody . Так что какие-либо предложения, чтобы выполнить / войти в систему как пользователь root в apache ??

Ответы [ 3 ]

4 голосов
/ 26 марта 2012

Я бы предложил создать на вашем сервере внешний файл PHP, который бы обрабатывал все, что связано с этим расширением. И затем, вы можете вызвать этот скрипт с shell_exec в сочетании с sudo.

Таким образом, вы можете поместить пользователя вашего веб-сервера в файл sudoers и позволить ему запускать php-cli от имени пользователя root.

Тогда в вашем скрипте вы можете просто использовать:

$output = shell_exec("sudo /bin/php /yourscript.php");

Это было бы гораздо более безопасное решение, чем запуск Apache от имени пользователя root, что, на мой взгляд, очень плохая идея , даже если вы знаете, что делаете.

1 голос
/ 26 марта 2012

Если вы знаете, что делаете, посмотрите файл / etc / apache2 / envvars :

Вы можете настроить эти переменные

export APACHE_RUN_USER=root
export APACHE_RUN_GROUP=root
0 голосов
/ 20 мая 2016

Я согласен с тем, что процесс apache запускается от имени пользователя root. Это просто плохая идея. Вот почему я недавно опубликовал проект, который позволяет PHP получать и взаимодействовать с реальной оболочкой Bash. Получите это здесь: https://github.com/merlinthemagic/MTS

После загрузки вы просто используете следующий код:

$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
$return1  = $shell->exeCmd('php /var/scripts/test.php');
//the return will be a string containing the return of the script
echo $return1;
...