Права на файлы сайта, работающего на Apache

Сайт, работающий на веб-сервере Apache, может не запускаться из-за неверно установленных разрешений (прав) на его файлы и каталоги. Также следует учитывать, кто является их владельцем (собственником). Для смены прав и владельца используются команды chmod и chown соответственно.

В случае если Apache сам отдает готовые страницы из каталога сайта (в конфигурационном файле сайта имеется директива DocumentRoot /var/www/site_folder/), а владельцем каталога сайта является созданный вами обычный пользователь, то следуют выставить разрешения 755 для каталогов и 644 для файлов.

755 - это запрет на изменение для всех, кроме владельца; 644 - дополнительное исключение исполнения для владельца, группы и остальных.

Команды рекурсивной смены прав и владельца:

# chown -R user_name:user_name /var/www/biology.su/
# find /var/www/site_folder/ -type d -exec chmod 755 {} \;
# find /var/www/site_folder/ -type f -exec chmod 644 {} \;

Если в качестве владельца и группы используется www-data (это пользователь, который появляется при установке Apache и настроен соответствующим образом на отдачу документов - web server user), то вместо 755 и 644 достаточно дать права 750 и 640, то есть все запретить для остальных. При этом каталог сайта должен находится в /var/www (специфика работы www-data).

Однако www-data неудобен тем, что обычно файлы на сервер переносятся под другим пользователем, и вам каждый раз может потребоваться менять владельца (или нет, если разрешения достаточны). С другой стороны, можно рассмотреть вопрос добавления пользователя в группу www-data.

В случае если отдачей страниц сайта занимается скрипт, он указывается в конфигурационном файле вместо директивы DocumentRoot. Например, для flask-приложений это выглядит так:

WSGIScriptAlias / /var/www/html/siteapp.wsgi

В этом случае надо тестировать, так как может оказаться, что сайт будет работать и в случае, когда владельцем файлов является root. Также в конфигурационном файле может прописываться пользователь для процессов.