Red Hat System Administration II 8.2

Упражнение под руководством преподавателя: Настройка политики SELinux с помощью переключателей

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

Результаты

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

Войдите на workstation как пользователь student с паролем student.

На workstation выполните команду lab selinux-booleans start. Эта команда запускает подготовительный сценарий, который проверяет доступность машины servera в сети. Сценарий также устанавливает службу httpd и разрешает HTTP-подключения в брандмауэре на servera.

[student@workstation ~]$ lab selinux-booleans start
  1. С помощью команды ssh войдите на servera как пользователь student. Системы настроены на использование ключей SSH для аутентификации, поэтому пароль не требуется.

    [student@workstation ~]$ ssh student@servera
    ...output omitted...
    [student@servera ~]$  
  2. Выполните команду sudo -i, чтобы переключиться на пользователя root. Пароль для пользователя student — student.

    [student@servera ~]$ sudo -i
    [sudo] password for student: student
    [root@servera ~]# 
  3. Чтобы включить функцию Apache, которая разрешает пользователям публиковать веб-содержимое из домашних каталогов, необходимо отредактировать файл конфигурации /etc/httpd/conf.d/userdir.conf. Закомментируйте строку, которая задает для UserDir значение disabled, и раскомментируйте строку, которая задает для UserDir значение public_html.

    [root@servera ~]# vim /etc/httpd/conf.d/userdir.conf
    #UserDir disabled
    UserDir public_html 
  4. Выполните команду grep, чтобы подтвердить изменения.

    [root@servera ~]# grep '#UserDir' /etc/httpd/conf.d/userdir.conf
    #UserDir disabled
    [root@servera ~]# grep '^ *UserDir' /etc/httpd/conf.d/userdir.conf
    UserDir public_html
  5. Запустите и включите веб-службу Apache, чтобы изменения вступили в силу.

    [root@servera ~]# systemctl enable --now httpd
    
  6. В другом окне терминала войдите в систему как пользователь student. Установите SSH-подключение к servera. Создайте веб-содержимое, публикуемое из домашнего каталога пользователя.

    1. В другом окне терминала войдите в систему как пользователь student. С помощью команды ssh войдите на servera как пользователь student.

      [student@workstation ~]$ ssh student@servera
      ...output omitted...
      [student@servera ~]$ 
    2. С помощью команды mkdir создайте каталог ~/public_html.

      [student@servera ~]$ mkdir ~/public_html
    3. Создайте файл index.html со следующим содержимым:

      [student@servera ~]$ echo 'This is student content on SERVERA.' > \
      ~/public_html/index.html
    4. С помощью команды chmod измените разрешения для домашнего каталога пользователя student, чтобы предоставить Apache доступ к подкаталогу public_html.

      [student@servera ~]$ chmod 711 ~
  7. В веб-браузере на workstation попробуйте открыть следующий URL-адрес: http://servera/~student/index.html. Вы увидите сообщение о том, что у вас нет разрешения на доступ к файлу.

  8. В окне терминала с правами root выполните команду getsebool, чтобы узнать, ограничивают ли какие-либо переключатели доступ к домашним каталогам.

    [root@servera ~]# getsebool -a | grep home
    ...output omitted...
    httpd_enable_homedirs --> off
    ...output omitted...
  9. В окне терминала с правами root выполните команду setsebool, чтобы включить постоянный доступ к домашнему каталогу.

    [root@servera ~]# setsebool -P httpd_enable_homedirs on
  10. Снова попробуйте открыть http://servera/~student/index.html. Вы увидите следующее сообщение: This is student content on SERVERA.

  11. Выйдите с servera.

    [root@servera ~]# exit
    logout
    [student@servera ~]$ exit
    logout
    Connection to servera closed.
    [student@workstation ~]$ 

Конец

На workstation запустите сценарий lab selinux-booleans finish, чтобы закончить упражнение.

[student@workstation ~]$ lab selinux-booleans finish

Упражнение завершено.