Согласно комментариям в /etc/sudoers
(Fedora 13):
## Syntax: ## ## user MACHINE=COMMANDS ## ## The COMMANDS section may have other options added to it.
Мои два смежных вопроса:
Что означает ALL=(ALL) ALL
в следующей строке:
root ALL=(ALL) ALL
Я тестировал эти две строки, но я не могу понять, как они функционально отличаются:
superadm ALL=(ALL) ALL superadm ALL=ALL
Я прочитал руководство, но спецификацию синтаксиса трудно выполнить. Я понял, что часть (ALL) ALL
– это спецификация команд и тегов, но я все еще не могу обойти ее.
Примечание: Я отвечаю 1. , поскольку Игнасио уже ответил 2 ..
В следующей записи sudo
:
superadm ALL=(ALL) ALL
существует четыре поля:
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
опущено, дополнительных привилегий группы не предоставляется.
На странице руководства sudoers(5)
, раздел DESCRIPTION , подраздел Runas_Spec :
Первый Runas_List указывает, какие пользователи могут выполнять эту команду, как с помощью опции
-u
sudo
.
…
Если Runas_Spec не указан, команда может быть запущена как
root
и никакая группа не может быть указана.
Таким образом, нет никакой функциональной разницы при попытке запуска команд как root
, т. Е. Когда не используется -u
с sudo
. Разница имеет значение при попытке запуска команд в качестве других пользователей; последнее предотвратит это, но первое это позволит.