Как можно настроить Samba для использования LDAP только для аутентификации?

Я хочу настроить новый файловый ресурс Samba, который использует LDAP для внутренней аутентификации . Сервер LDAP уже настроен, а машина, на которой будет установлен сервер Samba, уже настроена для разрешения доступа по SSH с использованием аутентификации LDAP.

Похоже, что наиболее распространенные случаи использования, задокументированные для интеграции Samba / LDAP, включают хранение схем Samba на сервере LDAP, синхронизацию паролей, разрешение обновления паролей к LDAP через Samba и т. Д. Я' Я не ищу ничего из этого - все, что я хочу сделать, это сделать так, чтобы сервер Samba анонимно аутентифицировался через LDAP и получал данные группы о пользователе, чтобы авторизация могла быть обработана в конфигурации Samba.

Если это важно:

  • LDAP : OpenLDAP 2.4 на RHEL 7.4
  • SMB: Samba 4.7 на Ubuntu 18.04

Вот что у меня есть:

[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 изменять LDAP
  • Загрузить схему Samba в LDAP

Я просто хочу, чтобы Samba:

  • Подтверждал, что для входящих запросов настроен действительный пользователь / пароль в LDAP.
  • Использовать данные LDAP о пользователе (имя, группы, и т. д.) для собственной конфигурации разрешений для общего доступа

Что еще мне нужно сделать?

3
задан 18 October 2018 в 22:25
1 ответ

Я предполагаю, что вы хотите запускать Samba в режиме простого WinNT-совместимого контроллера домена, а не в режиме полной Active Directory.

Сначала вы должны понять, что SMB-аутентификация основана на NTLM-хэше пароля. В основном, это чистый текстовый мандат для аутентификации, которая может быть сохранена в пользовательских записях LDAP, но в отдельном атрибуте sambaNTPassword. Атрибут userPassword вообще используется не, и Samba не посылает запрос на LDAP сервер для проверки пароля пользователя.

=> Вы должны установить схему Samba и добавить вспомогательный объектный класс sambaSamAccount к пользовательским записям.

При правильной настройке вы должны уполномочить пользователя службы Samba DC на чтение этого атрибута sambaNTPassword. Ваши ACL должны запретить кому-либо считывать этот атрибут.

=> Вы должны создать служебную запись для Samba DC в каталоге LDAP и предоставить доступ на чтение к пользовательским записям.

Также существует оверлей сервера OpenLDAP с именем slapo-smbk5pwd, который обновляет sambaNTPassword в случае, если атрибут userPassword установлен с помощью команды Password Modify extended operation (см. RFC 3062). При использовании этого параметра вам не придется предоставлять Samba доступ на запись для записи пользовательской записи.

.
2
ответ дан 3 December 2019 в 06:54

Теги

Похожие вопросы