Файл /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

Описание

User_Alias

Используется для обозначения группы пользователей. Он позволяет определить группу пользователей и дать ей уникальное имя (псевдоним) для предоставления определенным пользователям прав на выполнение команд от имени другой учетной записи

Runas_Alias

Используется для обозначения группы пользователей, от имени которых будут выполняться команды. Аналогично User_Alias, Runas_Alias позволяет определить группу пользователей и дать ей уникальное имя для указания, что определенные пользователи могут выполнять команды от имени указанной группы пользователей

Host_Alias

Используется для обозначения списка хостов. Он позволяет определить список хостов и дать ему уникальное имя (псевдоним). Этот псевдоним можно использовать в правилах файла /etc/sudoers для указания, что определенные пользователи могут выполнять команды на определенных хостах

Cmd_Alias или Cmnd_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:

Опция

Описание

always_query_group_plugin

Использовать group_plugin для разрешения групп формы %<group_name>, если group_plugin настроен и не существует системной группы с таким же именем. Обычно в group_plugin передаются только группы вида %<group_name>. По умолчанию эта опция отключена

always_set_home

Установить переменную среды HOME в домашний каталог целевого пользователя. Если эта опция включена, sudo установит HOME в домашний каталог пользователя, который является пользователем runas_default, если утилитой sudo не используется опция -u. Эта опция не имеет никакого эффекта, если опция env_reset не отключена или HOME не присутствует в списке env_keep, что настоятельно не рекомендуется. По умолчанию опция отключена

env_keep

Указать переменные среды, которые должны сохраняться в среде пользователя, когда действует опция env_reset. Это обеспечивает детальный контроль над средой, которую получат процессы, порожденные sudo. Аргумент может быть списком в двойных кавычках, разделенных пробелами, или одним значением без двойных кавычек. Список можно заменить, добавить, удалить или отключить с помощью операторов =, +=, -= и ! соответственно. Глобальный список переменных, которые нужно сохранить, отображается, когда sudo запускается пользователем root с опцией -V

env_reset

Опция для сброса переменных среды перед выполнением команд. Если установлена, sudo запустит команду в минимальной среде, содержащей переменные: TERM, PATH, HOME, MAIL SHELL, LOGNAME USER и SUDO_*. Затем добавляются любые переменные в среде вызывающего объекта или в файле, указанном настройкой restricted_env_file, которые соответствуют спискам env_keep и env_check. Затем любые переменные, присутствующие в файле, указанном настройкой env_file (если таковые имеются). Содержимое списков env_keep и env_check, измененное глобальными параметрами по умолчанию в sudoers, отображается, когда sudo запускается пользователем root с опцией -V. Если параметр secure_path включен, его значение будет использоваться для переменной среды PATH. Эта опция включена по умолчанию

group_plugin

Строка, содержащая плагин группы sudoers с необязательными аргументами. Строка должна состоять из пути к плагину, либо полного, либо относительно каталога /usr/libexec/sudo, за которым следуют любые аргументы конфигурации, необходимые плагину. Эти аргументы (если есть) будут переданы в функцию инициализации плагина. Если аргументы присутствуют, строка должна быть заключена в двойные кавычки ("")

match_group_by_gid

Использовать идентификатор группы вместо имени группы при определении того, является ли пользователь членом группы. Если опция включена, sudoers будет осуществлять поиск в базе данных группы по имени группы, а не по ее идентификатору. В системах, где имеется несколько источников базы данных групп, возможно наличие конфликтующих имен групп или идентификаторов групп в локальном файле /etc/group и в удаленной базе данных групп. В таких системах включение или отключение match_group_by_gid можно использовать для выбора, будут ли запросы к базе данных группы выполняться по имени (включено) или по идентификатору (отключено), что может помочь в устранении конфликтов записей групп. Опция не действует, когда данные sudoers хранятся в LDAP. По умолчанию опция match_group_by_gid отключена

runas_default

Пользователь по умолчанию для запуска команд, аналогично отсутствию опции -u для sudo в командной строке. По умолчанию – root

secure_path

Использовать указанное значение вместо пользовательской переменной среды PATH. Если опции установлено значение, sudo будет использовать это значение вместо пользовательской переменной среды PATH. Эту опцию можно использовать для сброса PATH к заведомо корректному значению, содержащему каталоги для команд системного администратора, такие как /usr/sbin. На пользователей в группе, указанной опцией exempt_group, secure_path не влияет. По умолчанию опция не установлена

visiblepw

Включить отображение всей информации при работе sudo. Если опция установлена, sudo запросит пароль, даже если он будет виден на экране. Это позволяет запускать такие вещи, как ssh somehost sudo ls, который не создает tty при запуске команды. По умолчанию опция отключена

Внимание

Сохранение переменной среды HOME в качестве значения опции env_keep имеет последствия для безопасности, поскольку многие программы используют ее при поиске файлов конфигурации или данных. Добавление HOME в env_keep может позволить пользователю запускать неограниченные команды через sudo, что настоятельно не рекомендуется.