Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

30.6. 修改 sudo 规则

在 Web UI 中修改 sudo 规则

  1. Policy 选项卡下,单击 SudoSudo Rules
  2. 单击规则的名称,以显示其配置页面。
  3. 根据需要更改设置。在某些配置页面中,保存按钮 位于页面的顶部。在这些页面上,单击 按钮以确认更改。
sudo 规则配置页面包含多个配置区域:
常规 区域
在此区域中,您可以修改规则的描述和 sudo 顺序sudo order 字段接受整数,并定义 IdM 评估规则的顺序。首先评估具有最高 sudo 顺序 值的规则。
Options 区域
在这个区域中,您可以在规则中添加 sudoers 选项。
  1. 点选项列表上方的 Add

    图 30.5. 添加 sudo 选项

    添加 sudo 选项
  2. 输入 sudoers 选项。例如,要指定 sudo 不会提示用户进行身份验证,请添加 !authenticate 选项:

    图 30.6. 输入 sudoers 选项

    输入 sudoers 选项
    有关 sudoers 选项的详情请参考 sudoers(5) man page。
  3. 点击 Add
Who 区域
在此区域中,您可以选择将 sudo 规则应用到的用户或用户组。这些用户将有权使用规则中定义的 sudo
要指定所有系统用户可以使用规则中定义的 sudo,请选择 Anyone
要仅将规则应用到特定的用户或组,请选择 指定的用户和组,然后按照以下步骤操作:
  1. 点用户或用户组列表上方的 Add

    图 30.7. 将用户添加到 sudo 规则

    将用户添加到 sudo 规则
  2. 选择要添加到规则的用户或用户组,然后点击 > 箭头按钮将它们移到 Prospective 列中。要添加外部用户,请在 External 字段中指定用户,然后点击 > 箭头按钮。

    图 30.8. 为 sudo 规则选择用户

    为 sudo 规则选择用户
  3. 点击 Add
访问此主机 区域
在此区域中,您可以选择 sudo 规则将生效的主机。这些是授予用户 sudo 权限的主机。
要指定该规则将在所有主机中生效,请选择 Anyone
要仅将规则应用到特定的主机或主机组,请选择指定的 主机和组, 然后按照以下步骤操作:
  1. 点主机列表上方的 Add

    图 30.9. 将主机添加到 sudo 规则

    将主机添加到 sudo 规则
  2. 选择要包含在该规则中的主机或主机组,然后点击 > 箭头按钮将它们移到 Prospective 列中。要添加外部主机,请在 External 字段中指定主机,然后点击 > 箭头按钮。

    图 30.10. 为 sudo 规则选择主机

    为 sudo 规则选择主机
  3. 点击 Add
运行命令 区域
在这个区域中,您可以选择要包含在 sudo 规则中的命令。您可以指定允许或拒绝用户使用特定的命令。
要指定允许用户使用带有 sudo 的任何命令,请选择 任何命令
要将规则与特定的命令或命令组关联,请选择 指定的命令 和组,然后按照以下步骤操作:
  1. Add 按钮之一来添加命令或命令组。
    要指定允许的命令或命令组,请使用 Allow 区域。要指定被拒绝的命令或命令组,请使用 Deny 区域。

    图 30.11. 在 sudo 规则中添加命令

    在 sudo 规则中添加命令
  2. 选择要包含在规则中的命令或命令组,然后点击 > 箭头按钮将它们移到 Prospective 列中。

    图 30.12. 为 sudo 规则选择命令

    为 sudo 规则选择命令
  3. 点击 Add
As Whom 区域
在此区域中,您可以配置 sudo 规则,以特定、非 root 用户身份运行给定的命令。
请注意,如果添加了一组 RunAs 用户,则将使用 组成员的 UID 来运行命令。如果添加 RunAs 组,则将使用组 的 GID 来运行 命令。
要指定将以系统上的任何用户身份运行该规则,请选择 Anyone。要指定该规则将作为系统上的任何组运行,请选择 任何组
  1. 点 users 列表上方的 Add

    图 30.13. 将 sudo 规则配置为以特定用户身份执行命令

    将 sudo 规则配置为以特定用户身份执行命令
  2. 选择所需的用户或组,并使用 > 箭头按钮将它们移到 Prospective 列中。要添加外部实体,请在 External 字段中指定它,然后点击 > 箭头按钮。

    图 30.14. 为命令选择用户

    为命令选择用户
  3. 点击 Add

从命令行修改 sudo 规则

IdM 命令行工具允许您配置多个 sudo 规则区域:
常规 sudo 规则管理
要更改 sudo 规则的常规配置,请使用 ipa sudorule-mod 命令。命令接受的最常见选项有:
  • 用于更改 sudo 规则描述的 --desc 选项。例如:
    $ ipa sudorule-mod sudo_rule_name --desc="sudo_rule_description"
    
  • 用于定义指定规则顺序的 --order 选项。例如:
    $ ipa sudorule-mod sudo_rule_name --order=3
  • 指定实体类别的选项: --usercat (用户类别)、--hostcat(主机 类别)、--cmdcat (命令类别)、--runasusercat (run-as user category)和 --runasgroupcat (run-as group category)。这些选项仅接受 所有将规则 与所有用户、主机、命令、运行用户或 run-as 组关联的值。
    例如,要指定所有用户都能够使用 sudo _rule 规则中定义的 sudo:
    $ ipa sudorule-mod sudo_rule --usercat=all
    
    请注意,如果该规则已经与特定实体关联,您必须在定义对应的 所有类别 前将其删除。例如,如果 sudo_rule 之前使用 ipa sudorule-add-user 命令与特定用户关联,您必须首先使用 ipa sudorule-remove-user 命令删除用户。
如需更多详细信息以及 ipa sudorule-mod 接受的选项的完整列表,请使用 --help 选项运行命令。
管理 sudo 选项
要添加 sudoers 选项,请使用 ipa sudorule-add-option 命令。
例如,要根据 files-commands 规则使用 sudo 来指定用户进行验证,请添加 !authenticate 选项:
$ ipa sudorule-add-option files-commands
Sudo Option: !authenticate
---------------------------------------------------------
Added option "!authenticate" to Sudo Rule "files-commands"
---------------------------------------------------------
有关 sudoers 选项的详情请参考 sudoers(5) man page。
要删除 sudoers 选项,请使用 ipa sudorule-remove-option 命令。例如:
$ ipa sudorule-remove-option files-commands
Sudo Option: authenticate
-------------------------------------------------------------
Removed option "authenticate" from Sudo Rule "files-commands"
-------------------------------------------------------------
管理被授予使用 sudo的权限
要指定单个用户,请在 ipa sudorule-add-user 命令中添加 --users 选项。要指定用户组,请将 --groups 选项添加到 ipa sudorule-add-user 中。
例如,要将 useruser_group 添加到 files-commands 规则中:
$ ipa sudorule-add-user files-commands --users=user --groups=user_group
...
-------------------------
Number of members added 2
-------------------------
要删除单独的用户或组,请使用 ipa sudorule-remove-user。例如,要删除用户:
$ ipa sudorule-remove-user files-commands
[member user]: user
[member group]:
...
---------------------------
Number of members removed 1
---------------------------
管理用户在什么位置被授予 sudo 权限
要指定主机,请在 ipa sudorule-add-host 命令中添加 --hosts 选项。要指定主机组,请将 --hostgroups 选项添加到 ipa sudorule-add-host
例如,要将 example.comhost_group 添加到 files-commands 规则中:
$ ipa sudorule-add-host files-commands --hosts=example.com --hostgroups=host_group
...
-------------------------
Number of members added 2
-------------------------
要删除主机或主机组,请使用 ipa sudorule-remove-host 命令。例如:
$ ipa sudorule-remove-host files-commands
[member host]: example.com
[member host group]:
...
---------------------------
Number of members removed 1
---------------------------
管理可与 sudo一起使用的命令
您可以指定允许或拒绝用户使用特定的命令。
要指定允许的命令或命令组,请在 ipa sudorule-add-allow-command 中添加 --sudocmds--sudocmdgroups 选项。要指定被拒绝的命令或命令组,请在 ipa sudorule-add-deny-command 命令中添加 --sudocmds--sudocmdgroups 选项。
例如,要在 files-commands 规则中添加 /usr/bin/less 命令和 files 命令组:
$ ipa sudorule-add-allow-command files-commands --sudocmds=/usr/bin/less --sudocmdgroups=files
...
-------------------------
Number of members added 2
-------------------------
要从规则中删除命令或命令组,请使用 ipa sudorule-remove-allow-commandipa sudorule-remove-deny-command 命令。例如:
$ ipa sudorule-remove-allow-command files-commands
[member sudo command]: /usr/bin/less
[member sudo command group]:
...
---------------------------
Number of members removed 1
---------------------------
请注意,--sudocmds 选项只接受添加到 IdM 的命令,如 第 30.4.1 节 “添加 sudo 命令” 所述。
以谁方式运行 sudo 命令
要将组中的单个用户或用户的 UID 用作运行命令的身份,请使用 ipa sudorule-add-runasuser 命令的 --users--groups 选项。
要使用用户组的 GID 作为命令的身份,请使用 ipa sudorule-add-runasgroup --groups 命令。
如果没有指定用户或组,sudo 命令将以 root 用户身份运行。
例如,指定将使用 用户的身份sudo 规则中执行命令:
$ ipa sudorule-add-runasuser files-commands --users=user
...
RunAs Users: user
...
有关 ipa sudorule the 命令的更多信息,请参阅 ipa help sudorule 命令的输出或运行带有 --help 选项的特定命令。

例 30.1. 从命令行添加和修改新的 sudo 规则

在所选服务器上允许特定的用户组使用 sudo 和任何命令:
  1. admin 用户或允许管理 sudo 规则的任何其他用户获取 Kerberos 票据。
    $ kinit admin
    Password for admin@EXAMPLE.COM:
    
  2. 向 IdM 添加新的 sudo 规则。
    $ ipa sudorule-add new_sudo_rule --desc="Rule for user_group"
    ---------------------------------
    Added Sudo Rule "new_sudo_rule"
    ---------------------------------
      Rule name: new_sudo_rule
      Description: Rule for user_group
      Enabled: TRUE
    
  3. 定义 :指定将使用 sudo 规则的用户组。
    $ ipa sudorule-add-user new_sudo_rule --groups=user_group
      Rule name: new_sudo_rule
      Description: Rule for user_group
      Enabled: TRUE
      User Groups: user_group
    -------------------------
    Number of members added 1
    -------------------------
    
  4. 定义 : 指定授予用户 sudo 权限的主机组的位置。
    $ ipa sudorule-add-host new_sudo_rule --hostgroups=host_group
      Rule name: new_sudo_rule
      Description: Rule for user_group
      Enabled: TRUE
      User Groups: user_group
      Host Groups: host_group
    -------------------------
    Number of members added 1
    -------------------------
    
  5. 定义允许用户运行任何 sudo 命令的 :,将所有 命令类别添加到规则中。
    $ ipa sudorule-mod new_sudo_rule --cmdcat=all
    ------------------------------
    Modified Sudo Rule "new_sudo_rule"
    ------------------------------
      Rule name: new_sudo_rule
      Description: Rule for user_group
      Enabled: TRUE
      Command category: all
      User Groups: user_group
      Host Groups: host_group
    
  6. 要让 sudo 命令以 root 用户身份执行,请不要指定任何作为用户或组运行的运行。
  7. 添加 !authenticate sudoers 选项,以指定在使用 sudo 命令时不需要用户进行身份验证。
    $ ipa sudorule-add-option new_sudo_rule
    Sudo Option: !authenticate
    -----------------------------------------------------
    Added option "!authenticate" to Sudo Rule "new_sudo_rule"
    -----------------------------------------------------
      Rule name: new_sudo_rule
      Description: Rule for user_group
      Enabled: TRUE
      Command category: all
      User Groups: user_group
      Host Groups: host_group
      Sudo Option: !authenticate
    
  8. 显示新的 sudo 规则配置以验证其是否正确。
    $ ipa sudorule-show new_sudo_rule
      Rule name: new_sudo_rule
      Description: Rule for user_group
      Enabled: TRUE
      Command category: all
      User Groups: user_group
      Host Groups: host_group
      Sudo Option: !authenticate