LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1095|回复: 0

samba与ldap整合之ldapsam:trusted释疑

[复制链接]
发表于 2009-2-18 12:35:24 | 显示全部楼层 |阅读模式
首先,从smb.conf(5)里面对这个指令的说明中,我们可以知道:默认情况下,使用ldap作为后端的pdc会通过nss来查询用户/组信息。比如,看看一个用户是那些组的成员,但是按照Unix的默认处理,需要枚举整个/etc/group文件,或者ldap里面的对应数据,这样子效率会比较低。
在大型环境中,通过使用ldapsam:trusted可以获得更好的性能,这样samba会绕过nss来查询用户/组的成员关系。
手册也中还强调:要实现这种功能,需要把完整的unix账号信息存储在ldap中对应的posixAccount/posixGroup中,并且每个这样的对象需要通过sambaSamAccount 对象类来存储samba的信息。


似乎都说清楚了,可是,我们实现的时候还是有些问题:

1.是否已经不再需要nss了?

  答案是:NO,我们仍然需要nss的支持,所以/etc/nsswitch.conf中仍然要指明使用ldap.  ldapsam:trusted查询用户/组关系的时候是不需要nss了,但是,系统还需要对从samba登录的用户作权限检查等,它们位于samba之外,所以还需要nss.

2.为什么用smbldap-populate建立出来的root账户,在启用了ldapsam:trusted之后不能登录了呢?

这个问题,其实手册也中已经说清楚了:ldap要有完整的Unix用户/组信息才可以使用ldapsam:trusted.可是,看看你的root账户的gidNumber,它的值是0!但是smbldap-populate建立出来的目录树中并没有这样一个group。
所以,你若是:
smbclient -L localhost -U root
通常会得到下面的错误信息:

[2009/02/18 11:51:26, 2] lib/smbldap.c:smbldap_open_connection(786)
  smbldap_open_connection: connection opened
[2009/02/18 11:51:26, 2] passdb/pdb_ldap.c:init_sam_from_ldap(545)
  init_sam_from_ldap: Entry found for user: root
[2009/02/18 11:51:26, 0] auth/auth_sam.c:check_sam_security(353)
  check_sam_security: make_server_info_sam() failed with 'NT_STATUS_UNSUCCESSFUL
'
[2009/02/18 11:51:26, 2] auth/auth.c:check_ntlm_password(319)
  check_ntlm_password:  Authentication for user [root] -> [root] FAILED with err
or NT_STATUS_UNSUCCESSFUL

解决方法:自己在ldap中建立一个gidNumber为0的group,或者把root的gidNumber改为一个现有的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表