Веб-сервер Apache, один из самых распространенных веб-серверов в мире, работает под определенными правами пользователей и групп. Эти разрешения определяют, к каким файлам и каталогам сервер может получать доступ и изменять их, обеспечивая безопасность и недоступность конфиденциальных файлов. В целях безопасности Apache не требуется и, соответственно, не настраивается на другие права доступа, так как даже эксплойт к плохо написанному PHP или Perl-скрипту не сможет расшириться и нанести большой вред системе.
По умолчанию Apache работает под управлением непривилегированного пользователя и группы, часто называемых www-data или apache, в зависимости от дистрибутива. Такая настройка сводит к минимуму потенциальные риски безопасности. Однако есть сценарии, в которых вам может потребоваться изменить стандартные настройки пользователей и групп, например, при интеграции с другим программным обеспечением или при настройке специальных разрешений для веб-приложений.
Настройка параметров пользователей и групп в Apache не представляет собой ничего сложного. Для этого необходимо изменить директивы User и Group в конфигурационном файле Apache.
Шаги по изменению пользователя и группы Apache
Найдите директивы User и Group в конфигурационном файле Apache.
1 | sudo grep -Enr "^User |^Group " /etc/{apache2,httpd}/ |
Пример вывода:
1 2 | /etc/apache2/apache2.conf:115:User ${APACHE_RUN_USER} /etc/apache2/apache2.conf:116:Group ${APACHE_RUN_GROUP} |
Откройте файл конфигурации Apache с помощью удобного для вас текстового редактора.
1 | sudo nano /etc/apache2/apache2.conf |
Измените значения директив User и Group на нужных пользователей и группы, которые существуют в вашей системе.
1 2 | User username Group groupname |
В следующем примере он запускается от имени пользователя username и groupname как group. Это угроза безопасности, так как эксплуатируемый скрипт будет иметь доступ к системе.
Убедитесь, что настроенные пользователь и группа имеют правильные права на папки DocumentRoot всех виртуальных хостов Apache.
1 | sudo chown --recursive username:groupname /home/user/website/ |
Перезапустите службу Apache, чтобы применить изменения.
1 | sudo systemctl restart apache2 |
1 | sudo systemctl restart httpd |
Убедитесь, что Apache запущен под новым пользователем и группой, проверив запущенные процессы.
1 | ps aux | grep apache2 |
Пример:
1 2 3 4 | root 9720 0.0 0.1 8796 4492 ? Ss 20:52 0:00 /usr/sbin/apache2 -k start username 9721 0.0 0.1 1216456 4884 ? Sl 20:52 0:00 /usr/sbin/apache2 -k start username 9722 0.0 0.1 1216456 5012 ? Sl 20:52 0:00 /usr/sbin/apache2 -k start username 9831 0.0 0.0 6068 1920 pts/0 S+ 20:53 0:00 grep --color=auto apache2 |