From a23ff2b0932391d18b823ea3de423acbf6325d39 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 5 Feb 2026 21:44:30 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..0064ba5 --- /dev/null +++ b/README.md @@ -0,0 +1,109 @@ +# Домашнее задание 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 суббота + + + +Все готово! Задание выполнено! \ No newline at end of file