通过在 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 选项时,将自动包含 OID 为“获得有效的权限”控制的 -J 选项,无需另行指定 。如果为有效权限控制指定 NULL 值,则会检索当前用户的权限。此外,还会检索当前 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 甚至无法查看目录树的 Special Users 和 Directory Administrators 分支。在以下示例中,目录管理员可以看出 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 |