OpenLDAP

因为现在公司里的员工帐号分为邮件、上网、Samba、SNS、Desknets等帐号,管理起来非常的麻烦,特别是员工入社和退社时需要在每个服务器上做一次操作,加大了管理成本,主要是把我的复杂化了很多,所以想把帐号统一起来,因为以前也没有接触过Openldap,所以这次是从头学起,包括数据库部分。 特作此笔记方便以后自己记录和查找相关资料

base.ldif

# more base.ldif
dn: dc=atlantiss,dc=jp
objectclass: dcObject
objectclass: organization
o: Company
dc: atlantiss

dn: cn=root,dc=atlantiss,dc=jp
objectclass: organizationalRole
cn: root

ldap基本命令

DB_CONFIG配置

set_cachesize 0 268435456 1   #缓存大小

# Data Directory
#set_data_dir db

# Transaction Log settings
set_lg_regionmax 262144
set_lg_bsize 2097152
#set_lg_dir logs
set_flags DB_LOG_AUTOREMOVE    #自动清除DB生成的LOG文件

清空数据库

ldapdelete -x -w 'isns' -D'rn=isns,dc=ntt,dc=co.jp' -r 'rn=isns,dc=ntt,dc=co.jp'

ldapadd

# ldapadd -x -D "cn=Manager,dc=yepn,dc=net" -W -f users.ldif

简单解释:
-x:使用认证;
-D:指定使用哪个 dn 来操作;
-W:提示输入密码;
-f:指定要添加的 entry 的内容从文件中读入;
-c: 忽略错误继续执行

slappasswd

slappasswd -h{hash} #现在支持的加密算法 {CRYPT}, {MD5},{SMD5}, {SSHA}, {SHA}.
                     默认为{SSHA}

Berkeley DB 安装

OpenLDAP需要DB数据库支持,所以先安装DB数据库。 下载Berkeley DB 4.6.21.tar.gz

#wget Berkeley DB-URL
#tar -zxvf Berkeley DB 4.6.21.tar.gz
#cd db-4.6.21
# ../dist/configure
# make
# make install

DB的安装过程很简单,如果缺少相关依赖库请用yum查找

OpenLDAP 安装

下载最新版的OpenLDAP 2.4.6,虽然很多前辈说过新的未必好,但是因为不知道那个好,所以先下来用用再说。

以下为简单安装过程,参照OpenLDAP主页安装

#wget OpenLDAP-URL
#tar -zxvf openldap-2.4.7.tgz
#cd openldap-2.4.7
#./configure           #此处也可参照Postfix主页上的参数进行安装
#make depend && make
#make test            #第一次安装一定要执行此步,避免以后安装出错
#make install
运行CentOS系统用yum安装比较简单

使用ldapmodify批量添加属性值

问题:
在ou=People,o=abc,dc
=super, dc=com树下放了10000个用户节点(objectClass=inetOrgPerson, objectClass=inetuser)。
其中有超过9000个用户的属性inetuserstatus的值为不正确的"true",需要更正为 "Active"。

解决方法:
由 于需要修改的目录节点数目十分庞大,手工书写修改命令不太可行。所以,需要考虑用工具生成。考虑到ldapsearch的输出可以指定属性,
可以在 ldapsearch输出的基础上加以修改得到最终的LDIF文件。首先,利用ldapsearch得到所有需要修改的目录节点的dn,并保存到文件 need_chg.dn:

ldapsearch -D "cn=Directory Manager" -w password -b "ou=People,o=abc,dc=super,dc=com" "(inetuserstatus=true)" dn > need_chg.dn
得到的need_chg.dn文件示例如下:
uid=xulingyan,ou=people,o=abc,dc=super,dc=com

uid=tn0001,ou=people,o=abc,dc=super,dc=com

uid=tn0002,ou=people,o=abc,dc=super,dc=com

uid=tn0003,ou=people,o=abc,dc=super,dc=com

uid=tn0004,ou=people,o=abc,dc=super,dc=com


然后编写sed脚本在每个dn前面加上"dn: ",并加上以下行:
changetype: modify
replace: inetuserstatus
inetuserstatus: Active

修改后的need_chg.dn文件示例如下:
dn: uid=xulingyan,ou=people,o=abc,dc=super,dc=com
changetype: modify
replace: inetuserstatus
inetuserstatus: Active

dn: uid=tn0001,ou=people,o=abc,dc=super,dc=com
changetype: modify
replace: inetuserstatus
inetuserstatus: Active

dn: uid=tn0002,ou=people,o=abc,dc=super,dc=com
changetype: modify
replace: inetuserstatus
inetuserstatus: Active

dn: uid=tn0003,ou=people,o=abc,dc=super,dc=com
changetype: modify
replace: inetuserstatus
inetuserstatus: Active

dn: uid=tn0004,ou=people,o=abc,dc=super,dc=com
changetype: modify
replace: inetuserstatus
inetuserstatus: Active

该sed脚本应该如下:

/^uid=/ {
a\
changetype: modify\
replace: inetuserstatus\
inetuserstatus: Active
s/uid/dn: uid/
}

最后,运行ldapmodify -h host -p port -D -w -f 即可。
添加多个属性时需要用 - 隔开
例:
dn: uid=arima,ou=Users,dc=yepn,dc=net
add: radiusSessionTimeout
radiusSessionTimeout: 43200
-
add: radiusTunnelType
radiusTunnelType: VLAN
-
add: radiusTunnelMediumType
radiusTunnelMediumType: IEEE-802
-
add: radiusTunnelPrivateGroupId
radiusTunnelPrivateGroupId: 160
-
add: radiusTerminationAction
radiusTerminationAction: RADIUS-Request
-

总结:
熟悉LDIF文件格式并有效运文本处理工具可以高效率地解决一些看似棘手的难题。

源码安装

安装openldap 2.4以上版本 需要BerkeleyDB 4.6以上版本

configure: error: BDB/HDB: BerkeleyDB not available
解决方法:
[root@localhost BerkeleyDB]# tar –zxvf bdb-4.8.24.tar.gz
[root@localhost BerkeleyDB]# cd db-4.8.24
[root@localhost db-4.8.24]# cd build_unix/
[root@localhost db-4.8.24]# ../dist/configure
[root@localhost db-4.8.24]# make
[root@localhost db-4.8.24]# make install
[root@localhost openldap-2.4.19]#export CPPFLAGS="-I/usr/local/BerkeleyDB.4.8/include"
[root@localhost openldap-2.4.19]#export LDFLAGS="-L/usr/local/lib -L/usr/local/BerkeleyDB.4.8/lib -R/usr/local/BerkeleyDB.4.8/lib"
[root@localhost openldap-2.4.19]#export LD_LIBRARY_PATH="/usr/local/BerkeleyDB.4.8/lib"

主从同步

首先,把主从服务器关闭。通过以下三步操作静态同步主从服务器上的数据: 把主服务器上/var/lib/ldap目录下的所有数据库文件全部拷贝到从服务器的同目录中,覆盖原有文件。 把主服务器上的/etc/ldap/schema目录下的所有schema文件拷贝到从服务器的同目录中,覆盖原有文件。 把主服务器上/etc/ldap/slapd.conf文件拷贝到从服务器的同目录中,覆盖原有文件。 配置主服务器上的slapd.conf文件,取消replogfile指令前的注释符号,取消后的结果如下: # Where to store the replica logs for database #1 replogfile /var/lib/ldap/replog 增加replica指令,如:

#replace config
replica uri=ldap://192.168.6.195:389     #指定从服务器主机名和端口号
        binddn="cn=admin,dc=com"         #指定需同步的DN的管理员
        bindmethod=simple credentials=1  #指定验证方式和需同步的DN的管理员密码

配置从服务器上的slapd.conf文件,增加updatedn指令,如: updatedn “cn=admin,dc=com” #与主服务器的binddn对应 在从服务器的配置文件中,不要包含replica和replogfile指令。

先启动主服务器的slapd和slurpd,再启动从服务器的slapd。

/var/lib/openshift/bccd8eac1968476490eaee9ced33c7bf/app-root/runtime/repo/php/data/pages/openldap.txt · 最后更改: 2012/09/07 09:21 (外部编辑)
到顶部
CC Attribution-Noncommercial-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0