303 lines
12 KiB
Markdown
303 lines
12 KiB
Markdown
|
#### Решения лабораторных работ по видеокурсу 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 '\<root\>' /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 '\<alex\>' *
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
**Глава 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 '\<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
|
|||
|
```
|
|||
|
или
|
|||
|
```bash
|
|||
|
killall dd
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|
|||
|
**Глава 10. Управление программным обеспечением.**
|
|||
|
|
|||
|
1. Убедитесь, что ваша система использует YUM репозиторий для установки основных пакетов ОС.
|
|||
|
```bash
|
|||
|
yum repolist
|
|||
|
```
|
|||
|
*в выводе должны быть перечислены используемые репозитории*
|
|||
|
|
|||
|
2. Найдите пакет, содержащий sepolicy, и установите его.
|
|||
|
```bash
|
|||
|
[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
|
|||
|
```
|
|||
|
|
|||
|
3. Установите предыдущую версию PHP.
|
|||
|
```bash
|
|||
|
[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
|
|||
|
```
|
|||
|
```bash
|
|||
|
sudo yum module install php:7.3
|
|||
|
```
|
|||
|
***при установке обязательно указать `module` - `yum MODULE install`***
|
|||
|
|
|||
|
4. Загрузите из репозитория пакет httpd не устанавливая, проверьте есть ли в этом пакете какие-либо скрипты.
|
|||
|
```bash
|
|||
|
yum --downloadonly httpd
|
|||
|
rpm -qp --scripts httpd-2.4.37-39.module_el8.4.0+778+c970deab.x86_64.rpm
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
|