Sudo LDAP条目Schema解析

1
2
3
4
5
6
dn: cn=defaults,ou=SUDOers,dc=xueshandai,dc=com
objectClass: top
objectClass: sudoRole
cn: defaults
description: Default sudoOption's go here
sudoOption: env_keep+=SSH_AUTH_SOCKSUDO

一个sudoRole就是一个LDAP中sudo用户。默认的sudo先查找cn=defaults的条目。它有以下属性:

  • sudoUser用户名或者用户ID,如果是Linux平台的,用'%‘或者’#‘前缀

  • sudoHost主机名,IP地址,主机网络地址。或者网络组(要加前缀’+')。如果使用ALL,表示所有的主机

  • sudoCommand一个完全合格的UNIX命令名与可选的命令行参数。可以包括通配符。如果命令前面带有'!'。表示该命令不允许执行。

  • sudoOption: identical in function to the global options described above,but specific to the sudoRole in whihc it resids.

  • sudoRunAsUser: 切换至用户名或UID(前缀“#”),命令可以运行或UNIX组(以“%”)或用户网络组(以“+”)包含一个列表的用户运行命令。特殊值ALL匹配任何用户。

  • sudoRunAsGroup: 一个UNIX组或GID(前缀“#”),命令可以运行。特殊值ALL将匹配任何组。

  • sudoNotBefor|sudoNotAfter:这两个属性,用以控制可以sudo的时间的规则。要注意的是它的时间是UTC时间,而不是基于本地的时间。

  • sudoOrder: 它是一个整型或者浮点型的数值。用来匹配排序。如果一个规则被多个匹配,那么值最高的最终为准。默认该值为0

一次SUDO请求,只会查询二至三次LDAP服务器。第一次查询是解析全局选项,第二次查询是与用户名/用户组的信息匹配。如果用户或者用户组没有匹配到,那就执行第三次查询。查询LDAP中所有的的用户或者网络组看是否能匹配。

如果时间有定义,LDAP查询多包含时间的条件。如果NETGROUP_BASE有定义(ldap.conf下定义)。查询指定网络组的用户。