it-swarm-ru.tech

Какой правильный синтаксис sudoers для добавления пользователя?

Согласно комментариям в _/etc/sudoers_ (Fedora 13):

_## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
_

Мои два связанных вопроса:

  1. Что означает ALL=(ALL) ALL в следующей строке:

    _root  ALL=(ALL)   ALL
    _
  2. Я проверил эти две строки, но не могу понять, насколько они функционально отличаются:

    _superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    _

Я прочитал руководство, но трудно следовать спецификации синтаксиса. Я пришел к выводу, что часть _(ALL) ALL_ является спецификацией команды и тега, но я все еще не могу разобраться с этим.

51
Belmin Fernandez

Примечание: Я отвечаю 1. , так как Игнасио уже ответил 2. .

В следующей записи Sudo:

superadm  ALL=(ALL)   ALL

есть четыре поля:

  • Первый указывает пользователя, которому будут предоставлены привилегии для некоторых команд.
  • Второй редко используется. Это список имен хостов, на которых эта запись Sudo будет действовать. В стандартных установках релевантен только один хост (localhost), поэтому это поле обычно оставляется как ALL.
  • Поле четвертое - это список команд, которые superadm сможет выполнять с повышенными привилегиями. ALL означает все команды. В противном случае используйте список команд через запятую.
  • Третье поле (написано (…) (необязательно) указывает, какие пользователи (и группы) пользователь superadm сможет выполнять следующие команды:. ALL означает, что они могут выбирать что угодно (неограниченно). Если это поле опущено, оно означает то же, что (root).

Пример:

alan   ALL = (root, bin : operator, system) /bin/ls, /bin/kill

Здесь alan разрешено запускать две команды /bin/ls а также /bin/kill как root (или bin), возможно, с дополнительными привилегиями групп operator или system.

Поэтому alan может выбрать запуск ls в качестве пользователя bin и ​​с групповыми привилегиями operator, например так:

Sudo -u bin -g operator /bin/ls /whatever/directory

Если -u опущен, он такой же, как -u root. Если -g опущен, дополнительные групповые привилегии не предоставляются.

94
Stéphane Gimenez

Из справочной страницы sudoers(5), DESCRIPTION раздел, Runas_Spec подраздел:

Первый Runas_List указывает, для каких пользователей команда может быть запущена через Sudo ’s -u вариант.

...

Если Runas_Spec не указан, команда может быть выполнена как root, и никакая группа не может быть указана.

Таким образом, нет никакой функциональной разницы при попытке запуска команд как root, т.е. когда не используется -u с Sudo. Разница имеет значение при попытке запуска команд от имени других пользователей; последний предотвратит это, но первый позволит.

9
Ignacio Vazquez-Abrams