OpenLDAP 學習筆記

來源:互聯網
上載者:User

 

OpenLDAP 的安裝和配置

 

OpenLDAP 常規組件:
  • ldap 伺服器管理套件:軟體包名為 openldap-servers 。包含服務程式(slapd、slurpd)及一些服務端管理工具(如:slapadd、slappasswd 等)。設定檔為:/etc/openldap/slapd.conf
  • ldap 用戶端支援:軟體包名為 openldap 。包含 OpenLDAP 的設定檔、庫和 OpenLDAP 文檔。設定檔為:/etc/openldap/ldap.conf
  • ldap 用戶端目錄管理套件:軟體包名為 openldap-clients 。包含訪問和修改 OpenLDAP
    目錄所需的客戶程式(如:ldapsearch、ldapadd 、ldappasswd等)。推薦使用基於Web的GUI管理工具 phpLDAPadmin 。但基本的這些命令還是需要瞭解的。
  • nss_ldap 統一認證模組:LDAP 的 NSS 庫和 PAM 模組(pam_ldap.so),提供系統命名服務和驗證服務。
    • nss_ldap 是一組 C 庫擴充,它允許 LDAP 目錄伺服器用作一個使用者和組資訊的主源
    • pam_ldap 是一個 Linux-PAM 模組,它支援身分識別驗證功能。pam_ldap為很多應用系統(如系統登入、vsftpd FTP伺服器)提供LDAP統一認證和密碼更新等服務。
 OpenLDAP 依賴的一些軟體:
  • 後端資料庫:Oracle Berkeley DB
  • 安全性通訊協定:openssl  (可選,讓LDAP使用TLS安全傳輸)
  • 時間伺服器:ntp(可選)

 

軟體安裝

使用 yum install 命令分別安裝上面提到的三個軟體包。

 

伺服器配置(slapd.conf)

修改/etc/openldap/slapd.conf,主要修改項如下:

  • 包含要用到的 schema 文法檔案(include )。include 檔案定義了條目所屬的類(objectClasses)和條目要用到的屬性(attribute)
  • 設定目錄的存取控制清單(ACL)(access to … by …):即指定目錄對象(如屬性)可由哪些使用者怎樣訪問。如密碼只供認證不可查看。
  • 定義目錄的搜尋域尾碼(suffix),如:"dc=bt,dc=cn"。目錄結構有三種形式,參見本文後一節內容。
  • 指定目錄的管理員帳號和密碼(rootdn、rootpw),如:"cn= Manager,dc=bt,dc=com"
  • 定義一些索引對象,以加快查詢(index)

 

後端資料庫配置(DB_CONFIG)

建立DB_CONFIG檔案到/var/lib/ldap/目錄下, 其實/etc/openldap/目錄中存在DB_CONFIG.example,複製到/var/lib/ldap/目錄下就可以,否則在啟動ldap時會出現警告錯誤提示。

 

用戶端配置(ldap.conf)

配置目標LDAP伺服器的一些屬性,以方便所有的用戶端程式共用使用。配置項主要有:

  • BASE:指定LDAP目錄資料庫的根域,如:dc=bt,dc=com
  • URI:指定LDAP伺服器的訪問地址,如:ldap://ldap.bt.com

 

啟動LDAP伺服器

啟動命令:# service ldap start

設定開機啟動(運行層級):ntsysv

測試LDAP伺服器:# ldapsearch –x

 

 

OpenLDAP 目錄管理

 

安裝和配置好後,啟動服務,slapd 自動在“/var/lib/ldap/”目錄下建立了一個BDB資料庫,但此時資料庫是空的,即沒有任務目錄資訊(連根DN“dc=bt,dc=com”都不存在)。

伺服器正常運作後,就可以錄入資訊了。目錄資訊的管理(錄入)方法有以下幾種:

  • 命令列錄入。藉助openldap-clients提供的幾個管理程式(ldapadd),手工錄入。
  • LDIF檔案匯入。這些.ldap檔案可以是從其它目錄庫中匯出的,也可以是預先輸入的檔案。因為ldif格式是文字格式設定,很方便查閱和修改。
  • GUI管理工具。這些工具跟openldap-clients是同一層級的,即把它圖形化了。已經有很多圖形介面的目錄管理工具,常用的有:
    • phpLDAPadmin :網頁用戶端
    • LDAPAdmin :Windows 用戶端
    • Softerra LDAP Administrator:Windows 用戶端
    • Ldap Browser/Editor
    • Apache Directory Studio
    • jXplorer

根目錄的屬性一般是(可以把下面的代碼儲存為ldif檔案,然後匯入):

dn: dc=bt,dc=cn
objectClass: dcObject
objectClass: organization
o: Corporation
dc: bt
description: Bintree Corp.

 

OpenLDAP 統一認證

nss_ldap 提供了一個PAM模組“pam_ldap.so”,用於為各應用系統提供統一的LDAP認證模組。pam_ldap 在Linux 中是一個很基礎的認證模組。pam_ldap 的設定檔為“/etc/ldap.conf”,可以配置pam_ldap.so作為LDAP的用戶端串連LDAP伺服器的各個參數。請參考《pam_ldap 詳細配置》。

關於各應用系統如何使用LDAP進行認證,請參考PAM的相關介紹。各應用系統的PAM設定檔統一存放在“/etc/pam.d”中。

 

LDAP 和 Linux 系統帳號對應關係

自從 Sun 推出了 Sun Yellow Pages (就是現在在 Unix/Linux 常聽到的 Network Information Service,NIS) 之後,Unix/Linux 的帳號管理就有了完整的統一方案,在此,我在這裡介紹如何使用 LDAP 統一帳帳號密碼的管理。

LDAP 裡,只要引入 nis.schema 就可以使用和 Linux 登入相關的 attribute。

/etc/passwd、/etc/shadow 和 /etc/group

大家都知道,/etc/passwd 是存放個人的帳號資料,而 /etc/shadow 是存放著個人的密碼資訊,而 /etc/passwd 格式應該像下面這樣:

steven:x:500:500::/home/steven:/bin/bash

也就是:

id:password:uid:gid:full_name:Home Directory:Login shell

這樣的格式,然而,在 Linux login 時,對於 LDAP 也要引用相關的 atrribute 才可以正確對應登入,下表為 posix /etc/passwd 和 LDAP 的對應:

/etc/passwd objectClass: posixAccount
id uid
password userPassword
uid uidNumber
gid gidNumber
full_name gecos
Home Directory homeDirectory
Login shell loginShell

上表可以很清楚的看到,若是要讓設計 ldif 檔的話,最少需要引用 posixAccount 這個 objectClass,並且設定必要的 attribute。

介紹完了 /etc/passwd 之後,另一個很重要的檔案,也就是記錄整個 Linux 主機的 user password 的檔案就是 /etc/shadow 這個檔,那麼他的格式是:

steven:$1$xGQPf1Cs$Y/kQw5TmUXvWY/1z3QgNZ/:13001:0:99999:7:::

他們的意義依序為:

username:passwd:last:may:must:warn:expire:disable:reserved

好的,那麼和剛剛一樣,我來解釋一下要引用的 objectclass 和 attribute 對應:

/etc/shadow objectClass: shadowAccount
username id
password userPassword
last shadowLastChange
may shadowMin
must shadowMax
warn shadowWarning
expire shadowExpire
disable shadowInactive
reserved shadowFlag

上面也可以得知,在設計 ldif 時,除了要引用剛剛的 posixAccount,還有 shadowAccount 才行。

介紹完了兩個重要的 passwd 和 shadow 檔之後,再來就是群組檔 (/etc/group) 的問題啦!一樣的,也有對應的 attribute,但我還是先列出格式出來:

steven:x:500:

也就是:

group name:password:group id:other account

下面是 objectclass 和 attribute 的對應:

/etc/group objectClass: posixGroup
group name cn
password userPassword
group id gidNumber
other account memberUid

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.