commit da58cfe5ac52ff532dcc61a32a893f153c9615cd Author: artemdolgiy Date: Wed Sep 1 09:11:00 2021 +0300 init diff --git a/labs.md b/labs.md new file mode 100644 index 0000000..2d532c3 --- /dev/null +++ b/labs.md @@ -0,0 +1,111 @@ +#### Лабораторные работы по видеокурсу Sander Van Vugt + +*** + +**Глава 3. Базовые инструменты для работы с файлами.** + +1. Создать структуру каталогов `/tmp/files/pictures`, `/tmp/files/photos`, `/tmp/files/videos` + +2. Из папки `/etc` скопировать все файлы имена которых начинаются с `a`, `b` или `c` (лат.) в каталог `/tmp/files` + +3. Из `/tmp/files` переместить все файлы имена которых начинаются на `a` или `b` в `/tmp/files/photos`, а файлы, имена которых начинаются на `c` переместить в `/tmp/files/videos` + +4. Найти в папке `/etc` все файлы, размер которых меньше 1000 байт и скопировать их в `/tmp/files/pictures` + +5. В папке `/tmp/files` создать символьную ссылку на `/var` + +6. В папке `/tmp/files` создать сжатый архив директории `/home` + +7. Распаковать архив с относительными именами файлов в `/tmp/archive/` + +*** + +**Глава 4. Работа с текстовыми файлами.** + +1. Используйте `head` и `tail` для отображения пятой строки в файле `/etc/passwd` + +2. Используйте `sed` для отображения пятой строки в файле `/etc/passwd` + +3. Используйте `awk` в конвейере, чтобы отфильтровать последний столбец в выводе `ps aux` + +4. Используйте `grep` для отображения всех файлов в директории `/etc`, содержащих строки со словом `root` + +5. Показать все строки в файлах директории `/etc` состоящие из 3-х символов. Используйте `grep` + +6. Используйте `grep`, чтобы найти все файлы содержащие `alex`, но не `alexander`. Подсказка: создайте файл, в первой строке - `alex`, во второй `alexander` + +*** + +**Глава 5. Подключение к серверу RHEL.** + +1. Из графической консоли перейдите в вирутальный терминал tty6. + +2. После выполнения 1-го задания авторизуйтесь как обычный пользователь и вернитесь в графический интерфейс, используя соответствующую команду. + +3. Используя `ssh` подключитесь как `root` к `localhost` + +*** + +**Глава 6. Управление пользователями и группами.** + +1. Настроить для всех новых пользователей: минимальная длина пароля - 6 символов, срок действия 90 дней. + +2. В домашней директории всех новых пользователей создается пустой файл с именем `newfile`. + +3. Создать новых пользователей `anna`, `andrey`, `linda`, `lisa`. + +4. Установить пароль для `anna` и `andrey` - `password`, для `linda` и `lisa` - пароль отключить. + +5. Создать группы `profs`, `students` и назначить `anna` и `andrey` членами `profs`, а `linda` и `lisa` - членами группы `students`. + +*** + +**Главал 7. Права доступа к файлам.** + +1. Запретить доступ другим пользователям (`others`) ко всем новым файлам пользователя Linda. + +2. Создать структуру общих каталогов `/data/profs`, `/data/students` со следующими разрешениями: + * члены групп имеют доступ на чтение и запись в эти директории, другие пользователи не имеют никаких разрешений; + * члены групп могут редактировать все файлы создаваемые в этих директориях; + * пользователи могут удалять только файлы , которые им принадлежат; + * члены группы `profs` имеют доступ на чтение в `/data/students` + * пользователь `anna` должна иметь возможность удалять файлы из директорий `/data/profs` и `/data/students` + +*** + +**Глава 8. Настройка сети.** + +1. Назначить серверу статический IP адрес в текущей подсети. + +2. Назначить дополнительный IP адрес 10.0.0.10/24 на тот же сетевой интерфейс. + +3. Перезагрузить сервер и убедиться, что настройки сохранились. + +*** + +**Глава 9. Управление процессами.** + +1. Запустить команду `dd if=/dev/zero of=/dev/null`. Перевести запущенный процесс в фоновый режим. + +2. Запустить предыдущую команду 3 раза в фоновом режиме. + +3. Используя `jobs` получить информацию о запущенных фоновых процессах. + +4. Из `top` изменить приоритет (`niceness`) одного из ранее запущенных `dd` на значение `-5`. Убедиться, что использование CPU этого процесса увеличилось. + +5. Остановить все запущенные процессы `dd` из командной строки. + +*** + +**Глава 10. Управление программным обеспечением.** + +1. Убедитесь, что ваша система использует YUM репозиторий для установки основных пакетов ОС. + +2. Найдите пакет, содержащий sepolicy, и установите его. + +3. Установите предыдущую версию PHP. + +4. Загрузите из репозитория пакет httpd не устанавливая, проверьте есть ли в этом пакете какие-либо скрипты. + +*** + diff --git a/labs_solution.md b/labs_solution.md new file mode 100644 index 0000000..4c64202 --- /dev/null +++ b/labs_solution.md @@ -0,0 +1,302 @@ +#### Решения лабораторных работ по видеокурсу Sander Van Vugt + +*** + +**Глава 3. Базовые инструменты для работы с файлами.** + +1. Создать структуру каталогов `/tmp/files/pictures`, `/tmp/files/photos`, `/tmp/files/videos` +```bash +mkdir -p /tmp/files/pictures /tmp/files/photos /tmp/files/videos +``` + +2. Из папки `/etc` скопировать все файлы имена которых начинаются с `a`, `b` или `c` (лат.) в каталог `/tmp/files` +```bash +cp /etc/[a-c]* /tmp/files +``` + +3. Из `/tmp/files` переместить все файлы имена которых начинаются на `a` или `b` в `/tmp/files/photos`, а файлы, имена которых начинаются на `c` переместить в `/tmp/files/videos` +```bash +mv /tmp/files/[ab]* /tmp/files/photos +mv /tmp/files/c* /tmp/files/videos +``` + +4. Найти в папке `/etc` все файлы, размер которых меньше 1000 байт и скопировать их в `/tmp/files/pictures` +```bash +find /etc -type f -size -1000c -exec cp {} /tmp/files/pictures \; +``` + +5. В папке `/tmp/files` создать символьную ссылку на `/var` +```bash +cd /tmp/files +ln -s /var . +``` + +6. В папке `/tmp/files` создать сжатый архив директории `/home` +```bash +tar -zcvf home.tar.gz /home +``` + +7. Распаковать архив с относительными именами файлов в `/tmp/archive/` +```bash +mkdir /tmp/archive +tar -xvf home.tar.gz -C /tmp/archive +``` + +*** + +**Глава 4. Работа с текстовыми файлами.** + +1. Используйте `head` и `tail` для отображения пятой строки в файле `/etc/passwd` +```bash +head -n 5 /etc/passwd | tail -n 1 +``` + +2. Используйте `sed` для отображения пятой строки в файле `/etc/passwd` +```bash +sed -n 5p /etc/passwd +``` + +3. Используйте `awk` в конвейере, чтобы отфильтровать последний столбец в выводе `ps aux` +```bash +ps aux | awk '{ print $NF }' +``` + +4. Используйте `grep`, чтобы показать имена всех файлов в директории `/etc`, содержащих строки со словом `root` +```bash +grep '\' /etc/* 2>/dev/null +``` + +5. Показать все строки в файлах директории `/etc` состоящие из 3-х символов. Используйте `grep` +```bash +grep '^...$' /etc/* 2>/dev/null +``` + +6. Используйте `grep`, чтобы найти все файлы содержащие `alex`, но не `alexander`. Подсказка: создайте файл, в первой строке - `alex`, во второй `alexander` +```bash +cd +echo -e "alex\nalexander" > testfile +grep '\' * +``` + +*** + +**Глава 5. Подключение к серверу RHEL.** + +1. Из графической консоли перейдите в вирутальный терминал tty6. +```bash +sudo chvt 6 +``` + +2. После выполнения 1-го задания авторизуйтесь как обычный пользователь и вернитесь в графический интерфейс, используя соответствующую команду. +```bash +chvt 1 +``` + +3. Используя `ssh` подключитесь как `root` к `localhost` +```bash +ssh root@localhost +``` + +*** + +**Глава 6. Управление пользователями и группами.** + +1. Настроить для всех новых пользователей: минимальная длина пароля - 6 символов, срок действия 90 дней. +```bash +vi /etc/login.defs + +PASS_MIN_LEN 6 +PASS_MAX_DAYS 90 +``` + +2. В домашней директории всех новых пользователей создается пустой файл с именем `newfile`. +```bash +touch /etc/skel/newfile +``` + +3. Создать новых пользователей `anna`, `andrey`, `linda`, `lisa`. +```bash +useradd anna +useradd andrey +useradd linda +useradd lisa +``` + +4. Установить пароль для `anna` и `andrey` - `password`, для `linda` и `lisa` - пароль отключить. +```bash +passwd andrey + или +echo password | passwd --stdin anna + +passwd linda -l +passwd lisa -l +``` + +5. Создать группы `profs`, `students` и назначить `anna` и `andrey` членами `profs`, а `linda` и `lisa` - членами группы `students`. +```bash +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` +```bash +vi /home/linda/.bash_profile +``` + +2. Создать структуру общих каталогов `/data/profs`, `/data/students` со следующими разрешениями: +```bash +mkdir -p /data/profs /data/students +``` + * члены групп имеют доступ на чтение и запись в эти директории, другие пользователи не имеют никаких разрешений; + ```bash + chmod g+w,o-rx /data/profs/ + chmod g+w,o-rx /data/students/ + ``` + * члены групп могут редактировать все файлы создаваемые в этих директориях; + ```bash + chmod g+s /data/profs/ + chmod g+s /data/students/ + ``` + * пользователи могут удалять только файлы , которые им принадлежат; + ```bash + chmod +t /data/profs/ + chmod +t /data/students/ + ``` + * члены группы `profs` имеют доступ на чтение в `/data/students` + ```bash + setfacl -m d:g:profs:rx /data/students/ + ``` + * пользователь `anna` должна иметь возможность удалять файлы из директорий `/data/profs` и `/data/students` + ```bash + chown anna /data/profs + chown anna /data/students + ``` + +*** + +**Глава 8. Настройка сети.** + +1. Назначить серверу статический IP адрес в текущей подсети. +*необходимо выяснить текущий IP* +```bash +ip a +``` +если в строке с указанным адресом есть `global dynamic`, значит IP адрес получен от DHCP сервера. +*для изменения сетевых настроек можно использовать утилиты `nmcli` или `nmtui`. Или вручную внести изменения в конфигурационный файл соответствующего подключения в директории `/etc/sysconfig/network-scripts/`* +```bash +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 - после создания нового подключения, его необходимо активировать +``` + +2. Назначить дополнительный IP адрес 10.0.0.10/24 на тот же сетевой интерфейс. +*для решения этого задания можно использовать `nmcli` или `nmtui`* +```bash +nmcli connection modify ens18 +ipv4.addresses 10.0.0.10/24 +``` + +3. Перезагрузить сервер и убедиться, что настройки сохранились. + +*** + +**Глава 9. Управление процессами.** + +1. Запустить команду `dd if=/dev/zero of=/dev/null`. Перевести запущенный процесс в фоновый режим. +```bash +dd if=/dev/zero of=/dev/null +Ctrl+Z +bg +``` + +2. Запустить предыдущую команду 3 раза в фоновом режиме. +```bash +dd if=/dev/zero of=/dev/null & +dd if=/dev/zero of=/dev/null & +dd if=/dev/zero of=/dev/null & +``` + +3. Используя `jobs` получить информацию о запущенных фоновых процессах. +```bash +[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 & +``` + +4. Из `top` изменить приоритет (`niceness`) одного из ранее запущенных `dd` на значение `-5`. Убедиться, что использование CPU этого процесса увеличилось. +```bash +top +r +``` + +5. Остановить все запущенные процессы `dd` из командной строки. +```bash +[root@co1 ~]# ps aux | grep '\