Код для lab2

This commit is contained in:
2026-03-03 10:21:13 +03:00
parent 07e02401eb
commit 60a4471a8c
11 changed files with 1050 additions and 0 deletions

99
lab2/README.md Normal file
View File

@@ -0,0 +1,99 @@
# Lab 2 — Authentication, Authorization & Brute Force Research
Система доступа к конфиденциальным данным с управлением пользователями и исследованием стойкости паролей.
## Структура каталогов
```
$PRACTICE2_DIR/ # по умолчанию /usr/local/practice2
├── etc/passwd # логин:sha256:id:права:ФИО
├── confdata/ # конфиденциальные файлы
├── bin/ # утилиты (usermgr, confaccess, bruteforce)
└── log/ # usermgr.log, access.log
```
Базовый каталог задаётся через переменную окружения `PRACTICE2_DIR`.
Если переменная не задана — используется `/usr/local/practice2`.
## Установка
```bash
chmod +x setup.sh
# для пути по умолчанию (/usr/local/practice2) нужен root:
sudo ./setup.sh
# для тестирования без root:
PRACTICE2_DIR=/tmp/practice2 ./setup.sh
```
Скрипт создаёт структуру каталогов, копирует утилиты в `bin/` и выставляет права доступа.
### Добавить bin во временный PATH
```bash
export PATH="/usr/local/practice2/bin:$PATH"
# или для тестовой директории:
export PATH="/tmp/practice2/bin:$PATH"
```
После этого утилиты доступны без полного пути:
```bash
usermgr add alice
confaccess
bruteforce alice
```
## Использование
### usermgr — управление пользователями
```bash
usermgr add alice # добавить пользователя (интерактивный ввод)
usermgr list # список пользователей
usermgr edit alice --permissions rw
usermgr edit alice --full-name "Иванов Иван"
usermgr passwd alice # сменить пароль
usermgr delete alice # удалить пользователя
```
Права: `r` — чтение, `w` — запись, `d` — удаление.
Требования к паролю: первый символ — буква (AZ, az), далее — буквы, цифры и `!@#$%^&*()`.
### confaccess — доступ к данным
```bash
confaccess
# или с явным указанием базовой директории:
PRACTICE2_DIR=/tmp/practice2 confaccess
```
После аутентификации доступны команды:
```
create <file> создать новый пустой файл в confdata [requires: w]
read <file> вывести содержимое файла [requires: r]
append <file> <text> дописать строку в файл [requires: w]
copy <src> <dst> скопировать файл в confdata [requires: r, w]
remove <file> удалить файл из confdata [requires: d]
help / exit
```
Пути к файлам указываются относительно `confdata/` (или абсолютные).
Для `copy`: src — любой путь, dst — внутри confdata, перезапись запрещена.
Выход — `exit` или Ctrl+C.
### bruteforce — взлом пароля
```bash
bruteforce alice
bruteforce alice --max-length 4
```
Алгоритм хэширования: **SHA-256**.
Перебор выполняется напрямую по хэшу из passwd-файла.
Фиксируется время перебора и количество итераций до нахождения пароля.
Перебор останавливается автоматически при достижении лимита 8 часов.