Выбор ответа Senior SSH и безопасность обновлено

sudo на одну команду

Вопрос

Пользователю выдали deploy ALL=(root) NOPASSWD: /usr/bin/less /var/log/*. Почему это фактически полный root?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Из less можно запустить shell через !sh, и он будет от root. Многие программы умеют запускать внешние команды: less, vim, find -exec, awk, tar --checkpoint-action.

Варианты ответа

  1. Маска * позволяет читать любые файлы через .., но менять их нельзя
  2. NOPASSWD отключает журналирование sudo, и действия не отследить
  3. Права root нужны less для любых файлов, и sudo выдаёт их на весь сеанс
  4. Из less можно запустить shell через !sh, и он будет от rootправильный ответ

Разбор

Многие программы умеют запускать внешние команды: less, vim, find -exec, awk, tar --checkpoint-action. Если разрешить их под sudo, пользователь получит root-shell. Плюс маска в sudoers сопоставляется со строкой аргументов, и .. её обходит. Для просмотра логов правильнее дать группу adm или sudoedit/journalctl с ограничениями. NOPASSWD не отключает журналирование.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.