1、文法文法
access to what:
by who access control
其中,access to訓示啟用通路控制,上句大緻可以了解為:
access to <對什麼目标進行控制>[by <作用于哪些通路者> <授予什麼樣的通路權限><采取什麼樣的比對控制動作>]+
2、控制目标 what
這一域主要是實作對ACL應用對象的指定,對象可以是記錄和屬性。選擇ACL目标記錄的方法一般有兩種:DN和filter,文法為:what ::= * | [dn[.basic-style]=regex | dn.scope-style=DN] [filter=ldapfilter] [attrs=<attrlist>]
2.1 指定所有的記錄如下:
access to *
2.2 通過DN指定文法如下:
1)、access to dn.(regex|exact)=regex
第一種方法是使用正規表達式(dn.regex)或精确比對(dn.style)的方式來比對符合條件的記錄(這個好像不像想象的那麼簡單,實作起來頗為費腦筋),例如:
access to dn="^.*,uid=([^,]+),ou=users,(.*)$"
2)、access to dn.(base|one|subtree|children)=DN("ou=People,dc=koudai,dc=com")
第二種方法通過“區域”選擇的方法進行目标記錄的選取,對以指定的DN開始的目錄樹區域進行目标記錄比對。比對區域的方式共有四種:
base 隻比對DN本身一條記錄
one 比對以給定DN為父目錄的所有記錄
subtree 比對以給定DN為根目錄的所有子樹内的記錄
children 比對給定DN下的所有記錄,但應該不包括以DN直接命名的那條記錄(參見例子的解釋)
2.3 通過filter指定過濾規則進行記錄過慮,文法如下:
access to filter=ldap filter
其中filter指定的為search的過濾規則,這類同于linux系統中grep的比對方式。如:
access to filter=(objectClass=sambaSamAccount)
也可以結合使用DN和filter進行記錄的比對,例如:
access to dn.subtree=”ou=users,dc=mydomain,dc=org” filter=(objectClass=posixAccount)
2.4 通過attrs選取比對記錄文法:
access to attrs=uid,uidNumber,gidNumber
也可以結合使用DN和attrs進行記錄的比對,例如:
access to dn.subtree="ou=users,dc=mydomain,dc=org" attrs=uid
3、被用來授權的通路者的指定who
指定被授權的使用者範圍的方法大緻有以下幾種:
* 所有的通路者,包括匿名的使用者
anonymous 非認證的匿名使用者
users 認證的使用者
self 目标記錄的使用者自身
dn[.<basic-style>]=<regex> 在指定目錄内比對正規表達式的使用者
dn.<scope-style>=<DN> 指定DN内的使用者
4、被授予的權限access
當選取好ACL作用的目标記錄并選取好使用者範圍後,就該給這些使用者授予他們應該得到的權限了。大緻的權限(由低到高)有以下幾類:
none 無權限,即拒絕通路
auth 通路bind(認證)設定的權限;前提是需要使用者送出一個DN形式的使用者名并能通過認證
compare 比較屬性的權限;(例如:對照檢視某使用者的telephoneNumber值是不是158 8888 8888),但并不具有搜尋的權限
search 利用過慮條件進行搜尋的權限,但這并不一定具有可讀取搜尋結果的權限
read 讀取搜尋結果的權限
write 更改記錄屬性值的權限
5、采取什麼樣的比對控制動作control
在進行記錄的比對時,如果有多條規則存在,那麼在第一次比對産生後是否還進行後續的比對或采取其它的動作将取決于此項的設定;控制方式共有以下三種:
stop 這個是預設值,這表示在一次比對産生後将不再進行下一個比對,所有後續的比對将會停止。
continue 無論比對是否已經發生,繼續進行直到所有的規則全部進行完比對檢查
break 一個比對發生後,跳出目前的子句進行後一個子句的檢查
本文轉自西鼠 51CTO部落格,原文連結:http://blog.51cto.com/10630401/1983868,如需轉載請自行聯系原作者