22.9. Предоставление пользователям индивидуальных веб-каталогов

Проблема

Вам нужно предоставить пользователям индивидуальные веб-каталоги, чтобы посетители сайта могли получать доступ к их страницам по адресу www.domain.com/~user. Это позволяет легко создавать общедоступные страницы для каждого пользователя без необходимости в настройке DNS или виртуальных хостов.

Решение

Для организации индивидуальных веб-каталогов выполните следующие шаги:

  1. Создайте основной каталог для пользователей. Например, вы можете разместить его в /var/www/users, или, если это предусмотрено конфигурацией, в любом другом каталоге, где хранятся файлы вашего сайта.
  2. Создайте подкаталог для каждого пользователя. Например, для пользователя "peters" создайте каталог /var/www/users/peters. Поместите тестовый файл index.html в этот каталог, чтобы проверить настройки.
  3. Откройте конфигурационный файл Apache, httpd.conf, и добавьте в него следующую строку:
UserDir /var/www/users

Директива UserDir сообщает Apache, где искать каталоги пользователей. После внесения изменений перезапустите Apache командой:

# systemctl restart apache2

Теперь в браузере введите адрес:

http://localhost/~peters/

Если настройки были выполнены правильно, вы должны увидеть тестовую страницу пользователя "peters".

Комментарий

Чтобы обеспечить безопасность и корректный доступ к пользовательским каталогам, назначьте для каждого каталога владельца и группу, соответствующую пользователю. Задайте разрешения 755, чтобы страницы были доступны для чтения, но недоступны для записи посторонним. Используйте следующую команду для изменения прав доступа:

# chmod 755 /var/www/users/peters
# chown peters:peters /var/www/users/peters

Обратите внимание, что такая структура URL может быть уязвимой, если конфиденциальные данные пользователей попадают в общедоступные каталоги. Если ваш сервер обслуживает внешнюю аудиторию, убедитесь, что каталог UserDir настроен на ограниченный доступ и что пользователи осведомлены о требованиях к безопасности.

Дополнительные настройки и оптимизация безопасности

Для более гибкой настройки и защиты пользовательских веб-каталогов можно воспользоваться следующими рекомендациями:

<Directory /var/www/users>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<FilesMatch "\.(conf|ini)$">
    Require all denied
</FilesMatch>

См. также

Раздел 22.6 для получения дополнительной информации о настройке доступа к руководству Apache и http://localhost/manual/howto/public_html.html для справки по настройке общедоступных каталогов пользователей.