用户添加 smbuser

用户添加 smbuser

总结假设有一个基本的(但功能齐全的)LDAP/PAM 配置,当我尝试将现有的 UNIX/LDAP 用户添加到 Samba 时,smbpasswd 为何会失败并显示此错误消息?


我在 Debian 服务器上设置了一个基本但可以正常工作的 LDAP,其中有几个帐户,并加载了密码等,并且已创建了它们相应的 UNIX 帐户。我还有一个基本的 PAM/NSS 配置,似乎可以正常工作。

我可以通过 LDAP 登录并使用帐户。现在我想使用 Samba 配置一个简单的文件共享,并让它通过 PAM/LDAP 后端对用户进行身份验证。我现在需要使用该smbpasswd实用程序创建 Samba 用户,但这会导致错误。

首先,我设置了 LDAP 密码:

# smbpasswd -W

然后我尝试添加一个已在 LDAP 中配置的用户:

# smbpasswd -a new_user
New SMB password:
Retype SMB password:
Failed to add entry for user new_user.

所以我不知道为什么这个命令会失败。起初我以为是因为我需要让 LDAP 目录中的用户成为sambaSamAccounts。所以我更新了用户的 LDIF 文件,如下所示:

dn: cn=new_user,ou=group,dc=example,dc=com
cn: new_user
gidNumber: 1000
objectClass: top
objectClass: posixGroup

dn: uid=new_user,ou=people,dc=example,dc=com
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: sambaSamAccount
uid: new_user
uidNumber: 1000
gidNumber: 1000
cn: test user
sn: new_user
mail: [email protected]
loginShell: /bin/bash
homeDirectory: /home/new_user
sambaSID: 3000
sambaDomainName: TEST-ROME

对上述 LDIF 所做的唯一更改是添加了sambaSamAccountobjectClass和。最终我想实现一个 PDC,因此我很确定无论如何我都需要sambaSID一个。sambaDomainNamesambaSamAccount

然而,经过所有这些之后,我仍然遇到同样的错误。

那么如何调试这个错误呢?


解决了按照建议调试守护进程后,我发现smbpasswd正在使用空base dn字段执行查询,因此没有返回任何结果。通过将ldap suffixldap user suffix字段添加到我的中解决了这个smb.conf问题。之后我意识到我也需要一种正确的方法来生成 sambaSID,但这是一个单独的问题。

答案1

我发现调试此问题的最佳方法是从 LDAP 的角度查看发生了什么。首先执行“ps aux |grep slapd”以获取传递给守护进程的参数,在我的系统(CentOS 5.6)上,我得到:

/usr/sbin/slapd -h ldap:/// -u ldap

停止 slapd 守护进程(/etc/init.d/slapd stop 或类似命令),然后使用“-d”标志以交互方式(即从命令行)运行守护进程。-1(作为 -d 的参数)是一个很好的起点,即它记录所有内容,即

/usr/sbin/slapd -h ldap:/// -u ldap -d -1

如果信息量太大,请仔细阅读“-d”的参数 - 我记得我用了 256 相当多。这样做的目的是让 slapd 给出一些有用的输出,然后复制问题。您可能会得到一些有用的输出,这些输出显示了哪里出了问题。

答案2

只需将用户添加到您的本地登录用户中

例如:

用户添加 smbuser

smbpasswd -a smbuser

然后你才可以将该用户添加为 samba 用户

相关内容