Ansible selinux
模块
一、简介
- 功能:
selinux
模块用于在远程主机上管理 SELinux(Security-Enhanced Linux)状态。SELinux 是一种 Linux 内核安全模块,提供了强制访问控制策略,用于提高系统的安全性。使用此模块可以启用、禁用或设置 SELinux 的状态为临时或永久的某种模式。 - 使用场景:适用于需要配置和管理 SELinux 状态的场景,如在部署应用程序时需要调整 SELinux 策略,或者在服务器硬化过程中启用或禁用 SELinux。
二、基本用法
2.1 语法
使用 selinux
模块的基本命令格式:
ansible <pattern> -m selinux -a "state=<state>"
<pattern>
: 指定要操作的主机或主机组,例如all
、webservers
。-m selinux
: 指定使用selinux
模块。-a "state=<state>"
: 设置 SELinux 的状态。
2.2 示例
-
设置 SELinux 为启用(Enforcing)模式:
ansible all -m selinux -a "state=enforcing"
- 解释:在所有主机上将 SELinux 设置为启用模式(Enforcing),即严格执行 SELinux 策略。
-
设置 SELinux 为宽容(Permissive)模式:
ansible all -m selinux -a "state=permissive"
- 解释:在所有主机上将 SELinux 设置为宽容模式(Permissive),即不执行策略但记录违规日志。
-
禁用 SELinux:
ansible all -m selinux -a "state=disabled"
- 解释:在所有主机上禁用 SELinux 功能。
三、输出结果
执行 selinux
模块后的典型输出示例:
localhost | CHANGED => {
"changed": true,
"cmd": "/usr/sbin/setenforce 1",
"msg": "Enforcing mode set",
"state": "enforcing"
}
CHANGED
:表示 SELinux 状态已更改。changed
: 为true
表示操作成功并且 SELinux 状态已更改。cmd
:显示执行的具体命令。msg
:显示操作结果(例如 “Enforcing mode set” 表示已设置为 Enforcing 模式)。state
:显示当前 SELinux 的状态。
如果没有变化(例如状态已是所需的),输出将类似于:
localhost | SUCCESS => {
"changed": false,
"msg": "SELinux is already in enforcing mode",
"state": "enforcing"
}
SUCCESS
: 表示操作成功。changed
: 为false
表示 SELinux 状态未被修改。
四、常见选项
4.1 state
-
功能:指定 SELinux 的目标状态。
-
可选值:
enforcing
:启用 SELinux,强制执行所有安全策略。permissive
:启用 SELinux,但不强制执行策略,仅记录日志。disabled
:禁用 SELinux。
-
用法:
ansible all -m selinux -a "state=enforcing"
- 解释:将所有主机的 SELinux 状态设置为启用模式(Enforcing)。
五、注意事项
- 权限要求:更改 SELinux 状态需要具有适当的权限(通常是 root 权限),确保 Ansible 用户具备相应的 sudo 权限。
- 重启影响:更改 SELinux 状态为
disabled
或从disabled
状态更改为enforcing
或permissive
需要重启系统才能完全生效。使用state=disabled
选项时应注意这一点。 - 临时和永久更改:通过
selinux
模块更改状态通常是永久的(写入到/etc/selinux/config
),但是某些系统配置(例如使用setenforce
)可以临时更改状态。确保理解所需的更改类型。 - 策略兼容性:在启用或禁用 SELinux 之前,确保应用程序或服务与 SELinux 策略兼容,否则可能导致应用程序无法正常工作。