# 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 создать файл (владелец = текущий пользователь) read прочитать файл append дописать в файл copy скопировать в confdata remove удалить файл grant выдать права (только владелец) help / exit ``` ### DAC (дискреционный доступ) - Каждый объект имеет владельца (создатель) - Владелец может выдавать права через `grant ` - Права: r (чтение), w (запись), d (удаление) ### MAC (мандатный доступ, Белл–Лападула) - Метки: 0 — несекретно, 1 — ДСП, 2 — секретно - Нет чтения сверху: субъект читает только объекты с уровнем ≤ своего - Нет записи вниз: субъект пишет только в объекты с уровнем ≥ своего ### bruteforce ```bash bruteforce alice bruteforce alice --max-length 4 ```