Openldap安裝部署


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工作模型解釋如下:

  1. 客戶端向OpenLDAP服務器發起驗證請求;
  2. 服務器接受用戶請求后,並通過slapd進程向后端的數據庫進行查詢;
  3. 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 初始化配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM