Файл /etc/sudoers#
Файл /etc/sudoers – это файл, в котором определяется политика определения привилегий пользователя sudoers (плагин политики sudo, подробнее см. в «Утилита sudo»). Политика sudoers используется для определения того, какие пользователи могут выполнять команды с привилегиями других пользователей или групп, а также какие команды они могут запускать. Дополнительно, но не обязательно, политика может быть определена с помощью LDAP.
Утилита sudo использует файл sudo.conf, чтобы определить, какие плагины sudo необходимы для загрузки. Если этого файла нет, или в нем не содержится информации о плагинах sudo, то утилита использует файл /etc/sudoers для аудита, принятия решений, связанных с политикой, ведения журнала ввода-вывода. Доступ к этим файлам имеют только привилегированные пользователи.
В файле sudo.conf можно описать настройки, необходимые для sudoers. Также при настройках можно указывать дополнительные аргументы.
Файл /etc/sudoers состоит из двух типов записей: псевдонимов (aliases) и пользовательских спецификаций (которые определяют, кто что может запускать). Когда у пользователя совпадает несколько записей, они применяются по порядку. При наличии нескольких совпадений используется последнее совпадение, не обязательно наиболее конкретное.
В файле /etc/sudoers используется 4 вида псевдонимов:
Псевдоним/alias |
Описание |
|---|---|
|
Используется для обозначения группы пользователей. Он позволяет определить группу пользователей и дать ей уникальное имя (псевдоним) для предоставления определенным пользователям прав на выполнение команд от имени другой учетной записи |
|
Используется для обозначения группы пользователей, от имени которых будут выполняться команды. Аналогично |
|
Используется для обозначения списка хостов. Он позволяет определить список хостов и дать ему уникальное имя (псевдоним). Этот псевдоним можно использовать в правилах файла |
|
Используется для обозначения списка команд. Он позволяет определить список команд и дать ему уникальное имя (псевдоним). Этот псевдоним можно использовать в правилах файла /etc/sudoers для указания, что определенные пользователи могут выполнять определенные команды. |
Пример записи User_Alias в файле /etc/sudoers:
User_Alias <GROUP1> = user1, user2, user3
User_Alias <GROUP2> = user4, user5, user3
Где <GROUP1> и <GROUP2> – названия групп и должны начинаться с заглавной буквы.
При описании файла используются правила грамматики EBNF (Extended Backus-Naur Form – расширенная форма Бэкуса-Наура). Каждое определение в такой грамматике состоит из правил, каждое из которых ссылается на другие правила. Комментариями считаются строки, начинающиеся с символа #.
Внимание
Символ # в файле /etc/sudoers используется также для включения других файлов sudoers с помощью директив #include и #includedir. Рекомендуется использование директив @include и @includedir, но написание с символом # также принимается.
Для определения общих настроек для работы утилиты sudo в файле /etc/sudoers используется ключевое слово Defaults. Опции с таким ключевым словом обычно размещаются в начале файла и применяются ко всем последующим правилам, если явно не указано иное. Для отключения опций, которые являются флагами, используется символ ! перед их именем.
Пример:
Defaults !<option_name>
Символ % в файле /etc/sudoers используется для указания названий групп, а не имен учетных записей пользователей.
Пример:
%<group_name> ALL=(ALL:ALL) ALL
Где <group_name> - имя группы, для которой определяются правила. ALL=(ALL:ALL) ALL в данном примере означает, что правило будет применено ко всем хостам (первое ALL) и ко всем выполняемым командам (последнее ALL), пользователи этой группы могут выполнять команды от имени любого пользователя и от имени любой группы (ALL:ALL).
Примеры опций /etc/sudoers:
Опция |
Описание |
|---|---|
|
Использовать |
|
Установить переменную среды |
|
Указать переменные среды, которые должны сохраняться в среде пользователя, когда действует опция |
|
Опция для сброса переменных среды перед выполнением команд. Если установлена, |
|
Строка, содержащая плагин группы |
|
Использовать идентификатор группы вместо имени группы при определении того, является ли пользователь членом группы. Если опция включена, |
|
Пользователь по умолчанию для запуска команд, аналогично отсутствию опции |
|
Использовать указанное значение вместо пользовательской переменной среды |
|
Включить отображение всей информации при работе |
Внимание
Сохранение переменной среды HOME в качестве значения опции env_keep имеет последствия для безопасности, поскольку многие программы используют ее при поиске файлов конфигурации или данных. Добавление HOME в env_keep может позволить пользователю запускать неограниченные команды через sudo, что настоятельно не рекомендуется.