Red Hat Training
A Red Hat training course is available for RHEL 8
7.13.3. 使用配置文件配置锁定的 allowlist 选项
默认允许列表配置文件包含 NetworkManager
上下文和 libvirt
的默认上下文。用户 ID 0 也位于列表中。
+ allowlist 配置文件存储在 /etc/firewalld/
目录中。
<?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>
以下是一个允许列表配置文件的示例,它为名为 user ID 为 815
的用户允许 firewall-cmd
工具的所有命令:
<?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>
此示例展示了 user id
和 user name
,但只需要其中一个选项。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 属性末尾的 *
表示所有以这个字符串开头的命令都匹配。如果没有 *
,则包括参数的绝对命令必须匹配。