OpenLDAP 安裝配置和使用

前言

OpenLDAP 是 LDAP 協(xié)議的一個開源實現(xiàn)(Lightweight Directory Access Protocol戚丸,LDAP)膨桥。多用于集中式用戶身份信息管理和認(rèn)證服務(wù)竹揍。本篇講解OpenLDAP服務(wù)的安裝配置和使用恼五。

環(huán)境信息:

  • CentOS 7
  • OpenLDAP 2.4.44

安裝和配置OpenLDAP

安裝OpenLDAP

執(zhí)行下面命令安裝OpenLDAP:

yum install -y openldap openldap-clients openldap-servers

執(zhí)行完畢后openldap服務(wù)端和客戶端安裝完成镰矿。

配置OpenLDAP的管理員和密碼

和其他管理系統(tǒng)一樣径簿,OpenLDAP也需要設(shè)置一個管理員賬戶和密碼罢屈。

這里我們將管理員用戶配置為DN=cn=Manager,dc=paultech,dc=com,密碼設(shè)置為admin牍帚。

執(zhí)行:

[root@test ~]# slappasswd -s admin
{SSHA}EsELyIVzL20GOByTOsZcwg/Z92QObh4X

記下這串字符儡遮,接下來會用到。

修改/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif文件:

olcSuffix: dc=paultech,dc=com
olcRootDN: cn=Manager,dc=paultech,dc=com
olcRootPW: {SSHA}EsELyIVzL20GOByTOsZcwg/Z92QObh4X

這些配置項的含義為:

  • olcSuffix: 前綴暗赶,一般為機器的域名。后面創(chuàng)建的所有對象都具有這個前綴肃叶。
  • olcRootDN: 管理員DN蹂随。
  • olcRootPW: 管理員密碼,使用前面slappasswd生成的字符串因惭。

然后修改/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif文件:

olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" read by dn.base="cn=Manager,dc=paultech,dc=com" read by * none

第二個dn.base修改為管理員DN岳锁。

然后校驗配置文件:

[root@test cn=config]# slaptest -u
62f07254 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
62f07254 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"
config file testing succeeded

這里顯示配置文件測試成功。Checksum error 可以忽略蹦魔。

啟動服務(wù)

執(zhí)行:

systemctl enable slapd
systemctl start slapd
systemctl status slapd

啟動slapd服務(wù)激率。

配置openldap數(shù)據(jù)庫

執(zhí)行:

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

導(dǎo)入基本schema:

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

也可以導(dǎo)入全部/etc/openldap/schema/中的schema,命令和上面的類似勿决。

生成基礎(chǔ)目錄樹

由于沒有基礎(chǔ)目錄樹乒躺,LDAP系統(tǒng)到目前為止是無法使用的。需要使用命令將他們創(chuàng)建出來低缩。

創(chuàng)建一個base.ldif文件嘉冒,內(nèi)容如下:

dn: dc=paultech,dc=com
dc: paultech
objectClass: top
objectClass: domain
 
dn: ou=people,dc=paultech,dc=com
ou: people
objectClass: top
objectClass: organizationalUnit
 
dn: ou=group,dc=paultech,dc=com
ou: group
objectClass: top
objectClass: organizationalUnit

然后執(zhí)行:

ldapadd -x -D "cn=Manager,dc=paultech,dc=com" -W -f base.ldif

將上面的目錄創(chuàng)建出來。

創(chuàng)建成功之后使用ldapsearch -x -LLL查看創(chuàng)建出的目錄咆繁。

注意讳推,執(zhí)行命令可能會遇到如下輸出:

[root@paultech ~]# ldapsearch -x -LLL
No such object (32)

這種情況需要配置/etc/openldap/ldap.conf文件,修改下面的內(nèi)容:

BASE    dc=paultech,dc=com
URI     ldap://paultech
  • BASE修改為前面配置的olcSuffix玩般。
  • URL修改為ldap://{LDAP服務(wù)器的hostname或IP}银觅。

然后重新執(zhí)行上面的命令。

使用migrationtools遷移系統(tǒng)用戶到LDAP服務(wù)

進行完上面步驟OpenLDAP安裝和部署已經(jīng)完成坏为,但是其中沒有用戶和組信息究驴∧餍鳎可以通過手工創(chuàng)建objectclass為posixAccountinetorgperson條目代表用戶,創(chuàng)建objectclass為posixGroup或者groupOfNames代表分組纳胧。通過創(chuàng)建organizationalUnitorganizationalRole對條目劃分部門等镰吆。

還有一種用戶組信息的規(guī)劃方案,就是和操作系統(tǒng)的用戶體系保持同步跑慕。這就涉及到如何將操作系統(tǒng)用戶和組信息遷移到LDAP服務(wù)中万皿。本節(jié)主要講解使用migrationtools遷移系統(tǒng)用戶到LDAP服務(wù)的方法。

安裝migrationtools

執(zhí)行:

yum install -y migrationtools

修改配置

編輯/usr/share/migrationtools/migrate_common.ph文件核行。修改如下內(nèi)容:

# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "paultech.com";

# Default base
$DEFAULT_BASE = "dc=paultech,dc=com";

執(zhí)行遷移

# 導(dǎo)出基礎(chǔ)信息
/usr/share/migrationtools/migrate_base.pl > base.ldif
# 導(dǎo)出用戶
/usr/share/migrationtools/migrate_passwd.pl /etc/passwd passwd.ldif
# 導(dǎo)出組
/usr/share/migrationtools/migrate_group.pl /etc/group group.ldif

# 導(dǎo)入上面的信息到LDAP服務(wù)
ldapadd -x -D "cn=Manager,dc=paultech,dc=com" -W -f base.ldif
ldapadd -x -D "cn=Manager,dc=paultech,dc=com" -W -f passwd.ldif
ldapadd -x -D "cn=Manager,dc=paultech,dc=com" -W -f group.ldif

注意牢硅,如果目標(biāo)條目已存在,導(dǎo)入的時候會報錯退出芝雪〖跤啵可以在ldapadd命令中使用-c參數(shù)忽略錯誤。

OpenLDAP命令使用

OpenLDAP 有如下常用客戶端命令:

  • ldapsearch:搜索目錄樹條目惩系。
  • ldapadd:通過ldif文件添加目錄樹條目位岔。
  • ldapdelete:刪除目錄樹條目。
  • ldapmodify:修改目錄樹條目堡牡。
  • ldapwhoami:校驗LDAP用戶的身份信息抒抬。
  • ldapmodrdn:修改目錄樹條目的DN。
  • ldapcompare:判斷兩個條目是否為同一個晤柄。
  • ldappasswd:重置LDAP用戶條目的密碼擦剑。

服務(wù)端命令常用的有:

  • slaptest:驗證OpenLDAP配置文件有效性。
  • slapindex:創(chuàng)建LDAP目錄樹索引芥颈,提高檢索效率惠勒。
  • slapcat:將條目轉(zhuǎn)換為ldif文件。多用于備份爬坑。

接下來分別介紹他們纠屋。

ldapsearch

ldapsearch命令用來根據(jù)查詢條件檢索出符合條件的條目。

參數(shù)解釋:

  • -x: 使用簡單認(rèn)證妇垢。
  • -b searchbase: 查找的節(jié)點巾遭。
  • -D binddn: LDAP綁定的DN,使用時候指定OpenLDAP管理員的DN闯估。
  • -W: 命令執(zhí)行之后需要數(shù)據(jù)管理員DN密碼灼舍。
  • -w password: 直接將管理員密碼附在參數(shù)中。
  • -h: LDAP服務(wù)所在hostname或者IP涨薪。
  • -p: LDAP服務(wù)的端口號骑素。配合-h參數(shù)使用授嘀。
  • -H: 根據(jù)LDAP URL查詢對應(yīng)的LDAP服務(wù)挫以。
  • -L: 指定輸出格式。輸出格式為ldif(LDAP Data Interchange Format)。一個L代表限制輸出格式為LDIFv1.A寇僧,兩個L代表不輸出注釋弱恒,三個L表示不輸出ldif版本信息射亏。

如果查詢的LDAP服務(wù)和執(zhí)行命令的機器相同虫腋,可以不指定-p, -h-H參數(shù)。

例如:

ldapsearch -x -b cn=users,cn=accounts,dc=paultech,dc=com -D uid=admin,cn=users,cn=accounts,dc=paultech,dc=com -W

這條命令查找DN=cn=users,cn=accounts,dc=paultech,dc=com下面的所有條目的所有屬性妥畏。

ldapsearch -x -b cn=users,cn=accounts,dc=paultech,dc=com uid cn displayName -D uid=admin,cn=users,cn=accounts,dc=paultech,dc=com -W

這條命令查找DN=cn=users,cn=accounts,dc=paultech,dc=com下面的所有條目的uid, cn和displayName屬性邦邦。

ldapsearch -x -b cn=users,cn=accounts,dc=paultech,dc=com "uid=paul" cn displayName -D uid=admin,cn=users,cn=accounts,dc=paultech,dc=com -W

這條命令查找DN=cn=users,cn=accounts,dc=paultech,dc=com下面的uid為paul的所有條目的cn和displayName屬性。

除了使用=表示查詢條件關(guān)系外醉蚁,還可以使用>=燃辖,<=~=

ldapadd

ldapadd命令用來根據(jù)ldif文件添加目錄樹條目网棍。相當(dāng)于ldapmodify -a命令黔龟。

對于以下ldif文件:

dn: dc=paultech,dc=com
dc: paultech
objectClass: top
objectClass: domain
  
dn: ou=people,dc=paultech,dc=com
ou: people
objectClass: top
objectClass: organizationalUnit
  
dn: ou=group,dc=paultech,dc=com
ou: group
objectClass: top
objectClass: organizationalUnit

執(zhí)行:

ldapadd -x -D "cn=Manager,dc=paultech,dc=com" -W -f base.ldif

可以將上面的條目添加到LDAP。

ldapdelete

ldapdelete從目錄樹中刪除指定的條目滥玷,通過DN來匹配需要刪除的條目氏身。

參數(shù)解釋:

  • -x: 使用簡單認(rèn)證。

  • -D binddn: LDAP綁定的DN惑畴,使用時候指定OpenLDAP管理員的DN观谦。

  • -W: 命令執(zhí)行之后需要數(shù)據(jù)管理員DN密碼。

  • -w password: 直接將管理員密碼附在參數(shù)中桨菜。

  • -y: 使用密碼文件的方式認(rèn)證。

  • -h: LDAP服務(wù)所在hostname或者IP捉偏。

  • -p: LDAP服務(wù)的端口號倒得。配合-h參數(shù)使用。

  • -H: 根據(jù)LDAP URL查詢對應(yīng)的LDAP服務(wù)夭禽。

  • -r: 遞歸刪除霞掺。

  • -n: 顯示正在進行的操作,但實際上不修改讹躯,多用于測試命令菩彬。

  • -c: 持續(xù)操作模式,執(zhí)行過程中間出錯不中斷潮梯。

例如:

ldapdelete -x -W -D cn=Manager,dc=paultech,dc=com "uid=paul,ou=People,dc=paultech,dc=com"

命令會刪除DN為uid=paul,ou=People,dc=paultech,dc=com的條目骗灶。

ldapmodify

ldapmodify用來編輯目錄樹中的條目。

參數(shù)解釋:

  • -x: 使用簡單認(rèn)證秉馏。

  • -D binddn: LDAP綁定的DN耙旦,使用時候指定OpenLDAP管理員的DN。

  • -W: 命令執(zhí)行之后需要數(shù)據(jù)管理員DN密碼萝究。

  • -w password: 直接將管理員密碼附在參數(shù)中免都。

  • -y: 使用密碼文件的方式認(rèn)證锉罐。

  • -h: LDAP服務(wù)所在hostname或者IP。

  • -p: LDAP服務(wù)的端口號绕娘。配合-h參數(shù)使用脓规。

  • -H: 根據(jù)LDAP URL查詢對應(yīng)的LDAP服務(wù)。

  • -a: 增加條目险领。相當(dāng)于ldapadd侨舆。

  • -f: 指定ldif文件。

下面給出一個例子舷暮。編輯modifyUser.ldif文件态罪,內(nèi)容如下:

dn: uid=paul,ou=People,dc=paultech,dc=com
changetype: modify
replace: displayName
displayName: PaulJackson

然后執(zhí)行:

ldapmodify -x -D cn=Manager,dc=paultech,dc=com -W -f modifyUser.ldif

可以修改DN為uid=paul,ou=People,dc=paultech,dc=comdisplayName屬性值。

ldapmodify也可以刪除屬性值下面,例如:

dn: uid=paul,ou=People,dc=paultech,dc=com
changetype: modify
delete: displayName

ldapwhoami

用來驗證用戶和密碼复颈。

例如:

ldapwhoami -x -D uid=paul,ou=People,dc=paultech,dc=com -w 123456
uid=paul,ou=People,dc=paultech,dc=com

如果用戶信息正確,會返回用戶的DN沥割。否則會報Invalid credentials(憑據(jù)無效)耗啦。

ldapmodrdn

修改目錄條目的RDN,即修改DN机杜。

其余參數(shù)和上面的命令基本相同帜讲,需要注意的是這個參數(shù):

  • -r: 刪除老舊的RDN條目。默認(rèn)情況會保留舊的值椒拗。

例如:

ldapmodrdn -x -D cn=Manager,dc=paultech,dc=com -W "uid=kate,ou=People,dc=paultech,dc=com" uid=mary

uid=kate,ou=People,dc=paultech,dc=com修改為uid=mary,ou=People,dc=paultech,dc=com似将,同時保留uid=kate。如果之后需要刪除蚀苛≡谘椋可以編寫如下ldif文件,然后使用ldapmodify命令運行堵未。

dn: uid=mary,ou=People,dc=paultech,dc=com
changetype: modify
delete: uid
uid: kate

ldapcompare

比較兩個條目是否是同一個條目腋舌。

ldapcompare -x -D cn=Manager,dc=paultech,dc=com -W "uid=paul,ou=People,dc=paultech,dc=com" "uid:kate"
FALSE

ldappasswd

使用LDAP管理員修改LDAP用戶的密碼。

需要注意的是下面的參數(shù):

  • -A: 提示輸入舊密碼渗蟹。
  • -S: 提示輸入新密碼块饺。

一個例子如下:

ldappasswd -x -D cn=Manager,dc=paultech,dc=com -w admin "uid=paul,ou=People,dc=paultech,dc=com" -S

slaptest

檢測LDAP配置文件是否存在問題。例如:

slaptest -f /etc/openldap/slapd.conf

slapindex

創(chuàng)建LDAP數(shù)據(jù)庫的索引雌芽,加快檢索速度授艰。執(zhí)行的時候要求停止slapd服務(wù)。

  • -f:指定 OpenLDAP 的配置文件(slapd.conf)膘怕,并創(chuàng)建索引想诅。

  • -F:指定 OpenLDAP 數(shù)據(jù)庫目錄,并創(chuàng)建索引。

slapcat

將數(shù)據(jù)條目轉(zhuǎn)換為ldif文件来破。

  • -a filter:添加過濾選項篮灼。只dump符合過濾條件的條目。
  • -b suffix:指定 suffix徘禁。比如 dc=paultech,dc=com诅诱。
  • -f:指定 OpenLDAP 的配置文件。
  • -F:指定 OpenLDAP 的數(shù)據(jù)庫文件目錄送朱。
  • -c:出現(xiàn)錯誤時娘荡,忽略錯誤繼續(xù)執(zhí)行。
  • -H:使用 LDAP 服務(wù)器的 URL 地址進行操作驶沼。
  • -v:輸出詳細(xì)信息炮沐。

例如:

slapcat -v -l dump.ldif

圖形化界面操作LDAP

命令方式查看目錄樹,搜索和修改等操作非常繁瑣不直觀回怜。社區(qū)為我們提供了圖形化界面操作LDAP的工具大年。下面我們分別介紹下Apache Directory Studio(客戶端訪問方式)和phpldapadmin(服務(wù)器端常駐服務(wù))兩種常用的圖形化工具。

使用Apache Directory Studio

Apache Directory Studio是一個可運行在Windows玉雾,MacOS和Linux下的圖形界面操作LDAP客戶端翔试。

下載地址:Index of /apache/directory/studio (tsinghua.edu.cn)。然后解壓到任意目錄复旬。

注意:Apache Directory Studio要求JDK11以上垦缅,需要編輯安裝目錄下ApacheDirectoryStudio.ini文件,配置JDK11的java二進制文件地址驹碍,如下:

-vm
/path/to/jdk-11.0.14.1+1/bin/java

啟動成功后點擊File -> New壁涎。選擇彈出窗口wizards中的LDAP Browser -> LDAP Connection。然后按照向?qū)钊隠DAP服務(wù)的hostname和端口號志秃,Bind DN和密碼(管理員DN及其密碼)粹庞。即可連接到LDAP服務(wù)。

Apache Directory Studio左側(cè)導(dǎo)航欄以樹形結(jié)構(gòu)展示了所有LDAP目錄條目洽损。點擊任意一個條目,右側(cè)會展示該條目的所有屬性和值革半。創(chuàng)建條目和編輯屬性的方法較為直觀碑定,這里不再介紹。

phpldapadmin

phpldapadmin是一個常駐web服務(wù)又官,提供了圖形化操作LDAP目錄樹的能力延刘。

安裝配置

安裝epel-release源:

yum install -y epel-release
yum makecache

安裝phpldapadmin:

yum install phpldapadmin.noarch

接下來配置phpldapadmin。

編輯/etc/phpldapadmin/config.php文件六敬,修改Define your LDAP servers in this section

$servers->setValue('server','host','127.0.0.1');
$servers->setValue('server','port',389);
$servers->setValue('login','auth_type','cookie');
$servers->setValue('login','bind_id','cn=Manager,dc=paultech,dc=com');
$servers->setValue('login','bind_pass','admin');
$servers->setValue('server','tls',false);

SASL Authentication部分修改如下配置:

$servers->setValue('login','attr','dn');

啟動httpd服務(wù):

systemctl start httpd

登錄web管理頁面

瀏覽器打開http://{ip}/ldapadmin碘赖。登錄用戶名和密碼分別使用管理員DNcn=Manager,dc=paultech,dc=com和上面配置的密碼admin

FAQ

This base cannot be created with PLA錯誤,無法創(chuàng)建任何條目

出現(xiàn)這個問題說明沒有創(chuàng)建基礎(chǔ)目錄樹普泡。

創(chuàng)建base.ldif文件播掷,添加如下內(nèi)容:

dn: dc=paultech,dc=com
dc: paultech
objectClass: top
objectClass: domain

然后執(zhí)行:

ldapadd -D cn=Manager,dc=paultech,dc=com -x -f base.ldif -W

輸入LDAP的管理員密碼。創(chuàng)建出基礎(chǔ)目錄樹撼班。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末歧匈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子砰嘁,更是在濱河造成了極大的恐慌件炉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矮湘,死亡現(xiàn)場離奇詭異斟冕,居然都是意外死亡,警方通過查閱死者的電腦和手機缅阳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門磕蛇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人券时,你說我怎么就攤上這事孤里。” “怎么了橘洞?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵捌袜,是天一觀的道長。 經(jīng)常有香客問我炸枣,道長虏等,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任适肠,我火速辦了婚禮霍衫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侯养。我一直安慰自己敦跌,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布逛揩。 她就那樣靜靜地躺著柠傍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辩稽。 梳的紋絲不亂的頭發(fā)上惧笛,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音逞泄,去河邊找鬼患整。 笑死拜效,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的各谚。 我是一名探鬼主播紧憾,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嘲碧!你這毒婦竟也來了稻励?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤愈涩,失蹤者是張志新(化名)和其女友劉穎望抽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體履婉,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡煤篙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了毁腿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辑奈。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖已烤,靈堂內(nèi)的尸體忽然破棺而出鸠窗,到底是詐尸還是另有隱情,我是刑警寧澤胯究,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布稍计,位于F島的核電站,受9級特大地震影響裕循,放射性物質(zhì)發(fā)生泄漏臣嚣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一剥哑、第九天 我趴在偏房一處隱蔽的房頂上張望硅则。 院中可真熱鬧,春花似錦株婴、人聲如沸怎虫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽揪垄。三九已至,卻和暖如春逻翁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捡鱼。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工八回, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓缠诅,卻偏偏與公主長得像溶浴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子管引,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容