如何配置 Samba 以仅使用 LDAP 进行身份验证?

如何配置 Samba 以仅使用 LDAP 进行身份验证?

我正在寻找设置使用 LDAP 进行后端身份验证的新 Samba 文件共享的方法。LDAP 服务器已设置完毕,并且 Samba 服务器所在的计算机已设置为允许使用 LDAP 身份验证进行 SSH 访问。

似乎记录的 Samba/LDAP 集成的最常见用例涉及在 LDAP 服务器上存储 Samba 模式、同步密码、允许通过 Samba 更新 LDAP 密码等等。我并不需要这些 - 我只想让 Samba 服务器通过 LDAP 进行匿名身份验证,并检索用户的组数据,以便可以在 Samba 配置中处理授权。

如果重要的话:

  • LDAP:RHEL 7.4 上的 OpenLDAP 2.4
  • SMB:Ubuntu 18.04 上的 Samba 4.7

以下是我目前所掌握的信息:

[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 status 显示以下内容:

../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 的用户数据(姓名、群组等)进行自己的共享权限配置

我还需要做什么?

答案1

我假设您想在简单的 WinNT 兼容域控制器模式下运行 Samba,而不是完整的 Active Directory 模式。

首先,您必须了解 SMB 身份验证基于 NTLM 密码哈希。基本上,这是质询-响应身份验证的明文凭证,可以存储在 LDAP 用户条目中,但存储在单独的属性中sambaNT密码。 属性用户密码不是根本没有使用,并且 Samba 不会向 LDAP 服务器发送绑定请求来检查用户的密码。

=> 您必须安装 Samba 模式并添加辅助对象类sambaSam帐户用户条目。

在正确的设置中,你必须授权 Samba DC 的服务用户读取此属性sambaNT密码。您的 ACL 必须阻止任何其他人读取该属性。

=> 您必须在 LDAP 目录中为 Samba DC 创建服务条目并授予对用户条目的读取权限。

还有一个名为slapo-smbk5pwd哪些更新sambaNT密码以防属性用户密码通过密码修改扩展操作进行设置(参见RFC 3062)。通过使用此方法,您无需授予 Samba 对用户条目的写访问权限。

相关内容