Как мне запустить Apache от имени root?

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

< ?php echo `whoami`;  ?>

Это дает мне вывод: nobody. Таким образом, какие-либо предложения, чтобы выполнить / войти в систему как пользователь root в Apache ??

-4
задан 26 March 2012 в 18:26

2 ответа

То, что Вы спрашиваете, очень опасно, потому что любые новые уязвимости, найденные в Apache, могут быть использованы как корень. Одна из первых вещей, которые веб-мастеры делают при обеспечении их веб-сервера, не состоит в том, чтобы запустить серверное приложение как корень. Тем не менее я предлагаю следующую альтернативу, которая должна удовлетворить потребности, поскольку Вы заявили это.

  1. Создайте сценарий оболочки, который делает то, что Вы хотите. Это не Сценарий PHP, когда PHP выполняется в веб-сервере, Вам нужен скрипт, который запущен Ubuntu. Вот образец:

    #!/bin/sh
    # script that runs as root
    whoami
    

    Я назвал этот файл /localstore/root.sh и необходимо поместить его куда-нибудь, который имеет смысл в системах (например. /home/www_data/bin).

  2. В окне терминала выполните команду sudo vi /etc/sudoers и вставьте следующую строку в конце файла (важный, чтобы быть в конце, таким образом, другие команды не переопределяют):

    ALL ALL=NOPASSWD: /localstore/root.sh
    

    Это позволит любому запускать скрипт как корень, после того как Вы тестируете и подтверждаете, что он работает, я настоятельно рекомендую (снова в целях безопасности), что Вы изменяете строку на

    nobody ALL=NOPASSWD: /localstore/root.sh
    

    но как наблюдаемое Бодхи, Apache должен работать как www-data в этом случае необходимо измениться nobody кому: www-data.Примечание: Я никогда не пробовал sudo с nobody как пользователь и не уверено, что это будет работать.

  3. В Вашем сценарии веб-сервера выполните сценарий оболочки в PHP следующим образом:

    < ?php
    exec ("sudo /localstore/root.sh");
    ?>
    

    Можно добавить параметры к сценарию в кавычках.

    Это должно получить его так root.sh сценарий выполняется как корень при вызове от веб-сервера. Если у Вас есть другие сценарии, они могут быть списком разделенных запятой значений на той же самой записи в sudoers файл. Удостоверьтесь, что полномочия на сценарии позволяют выполнение веб-сервером.

6
ответ дан 26 March 2012 в 18:26

Интересно, не является ли это требованием из-за запуска в виртуальной среде с Виртуальным веб-сервером с использованием общего каталога, и в этом случае владение каталогом будет корневым, чтобы к нему могли обращаться как файловая система хоста, так и гостевая система. Решением может быть добавление группы www-data в группу vboxfs или что-то еще в вашей среде. Более подробно это обсуждается в . Эта статья

В моей ситуации меня также смутило требование включить опцию в конфигурацию моего виртуального хоста, в частности, добавить

Require all granted
.

в моей конфигурации каталога, как описано в этой статье

0
ответ дан 26 March 2012 в 18:26

Другие вопросы по тегам:

Похожие вопросы: