Разблокировать сервис на трёх слоях прав hard
- name
perms-layered- image
labctl-base:3.12- timeout
- 30s
- tags
- filesystem, permissions, security
задание
Разблокировать сервис на трёх слоях прав
Пользователь appuser должен уметь выполнить команду
sudo -n -u report /usr/local/bin/make-report без пароля и чтобы она
отработала от имени пользователя report (то есть скрипт, пишущий в
/var/run/app/report.txt, должен это делать от report, а не от appuser).
Скрипт make-report сам по себе корректен — его трогать не нужно. Поломка
раскидана по трём слоям конфигурации.
$ su -s /bin/sh appuser -c 'sudo -n -u report /usr/local/bin/make-report'
$ cat /var/run/app/report.txt
report was here
Где копать (три независимых слоя)
- Sudoers (
/etc/sudoers.d/app-report): правило либо отсутствует,
либо требует пароль (authenticate), либо ограничено аргументом, которого
нет в вызове. Нужно разрешить именноappuserзапускать именно
/usr/local/bin/make-reportкак пользовательreportбез пароля. - Скрипт (
/usr/local/bin/make-report): executable-bit, владелец,
посторонний аргумент. Должен быть запускаемым всеми (0755). - Каталог/файл (
/var/run/app/,report.txt): права не даютreport
писать туда, либо файл принадлежит root с режимом 0600.
Каждый слой сам по себе блокирует успех. Чините все три.
Почему это hard
Реальный production-инцидент: «почему у пользователя нет прав?». Причин может
быть 5 (sudoers, ACL, файловые права, права каталога, umask), и угадывание не
работает — нужно последовательно проверить каждый слой инструментами
(sudo -l, ls -ln, stat, namei -l, getfacl). Лаба учит именно этому
порядку расследования.
терминал
закрывается при остановке сессии · Ctrl+D чтобы выйти · F11 полный экран
подсказки
⚠ открытые подсказки учитываются в рейтинге
попытки
- загрузка…