Когда я запускаю ps -efH
команду, чтобы вывести список всех процессов, я вижу, что Apache работает как root
и, кажется, что подпроцессы выполняются как www-data
. Вот выдержка:
root 30117 1 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 30119 30117 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 30120 30117 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 30121 30117 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
Могу ли я заставить Apache и все подпроцессы работать от имени другого пользователя apache2d:apache2d
? Если так, то как? Я где-то читал, что настройки для этого можно найти, /etc/apache2/httpd.conf
но этот файл кажется пустым? Можно ли это сделать, изменив владельца и группу /etc/init.d/apache2
скрипта, а затем установив для него флаг setuid?
источник
@bahamat объясняет это довольно хорошо, но я добавлю немного больше деталей.
В ходе нормальной работы процесс apache, принадлежащий корню, не будет выполнять никаких реальных операций, кроме прослушивания порта 80 и пересылки входящих соединений его дочерним (безопасно непривилегированным, как
www-data
пользователю).Расположение главного файла конфигурации зависит от параметров времени компиляции и варьируется в зависимости от дистрибутива, но
/etc/apache2/apache2.conf
является хорошим начальным предположением.Кроме того, если вы настраиваете многопользовательскую систему веб-хостинга , возможно, вы захотите взглянуть на SuExec и fcgid, чтобы процесс apache каждого отдельного пользователя веб-хостинга выполнялся как указанный пользователь - так что, если один пользователь небрежно относится к своей безопасности, другой пользователи не будут затронуты.
источник
По крайней мере, в Ubuntu настройки для этого есть
/etc/apache2/envvars
. Настройте их, затем перезапустите Apache, и все готово.источник
Также ознакомьтесь с Apache2 ITK MPM .
Он разветвляет поток Apache с назначенным
uid
/gid
, это позволяет вам продолжать использоватьmod_php
. Не болееchmod
/chown
и т. Д.источник
mpm_itk
которое является значительным улучшением по сравнению с suexec / fcgidMac OS X:
То, что сработало для меня, входит в конфигурационный файл apache:
В этом файле я искал пользователя или группу
и наткнулся на:
Я изменил его на то, что когда-либо понадобилось пользователю / группе (в моем случае, пользователю / группе, который является владельцем файлов моего веб-приложения, которые вы можете видеть. И это вы можете проверить с помощью простого 'ls -l'). команда)
источник