在您安裝好的系統上,/etc/openldap/slapd.conf
中有一個完整的組態檔,可供您的 LDAP 伺服器使用。此處將簡要介紹單一項目,並對必要的調整進行說明。開頭為井字符號 (#) 的項目為非作用中的項目。必須移除這個備註字元,才能啟用這些項目。
範例 36.2. slapd.conf︰包括綱要指示詞
include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/rfc2307bis.schema include /etc/openldap/schema/yast.schema
如範例 36.2 「slapd.conf︰包括綱要指示詞」所顯示的 slapd.conf
中,第一個指示詞會指定供 LDAP 目錄做為組織依據的綱要。core.schema
項目為必需。其他必需的綱要都附加於此指示詞之後。請在包含的 OpenLDAP 文件中尋找更多資訊。
範例 36.3. slapd.conf︰pidfile 與 argsfile
pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args
這兩個檔案包含 PID (處理程序 ID) 和一些隨 slapd 程序啟動的引數。此處不需要修改。
範例 36.4. slapd.conf︰存取控制
# Sample Access Control # Allow read access of root DSE # Allow self write access # Allow authenticated users read access # Allow anonymous users to authenticate # access to dn="" by * read access to * by self write by users read by anonymous auth # # if no access controls are present, the default is: # Allow read by all # # rootdn can always write!
範例 36.4 「slapd.conf︰存取控制」摘自 slapd.conf
,此檔案在伺服器上負責管制 LDAP 目錄的存取權。只要資料庫特定的區段中沒有宣告任何自定的規刖,在 slapd.conf
全域區段中的設定均為有效。自定規則可覆寫全域宣告。正如此處所示,所有使用者都有讀取目錄的權利,但只有管理員 (rootdn
) 才可在目錄中寫入資料。LDAP 中的存取控制管制是一個非常複雜的程序。下列秘訣可提供協助:
每一項存取規則都具有下列結構:
access to <what> by <who> <access>
what
是一個佔位符,代表有存取權的物件或屬性。個別的目錄分支可由個別規則來明確地保護。也可使用一般表示式來處理目錄樹的區域。slapd 會按照組態檔中所列的順序來評估所有規則。較一般性的規則列在較特定的規則之後 — slapd 視為有效的第一條規則會受到評估,其後的所有項目則被忽略。
who
決定誰應獲得存取權,以進入由 what
所決定的區域。可使用一般表示式。第一次比對完成後 slapd 會再次中止 who
的評估,因此較特定的規必須列在較一般性的規則之前。在 表格 36.2 「使用者群組及其存取權」 中所顯示的項目是有可能的。
表格 36.2. 使用者群組及其存取權
標籤 | 範圍 |
---|---|
| 沒有例外的所有使用者 |
| 未驗證的 (「匿名」) 使用者 |
| 驗證的使用者 |
| 以目標物件連線的使用者 |
| 符合一般表示式的所有使用者 |
access
會指定存取類型。使用 表格 36.3 「存取類型」 中所列的選項。
slapd 會比較用戶端所要求的存取權與在 slapd.conf
中授予的存取權。如果用戶端所要求的權利比規則中的等級更低或同等,則可獲得存取權。如果用戶端要求的權利比規則中的宣告更高,則會被拒絕。
範例 36.5 「slapd.conf︰存取控制範例」顯示使用一般表示式即可任意開發簡單存取控制權的範例。
範例 36.5. slapd.conf︰存取控制範例
access to dn.regex="ou=([^,]+),dc=example,dc=com" by dn.regex="cn=Administrator,ou=$1,dc=example,dc=com" write by user read by * none
此規則宣告只有各個管理員有寫入個別 ou
項目的權利。其他所有通過驗證的使用者都有讀取權,其餘的人則沒有存取權。
![]() | 建立存取規則 |
---|---|
如果沒有 |
請至已安裝的openldap2
套件的線上文件尋找詳細資訊及 LDAP 存取權的組態範例。
除了使用 (slapd.conf
) 中央組態檔來管理存取權之外,也可使用存取控制資訊 (ACI)。ACI 允許在 LDAP 樹中儲存個別物件的存取資訊。此種類型的存取控制尚未普及,開發者目前仍將它視為實驗性質。請參閱http://www.openldap.org/faq/data/cache/758.html以取得更多資訊。
範例 36.6. slapd.conf︰資料庫特定指示詞
database bdbsuffix "dc=example,dc=com"
checkpoint 1024 5
cachesize 10000
rootdn "cn=Administrator,dc=example,dc=com"
# Cleartext passwords, especially for the rootdn, should # be avoided. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw secret
# The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd/tools. Mode 700 recommended. directory /var/lib/ldap
# Indices to maintain index objectClass eq
overlay ppolicy
ppolicy_default "cn=Default Password Policy,dc=example,dc=com" ppolicy_hash_cleartext ppolicy_use_lockout
此區段的第一行設定的是資料庫類型 (在此案例中為 Berkeley 資料庫),請參閱範例 36.6 「slapd.conf︰資料庫特定指示詞」。 | |
| |
| |
| |
| |
| |
| |
最後一個指示詞 | |
|
此處使用的是資料庫自定的 Access
規則,而非全域的 Access
規則。
待 LDAP 伺服器已完全設定且所有需要的項目均已依照第 36.4 節「LDAP 目錄中的資料處理」中描述的樣式建立之後,輸入 rcldap start
以 root
的身份來啟動 LDAP 伺服器。輸入指令 rcldap stop
可手動停止伺服器。使用 rcldap status
可請求執行中之 LDAP 的狀態。
第 20.2.3 節「使用 YaST 設定系統服務 (Runlevel)」中所描述的 YaST runlevel 編輯器,可讓伺服器在系統啟動和暫停時自動啟動及停止。也可以透過 第 20.2.2 節「Init 程序檔」 中所述的指令提示,利用 insserv 指令來建立對應的連結至啟動和停止程序檔。