122.4. 配置 Web 控制台以允许通过智能卡验证的用户运行 sudo,而无需再次进行身份验证
在登录到 RHEL web 控制台中的用户帐户后,可能需要以 Identity Management (IdM)系统管理员的身份使用超级用户权限运行命令。您可以使用 受限委派 功能在系统中运行 sudo
,而无需再次进行身份验证。
按照以下流程,将 Web 控制台配置为使用受限的委托。在以下示例中,web 控制台会话在 myhost.idm.example.com 主机上运行。
先决条件
-
已获得 IdM
admin
ticket-granting ticket (TGT)。 - web 控制台服务存在于 IdM 中。
- IdM 中存在 myhost.idm.example.com 主机。
-
您已为 IdM 服务器 上的域管理员启用了
admin
sudo
访问权限。 web 控制台在用户会话中创建了一个
S4U2Proxy
Kerberos ticket。要验证这种情况,以 IdM 用户身份登录 web 控制台,打开Terminal
页面,输入:$ klist Ticket cache: FILE:/run/user/1894000001/cockpit-session-3692.ccache Default principal: user@IDM.EXAMPLE.COM Valid starting Expires Service principal 07/30/21 09:19:06 07/31/21 09:19:06 HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM 07/30/21 09:19:06 07/31/21 09:19:06 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM for client HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
流程
创建可由委派规则访问的目标主机列表:
创建服务委托目标:
$ ipa servicedelegationtarget-add cockpit-target
将目标主机添加到委托目标:
$ ipa servicedelegationtarget-add-member cockpit-target \ --principals=host/myhost.idm.example.com@IDM.EXAMPLE.COM
允许
cockpit
会话通过创建服务委托规则并将HTTP
服务主体添加到目标主机列表来访问目标主机列表:创建服务委托规则:
$ ipa servicedelegationrule-add cockpit-delegation
在 delegation 规则中添加 Web 控制台服务:
$ ipa servicedelegationrule-add-member cockpit-delegation \ --principals=HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
在委托规则中添加委托目标:
$ ipa servicedelegationrule-add-target cockpit-delegation \ --servicedelegationtargets=cockpit-target
启用
pam_sss_gss
,这是通过通用安全服务应用程序接口(GSSAPI)验证用户身份的 PAM 模块,并与系统安全服务守护进程(SSSD)协同工作:-
打开
/etc/sssd/sssd.conf
文件进行编辑。 指定
pam_sss_gss
可以在 IdM 域中为sudo
和sudo -i
命令提供身份验证:[domain/idm.example.com] pam_gssapi_services = sudo, sudo-i
- 保存并退出文件。
-
打开
/etc/pam.d/sudo
文件进行编辑。 在
#%PAM-1.0
列表的顶部插入以下行以允许,但不需要sudo
命令进行 GSSAPI 身份验证:auth sufficient pam_sss_gss.so
- 保存并退出文件。
-
打开
重启
SSSD
服务,以便上述更改立即生效:$ systemctl restart sssd