Каждый раз, когда я хочу иметь возможность запускать что-то, что требует от меня sudoer
слишком много раз, мне нужно гуглить для форматирования, /etc/sudoers
чтобы напоминать мне снова, что именно является правильным способом написать это.
Теперь я вижу разные стили написания в моем sudoers
файле, что является следствием разных результатов Google за месяцы. Я также заметил, что второй пример (ниже), кажется, работает в XFCE, но не в Cinnamon (Gnome 3). Это может быть совершенно не связано, но, тем не менее, я хотел бы знать раз и навсегда, какова правильная грамматика линии sudoer и в чем разница между приведенными примерами?
redsandro ALL=NOPASSWD:/path/to/command
redsandro ALL=(ALL) NOPASSWD:/path/to/command
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
Кроме того, для чего все это ALL
? Один пользователь, одна команда, но мне нужно использовать ALL
ключевое слово до трех раз? Я делаю это неправильно?
Конечно, опуская NOPASSWD:
заставляет вас ввести пароль , прежде чем разрешено выполнить команду, но одна точка путаницы является использование =
и :
для окончательной команды , которая является предметом линии может быть префиксом либо =
, :
, , или
)
, запутанная грамматика для подобной семантики.
sudoers
синтаксисом. Чтение справочной страницы было еще более удручающим: она описывает так называемый лаконичный и точный язык EBNF, примеры излишне длинны. Поэтому я не удивлен, найдя здесь столько тем относительно этого файла.Ответы:
Это больше, чем просто пользователь и команда:
host
указывает имена хостов, для которых эта строка действительна. Если вы не разделяете файл asudoers между разными хостами, которым нужны разные правила, используйте специальное значение,ALL
означающее, что «все хосты» - хороший выбор.user
указывает, каких пользователей вы можете использовать с-u
опциями для запуска команды. Если вы пропустите это, вы не сможете использовать эту-u
опцию.group
указывает, какие группы вы можете использовать с-g
опциями. Если вы опустите его, вы не сможете использовать эту-g
опцию.И то,
user
и другоеgroup
понимаютALL
как «все пользователи / группы».Если опустить все ,
(user:group)
что вы не можете использовать-u
и-g
но только выполнить команду с правами администратора.tag
позволяет указать некоторые параметры, такие какNOPASSWD
Так с первым примером можно запустить команду как корень , но не можешь использовать
-u
и-g
запустить его , как и любой другой пользователь или группу.В примере 2. вы можете запустить команду как пользователь root или использовать
-u
ее как любой другой пользователь.С помощью 3. вы можете запустить команду от имени пользователя root или использовать
-u
или-g
для запуска команды от имени любого другого пользователя или группы.источник
127.0.0.1
илиlocalhost
какhost
для тривиальной дополнительной безопасности?ALL
это.Давайте разберем это на части:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
redsandro - это имя пользователя, которому мы даем разрешение. Поместите% на передний план, чтобы применить его к группе.
ВСЕ это имя для этого правила. Судоши могут сделать гораздо больше, чем просто предоставить глобальные разрешения. Вот где это все сложнее, хотя.
= не нуждается в объяснении
ALL: ALL читается как (who_to_run_it_as: what_group_to_run_it_as). Таким образом, вы можете разрешить запуск команды, но только в контексте определенного пользователя или группы.
NOPASSWD: говорит отключить запрос пароля.
/ path / to / command позволяет вам указать конкретные команды path_to_commmand, another_command
Следует помнить, что хотя домашние пользователи в основном используют sudo для перехода к привилегиям root, они могут использоваться и используются для более детального управления доступом к определенным командам.
источник
%
и, another_command
заметки. Теперь я понимаю%wheel
линию в дистрибутиве Fedora.