# Решения ### 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 $ sudo usermod -L ```