0 为什么用,区别在哪, 我们的主要目的是什么?
1 安装在哪?
2 相关模块, 数据流如何联动
3 初始配置,配置文件, 参数详解
4 平时的使用,如何使用,(为什么要 添加 最初的那个, 不添加又如何)
5 可能的配置, for future

why, in_lico

用户管理服务

可以这样讲:市面上只要你能够想像得到的所有工具软件,全部都支持 LDAP协议。比如说你公司要安装一个项目管理工具,那么这个工具几乎必然支持 LDAP协议,你公司要安装一个 bug管理工具,这工具必然也支持 LDAP协议,你公司要安装一套软件版本管理工具,这工具也必然支持 LDAP协议。 LDAP协议的好处就是你公司的所有员工在所有这些工具里共享同一套用户名和密码,来人的时候新增一个用户就能自动访问所有系统,走人的时候一键删除就取消了他对所有系统的访问权限,这就是 LDAP。
有些领域并不像前端世界那么潮那么性感,但是缺了这个环节又总觉得很别扭。如果深入到运维的世界,你会发现大部分工具还活在上个世纪,产品设计完全反人类,比如 cn, dc, dn, ou这样的命名方式,如果不钻研个一天两天,鬼知道它在说什么,比如说 dns, dns是什么鬼?域名吗?不是,它只是某个懒惰的工程师起了 dn这么一个缩写,再加一个复数,就成了 dns,和域名服务器没有任何关系; cn是什么?中国的缩写?你想多了,这和中国没有任何关系。经过一系列这样疯狂的洗脑之后,你才能逐渐明白 LDAP到底想干什么.( latest_tutorial_2018)

树形用户目录,树形存储结构,对组织管理建模符合直觉。
Lightweight Directory Access Protocol, 来自 x.500 协议族,更轻量,更简单, 核心就是 DIT (Directory Information Tree)

ldap 在联想 lico 的使用 - 图2
ldap 在联想 lico 的使用 - 图3LDIF的client示例.pngldap 在联想 lico 的使用 - 图5

DN 的两种设置

dn的两种设置.png

ldap的信息模型

【重要部分】
LDAP的信息模型是建立在”条目”(entries)的基础上。一个条目是一些属性的集合,并且具有一个全局唯一的”可区分名称”DN,一个条目可以通过DN来引用。每一个条目的属性具有一个类型和一个或者多个值。类型通常是容易记忆的名称,比如”cn”是通用名称(common name) ,或者”mail”是电子邮件地址。条目的值的语法取决于属性类型。比如,cn属性可能具有一个值”Babs Jensen” 。一个mail属性可能包含”bbs@kevin.com” 。一个jpegphoto属性可能包含一幅JPEG(二进制)格式的图片。
LDAP的objectClass
LDAP通过属性objectClass来控制哪一个属性必须出现或允许出现在一个条目中,它的值决定了该条目必须遵守的模式
规则。可以理解为关系数据库的表结构。接下来会用到的objectClass有

objectClass 含义
olcGlobal 全局配置文件类型, 主要是cn=config.ldif 的配置项
top 顶层的对象
organization 组织,比如公司名称,顶层的对象
organizationalUnit 重要, 一个目录节点,通常是group,或者部门这样的含义
inetOrgPerson 重要, 我们真正的用户节点类型,person类型, 叶子节点
groupOfNames 重要, 分组的group类型,标记一个group节点
olcModuleList 配置模块的对象

LDAP常用关键字列表
ldap的entry是由各种字段构成,可以理解为关系数据库的字段。

关键字 英文全称 含义
dc Domain Component 域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com
uid User Id 用户ID,如“tom”
ou Organization Unit 组织单位,类似于Linux文件系统中的子目录,它是一个容器对象,组织单位可以包含其他各种对象(包括其他组织单元),如“market”
cn Common Name 公共名称,如“Thomas Johansson”
sn Surname 姓,如“Johansson”
dn Distinguished Name 惟一辨别名,类似于Linux文件系统中的绝对路径,每个对象都有一个惟一的名称,如“uid= tom,ou=market,dc=example,dc=com”,在一个目录树中DN总是惟一的
rdn Relative dn 相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=tom”或“cn= Thomas Johansson”
c Country 国家,如“CN”或“US”等。
o Organization 组织名,如“Example, Inc.”

跨平台, 静态数据快速查询, 在更新数据上不擅长.
基于 pull ,push 复制信息技术.
LDAP V3支持 SASL,SSL,TLS,
C/S 架构, server端 存储树, Client 提供操作工具,
LDAP 支持 TCP/IP , 分布式部署.
DIT Directory Information Tree —-数据库
Entry ——表的记录 (dn 的机构. 是 属性-值 的集合. )

同类产品

联想用的就是 https://authing.cn/ , 同样是一个集成了 ldap 的服务。
微软的 Active Directory
IBM 的 DSS (Directory ans Security Server)
Novell 的NDS (Novell Directory Service)
Netscape LDAP server

how does it work?

as a databaseLDAP_how_it_works.png

ldap 在联想 lico 的使用 - 图8

ldap 在联想 lico 的使用 - 图9

where

  1. dnf -y install openldap-servers
  2. [root@localhost openldap]# pwd
  3. /etc/openldap
  4. [root@localhost openldap]# ls
  5. cacerts certs check_password.conf ldap.conf schema slapd.conf slapd.conf.origin slapd.d
  6. [root@localhost openldap]# ls slapd.d/cn\=config
  7. cn=config/ cn=config.ldif
  8. [root@localhost openldap]# ls slapd.d/
  9. 'cn=config' 'cn=config.ldif'
  10. [root@localhost openldap]# ls schema/
  11. collective.ldif core.schema dyngroup.ldif java.schema openldap.ldif ppolicy.schema
  12. collective.schema cosine.ldif dyngroup.schema misc.ldif openldap.schema
  13. corba.ldif cosine.schema inetorgperson.ldif misc.schema pmi.ldif
  14. corba.schema duaconf.ldif inetorgperson.schema nis.ldif pmi.schema
  15. core.ldif duaconf.schema java.ldif nis.schema ppolicy.ldif
  16. [root@localhost openldap]# rpm -ql openldap-servers | grep bin
  17. /usr/sbin/slapacl
  18. /usr/sbin/slapadd
  19. /usr/sbin/slapauth
  20. /usr/sbin/slapcat
  21. /usr/sbin/slapd
  22. /usr/sbin/slapdn
  23. /usr/sbin/slapindex
  24. /usr/sbin/slappasswd
  25. /usr/sbin/slapschema
  26. /usr/sbin/slaptest
  1. slapacl - verify access to attributes by inspecting the configuration of a DIT
  2. slapadd - add LDAP entries to a database - STOP SLAPD FIRST
  3. slapauth - verify SASL data against a DIT
  4. slapcat - export an LDIF from an LDAP database - STOP SLAPD FIRST
  5. slapd - stand-alone LDAP daemon
  6. slapdn - verify a DN against a DIT configuration
  7. slapindex - re-index an LDAP database - STOP SLAPD FIRST
  8. slappasswd - generate password
  9. slaptest - verify a slapd.conf file or a cn=config directory (slapd.d)
  1. .
  2. |-- certs
  3. | |-- cert8.db
  4. | |-- key3.db
  5. | |-- password
  6. | `-- secmod.db
  7. |-- check_password.conf
  8. |-- ldap.conf
  9. |-- schema
  10. | |-- collective.ldif
  11. | |-- collective.schema
  12. | |-- corba.ldif
  13. | |-- corba.schema
  14. | |-- core.ldif
  15. | |-- core.schema
  16. | |-- cosine.ldif
  17. | |-- cosine.schema
  18. | |-- duaconf.ldif
  19. | |-- duaconf.schema
  20. | |-- dyngroup.ldif
  21. | |-- dyngroup.schema
  22. | |-- inetorgperson.ldif
  23. | |-- inetorgperson.schema
  24. | |-- java.ldif
  25. | |-- java.schema
  26. | |-- misc.ldif
  27. | |-- misc.schema
  28. | |-- nis.ldif
  29. | |-- nis.schema
  30. | |-- openldap.ldif
  31. | |-- openldap.schema
  32. | |-- pmi.ldif
  33. | |-- pmi.schema
  34. | |-- ppolicy.ldif
  35. | `-- ppolicy.schema
  36. `-- slapd.d
  37. |-- cn=config
  38. | |-- cn=schema
  39. | | `-- cn={0}core.ldif
  40. | |-- cn=schema.ldif
  41. | |-- olcDatabase={-1}frontend.ldif
  42. | |-- olcDatabase={0}config.ldif
  43. | |-- olcDatabase={1}monitor.ldif
  44. | `-- olcDatabase={2}hdb.ldif
  45. `-- cn=config.ldif

配置

配置
这些都在 /etc/openldap/slapd.conf 里配置。 可以看到是如下的 tree 结构。
针对 module,我们可以查看说明,不同的功能需要对应不同的 module。
image.png

module:

  1. # Load dynamic backend modules
  2. # - modulepath is architecture dependent value (32/64-bit system)
  3. # - back_sql.la overlay requires openldap-server-sql package
  4. # - dyngroup.la and dynlist.la cannot be used at the same time
  5. modulepath /usr/lib/openldap
  6. modulepath /usr/lib64/openldap
  7. moduleload back_mdb.la
  8. moduleload ppolicy.la

scheme:

scheme错误示范

he cn=schema entry holds all of the schema definitions that are hard-coded in slapd. As such, the values in this entry are generated by slapd so no schema values need to be provided in the config file. The entry must still be defined though, to serve as a base for the user-defined schema to add in underneath. Schema entries must have the olcSchemaConfig objectClass.

  1. include /etc/openldap/schema/core.schema
  2. include /etc/openldap/schema/cosine.schema
  3. include /etc/openldap/schema/inetorgperson.schema
  4. include /etc/openldap/schema/nis.schema
  5. include /etc/openldap/schema/openldap.schema
  6. include /etc/openldap/schema/ppolicy.schema

database:

  • 示例一
    以下内容都是属于 database 的,
    ```bash

database mdb ## 指定后端数据库

suffix “n2=lenovo,n1=gongsi”

suffix “dc=hpc,dc=com” ## 所有存在这个数据库里的信息 entry 后缀. checkpoint 1024 15 rootdn “uid=admin,dc=hpc,dc=com” ## rootdn 不收任何限制,能对这个数据库操作. rootpw {SSHA}1eNXf93MbfhzA/8nb0Syj6TBVHccCYQr

  1. - 示例二
  2. 你也可以配置多个 database;
  3. ```bash
  4. 5. # BDB definition for the example.com
  5. 6. database bdb
  6. 7. suffix "dc=example,dc=com"
  7. 8. directory /usr/local/var/openldap-data
  8. 9. rootdn "cn=Manager,dc=example,dc=com"
  9. 10. rootpw secret
  10. 11. # indexed attribute definitions
  11. 12. index uid pres,eq
  12. 13. index cn,sn pres,eq,approx,sub
  13. 14. index objectClass eq
  14. 15. # database access control definitions
  15. 16. access to attrs=userPassword
  16. 17. by self write
  17. 18. by anonymous auth
  18. 19. by dn.base="cn=Admin,dc=example,dc=com" write
  19. 20. by * none
  20. 21. access to *
  21. 22. by self write
  22. 23. by dn.base="cn=Admin,dc=example,dc=com" write
  23. 24. by * read
  24. 33. # BDB definition for example.net
  25. 34. database bdb
  26. 35. suffix "dc=example,dc=net"
  27. 36. directory /usr/local/var/openldap-data-net
  28. 37. rootdn "cn=Manager,dc=example,dc=com"
  29. 38. index objectClass eq
  30. 39. access to * by users read

lico使用之配合认证

image.png
libuser 负责添加用户 luseradd (不一定要 在master Node)libuser official website
数据存到 openldap-server
nscld 负责 连接 server, 数据库里获取 user, group, passwd 等信息, 可以在 其他地方认证 nslcd : nss-pam-ldapd (officai website)
ldap-client 是独立的, 它可以对 ldap-server 里的数据 update, del, add, search 等操作。 更多是 search。

使用

命令使用参考

  1. ## 启动
  2. systemctl start slapd
  3. ## 开机启动
  4. systemctl enable slapd
  5. ## 添加防火墙允许
  6. firewall-cmd --add-service=ldap --permanent
  7. firewall-cmd --reload

如果你搜索 OpenLDAP的安装指南,很不幸地告诉你,网上不管中文的英文的, 90%都是错的,它们都还活在上个世纪,它们会告诉你要去修改一个叫做 slapd.conf的文件,基本上看到这里,你就不用往下看了,这个文件早就被抛弃,新版的 OpenLDAP里根本就没有这个文件!取而代之的是 slapd.d的文件夹,然后另一部分教程会告诉你,让你修改这个文件夹下的某一个 ldif文件,看到这里,你也不用往下看了,你又看到了伪教程,因为这个文件夹下的所有文件的第一行都明确地写着:『 这是一个自动生成的文件,不要修改它!』你修改了它之后,它的 md5校验值会匹配不上,造成更多的问题。你应该用 ldapmodify来修改这个文件,而关于 ldapmodify的教程,更是累到吐血.

ldap主要命令有ldapadd, ldapmodify, ldapsearch. 我们用到的操作项有

option 含义
-H ldap server地址, 可以是ldap://192.168.12.18:389 表示tcp, 可以是ldap:/// 表示本地的tcp, 可以是ldapi:/// 本地unix socket连接
-x 启用简单认证,通过-D dn -w 密码的方式认证
-f 指定要修改的文件
-a 使用ldapmodify增加一个entry的时候等同于ldapadd
-b basedn 根目录, 将在此目录下查询
-Y EXTERNAL 本地执行,修改配置文件,比如basedn, rootdn,rootpw,acl, module等信息

ldif文件

LDIF(LDAP Data Interchanged Format)的轻量级目录访问协议数据交换格式的简称,是存储LDAP 配置信息及目录内容的标准文本文件格式,之所以使用文本文件来存储这些信息是为了方便读取和修改,这也是其他大多数服务配置文件所采取的格式。通常用来交换数据并在OpenLDAP服务器之间互相交换数据,并且可以通过LDIF 实现数据文件的导入、导出以及数据文件的添加、修改、重命名等操作,这些信息需要按照LDAP 中schema 的规范进行操作,并会接受schema 的检查,如果不符合OpenLDAP schema 规范要求,则会提示相关语法错误。

LDIF 文件特点

LDIF 文件每行的结尾不允许有空格或者制表符。
LDIF 文件允许相关属性可以重复赋值并使用。
LDIF 文件以.ldif 结尾命名。
LDIF 文件中以#号开头的一行为注释,可以作为解释使用。
LDIF 文件所有的赋值方式为:属性:[空格]属性值。
LDIF 文件通过空行来定义一个条目,空格前为一个条目,空格后为另一个条目的开始。
LDIF 语法格式

比如我们添加数据库的内容,我们将加入如下内容:

  1. 一个叫做People的节点(用来存放users)
  2. 一个叫做Group的节点(用来存放groups)
  3. 一个组叫做develop
  4. 一个用户叫做huihui

创建下面的LDIF文件,并叫做add_content.ldif:

  1. dn: ou=People,dc=example,dc=com
  2. objectClass: organizationalUnit
  3. ou: People
  4. dn: ou=Groups,dc=example,dc=com
  5. objectClass: organizationalUnit
  6. ou: Groups
  7. dn: cn=develop,ou=Groups,dc=example,dc=com
  8. objectClass: posixGroup
  9. cn: develop
  10. gidNumber: 5000
  11. dn: uid=huihui,ou=People,dc=example,dc=com
  12. objectClass: inetOrgPerson
  13. objectClass: posixAccount
  14. objectClass: top
  15. uid: huihui
  16. sn: hui
  17. givenName: huihui
  18. cn: hui
  19. uidNumber: 1000
  20. gidNumber: 500
  21. userPassword: 123456
  22. loginShell: /bin/sh
  23. homeDirectory: /home/users/huihui

tips:在你的目录中的uidNumber和gidNumber的值不与本地值冲突是很重要的。使用比较高的数值范围,比如从500开始。通过在ldap中设置较高的uid和gid值,允许你更容易地控制本地用户和ldap用户。

添加内容:

  1. $ ldapadd -x -D cn=admin,dc=example,dc=com -w 123456 -f add_content.ldif
  2. Enter LDAP Password: ********
  3. adding new entry "ou=People,dc=example,dc=com"
  4. adding new entry "ou=Groups,dc=example,dc=com"
  5. adding new entry "cn=develop,ou=Groups,dc=example,dc=com"
  6. adding new entry "uid=huihui,ou=People,dc=example,dc=com"

我们检查一下看看存储的数据是否正确:

  1. $ ldapsearch -x -LLL -b dc=shannonai,dc=com 'uid=huihui'
  2. dn: uid=huihui,ou=People,dc=shannonai,dc=com
  3. uid: huihui
  4. sn: hui
  5. givenName: huihui
  6. cn: huihui
  7. uidNumber: 1000
  8. gidNumber: 500
  9. loginShell: /bin/bash
  10. homeDirectory: /home/huihui
  11. objectClass: inetOrgPerson
  12. objectClass: posixAccount

slapadd

  1. cat > lico.ldif << EOF
  2. dn: dc=hpc,dc=com
  3. dc: hpc
  4. objectClass: top
  5. objectClass: domain
  6. dn: uid=admin,dc=hpc,dc=com
  7. uid: admin
  8. objectClass: top
  9. objectClass: account
  10. dn: ou=People,dc=hpc,dc=com
  11. ou: People
  12. objectClass: top
  13. objectClass: organizationalUnit
  14. dn: ou=Group,dc=hpc,dc=com
  15. ou: Group
  16. objectClass: top
  17. objectClass: organizationalUnit
  18. EOF
  19. slapadd -v -l ./lico.ldif -f /etc/openldap/slapd.conf -b "dc=hpc,dc=com" -wtest
  20. ldapsearch -x -b 'dc=hpc,dc=com' '(objectClass=*)'

ldapmodify

cat > commongroup.sh << EOF dn: cn=g-users,ou=Group,dc=demo,dc=com objectClass: groupOfNames cn: g-users member: cn=ryan.miao,ou=后台组,ou=研发部门,ou=People,dc=demo,dc=com member: cn=hr-ryan,ou=HR,ou=People,dc=demo,dc=com EOF

我们来创建一个common group, 表示所有人都应该在的一个group。

ldapmodify -a -H ldap://172.17.0.2:389 -D “cn=admin,dc=demo,dc=com” -w admin -f commongroup.sh

创建addUserToGroup.sh, 把用户加入到g-users这个group, 以后所有人加入的默认group

cat > addUserToGroup.sh << EOF dn: cn=g-users,ou=Group,dc=demo,dc=com changetype: modify add: member member: cn=fang.huang,ou=HR,ou=People,dc=demo,dc=com member: cn=hr-ryan,ou=HR,ou=People,dc=demo,dc=com member: cn=someone,ou=后台组,ou=研发部门,ou=People,dc=demo,dc=com member: cn=tester.miao,ou=测试组,ou=研发部门,ou=People,dc=demo,dc=com EOF

执行

ldapmodify -H ldap:/// -x -D cn=admin,dc=demo,dc=com -w admin -f addUserToGroup.sh

查看 ldapsearch

[root@40e6bf0b50dc data]# ldapsearch -H ldap:/// -D cn=admin,dc=demo,dc=com -w admin -b dc=demo,dc=com -s sub “objectClass=groupOfNames”

g-admin, Group, demo.com

dn: cn=g-admin,ou=Group,dc=demo,dc=com objectClass: groupOfNames cn: g-admin member:: Y249cnlhbi5taWFvLG91PeWQjuWPsOe7hCxvdT3noJTlj5Hpg6jpl6gsb3U9UGVvcGxlL GRjPWRlbW8sZGM9Y29t member: cn=hr-ryan,ou=HR,ou=People,dc=demo,dc=com

g-users, Group, demo.com

dn: cn=g-users,ou=Group,dc=demo,dc=com objectClass: groupOfNames cn: g-users member:: Y249cnlhbi5taWFvLG91PeWQjuWPsOe7hCxvdT3noJTlj5Hpg6jpl6gsb3U9UGVvcGxlL GRjPWRlbW8sZGM9Y29t member: cn=hr-ryan,ou=HR,ou=People,dc=demo,dc=com member: cn=fang.huang,ou=HR,ou=People,dc=demo,dc=com member: cn=hr-miao,ou=HR,ou=People,dc=demo,dc=com member:: Y249c29tZW9uZSxvdT3lkI7lj7Dnu4Qsb3U956CU5Y+R6YOo6ZeoLG91PVBlb3BsZSxkY z1kZW1vLGRjPWNvbQ== member:: Y249dGVzdGVyLm1pYW8sb3U95rWL6K+V57uELG91PeeglOWPkemDqOmXqCxvdT1QZW9wb GUsZGM9ZGVtbyxkYz1jb20=

移除

cat > removeUserFromGroup.sh << EOF dn: cn=g-admin,ou=Group,dc=demo,dc=com changetype: modify delete: member member: cn=ryan.miao,ou=后台组,ou=研发部门,ou=People,dc=demo,dc=com EOF

执行

ldapmodify -H ldap:/// -x -D cn=admin,dc=demo,dc=com -w admin -f removeUserFromGroup.sh

  1. <a name="J6O79"></a>
  2. #### ldapsearch
  3. - ldapsearch 查询语法, -H指定host, -D指定admin的账号,即rootdn, -w指定密码, -x启用认证,`-b` basedn, 查询的基础dn
  4. ```bash
  5. # ldapsearch -H ldapi:/// -D "cn=admin,dc=demo,dc=com" -w admia
  6. ldap_bind: Invalid credentials (49)
  7. # ldapsearch -H ldapi:/// -D "cn=admin,dc=demo,dc=com" -w admin
  8. # extended LDIF
  9. #
  10. # LDAPv3
  11. # base <> (default) with scope subtree
  12. # filter: (objectclass=*)
  13. # requesting: ALL
  14. #
  15. # search result
  16. search: 2
  17. result: 32 No such object
  18. # numResponses: 1

others commands

  1. ldapadd - add LDIF entries to an LDAP directory
  2. ldapauth - add LDIF entries to an LDAP directory
  3. ldapdelete - delete LDAP entries
  4. ldapmodify - modify existing LDAP entries
  5. ldapmodrdn - modify an LDAP entry’s DN
  6. ldappasswd - modify an entry’s password
  7. ldapsearch - search LDAP entries
  8. ldapwhoami - perform an LDAP Who Am I operation of a server

    其他模式

    configuration_choices
    image.png
    image.png

    其他应用

    应用场景
    1.网络服务:DNS服务
    2.统一认证服务:
    3.Linux PAM (ssh, login, cvs. . . )
    4.Apache访问控制
    5.各种服务登录(ftpd, php based, perl based, python based. . . )
    6.个人信息类,如地址簿
    7.服务器信息,如帐号管理、邮件服务等

示例:
门户中如何实现单点登录和统一身份认证?
《Liferay与CAS及LDAP》
统一身份认证服务
LDAP的应用简述—四种方面
统一身份认证

图形化界面工具

phpldapadmin 一个图形化界面管理工具
phpldapadmin_official_website
phpldapadmin_rpm
ldap 在联想 lico 的使用 - 图14

最近的工作

LimitNOFILE=8192
可以打开的 文件数目, 提升了连接数

  1. [root@login ~]# systemctl status slapd
  2. slapd.service - OpenLDAP Server Daemon
  3. Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
  4. Active: active (running) since Mon 2021-01-18 14:32:31 CST; 3 days ago
  5. Docs: man:slapd
  6. man:slapd-config
  7. man:slapd-hdb
  8. man:slapd-mdb
  9. file:///usr/share/doc/openldap-servers/guide.html
  10. Process: 1904916 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS)
  11. Process: 1904599 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
  12. Main PID: 1904972 (slapd)
  13. Tasks: 18 (limit: 101361)
  14. Memory: 116.0M
  15. CGroup: /system.slice/slapd.service
  16. └─1904972 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:/// ldaps:/// -f /etc/openldap/slapd.conf
  17. Jan 21 21:17:10 login slapd[1904972]: conn=1005 op=70974 SRCH attr=member cn memberUid gidNumber
  18. Jan 21 21:17:10 login slapd[1904972]: slap_global_control: unrecognized control: 1.3.6.1.4.1.4203.666.5.16
  19. Jan 21 21:17:10 login slapd[1904972]: conn=1005 op=70974 SEARCH RESULT tag=101 err=0 nentries=1 text=
  20. Jan 21 21:17:12 login slapd[1904972]: conn=1005 op=70975 SRCH base="dc=hpc,dc=com" scope=2 deref=0 filter="(&(objectClass=posixAccount)(uid=hpcadmin))"
  21. Jan 21 21:17:12 login slapd[1904972]: conn=1005 op=70975 SRCH attr=uidNumber cn gecos uid objectClass homeDirectory gidNumber loginShell
  22. Jan 21 21:17:12 login slapd[1904972]: conn=1005 op=70975 SEARCH RESULT tag=101 err=0 nentries=1 text=
  23. Jan 21 21:17:12 login slapd[1904972]: conn=1005 op=70976 SRCH base="dc=hpc,dc=com" scope=2 deref=0 filter="(&(objectClass=posixGroup)(gidNumber=1000))"
  24. Jan 21 21:17:12 login slapd[1904972]: conn=1005 op=70976 SRCH attr=member cn memberUid gidNumber
  25. Jan 21 21:17:12 login slapd[1904972]: slap_global_control: unrecognized control: 1.3.6.1.4.1.4203.666.5.16
  26. Jan 21 21:17:12 login slapd[1904972]: conn=1005 op=70976 SEARCH RESULT tag=101 err=0 nentries=1 text=
  27. [root@login ~]# cat /usr/lib/systemd/system/slapd.service
  28. [Unit]
  29. Description=OpenLDAP Server Daemon
  30. After=syslog.target network-online.target
  31. Documentation=man:slapd
  32. Documentation=man:slapd-config
  33. Documentation=man:slapd-hdb
  34. Documentation=man:slapd-mdb
  35. Documentation=file:///usr/share/doc/openldap-servers/guide.html
  36. [Service]
  37. Type=forking
  38. Environment="SLAPD_URLS=ldap:/// ldapi:/// ldaps:///" "SLAPD_OPTIONS="
  39. EnvironmentFile=/etc/sysconfig/slapd
  40. ExecStartPre=/usr/libexec/openldap/check-config.sh
  41. ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS
  42. LimitNOFILE=8192
  43. [Install]
  44. WantedBy=multi-user.target
  45. Alias=openldap.service
  46. ## netstat -anlp | grep nslcd | grep 'ESTABLISHED' | wc -l
  47. ## 查看连接数
  48. ### 查看 进程 的句柄数 https://www.cnblogs.com/sxdcgaq8080/p/11136887.html
  49. [root@login ~]# ps -ef | grep slapd
  50. ldap 1904972 1 0 Jan18 ? 00:03:09 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:/// ldaps:/// -f /etc/openldap/slapd.conf
  51. root 2940020 2939158 0 16:54 pts/11 00:00:00 grep --color=auto slapd
  52. [root@login ~]# cat /proc/1904972/limits
  53. Limit Soft Limit Hard Limit Units
  54. Max cpu time unlimited unlimited seconds
  55. Max file size unlimited unlimited bytes
  56. Max data size unlimited unlimited bytes
  57. Max stack size 8388608 unlimited bytes
  58. Max core file size unlimited unlimited bytes
  59. Max resident set unlimited unlimited bytes
  60. Max processes 63351 63351 processes
  61. Max open files 8192 8192 files
  62. Max locked memory 65536 65536 bytes
  63. Max address space unlimited unlimited bytes
  64. Max file locks unlimited unlimited locks
  65. Max pending signals 63351 63351 signals
  66. Max msgqueue size 819200 819200 bytes
  67. Max nice priority 0 0
  68. Max realtime priority 0 0
  69. Max realtime timeout unlimited unlimited us
  70. [root@login ~]#

image.png

reference