已安裝系統的 /etc/openldap/slapd.conf
中包含 LDAP 服務器的完整配置文件。在此簡述了其中的各個項並說明了必要的調整。以符號 (#) 為前綴的項處於非活動狀態。必須取消這個注釋字符才能激活這些項。
1.用於加載schema模式的 Include 指令
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
這是 slapd.conf
中的第一個指令,用於指定組織 LDAP 目錄所依據的模式。core.schema
是必需項。所需的其余模式會追加到此指令中。在包含的 OpenLDAP 文檔中查找信息。
這兩個文件包含啟動 slapd 進程所用的 PID(進程 ID)和一些參數。
3.訪問控制
# 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!
此選項涉及如何管理服務器上的 LDAP 目錄的訪問權限。只要在數據庫特定部分沒有聲明任何自定義訪問規則,slapd.conf
的全局部分中的設置將始終有效。這些自定義聲明會重寫全局聲明。如本例所示,所有用戶都可以讀取目錄,但只有管理員 (rootdn
) 才能寫入此目錄。LDAP 中的訪問控制管理是一個非常復雜的過程。以下提示會有所幫助:
每條訪問規則都具有如下結構:
access to <what> by <who> <access>
what
是一個占位符,表示授權訪問的對象或屬性。可以使用單獨的規則來明確保護各個目錄分支。還可以使用正則表達式通過一條規則處理目錄樹的各個區域。slapd 按照各條規則列在配置文件中的先后順序依次評估它們。較通用的規則應列在較特定的規則之后 - 在評估 slapd 認為有效的第一條規則之后,隨后的所有項都將被忽略。who
確定應該授權誰來訪問what
確定的區域。可以使用正則表達式。slapd 同樣會在評估第一條有效規則之后中止對隨后的who
的評估,所以應將較具體的規則列在較抽象的規則之前。表 用戶組及其訪問授權
標記
范圍
*
所有用戶,無一例外
anonymous
未身份驗證“匿名”用戶
users
已身份驗證用戶
self
與目標對象連接的用戶
dn.regex=<regex>
與正則表達式匹配的所有用戶
access
指定訪問類型。請使用 上表所列的選項。slapd 會將客戶機請求的訪問權限與
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
項的管理員才有權寫入他/她所管理的項。其他所有通過身份驗證的用戶只有讀權限,其余人沒有任何權限。
access to
規則或匹配的
by
指令,則拒絕訪問。只有經過顯式聲明才能授予訪問權限。如果根本沒有聲明任何規則,默認規則是管理員具有寫權限,其他所有用戶都具有讀權限。
除了可以使用中央服務器配置文件 (slapd.conf
) 管理訪問權限之外,還可以使用訪問控制信息 (ACI)。ACI 允許儲存 LDAP 樹中各個對象的訪問信息。
特定於數據庫的指令
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
規則