1. LDAP概述
1.1. LDAP基本概念
LDAP的目的是為各種軟件提供統一標准的認證機制,所有軟件就可以不再用獨有的用戶管理方法,而是通過這種統一的認證機制進行用戶認證。
1.2. LDAP的主要應用場景
- 網絡服務:DNS服務
- 統一認證服務
- Linux PAM(ssh,login, cvs…)
- Apache訪問控制
- 各種服務登錄(ftpd, php based, perl based, python based…)
- 個人信息類,比如地址簿
- 服務器信息,如賬號管理,郵件服務等
1.3. LDAP的用戶管理示例
管理多台Linux服務器時,如果每台服務器都有自己獨立的用戶名和密碼,那么記憶和維護這些信息就非常具有挑戰性。舉例: 每次學生上機的座位可能都不同,用戶名和密碼等相關的信息經常被修改。如果相互配合不好,就很容易造成有些人無法登錄,並且學生的文件資料也難以保存。通過將老師使用的電腦配置成為LDAP和NFS服務器,為所有的學生提供密碼驗證服務來解決這個問題。
輕量級目錄訪問協議(LDAP)提供了安全、可靠的賬號管理。Linux發行版中提供的OpenLDAP軟件安裝一個客戶機/服務器模型實現了輕量級目錄訪問協議(LDAP)
1.4. LDAP的基本模型
LDAP的基本模型是建立在"條目"(Entry)的基礎上。一個條目是一個或多個屬性的集合,並且具有一個全局唯一的"可區分名稱"(用dn表示)。與關系型數據(后面簡稱數據庫)進行類比,一個條目相當於數據庫中的一條記錄,而dn相當於數據庫中記錄的關鍵字,屬性相當於數據庫中的字段。
溫馨提示:dn必須是全局唯一的。
LDAP中,將數據組織成一個樹形結構,這與現實生活中的很多數據結構可以對應起來,而不像設計關系型數據庫的表,需要進行多種變化。如下圖所展示的就是一個樹形結構的數據。
在上圖所示的樹形結構中,樹的根結點是一個組織的域名(node3.com,可以根據自己意願配),其下分為2個部分,分別是ou=admin和dc=hdp,dc=hdp下面又分ou=people和ou=group。admin用來管理所有管理人員,people用來管理登錄系統的用戶,group用來管理系統中的用戶組。當然,在該圖中還可繼續增加其他分支。
對於圖中所示的樹形結構,使用關系數據庫來保存數據的話,需要設置多個表,一層一層分別保存,當需要查找某個信息時,再逐層進行查詢,最終得到結果。
若使用目錄來保存該圖中的數據,則更直觀。圖中每個結點用一個條目來保存,不同類型的結點需要保存的數據可能不同,在LDAP中通過一個稱為objectClass的類型來控制不同結點需要的數據(稱為屬性)。
1.5. LDAP的工作模型
openLDAP工作模型解釋如下:
- 客戶端向OpenLDAP服務器發起驗證請求;
- 服務器接受用戶請求后,並通過slapd進程向后端的數據庫進行查詢;
- slapd將查詢的結果返回給客戶端即可。如果有緩存機制,服務器端會先將查詢的條目進行緩存,然后再發給客戶端。
2. OPENLDAP安裝部署
這里,舉例:有5台機器,選擇其中一台安裝openldap的服務端,然后在所有的機器都得安裝openldap的客戶端。
2.1. openldap服務端安裝
2.1.1. openldap服務端必要軟件安裝
1.使用yum命令安裝
# yum install -y openldap openldap-clients openldap-servers compat-openldap openldap-devel
2. 安裝libdb相關依賴
# yum -y install libdb.x86_64 libdb-devel.x86_64
3. 復制一個默認配置到指定目錄下,並授權,這一步一定要做,然后再啟動服務,不然生成密碼時會報錯
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
4. 授權給ldap用戶,此用戶yum安裝時便會自動創建
# chown -R ldap. /var/lib/ldap/DB_CONFIG
5. 啟動ldap server服務,先啟動服務,配置后面再進行修改
# systemctl start slapd
# systemctl enable slapd
6. 查看狀態,正常啟動則OK
# systemctl status slapd
2.1.2. 修改管理者密碼
從openldap2.4.23版本開始,所有配置都保存在/etc/openldap/slapd.d目錄下的cn=config文件夾內,不再使用slapd.conf作為配置文件。配置文件的后綴為ldif,且每個配置文件都是通過命令自動生成的,任意打開一個配置文件,在開頭都會有一行注釋,說明此為自動生成的文件,請勿編譯,使用ldapmodify命令進行修改。
安裝openldap后,會有三個命令用於修改配置文件,分別為ldapadd,ldapmodify,ldapdelete,顧名思義就是添加,修改和刪除。而需要修改或增加配置時,則需要先寫一個ldif后綴的配置文件,然后通過命令將寫的配置更新到slapd.d目錄下的配置文件中去,完整的配置過程如下:
1. 生成管理員密碼,記錄下這個密碼,后面需要用到
# slappasswd -s 123456 {SSHA}kUhPHG2ffoZKzwl/pUxQg6W+WaFwpjQ/
2. 新增修改密碼文件,ldif為后綴,不要在/etc/openldap/slapd.d目錄下創建類似文件,生成的文件為需要通過命令去動態修改ldap現有配置,如下,在用戶目錄~下,創建文件
# cd ~ # vim changepwd.ldif dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}kUhPHG2ffoZKzwl/pUxQg6W+WaFwpjQ/
密碼修改配置文件內容解釋:
第一行執行配置文件,這里就表示指定為 cn=config/olcDatabase={0}config文件。到/etc/openldap/slapd.d/目錄下就能找到此文件。
第二行 changetype 指定類型為修改
第三行 add表示添加 olcRootPW 配置項
第四行指定 olcRootPW配置項的值
在執行下面的命令前,可以查看原本的olcDatabase={0}config文件,里面是沒有olcRootPW這個項的,執行命令后,你再看就會新增olcRootPW項,而且內容是我們文件中指定的值加密后的字符串
3. 執行命令,修改ldap配置,通過-f 執行文件
# ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif
4. 執行修改命令后,有如下輸出則為正常:
查看olcDatabase={0}config內容,cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif,新增了一個olcRootPW項
2.1.3. 導入基本schema
我們需要向ldap中導入一些基本的schema。這些schema文件位於/etc/openldap/schema/目錄中,schema控制着條目擁有哪些對象類和屬性,可以自行選擇需要的進行導入。依次執行下面的命令,導入基礎的一些配置,我這里將所有的都導入一下,其中core.ldif是默認已經加載了的,不用導入。
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
2.1.4. 修改域名
修改域名,新增changedomain.ldif,這里自定義的域名為node1.com,管理員用戶賬號為admin。如果要修改,則修改文件中相應的dc=node3.com,dc=com為自己的域名。
# vim changedomain.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=admin,dc=node3,dc=com" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=node3,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=admin,dc=node3,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootPW olcRootPW: {SSHA}w9g8YjPiphKbTeuTC0xTcVyrH6I6XXBe dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcAccess olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=node3,dc=com" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn="cn=admin,dc=node3,dc=com" write by * read
執行命令,修改配置
# ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif
最后這里有5個修改,所以執行會輸出5行表示成功
2.1.5. 啟用memberof功能
新增add-memberof.ldif,#開啟memberof支持並新增用戶支持memberof配置
# vim add-memberof.ldif dn: cn=module{0},cn=config cn: module{0} objectClass: olcModuleList objectclass: top olcModuleload: memberof.la olcModulePath: /usr/lib64/openldap dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config objectClass: olcConfig objectClass: olcMemberOf objectClass: olcOverlayConfig objectClass: top olcOverlay: memberof olcMemberOfDangling: ignore olcMemberOfRefInt: TRUE olcMemberOfGroupOC: groupOfUniqueNames olcMemberOfMemberAD: uniqueMember olcMemberOfMemberOfAD: memberOf
新增refint1.ldif文件
# vim refint1.ldif dn: cn=module{0},cn=config add: olcmoduleload olcmoduleload: refint
新增refint2.ldif文件
# vim refint2.ldif dn: olcOverlay=refint,olcDatabase={2}hdb,cn=config objectClass: olcConfig objectClass: olcOverlayConfig objectClass: olcRefintConfig objectClass: top olcOverlay: refint olcRefintAttribute: memberof uniqueMember manager owner
依次執行下面命令,加載配置,順序不能錯
# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add-memberof.ldif # ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif # ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif
至此,配置修改完了。
2.1.6. 創建node3組織
在上述基礎上,我們來創建一個node3 company的組織,node3為域名,並在其下創建一個admin的組織角色(該組織角色內的用戶具有管理整個LDAP的權限)和People和Group兩個組織單元:
# vim node3.ldif dn: dc=node3,dc=com dc: node3 objectClass: top objectClass: domain o: node3 dn: cn=admin,dc=node3,dc=com objectClass: organizationalRole cn: admin description: LDAP admin dn: dc=hdp,dc=node3,dc=com changetype: add dc: hdp objectClass: top objectClass: dcObject objectClass: organization o: hdp dn: ou=People,dc=hdp,dc=node3,dc=com ou: People objectClass: organizationalUnit dn: ou=Group,dc=hdp,dc=node3,dc=com ou: Group objectClass: organizationalUnit
執行命令,添加配置,這里要注意修改域名為自己配置的域名,然后需要輸入上面我們生成的密碼
# ldapadd -x -D cn=admin,dc=node3,dc=com -W -f node3.ldif
添加結果為:
注:這里的LDAP密碼為節點2.2.2.1配置的管理者密碼
通過以上的所有步驟,我們就設置好了一個LDAP目錄樹:其中基准dc=node3,dc=com是該樹的跟節點,其下有一個管理域cn=admin,dc=node3,dc=com和一個組織單元dc=hdp,dc=node3,dc=com, 其下有兩個子屬性ou=People,dc=hdp,dc=node3,dc=com及ou=Group,dc=hdp,dc=node3,dc=com。
2.1.7. 創建新用戶和新用戶組的ldif文件
先生成一個密碼123456:
# slappasswd -s 123456 {SSHA}32S2uLFahPZMqMzVYhT8fOKOp8RzremG
創建新用戶的ldif文件
# vim ldapuser.ldif #這里testUser用戶,我將其加入到testgroup組中 # create new # replace to your own domain name for "dc=***,dc=***" section dn: uid=testldap,ou=People,dc=hdp,dc=node3,dc=com objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: testldap cn: testgroup sn: test userPassword: {SSHA}32S2uLFahPZMqMzVYhT8fOKOp8RzremG loginShell: /bin/bash uidNumber: 2000 gidNumber: 3000 homeDirectory: /home/testldap #這是添加一個用戶組名為testgroup的cn,在名為Group的ou下 dn: cn=testgroup,ou=Group,dc=hdp,dc=node3,dc=com objectClass: posixGroup cn: testgroup gidNumber: 3000 memberUid: testldap
向openldap服務端添加新用戶testldap
# ldapadd -x -D cn=admin,dc=node3,dc=com -W -f ldapuser.ldif
為該用戶修改密碼為123456命令為:
# ldappasswd -x -H ldap://192.168.1.107:389 -D "cn=admin,dc=node3,dc=com" -W "uid=testldap,ou=People,dc=hdp,dc=node3,dc=com" -s 123456
注:
- ldap://192.168.1.107:389為openldap的服務端ip加端口;
- cn=admin,dc=node3,dc=com為openldap上面設置的管理者節點;
- uid=testldap,ou=People,dc=hdp,dc=node3,dc=com為用戶id;
- 123456為修改指定的用戶密碼。
2.2. OpenLDAP客戶端安裝
2.2.1. OpenLDAP客戶端安裝必要軟件
使用yum命令安裝
# yum install -y openldap openldap-clients sssd nss-pam-ldapd
2.2.2.OpenLDAP客戶端NSS服務配置
1. 修改/etc/nslcd.conf
# vim /etc/nslcd.conf uid nslcd gid ldap uri ldap://192.168.1.107:389 # ldap目錄樹的基准 base dc=node3,dc=com # ldap的管理域 binddn cn=admin,dc=node3,dc=com # ldap管理者密碼 bindpw 123456 ssl no tls_cacertdir /etc/openldap/cacerts
2. 啟動服務並設置開機自啟動
# chmod 600 /etc/nslcd.conf # systemctl start nslcd # systemctl enable nslcd
3. 配置/etc/nsswitch.conf
# vim /etc/nsswitch.conf #passwd: files sss #shadow: files sss #group: files sss #initgroups: files sss passwd: files ldap shadow: files ldap group: files ldap hosts: files dns myhostname bootparams: nisplus [NOTFOUND=return] files ethers: files netmasks: files networks: files protocols: files rpc: files services: files sss #netgroup: files sss netgroup: nisplus sss publickey: nisplus automount: files nisplus sss aliases: files nisplus
4. 測試是否可用
# getent passwd | grep testldap testldap:x:2000:3000:testgroup:/home/testldap:/bin/bash
2.2.3. OpenLDAP客戶端SSSD服務配置
1. 修改/etc/sssd/sssd.conf文件,在執行authconfig命令時默認生成,如果文件不存在則新建,文件內容如下:
# vim /etc/sssd/sssd.conf [domain/default] autofs_provider = ldap ldap_schema = rfc2307bis krb5_realm = REDPEAK.COM ldap_search_base = dc=node3,dc=com krb5_server = 192.168.1.107 id_provider = ldap auth_provider = ldap chpass_provider = ldap ldap_uri = ldap://192.168.1.107:389 ldap_id_use_start_tls = False cache_credentials = True ldap_tls_cacertdir = /etc/openldap/cacerts [sssd] services = nss, pam, autofs domains = default [nss] homedir_substring = /home [pam] [sudo] [autofs] [ssh] [pac] [ifp] [secrets]
2. 修改sssd.conf文件權限
# chmod 600 /etc/sssd/sssd.conf
3. 啟動sssd服務並加入系統自啟動
# systemctl start sssd
# systemctl enable sssd
# systemctl status sssd
2.2.4. OpenLDAP與SSH集成
1. 修改配置文件/et c/ssh/sshd_config,是ssh通過pam認證賬號
PasswordAuthentication yes
UsePAM yes
注意:默認使用的是密碼認證方式,在集成SSH登錄時需要確保PasswordAuthentication yes配置為yes。
2. 修改配置文件/etc/pam.d/sshd,以確認調用pam認證文件
# vim /etc/pam.d/sshd #%PAM-1.0 auth required pam_sepermit.so auth substack password-auth auth include postlogin # Used with polkit to reauthorize users in remote sessions -auth optional pam_reauthorize.so prepare account required pam_nologin.so account include password-auth password include password-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open env_params session required pam_namespace.so session optional pam_keyinit.so force revoke session include password-auth session include postlogin #加入此行后確保登錄成功后創建用戶的home目錄 session required pam_mkhomedir.so # Used with polkit to reauthorize users in remote sessions -session optional pam_reauthorize.so prepare
3. 修改配置文件/etc/pam.d/password-auth
# vim /etc/pam.d/password-auth #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet auth [default=1 ignore=ignore success=ok] pam_localuser.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success #auth sufficient pam_sss.so forward_pass auth sufficient pam_ldap.so forward_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet #account [default=bad success=ok user_unknown=ignore] pam_sss.so account [default=bad success=ok user_unknown=ignore] pam_ldap.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok #password sufficient pam_sss.so use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session optional pam_mkhomedir.so umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so #session optional pam_sss.so session optional pam_ldap.so
4. 修改配置文件/etc/pam.d/system-auth配置文件
# vim /etc/pam.d/system-auth #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth sufficient pam_fprintd.so auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet auth [default=1 ignore=ignore success=ok] pam_localuser.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success #auth sufficient pam_sss.so forward_pass auth sufficient pam_ldap.so forward_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet #account [default=bad success=ok user_unknown=ignore] pam_sss.so account [default=bad success=ok user_unknown=ignore] pam_ldap.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok #password sufficient pam_sss.so use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session optional pam_mkhomedir.so umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so #session optional pam_sss.so session optional pam_ldap.so
5. 重啟ssh、sssd和nslcd
# systemctl restart sshd
# systemctl restart sssd
# systemctl restart nslcd
到此為止就完成了OpenLDAP與SSH的集成
2.2.5. 驗證SSH登錄
隨便登錄一台機器
1. 確認testldap用戶只存在於OpenLDAP
# more /etc/passwd |grep testldap # id testldap uid=2000(testldap) gid=2000(testgroup) groups=2000(testgroup)
2. su切換至testldap用戶
# su testldap # id testldap uid=2000(testldap) gid=2000(testgroup) groups=2000(testgroup)
3. ssh登錄
# ssh testldap@node2 testldap@node2's password: Last failed login: Mon Jan 20 17:16:03 CST 2020 from node2 on ssh:notty There were 3 failed login attempts since the last successful login. Last login: Mon Jan 20 17:14:51 2020 from node2
[testldap@node2 ~]$ pwd /home/testldap [testldap@node2 ~]$ id uid=2000(testldap) gid=3000(testgroup) groups=3000(testgroup)
3. ldap常用命令
查詢所有用戶及用戶組:
ldapsearch -LL -Y EXTERNAL -H ldapi:/// -b dc=node3,dc=com
刪除某一用戶:
ldapdelete -x -D cn=admin,dc=node3,dc=com "uid=tenant1,ou=People,dc=hdp,dc=node3,dc=com" -w 123456
為某一用戶修改密碼為12345:
ldappasswd -x -H ldap://192.168.1.107:389 -D "cn=admin,dc=node3,dc=com" -W 123456 "uid=tenant1,ou=People,dc=hdp,dc=node3,dc=com" -s 12345
4. 備份與還原
root用戶執行命令
備份組織結構:
ldapsearch -x -D "cn=admin,dc=apache,dc=org" -w ldap@123 -h node214 -p 389 -b "dc=apache,dc=org" "(objectclass=organizationalUnit)" > apache_ou_bak.ldif
備份用戶組:
ldapsearch -x -D "cn=admin,dc=apache,dc=org" -w ldap@123 -h node214 -p 389 -b "dc=apache,dc=org" "(objectclass=posixGroup)" > apache_group_bak.ldif
備份用戶:
ldapsearch -x -D "cn=admin,dc=apache,dc=org" -w ldap@123 -h node214 -p 389 -b "dc=apache,dc=org" "(objectclass=inetOrgPerson)" > apache_people_bak.ldif
還原組織結構:
ldapadd -x -H ldap://192.168.1.107:389 -D "cn=admin,dc=apache,dc=org" -w 123456 -f apache_ou_bak.ldif
還原用戶組:
ldapadd -x -H ldap://192.168.1.107:389 -D "cn=admin,dc=apache,dc=org" -w 123456 -f apache_group_bak.ldif
還原用戶:
ldapadd -x -H ldap://192.168.1.107:389 -D "cn=admin,dc=apache,dc=org" -w 123456 -f apache_people_bak.ldif
注:
- -H ldap://192.168.1.107:389 ldap server的服務器ip和端口
- -D "cn=admin,dc=apache,dc=org" 用來綁定服務器的DN,通常是admin的DN
- -w 123456 綁定DN的密碼
- -f apache_people_bak.ldif 使用ldif文件進行條目添加的文件
5. ldap遇到的問題
5.1. OpenLDAP報open files too many連接數過高
問題描述:登錄ldap用戶登錄不上,並且連接ldap服務器執行ldap修改命令卡住,使用命令“netstat -apn | grep slapd”發現ldap服務器的slapd與客戶端nslcd建立的ESTABLISHED非常多,並且連接數一直在增長。使用systemctl status slapd,會看到“warning: cannot open /etc/hosts.allow: Too many open files”的提示,如圖所示:
問題原因:連接數過高的時候(默認open files為1024),slapd就會hang死,並且此時打開的文件數也異常之高。服務端一直保持與客戶端建立長連接,不主動釋放連接,同時客戶端默認與服務端是緊耦合的連接方式,會一直嘗試連接服務端。
通過“cat
/proc/`pidof slapd`/limits
”,可以查看slapd進程的描述符信息,即open files的最大值。
問題解決:在啟動腳本的[Service]標簽中增加一行LimitNOFILE=8192,並重啟服務即可修改原有的文件描述符。啟動腳本修改后的內容如下:
重新加載啟動腳本並重啟服務
systemctl daemon-reload
systemctl restart slapd
再次查看Openldap的文件描述符已經成功修改。
6. 總結
【參考資料】
https://www.cnblogs.com/somata/p/LinuxLDAPUserAuthentication.html 配置Linux使用LDAP用戶認證(本地登錄成功示例)
https://cloud.tencent.com/developer/article/1100823 如何在RedHat7中實現OpenLDAP集成SSH登錄並使用sssd同步用戶 (ssh登錄成功示例)
https://blog.csdn.net/weixin_41004350/article/details/89521170 失敗案例
https://blog.csdn.net/u010783533/article/details/88572697 搭建ldap
https://segmentfault.com/a/1190000010270703 php ldap擴展
https://www.cnblogs.com/jpfss/p/11021948.html Linux下LDAP統一認證解決方案
https://blog.csdn.net/u011607971/article/details/86153608 LDAP_ACCOUNT_MANAGER安裝
https://www.cnblogs.com/zsql/p/11759422.html 離線安裝openldap,解決yum命令后出現libldap-2.4.so.2: cannot open shared object file
https://www.jianshu.com/p/e196b75a47a2 centos7 限制ldap用戶登陸主機
https://blog.mowd.tw/p/844 Ubuntu 設定 LDAP + PAM + NFS 實現多台電腦單一帳號驗證
https://cloud.tencent.com/developer/article/1026304 Centos7.2下針對LDAP的完整部署記錄
https://blog.csdn.net/dqatsh/article/details/2961758 使用OpenLDAP實現集中用戶認證
http://www.ttlsa.com/linux/openldap-openssh-lpk-sudo-tls-auth/ LINUX下基於LDAP集中系統用戶認證系統
https://www.cnblogs.com/dufeixiang/p/11624210.html linux 利用LDAP身份集中認證
https://boke.wsfnk.com/archives/433.html 如何添加用戶條目 Add Users 及如何將本地linux賬戶添加至ldap條目樹中
https://www.cnblogs.com/lfdblog/p/9805245.html ldap 用戶組和用戶
https://cloud.tencent.com/developer/article/1078660 如何在OpenLDAP中實現將一個用戶添加到多個組
https://blog.csdn.net/listen2you/article/details/82706921 啟用OpenLDAP的memberOf特性
http://www.ldap.org.cn/296.html
https://www.jianshu.com/p/e196b75a47a2
https://segmentfault.com/a/1190000007053961 服務端slapd與客戶端nslcd連接問題
https://blog.51cto.com/12113362/2050542 ldap 初始化配置