Apache может публиковать веб-содержимое, размещенное в домашних каталогах пользователей, но по умолчанию SELinux запрещает это. В этом упражнении вы идентифицируете и измените переключатель SELinux, который разрешает Apache доступ к домашним каталогам пользователей.
Результаты
Вы сможете настроить Apache для публикации веб-содержимого из домашних каталогов пользователей.
Войдите на workstation как пользователь student с паролем student.
workstation
student
На workstation выполните команду lab selinux-booleans start. Эта команда запускает подготовительный сценарий, который проверяет доступность машины servera в сети. Сценарий также устанавливает службу httpd и разрешает HTTP-подключения в брандмауэре на servera.
servera
httpd
[student@workstation ~]$ lab selinux-booleans start
[student@workstation ~]$
lab selinux-booleans start
С помощью команды ssh войдите на servera как пользователь student. Системы настроены на использование ключей SSH для аутентификации, поэтому пароль не требуется.
[student@workstation ~]$ ssh student@servera ...output omitted... [student@servera ~]$
ssh student@servera
Выполните команду sudo -i, чтобы переключиться на пользователя root. Пароль для пользователя student — student.
root
[student@servera ~]$ sudo -i [sudo] password for student: student [root@servera ~]#
[student@servera ~]$
sudo -i
Чтобы включить функцию Apache, которая разрешает пользователям публиковать веб-содержимое из домашних каталогов, необходимо отредактировать файл конфигурации /etc/httpd/conf.d/userdir.conf. Закомментируйте строку, которая задает для UserDir значение disabled, и раскомментируйте строку, которая задает для UserDir значение public_html.
/etc/httpd/conf.d/userdir.conf
UserDir
disabled
public_html
[root@servera ~]# vim /etc/httpd/conf.d/userdir.conf #UserDir disabled UserDir public_html
[root@servera ~]#
vim /etc/httpd/conf.d/userdir.conf
Выполните команду 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
grep '#UserDir' /etc/httpd/conf.d/userdir.conf
grep '^ *UserDir' /etc/httpd/conf.d/userdir.conf
Запустите и включите веб-службу Apache, чтобы изменения вступили в силу.
[root@servera ~]# systemctl enable --now httpd
systemctl enable --now httpd
В другом окне терминала войдите в систему как пользователь student. Установите SSH-подключение к servera. Создайте веб-содержимое, публикуемое из домашнего каталога пользователя.
В другом окне терминала войдите в систему как пользователь student. С помощью команды ssh войдите на servera как пользователь student.
С помощью команды mkdir создайте каталог ~/public_html.
~/public_html
[student@servera ~]$ mkdir ~/public_html
mkdir ~/public_html
Создайте файл index.html со следующим содержимым:
index.html
[student@servera ~]$ echo 'This is student content on SERVERA.' > \ ~/public_html/index.html
echo 'This is student content on SERVERA.' > \
~/public_html/index.html
С помощью команды chmod измените разрешения для домашнего каталога пользователя student, чтобы предоставить Apache доступ к подкаталогу public_html.
[student@servera ~]$ chmod 711 ~
chmod 711 ~
В веб-браузере на workstation попробуйте открыть следующий URL-адрес: http://servera/~student/index.html. Вы увидите сообщение о том, что у вас нет разрешения на доступ к файлу.
http://servera/~student/index.html
В окне терминала с правами root выполните команду getsebool, чтобы узнать, ограничивают ли какие-либо переключатели доступ к домашним каталогам.
[root@servera ~]# getsebool -a | grep home ...output omitted... httpd_enable_homedirs --> off ...output omitted...
getsebool -a | grep home
httpd_enable_homedirs
В окне терминала с правами root выполните команду setsebool, чтобы включить постоянный доступ к домашнему каталогу.
[root@servera ~]# setsebool -P httpd_enable_homedirs on
setsebool -P httpd_enable_homedirs on
Снова попробуйте открыть http://servera/~student/index.html. Вы увидите следующее сообщение: This is student content on SERVERA.
This is student content on SERVERA.
Выйдите с servera.
[root@servera ~]# exit logout [student@servera ~]$ exit logout Connection to servera closed. [student@workstation ~]$
exit
Конец
На workstation запустите сценарий lab selinux-booleans finish, чтобы закончить упражнение.
[student@workstation ~]$ lab selinux-booleans finish
lab selinux-booleans finish
Упражнение завершено.