LDAP權限配置

簡介:  您是否曾經設法與某個使用不同數據格式的人共享您的聯繫人列表,或者設法將您的地址簿遷移到另一個應用程序?如果是這樣的話,您知道這是件令人頭痛的事。導入和導出方案(如果它們確實存在)通常很笨拙而且使用起來不能令人滿意,即使只使用一次也是如此,更不用說經常使用了。歡迎使用輕量級目錄訪問協議(Lightweight Directory Access Protocol)。本教程向您演示瞭如何創建一個基於 LDAP 的後端來存儲多個應用程序可以方便共享的聯繫人信息。同時,我們提供了 LDAP 基礎知識的概述,並向您介紹了一個預先構建的聯繫人管理工具,該工具將幫助您着手使用這一開放技術。

在大多數基於軟件包的系統上(例如,在基於 RPM 的分發版(distribution)上,如 Red Hat、Mandrake 和 SuSE)安裝和配置OpenLDAP 是一個相對比較簡單的過程。第一步先確定將哪些 OpenLDAP 組件(如果有的話)作爲初始 Linux 設置的一部分進行安裝。

從控制檯窗口或命令行,輸入:

[root@thor root]# rpm -qa | grep openldap
openldap-devel-2.0.23-4
openldap-2.0.23-4
openldap-servers-2.0.23-4
openldap-clients-2.0.23-4
[root@thor root]#

您應該看到類似上面的輸出。注:Red Hat 分發版安裝 OpenLDAP 客戶機軟件,但安裝 openldap-servers 軟件包,即使您選擇了服務器配置也是如此。要安裝 RPM 軟件包,在分發版媒質上找到所需文件的位置並輸入:

                    rpm -ivh packagename
                    
                

其它分發版在程序的封裝和命名方式方面不同;有關詳細信息,請參考文檔。


配置 OpenLDAP 服務器

安裝了必需的軟件之後,下一步是要配置服務器。首先,備份原始配置文件以供今後參考( cp /etc/openldap/slapd.conf /etc/openldap/slapd.conf.orig)。現在,在您所喜愛的文本編輯器中打開 /etc/openldap/slapd.conf 文件,花幾分鐘時間通讀註釋。除了定義目錄數據庫類型、suffixrootdn 和存儲目錄數據庫的位置的幾個項外,slapd.conf 中的大多數缺省設置都是適當的。

database        ldbm
suffix          "dc=syroidmanor,dc=com"
rootdn          "cn=root,dc=syroidmanor.com,dc=com"
rootpw          {CRYPT}05T/JKDWO0SuI
directory /var/lib/ldap
index   objectClass,uid,uidNumber,gidNumber,memberUid   eq
index   cn,mail,surname,givenname                       eq,subinitial


保護 rootdn

rootdn 項控制誰可以對目錄數據庫進行寫操作,以及他們要這樣做所必須提供的密碼。請確保閱讀“訪問控制”一章結束部分的註釋:

# if no access controls are present, the default is:
#       Allow read by all
#
# rootdn can always write!

rootdn can always write!”(rootdn 總是可以寫!)的意思正如它所表示的那樣。您在rootdn 項的 cn=部分填充的任何項都是對數據庫有完全讀/寫訪問權的用戶。另外,缺省配置文件使用“secret”作爲密碼,它以明文形式發送。如果只能從裝了防火牆與外界隔離的內部網訪問您的 LDAP 服務器,並且確信將訪問 LDAP 服務器的用戶不知道有關信息包嗅探的任何事情,您大概可以以明文形式安全地發送rootdn 密碼(只要確保將密碼“secret”稍加修改,使之不易被猜出)。但是,如果您打算存儲在目錄中的數據只有一點點機密性,則對密碼進行散列處理。可以用slappasswd 實用程序完成它,如下所示:

[root@thor root]# slappasswd -h {crypt}
                

該程序將要求您輸入密碼,然後 slappasswd 將給出與所提供的項相對應的 crypt 字符串。將該字符串剪切並粘貼到slapd.conf,如上一頁所示。其它散列選項包含 SSHA(缺省值)、SMD5、MD5 和 SHA。輸入 man slappasswd,以獲取更多信息。


測試服務器

現在是測試服務器的好時機了。這裏的配置相對比較簡單也容易對可能出現的問題進行故障診斷。在 Red Hat Linux 系統上,命令是:

[root@thor root]# service ldap start
                

接下來,測試您訪問目錄的能力:

[root@thor root]# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
                

如果正確配置了服務器,您應該看到類似於下面的輸出(當然,有不同的 dc):

version: 2

#
# filter: (objectclass=*)
# requesting: namingContexts 
#

#
dn:
namingContexts: dc=syroidmanor,dc=com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

如果您得到了錯誤消息,或輸出與上面有很大的不同,則返回並檢查配置。要使 LDAP 服務在重新引導時自動啓動,輸入以下命令:

[root@thor root]# chkconfig ldap on
                

再提醒一下,上面的命令特定於 Red Hat 分發版。


配置 ACL

配置 LDAP 服務器的最後一步是設置一些基本訪問控制。這樣做可以確保用戶只能訪問他們需要訪問的項。

在 OpenLDAP 下設置 ACL(訪問控制表,Access Control List)的方法有兩種:可以將 include行放在/etc/openldap/slapd.conf 的頂部,指向一個單獨的文件(例如, include /etc/openldap/slapd.access.conf);或者可以將 ACL 直接添加到 slapd.conf。這完全由您選擇 ― Mandrake 通常使用 include 行;Red Hat 將 ACL 添加到配置文件。

您將在下一頁看到一組示例 ACL 以及它們做些什麼的說明。


ACL 示例

# Define ACLs -- access control definitions

access to dn=".*,dc=syroidmanor,dc=com" attr=userPassword
        by dn="cn=root,dc=syroidmanor,dc=com" write
        by self write
        by * auth

access to dn=".*,dc=syroidmanor,dc=com" attr=mail
        by dn="cn=root,dc=syroidmanor,dc=com" write
        by self write
        by * read

access to dn=".*,ou=people,dc=syroidmanor,dc=com"
        by * read

access to dn=".*,dc=syroidmanor,dc=com"
        by self write
        by * read

上面的配置僅允許 userPassword 屬性的所有者修改項,但僅當所有者提供他或她的優先密碼時才允許進行修改。在所有其它情況下,只能出於認證目的來訪問該項,而不能查看它。第二個access to... 項允許用戶修改自己的電子郵件地址(attr=mail)。第三個項指定除了 rootdn 外,對於所有人,ou=people,dc=syroidmanor,dc=com 中的任何 DN 都是隻讀的。這可防止用戶更改其用戶名、uid、gid 和主目錄等。最後,最後一項是包容前面訪問控制中未涉及的任何東西的安全的“大雜燴”。例如,它允許用戶更改其自己地址簿中的項。

在服務器可以使用新的 ACL 之前,需要重新啓動: service ldap restart

完成基本配置之後,應該將一些有用的項填充到數據庫。


 

 

更簡單的一句話:

access to *
        by * read

除了root 用戶可以讀寫外。其他用戶都只讀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章