В настоящее время, top
показывает мне что почти все httpd
процессы выполняются nobody
. "Почти", потому что 2 из них выполняются root
.
Как может я делать его таким способом, которым, учитывая я сделал, чтобы пользователи сказали: dartagnan
, porthos
, aramis
, athos
выполненный httpd каждый отдельно как упомянутые пользователи?
Я надеюсь видеть что-то вроде этого, когда я работаю top
:
PID USER Command 1234 dartagnan /usr/local/apache/bin/httpd -k start -DSSL 12 porthos /usr/local/apache/bin/httpd -k start -DSSL 342 aramis /usr/local/apache/bin/httpd -k start -DSSL 214 athos /usr/local/apache/bin/httpd -k start -DSSL
============> Это - то, что я в настоящее время имею и что мне не нравится видеть:
PID USER Command 1234 nobody /usr/local/apache/bin/httpd -k start -DSSL 12 nobody /usr/local/apache/bin/httpd -k start -DSSL 342 nobody /usr/local/apache/bin/httpd -k start -DSSL 214 nobody /usr/local/apache/bin/httpd -k start -DSSL 244 root /usr/local/apache/bin/httpd -k start -DSSL 334 root /usr/local/apache/bin/httpd -k start -DSSL
Способ запуска httpd как другого User|Group заключается в изменении директивы user или group в файле httpd.conf. Однако это изменит только nobody
в вашем выводе выше на apache
, что, я думаю, не то, что вам нужно.
Для того, чтобы httpd работал под определенным пользователем, Вам необходимо создать и управлять конфигурационным файлом для каждого из них. В конфигурационном файле должны быть соответствующим образом указаны пользователь и группа, а также порт, к которому должен быть привязан httpd через директиву Listen. Помните, что только привилегированные пользователи могут привязываться к портам <1024. Затем вы можете запустить его так
apachectl -f /path/to/aramis.conf -k start -DSSL
Обратите внимание на другие директивы httpd, например, VirtualHost, скорее всего, тоже нужно будет изменить для каждого пользователя.
Дополнительно задействованы EL-варианты (RHEL, CentOS Scientific Linux и т.д. ) SELinux. Вы должны добавить порт, к которому будет привязан каждый экземпляр, в группу http_port_t
, например
semanage port -a -t http_port_t -p tcp 8888
, что позволит экземпляру httpd привязываться к порту 8888.
Если пользователи будут использовать свои домашние каталоги для обслуживания файлов, то вы должны разрешить это с помощью httpd_enable_homedires SELinux boolean
setsebool -P httpd_enable_homedirs on
Вышеуказанное должно позволить вам настроить для каждого пользователя экземпляры httpd, однако каждый пользователь должен будет запомнить, какой порт использовать для добавления в свои URL, например, для aramis выше
http://example.com:8888
Это все очень запутанно. Чтобы помочь вашим пользователям, вы должны настроить ваш основной httpd прослушивать порт 80, как обычно, и действовать как обратный прокси для каждого пользовательского экземпляра. Затем, когда aramis подключается, например, к
http://aramis.example.com
прокси-серверу главного сервера - это экземпляр aramis.
Вам нужно будет настроить DNS и, возможно, другие параметры соответствующим образом.
.