Linux Labs

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

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

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

Шаг 4 из 8 · теория · 5 мин

Файл правила

Своё правило кладут отдельным файлом в /etc/sudoers.d: его видно, его легко убрать, основной /etc/sudoers не трогается.

У файла три требования. Имя — без точки и без ~ в конце: файлы вроде labops.conf sudo пропускает молча. Владелец — root:root. Права — 0440. Новый файл visudo -f создаёт с правами 0640, поэтому после сохранения нужен chmod:

bash
sudo EDITOR=vim visudo -f /etc/sudoers.d/labops
sudo chmod 0440 /etc/sudoers.d/labops
sudo visudo -c

sudo visudo -c проверяет всю конфигурацию: /etc/sudoers и каждый подключённый файл, вместе с правами. На файл с правами 0640 он печатает bad permissions, should be mode 0440.

Внимание

Строку с ошибкой sudo на этой машине пропускает и печатает ошибку при каждом вызове; старые версии sudo от такой ошибки отказываются работать совсем. Поэтому файлы sudoers правят только через visudo, а на сервере держат открытым второй терминал с sudo -i.

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

Ты создал файл правила через sudo tee. Что сделаешь?

$ sudo visudo -c
/etc/sudoers: parsed OK
/etc/sudoers.d/90-student: parsed OK
/etc/sudoers.d/README: parsed OK
/etc/sudoers.d/ops: bad permissions, should be mode 0440
  • Тогда перестанут действовать все файлы каталога, и 90-student тоже. Ошибка — в правах одного файла.

  • visudo -c проверяет и права: на ops он напечатал bad permissions и завершился с ошибкой. Файл должен быть 0440.

  • Файлы с точкой в имени sudo пропускает: ошибка пропадёт вместе с правилом. Чинят права самого файла.

tee создал файл с обычными правами, а sudo требует 0440. chmod 0440 чинит именно это, и повторная sudo visudo -c напечатает parsed OK для всех файлов.

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

  • Файл правила в /etc/sudoers.d: имя без точки, root:root, права 0440.
  • visudo -c проверяет всю конфигурацию вместе с правами файлов, но не смысл правил.
Ubuntu 24.04
Загрузка…