Files
homework24/README.md
2026-02-05 21:44:30 +03:00

109 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Домашнее задание 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 суббота
Все готово! Задание выполнено!