rhcsa_labs/labs_solution.md

39 KiB
Raw Blame History

Решения лабораторных работ по видеокурсу Sander Van Vugt

лабораторные работы начинаются в 3-й главы


Глава 3. Базовые инструменты для работы с файлами.

  1. Создать структуру каталогов /tmp/files/pictures, /tmp/files/photos, /tmp/files/videos
mkdir -p /tmp/files/pictures /tmp/files/photos /tmp/files/videos
  1. Из папки /etc скопировать все файлы имена которых начинаются с a, b или c (лат.) в каталог /tmp/files
cp /etc/[a-c]* /tmp/files
  1. Из /tmp/files переместить все файлы имена которых начинаются на a или b в /tmp/files/photos, а файлы, имена которых начинаются на c переместить в /tmp/files/videos
mv /tmp/files/[ab]* /tmp/files/photos
mv /tmp/files/c* /tmp/files/videos
  1. Найти в папке /etc все файлы, размер которых меньше 1000 байт и скопировать их в /tmp/files/pictures
find /etc -type f -size -1000c -exec cp {} /tmp/files/pictures \;
  1. В папке /tmp/files создать символьную ссылку на /var
cd /tmp/files
ln -s /var .
  1. В папке /tmp/files создать сжатый архив директории /home
tar -zcvf home.tar.gz /home
  1. Распаковать архив с относительными именами файлов в /tmp/archive/
mkdir /tmp/archive
tar -xvf home.tar.gz -C /tmp/archive

Глава 4. Работа с текстовыми файлами.

  1. Используйте head и tail для отображения пятой строки в файле /etc/passwd
head -n 5 /etc/passwd | tail -n 1
  1. Используйте sed для отображения пятой строки в файле /etc/passwd
sed -n 5p /etc/passwd
  1. Используйте awk в конвейере, чтобы отфильтровать последний столбец в выводе ps aux
ps aux | awk '{ print $NF }'
  1. Используйте grep, чтобы показать имена всех файлов в директории /etc, содержащих строки со словом root
grep '\<root\>' /etc/* 2>/dev/null
  1. Показать все строки в файлах директории /etc состоящие из 3-х символов. Используйте grep
grep '^...$' /etc/* 2>/dev/null
  1. Используйте grep, чтобы найти все файлы содержащие alex, но не alexander. Подсказка: создайте файл, в первой строке - alex, во второй alexander
cd
echo -e "alex\nalexander" > testfile
grep '\<alex\>' *

Глава 5. Подключение к серверу RHEL.

  1. Из графической консоли перейдите в вирутальный терминал tty6.
sudo chvt 6
  1. После выполнения 1-го задания авторизуйтесь как обычный пользователь и вернитесь в графический интерфейс, используя соответствующую команду.
chvt 1
  1. Используя ssh подключитесь как root к localhost
ssh root@localhost

Глава 6. Управление пользователями и группами.

  1. Настроить для всех новых пользователей: минимальная длина пароля - 6 символов, срок действия 90 дней.
vi /etc/login.defs

PASS_MIN_LEN    6
PASS_MAX_DAYS   90
  1. В домашней директории всех новых пользователей создается пустой файл с именем newfile.
touch /etc/skel/newfile
  1. Создать новых пользователей anna, andrey, linda, lisa.
useradd anna
useradd andrey
useradd linda
useradd lisa
  1. Установить пароль для anna и andrey - password, для linda и lisa - пароль отключить.
passwd andrey
    или
echo password | passwd --stdin anna

passwd linda -l
passwd lisa -l
  1. Создать группы profs, students и назначить anna и andrey членами profs, а linda и lisa - членами группы students.
groupadd profs
groupadd students

usermod -aG profs anna
usermod -aG profs andrey
usermod -aG students linda
usermod -aG students lisa

Главал 7. Права доступа к файлам.

  1. Запретить доступ другим пользователям (others) ко всем новым файлам пользователя Linda. в файл /home/linda/.bashrc добавить значение umask 007
vi /home/linda/.bash_profile
  1. Создать структуру общих каталогов /data/profs, /data/students со следующими разрешениями:
mkdir -p /data/profs /data/students
  • члены групп имеют доступ на чтение и запись в эти директории, другие пользователи не имеют никаких разрешений;
chmod g+w,o-rx /data/profs/
chmod g+w,o-rx /data/students/
  • члены групп могут редактировать все файлы создаваемые в этих директориях;
chmod g+s /data/profs/
chmod g+s /data/students/
  • пользователи могут удалять только файлы , которые им принадлежат;
chmod +t /data/profs/
chmod +t /data/students/
  • члены группы profs имеют доступ на чтение в /data/students
setfacl -m d:g:profs:rx /data/students/
  • пользователь anna должна иметь возможность удалять файлы из директорий /data/profs и /data/students
chown anna /data/profs
chown anna /data/students

Глава 8. Настройка сети.

  1. Назначить серверу статический IP адрес в текущей подсети. необходимо выяснить текущий IP
ip a

если в строке с указанным адресом есть global dynamic, значит IP адрес получен от DHCP сервера. для изменения сетевых настроек можно использовать утилиты nmcli или nmtui. Или вручную внести изменения в конфигурационный файл соответствующего подключения в директории /etc/sysconfig/network-scripts/

nmcli connection add type ethernet ifname ens18 ipv4.addresses 192.168.10.11/24 ipv4.gateway 192.168.10.9 ipv4.dns 8.8.8.8
nmcli connection show - чтобы увидеть название созданного подключения, пусть это будет ethernet-ens18
nmcli connection up ethernet-ens18 - после создания нового подключения, его необходимо активировать
  1. Назначить дополнительный IP адрес 10.0.0.10/24 на тот же сетевой интерфейс. для решения этого задания можно использовать nmcli или nmtui
nmcli connection modify ens18 +ipv4.addresses 10.0.0.10/24
  1. Перезагрузить сервер и убедиться, что настройки сохранились.

Глава 9. Управление процессами.

  1. Запустить команду dd if=/dev/zero of=/dev/null. Перевести запущенный процесс в фоновый режим.
dd if=/dev/zero of=/dev/null
Ctrl+Z
bg
  1. Запустить предыдущую команду 3 раза в фоновом режиме.
dd if=/dev/zero of=/dev/null &
dd if=/dev/zero of=/dev/null &
dd if=/dev/zero of=/dev/null &
  1. Используя jobs получить информацию о запущенных фоновых процессах.
[root@co1 ~]# jobs
[1]   Запущен          dd if=/dev/zero of=/dev/null &
[2]   Запущен          dd if=/dev/zero of=/dev/null &
[3]-  Запущен          dd if=/dev/zero of=/dev/null &
[4]+  Запущен          dd if=/dev/zero of=/dev/null &
  1. Из top изменить приоритет (niceness) одного из ранее запущенных dd на значение -5. Убедиться, что использование CPU этого процесса увеличилось.
top
r
  1. Остановить все запущенные процессы dd из командной строки.
[root@co1 ~]# ps aux | grep '\<dd'
root       69261 51.6  0.0   7352   880 pts/1    R    15:29   0:24 dd if=/dev/zero of=/dev/null
root       69262 50.2  0.0   7352   912 pts/1    R    15:29   0:23 dd if=/dev/zero of=/dev/null
root       69263 49.2  0.0   7352   888 pts/1    R    15:29   0:23 dd if=/dev/zero of=/dev/null
root       69264 49.6  0.0   7352   992 pts/1    R    15:29   0:22 dd if=/dev/zero of=/dev/null
root       69266  0.0  0.0  12136  1100 pts/1    R+   15:29   0:00 grep --color=auto \<dd
[root@co1 ~]# kill 69261 69262 69263 69264

или

killall dd

Глава 10. Управление программным обеспечением.

  1. Убедитесь, что ваша система использует YUM репозиторий для установки основных пакетов ОС.
yum repolist

в выводе должны быть перечислены используемые репозитории

  1. Найдите пакет, содержащий sepolicy, и установите его.
[user@host ~]$ yum provides sepolicy
Last metadata expiration check: 0:01:03 ago on Tue 31 Aug 2021 08:19:16 AM MSK.
policycoreutils-devel-2.9-14.el8.i686 : SELinux policy core policy devel utilities
Repo        : baseos
Matched from:
Filename    : /usr/bin/sepolicy

policycoreutils-devel-2.9-14.el8.x86_64 : SELinux policy core policy devel utilities
Repo        : baseos
Matched from:
Filename    : /usr/bin/sepolicy
 
[user@host ~]$ yum install policycoreutils-devel.x86_64 
  1. Установите предыдущую версию PHP.
[user@host ~]$ yum module list | grep php
php                  7.2 [d]         common [d], devel, minimal               PHP scripting language

php                  7.3             common [d], devel, minimal               PHP scripting language

php                  7.4             common [d], devel, minimal               PHP scripting language
sudo yum module install php:7.3

при установке обязательно указать module - yum MODULE install

  1. Загрузите из репозитория пакет httpd не устанавливая, проверьте есть ли в этом пакете какие-либо скрипты.
yum --downloadonly httpd
rpm -qp --scripts httpd-2.4.37-39.module_el8.4.0+778+c970deab.x86_64.rpm

Глава 11. Работа с systemd.

  1. Убедиться, что сервис httpd стартует автоматически при загрузке системы.
[user@host ~]$ sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/httpd.service.d
           └─override.conf
   Active: inactive (dead)
     Docs: man:httpd.service(8)

Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; - сервис не будет стартовать при загрузке системы

sudo systemctl enable --now httpd
  1. Отредактировать конфигурацию таким образом, чтобы в случае сбоя, через 1 минуту сервис снова работал.
sudo systemctl edit httpd.service

содержимое файла

[httpd]
Restart=always
RestartSec=60s

sudo systemctl daemon-reload
sudo systemctl start httpd

Глава 12. Планирование заданий.

  1. Убедиться, что systemd timer, который очищает временные файлы, активен.
[user@host ~]$ systemctl status systemd-tmpfiles-clean.timer 
● systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories
   Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.timer; static; vendor preset: disabled)
   Active: active (waiting) since Sun 2021-08-22 20:12:26 MSK; 1 weeks 4 days ago
  Trigger: Fri 2021-09-03 20:36:07 MSK; 13h left
     Docs: man:tmpfiles.d(5)
           man:systemd-tmpfiles(8)

Aug 22 20:12:26 co1.rh systemd[1]: Started Daily Cleanup of Temporary Directories.
  1. Запустить задание cron, которое выполнит команду touch /tmp/cronfile через 5 минут.
crottab -e

установить значение минут +5 к текущему времени

38 * * * * touch /tmp/cronfile
  1. Используя at запланировать задание отключения компьютера сегодня в удобное время.
[user@host ~]$ systemctl status atd.service 
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-08-22 20:12:36 MSK; 1 weeks 4 days ago
 Main PID: 1143 (atd)
    Tasks: 1 (limit: 11258)
   Memory: 424.0K
   CGroup: /system.slice/atd.service
           └─1143 /usr/sbin/atd -f

Aug 22 20:12:36 co1.rh systemd[1]: Started Job spooling tools.

[user@host ~]$ sudo at 21:00
[sudo] password for da2001: 
warning: commands will be executed using /bin/sh
at> poweroff
at> <EOT>

для выхода из оболочки at нажать Ctrl+D
отменим задание

[user@host ~]$ sudo atq
3  Fri Sep  3 21:00:00 2021 a root
[user@host ~]$ sudo atrm 3

Глава 13. Настройка хранения логов.

  1. Убедитесь, что логи systemd сохраняются постоянно (persistently). убедимся, что служба запущена
[user@host ~]$ systemctl status systemd-journald.service 
● systemd-journald.service - Journal Service
   Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static; vendor preset: disabled)
   Active: active (running) since Sun 2021-08-22 20:12:19 MSK; 1 weeks 4 days ago
     Docs: man:systemd-journald.service(8)
           man:journald.conf(5)
 Main PID: 586 (systemd-journal)
   Status: "Processing requests..."
    Tasks: 1 (limit: 11258)
   Memory: 2.5M
   CGroup: /system.slice/systemd-journald.service
           └─586 /usr/lib/systemd/systemd-journald

Aug 22 20:12:19 co1.rh systemd-journald[586]: Journal started
Aug 22 20:12:19 co1.rh systemd-journald[586]: Runtime journal (/run/log/journal/75cfadef25be494698e02d31e421d7bf) is 8.0M, max 90.8M, 82.8M free.

проверим настройки

[user@host ~]$ cat /etc/systemd/journald.conf 
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See journald.conf(5) for details.

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes

 ***

в данном случае нас интересует только строка Storage, строки ниже не показаны. Значение auto говорит о том, что логи будут сохранятся в папку /var/log/journal, при условии, что папка существует. Убирать символ # в начале не нужно, т.к. значение auto используется по-умолчанию.

[user@host ~]$ sudo mkdir /var/log/journal
[user@host ~]$ sudo systemctl restart systemd-journald.service
[user@host ~]$ sudo systemctl status systemd-journald
● systemd-journald.service - Journal Service
   Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static; vendor preset: disabled)
   Active: active (running) since Fri 2021-09-03 09:20:40 MSK; 21s ago
     Docs: man:systemd-journald.service(8)
           man:journald.conf(5)
 Main PID: 156983 (systemd-journal)
   Status: "Processing requests..."
    Tasks: 1 (limit: 11258)
   Memory: 1.2M
   CGroup: /system.slice/systemd-journald.service
           └─156983 /usr/lib/systemd/systemd-journald

Sep 03 09:20:40 co1.rh systemd-journald[156983]: Journal started
Sep 03 09:20:40 co1.rh systemd-journald[156983]: System journal (/var/log/journal/75cfadef25be494698e02d31e421d7bf) is 16.0M, max 999.0M, 982.9M free.

теперь видно, что логи сохраняются в /var/log/journal/75cfadef25be494698e02d31e421d7bf

  1. Создать запись в rsyslog, при которой сохраняются все сообщения категории error и выше (severity - error) в /var/log/error
sudo vi /etc/rsyslog.d/error.conf
*.error           /var/log/error
sudo systemctl restart rsyslog.service
  1. Убедитесь, что /var/log/error архивируется ежемесячно, при этом 12 последних сообщений должны сохраниться перед архивацией. посмотрим настройки по-умолчанию для примера
[user@host ~]$ cat /etc/logrotate.conf 
# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# system-specific logs may be also be configured here.

настройку для отдельного сервиса или категории необходимо создать в новом файле в папке /etc/logrotate.d
посмотрим пример какого-нибудь файла из этой папки

[user@host ~]$ cat /etc/logrotate.d/samba 
/var/log/samba/log.* {
    compress
    dateext
    maxage 365
    rotate 99
    notifempty
    olddir /var/log/samba/old
    missingok
    copytruncate
}

на основе настроек в /etc/logrotate.conf и /etc/logrotate.d/samba создадим новый конфиг для архивации логов error

sudo vi /etc/logrotate.d/error
/var/log/error {
        montly
        rotate 12
        create
}

Глава 14. Управление хранилищем.

Для выполнения этой лабораторной работы необходимо создать дополнительный жёсткий диск в вашей виртуальной машине размером 10 ГБ.

  1. Создать основной раздел размером 1ГиБ. Отформатировать его в Ext4 и задать постоянную точку монтирования в /mount/files, используя его UUID.
sudo fdisk /dev/sdb
o - создать mbr (DOS) таблицу разделов
n - создать новый раздел
p - основной (primary) раздел

номер раздела и первый сектор оставить как предлагает fdisk

+1G - задать размер 1 Гб
w - записать изменения на диск и выйти
sudo mkfs.ext4 /dev/sdb1
sudo mkdir -p /mount/files
sudo blkid - покажет UUID всех разделов, скопировать UUID нужного
sudo vi /etc/fstab

добавить строку

UUID=3ffc186a-14c8-4fdf-807b-b1eba7b32346       /mount/files    ext4    defaults        0 0
sudo mount -a

если ошибок нет, значит монтирование прошло успешно

  1. Создать расширенный раздел, включающий все оставшееся дисковое пространство. В этом разделе создать раздел XFS размером 5OO МиБ с постоянной точкой монтирования в /mount/xfs, используя метку myxfs.
sudo fdisk /dev/sdb
n - создать новый раздел
e - создать расширенный (extended) раздел

номер раздела и первый и последний сектор оставить как предлагает fdisk

n - создать новый раздел

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

+500M
w - записать изменения на диск и выйти

посмотреть созданные разделы

cat /proc/partitions

создадим ФС и метку раздела

sudo mkfs.xfs -L myxfs /dev/sdb5

посмотреть заданную метку

[user@host ~]$ ls /dev/disk/by-
by-id/       by-label/    by-partuuid/ by-path/     by-uuid/     
[user@host ~]$ ls /dev/disk/by-label/
myxfs

добавим монтирование по метке

sudo mkdir -p /mount/xfs
sudo vi /etc/fstab

добавим строку

LABEL=myxfs     /mount/xfs      xfs     defaults        0 0

проверим правильность монтирования

[user@host ~]$ sudo mount -a
[user@host ~]$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   32G  0 disk 
├─sda1        8:1    0  500M  0 part /boot
├─sda2        8:2    0 1000M  0 part [SWAP]
└─sda3        8:3    0  9.8G  0 part 
  └─cl-root 253:0    0  9.8G  0 lvm  /
sdb           8:16   0   10G  0 disk 
├─sdb1        8:17   0    1G  0 part /mount/files
├─sdb2        8:18   0    1K  0 part 
└─sdb5        8:21   0  500M  0 part /mount/xfs
sr0          11:0    1 1024M  0 rom  
  1. Создать раздел подкачки 5OO МиБ и активировать его. После перезагрузки он должен быть доступен.
sudo umount /dev/sdb1 /dev/sdb5
sudo fdisk /dev/sdb
n - создать новый раздел

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

+500M
t - изменить тип раздела
6 - указать тип какого раздела необходимо изменить
L - показать все возможные варианты
82 - необходим тип 82 Linux swap / Solaris
w - записать изменения на диск и выйти

формат раздела как SWAP

[user@host ~]$ sudo mkswap /dev/sdb6
Setting up swapspace version 1, size = 500 MiB (524283904 bytes)
no label, UUID=bdb56026-b883-41fc-a422-51492af8cbb5

укажем точку монтирования

sudo vi /etcfstab

добавим

UUID=bdb56026-b883-41fc-a422-51492af8cbb5       swap    swap    defaults        0 0

активируем новый раздел подкачки

[user@host ~]$ sudo mount -a
[user@host ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:           1817         539         753           2         524        1123
Swap:           999           0         999
[user@host ~]$ sudo swapon /dev/sdb6
[user@host ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:           1817         539         752           2         524        1123
Swap:          1499           0        1499

Глава 15. Управление расширенным хранилищем.

Для выполнения этой лабораторной работы необходимо создать дополнительный жёсткий диск в вашей виртуальной машине размером 10 ГБ.

  1. Создать LVM том с именем lvdb размером 1 Гб, Также создать VG и PV, необходимые для этого LV. для создания нового LVM тома достаточно использовать существующие диски, необходимо лишь создать дополнительный раздел соответствующего объема разметка диска
sudo gdisk /dev/sdb
n - создать новый раздел
номер и начало раздела оставляем как предлагает программа
Last sector - указываем +1GiB
Тип раздела - 8e00
w - записать изменения на диск
[user@host ~]$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   32G  0 disk 
├─sda1        8:1    0  500M  0 part /boot
├─sda2        8:2    0 1000M  0 part [SWAP]
└─sda3        8:3    0  9.8G  0 part 
  └─cl-root 253:0    0  9.8G  0 lvm  /
sdb           8:16   0   10G  0 disk 
└─sdb1        8:17   0    1G  0 part 
sdc           8:32   0   10G  0 disk 
sr0          11:0    1 1024M  0 rom  

создание LVM

[user@host ~]$ sudo pvcreate /dev/sdb1 
  Physical volume "/dev/sdb1" successfully created.
[user@host ~]$ sudo vgcreate vgdb /dev/sdb1
  Volume group "vgdb" successfully created
[user@host ~]$ sudo lvcreate -n lvdb -l 100%FREE vgdb
  Logical volume "lvdb" created.
[user@host ~]$ lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   32G  0 disk 
├─sda1          8:1    0  500M  0 part /boot
├─sda2          8:2    0 1000M  0 part [SWAP]
└─sda3          8:3    0  9.8G  0 part 
  └─cl-root   253:0    0  9.8G  0 lvm  /
sdb             8:16   0   10G  0 disk 
└─sdb1          8:17   0    1G  0 part 
  └─vgdb-lvdb 253:1    0 1020M  0 lvm  
sdc             8:32   0   10G  0 disk 
sr0            11:0    1 1024M  0 rom  
  1. Отформатировать созданный LV в XFS и примонтировать на постоянной основе в папку /mount/lvdb
[user@host ~]$ sudo mkfs.xfs /dev/mapper/vgdb-lvdb
meta-data=/dev/mapper/vgdb-lvdb  isize=512    agcount=4, agsize=65280 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=261120, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1566, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
Discarding blocks...Done.
[user@host ~]$ sudo mkdir /mount/lvdb
[user@host ~]$ sudo vi /etc/fstab

добавим строку

/dev/mapper/vgdb-lvdb   /mount/lvdb     xfs defaults    0 0

проверим монтирование

[user@host ~]$ sudo mount -a
  1. Используя соответствующее решение, создать том с тонким выделением (thin provisioned volume) объёмом 10 Тб. для выполнения этого задания необходимо создать том VDO, т.к. именно он соответствует требованию тонкого выделения. VDO работает с целыми устройствами, поэтому для создания тома необходим отдельный диск. для использования VDO, размер блочного устройства должен быть > 4 Гб.
sudo yum install vdo kmod-kvdo
[user@host ~]$ sudo vdo create --name vdo1 --device /dev/sdc --vdoLogicalSize 10T
Creating VDO vdo1
      The VDO volume can address 6 GB in 3 data slabs, each 2 GB.
      It can grow to address at most 16 TB of physical storage in 8192 slabs.
      If a larger maximum size might be needed, use bigger slabs.
Starting VDO vdo1
Starting compression on VDO vdo1
VDO instance 0 volume is ready at /dev/mapper/vdo1

текущее задание не предполагает монтирование тома VDO, но необъодимо иметь ввиду, для монтирования подобного устройства, в файле /etc/fstab необходимо указать опции монтирования x-systemd.requires=vdo.service увидеть созданный том

vdostats --human-readable
  1. Создать зашифрованный том LUKS объемом 1 ГБ с именем secret. Убедитесь, что том монтируется постоянно, но не автоматически в /mount/secret.
    Создать соответствующий раздел на диске
[user@host ~]$ sudo parted /dev/sdb      
(parted) mklabel gpt
(parted) mkpart                                                           
Partition name?  []? luks1                                                
File system type?  [ext2]?                                                
Start? 1                                                                  
End? 1GiB                                                                 
(parted) p                                                                
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name   Flags
 1      1049kB  1074MB  1073MB  ext2         luks1

(parted) q                                                                
Information: You may need to update /etc/fstab.

Создать зашифрованный раздел

[user@host ~]$ sudo cryptsetup luksFormat /dev/sdb1

подтвердить заглавными YES
задать пароль доступа, при этом простой пароль система может не принять, в этом случае будет выведено сообщение

Открыть раздел и задать ему имя, по которому раздел будет доступе в /dev/mapper

[user@host ~]$ sudo cryptsetup luksOpen /dev/sdb1 secret
[user@host ~]$ ls -l /dev/mapper/ | grep secret
lrwxrwxrwx. 1 root root       7 Sep 10 14:41 secret -> ../dm-3

Отформатировать раздел форматировать необходимо в разблокированном состоянии

[user@host ~]$ sudo mkfs.xfs /dev/mapper/secret 
meta-data=/dev/mapper/secret     isize=512    agcount=4, agsize=64448 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=257792, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1566, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Монтирование зашифрованного раздела

[user@host ~]$ sudo mkdir /mount/secret
[user@host ~]$ sudo vi /etc/fstab

добавить строку

/dev/mapper/secret      /mount/secret     xfs     defaults    0 0

добавление записи в fstab недостаточно, т.к. для монтирования устройство должно быть доступно необходимо добавить конфигурационный файл в /etc/crypttab

[user@host ~]$ sudo vi /etc/crypttab

в файле необходимо указать:

  • название устройства, в нашем случае secret
  • блочное устройство, на котором размещён зашифрованный раздел - /dev/sdb2
  • параметр - нужно ли вводить пароль автоматически, none - не вводить пароль автоматически, требовать ввода от пользователя синтаксис конфиг. файла можно узнать в справке man crypttab
secret  /dev/sdb1   none

Для вступления изменений в силу, необходимо перезагрузить хост

[user@host ~]$ sudo reboot

Глава 16. Управление ядром.

  1. Обновить версию ядра.
[user@host ~]$ sudo yum update kernel
  1. Включить маршрутизацию IPv4 пакетов посмотрим текущую настройку
[user@host ~]$ sysctl -a | grep forward

нас интересует строка net.ipv4.ip_forward = 0
чтобы маршрутизация IPv4 пакетов осуществлялась после перезагрузки, необходимо добавить настройку в /etc/sysctl.conf

[user@host ~]$ vi /etc/sysctl.conf

добавить строку

net.ipv4.ip_forward = 1

изменения вступят в силу после перезагрузки.
для включения маршрутизации немедленно до перезагрузки

[user@host ~]$ echo 1 > /proc/sys/net/ipv4/ip_forward

Глава 17. Управление загрузкой ОС.

  1. Назначить режимом загрузки по-умолчанию - multi user target.
[da2001@co1 ~]$ sudo systemctl get-default 
[sudo] password for da2001: 
graphical.target
[da2001@co1 ~]$ sudo systemctl set-default multi-user.target 
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/multi-user.target.
  1. Изменить конфигурацию загрузки - удалить опции, скрывающие процесс загрузки ОС.
[da2001@co1 ~]$ sudo vi /etc/default/grub

в строке

GRUB_CMDLINE_LINUX="crashkernel=auto resume=UUID=212f6847-0853-46b0-9654-8b06b248f956 rd.lvm.lv=cl/root rhgb quiet"

необходимо удалить rhgb quiet
далее, нужно обновить конфигурацию grub
если система установлена на раздел mbr (bios), выполнить sudo grub2-mkconfig -o /boot/grub2/grub.cfg
если система установлена на раздел gpt (uefi), выполнить sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cgf
узнать на какой раздел установлена система, можно посмотрев на метку диска в parted, gdisk или с помощью вывода

[da2001@co1 ~]$ mount | grep '^/'

усли в выводе будут строки, содержащие efi значит система установлена на gpt раздел


Глава 18. Устранение проблем.

  1. Сброс пароля root.
    на раннем этапе загрузки - при появлении меню grub, нажать e
    в строке linux ($root)/... в конце удалить rhgb quiet и добавить rd.break. Для загрузки нажать Ctrl+x
  • Корневая ФС хоста смонтирована в папку /sysroot в режиме только чтение ro, необходимо перемонтировать её на запись
switch_root:/# mount -o rw,remount /sysroot
  • Далее необходимо изменить корневую ФС на ФС хоста
switch_root:/# chroot /sysroot
  • Изменить пароль root
    в интерактивном режиме - необходимо ввести новый пароль 2 раза (если основной язык хоста был русский, вместо предложения ввести новый пароль отобразятся "квадратики"
sh-4.4# passwd

или сразу записать новый пароль в конфиг. файл

sh-4.4# echo new_password | passwd --stdin root
  • Обновить контекст selinux
    в текущем режиме selinux не загружен, поэтому отслеживания изменения файлов не происходит. Если после внесения изменений в файл passwd попытаться загрузить систему, никто не сможет авторизоваться, т.к. файл был изменен, поэтому selinux его заблокирует. Необходимо создать файл, который инициирует обновление контекста selinux для всех файлов
sh-4.4# touch /.autorelabel
  • Дважды нажать Ctrl+d для перезагрузки