第 10 章 在多个系统中部署相同的 SELinux 配置
您可以使用以下方法之一在多个系统上部署验证后的 SELinux 配置:
- 使用 RHEL 系统角色和 Ansible
- 使用 RHEL web 控制台
-
在脚本中使用
semanage
导出和导入命令
10.1. 使用 selinux RHEL 系统角色恢复目录上的 SELinux 上下文 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
当文件有不正确的 SELinux 上下文时,可能会出现多种情况。例如,如果文件被复制或移到一个目录中,则它们的 SELinux 上下文可能与新位置的预期上下文不匹配。使用不正确的 SELinux 上下文时,应用程序可能无法访问文件。要对大量主机上的目录远程重置 SELinux 上下文,您可以使用 selinux
RHEL 系统角色。
前提条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 playbook 中指定的设置包括如下:
selinux_restore_dirs: <list>
- 定义角色应重置 SELinux 上下文的目录的列表。
有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.selinux/README.md
文件。验证 playbook 语法:
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示您已重置了上下文的文件或目录的 SELinux 上下文。例如,要显示
/var/www/
目录上的上下文,请输入:ansible rhel9.example.com -m command -a 'ls -ldZ /var/www/'
# ansible rhel9.example.com -m command -a 'ls -ldZ /var/www/' drwxr-xr-x. 4 root root system_u:object_r:httpd_sys_content_t:s0 33 Feb 28 13:20 /var/www/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow