zoukankan      html  css  js  c++  java
  • Centos7安装OpenLDAP

    环境

    系统版本:centos7.4

    openldap版本2.4

    安装和配置

    安装并启动服务

    安装:

    yum install openldap openldap-servers openldap-clients

    拷贝数据库配置文件

    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
    chown ldap:ldap /var/lib/ldap/DB_CONFIG

     DB_CONIFG中主要是关于Berkeley DB的相关的一些配置

     启动OpenLDAP Server:

    systemctl start slapd 
    systemctl enable slapd
    systemctl status slapd

    slapd即standard alone ldap daemon,该进程默认监听389端口

    设置root用户密码

    先用一个命令生成一个LDAP管理用户root密码:

    slappasswd
    New password:
    Re-enter new password:
    {SSHA}krOGXDmiCdSXuXocOf10F96LJO5ijdXo  #记住这个,下面会用到

    新建一个rootpwd.ldif(名称是自定义的)的文件:

    vi rootpwd.ldif
    
    dn: olcDatabase={0}config,cn=config
    changetype: modify
    add: olcRootPW
    olcRootPW: {SSHA}krOGXDmiCdSXuXocOf10F96LJO5ijdXo
    • ldif即LDAP Data Interchange Format,是LDAP中数据交换的一种文件格式。文件内容采用的是key-value形式,注意value后面不能有空格。
    • 上面内容中dn即distingush name
    • olc即Online Configuration,表示写入LDAP后不需要重启即可生效
    • changetype: modify表示修改一个entry,changetype的值可以是add,delete, modify等。
    • add: olcRootPW表示对这个entry新增了一个olcRootPW的属性
    • olcRootPW: {SSHA}krOGXDmiCdSXuXocOf10F96LJO5ijdXo指定了属性值

    下面使用ldapadd命令将上面的rootpwd.ldif文件写入LDAP:

    ldapadd -Y EXTERNAL -H ldapi:/// -f rootpwd.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    modifying entry "olcDatabase={0}config,cn=config"

    导入schema

    导入schema,schema包含为了支持特殊场景相关的属性,可根据选择导入,这里先全部导入:

    ls /etc/openldap/schema/*.ldif | while read f; do ldapadd -Y EXTERNAL -H ldapi:/// -f $f; done

    设定默认域

    先使用slappasswd生成一个密码:

    slappasswd
    New password:
    Re-enter new password:
    {SSHA}OpMcf0c+pEqFLZm3i+YiI2qhId1G/yM3

    新建一个domain.ldif的文件:

    vi domain.ldif
    
    dn: olcDatabase={1}monitor,cn=config
    changetype: modify
    replace: olcAccess
    olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
      read by dn.base="cn=Manager,dc=zhidaoauto,dc=com" read by * none
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    replace: olcSuffix
    olcSuffix: dc=zhidaoauto,dc=com
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    replace: olcRootDN
    olcRootDN: cn=Manager,dc=zhidaoauto,dc=com
    
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    add: olcRootPW
    olcRootPW: {SSHA}OpMcf0c+pEqFLZm3i+YiI2qhId1G/yM3 #替换上面生成的密码
    
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    add: olcAccess
    olcAccess: {0}to attrs=userPassword,shadowLastChange by
      dn="cn=Manager,dc=zhidaoauto,dc=com" write by anonymous auth by self write by * none
    olcAccess: {1}to dn.base="" by * read
    olcAccess: {2}to * by dn="cn=Manager,dc=zhidaoauto,dc=com" write by * read
    • olcAccess即access,该key用于指定目录的ACL即谁有什么权限可以存取什么
    • olcRootDN设定管理员root用户的distingush name
    • 注意替换上面文件内容中cn为具体的域信息
    • olcRootPW用上面新生成的密码替换

    写入:

    ldapmodify -Y EXTERNAL -H ldapi:/// -f domain.ldif
    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    modifying entry "olcDatabase={1}monitor,cn=config"
    
    modifying entry "olcDatabase={2}hdb,cn=config"
    
    modifying entry "olcDatabase={2}hdb,cn=config"
    
    modifying entry "olcDatabase={2}hdb,cn=config"
    
    modifying entry "olcDatabase={2}hdb,cn=config"

    添加基本目录

    新建一个basedomain.ldif的文件:

    dn: dc=zhidaoauto,dc=com
    objectClass: top
    objectClass: dcObject
    objectclass: organization
    o: zhidaoauto com
    dc: zhidaoauto
    
    dn: cn=Manager,dc=zhidaoauto,dc=com
    objectClass: organizationalRole
    cn: Manager
    description: Directory Manager
    
    dn: ou=People,dc=zhidaoauto,dc=com
    objectClass: organizationalUnit
    ou: People
    
    dn: ou=Group,dc=zhidaoauto,dc=com
    objectClass: organizationalUnit
    ou: Group
    • 注意替换上面文件内容中dn为具体的域信息
    • 理解dn,cn,dc
      • DC即Domain Component,LDAP目录类似文件系统目录dc=zhidaoauto,dc=com相当于/com/zhidaoauto
      • CN即Common Name,CN有可能代表一个用户名,例如cn=Manager,dc=zhidaoauto,dc=com表示在/com/zhidaoauto域下的管理员用户Manager
      • OU即Organizational Unit,例如ou=People,dc=zhidaoauto,dc=com表示在/com/zhidaoauto域下的一个组织单元People

     写入:

    ldapadd -x -D cn=Manager,dc=zhidaoauto,dc=com -W -f basedomain.ldif
    Enter LDAP Password:
    adding new entry "dc=zhidaoauto,dc=com"
    
    adding new entry "cn=Manager,dc=zhidaoauto,dc=com"
    
    adding new entry "ou=People,dc=zhidaoauto,dc=com"
    
    adding new entry "ou=Group,dc=zhidaoauto,dc=com"

    测试:

    ldapsearch -LLL -W -x -D "cn=Manager,dc=zhidaoauto,dc=com" -H ldap://localhost -b "dc=zhidaoauto,dc=com"
    Enter LDAP Password:
    dn: dc=zhidaoauto,dc=com
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    o: zhidaoauto com
    dc: zhidaoauto
    
    dn: cn=Manager,dc=zhidaoauto,dc=com
    objectClass: organizationalRole
    cn: Manager
    description: Directory Manager
    
    dn: ou=People,dc=zhidaoauto,dc=com
    objectClass: organizationalUnit
    ou: People
    
    dn: ou=Group,dc=zhidaoauto,dc=com
    objectClass: organizationalUnit
    ou: Group

    管理工具

    可以在局域网内的windows电脑上下载ldapadmin作为管理工具

    知识点:

    登录账号为:

    登录ldap的用户dn为:cn=Manager,dc=zhidaoauto,dc=com

    ou=Group和ou=People的区别:

    从ou=Group里创建的是组,从ou=People创建的是用户

    ou=People里的用户怎么加入到ou=Group下边的组呢:

    右键"yunwei"组-->properties

    这样就把ou=People里"zhaijunming"用户添加到ou=Group里的"yunwei"组了

    参考文章

    https://blog.frognew.com/2017/05/openldap-install-notes.html#ldapadmin

  • 相关阅读:
    Centos设置开机启动Apache和Mysql[总结]
    主机无法访问虚拟机的apache解决办法
    PHP使用DOM XML操作XML[总结]
    Linux下C结构体初始化[总结]
    libxml2的安装及使用[总结]
    Linux动态链接库的使用
    linux获取系统启动时间
    解析oui.txt文件,通过MAC前缀获取Organization
    linux命令学习——cat
    linux内核数据结构之kfifo
  • 原文地址:https://www.cnblogs.com/chadiandianwenrou/p/9522756.html
Copyright © 2011-2022 走看看