20.7. 在 IdM 客户端上为 sudo 启用 GSSAPI 身份验证

以下流程描述了通过 pam_sss_gss.so PAM 模块在 IdM 客户端上为 sudosudo -i 命令启用通用安全服务应用程序接口(GSSAPI)身份验证。有了这个配置,IdM 用户可以使用他们的 Kerberos ticket 向 sudo 命令进行身份验证。

先决条件

  • 您已为 IdM 用户创建了一个应用于 IdM 主机的 sudo 规则。在本例中,您已创建了 idm_user_reboot sudo 规则,来为 idm_user 帐户授予在 idmclient 主机上运行 /usr/sbin/reboot 命令的权限。
  • idmclient 主机正在运行 RHEL 8.4 或更高版本。
  • 您需要 root 权限来修改 /etc/pam.d/ 目录中的 /etc/sssd/sssd.conf 文件和 PAM 文件。

流程

  1. 打开 /etc/sssd/sssd.conf 配置文件:
  2. 将以下条目添加到 [domain/<domain_name>] 部分中。

    [domain/<domain_name>]
    pam_gssapi_services = sudo, sudo-i
  3. 保存并关闭 /etc/sssd/sssd.conf 文件。
  4. 重启 SSSD 服务以载入配置更改。

    [root@idmclient ~]# systemctl restart sssd
  5. 如果您正在运行 RHEL 8.8 或更高版本:

    1. [可选] 确定您是否选择了 sssd authselect 配置文件:

      # authselect current
      Profile ID: sssd

      输出显示选择了 sssd authselect 配置文件。

    2. 如果选择了 sssd authselect 配置文件,请启用 GSSAPI 身份验证:

      # authselect enable-feature with-gssapi
    3. 如果没有选择 sssd authselect 配置文件,请选择它并启用 GSSAPI 身份验证:

      # authselect select sssd with-gssapi
  6. 如果您正在运行 RHEL 8.7 或早期版本:

    1. 打开 /etc/pam.d/sudo PAM 配置文件。
    2. 添加下列条目,来作为 /etc/pam.d/sudo 文件中 auth 部分的第一行。

      #%PAM-1.0
      auth sufficient pam_sss_gss.so
      auth       include      system-auth
      account    include      system-auth
      password   include      system-auth
      session    include      system-auth
    3. 保存并关闭 /etc/pam.d/sudo 文件。

验证步骤

  1. idm_user 帐户的身份登录主机。

    [root@idm-client ~]# ssh -l idm_user@idm.example.com localhost
    idm_user@idm.example.com's password:
  2. 验证您作为 idm_user 帐户有一个票据授予票据。

    [idmuser@idmclient ~]$ klist
    Ticket cache: KCM:1366201107
    Default principal: idm_user@IDM.EXAMPLE.COM
    
    Valid starting       Expires              Service principal
    01/08/2021 09:11:48  01/08/2021 19:11:48  krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
    	renew until 01/15/2021 09:11:44
  3. (可选) 如果您没有 idm_user 帐户的 Kerberos 凭证,请删除当前的 Kerberos 凭证,并请求正确的凭证。

    [idm_user@idmclient ~]$ kdestroy -A
    
    [idm_user@idmclient ~]$ kinit idm_user@IDM.EXAMPLE.COM
    Password for idm_user@idm.example.com:
  4. 使用 sudo 而不指定密码来重新启动机器。

    [idm_user@idmclient ~]$ sudo /usr/sbin/reboot