Добавить README.md
This commit is contained in:
109
README.md
Normal file
109
README.md
Normal file
@@ -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 суббота
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Все готово! Задание выполнено!
|
||||||
Reference in New Issue
Block a user