Назад | Перейти на главную страницу

Настройка Sudo с помощью SSSD

Попытка войти в систему Linux с помощью учетной записи Windows AD. Настроен успешно с помощью SSSD.

Используется LDAP в качестве поставщиков удостоверений и доступа и Kerberos в качестве поставщика аутентификации.

Я сделал все это без присоединения систем linux к домену.

Теперь я пытаюсь настроить LDAP как поставщика sudo. Но это не удалось. Я не могу повысить разрешения sudo для пользователей рекламы. Я даже пробовал использовать файл sudoers, там я могу повысить права доступа для конкретного пользователя, но не для группы объявлений.

Вот конфигурация SSSD с конфигурацией sudo

**sudo_provider = ldap

ldap_sudo_search_base = ou=groups,dc=ad,dc=example,dc=com
ldap_sudorule_object_class = sudoRole
ldap_sudorule_object_class = top
ldap_sudorule_command = ALL
ldap_sudorule_host = ALL
ldap_sudorule_user = %domain_group
ldap_sudorule_runasuser = ALL
ldap_sudorule_runas = ALL
ldap_sudorule_runasgroup = ALL
ldap_sudorule_option = !authenticate**

Я попытался включить ведение журнала на уровне отладки 7, упомянув, что не удалось загрузить локальные правила.

С уважением, Удай.

Я думаю, вы неправильно поняли назначение переключателей файла конфигурации - они служат для сопоставления значений LDAP запрашиваемых объектов. Директивы по умолчанию используют значения, указанные вспомогательным классом объектов (схема находится в /usr/share/doc/sudo-*/schema.ActiveDirectory в CentOS).

Вы должны импортировать эту схему в свой AD, создать объекты, представляющие роли sudo, используя этот класс объектов, и запросить их SSSD.

Ниже вы найдете исчерпывающий пример:

Вот пример конфигурации SSSD, запрашивающей пользователей, группы и роли sudo из LDAP. Замените заключенные в <> части значениями, соответствующими вашей среде:

[domain/default]
id_provider = ldap
auth_provider = ldap
access_provider = ldap
chpass_provider = ldap
sudo_provider = ldap
ldap_uri = ldaps://<ldap-server-address>:636
ldap_tls_cacert = /etc/pki/tls/certs/ca-bundle.crt
ldap_tls_reqcert = demand
ldap_default_bind_dn = <proxy-user-dn>
ldap_default_authtok_type = obfuscated_password
ldap_default_authtok = <obfuscated password>                                                                                      
ldap_search_base = <search base for users>
ldap_schema = rfc2307bis
ldap_group_search_base = <search base for groups>
ldap_sudo_search_base = <search base for sudo rules>
cache_credentials = false
enumerate = false

[sssd]
services = nss, pam, ssh, sudo
config_file_version = 2
domains = default

[nss]

[pam]

[sudo]

[autofs]

[ssh]

В вашем каталоге LDAP создайте объект ниже ldap_sudo_search_base выглядит примерно так:

objectClass: Top
objectClass: sudoRole
sudoRunAsUser: ALL
sudoHost: yourhost.example.com
sudoUser: %wheel
sudoCommand: ALL
description: Allows members of wheel to become root
cn: wheel_group_sudo_role

Это позволяет всем членам группы wheel стать root на хосте yourhost.example.com.

Бег sudo -U testuser -ll как root на целевом хосте должен дать:

LDAP Role: wheel_group_sudo_role
    RunAsUsers: ALL
    RunAsGroups: ALL
    Commands:
        ALL

редактировать:

Как вы уже поняли, поскольку SSSD предоставляет пользователям Linux-систему, вы можете рассматривать их как обычных пользователей Linux и, таким образом, создавать локальное правило sudo:

/etc/sudoers.d/00-local-admin-rule

%ad-admin-group ALL: (ALL) ALL

Это позволяет членам ad-admin-group вызвать sudo, чтобы стать пользователем root.

Когда мы говорим о *_search_base, подразумевается DN некоторой формы объекта контейнера LDAP, например организационное подразделение, такое как ou = users, o = corg, dc = example, dc = org или любая другая иерархия, которую имеет ваш каталог. Создайте объекты желаемых типов ниже указанного контейнера.