LDAP

LDAP:轻量级目录访问控制协议(AD、one directory)
用户帐号的集中管理和集中控制

安装:

yum install openldap openldap-servers -y
openldap 协议包
openldap-servers 服务端程序

ls /etc/openldap/ 主目录
ldap.conf 客户端配置文件
slapd.conf 服务器端配置文件
/etc/openldap/schema 模板存放位置 nis.schema
查看是否有已定义好的架构,关于描述Linux系统用户和系统的组的对象类和属性类:
vim /etc/openldap/schema/nis.schema
objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount'
DESC 'Abstraction of an account with POSIX attributes'
SUP top AUXILIARY
MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) 字段值不能为空
MAY ( userPassword $ loginShell $ gecos $ description ) ) 字段值可有可无

修改主配置文件:

vim /etc/openldap/slapd.conf
loglevel 增加调试日志输出,配置syslog服务local4.debug /var/log/sldap.log
include /etc/openldap/schema/nis.schema 包含定义好的架构
allow bind_v2 定义版本,向下兼容
pidfile /var/run/openldap/slapd.pid 服务启动后pid文件
database bdb b伯克利 db数据库
suffix "dc=bj,dc=name,dc=com" 定义DC
rootdn "cn=ys,dc=bj,dc=name,dc=com" 区别名称,唯一标识一条记录,管理dn(cn为ldap管理员帐号,不要写ou,管理所有的ou)
rootpw 123456 管理员密码
定义密文的管理员密码:slappasswd -h {md5}
{MD5}4QrcOUm6Wau+VuBX8g+IPg==
directory /var/lib/ldap 真正数据库的位置,权限为700,所有者及组为ldap
自定义谁可以访问目录中的内容,并希望用户可以自己修改密码,还可以让用户读取除密码条目以外的其他条目:
access to attrs=shadowLastChange,userPassword
by self write
by * read
by * auth
access to *
by * read
拷贝数据库的配置文件到/var/lib/ldap/下,并修改属主属组:
cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap.ldap /var/lib/ldap/DB_CONFIG
启动服务:/etc/init.d/ldap start

/usr/share/openldap/migration/ 存放着脚本文件
ldap库模板定义生成ldap目录结构,这些perl脚本的配置信息包含在migrate_common.ph文件中:
vim /usr/share/openldap/migration/migrate_common.ph修改命名前缀变量:
$DEFAULT_MAIL_DOMAIN = "bj.name.com";
$DEFAULT_BASE = "dc=bj,dc=name,dc=com";
在上面的目录中执行:./migrate_base.pl > /tmp/name.ldif生成可以导入ldap的ldif文件
可以用vim修改里面的内容,注意开头的顶极组织域不能删除,ou可根据自己的需求进行保留和修改
建立测试用户:useradd ldap1
echo "123" |passwd --stdin ldap1
grep ldap1 /etc/passwd > /tmp/user
grep ldap1 /etc/group > /tmp/group
在上面的目录中生成用户和组的ldif文件:
./migrate_passwd.pl /tmp/user > /tmp/user.ldif
./migrate_group.pl /tmp/group > /tmp/group.ldif

导入生成的ldif文件:

ldapadd -x -D "cn=ys,dc=bj,dc=name,dc=com" -w 123456 -f /tmp/name.ldif
ldapadd -x -D "cn=ys,dc=bj,dc=name,dc=com" -w 123456 -f /tmp/group.ldif
ldapadd -x -D "cn=ys,dc=bj,dc=name,dc=com" -w 123456 -f /tmp/user.ldif
-x为简单认证,-D为指定身份,-w输入管理员密码,-f指定ldif文件的位置

查看检查:

netstat -tunpl | grep slapd
ldapsearch -x -w 123456 -h 127.0.0.1 -D "cn=ys,dc=bj,dc=name,dc=com" -b "ou=People,dc=bj,dc=name,dc=com"

客户端加入ldap服务器进行验证:

命令方式:authconfig-tui
用户修改自己的密码:
ldappasswd -xD "uid=ldap1,ou=People,dc=bj,dc=name,dc=com" -WS
如果没有S会创建一个新的密码

使用网页管理ldap:

yum install httpd php php-ldap
解压tar xvzf phpldapadmin-1.2.0.4.tgz
mv phpldapadmin-1.2.0.4 /var/www/html/ldap
进入/var/www/html/ldap/config目录拷贝配置文件:
cp config.php.example config.php
访问:http://localhost/ldap
用户名:cn=ys,dc=bj,dc=name,dc=com
或:
rpm -ivh ldap-account-manager-2.6.0-0.fedora.1.noarch.rpm
进入/var/www/html/lam/config目录拷贝配置文件:
cp config.cfg_sample config.cfg
cp lam.conf_sample ldapserver1.conf
cp lam.conf_sample ldapsuser1.conf
chown -R apache.apache *
编辑ldapserver1.conf和ldapuser1.conf,改写里面的用户名和DC

httpd通过ldap验证:

yum install mod_authz_ldap
编辑/etc/httpd/conf.d/authz_ldap.conf配置文件:
将以下内容设置在IfModule里:
<Directory "/var/www/html/">
AuthzLDAPMethod ldap
AuthzLDAPServer 192.168.0.17
AuthzLDAPUserBase ou=People,dc=bj,dc=name,dc=com
AuthzLDAPUserKey uid
AuthzLDAPUserScope base
AuthType basic
AuthName "ldap@example.com"
require valid-user
</Directory>
重启apache服务

原文地址:https://www.cnblogs.com/super-sos/p/8906556.html