Как выполнить HTTPD как определенный пользователь (пользователи) а не никем?

В настоящее время, 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 
7
задан 3 July 2014 в 10:41
1 ответ

Способ запуска 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 и, возможно, другие параметры соответствующим образом.

.
7
ответ дан 2 December 2019 в 23:37

Теги

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