温馨提示×

怎样安装selinux模块

小樊
53
2026-10-19 00:59:23
栏目: 智能运维

下面以 Linux(CentOS / RHEL / Fedora 等使用 SELinux 的系统) 为例,说明如何“安装 / 加载 SELinux 模块”。如果你指的是编写并加载自定义 SELinux 策略模块,也包含在内。


一、确认 SELinux 状态

getenforce
sestatus

常见状态:

  • Enforcing:强制模式(推荐)
  • Permissive:仅记录不阻止
  • Disabled:已关闭(需重启才能开启)

若未安装 SELinux 工具:

yum install -y policycoreutils selinux-policy selinux-policy-targeted
# 或
dnf install -y policycoreutils selinux-policy-targeted

二、安装系统自带 SELinux 模块(策略包)

很多服务自带 SELinux 模块(如 httpd、mysql):

yum install -y selinux-policy-targeted

查看已加载模块:

semodule -l

三、加载 / 安装自定义 SELinux 模块(.pp 文件)

如果你已有编译好的模块(如 myapp.pp):

semodule -i myapp.pp

查看是否加载成功:

semodule -l | grep myapp

四、编写并编译 SELinux 策略模块(示例)

1️⃣ 编写 .te 文件

myapp.te

policy_module(myapp, 1.0)

type myapp_t;
type myapp_exec_t;

init_daemon_domain(myapp_t, myapp_exec_t)

allow myapp_t self:process { fork signal };

2️⃣ 编写 .fc 文件(文件上下文)

myapp.fc

/usr/sbin/myapp    --  gen_context(system_u:object_r:myapp_exec_t,s0)

3️⃣ 编译模块

make -f /usr/share/selinux/devel/Makefile

生成:

  • myapp.pp

4️⃣ 安装模块

semodule -i myapp.pp

5️⃣ 应用文件上下文

restorecon -Rv /usr/sbin/myapp

五、卸载 SELinux 模块

semodule -r myapp

六、常见用途场景

  • 给自定义服务加 SELinux 权限
  • Docker / Kubernetes 容器策略
  • 解决 avc: denied 报错

如果你能告诉我:

  • 使用的 Linux 发行版
  • 是“系统模块”还是“自己写的模块”
  • 遇到的具体报错

我可以给你更精确的步骤。

0 踩