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

Samba: аутентификация в Active Directory с помощью winbind, но авторизация на отдельном сервере OpenLDAP

Укороченная версия

Как я могу настроить машину CentOS 7 с Samba 4.8.0, обслуживающую пользователей клиентов Windows 7 для аутентифицировать используя свои учетные данные для входа в домен (winbindd и Active Directory), но быть уполномоченный (т.е. выполнять поиск пользователей / групп) на отдельном сервере OpenLDAP?

Это было легко с CentOS 6 и резервным механизмом Samba. Это кажется более сложным, если нужно задействовать winbind.

Длинная версия

У нас есть машина CentOS 7, которая должна обмениваться файлами с машинами Windows 7 в домене Active Directory (который я не контролирую) для пользователей в домене EXAMPLE.COM, но выполнять поиск пользователей / групп на отдельном сервере OpenLDAP (что я делаю control) на ldap.mydomain.com. В текущих версиях CentOS 7, начиная с Samba 4.8.0, резервный вариант winbindd больше не доступен, требуется winbindd.

Итак, делаем следующее:

Здесь smb.conf с условиями для winbind, который не был настроен authconfig выше:

[global]
    strict locking = no
    workgroup = EXAMPLE
    server string = Samba Server Version %v
    disable netbios = yes
    log file = /var/log/samba/log.%m
    max log size = 50
    security = ads
    realm = EXAMPLE.COM
    ldap ssl = off
    idmap config * : backend = ldap
    idmap config * : ldap_url = ldaps://ldap.mydomain.com:636/
    idmap config * : ldap_base_dn = dc=mydomain,dc=com
    idmap config * : ldap_user_dn = uid=samba,ou=agents,dc=mydomain,dc=com
    idmap config * : read only = yes
    idmap config * : range = 1000-65535
    kerberos method = secrets and keytab
    load printers = no
    printcap name = /dev/null
    printing = bsd
    disable spoolss = yes
[home]
    comment = Home Directories
    path = /home/%U
    browseable = no
    writable = yes
    create mask = 0600
    directory mask = 0700
    valid users = EXAMPLE\%U
    preexec = ls /home/%U
[share]
    path = /home/share
    writable = yes
    valid users = @share
    force group = share
    create mask = 0660
    directory mask = 0770
    preexec = ls /home/share

Вот в чем проблема:

Дополнительная информация:

[2019/06/08 15:58:23.175342,  3] ../source3/winbindd/idmap.c:397(idmap_init_domain)
  idmap backend ldap not found
[2019/06/08 15:58:23.177972,  3] ../lib/util/modules.c:167(load_module_absolute_path)
  load_module_absolute_path: Module '/usr/lib64/samba/idmap/ldap.so' loaded
[2019/06/08 15:58:23.179407,  2] ../source3/lib/smbldap.c:847(smbldap_open_connection)
  smbldap_open_connection: connection opened
[2019/06/08 15:58:23.340963,  3] ../source3/lib/smbldap.c:1069(smbldap_connect_system)
  ldap_connect_system: successful connection to the LDAP server
[2019/06/08 15:58:23.343603,  1] ../source3/winbindd/idmap_ldap.c:484(idmap_ldap_db_init)
  idmap_ldap_db_init: failed to verify ID pool (NT_STATUS_UNSUCCESSFUL)
[2019/06/08 15:58:23.343810,  1] ../source3/winbindd/idmap.c:447(idmap_init_domain)
  idmap initialization returned NT_STATUS_UNSUCCESSFUL

Установка более высокого уровня отладки предполагает, что окончательный NT_STATUS_UNSUCCESSFUL исходит из попытки внести изменения в базовый, но я не понимаю, почему idmap backend ldap not found или почему Samba / winbind необходимо внести изменения в базу данных LDAP, особенно если свойство readonly установлено в smb.conf. Наконец, я не уверен, объясняют ли эти строки проблему.

У нас есть работающее развертывание CentOS 6, которое отлично работает без winbind при выполнении этой раздельной аутентификации Active Directory с отдельным поиском пользователей / групп LDAP. Как мы можем достичь желаемого с Samba 4.8.0 в CentOS 7? Почему idmap config строки в smb.conf, не указывающие Samba на получение информации о членстве в группе из ldap.mydomain.com?