Назад | Перейти на главную страницу

Как запустить 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 

Чтобы запустить httpd от имени другого пользователя | группы, нужно изменить пользователь или группа в файле httpd.conf.

User apache
Group apache

Но это только изменит nobody в вашем выводе выше на apache что, я думаю, не то, что вам нужно.

Чтобы httpd запускался от имени конкретного пользователя, вам необходимо создать файл конфигурации и управлять им для каждого из них. В файле конфигурации следует указать пользователя и группу соответствующим образом, а также порт, к которому процесс httpd должен привязаться через Слушать директива. Помните, что только привилегированные пользователи могут подключаться к портам <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

 setsebool -P httpd_enable_homedirs on

Вышеупомянутое должно позволить вам настраивать экземпляры httpd для каждого пользователя, однако каждый пользователь должен будет помнить, какой порт использовать для добавления в свои URL-адреса, например, для aramis выше

http://example.com:8888

Все это очень запутанно. Чтобы помочь своим пользователям, вы должны настроить свой основной httpd на прослушивание порта 80, как обычно, и действовать как обратный прокси для отдельных экземпляров пользователя. Затем, когда Арамис подключается, например, к

http://aramis.example.com 

прокси-сервер основного сервера - это экземпляр Арамиса.

Вам нужно будет соответствующим образом настроить DNS и, возможно, другие вещи.