labctl.graywrk.ru
войти регистрация

Разблокировать сервис на трёх слоях прав 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

Где копать (три независимых слоя)

  1. Sudoers (/etc/sudoers.d/app-report): правило либо отсутствует,
    либо требует пароль (authenticate), либо ограничено аргументом, которого
    нет в вызове. Нужно разрешить именно appuser запускать именно
    /usr/local/bin/make-report как пользователь report без пароля.
  2. Скрипт (/usr/local/bin/make-report): executable-bit, владелец,
    посторонний аргумент. Должен быть запускаемым всеми (0755).
  3. Каталог/файл (/var/run/app/, report.txt): права не дают report
    писать туда, либо файл принадлежит root с режимом 0600.

Каждый слой сам по себе блокирует успех. Чините все три.

Почему это hard

Реальный production-инцидент: «почему у пользователя нет прав?». Причин может
быть 5 (sudoers, ACL, файловые права, права каталога, umask), и угадывание не
работает — нужно последовательно проверить каждый слой инструментами
(sudo -l, ls -ln, stat, namei -l, getfacl). Лаба учит именно этому
порядку расследования.

checking… сессия: up → shell → check → down

попытки

  • загрузка…