2.4. 使用 Get Effective Rights search 检查条目的访问权限
作为管理员,您可以查找和控制用户对特定条目内属性具有的访问权限。
获取有效权限 (GER)是一种扩展目录搜索的方式,以显示用户对指定条目的访问权限。您可以指定以下权利:
- 读
- 写入和自我写入
- 搜索
- 添加
- 删除
在以下情况下检查条目的有效权利很有用:
-
您可以使用 GER 命令更好地组织目录的访问控制指令。与另一个组相比,通常需要限制一组用户可以查看或编辑的内容。例如,
QA Managers
组的成员可能有权限搜索并读manager
和salary
等属性,当只有HR Group
的成员有权限修改或删除它们。检查用户或组的有效权限是验证管理员是否设置适当的访问控制的方法。 -
您可以使用 GER 命令查看可以在您的个人条目上查看或修改哪些属性。例如,用户应具有对
homePostalAddress
和cn
等属性的访问权限,但可能只能具有manager
和salary
属性的读取访问权限。
getEffectiveRights
搜索使用以下实体:
-
请求者。当
getEffectiveRights
搜索发出某个操作时,这是经过身份验证的条目。 -
要评估其权利的主题。它在 GER 控制中被定义为授权
DN
。 - 目标。您可以通过搜索基础、搜索过滤器和请求的属性列表来定义它。
2.4.1. 获取有效的权利搜索权限 复制链接链接已复制到粘贴板!
任何 Get Effective Rights (GER)搜索都显示了任何条目可以具有的以下访问权限:
- 属于 条目权限的上限。该访问权限显示了 User A 可以在 User B 条目中执行的操作类型。
- 第二个级别权限 显示了 User A 具有的给定属性的权限。User A 可能对同一条目中不同属性有不同的访问权限。任何用户具有的访问控制都是对该条目的有效权限。
例如:
entryLevelRights: vadn attributeLevelRights: givenName:rscWO, sn:rscW, objectClass:rsc, uid:rsc, cn:rscW
entryLevelRights: vadn
attributeLevelRights: givenName:rscWO, sn:rscW, objectClass:rsc, uid:rsc, cn:rscW
GER 搜索对 entry 和 属性有以下访问权限:
权限 | 描述 |
---|---|
a | 添加一个条目。 |
d | 删除此条目。 |
n | 重命名 DN。 |
v | 查看条目。 |
权限 | 描述 |
---|---|
r | 读取. |
s | 搜索. |
w |
写( |
o |
Obliterate ( |
c | 比较. |
W | 自我写入。 |
O | 自我删除。 |
2.4.2. Get Effective Rights 搜索格式 复制链接链接已复制到粘贴板!
Get effective 权限 (GER)是一个扩展目录搜索。要使用它,您必须使用 ldapsearch
命令将 an -E
选项传递给轻量级目录访问协议(LDAP)控制。例如:
ldapsearch -x -D bind_dn -W -H ldap://server.example.com -b base_DN -E [!]1.3.6.1.4.1.42.2.27.9.5.2=:GER_subject (searchFilter) attributeList
# ldapsearch -x -D bind_dn -W -H ldap://server.example.com -b base_DN -E [!]1.3.6.1.4.1.42.2.27.9.5.2=:GER_subject (searchFilter) attributeList
-b
是您可以搜索 GER 主题的子树或条目的基本 DN。如果搜索基础是一个特定的条目 DN,或者结果只返回一个条目,则结果会显示请求者对该特定条目具有的权利。如果多个条目与过滤器匹配,则搜索会返回每个匹配条目,并在每个条目中返回请求者的权限。
1.3.6.1.4.1.42.2.27.9.5.2
选项是 GER 控制的对象标识符。感叹号(
!
)定义在服务器不支持此控制(!
)时,搜索操作是否返回错误。-
GER_subject 是您检查其权限的用户。您可以将 GER_subject 留空(
dn:
)以获得匿名用户权限的结果。 -
可选的 attributeList 将 GER 结果限制为指定的属性或对象类,如
mail
属性。 -
使用星号(
*
)符号返回所有属性。 -
使用加号(
+
)返回操作属性。
GER 选项为 ldapsearch
结果添加额外的信息,显示特定用户具有哪些权利。该 GER 主题用户可以通过附加选项 -D
对他们自己的条目请求权限。
如果请求者不是目录管理器用户,则请求者只能看到 GER 主题对请求者条目具有的权利。所有其他条目返回有效权利的访问错误。
以下常规用户运行 GER 搜索的情况比较常见:
- 用户 A 检查他拥有其他目录条目的权限。
- 用户 A 检查他对个人条目具有的权利。
- 用户 A 检查用户 B 对 User A 的条目的权限。
2.4.3. Get Effective Rights search 的常见场景 复制链接链接已复制到粘贴板!
以下示例演示了在使用 Get Effective Rights 搜索时和方式的通用场景。
2.4.3.1. Get Effective Rights 搜索的一般示例 复制链接链接已复制到粘贴板!
需要使用 Get Effective Rights (GER)搜索的最常见情况是:
检查个人权利.当用户 A 检查个人条目的权限时。例如,Ted Morris 想要检查其条目的权限:
例 2.36. 检查个人权利(用户 A 到用户 A)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
-b
选项也具有请求者的 DN。检查其他用户的权限。例如,Ted Morris 是一个管理器,需要检查其其中一个子关系 Dave Miller 的条目:
例 2.37. 检查其他用户的权限(用户 A 到用户 B)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,Ted Morris 具有对 Dave Miller 条目的所有属性的读取、搜索、比较、修改和删除权限。
作为目录管理器,检查一个用户对另一个用户具有的权限。例如,目录管理器正在检查 Jane Smith 作为管理器在她从属的 Ted Morris 条目上的权限:
例 2.38. 目录管理器通过另一个用户检查一个用户的权限
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果用户没有权限,则结果会显示无法访问错误:
例 2.39. 条目没有权限
ldapsearch -H ldap://server.example.com -D "uid=dmiller,ou=people,dc=example,dc=com" -W -b "uid=tmorris,ou=people,dc=example,dc=com" -E '!1.3.6.1.4.1.42.2.27.9.5.2=:dn:uid=tmorris,ou=people,dc=example,dc=com' "(objectClass=*)"
# ldapsearch -H ldap://server.example.com -D "uid=dmiller,ou=people,dc=example,dc=com" -W -b "uid=tmorris,ou=people,dc=example,dc=com" -E '!1.3.6.1.4.1.42.2.27.9.5.2=:dn:uid=tmorris,ou=people,dc=example,dc=com' "(objectClass=*)" ldap_search: Insufficient access ldap_search: additional info: get-effective-rights: requester has no g permission on the entry
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查其他用户通过您的条目具有哪些权利。例如,Ted Morris 检查 Dave Miller 的条目是 Ted Morris 的条目:
例 2.40. 检查其他用户通过您的条目具有哪些权利
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,Dave Miller 有权查看条目的 DN,并比较
ou
、givenName
、l
和其他属性。他没有对userPassword
属性的任何权限。
2.4.3.2. Get Effective Rights 示例搜索不存在的属性 复制链接链接已复制到粘贴板!
默认情况下,条目中的属性没有值。使用带有 Get Effective Rights (GER)搜索的星号(*
)搜索返回条目可用的每个属性,包括条目上未设置的属性。
例 2.41. 检查条目的每个属性的权限
在本例中,secretary
属性没有被设置,但您仍然可在 GER 搜索结果中看到它。
2.4.3.3. Get Effective Rights 搜索特定属性或对象类的示例 复制链接链接已复制到粘贴板!
本节中的示例演示了如何搜索特定属性、属性集合以及属于条目对象类的所有属性的权限。
通过列出条目的特定属性,获得 Effective Rights (GER)搜索结果。例如:
例 2.42. 获得对特定属性的 Effective Rights 搜索结果
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GER 以 attribute@objectClass 的格式搜索条目的对象类的特定属性。请求者必须是目录管理器。
例 2.43. 为对象类的特定属性获取 Effective Rights 搜索结果
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用星号(
*
)返回对象类的所有属性,格式为 *@objectClass。搜索结果还包括不存在的属性。
2.4.3.4. Get Effective Rights 搜索不存在的条目的示例 复制链接链接已复制到粘贴板!
本例演示了如何对用户的条目(尚不存在)检查特定用户的权限。在这种情况下,服务器会在子树中生成模板条目,您可以使用 Get Effective Rights (GER)搜索它。要检查不存在的条目,Get Effective Rights (GER)搜索可以使用指定的对象类生成具有此条目的所有潜在属性的模板条目。
当服务器创建模板条目时,它使用对象类定义中的第一个 MUST 属性来创建 RDN 属性。如果 MUST 属性不存在,服务器将使用 MAY 属性。通过以 @objectclass:rdn_attribute 格式传递给对象类来指定 RDN 值。
例如,要检查存在的 POSIX 条目(将 uidNumber
作为其 RDN)的权限:
例 2.44. 检查不存在的条目的权限
ldapsearch -D "cn=Directory Manager" -W -b "ou=people,dc=example,dc=com" -E '!1.3.6.1.4.1.42.2.27.9.5.2=:dn:uid=scarter,ou=people,dc=example,dc=com' "(objectclass=*)" @posixaccount:uidnumber
# ldapsearch -D "cn=Directory Manager" -W -b "ou=people,dc=example,dc=com" -E '!1.3.6.1.4.1.42.2.27.9.5.2=:dn:uid=scarter,ou=people,dc=example,dc=com' "(objectclass=*)" @posixaccount:uidnumber
dn: uidNumber=template_posixaccount_objectclass,ou=people,dc=example,dc=com
entryLevelRights: v
attributeLevelRights: description:rsc, gecos:rsc, loginShell:rsc, userPassword:rsc, objectClass:rsc, homeDirectory:rsc, gidNumber:rsc, uidNumber:rsc, uid:rsc, cn:rsc
2.4.3.5. Get Effective Rights 搜索操作属性的示例 复制链接链接已复制到粘贴板!
ldapsearch
命令不会返回操作属性。使用加号(+
)搜索它们。使用 +
仅返回您可以在条目上使用的操作属性。
例 2.45. 搜索操作属性
ldapsearch -D "cn=Directory Manager" -W -x -b "uid=scarter,ou=people,dc=example,dc=com" -E '!1.3.6.1.4.1.42.2.27.9.5.2=:dn:uid=scarter,ou=people,dc=example,dc=com' "(objectclass=*)" "+"
# ldapsearch -D "cn=Directory Manager" -W -x -b "uid=scarter,ou=people,dc=example,dc=com" -E '!1.3.6.1.4.1.42.2.27.9.5.2=:dn:uid=scarter,ou=people,dc=example,dc=com' "(objectclass=*)" "+"
dn: uid=scarter,ou=People,dc=example,dc=com
entryLevelRights: vadn
attributeLevelRights: nsICQStatusText:rscwo, passwordGraceUserTime:rscwo, pwdGraceUserTime:rscwo, nsYIMStatusText:rscwo, modifyTimestamp:rscwo, passwordExpWarned:rscwo, pwdExpirationWarned:rscwo, entrydn:rscwo, aci:rscwo, nsSizeLimit:rscwo, nsAccountLock:rscwo, passwordExpirationTime:rscwo, entryid:rscwo, nsSchemaCSN:rscwo, nsRole:rscwo, retryCountResetTime:rscwo, ldapSchemas:rscwo, nsAIMStatusText:rscwo, copiedFrom:rscwo, nsICQStatusGraphic:rscwo, nsUniqueId:rscwo, creatorsName:rscwo, passwordRetryCount:rscwo, dncomp:rscwo, nsTimeLimit:rscwo, passwordHistory:rscwo, pwdHistory:rscwo, nscpEntryDN:rscwo, subschemaSubentry:rscwo, nsYIMStatusGraphic:rscwo, hasSubordinates:rscwo, pwdpolicysubentry:rscwo, nsAIMStatusGraphic:rscwo, nsRoleDN:rscwo, createTimestamp:rscwo, accountUnlockTime:rscwo, copyingFrom:rscwo, nsLookThroughLimit:rscwo, nsds5ReplConflict:rscwo, modifiersName:rscwo, parentid:rscwo, passwordAllowChangeTime:rscwo, nsBackendSuffix:rscwo, nsIdleTimeout:rscwo, ldapSyntaxes:rscwo, numSubordinates:rscwo
2.4.3.6. Get Effective Rights 结果和访问控制规则的示例 复制链接链接已复制到粘贴板!
有效的访问控制列表(ACL)定义用户拥有的 Get Access Rights (GER)。
例 2.46. 访问控制列表
在本例中,ACL 不包含 dc=example,dc=com
子树。这会导致 GER 搜索结果显示用户在 dc=example,dc=com
条目中没有任何权利:
例 2.47. 带有未设置的 ACL 的 GER 搜索结果
要查看结果,您必须是一个目录管理器,否则结果为空白。
2.4.4. 获取受影响的返回码 复制链接链接已复制到粘贴板!
如果出现错误,则 Get Effective Rights (GER)搜索结果会返回错误代码。下表描述了错误代码:
代码 | 描述 |
---|---|
0 | 成功完成 |
1 | 操作错误 |
12 |
关键扩展不可用。如果 critical 表达式设为 |
16 | 没有这样的属性 |
17 | 未定义属性类型 |
21 | 无效的属性语法 |
50 | 权限不足 |
52 | 不可用 |
53 | 阻止执行 |
80 | 其他 |