Как я могу настроить машину 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.
Итак, делаем следующее:
systemctl stop firewalld
)setenforce 0
)samba
, samba-client
, samba-winbind
, samba-winbind-clients
, и samba-winbind-krb5-locator
net ads join -U 'user'
(домен позволяет без прав администратора создавать учетные записи компьютеров; net ads testjoin
возвращает 'Join is OK')authconfig --enablesssd --enablesssdauth --disablemkhomedir --update
Здесь 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
Вот в чем проблема:
smbclient //myhost.fqdn/home -U <user>
выполняет аутентификацию winbind и успешно подключается к общему ресурсу для любого значения <user>
smbclient //myhost.fqdn/share -U <user
выполняет аутентификацию winbind, но не может определить с ldap.mydomain.com, что <user>
находится в группе 'share', таким образом возвращаясь tree connect failed: NT_STATUS_ACCESS_DENIED
Дополнительная информация:
testparm
не показывает ошибок или предупрежденийwbinfo -u
возвращает список пользователей домена EXAMPLE.COMwbinfo -g
возвращает список групп домена EXAMPLE.COMlog.winbindd-idmap
показывает:[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
?