**После настройки ВМ необходимо сохранить состояние - создать снапшот и после выполнения каждой лабораторной работы возвращаться к исходному состоянию.**
6. Учётные записи пользователей `consultant1`, `consultant2`, и `consultant3` настроить таким образом, чтобы срок их действия истекал через 90 дней с текущей даты.
Срок действия паролей, учётной записи и требование изменить пароль при первом входе в систему
```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. Проверить, что разрешения установлены корректно.
7. Проверить, что члены группы `techdocs` (`tech1`, `tech2`) теперь могут создавать и редактировать файлы в директории `/home/techdocs`, а другие пользователи не могут.
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
1.На server1 запустите браузер и введите адрес `http://server2/lab.html`. Отобразится сообщение `Forbidden You don't have permission to access this resource.`
SELinux запрещает /usr/sbin/httpd доступ getattr к файл /webserver/lab.html.
***** Модуль restorecon предлагает (точность 94.8) *************************
Если вы хотите исправить метку.$TARGETЗнак _PATH по умолчанию должен быть httpd_sys_content_t
То вы можете запустить restorecon. Возможно, попытка доступа была остановлена из-за недостаточных разрешений для доступа к родительскому каталогу, и в этом случае попытайтесь соответствующим образом изменить следующую команду.
Сделать
# /sbin/restorecon -v /webserver/lab.html
... дальнейший вывод отброшен ...
```
3. Отобразите тип контекста SELinux для стандартной и запрашиваемой директории web сервера.
```bash
[root@server2 ~]# ls -ldZ /var/www/html/ /webserver/
**Установка и обновление программного обеспечения.**
*Все действия необходимо выполнять на server1*
1. Проверить, находится ли система в активированном состоянии. Если система активирована, необходимо отменить регистрацию и удалить системный репозиторий, который устанавливается при регистрации.
```bash
[root@server1 ~]# subscription-manager status
```
*если окажется, что система находится в активированном состоянии, необходимо отменить регистрацию и удалить настроенные репозитории*
```bash
[root@server1 ~]# subscription-manager unregister
[root@server1 ~]# ls /etc/yum.repos.d/
redhat.repo
[root@server1 ~]# rm /etc/yum.repos.d/redhat.repo
```
2. Используя полный установочный ISO образ, настроить локальный репозиторий с BaseOS и APPSteram. Проверку GPG не использовать.
3.На этом же диске создайте два дополнительных раздела по 512 Мбс именами `swap1` и `swap2` соответственно. Укажите корректную метку для этих разделов.
```bash
[root@server1 ~]# parted /dev/sdb print
Модель: QEMU QEMU HARDDISK (scsi)
Диск /dev/sdb: 5369MB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: gpt
Флаги диска:
Номер Начало Конец Размер Файловая система Имя Флаги
4. Инициализируйте разделы в качестве разделов подкачки, они должны быть активны при загрузке системы. Предусмотрите более высокий приоритет использования раздела `swap2` перед `swap1`.
```bash
[root@server1 ~]# mkswap /dev/sdb2
Setting up swapspace version 1, size = 488 MiB (511700992 bytes)
без метки, UUID=a905e327-802c-41c0-89ca-500d542c9650
[root@server1 ~]# mkswap /dev/sdb3
Setting up swapspace version 1, size = 488 MiB (511700992 bytes)
без метки, UUID=0c267fd8-c8f3-4cc3-9c2c-54fdefc13f2f
5. Проверьте свою работу: перезагрузите `server1`, в директории `/backup` должен быть смонтирован XFS раздел размером 2 Гб, а также 2 раздела подкачки общим объемом 1 Гб с более высоким приоритетом использования у раздела `swap2`.
```bash
[root@server1 ~]# reboot
Connection to server1 closed by remote host.
Connection to server1 closed.
```
*смонтированный раздел `/backup`*
```bash
[student@server1 ~]$ mount | grep backup
/dev/sdc1 on /backup type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)
```
*подкачка*
```bash
[student@server1 ~]$ free -h
total used free shared buff/cache available
Mem: 1,8Gi 484Mi 807Mi 10Mi 525Mi 1,1Gi
Swap: 975Mi 0B 975Mi
[student@server1 ~]$ swapon -s
Имя файла Тип Размер Исп-но Приоритет
/dev/sdc2 partition 499708 0 2
/dev/sdc3 partition 499708 0 1
```
[вверх](#top)
***
###### Chapter9
**Настройка сервисов и управление загрузкой процессов.**
2. Показать логи записанные за последние 30 минут.
```bash
[root@server1 ~]# journalctl --since -30min
```
3. Создать файл `/etc/rsyslog.d/auth-errors.conf`, с соответствующей конфигурацией rsyslog, при которой в файл `/var/log/auth-errors` будут записываться все события связанные с проблемами аутентификации и безопасности. Используйте категорию `authpriv` и приоритет `alert`.
```bash
[root@server1 ~]# vim /etc/rsyslog.d/auth-errors.conf
окт 07 11:25:23 server1 stratisd[48237]: [2021-10-07T08:25:23Z INFO libstratis::stratis::run] stratis daemon version 2>
окт 07 11:25:23 server1 stratisd[48237]: [2021-10-07T08:25:23Z INFO libstratis::stratis::run] Using StratEngine
окт 07 11:25:23 server1 stratisd[48237]: [2021-10-07T08:25:23Z INFO libstratis::engine::strat_engine::liminal::identif>
окт 07 11:25:23 server1 stratisd[48237]: [2021-10-07T08:25:23Z INFO libstratis::stratis::dbus_support] D-Bus API is av>
окт 07 11:25:23 server1 systemd[1]: Started Stratis daemon.
```
3. Создайте пул Stratis `labpool` состоящий из устройства `/dev/sdb`.
```bash
[root@server1 ~]# stratis pool create labpool /dev/sdb
```
4. Увеличьте объем пула используя доступный в системе диск `/dev/sdc`.
```bash
[root@server1 ~]# stratis pool add-data labpool /dev/sdc
```
5. Создайте на пуле файловую систему `labfs`. Смонтируйте её в директорию `/labstratisvol`. Не забудьте включить `x-systemd.requires=stratisd.service` в параметры монтирования в `/etc/fstab`.
/dev/mapper/stratis-1-87c72f38b1b543c0a86c885528170cee-thin-fs-1d58170dae514b62ba42afa6affbbb8e on /labstratisvol type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,sunit=2048,swidth=2048,noquota,x-systemd.requires=stratisd.service)
```
6. Создайте снапшот `labfs-snap` файловой системы `labfs`.
/dev/mapper/labvdo on /labvdovol type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota,x-systemd.requires=vdo.service)
```
9. Перезагрузите server1 и убедитесь, что все созданные разделы корректно смонтированы.
*смонтированные разделы*
```bash
[student@server1 ~]$ mount | grep /labstratisvol
/dev/mapper/stratis-1-87c72f38b1b543c0a86c885528170cee-thin-fs-1d58170dae514b62ba42afa6affbbb8e on /labstratisvol type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,sunit=2048,swidth=2048,noquota,x-systemd.requires=stratisd.service)
[student@server1 ~]$ mount | grep /labvdo
/dev/mapper/labvdo on /labvdovol type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota,x-systemd.requires=vdo.service)
```
*детали stratis*
```bash
[root@server1 ~]# stratis pool list
Name Total Physical Properties
labpool 10 GiB / 41.63 MiB / 9.96 GiB ~Ca,~Cr
[root@server1 ~]# stratis blockdev list labpool
Pool Name Device Node Physical Size Tier
labpool /dev/sdb 5 GiB Data
labpool /dev/sdc 5 GiB Data
[root@server1 ~]# stratis filesystem list labpool
Pool Name Name Used Created Device UUID
labpool labfs 546 MiB Oct 07 2021 11:49 /dev/stratis/labpool/labfs 1d58170dae514b62ba42afa6affbbb8e
labpool labfs-snap 546 MiB Oct 07 2021 12:17 /dev/stratis/labpool/labfs-snap cacb462cbc034b0582381d687ef53fcf
server2:/shares/nfs on /mnt/nfs type nfs4 (rw,relatime,sync,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.10.10,local_lock=none,addr=192.168.10.11)
```
2.На server1 настроить монтирование по запросу (automount) удалённой NFS папки сервера server2 `/shares/autofs` в локальную директорию `/labshares/autofs`.
```bash
[root@server1 ~]# yum install -y autofs
[root@server1 ~]# systemctl enable --now autofs
[root@server1 ~]# mkdir /labshares
```
*создадим карту*
```bash
[root@server1 ~]# vim /etc/auto.master.d/labshares.autofs
```
*вставим строку*
```bash
/labshares /etc/auto.demo
```
*отредактируем монтирование*
```bash
[root@server1 ~]# vim /etc/auto.demo
```
*вставим строку*
```bash
autofs -rw,sync server2:/shares/autofs
```
*проверим автомонтирование при обращении к папке*
```bash
[root@server1 ~]# systemctl reload autofs
[root@server1 ~]# ls -l /labshares/autofs
итого 4
-rw-r--r--. 1 root root 36 окт 9 2021 welcome.txt
```
3. Перезагрузить server1, убедиться, что сетевые папки автоматически смонтированы в соответствующие локальные директории.
Ваша компания решила использовать новое web-приложение. Это приложение прослушивает порты 80/TCP и 1001/TCP. Порт 22/TCP для доступа по SSH также должен быть доступен. Все изменения, которые будут сделаны, должны быть доступны после перезагрузки.
*Все настройки этой работы необходимо производить на server1, доступ проверять с server2.*
1.С server2 проверить доступ к серверу `http://server1` и виртуальному хосту `http://server1:1001`.
2. Реестр образов https://quay.io/ содержит образ `quay.io/bitnami/mariadb`, необходимо авторизоваться с учётной записью пользователя `poduser` используя пароль `redhat`, посмотреть доступные версии БД в образе для загрузки и скачать версию 10.6.
*Важно именно залогиниться как poduser, а не переключаться на него*
```bash
[poduser@server1 ~]$ podman login quay.io
Username: adolgiy
Password:
Login Succeeded!
```
*посмотрим доступные версии образов MariaDB (получение информации может занимать более 1 минуты)*
3.На server1 с учетной записью `poduser` создать папку `/home/poduser/db_data`. Подготовить директорию, чтобы контейнеры имели доступ чтения/записи в ней. Директория будет использована в качестве постоянного хранилища.
4.На server1 с учетной записью `poduser` создать контейнер содержащий образ MariaDB с именем `inventorydb`. Необходимо выполнить трансляцию внутреннего порта в контейнере 3306 на внешний порт server1 13306. Подключить директорию `/home/poduser/db_data` в качестве хранилища БД в контейнере директории `/var/lib/mysql/data`. Кроме этого необходимо объявить следующие переменные в контейнере:
Переменная | Значение
--------------------- | ----------
MARIADB_USER | operator1
MARIADB_PASSWORD | redhat
MARIADB_DATABASE | inventory
MARIADB_ROOT_PASSWORD | redhat
После запуска контейнера необходимо убедиться в наличии доступа к БД в контейнере:
- подключиться к контейнеру;
- подключиться к консоли управления БД (команда - `mysql -u root -p`, ввести пароль `redhat`);
- убедиться в том, что БД с именем inventory присутствует в списке доступных (команда - SHOW DATABASES;);
- выйти из консоли управления БД (команда - `exit`);
- отключиться от контейнера.
*создадим контейнер - с учётом проброса порта 13306:3306, подключения хранилища и необходимые переменные*
*после того, как сервис будет сгенерирован, необходимо остановить и удалить запущенный контейнер, иначе сервис не сможет стартовать, т.к. имена запущенного вручную и создаваемого с помощью systemd контейнеров совпадают*
Created symlink /home/poduser/.config/systemd/user/default.target.wants/container-inventorydb.service → /home/poduser/.config/systemd/user/container-inventorydb.service.
```
*необходимо обеспечить автозагрузку пользовательского сервиса без необходимости авторизации в системе самого пользователя*