95 lines
3.3 KiB
Markdown
95 lines
3.3 KiB
Markdown
# Lab 3 — DAC + MAC
|
||
|
||
Система доступа к конфиденциальным данным с дискреционным (DAC) и мандатным (MAC) управлением доступом. Основана на Lab 2.
|
||
|
||
## Структура каталогов
|
||
|
||
```
|
||
$PRACTICE3_DIR/ # по умолчанию /usr/local/practice3
|
||
├── etc/
|
||
│ ├── passwd # логин:sha256:id:права:ФИО
|
||
│ ├── access_mode # BOTH | DAC_ONLY | MAC_ONLY
|
||
│ ├── acl # матрица доступа (DAC)
|
||
│ ├── subject_labels # метки субъектов (MAC)
|
||
│ └── object_labels # метки объектов (MAC)
|
||
├── confdata/ # конфиденциальные файлы
|
||
├── bin/ # usermgr, confaccess, bruteforce
|
||
└── log/ # usermgr.log, access.log
|
||
```
|
||
|
||
## Режимы проверки доступа
|
||
|
||
| Режим | DAC | MAC |
|
||
|-------|-----|-----|
|
||
| BOTH (по умолчанию) | да | да |
|
||
| DAC_ONLY | да | нет |
|
||
| MAC_ONLY | нет | да |
|
||
|
||
Режим задаётся через `usermgr set-mode` (только root).
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
chmod +x setup.sh
|
||
|
||
# для пути по умолчанию нужен root:
|
||
sudo ./setup.sh
|
||
|
||
# для тестирования без root:
|
||
PRACTICE3_DIR=/tmp/practice3 ./setup.sh
|
||
```
|
||
|
||
## Использование
|
||
|
||
### usermgr — управление пользователями
|
||
|
||
```bash
|
||
usermgr add alice
|
||
usermgr list
|
||
usermgr edit alice --full-name "Иванов Иван" --permissions rw
|
||
usermgr edit alice --label 1 # метка субъекта (root only)
|
||
usermgr set-label report.txt 2 # метка объекта (root only)
|
||
usermgr set-mode DAC_ONLY # режим проверки (root only)
|
||
usermgr show-mode # текущий режим (root only)
|
||
usermgr passwd alice
|
||
usermgr delete alice
|
||
```
|
||
|
||
### confaccess — доступ к данным
|
||
|
||
```bash
|
||
confaccess
|
||
PRACTICE3_DIR=/tmp/practice3 confaccess
|
||
```
|
||
|
||
Команды после аутентификации:
|
||
|
||
```
|
||
create <file> создать файл (владелец = текущий пользователь)
|
||
read <file> прочитать файл
|
||
append <file> <text> дописать в файл
|
||
copy <src> <dst> скопировать в confdata
|
||
remove <file> удалить файл
|
||
grant <user> <path> <perms> выдать права (только владелец)
|
||
help / exit
|
||
```
|
||
|
||
### DAC (дискреционный доступ)
|
||
|
||
- Каждый объект имеет владельца (создатель)
|
||
- Владелец может выдавать права через `grant <user> <path> <perms>`
|
||
- Права: r (чтение), w (запись), d (удаление)
|
||
|
||
### MAC (мандатный доступ, Белл–Лападула)
|
||
|
||
- Метки: 0 — несекретно, 1 — ДСП, 2 — секретно
|
||
- Нет чтения сверху: субъект читает только объекты с уровнем ≤ своего
|
||
- Нет записи вниз: субъект пишет только в объекты с уровнем ≥ своего
|
||
|
||
### bruteforce
|
||
|
||
```bash
|
||
bruteforce alice
|
||
bruteforce alice --max-length 4
|
||
```
|