phpldapadmin安装
标准安装
安装phpldapadmin
安装phpldapadmin会同时安装php5.4以及httpd2.4.6
yum安装的phpldapadmin汉化文件在  /usr/share/phpldapadmin/locale/zh_CN/LC_MESSAGES 目录下

yum -y install phpldapadmin
查看安装
phpldapadmin
$ rpm -qa | grep phpldapadmin
phpldapadmin-1.2.5-1.el7.noarch
php
$ rpm -qa | grep php
php-ldap-5.4.16-48.el7.x86_64
php-5.4.16-48.el7.x86_64
php-cli-5.4.16-48.el7.x86_64
php-common-5.4.16-48.el7.x86_64
httpd
$ rpm -qa | grep httpd
httpd-tools-2.4.6-99.el7.centos.1.x86_64
lighttpd-1.4.54-1.el7.x86_64
httpd-2.4.6-99.el7.centos.1.x86_64
配置phpldapadmin
编辑 /etc/httpd/conf.d/phpldapadmin.conf 允许从远程访问
# 备份文件
cp /etc/httpd/conf.d/phpldapadmin.conf{,.old}
# 重新编辑文件
cat > /etc/httpd/conf.d/phpldapadmin.conf << EOF
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs
<Directory /usr/share/phpldapadmin/htdocs>
  Order Deny,Allow
  Allow from all
</Directory>
EOF
编辑 /etc/httpd/conf/httpd.conf
# 注释如下内容
<Directory />
    AllowOverride none
    Require all denied
</Directory>
# 新增如下内容
<Directory />
    Options Indexes FollowSymLinks
    AllowOverride None
</Directory>
注释内容,新增内容,一条命令搞定
- 
/\<Directory \/>/,/\<\/Directory\>/:匹配从<Directory />到</Directory>这块内容 - 
s/^/#/:在这块内容的每一行开头加#,实现注释 - 
/<\/Directory>/a\:在匹配</Directory>行的后面追加内容 - 
\n是换行符(用于格式美观) 
sed -i.bak '/<Directory \/>/,/<\/Directory>/ {
  s/^/#/
  /<\/Directory>/a\
\n# 新增目录权限配置\n<Directory />\n    Options Indexes FollowSymLinks\n    AllowOverride None\n</Directory>
}' /etc/httpd/conf/httpd.conf
编辑 /etc/phpldapadmin/config.php
配置使用dn登陆
修改
	$servers->setValue('login','attr','uid');
修改为
	$servers->setValue('login','attr','dn');
一条命令搞定
sed -i.bak "s/\$servers->setValue('login','attr','uid');/\$servers->setValue('login','attr','dn');/" /etc/phpldapadmin/config.php 
重启httpd
systemctl restart httpd
访问phpldapadmin
浏览器访问 IP/phpldapadmin
访问首页面

点击登录
之前搭建openldap服务端中设置的用户名为 cn=admin,dc=ops,dc=com
密码为 admin

解决 phpldapadmin管理页面提示 This base cannot be created with PLA 问题
phpldapadmin登陆成功后会报错 This base cannot be created with PLA

解决方法
在 /etc/openldap 目录下新建一个 base.ldif 文件,为初始化根节点做准备工作,这里需要修改dn一行为自己的信息
cat > /etc/openldap/base.ldif << EOF
dn: dc=ops,dc=com
o: ldap
objectclass: dcObject
objectclass: organization
EOF
执行命令,会提示输入密码,这里输入搭建openldap时设置的管理员密码
$ ldapadd -f /etc/openldap/base.ldif -x -D cn=admin,dc=ops,dc=com -W
Enter LDAP Password: 
adding new entry "dc=ops,dc=com"
执行成功后重新登陆 phpldapadmin,可以看到之前的报错已经没有了

关闭匿名访问
ldap默认是允许匿名访问的

编辑 /etc/phpldapadmin/config.php
# 关闭匿名访问
修改
	// $servers->setValue('login','anon_bind',true);
修改为
	$servers->setValue('login','anon_bind',false);
# 设置只有管理员能登陆
新增
$servers->setValue('login','allowed_dns',array('cn=admin,dc=ops,dc=com'));
一条命令搞定
sed -i.bak "/\/\/ \$servers->setValue('login','anon_bind',true);/ {
    s|// ||;                         # 去掉行首注释
    s|true|false|;                  # 将 true 改为 false
    a\\
\$servers->setValue('login','allowed_dns',array('cn=admin,dc=ops,dc=com'));
}" /etc/phpldapadmin/config.php
无需重启任何服务,配置完成后匿名登陆按钮就取消了

解决模版移除属性问题
有这些警告的原因如下
- 
缺失 schema
sambaGroupMapping,sambaSAMAccount→ 这些属于 Samba 的 schema(如samba.schema)courierMailAlias,courierMailAccount→ 这些属于 Courier Mail 的 schemamozillaOrgPerson,c,uidNumber,gidNumber,homeDirectory→ 来自多种通用 schema,如nis.schema、inetorgperson.schema等
 - 
phpldapadmin 默认模板中预置了对这些 objectClass/attribute 的支持,但你当前 OpenLDAP 实例中并未加载这些对应的 schema 文件
 

解决方法是移除相关的文件
cd /usr/share/phpldapadmin/templates/
mkdir bak
mv samba* bak/
mv courierMailA* bak/
mv mozillaOrgPerson.xml bak/
移除相关文件警告就没有了
