好消息是我在 Red Hat Directory Server 上通过 ldap 获得了 sudoers 。该软件包是 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 中重新创建权限,并查看它是否在本地工作...
干杯!
首先,不是答案的答案:我忽略了在 LDAP sudoers 分支的条目中放置任何
sudoHost
属性。%Administrators
我的直觉一闪而过。其次,几乎是答案的答案:如果我在 sudo 手册页上做了更好的 RTFM 工作,我会看到
sudo -l
,它会告诉我 sudo 是否看到了特权。一旦我知道特权列表被正确返回,我就可以从可能性列表中检查它。说了这么多,我还是想知道 sudo 权限检查是否有任何调试入口点。所以,我已经解决了我的问题,但没有回答我的问题......
SUDOERS_DEBUG debug_level
您可以通过在 sudo LDAP 配置中设置(可能/etc/sudo-ldap.conf
)来调试 sudo/LDAP 。的值debug_level
可以是 1 或 2。有关详细信息,请参见http://www.sudo.ws/sudo/sudoers.ldap.man.html。