# Решения

### 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>
```