Red Hat Training

A Red Hat training course is available for RHEL 8

6.12.3. 使用配置文件配置锁定的 allowlist 选项

默认的 allowlist 配置文件包含 NetworkManager 上下文和 libvirt 的默认上下文。用户 ID 0 也位于列表中。

<?xml version="1.0" encoding="utf-8"?>
	<whitelist>
	  <selinux context="system_u:system_r:NetworkManager_t:s0"/>
	  <selinux context="system_u:system_r:virtd_t:s0-s0:c0.c1023"/>
	  <user id="0"/>
	</whitelist>

以下是一个 allowlist 配置文件示例,为 firewall-cmd 工具程序启用所有命令,对于用户 ID 为 815 的名为 user 的用户

<?xml version="1.0" encoding="utf-8"?>
	<whitelist>
	  <command name="/usr/libexec/platform-python -s /bin/firewall-cmd*"/>
	  <selinux context="system_u:system_r:NetworkManager_t:s0"/>
	  <user id="815"/>
	  <user name="user"/>
	</whitelist>

此示例显示用户 ID 和用户名,但只需要一个选项。Python 是程序解释器,它位于命令行的前面。您还可以使用特定的命令,例如:

/usr/bin/python3 /bin/firewall-cmd --lockdown-on

在该示例中,只允许 --lockdown-on 命令。

在 Red Hat Enterprise Linux 中,所有实用程序都放置在 /usr/bin/ 目录中,/bin/ 目录则链接到 /usr/bin/ 目录。换句话说,尽管以 root 身份输入时输入 firewall-cmd 的路径可能会解析为 /bin/firewall-cmd,但现在可以使用/usr/bin/firewall-cmd。所有新脚本都应该使用新位置。但请注意,如果以 root 身份运行的脚本被写为使用 /bin/firewall-cmd 路径,那么除了通常仅用于非root 用户的 /usr/bin/firewall-cmd 路径外,还必须在允许列表中添加该命令路径。

命令 name 属性末尾的 * 表示所有以这个字符串开头的命令都匹配。如果没有 *,则包括参数的绝对命令必须匹配。