Вопрос или проблема
Я присоединил операционную систему Linux к домену AD и добавил группы AD в файл sudoers. Все работает отлично, но при выполнении некоторых задач, требующих привилегий sudo, появляется окно аутентификации, похожее на Windows. В выпадающем меню не отображаются пользователи AD — только пользователи, которые были добавлены в файл sudoers индивидуально.
Я попробовал добавить своего пользователя из домена AD индивидуально, и тогда он появляется в выпадающем меню, хотя группа AD уже была добавлена в /etc/sudoers.
Добавлять каждого пользователя AD индивидуально в группу sudo очень трудоемко.
Это не диалог sudo. Это диалог policykit, который имеет свою собственную систему авторизации, которая, как ни странно, преднастроена вашим дистрибутивом для использования той же группы, что и ‘sudo’.
Его эквивалентом файла “sudoers” является основанный на JavaScript файл /etc/polkit-1/rules.d/*.rules
, как документировано в справочной странице polkit(8). Например, если вы хотите предоставить “администраторские” права конкретной группе, вы можете использовать addAdminRule():
polkit.addAdminRule(function(action, subject) {
return ["unix-group:wheel"];
});
Ответ или решение
Для решения вашей проблемы, связанной с тем, что при выполнении команд с использованием sudo
появляется диалоговое окно аутентификации PolicyKit, необходимо внести изменения в конфигурацию PolicyKit для предоставления прав на выполнение административных задач для групп Active Directory (AD).
Как вы уже заметили, использующееся вами диалоговое окно не является окном sudo
, а представлено PolicyKit, который использует свою собственную систему авторизации. По умолчанию PolicyKit может не учитывать группы AD в качестве допустимых субъектов для выполнения административных задач.
Для того чтобы настроить PolicyKit на использование ваших групп AD, выполните следующие шаги:
-
Создайте файл правил PolicyKit:
Откройте терминал и создайте новый файл правил в директории
/etc/polkit-1/rules.d/
. Например, вы можете назвать его50-adtogroup.rules
.sudo nano /etc/polkit-1/rules.d/50-adtogroup.rules
-
Добавьте правила для вашей AD группы:
Вставьте в созданный файл следующий код, который позволит всем пользователям из указанной AD группы (например,
sudoers
) выполнять любой вызов PolicyKit без запроса пароля:polkit.addAdminRule(function(action, subject) { if (subject.isInGroup("YOUR_AD_GROUP")) { return polkit.Result.YES; } });
Замените
YOUR_AD_GROUP
на имя вашей группы Active Directory, для которой вы хотите предоставить права. -
Сохраните файл и выйдите из редактора. Если вы используете
nano
, сделайте это, нажавCTRL+X
, затемY
для подтверждения изменений иEnter
. -
Проверьте конфигурацию:
После того как вы добавили правила, перезапустите необходимые службы или систему, чтобы изменения вступили в силу. Это может потребовать перезагрузки системы или повторного входа в систему.
-
Тестирование:
После внесения изменений попробуйте выполнить команду, которая требует повышенных привилегий. Вы должны увидеть, что диалоговое окно аутентификации больше не запрашивает ввод пароля от пользователя, состоящего в указанной группе AD.
Эти шаги должны помочь вам избавиться от необходимости добавлять каждого пользователя AD индивидуально в список sudo
, и автоматизировать процесс аутентификации для всех пользователей группы AD.
Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь задавать!