You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

200 lines
9.5 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Решения
### 1.
Создайте пользователя mike. При создании задайте в качестве оболочки `/bin/bash`. Создайте домашнюю директорию вручную для mike, в `/home/mike`. Смените владельца командой `chown mike:mike /home/mike`.
```
$ sudo useradd mike --shell /bin/bash
$ sudo su - mike
su: warning: cannot change directory to /home/mike: No such file or directory
```
Зайти под пользователем mike теперь можно. Без домашней директории не будет сохраняться история команд, а также нельзя настроить
оболочку. Например, активировать пользовательские псевдонимы при входе.
```
$ sudo mkdir /home/mike
$ sudo su - mike
$ touch ~/1
touch: cannot touch '/home/mike/1': Permission denied
$ sudo chown mike:mike /home/mike
$ touch ~/1
```
В этом случае домашняя папка пользователя не будет содержать скрытые конфигурационные файлы, которые копируются из директории
`/etc/skel/` (переменная SKEL в `/etc/default/useradd`) при вызове useradd с флагом `--create-home` .
### 2.
Деактивируйте аккаунт stud, поменяв оболочку на `/sbin/nologin`. В соседнем окне, проверьте, что залогиниться вы не можете. Попробуйте варианты через `sudo su -`, `su -`, по ssh. Верните оболочку в прежнее значение.
```
$ sudo usermod --shell /sbin/nologin stud
$ ssh s15
Linux stud15 5.10.0-16-amd64 #1 SMP Debian 5.10.127-1 (2022-06-30) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Sep 8 22:23:46 2022 from 46.0.144.27
This account is currently not available.
Connection to 193.32.63.185 closed.
$ su --login stud
This account is currently not available.
stud@stud15:~$ sudo su --login stud
This account is currently not available.
```
### 3.
Смените пароль пользователя `mike` командой `passwd` из под суперпользователя. Проверьте, что вы можете зайти под этим пользователем с заданным паролем.
```
$ sudo passwd mike
551e-2022
$ su - mike
Password: 551e-2022
mike@stud15:~$
```
### 4.
Измените в `/etc/default/useradd` оболочку по умолчанию на `/bin/bash`.
```
$ cat /etc/default/useradd | grep ^SHELL
SHELL=/bin/bash
```
### 5.
Измените в `/etc/login.defs` `UID_MIN` на `10000`, `UMASK` на `077`.
```
$ cat /etc/login.defs | grep '^\(UID_MIN\|UMASK\)'
UMASK 077
UID_MIN 10000
```
### 6.
Создайте пользователя vera с заданным паролем и укажите, что нужно создать домашнюю директорию пользователя. При создании используйте заранее созданный пароль в зашифрованном виде. Для шифрования пароля используйте команду `openssl passwd -5 -stdin`. После создания проверьте номер идентификатора пользователя и путь к оболочке в файле `/etc/passwd`, хэш-пароль в `/etc/shadow`, атрибуты доступа к домашней директории в `/home`.
```
$ echo 'Vera-@)$-2022' | openssl passwd -5 -stdin
$5$zW1zNyUcDCT86mmZ$khDXsCyzBJ/5WeZN9AaARXBdlQaMnVZUzj/WXRDffo5
$ sudo useradd vera -p '$5$zW1zNyUcDCT86mmZ$khDXsCyzBJ/5WeZN9AaARXBdlQaMnVZUzj/WXRDffo5' --create-home
$ ls -l /home/
total 12
drwxr-xr-x 2 mike mike 4096 сен 8 22:00 mike
drwxr-xr-x 11 stud stud 4096 сен 8 23:33 stud
drwx------ 2 vera vera 4096 сен 8 23:47 vera
$ ls /home/vera
ls: cannot open directory '/home/vera': Permission denied
$ grep vera /etc/passwd
vera:x:10000:10000::/home/vera:/bin/bash
$ grep mike /etc/passwd
mike:x:1001:1001::/home/mike:/bin/bash
$ sudo grep vera /etc/shadow
vera:$5$zW1zNyUcDCT86mmZ$khDXsCyzBJ/5WeZN9AaARXBdlQaMnVZUzj/WXRDffo5:19243:0:99999:7:::
$ su - vera
Password: Vera-@)$-2022
vera@stud15:~$
$ ls -la
total 20
drwx------ 2 vera vera 4096 сен 8 23:47 .
drwxr-xr-x 5 root root 4096 сен 8 23:47 ..
-rw-r--r-- 1 vera vera 220 мар 27 22:40 .bash_logout
-rw-r--r-- 1 vera vera 3526 мар 27 22:40 .bashrc
-rw-r--r-- 1 vera vera 807 мар 27 22:40 .profile
```
Мы видим, что никто кроме пользователя vera не имеет доступа к домашней директории. Идентификатор пользователя vera после создания предыдущего пользователя mike увеличился сразу до значения 10000, вместо 1002. Пароль в зашифрованном виде был сохранён в файл `/etc/shadow`. В домашней папке пользователя vera появилось три файла из `/etc/skel`.
### 7.
Поменяйте оболочку пользователя vera на `/bin/sh`.
```
$ sudo usermod --shell /bin/sh vera
```
### 8.
Сконфигурируйте пользователя `mike` так, чтобы он мог перейти в суперпользователя, зная свой пароль. Справочная документация для этой задачи `man sudoers` и полезная команда `usermod`.
```
$ sudo usermod -G sudo mike
```
### 9.
Смените пароль пользователя `mike` командой `chpasswd`.
```
$ echo 'mike:Mike-@)$-2022' | sudo chpasswd
$ su - mike
Password:
mike@stud15:~$
```
Обратите внимание на одинарные кавычки. При использовании двойных кавычек bash интерпретирует специальные символы, такие как $, что привело бы к установке неверного пароля.
### 10.
Создайте и удалите пользователя `dummy`.
```
$ useradd dummy
$ userdel dummy
$ grep dummy /etc/passwd
```
### 11.
Создайте группу `docker` и добавьте в неё пользователей `mike` и `vera`.
```
$ grep mike /etc/group
sudo:x:27:stud,mike
mike:x:10000:
$ sudo groupadd docker
$ sudo usermod -a -G docker mike
$ sudo gpasswd -a vera docker
$ grep -E 'mike|vera' /etc/group
sudo:x:27:stud,mike
mike:x:10000:
vera:x:10001:
docker:x:10002:vera,mike
```
### 12.
Удалите пользователя `mike` из группы `docker`.
Первый вариант использовать `gpasswd`.
```
$ gpasswd -d mike docker
```
Второй вариант в `usermod -G` указать только те группы, в который пользователь должен находиться.
```
$ sudo usermod -G sudo mike
```
Третий вариант удалить пользователя на строке группы из списка после последнего `:` в файле `/etc/group`.
### 13.
Заблокируйте аккаунт пользователя `mike` командой `usermod` или модифицировав файл `/etc/shadow`.
```
$ sudo usermod -L mike
$ sudo grep mike /etc/shadow
mike:!$y$j9T$gqE0awjHPMO9IqeWOEdVp0$y5KrjzQfqoOyLy5j68kEte16MvKAs1Rl.IMeIohAnHC:19243:0:99999:7:::
$ su - mike
Password:
su: Authentication failure
```
Знак `!` перед хэшем пароля означает, что аккаунт заморожен.
### 14.
Настройте пользователя со своим именем на виртуальной машине `stud14`. Зайдите под ним на какое-то время. Посмотрите кто ещё зашёл на машину. Проверьте кто заходил на эту машину ранее командой `last`.
```
stud@stud14:~$ who
stud pts/1 2022-09-09 00:43 (46.0.124.17)
stud@stud14:~$ last -n 10
stud pts/1 46.0.124.17 Fri Sep 9 00:43 still logged in
stud pts/4 87.229.245.190 Thu Sep 8 19:04 - 19:05 (00:00)
stud pts/3 87.229.245.190 Thu Sep 8 19:04 - 21:25 (02:20)
stud pts/0 87.229.245.190 Thu Sep 8 19:04 - 19:06 (00:02)
stud pts/3 87.229.245.190 Thu Sep 8 18:59 - 19:04 (00:04)
stud pts/3 87.229.245.190 Thu Sep 8 18:59 - 18:59 (00:00)
stud pts/3 87.229.245.190 Thu Sep 8 18:57 - 18:57 (00:00)
tim pts/3 87.229.245.190 Thu Sep 8 18:42 - 18:49 (00:06)
stud pts/7 87.229.245.190 Thu Sep 8 18:41 - 18:57 (00:16)
stud pts/3 87.229.245.190 Thu Sep 8 18:40 - 18:42 (00:01)
```
### 15.
Сыграйте с коллегой в игру. Сначала зайдите на свои виртуальные машины. Зайдите друг к другу на виртуальную машину по ssh. Попробуйте первым отключить соседа от виртуальной машины.
```
$ who -u
$ sudo kill -9 <pid>
$ sudo usermod -L <user>
```