Linux Labs

Пользователи, права, процессы / Ступень 8 из 13

Делегирование команд через sudo

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 8 · на машине · 6 мин

Из чего состоит правило

Правило, которое пустило labops, читается по частям — и по ним видно, что оно разрешает, а что нет.

sudo пускает пользователя по правилам sudoers — строкам в /etc/sudoers и в файлах каталога /etc/sudoers.d. Правило дежурного выглядит так:

text
labops ALL=(root) NOPASSWD: /usr/bin/tail -n 2 /srv/sudo-lab/status.log
Часть Что значит
labops кому разрешено; %имя — всем участникам группы
ALL= на каких машинах действует правило — здесь на любых
(root) от чьего имени можно запускать
NOPASSWD: без ввода своего пароля
/usr/bin/tail -n 2 … команда с аргументами — ровно эта; ALL на этом месте — любая

Вызов, который ни под одно правило не подошёл, sudo без пароля не пропускает: потому labops и увидел a password is required. Свои правила показывает sudo -l, чужие — sudo -l -U имя:

bash
sudo -l

У тебя два правила: (ALL : ALL) ALL даёт строка %sudo ALL=(ALL:ALL) ALL из /etc/sudoers — ты в группе sudo, — а (ALL) NOPASSWD: ALL — файл /etc/sudoers.d/90-student.

Внимание

Не разрешай через sudo оболочки, редакторы и скрипты, которые получатель может переписать: из vim от root команда :!sh открывает оболочку root, а переписанный скрипт выполнит что угодно.

Проверь себя 1 вопрос

В /etc/sudoers есть строка %sudo ALL=(ALL:ALL) ALL. Пользователя deploy добавили в группу sudo. Что он получит?

  • %sudo в начале строки — это кому разрешено: всем участникам группы. Команды задаёт последнее ALL — любые.

  • Строка с %sudo уже действует для всех участников группы. sudo -l -U deploy после добавления покажет (ALL : ALL) ALL.

  • sudo пароль root не выдаёт и не спрашивает: участник группы вводит свой пароль, NOPASSWD в этой строке нет.

%sudo — все участники группы sudo, (ALL:ALL) — от любого пользователя и группы, последнее ALL — любая команда. NOPASSWD нет, поэтому sudo спросит у deploy его собственный пароль.

Главное в шаге

  • Правило sudoers — кому, на какой машине, от чьего имени и какую команду с какими аргументами.
  • Вызов, не подошедший ни под одно правило, не пройдёт; sudo -l -U имя показывает правила пользователя.
Ubuntu 24.04
Загрузка…