2011-08-10

今天一行代码都没写。昨天到了一台服务器,DELL T310。今天开始折腾它。先装了一个fedora 15,然后是subversion、openldap、samba。openldap的官方手册和fedora系统下的这个严重对不上,在网上搜种种教程,凡是含有slapd.conf的统统滤掉。fedora的手册上找到这么一句话:"Note that OpenLDAP no longer reads its configuration from the /etc/openldap/slapd.conf file." fedora下要去修改/etc/openldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif 。samba的官方手册着实让我震惊了,巨长无比,但是想查一些简单问题吧,比如在standalone模式下如何把passdb换成openldap,木有写。不过也难怪,Windows AD本来就是超级超级复杂的东西,如果把smbd当windows AD用,那非得好几本书来写才行。

我想把subversion和samba的身份认证都统一成ldap,结果只完成了前者。我想让用户自己能通过ldap协议修改密码,比如这样

ldappasswd -x -D "uid=scm,ou=users,dc=www,dc=sunchangming,dc=com" -W -S "uid=scm,ou=users,dc=www,dc=sunchangming,dc=com"

但是它报告说Result: Insufficient access (50)

因为默认情况下openldap不让用户自己修改密码,以前完美的ldap server也是如此,然后我去找panpan,看他很快速的修改了一个配置,就好了。这次我也想改,但是一头抓瞎。

我觉得应该是得通过修改/etc/openldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif这个文件增加授权,比如
olcAccess: to attrs=userPassword by self write by anonymous auth by dn.base="cn=Manager,dc=www,dc=sunchangming,dc=com" write by * read
但是如果增加了这个,我的subversion就不好使了。
httpd中的配置如下:
<Location /repos>
DAV svn
SVNParentPath /export/svn/
SVNPathAuthz off
AuthzSVNAccessFile /etc/subversion/access
AuthType Basic
AuthName "Authorization Realm"
AuthBasicProvider ldap
AuthLDAPURL "ldap://localhost:389/ou=users,dc=www,dc=sunchangming,dc=com"
Require valid-user
</Location>
日志里报告说
[Wed Aug 10 17:23:57 2011] [error] [client 124.205.250.51] user scm not found: /repos/doc

用ldapsearch查找的时候必须加上-D 和-W,输入密码才能查找,否则就是not found。

最后我把的那个修改密码的php页面稍微改了一下,改成先用old password进行bind,如果成功,换成admin账户进行bind,然后change password。缺点是需要把admin账户的密码以明文写在代码中,反正是自己用用,就这么着吧。

亲爱的,投个票吧,Unix/Linux下,最复杂最难维护的网络服务是:

  1. bind
  2. sendmail
  3. inn
  4. samba

你选哪个?

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥