# Домашнее задание 24 ## Пользователи и группы. Авторизация и аутентификация Для выполнение задания используется Ubuntu 22.04 ### Настройка Создадим двух пользователей, **user** и **useradmin**. При создании пользователя **user**, группа **user** создастся автоматически. А вот пользователя **useradmin** мы при создании добавляем в группц **admin** ```bash root@ubuntu-jammy:~# adduser user Adding user `user' ... Adding new group `user' (1002) ... Adding new user `user' (1002) with group `user' ... Creating home directory `/home/user' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for user Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] root@ubuntu-jammy:~# adduser useradmin --ingroup admin Adding user `useradmin' ... Adding new user `useradmin' (1003) with group `admin' ... Creating home directory `/home/useradmin' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for useradmin Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y ``` С помощью vim, содаем скрипт /usr/local/bin/login.sh. ```bash #!/bin/bash #Проверяем группу пользователя, если группа не admin, то будем проверять день недели if [ $(id -nG "$PAM_USER") != "admin" ] then #проверяем день недели, если суббота или восскресенье, то не пускаем if [[ $(date +%u) > 5 ]] then exit 0 else exit 1 fi else exit 0 fi ``` Скрипт работет следующим образом: 1. Смотрит группу пользователся, если группа пользователя **admin**, то скрипт завершает работу 2. Если группа не **admin**, то скрипт начинает проверять текущий день недели 3. Если день недели больше 5 (это суббота и восскресенье), то скрипт завершается ошибкой, иначе завершается корректно. Сделаем наш скрипт исполняемым ```bash root@ubuntu-jammy:/# chmod +x /usr/local/bin/login.sh ``` Добавим в **/etc/pam.d/sshd** наш скрипт ```bash root@ubuntu-jammy:/# echo "auth required pam_exec.so debug /usr/local/bin/login.sh" >> /etc/pam.d/sshd ``` Проверим выполнение (на VM перевел дату 31.01.2026, это суббота). Подключаемя под пользователем **user** ```bash alex@ubuntu-pc:~/otus/dz24$ ssh user@192.168.50.33 (user@192.168.50.33 Password: /usr/local/bin/login.sh failed: exit code 1 (user@192.168.50.33) Password: /usr/local/bin/login.sh failed: exit code 1 (user@192.168.50.33) Password: /usr/local/bin/login.sh failed: exit code 1 user@192.168.50.33: Permission denied (publickey,keyboard-interactive). ``` Тут при верно введенном пароле мы видим строку **/usr/local/bin/login.sh failed: exit code 1**, это наш скрипт выводит ошибку, так как день недели в VM суббота Все готово! Задание выполнено!