22.9. Предоставление пользователям индивидуальных веб-каталогов
Проблема
Вам нужно предоставить пользователям индивидуальные веб-каталоги, чтобы посетители сайта могли получать доступ к их страницам по адресу www.domain.com/~user
. Это позволяет легко создавать общедоступные страницы для каждого пользователя без необходимости в настройке DNS или виртуальных хостов.
Решение
Для организации индивидуальных веб-каталогов выполните следующие шаги:
- Создайте основной каталог для пользователей. Например, вы можете разместить его в
/var/www/users
, или, если это предусмотрено конфигурацией, в любом другом каталоге, где хранятся файлы вашего сайта. - Создайте подкаталог для каждого пользователя. Например, для пользователя "peters" создайте каталог
/var/www/users/peters
. Поместите тестовый файлindex.html
в этот каталог, чтобы проверить настройки. - Откройте конфигурационный файл 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
настроен на ограниченный доступ и что пользователи осведомлены о требованиях к безопасности.
Дополнительные настройки и оптимизация безопасности
Для более гибкой настройки и защиты пользовательских веб-каталогов можно воспользоваться следующими рекомендациями:
- Ограничение типов файлов: Если нужно ограничить доступ к определённым типам файлов, добавьте в
httpd.conf
директивуFilesMatch
. Например, чтобы запретить доступ к файлам с расширением.conf
:
<Directory /var/www/users>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<FilesMatch "\.(conf|ini)$">
Require all denied
</FilesMatch>
- Индексация содержимого каталога: Директива
Options Indexes
позволяет посетителям просматривать список файлов в каталоге, если файлindex.html
отсутствует. Это может быть удобно, но иногда нежелательно, поэтому уберитеIndexes
из списка параметровOptions
, если не хотите разрешать доступ к списку файлов. - Лимитирование пользователей: Если сайт поддерживает большое количество пользователей, задайте лимит на количество подкаталогов в
UserDir
, чтобы избежать чрезмерного расхода ресурсов сервера. - Разделение доступа: Если требуется ограничить доступ для отдельных IP-адресов или пользователей, настройте дополнительные правила доступа с помощью директив
Require
иDeny
вhttpd.conf
.
См. также
Раздел 22.6 для получения дополнительной информации о настройке доступа к руководству Apache и http://localhost/manual/howto/public_html.html для справки по настройке общедоступных каталогов пользователей.