配置Mavericks的LDAP client使其可以登录ubuntu上的OpenLDAP server

来源:互联网 发布:收集数据的网站 编辑:程序博客网 时间:2024/06/05 08:55

耗时3天!!mac 10.9终于可以基本正常使用LDAP登录了。


在此过程中遇到主要问题是3个:

1. mac的LDAP无法链接ubuntu上的LDAP server。

原因:mac的LDAP client默认使用SASL连接服务器。LDAP server必须可以正常使用SASL查询。

解决:在slapd的配置中,在cn=config项下面加如olcAuthzRegexp项如下:

olcAuthzRegexp: {0}uid=([^,]*),cn=[^,]*,cn=auth uid=$1,ou=Users,dc=example,dc= intra
原理是默认SASL请求的格式大概是 “cn=uid,cn=realm,cn=auth-mech,cn=auth”。LDAP内部用的是uid=xxx,ou=Users,dc=example,dc=intra。每次做验证都需要把SASL的请求格式转换成LDAP的格式。详情见:http://www.openldap.org/doc/admin24/sasl.html


2. 在mac客户端上无法正常修改用户的密码。修改完密码后老密码和新密码都不能用了。

原因:不太清楚。猜想是mac的客户端把密码二次加密了。

解决:在slapd的配置项olcDatabase={-1}frontend,cn=config下面把密码保存方式改称CLEARTEXT。具体如下

olcPasswordHash: {CLEARTEXT}

坑爹的是这个参数在OpenLDAP的手册里面里面没有!只有在slapd-config的man page里面才能找到。⚠我在添加用户的时候使用的ldapscripts包里面带的ldapadduser和ldapsetpasswd。即使我设置成CLEARTEXT了以后,用他们添加的用户的密码还是hash过的。这里的细节不太清楚。以后有时间再搞。


3. 如何映射。

直接选择UNIX标准。也就是RFC2307那个。其中只需要改几个地方:

(1) NFSHomeDirector -> #/Users/$uid$。这样做的好处是每个用户会在登录的时候在机器上生成自己的目录。没有这个,登录的时候mac会去找网络上的home。进入机器后会不停的出现问题,导致机器无法使用,必须强行重启。坏处是在每台登录过的机器上会生成一个目录。好一点的办法,也是麻烦一点儿的办法是自动mount制定的NFS目录。这个比较麻烦(要先加samba.schema, apple.schema, 然后LDAPserver上要设置automount的内容),优先级不高,先不搞了。

(2)Users和Groups的搜索的base要改称 ou=Users,dc=example,dc=intra 和 ou=Groups,dc=example,dc=intra。


⚠以上内容的前提是在数据库里面已经生成好了

# example.intradn: dc=<span style="font-family: Arial, Helvetica, sans-serif;">example</span><span style="font-family: Arial, Helvetica, sans-serif;">,dc=intra</span># admin, example.intradn: cn=admin,dc=example,dc=intra# Users, example.intradn: ou=Users,dc=example,dc=intra# Groups, example.intradn: ou=Groups,dc=example,dc=intra# Machines, example.intradn: ou=Machines,dc=example,dc=intra# associates, Groups, example.intradn: cn=somegroup,ou=Groups,dc=example,dc=intra# ckf, Users, xemagic.intradn: uid=someuser,ou=Users,dc=example,dc=intra

-----------------------------

使用的工具和一般的命令

slapd, ldapscripts

命令:

ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b <search base> <filter> <attributes>
ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f change_content.ldif
ldapsearch -x -w password -D cn=xxx,ou=Users,dc=example,dc=intra -H ldap:/// -b .......
ldapmodify -x -D cn=xxx,ou=Users,dc=example,dc=intra -H ldap:/// -f change_content.ldif

一些链接:

http://www.openldap.org/doc/admin24/

https://help.ubuntu.com/14.04/serverguide/openldap-server.html


服务器端查看日志:

默认情况下,slapd只打开低级的loglevel (cn=config下olcLogLevel: none)。在这个级别下很难看到连接里面发生了什么。要分析错误需要打开更多的日志:olcLogLevel: stats

LDAP 的log在/var/log/syslog里面。


配置ubuntu客户端自动创建用户目录。

生成一个文件/usr/share/pam-configs/my_mkhomedir包含一下内容

Name: activate mkhomedirDefault: yesPriority: 900Session-Type: AdditionalSession:        required                        pam_mkhomedir.so umask=0022 skel=/etc/skel
然后执行pam-auth-update。在提示界面里给my_mkhomedir打勾即可。

------------------------------

LDAP太复杂了。还有许许多多的方面没有涉及到。以后慢慢搞。



0 0
原创粉丝点击