通过 ldap 对 sudoers 进行故障排除

通过 ldap 对 sudoers 进行故障排除

好消息是,我得到了通过 ldap 使用 sudoers在 Red Hat Directory Server 上工作。软件包是 sudo-1.7.2p1。我在名为 wheel 的 LDAP 组中有一些 LDAP/Kerberos 用户,我在 LDAP 中有此条目:

# %wheel, SUDOers, example.com
dn: cn=%wheel,ou=SUDOers,dc=example,dc=com
cn: %wheel
description: Members of group wheel have access to all privileges.
objectClass: sudoRole
objectClass: top
sudoCommand: ALL
sudoHost: ALL
sudoUser: %wheel

因此,wheel 组的成员通过 sudo 拥有管理权限。这已经过测试,运行良好。现在,我设置了另一个 sudo 权限,以允许名为 Administrators 的组的成员以这两个命令的非 root 所有者身份执行这两个命令。

# %Administrators, SUDOers, example.com
dn: cn=%Administrators,ou=SUDOers,dc=example,dc=com
sudoRunAsGroup: appGroup
sudoRunAsUser: appOwner
cn: %Administrators
description: Allow members of the group Administrators to run various commands
 .
objectClass: sudoRole
objectClass: top
sudoCommand: appStop
sudoCommand: appStart
sudoCommand: /path/to/appStop
sudoCommand: /path/to/appStart
sudoUser: %Administrators

不幸的是,管理员成员仍然被拒绝运行 appStart 或 appStop:

-bash-3.2$ sudo /path/to/appStop
[sudo] password for Aaron:
Sorry, user Aaron is not allowed to execute '/path/to/appStop' as root on host.example.com.

-bash-3.2$ sudo -u appOwner /path/to/appStop
[sudo] password for Aaron:
Sorry, user Aaron is not allowed to execute '/path/to/appStop' as appOwner on host.example.com.

/var/log/secure向我展示了这两次尝试的两组消息:

Oct 31 15:02:36 host sudo: pam_unix(sudo:auth): authentication failure; logname=Aaron uid=0 euid=0 tty=/dev/pts/3 ruser= rhost=  user=Aaron
Oct 31 15:02:37 host sudo: pam_krb5[1508]: TGT verified using key for 'host/[email protected]'
Oct 31 15:02:37 host sudo: pam_krb5[1508]: authentication succeeds for 'Aaron' ([email protected])
Oct 31 15:02:37 host sudo:    Aaron : command not allowed ; TTY=pts/3 ; PWD=/auto/home/Aaron ; USER=root ; COMMAND=/path/to/appStop

Oct 31 15:02:52 host sudo: pam_unix(sudo:auth): authentication failure; logname=Aaron uid=0 euid=0 tty=/dev/pts/3 ruser= rhost=  user=Aaron
Oct 31 15:02:52 host sudo: pam_krb5[1547]: TGT verified using key for 'host/[email protected]'
Oct 31 15:02:52 host sudo: pam_krb5[1547]: authentication succeeds for 'Aaron' ([email protected])
Oct 31 15:02:52 host sudo:    Aaron : command not allowed ; TTY=pts/3 ; PWD=/auto/home/Aaron ; USER=appOwner; COMMAND=/path/to/appStop

问题:

  • sudo 是否有某种详细或调试模式,我可以实际观察它捕获 sudoers 权限列表并确定 Aaron 是否应该有权运行此命令?(这个问题可能与 sudoers 数据库的保存位置无关。)
  • sudo 是否可以与某些可能具有我可以调出的日志级别的后台机制一起使用?

现在,我无法修复我无法识别的问题。这是 LDAP 搜索失败吗?这是组成员匹配失败吗?确定命令失败的原因将有助于我找到修复方法...

下一步:在 /etc/sudoers 中重新创建权限,并查看它是否在本地起作用......

干杯!

答案1

您可以通过SUDOERS_DEBUG debug_level在 sudo LDAP 配置中设置来调试 sudo/LDAP(可能是/etc/sudo-ldap.conf)。的值debug_level可以是 1 或 2。请参阅http://www.sudo.ws/sudo/sudoers.ldap.man.html了解详情。

答案2

首先,答案不是答案:我忘记在 LDAP sudoers 分支的条目sudoHost中输入任何属性%Administrators。我一时之间意识到了这一点。

其次,几乎是答案的答案:如果我在 sudo 手册页上更好地阅读手册,我就会看到sudo -l,它会告诉我 sudo 是否看到了权限。一旦我知道权限列表被正确返回,我就可以从可能性列表中将其勾掉。

说了这么多,我还是想知道 sudo 权限检查是否有任何调试入口点。所以,我解决了我的问题,但没有回答我的问题...

相关内容