#### Лабораторные работы по курсу RH199 (RHCSA) *** **Для выполнения лабораторных работ потребуется настроить 2 виртуальных хоста** server1 - 192.168.10.10 user: student password: student root password: redhat server2 - 192.168.10.11 user: student password: student root password: redhat Дополнительно необходимо: *SERVER1* 1. Прописать доменное имя server2 ```bash [student@server2 ~]$ sudo -i [sudo] пароль для student: [root@server2 ~]# echo '192.168.10.11 server2' >> /etc/hosts ``` 2. Установить httpd ```bash [student@server2 ~]$ sudo -i [sudo] пароль для student: [root@server2 ~]# yum install httpd -y [root@server2 ~]# systemctl enable --now httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. [root@server2 ~]# echo "This is SERVER2 WEB-SERVER" > /var/www/html/index.html [root@server2 ~]# firewall-cmd --add-service=http success [root@server2 ~]# firewall-cmd --add-service=http --permanent success [root@server2 ~]# mkdir /test [root@server2 ~]# echo "This is the html file for the SELinux final lab on SERVER2." > /test/lab.html [root@server2 ~]# mv /test/lab.html /var/www/html/ [root@server2 ~]# ls -lZ /var/www/html/ итого 8 -rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 27 окт 9 16:03 index.html -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 60 окт 9 16:07 lab.html [root@server2 ~]# rmdir /test/ [root@server2 ~]# curl http://server2/index.html This is SERVER2 WEB-SERVER [root@server2 ~]# curl http://server2/lab.html
You don't have permission to access this resource.
``` Перечень необходимых команд root (*стоит это оформить в виде скрипта*) ```bash echo '192.168.10.11 server2' >> /etc/hosts yum install httpd -y systemctl enable --now httpd echo "This is SERVER2 WEB-SERVER" > /var/www/html/index.html firewall-cmd --add-service=http firewall-cmd --add-service=http --permanent mkdir /test echo "This is the html file for the SELinux final lab on SERVER2." > /test/lab.html mv /test/lab.html /var/www/html/ rmdir /test/ ``` *SERVER2* 1. Прописать доменное имя server1 ```bash [student@server2 ~]$ sudo -i [sudo] пароль для student: [root@server2 ~]# echo '192.168.10.10 server1' >> /etc/hosts ``` Перечень необходимых команд root (*стоит это оформить в виде скрипта*) ```bash echo '192.168.10.10 server1' >> /etc/hosts ``` *** ###### top *лабораторные работы начинаются в 3-й главы* *** 3. [Управление локальными пользователями и группами.](#chapter3) 4. [Управление доступом к файлам.](#chapter4) 5. [](#chapter5) 6. [](#chapter6) 7. [](#chapter7) 8. [](#chapter8) 9. [](#chapter9) 10. [](#chapter10) 11. [](#chapter11) 12. [](#chapter12) 13. [](#chapter13) 14. [](#chapter14) 15. [](#chapter15) 16. [](#chapter16) 17. [](#chapter17) *** ###### Chapter3 **Управление локальными пользователями и группами.** 1. Подключиться по ssh к server1 ```bash da2001@Zenmint ~ $ ssh student@server1 ``` 2. У всех вновь создаваемых пользователей пароль необходимо изменять каждые 30 дней. ```bash [student@server1 ~]$ sudo -i [sudo] пароль для student: [root@server1 ~]# vim /etc/login.defs ``` *необходимо изменить строку* ```bash PASS_MAX_DAYS 30 ``` 3. Создать новую группу `consultants` с GID 35000. ```bash [root@server1 ~]# groupadd -g 35000 consultants ``` 4. Настроить административные права членов группы `consultants`, чтобы они могли выполнять любые команды от любых пользователей. *best practices RedHat не редактировать существующие системные файлы, а создавать свои в соответствующих директориях. Создадим файл vim `/etc/sudoers.d/consultants`* ```bash [root@server1 ~]# vim /etc/sudoers.d/consultants ``` *добавить строку* ```bash %consultants ALL=(ALL) ALL ``` 5. Создать пользователей `consultant1`, `consultant2`, и `consultant3` и задать им в качестве дополнительной группы `consultants`. ```bash [root@server1 ~]# useradd -G consultants consultant1 [root@server1 ~]# useradd -G consultants consultant2 [root@server1 ~]# useradd -G consultants consultant3 ``` 6. Учётные записи пользователей `consultant1`, `consultant2`, и `consultant3` настроить таким образом, чтобы срок их действия истекал через 90 дней с текущей даты. *узнать какая дата будет через 90 дней от текущей даты можно с помощью команды* ```bash [root@server1 ~]# date -d "+90 days" +%F ``` *ограничить срок действия пароля* ```bash [root@server1 ~]# chage -E 2022-01-06 consultant1 [root@server1 ~]# chage -E 2022-01-06 consultant2 [root@server1 ~]# chage -E 2022-01-06 consultant3 ``` 7. Изменить политику паролей для учетной записи `consultant2`, чтобы нужно было менять пароль каждые 15 дней. ```bash [root@server1 ~]# chage -M 15 consultant2 ``` 8. Пользователи `consultant1`, `consultant2`, и `consultant3` при первом входе в систему должны изменить свои пароли в принудительном порядке. ```bash [root@server1 ~]# chage -d 0 consultant1 [root@server1 ~]# chage -d 0 consultant2 [root@server1 ~]# chage -d 0 consultant3 ``` **Проверка** Наличие группы `consultants`, правильность её GID и члены группы ```bash [student@server1 ~]$ cat /etc/group | grep consultants consultants:x:35000:consultant1,consultant2,consultant3 ``` Срок действия паролей, учётной записи и требование изменить пароль при первом входе в систему ```bash [root@server1 ~]# chage -l consultant1 Последний раз пароль был изменён : пароль должен быть изменён Срок действия пароля истекает : пароль должен быть изменён Пароль будет деактивирован через : пароль должен быть изменён Срок действия учётной записи истекает : янв 06, 2022 Минимальное количество дней между сменой пароля : 0 Максимальное количество дней между сменой пароля : 30 Количество дней с предупреждением перед деактивацией пароля : 7 [root@server1 ~]# chage -l consultant2 Последний раз пароль был изменён : пароль должен быть изменён Срок действия пароля истекает : пароль должен быть изменён Пароль будет деактивирован через : пароль должен быть изменён Срок действия учётной записи истекает : янв 06, 2022 Минимальное количество дней между сменой пароля : 0 Максимальное количество дней между сменой пароля : 15 Количество дней с предупреждением перед деактивацией пароля : 7 [root@server1 ~]# chage -l consultant3 Последний раз пароль был изменён : пароль должен быть изменён Срок действия пароля истекает : пароль должен быть изменён Пароль будет деактивирован через : пароль должен быть изменён Срок действия учётной записи истекает : янв 06, 2022 Минимальное количество дней между сменой пароля : 0 Максимальное количество дней между сменой пароля : 30 Количество дней с предупреждением перед деактивацией пароля : 7 ``` Наличие административных прав у членов группы `consultants` ```bash [root@server1 ~]# cat /etc/sudoers.d/consultants %consultants ALL=(ALL) ALL ``` [вверх](#top) *** ###### Chapter4 **Управление доступом к файлам.** 1. На server1 создать директорию `/home/techdocs`. ```bash [student@server1 ~]$ sudo -i [sudo] пароль для student: [root@server1 ~]# mkdir /home/techdocs ``` 2. Создать группу `techdocs`, изменить группу владельца директории `/home/techdocs` на группу `techdocs`. ```bash [root@server1 ~]# groupadd techdocs [root@server1 ~]# chgrp techdocs /home/techdocs/ ``` 3. Создать пользователей `tech1`, `tech2` и добавить их в группу `techdocs`. ```bash [root@server1 ~]# useradd -G techdocs tech1 [root@server1 ~]# useradd -G techdocs tech2 ``` 4. Убедиться, что пользователи `tech1`, `tech2` не могут создавать файлы в папке `/home/techdocs`. ```bash [root@server1 ~]# su - tech1 [tech1@server1 ~]$ touch /home/techdocs/testfile touch: невозможно выполнить touch для '/home/techdocs/testfile': Отказано в доступе [tech1@server1 ~]$ выход [root@server1 ~]# su - tech2 [tech2@server1 ~]$ touch /home/techdocs/ touch: установка временных отметок '/home/techdocs/': Отказано в доступе [tech2@server1 ~]$ выход ``` 5. Для директории `/home/techdocs` установить следующие разрешения: setgid (2), чтение/запись/исполнение для владельца и группы (7), для остальных нет никаких прав (0). ```bash [root@server1 ~]# chmod 2770 /home/techdocs/ ``` 6. Проверить, что разрешения установлены корректно. ```bash [root@server1 ~]# ls -ld /home/techdocs/ drwxrws---. 2 root techdocs 6 окт 9 03:36 /home/techdocs/ ``` 7. Проверить, что члены группы `techdocs` (`tech1`, `tech2`) теперь могут создавать и редактировать файлы в директории `/home/techdocs`, а другие пользователи не могут. ```bash [root@server1 ~]# su - tech1 [tech1@server1 ~]$ touch /home/techdocs/file1 [tech1@server1 ~]$ выход [root@server1 ~]# su - tech2 [tech2@server1 ~]$ touch /home/techdocs/file2 [tech2@server1 ~]$ echo "Test" >> /home/techdocs/file1 [tech2@server1 ~]$ cat /home/techdocs/file1 Test [tech2@server1 ~]$ выход [root@server1 ~]# su - student [student@server1 ~]$ touch /home/techdocs/file3 touch: невозможно выполнить touch для '/home/techdocs/file3': Отказано в доступе [student@server1 ~]$ echo "Student test" >> /home/techdocs/file1 -bash: /home/techdocs/file1: Отказано в доступе ``` 8. Изменить глобальный скрипт загрузки. Обычные пользователи должны иметь umask при которой другие пользователи не смогут просматривать и изменять новые файлы и каталоги. *создадим новый файл `/etc/profile.d/local-umask.sh` и скопируем в него блок, который имеет отношение к umask из файла `/etc/profile`, значение umask в первом упоминании заменим на 007.* **Важно обратить внимание - название файла обязательно должно иметь расширение `.sh`, т.к. только такие файлы проверяются.** ```bash [root@server1 ~]# vim /etc/profile.d/local-umask.sh ``` ```bash if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 007 else umask 022 fi ``` **Проверка** *проверим только последний пункт, т.к. все предыдущие проверяются в процессе выполнения* *назначим пользователю `student` временную маску 007, создадим новый файл и проверим его разрешения.* ```bash [student@server1 ~]$ umask 007 [student@server1 ~]$ touch file1 [student@server1 ~]$ ls -l итого 0 -rw-rw----. 1 student student 0 окт 9 04:00 file1 ``` *остальные не имеют никаких разрешений на файл - то что было нужно в задании.* [вверх](#top) ***