Практическое задание

Эта задача — шаг 3 курса «Новый сервер: настройка с нуля»

Деплойщику — только reload nginx

средне~7 мин

Выкладкой сайта займётся пользователь releaser: после заливки файлов ему нужно перечитать конфиг nginx, не вводя пароль. Полный root ему не положен. Разреши через sudoers пользователю releaser выполнять без пароля только /usr/sbin/service nginx reload — ни остановить nginx, ни трогать другие сервисы, ни запустить шелл он не должен.

Что потренируешь:
  • sudoers.d
  • NOPASSWD
  • visudo -c
  • наименьшие привилегии
  • sudo -l

Разбор темы

Принцип наименьших привилегий: автоматике и людям дают ровно ту команду, которая нужна для работы, а не root целиком. Правила sudo выносят в отдельный файл в /etc/sudoers.d/ — его легко найти, проверить и удалить. Строка правила описывает пользователя, хосты, от чьего имени выполнять и сам список команд; тег NOPASSWD: снимает запрос пароля. Если указать команду полным путём вместе с аргументами, sudo разрешит только такой вызов, а тот же бинарник с другими аргументами — нет. Ошибка в sudoers может отрезать sudo всем, поэтому файл всегда проверяют visudo -c, а итог — sudo -l -U пользователь.

Что проверяется

  1. конфигурация sudoers валидна
  2. releaser может без пароля выполнить service nginx reload
  3. права releaser ограничены одной командой

Как это выглядит