- OpenLDAP(使用 ldapsearch 和 php 脚本)
- 在没有 LDAP 的情况下使用 samba
这就是我access.log
所说的(我所有的 smb 数据都被转储):
[2013/02/10 19:41:25, 2] passdb/init_sam_from_ldap(545): Entry found for user: ***<username>***
[2013/02/10 19:41:25, 0] passdb/pdb_get_group_sid: Failed to find Unix account for ***<username>***
[2013/02/10 19:41:25, 1] auth/make_server_info_sam(589): User ***<username>*** in passdb, but getpwnam() fails!
[2013/02/10 19:41:25, 0] auth/check_sam_security: make_server_info_sam() failed with 'NT_STATUS_NO_SUCH_USER'
[2013/02/10 19:41:25, 2] auth/check_ntlm_password: Authentication for user [***<username>***] -> [***<username>***] FAILED with error NT_STATUS_NO_SUCH_USER
这就像 OpenLDAP 数据库中的密码哈希值与 samba 假设它应该收到的密码哈希值不匹配,或者类似的情况。 笔记:当提供错误的密码时,它会说错误的密码。这些日志用于使用正确的凭据进行完美的身份验证,或者至少我尝试这样做(通过 gnome filebrowser,用户名:用户名,工作组:WORKGROUP,密码:纯文本密码)
这是我的 smb.conf:
[global]
unix charset = LOCALE
netbios name = test
server string = test
passdb backend = ldapsam:"ldap://<ip>"
username map = "/etc/samba/smbusers"
log level = 2
syslog = 0
log file = /var/log/samba/access.log
max log size = 0
name resolve order = hosts dns
load printers = No
add user script = /usr/bin/smbldap-useradd -m '%u'
delete user script = /usr/bin/smbldap-userdel '%u'
add group script = /usr/bin/smbldap-groupadd -p '%g'
delete group script = /usr/bin/smbldap-groupdel '%g'
add user to group script = /usr/bin/smbldap-groupmod -m '%g' '%u'
delete user from group script = /usr/bin/smbldap-groupmod -x '%g' '%u'
add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u"
set primary group script = /usr/bin/smbldap-usermod -g '%g' '%u'
domain logons = Yes
domain master = Yes
wins support = Yes
ldap admin dn = cn=admin,dc=test,dc=local
ldap group suffix = ou=Groups
ldap user suffix = ou=People
ldap suffix = dc=test,dc=local
ldap ssl = no
ldap passwd sync = yes
这是我的 ldap.conf
** 服务器已关闭,所以我没有此自动取款机**
根据wireshark OpenLDAP在搜索时发送正确的信息uid
,但在实际登录时我思考桑巴舞说了一些关于“单层”我认为这可能是相关的,这就是它失败的地方,并且“错误”的数据被发送回 samba。
Samba 只是拒绝使用任何 LDAP 登录。
分享:
它们无需 LDAP 即可工作,因此共享没问题! (即使使用非 LDAP 身份验证)
添加unix用户
这有效...然后我可以访问共享,但我已经明确告诉 samba不是使用本地身份验证,我选择了 LDAP?
答案1
我遇到了类似的问题,samba 使用 LDAP 作为后端,但仍然需要用户的本地 Unix 帐户才能允许域登录。
对我来说,问题在于/etc/nsswitch.conf
列出了用于查询用户帐户和组等的数据库的文件。您尚未指定您正在使用的 Linux 操作系统,因此我将向您提供我在 Ubuntu 上解决该问题所用的步骤盒子。
首先我必须安装该libnss-ldap
软件包:
sudo apt-get install libnss-ldap
还有几个依赖项,其中之一是ldap-auth-config
.如果 OpenLDAP 服务器上的 ACL 阻止匿名搜索,那么您将需要cn=admin,dc=example,dc=com
在配置此包期间指定一个 LDAP 帐户,例如可以访问 LDAP 数据库的帐户。
接下来,编辑该/etc/nsswitch.conf
文件。将“ldap”添加到密码、组和影子的三个条目中,如下所示。有些系统使用“compat”,其他系统使用“文件”,因此您可以只保留第一位。
passwd: compat ldap
group: compat ldap
shadow: compat ldap
更改应立即生效。您可以通过发出以下命令来确认它是否有效getent
:
getent passwd
它应该列出所有本地和 LDAP 用户帐户。