使用 ldapsearch 指令與 -J "1.3.6.1.4.1.42.2.27.9.5.2" 選項,指定「取得有效權限」控制。依預設,控制會在搜尋結果中傳回項目與屬性的連結 DN 項目有效權限。
請使用下列選項變更預設運作方式:
-c "dn: bind DN " — 搜尋結果會顯示以指定 DN 連結之使用者的有效權限。此選項可讓管理員檢查其他使用者的有效權限。選項 -c "dn:" 可顯示匿名認證的有效權限。
-X "attributeName ... " — 搜尋結果會同時包含已命名屬性的有效權限。使用此選項可指定未出現在搜尋結果中的屬性。例如,您可以使用此選項,指定使用者是否有權增加目前不在項目中的屬性。
使用 -c 和/或 -X 選項時,-J 選項與「取得有效權限」控制的 OID 即已包含在內,不需另行指定。若您指定了空值的「有效權限」控制,則會擷取目前使用者的權限。此外,也會擷取目前的 ldapsearch 作業所傳回之屬性與項目的權限。
接著,您必須選取所要檢視的資訊類型。請選擇簡單權限,或選擇可說明這些權限之授予或拒絕情形的詳細記錄資訊。在搜尋結果中增加 aclRights 或 aclRightsInfo 屬性,可決定傳回的資訊類型。您可以同時請求兩種屬性,以接收所有的有效權限資訊,但實際上簡單權限會在詳細的記錄資訊中重複這些資訊。
aclRights 與 aclRightsInfo 屬性的運作方式與虛擬作業屬性相仿。這些屬性並未儲存在目錄中,且非經明確請求不會傳回。它們會由目錄伺服器在回應「取得有效權限」控制時產生。
因此,這些屬性無法用於任何類型的篩選或搜尋作業中。
有效權限功能會繼承可影響存取控制的其他參數。這些參數包括一天中的時間、認證方法、機器位址與名稱。
下列範例將說明使用者 Carla Fuente 能夠以何種方式檢視她在目錄中的權限。在結果之中,1 表示已授予權限,0 表示已拒絕權限。
$ ldapsearch -J "1.3.6.1.4.1.42.2.27.9.5.2 -h host1.Example.com -p 389 \ -D "uid=cfuente,ou=People,dc=example,dc=com" -w - -b "dc=example,dc=com" \ "(objectclass=*)" aclRights Enter bind password: dn: dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: ou=Groups, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: ou=People, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: cn=Accounting Managers,ou=groups,dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: cn=HR Managers,ou=groups,dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: uid=bjensen,ou=People, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: uid=cfuente, ou=People, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:1,proxy:0 |
此結果為 Carla Fuente 顯示了她在目錄中至少具有讀取權限的項目,並顯示她可修改本身的項目。「有效權限」控制不會略過一般存取權限,因此使用者不會看見他不具讀取權限的項目。在下列範例中,「目錄管理員」將可看見 Carla Fuente 不具讀取權限的項目:
$ ldapsearch -h host1.Example.com -p 389 -D cn=admin,cn=Administrators,cn=config -w - \ -c "dn: uid=cfuente,ou=People,dc=example,dc=com" -b "dc=example,dc=com" \ "(objectclass=*)" aclRights Enter bind password: dn: dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: ou=Groups, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: cn=Directory Administrators, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:0,write:0,proxy:0 dn: ou=Special Users,dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:0,write:0,proxy:0 dn: ou=People, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: cn=Accounting Managers,ou=groups,dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: cn=HR Managers,ou=groups,dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: uid=bjensen,ou=People, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: uid=cfuente, ou=People, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:1,proxy:0 |
在上方的輸出中,「目錄管理員」可看出 Carla Fuente 甚至無法檢視目錄樹狀結構中的「特殊使用者」或「目錄伺服器管理員」分支。在下列範例中,「目錄管理員」將可看出 Carla Fuente 無法修改其本身項目中的 mail 與 manager 屬性:
$ ldapsearch -h host1.Example.com -p 389 -D cn=admin,cn=Administrators,cn=config -w - \ -c "dn: uid=cfuente,ou=People,dc=example,dc=com" -b "dc=example,dc=com" \ "(uid=cfuente)" aclRights "*" Enter bind password: version: 1 dn: uid=cfuente, ou=People, dc=example,dc=com aclRights;attributeLevel;mail: search:1,read:1,compare:1, write:0,selfwrite_add:0,selfwrite_delete:0,proxy:0 mail: cfuente@Example.com aclRights;attributeLevel;uid: search:1,read:1,compare:1, write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 uid: cfuente aclRights;attributeLevel;givenName: search:1,read:1,compare:1, write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 givenName: Carla aclRights;attributeLevel;sn: search:1,read:1,compare:1, write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 sn: Fuente aclRights;attributeLevel;cn: search:1,read:1,compare:1, write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 cn: Carla Fuente aclRights;attributeLevel;userPassword: search:0,read:0, compare:0,write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 userPassword: {SSHA}wnbWHIq2HPiY/5ECwe6MWBGx2KMiZ8JmjF80Ow== aclRights;attributeLevel;manager: search:1,read:1,compare:1, write:0,selfwrite_add:0,selfwrite_delete:0,proxy:0 manager: uid=bjensen,ou=People,dc=example,dc=com aclRights;attributeLevel;telephoneNumber: search:1,read:1,compare:1, write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 telephoneNumber: (234) 555-7898 aclRights;attributeLevel;objectClass: search:1,read:1,compare:1, write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetorgperson aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 |