Вопрос или проблема
Я пробую sssd, чтобы использовать krb5 для аутентификации на хосте Ubuntu 18.04 и не могу понять, как отобразить фактические группы пользователей (команда groups
показывает нечто вроде Windows SID вместо читаемых человеком имен). Основная группа выглядит нормально (Domain Users…), но остальные (дополнительные) — это все числа S-x-x-x. Это настройка AD или что-то не так с моим конфигом sssd?
$ groups
Domain [email protected] [email protected] [email protected]...
sssd.conf
[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
[pam]
reconnection_retries = 3
[sssd]
domains = ad.mycorp.com
config_file_version = 2
services = nss, pam
reconnection_retries = 3
sbus_timeout = 30
[domain/ad.mycorp.com]
ad_domain = ad.mycorp.com
krb5_realm = ad.mycorp.com
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
default_shell = /bin/bash
fallback_homedir = /home/%d/%u
krb5_store_password_if_offline = True
use_fully_qualified_names = True
ldap_sasl_authid = UBU-TEST1$
ldap_id_mapping = True
access_provider = ldap
id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
ldap_uri = ldaps://ad.mycorp.com
ldap_search_base = ou=mycorp,dc=mycorp,dc=com
ldap_tls_cacert = /etc/ssl/certs/ca-certificates.crt
ldap_tls_reqcert = allow
dns_discovery_domain = ad.mycorp.com
ldap_user_search_base = ou=userid,ou=mycorp,dc=mycorp,dc=com
ldap_group_search_base = ou=mycorp,dc=mycorp,dc=com
ldap_user_object_class = user
ldap_user_name = sAMAccountName
ldap_user_fullname = displayName
ldap_user_home_directory = unixHomeDirectory
ldap_user_principal = userPrincipalName
ldap_group_object_class = group
ldap_group_name = sAMAccountName
ldap_schema = rfc2307bis
ldap_access_order = expire
ldap_account_expire_policy = ad
ldap_force_upper_case_realm = true
Это немного старо, но я подумал, что поделюсь решением, которое сработало для меня.
Я решил эту проблему, добавив строку в файл sssd.conf, в секции [domain/example.local] :
ad_server = <имя контроллера домена>.example.local
и сохранив
ldap_id_mapping = True
ldap_id_mapping = false
Это будет получать атрибуты POSIX из вашего AD.
Если вы установите этот параметр в True, тогда sssd будет генерировать UID, GID из SID.
Вы очистили кэш sssd?
#systemctl stop sssd; rm -r /var/lib/sss/db/* ; systemctl start sssd
Убедитесь, что у вас установлены атрибуты POSIX в AD.
Это также можно проверить с помощью ldapsearch.
Столкнулся с той же проблемой, и она была решена заменой “files” на “compat” в nsswitch.conf.
Я использовал
sed -i 's/files/compat/g' nsswitch.conf
затем systemctl restart sssd
Я думаю, что процесс останавливался на локальных файлах passwd и group, и compat позволяет выполнить дальнейшие разрешения.
Ответ или решение
Когда вы работаете с SSSD (System Security Services Daemon) на Ubuntu для аутентификации через Kerberos, может возникнуть ситуация, когда команды для получения групповой информации (например, groups
) возвращают SID (Security Identifier) вместо читаемых названий групп. Это происходит по нескольким причинам, связанным как с конфигурацией SSSD, так и с настройками Active Directory (AD).
Причины проблемы с возвращением SID вместо названий групп
-
Настройки LDAP:
- По умолчанию, если вы используете
ldap_id_mapping = True
, SSSD будет преобразовывать SID в UID и GID. Это может привести к ситуации, когда вы видите SID вместо названий групп. Чтобы исправить это, вы можете установитьldap_id_mapping = False
, что позволит SSSD извлекать POSIX-атрибуты напрямую из AD, предоставляя вам имена групп вместо числовых идентификаторов.
- По умолчанию, если вы используете
-
Отсутствие POSIX-атрибутов:
- Если в Active Directory не настроены атрибуты POSIX для групп, SSSD не сможет извлечь их, и информация будет возвращаться в формате SID. Убедитесь, что в AD установлены необходимые атрибуты, такие как
gidNumber
иmemberUid
. Эти атрибуты необходимы для корректной работы в Linux средах.
- Если в Active Directory не настроены атрибуты POSIX для групп, SSSD не сможет извлечь их, и информация будет возвращаться в формате SID. Убедитесь, что в AD установлены необходимые атрибуты, такие как
-
Конфигурация
sssd.conf
:- Обратите внимание на настройки вашего файла конфигурации SSSD. Например, для правильной работы может потребоваться указать доменный контроллер через параметр
ad_server
. Если этот параметр отсутствует, SSSD может иметь трудности с разрешением полных имен групп. Пример:ad_server = <имя_доменного_контроллера>.example.local
- Обратите внимание на настройки вашего файла конфигурации SSSD. Например, для правильной работы может потребоваться указать доменный контроллер через параметр
-
Кэширование SSSD:
- Не забывайте очищать кэш SSSD после внесения изменений в его конфигурацию. Вы можете сделать это, выполнив следующие команды:
sudo systemctl stop sssd sudo rm -r /var/lib/sss/db/* sudo systemctl start sssd
- Не забывайте очищать кэш SSSD после внесения изменений в его конфигурацию. Вы можете сделать это, выполнив следующие команды:
-
Изменение
nsswitch.conf
:- Еще одна возможная причина проблемы связана с файлом
nsswitch.conf
. Если в нем указано "files", возможно, SSSD будет пытаться искать информацию в локальных файлах, а не в AD. Изменениеfiles
наcompat
может решить эту проблему:sed -i 's/files/compat/g' /etc/nsswitch.conf sudo systemctl restart sssd
- Еще одна возможная причина проблемы связана с файлом
Рекомендации
- Проверьте настройки AD: Убедитесь, что группы настроены правильно и включают в себя необходимые POSIX-атрибуты.
- Тестирование через ldapsearch: Используйте инструмент
ldapsearch
, чтобы удостовериться, что атрибуты групп доступны и правильно настроены в AD.
Заключение
Проблема с отображением SID вместо имен групп в SSSD на Ubuntu может быть обусловлена различными факторами, включая настройки конфигурации и наличие необходимых атрибутов в Active Directory. Правильная настройка sssd.conf
, наличие POSIX-атрибутов и корректная работа с кэшами SSSD помогут вам получить читаемые названия групп вместо SID.