Настройка прав доступа для веб-сервера apache (httpd)
Сейчас достаточно распространена практика покупки выделенного сервера под свои сайты. Однако, не все задумываются о правах доступа к файлам и папкам ваших сайтов. Важно настроить права так, чтобы веб сервер мог исполнять скрипты, чтобы ftp пользователи могли просматривать/загружать/создавать файлы на веб сервере.
Для примера возьмем виртуальный хост, находящийся в директории /var/www/test.com/public_html
Сервер в данном случае на Centos со стандартной группой и пользователем apache:apache (в debian подобных системах это www-data:www-data) для сервера httpd (в debian — apache2).
- Сменим права директориям:12find /var/www/test.com/public_html -type d -exec chown apache:apache {} \; -printfind /var/www/test.com/public_html -type d -exec chmod -R 0755 {} \; -print
Для директорий, в которые веб сервер должен иметь возможность записывать файлы — необходимо выставить права 770. - Файлам:12find /var/www/test.com/public_htm -type f -exec chown apache:apache {} \; -printfind /var/www/test.com/public_htm -type f -exec chmod -R 0644 {} \; -print
Для файлов, которые может изменять сервер необходимо поставить права 660
Хорошая практика — у нас есть два пользователя: от одного запущен веб-сервер, а другой занимается разработкой и обслуживанием сайта. Оба пользователя размещаются в одной группе.
Если хочется более универсальное решение, то можно права задать таким образом:
1 2 | find /var/www/test.com/public_html -type d -exec chmod 0770 {} \; find /var/www/test.com/public_html -type f -exec chmod 0660 {} \; |
Владельцем всех файлов, кроме созданных веб сервером, должен быть пользователь_администратор:общая_группа.
Можно восрользоваться командой
1 | find /var/www -type d -exec chmod g+s '{}' ';' |
Команда полезна тем, что при создании новых директорий и файлов внутри /var/www, им будет присваиваться группа директории родительской категории.