30.6. 修改 sudo 规则
在 Web UI 中修改 sudo
规则
- 在 Policy 选项卡下,单击
。 - 单击规则的名称,以显示其配置页面。
- 根据需要更改设置。在某些配置页面中,位于页面的顶部。在这些页面上,单击 按钮以确认更改。
sudo
规则配置页面包含多个配置区域:
- 常规 区域
- 在此区域中,您可以修改规则的描述和
sudo 顺序
。sudo order
字段接受整数,并定义 IdM 评估规则的顺序。首先评估具有最高sudo 顺序
值的规则。 - Options 区域
- 在这个区域中,您可以在规则中添加
sudoers
选项。- 点选项列表上方的 Add。
图 30.5. 添加
sudo
选项 - 输入
sudoers
选项。例如,要指定sudo
不会提示用户进行身份验证,请添加!authenticate
选项:图 30.6. 输入
sudoers
选项有关sudoers
选项的详情请参考 sudoers(5) man page。 - 点击。
- Who 区域
- 在此区域中,您可以选择将
sudo
规则应用到的用户或用户组。这些用户将有权使用规则中定义的sudo
。要指定所有系统用户可以使用规则中定义的sudo
,请选择 Anyone。要仅将规则应用到特定的用户或组,请选择 指定的用户和组,然后按照以下步骤操作:- 点用户或用户组列表上方的 Add。
图 30.7. 将用户添加到
sudo
规则 - 选择要添加到规则的用户或用户组,然后点击 > 箭头按钮将它们移到 Prospective 列中。要添加外部用户,请在 External 字段中指定用户,然后点击 > 箭头按钮。
图 30.8. 为
sudo
规则选择用户 - 点击。
- 访问此主机 区域
- 在此区域中,您可以选择
sudo
规则将生效的主机。这些是授予用户sudo
权限的主机。要指定该规则将在所有主机中生效,请选择 Anyone。要仅将规则应用到特定的主机或主机组,请选择指定的 主机和组, 然后按照以下步骤操作:- 点主机列表上方的 Add。
图 30.9. 将主机添加到
sudo
规则 - 选择要包含在该规则中的主机或主机组,然后点击 > 箭头按钮将它们移到 Prospective 列中。要添加外部主机,请在 External 字段中指定主机,然后点击 > 箭头按钮。
图 30.10. 为
sudo
规则选择主机 - 点击。
- 运行命令 区域
- 在这个区域中,您可以选择要包含在
sudo
规则中的命令。您可以指定允许或拒绝用户使用特定的命令。要指定允许用户使用带有sudo
的任何命令,请选择 任何命令。要将规则与特定的命令或命令组关联,请选择 指定的命令 和组,然后按照以下步骤操作:- 点按钮之一来添加命令或命令组。要指定允许的命令或命令组,请使用 Allow 区域。要指定被拒绝的命令或命令组,请使用 Deny 区域。
图 30.11. 在
sudo
规则中添加命令 - 选择要包含在规则中的命令或命令组,然后点击 > 箭头按钮将它们移到 Prospective 列中。
图 30.12. 为
sudo
规则选择命令 - 点击。
- As Whom 区域
- 在此区域中,您可以配置
sudo
规则,以特定、非 root 用户身份运行给定的命令。请注意,如果添加了一组 RunAs 用户,则将使用 组成员的 UID 来运行命令。如果添加 RunAs 组,则将使用组 的 GID 来运行 命令。要指定将以系统上的任何用户身份运行该规则,请选择 Anyone。要指定该规则将作为系统上的任何组运行,请选择 任何组。- 点 users 列表上方的 Add。
图 30.13. 将
sudo
规则配置为以特定用户身份执行命令 - 选择所需的用户或组,并使用 > 箭头按钮将它们移到 Prospective 列中。要添加外部实体,请在 External 字段中指定它,然后点击 > 箭头按钮。
图 30.14. 为命令选择用户
- 点击。
从命令行修改 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$ 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 中。例如,要将user
和user_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.com
和host_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-command 或 ipa 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
和任何命令:
- 为
admin
用户或允许管理sudo
规则的任何其他用户获取 Kerberos 票据。$ kinit admin Password for admin@EXAMPLE.COM:
- 向 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
- 定义 谁 :指定将使用
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 -------------------------
- 定义 : 指定授予用户
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 -------------------------
- 定义允许用户运行任何
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
- 要让
sudo
命令以 root 用户身份执行,请不要指定任何作为用户或组运行的运行。 - 添加
!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
- 显示新的
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