Создание правил в файле sudoers

Группировка

Файл /etc/sudoers можно организовать более эффективно, группируя элементы с помощью разнообразных псевдонимов.

Например, можно создать три разных группы пользователей с некоторыми общими участниками:

...
User_AliasGROUPONE = abby, brent, carl
User_AliasGROUPTWO = brent, doris, eric,
User_AliasGROUPTHREE = doris, felicia, grant
...

Имена групп должны начинаться с заглавной буквы. Затем можем дать участникам группы GROUPTWO разрешение на обновление базы данных dnf, создав следующее правило:

...
GROUPTWOALL = /usr/bin/dnf update
...

Если не указать пользователя или группу для запуска, команда sudo по умолчанию использует пользователя root.

Свойства

Есть ряд способов, которые позволяют более точно контролировать реакцию sudo на вызов.

Команда updatedb, связанная с пакетом mlocate, относительно безопасна при ее выполнении в Системе с одним пользователем. Если нужно разрешить пользователям выполнять ее с привилегиями root без ввода пароля, можно создать правило следующего вида:

...
GROUPONEALL = NOPASSWD: /usr/bin/updatedb
...

NOPASSWD – это свойство, означающее, что пароль не запрашивается. У него есть сопутствующее свойство PASSWD, которое используется по умолчанию и требует ввода пароля. Данное свойство актуально для остальной части строки, если его действие не переопределяется дублирующим тегом в этой же строке.

Например, можно использовать следующую строку:

...
GROUPTWOALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill
...

Также полезно свойство NOEXEC, которое можно использовать для предотвращения опасного поведения некоторых программ.

Например, некоторые программы, такие как less, могут активировать другие команды, вводя их через свой интерфейс:

!command_to_run

При этом все команды пользователя выполняются с теми же разрешениями, что и команда less, что может быть довольно опасно.

Чтобы ограничить такое поведение, можно использовать следующую строку:

...
usernameALL = NOEXEC: /usr/bin/less
...