搜索

20.3. 使用 CLI 在 IdM 客户端上授予 sudo 访问 AD 用户的权限

download PDF

身份管理(IdM)系统管理员可以使用 IdM 用户组来设置访问权限、基于主机的访问控制、sudo 规则,以及对 IdM 用户的其他控制。IdM 用户组授予并限制对 IdM 域资源的访问权限。

您可以将活动目录(AD) 用户 和 AD 添加到 IdM 用户组中。要做到这一点:

  1. 将 AD 用户或组添加到 非 POSIX 外部 IdM 组。
  2. 将非 POSIX 外部 IdM 组添加到 IdM POSIX 组中。

然后,您可以通过管理 POSIX 组的权限来管理 AD 用户的权限。例如,您可以为特定 IdM 主机上的 IdM POSIX 用户组授予特定命令的 sudo 访问权限。

注意

也可以将 AD 用户组作为成员添加到 IdM 外部组中。通过将用户和组管理放在一个 AD 域中,可以更轻松地为 Windows 用户定义策略。

重要

不要 对 IdM 中的 SUDO 规则使用 AD 用户的 ID 覆盖。AD 用户的 ID 覆盖只代表 AD 用户的 POSIX 属性,而不是 AD 用户本身。

您可以将 ID 覆盖添加为组成员。但是,您只能使用此功能管理 IdM API 中的 IdM 资源。将 ID 覆盖添加为组群成员没有扩展到 POSIX 环境,因此您无法将其用于 sudo 或基于主机的访问控制(HBAC)规则中的成员。

按照以下流程创建 ad_users_reboot sudo 规则,为 administrator@ad-domain.com AD 用户授予在 idmclient IdM 主机上运行 /usr/sbin/reboot 命令的权限,其通常为 root 用户保留。administrator@ad-domain.comad_users_external 非 POSIX 组的成员,即 ad_users POSIX 组的成员。

先决条件

  • 已获得了 IdM admin Kerberos票据授予票据(TGT)。
  • IdM 域和 ad-domain.com AD 域间的跨林信任已存在。
  • idmclient 主机上没有本地 administrator 账户:administrator 用户没有列在本地 /etc/passwd 文件中。

流程

  1. 使用 administrator@ad-domain 成员创建包含 ad_users_external 组的 ad_users 组:

    1. 可选 :在 AD 域中创建或选择对应的组来管理 IdM 域中的 AD 用户。您可以使用多个 AD 组,并将其添加到 IdM 端的不同组中。
    2. 创建 ad_users_external 组,并通过添加 --external 选项来表示它包含来自 IdM 域以外的成员:

      [root@ipaserver ~]# ipa group-add --desc='AD users external map' ad_users_external --external
      -------------------------------
      Added group "ad_users_external"
      -------------------------------
        Group name: ad_users_external
        Description: AD users external map
      注意

      确保此处指定的外部组是一个具有 globaluniversal 组范围的AD 安全组,如 活动目录安全组 文档中所定义的。例如,无法使用 Domain usersDomain admins AD 安全组,因为其组范围是 domain local

    3. 创建 ad_users 组:

      [root@ipaserver ~]# ipa group-add --desc='AD users' ad_users
      ----------------------
      Added group "ad_users"
      ----------------------
        Group name: ad_users
        Description: AD users
        GID: 129600004
    4. administrator@ad-domain.com AD 用户作为外部成员添加到 ad_users_external 中:

      [root@ipaserver ~]# ipa group-add-member ad_users_external --external "administrator@ad-domain.com"
       [member user]:
       [member group]:
        Group name: ad_users_external
        Description: AD users external map
        External member: S-1-5-21-3655990580-1375374850-1633065477-513
      -------------------------
      Number of members added 1
      -------------------------

      AD 用户必须被完全限定名称识别,如 DOMAIN\user_nameuser_name@DOMAIN。然后,AD 身份被映射到用户的 AD SID。同样适用于添加 AD 组。

    5. ad_users_external 作为成员添加到 ad_users

      [root@ipaserver ~]# ipa group-add-member ad_users --groups ad_users_external
        Group name: ad_users
        Description: AD users
        GID: 129600004
        Member groups: ad_users_external
      -------------------------
      Number of members added 1
      -------------------------
  2. ad_users 的成员授予权限,以在 idmclient 主机上运行 /usr/sbin/reboot

    1. sudo 命令的 IdM 数据库中添加 /usr/sbin/reboot 命令:

      [root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot
      -------------------------------------
      Added Sudo Command "/usr/sbin/reboot"
      -------------------------------------
        Sudo Command: /usr/sbin/reboot
    2. 创建一个名为 ad_users_rebootsudo 规则:

      [root@idmclient ~]# ipa sudorule-add ad_users_reboot
      ---------------------------------
      Added Sudo Rule "ad_users_reboot"
      ---------------------------------
        Rule name: ad_users_reboot
        Enabled: True
    3. ad_users_reboot 规则中添加 /usr/sbin/reboot 命令:

      [root@idmclient ~]# ipa sudorule-add-allow-command ad_users_reboot --sudocmds '/usr/sbin/reboot'
        Rule name: ad_users_reboot
        Enabled: True
        Sudo Allow Commands: /usr/sbin/reboot
      -------------------------
      Number of members added 1
      -------------------------
    4. ad_users_reboot 规则应用到 IdM idmclient 主机:

      [root@idmclient ~]# ipa sudorule-add-host ad_users_reboot --hosts idmclient.idm.example.com
      Rule name: ad_users_reboot
      Enabled: True
      Hosts: idmclient.idm.example.com
      Sudo Allow Commands: /usr/sbin/reboot
      -------------------------
      Number of members added 1
      -------------------------
    5. ad_users 组添加到 ad_users_reboot 规则中:

      [root@idmclient ~]# ipa sudorule-add-user ad_users_reboot --groups ad_users
      Rule name: ad_users_reboot
      Enabled: TRUE
      User Groups: ad_users
      Hosts: idmclient.idm.example.com
      Sudo Allow Commands: /usr/sbin/reboot
      -------------------------
      Number of members added 1
      -------------------------
注意

将更改从服务器传播到客户端可能需要几分钟时间。

验证步骤

  1. administrator@ad-domain.com 身份登录到 idmclient 主机,它是 ad_users 组的间接成员:

    $ ssh administrator@ad-domain.com@ipaclient
    Password:
  2. 另外,显示 administrator@ad-domain.com 允许执行的 sudo 命令:

    [administrator@ad-domain.com@idmclient ~]$ sudo -l
    Matching Defaults entries for administrator@ad-domain.com on idmclient:
        !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
        env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
        env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
        env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
        env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
        env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME",
        secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
    
    User administrator@ad-domain.com may run the following commands on idmclient:
        (root) /usr/sbin/reboot
  3. 使用 sudo 重新启动计算机。提示时输入 administrator@ad-domain.com 的密码:

    [administrator@ad-domain.com@idmclient ~]$ sudo /usr/sbin/reboot
    [sudo] password for administrator@ad-domain.com:
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.