Я собираюсь настроить новый файловый ресурс Samba, который использует LDAP для внутренней аутентификации. Сервер LDAP уже настроен, а машина, на которой будет установлен сервер Samba, уже настроена для разрешения доступа по SSH с использованием аутентификации LDAP.
Кажется, что наиболее распространенные случаи использования, задокументированные для интеграции Samba / LDAP, включают хранение схем Samba на сервере LDAP, синхронизацию паролей, разрешение обновления паролей к LDAP через Samba и т. Д. Я не ищу ничего из этого - все, что я хочу сделать, это сделать так, чтобы сервер Samba анонимно аутентифицировался через LDAP и получал данные группы о пользователе, чтобы авторизация могла быть обработана в конфигурации Samba.
Если это важно:
Вот что у меня есть на данный момент:
[global]
server string = Samba Server (%v)
workgroup = WORKGROUP
interfaces = eno1
server role = standalone server
log file = /var/log/samba/smb.log
max log size = 10000
log level = 3 passdb:5 auth:5
passdb backend = ldapsam:ldaps://hostname
ldap suffix = dc=hostname,dc=TLD
ldap user suffix = cn=users,cn=accounts
ldap group suffix = cn=groups,cn=accounts
[Share1]
path = /srv/share1
valid users = @group1, @group3
force group = @group1
read only = no
browsable = yes
[Share2]
path = /srv/share2
valid users = @group2, @group3
force group = @group2
read only = no
browsable = yes
Однако Samba не запускается. Состояние Systemctl отображает следующее:
../source3/passdb/secrets.c:362(fetch_ldap_pw)
fetch_ldap_pw: neither ldap secret retrieved!
../source3/passdb/pdb_ldap.c:6542(pdb_init_ldapsam_common)
pdb_init_ldapsam_common: Failed to retrieve LDAP password from secrets.tdb
../source3/passdb/pdb_interface.c:180(make_pdb_method_name)
pdb backend ldapsam:ldaps://hostname did not correctly init (error was NT_STATUS_NO_MEMORY)
Я бы хотел не необходимо сделать следующее:
Я просто хочу, чтобы Samba:
Что мне еще нужно делать?
Я предполагаю, что вы хотите запускать Samba в режиме простого WinNT-совместимого контроллера домена, а не в полном режиме Active Directory.
Сначала вы должны понять, что аутентификация SMB основана на хэше пароля NTLM. В основном это учетные данные в открытом виде для аутентификации запрос-ответ, которые могут храниться в пользовательских записях LDAP, но в отдельном атрибуте. sambaNTPassword. Атрибут пользовательский пароль является не используется вообще, и Samba не отправляет запрос на привязку к серверу LDAP для проверки пароля пользователя.
=> Вы должны установить схему Samba и добавить вспомогательный объектный класс sambaSamAccount к пользовательским записям.
При правильной настройке вы должны авторизовать пользователя службы Samba DC для чтения этого атрибута. sambaNTPassword. Ваши ACL должны препятствовать прочтению этого атрибута кем-либо еще.
=> Вы должны создать служебную запись для Samba DC в вашем каталоге LDAP и предоставить доступ на чтение для пользовательских записей.
Существует также наложение сервера OpenLDAP, называемое slapo-smbk5pwd какие обновления sambaNTPassword в случае атрибута пользовательский пароль устанавливается с помощью расширенной операции изменения пароля (см. RFC 3062). Используя это, вам не нужно будет предоставлять Samba доступ на запись для записи пользователя.