Включение пользовательских каталогов

LinuxBeginner
Практиковаться сейчас

Введение

Представьте, что вы администрируете университетский сервер. Вы хотите, чтобы у каждого студента был собственный веб-сайт, доступный по URL-адресу вроде university.com/~student1.

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

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

В этой лабораторной работе вы:

  1. Включите модуль: активируете в Apache функцию userdir.
  2. Создадите каталог: настроите каталог public_html в домашнем каталоге.
  3. Настроите разрешения: обеспечите Apache необходимые разрешения для доступа к вашим файлам.
  4. Проверите результат: откроете персональную страницу с помощью веб-запроса.

Включите модуль Userdir

Apache — модульный сервер, поэтому при необходимости вы можете включать и отключать отдельные функции. Модуль userdir сопоставляет URL-адреса вида ~username с домашним каталогом соответствующего пользователя.

Такая модульная архитектура — одна из характерных особенностей Apache. Многие функции не включены постоянно по умолчанию: вместо этого администратор активирует модули, необходимые для конкретной роли сервера.

Проверьте состояние Apache, чтобы убедиться, что служба запущена:

sudo service apache2 status

Включите модуль userdir с помощью команды a2enmod (Apache 2 Enable Module):

Вспомогательная команда a2enmod является частью принятой в Ubuntu схемы упаковки Apache. Она упрощает управление модулями, создавая необходимые символические ссылки, поэтому вам не приходится вручную изменять все настройки.

sudo a2enmod userdir

Вы должны увидеть сообщение о включении модуля.

Чтобы подтвердить результат, выведите список включённых модулей:

ls /etc/apache2/mods-enabled/ | grep userdir

В выводе должны появиться userdir.conf и userdir.load. Это подтверждает, что модуль активен.

Настройте веб-каталог

Модуль userdir ищет каталог с именем public_html внутри домашнего каталога пользователя. В этой лабораторной работе ваше имя пользователя — labex.

Перейдите в домашний каталог:

cd ~

Создайте каталог public_html:

mkdir ~/public_html

Создайте в этом каталоге простой файл index.html, чтобы проверить работу сайта:

echo "<h1>My Personal Page</h1><p>Welcome to the labex user directory.</p>" > ~/public_html/index.html

Теперь необходимо настроить разрешения. По умолчанию домашние каталоги пользователей часто закрыты для других пользователей, поэтому пользователь Apache (www-data) не может войти в них. Apache требуется разрешение на выполнение (x) для вашего домашнего каталога, чтобы получить доступ к находящемуся внутри него каталогу public_html.

Это хороший пример того, что обслуживание веб-содержимого зависит от обычных разрешений файловой системы Linux. Apache может обслуживать только те файлы, к которым ему разрешено пройти по пути и получить доступ для чтения.

Измените разрешения домашнего каталога:

chmod 711 /home/labex
  • 711 (rwx--x--x) даёт вам полный контроль, а другим пользователям, включая Apache, позволяет проходить через каталог (разрешение на выполнение), но не позволяет просматривать его содержимое (разрешение на чтение).

Различие между разрешениями на чтение и выполнение для каталогов неочевидно, но важно. Разрешение на выполнение для каталога означает «можно войти в каталог или пройти через него», а разрешение на чтение — «можно вывести его содержимое».

Проверьте разрешения:

ls -ld /home/labex

В конце строки с разрешениями должна присутствовать буква x, указывающая, что проход через каталог разрешён.

Перезапустите службу

После включения модуля или изменения конфигурации необходимо перезапустить Apache, чтобы изменения вступили в силу.

Перезапустите службу Apache:

sudo service apache2 restart

Убедитесь, что Apache успешно перезапустился:

sudo service apache2 status

В состоянии службы должно быть указано active (running).

Проверьте конфигурацию

Теперь, когда всё настроено, проверьте работу персональной веб-страницы.

Формат URL-адреса: http://server_address/~username/. Поскольку запрос выполняется непосредственно на сервере, используйте localhost.

Получите страницу с помощью curl:

curl http://localhost/~labex/

Вы должны увидеть созданное вами HTML-содержимое:

<h1>My Personal Page</h1>
<p>Welcome to the labex user directory.</p>

Если вы получили ошибку 403 Forbidden, ещё раз проверьте разрешения для домашнего каталога (/home/labex) и каталога public_html.

Итоги

В этой лабораторной работе вы успешно настроили персональные веб-каталоги. Вы научились:

  • включать модуль Apache userdir;
  • создавать каталог public_html и добавлять в него содержимое;
  • настраивать разрешения каталогов, чтобы предоставить Apache доступ и сохранить безопасность;
  • проверять настройку, обращаясь к URL-адресу конкретного пользователя.

Эта функция широко используется в учебных средах и средах общего хостинга, чтобы предоставлять пользователям собственное веб-пространство.