smbpasswd:无法为用户添加条目

tl; dr假设一个基本的(但function正常的)LDAP / PAMconfiguration,当我尝试将一个现有的UNIX / LDAP用户添加到Samba时,smbpasswd如何失败并显示此错误消息?


我有一个基本的,但工作在Debian服务器上的LDAP设置,有很less的帐户加载了密码等,他们相应的UNIX帐户已经创build。 我也有一个基本的PAM / NSSconfiguration似乎正在工作。

我可以通过LDAPlogin和使用帐户。 现在我想使用Sambaconfiguration一个简单的文件共享,并通过PAM / LDAP后端对用户进行身份validation。 我处于需要使用smbpasswd实用程序创buildSamba用户的地步,但是这会导致错误。

首先,我设置LDAP密码:

 # smbpasswd -W 

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

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

所以我不知道为什么这个命令是失败的。 起初我想,这是因为我需要使LDAP目录中的用户成为sambaSamAccount 。 所以我更新我的用户的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所做的唯一更改是将sambaSamAccountobjectClasssambaSIDsambaDomainName 。 最终我想实现一个PDC,所以我很确定我需要一个sambaSamAccount无论如何。

不过,毕竟我还是得到了同样的错误。

那么如何debugging这个错误?


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

我发现debugging这个问题的最好方法是从LDAP的angular度来看看发生了什么。 首先在我的系统(CentOS 5.6)上执行“ps aux | grep slapd”来获取传递给守护进程的参数:

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

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

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

如果这是太多的信息,阅读参数“-d” – 从内存我用了256比较。 这个想法是得到一些有用的输出,然后复制这个问题。 你可能会得到一些有用的输出结果,显示事情出错的地方。

只需将用户添加到您的本地login用户

例如:

useradd smbuser

smbpasswd – 一个smbuser

那么只有你可以添加用户作为桑巴用户