semanage fcontext 用于管理 selinux 路径标签规则,不直接修改文件标签,需配合 restorecon 生效;支持查看(-l)、添加(-a)、删除(-d)规则,路径正则须严格匹配,修改需先删后加。

semanage fcontext 是 SELinux 中用于管理文件和目录安全上下文(即路径标签)的核心命令。它不直接修改现有文件的标签,而是向 SELinux 策略数据库添加或删除“上下文映射规则”,这些规则会在执行 restorecon 时被应用,从而批量修正路径的实际标签。
查看当前路径标签规则
列出所有已定义的路径上下文规则:
semanage fcontext -l可配合 grep 过滤特定路径或类型,例如:
添加新的路径标签规则
使用 -a 添加一条永久性规则。必须指定路径正则表达式(支持通配符)和目标上下文类型:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
semanage fcontext -a -t httpd_sys_content_t "/srv/myapp(/.*)?"
→ 将
/srv/myapp及其所有子路径标记为 Web 内容类型 -
semanage fcontext -a -s system_u -t samba_share_t "/shared(/.*)?"
→ 指定用户(
-s)、角色(-r,可选)、类型(-t)三元组
注意:路径末尾的 (/.*)? 表示匹配该目录及其全部递归内容,这是常见且推荐的写法。
修改或删除已有规则
先用 -l 确认原始规则,再操作:
- 修改:实际是先删后加,SELinux 不支持原地编辑。例如更新类型: semanage fcontext -d -t old_type_t "/path(/.*)?"
- 删除规则: semanage fcontext -d "/path(/.*)?"
- 删除时必须严格匹配原始正则表达式(包括括号和问号),否则报错 “No matching records found”
semanage fcontext -a -t new_type_t "/path(/.*)?"
让新规则生效:restorecon 是关键
semanage fcontext 只改策略库,不改磁盘上的实际标签。 必须运行 restorecon 才能将规则应用到真实文件系统:
- 对单个路径生效: restorecon -v /srv/myapp
- 递归处理并显示变更: restorecon -Rv /srv/myapp
- 强制重置(忽略 .autorelabel 文件,跳过自动 relabel): restorecon -F -Rv /srv/myapp
若系统重启后需自动重打标,可创建空文件 /etc/.autorelabel,下次启动会全盘扫描并应用所有 fcontext 规则(耗时较长,慎用)。










