Почему sssd возвращает SID-номера вместо имен групп в Ubuntu?

Вопрос или проблема

Я пробую 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 вместо названий групп

  1. Настройки LDAP:

    • По умолчанию, если вы используете ldap_id_mapping = True, SSSD будет преобразовывать SID в UID и GID. Это может привести к ситуации, когда вы видите SID вместо названий групп. Чтобы исправить это, вы можете установить ldap_id_mapping = False, что позволит SSSD извлекать POSIX-атрибуты напрямую из AD, предоставляя вам имена групп вместо числовых идентификаторов.
  2. Отсутствие POSIX-атрибутов:

    • Если в Active Directory не настроены атрибуты POSIX для групп, SSSD не сможет извлечь их, и информация будет возвращаться в формате SID. Убедитесь, что в AD установлены необходимые атрибуты, такие как gidNumber и memberUid. Эти атрибуты необходимы для корректной работы в Linux средах.
  3. Конфигурация sssd.conf:

    • Обратите внимание на настройки вашего файла конфигурации SSSD. Например, для правильной работы может потребоваться указать доменный контроллер через параметр ad_server. Если этот параметр отсутствует, SSSD может иметь трудности с разрешением полных имен групп. Пример:
      ad_server = <имя_доменного_контроллера>.example.local
  4. Кэширование SSSD:

    • Не забывайте очищать кэш SSSD после внесения изменений в его конфигурацию. Вы можете сделать это, выполнив следующие команды:
      sudo systemctl stop sssd
      sudo rm -r /var/lib/sss/db/*
      sudo systemctl start sssd
  5. Изменение 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.

Оцените материал
Добавить комментарий

Капча загружается...