分类: LINUX
2011-04-06 11:11:16
本文档只讲述OpenLDAP具体应用,不阐述LDAP协议及原理,有兴趣可以自己参阅相关资料。OpenLDAP是基于服务端和客户端模式的,下面分两部分逐步介绍服务端和客户端的配置。
PS:(阅读本文需要一些基本linux知识,yum配置,vim编辑器使用,linux系统服务配置,并且对ldap目录服务有个基本的了解。)。
一,OpenLDAP服务端配置(基于linux平台)
1,安装软件:httpd,openldap-servers,openldap,phpldapadmin(不建议使用,使用ldapadmin更好)
phpldapadmin rpm包从 下载
将系统iso镜像配置进yum软件仓库
yum install openldap openldap-servers -y
yum install phpldapadmin-1.0.1-1.el5.noarch.rpm -y --nogpgcheck
这样会自动安装一些关联的软件。
2,相关配置文件:
用vim编辑/etc/openldap/slapd.conf,
找到suffix,rootdn,rootpw关键词
分配配置为:
suffix "dc=example,dc=com"
rootdn "cn=root,dc=example,dc=com"
rootpw secret
添加以下访问授权到文档中的任意位置
access to attrs=shadowLastChange,userPassword
by self write
by * auth
access to *
by * read
拷贝数据库配置文件到/var/lib/ldap目录,并将目录拥有者(组)改为ldap用户(组)
cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap:ldap /var/lib/ldap
编辑/etc/httpd/conf.d/phpldapadmin.conf
将127.0.0.1 修改为all这样其他自己也可以访问。
编辑/etc/phpldapadmin/config.php,修改以下行,并添加相对应ldap信息。
$ldapservers->SetValue($i,'server','name','My LDAP Server');
$ldapservers->SetValue($i,'server','host','127.0.0.1');
$ldapservers->SetValue($i,'server','port','389');
$ldapservers->SetValue($i,'server','base',array('dc=example,dc=com'));
$ldapservers->SetValue($i,'server','auth_type','cookie');
$ldapservers->SetValue($i,'login','pass','secret')
这样就可以通过phpldapadmin,修改配置ldap服务器。
3,启动相关服务并添加开机启动项目
service httpd start
service ldap start
chkconfig httpd on
chkconfig ldap on
4,导入账号信息:
用浏览器浏览 IP是ldap服务器的IP地址
Login DN为cn=root,dc=example,dc=com
Password为secret
这样就可以登录LDAP服务器
点击import导入账号数据,数据内容见附件1(各项数据的相关含义,请参考相关文档)
数据导入后,就可以供客户端查询,下面讲述客户端的配置。
5,使用工具修改账号信息ldapadmin(运行于windows平台)
系统权限设置是每个人,可以修改自己的密码,提供匿名查询。
ldap的root账号可以修改所有人的密码,系统root账号可以修改root的密码。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二,客户端配置(login,sshd,vsftpd,svn,dotproject,mantis,testlink,mediawiki)
1, login,sshd,vsftpd服务都是通过pam插入的,设置比较简单,
运行:authconfig-tui,再弹出的画面中,
第一列,选择User LDAP
第二列,选择Use Shadow Passwords;Use LDAP Authentication;Localauthorization is sufficient
选择next 按回车,第二个画面中 Use TLS不选
Server填上 ########备注,10.141.26.67,请更换成LDAP服务器IP地址。
Base DN填上 dc=example,dc=com
选择OK,按回车。
yum install vsftpd –y
编辑/etc/pam.d/vsftpd,内容改成如下:
auth sufficient pam_ldap.so
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
password sufficient pam_ldap.so use_authtok
session optional pam_ldap.so
重新启动下sshd,vsftpd这样就可以使用ldap里面的账号登录了。
2,svn,是居于httpd的,所以需要安装一些http模块
yum install mod_dav_svn subversion httpd php-ldap mysql-server openldap-clients php php-mysql mod_authz_ldap php-gd -y
编辑/etc/php.ini将里面的session.auto_start = 0 改为session.auto_start = 1
将/etc/httpd/conf.d/subversion.con修改为如下内容
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
DAV svn
SVNParentPath /var/www/svn
SVNListParentPath on
# Require SSL connection for password protection.
AuthType Basic
AuthBasicProvider ldap
AuthName "SVN login"
AuthzLDAPAuthoritative off
AuthLDAPURL ldap://10.141.26.67/ou=People,dc=example,dc=com#记得改成ldap服务器的IPD地址
Require valid-user
# SSLRequireSSL
mkdir /var/www/svn
cd /var/www/svn
svnadmin create stuff
chown -R apache:apache stuff # 创建stuff源码仓库。
重启httpd就可以在浏览器中访问,会要求账号密码,输入在ldap中存在的账号密码就可以。
3,dotproject(版本2.1.2)是所有当中最简单的,直接在网页上点点就可以了。
service mysqld start #dotproject,testlink,mantis都使用到mysql数据库。
chkconfig mysqld on
dotproject,mantis,testlink,mediawiki的安装都是从网上下载相关文档后,解压到/var/www/html目录,从浏览器从进入各自的目录,开始安装,安装比较简单,也不属于本文讲解范围,不多讲述(附件2有相关链接)。注意安装时候要有写的权限,否则安装无法继续。
安装完成之后,使用admin@passwd登录dotproject,system admin里面的system configuration,设置以下选项
User Authentication Method 为LDAP
LDAP HOST 设置为ldap服务器IP地址
LDAP PORT 设置为389
LDAP VERSION 设置为3
LDAP BASE DN 设置为dc=example,dc=com
LDAP User Filter 设置为(uid=%USERNAME%)
LDAP Search User 设置为 空
LDAP Search User Password 设置为 空
LDAP also allows standard login 打钩。
都设置完后,点右下角保存,这样就能使用ldap中的账号登录了。
4,mantis(1.1.5),testlink(1.7.5)设置是一样的,都需要在各自数据库中有账号才能使用ldap验证,不然在发送验证账号时候,使用administrator账号。
安装完成后需要先使用各自的管理账号,进去添加个ldap中存在的账号(例如test1)为管理员账号后(testlink注意要active),再按照如下步骤修改成LDAP验证,这样LDAP账号中就有一个管理账号。
mantis默认管理员账号administrator密码是root
testlink默认管理员账号admin密码是admin
mantis 部分,编辑mantis目录下的config_defaults_inc.php
$g_login_method 的值修改为LDAP
$g_ldap_server = ‘’;ldap服务器IP地址
$g_ldap_port = '389';
$g_ldap_root_dn = 'dc=example,dc=com';
$g_ldap_organization = '';
$g_ldap_uid_field = 'uid';
$g_ldap_bind_dn = '';
$g_ldap_bind_passwd = '';
$g_use_ldap_email = OFF;
$g_ldap_protocol_version = '3';
Testlink部分,编辑testlink目录下的config.inc.php文件,
$tlCfg->authentication['method'] = 'LDAP';
/** LDAP authentication credentials */
$tlCfg->authentication['ldap_server'] = '10.141.26.67';#ldap服务器IP
$tlCfg->authentication['ldap_port'] = '389';
$tlCfg->authentication['ldap_version'] = '3'; // could be '2' in some cases
$tlCfg->authentication['ldap_root_dn'] = 'dc=example,dc=com';
$tlCfg->authentication['ldap_organization'] = ''; // e.g. '(organizationname=*Traffic)'
$tlCfg->authentication['ldap_uid_field'] = 'uid'; // Use 'sAMAccountName' for Active Directory
$tlCfg->authentication['ldap_bind_dn'] = ''; // Left empty for anonymous LDAP binding
$tlCfg->authentication['ldap_bind_passwd'] = ''; // Left empty for anonymous LDAP binding
5.mediawiki(1.15.1),ldap插件版本为1.2a (beta)
安装完后,将ldap插件LdapAuthentication.php,放到mediawiki目录include中
编辑mediawiki目录下的LocalSettings.php
在文中添加如下设置
require_once 'LdapAuthentication.php';
$wgAuth = new LdapAuthenticationPlugin();
$wgLDAPDomainNames = array(
'itssldap'
);
$wgLDAPServerNames = array(
'itssldap' => '10.141.26.67'###修改为ldap服务器IP地址或域名。
);
$wgLDAPSearchStrings = array(
'itssldap' => 'uid=USER-NAME,ou=People,dc=example,dc=com'
);
$wgLDAPEncryptionType = array(
'itssldap' => 'clear'
);
$wgMinimalPasswordLength = 1;
$wgLDAPWriterDN = array( "itssldap" => "cn=root,dc=example,dc=com" );
$wgLDAPWriterPassword = array( "itssldap" => "secret" ); // FIXME
$wgLDAPWriteLocation = array( "itssldap" => "ou=People,dc=example,dc=com" );
$wgLDAPAddLDAPUsers = array( "itssldap" => true );
$wgLDAPUpdateLDAP = array( "itssldap" => true );
$wgLDAPUseLocal = array( "itssldap" => true );
$wgLDAPMailPassword = array( "itssldap" => true );
$wgLDAPRetrievePrefs = array( "itssldap" => true );
$wgLDAPDisableAutoCreate = array( "itssldap" => false );
wik里面注册,会同时更新到ldap服务器,通过Ldapadmin,给帐号添加poixaccount,就能访问vsftpd,login,sshd
附件1
dn: dc=example,dc=com
dc: example
objectClass: top
objectClass: domain
dn: ou=People,dc=example,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=example,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
dn: cn=ldapuser,ou=Group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapuser
userPassword: {crypt}x
gidNumber: 500
dn: uid=ldapuser,ou=People,dc=example,dc=com
uid: ldapuser
cn: ldapuser
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$XiWzbnAd$7j7VgKpgvvWEglr60jwzW0
shadowLastChange: 14552
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /var/ftp
dn: uid=test1,ou=People,dc=example,dc=com
uid: test1
cn: test1
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
shadowLastChange: 14552
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 500
homeDirectory: /var/ftp
userPassword: {SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=
dn: uid=test2,ou=People,dc=example,dc=com
uid: test2
cn: test2
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
shadowLastChange: 14552
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 500
homeDirectory: /var/ftp
userPassword: {SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=
dn: uid=test3,ou=People,dc=example,dc=com
uid: test3
cn: test3
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$XiWzbnAd$7j7VgKpgvvWEglr60jwzW0
shadowLastChange: 14552
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 500
homeDirectory: /var/ftp