Plantre Plantre
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

plantre

一个后端开发者
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 虚拟化

  • Git

  • 可视化

  • Linux

    • Linux 系统中常见目录符号
    • nohub启动jar并保存日志到文件
    • Linux添加SSH公钥
    • ssh命令常用场景详解
    • lvm是什么,和文件系统什么关系,windows下有吗
    • linux查询某个文件夹大小
    • linux删除某个文件夹
    • linux根目录下的文件夹解析
    • linux的文件权限解析
    • dev-null是什么
    • 2&1是什么意思
    • .ssh下有哪些文件,分别有什么作用
    • known_hosts具体举例说明
    • 非对称加密原理和真实数据举例
    • 查询linux端口是否占用
    • 若 SELinux 处于 Enforcing 模式,需在挂载路径后添加 Z是什么意思
    • linux查看每个进程内存大小
    • 分辨文件的种类
  • 远程串流等

  • SWF

  • 网络

  • 网站收藏
  • 技术
  • Linux
plantre
2025-05-14

若 SELinux 处于 Enforcing 模式,需在挂载路径后添加 Z是什么意思

在 Docker 容器化部署中,若宿主机启用了 SELinux 的 Enforcing 模式(强制安全策略模式),在挂载宿主机目录到容器时添加 :Z 标志,是解决容器与宿主机文件系统权限冲突的核心机制。以下是其含义和作用的详细解析:


一、:Z 的核心作用 :Z 是 Docker 对挂载卷的 SELinux 标签重标记操作,目的是让容器内的进程能够合法访问宿主机挂载的目录/文件,同时遵循 SELinux 的强制访问控制(MAC)规则。具体机制如下:

  1. 重设 SELinux 上下文标签
    当容器挂载宿主机目录时,默认的 SELinux 标签(如 system_u:object_r:default_t:s0)可能不符合容器进程的访问策略。Z 标志会强制将挂载目录的标签修改为 container_file_t 类型(或其他符合容器策略的标签)。

  2. 实现资源隔离
    通过 :Z 标记的目录会被分配唯一且独占的 SELinux 上下文(包含 Category 字段),确保该目录仅能被当前容器访问,其他容器或宿主机进程无法读写此目录,从而增强隔离性。

  3. 绕过默认拒绝规则
    SELinux 默认策略会阻止容器进程访问未正确标记的宿主机资源。例如,若未添加 :Z,容器内进程可能因标签不匹配触发 avc: denied 日志错误。


二、Z 与 z 的区别

标志 作用场景 安全影响
:Z 独占挂载(仅限当前容器访问) 完全重写标签,目录被标记为私有资源,其他容器无法访问(即使使用相同路径)
:z 共享挂载(多容器共享

怎么看 SELinux 是否处于 Enforcing 模式

根据最新的技术文档和实践总结,以下是检查 SELinux 是否处于 Enforcing(强制)模式 的三种常用方法,适用于 CentOS、Ubuntu 等主流 Linux 发行版:


一、使用 getenforce 命令(最快捷) 直接在终端执行命令,实时显示当前 SELinux 运行模式:

getenforce
1

• 输出结果解析:

• Enforcing:处于强制模式,策略规则已生效。

• Permissive:宽容模式(仅记录违规不阻止)。

• Disabled:SELinux 完全禁用。

适用场景:快速确认当前状态,无需额外参数。


二、查看 sestatus 命令(信息最全面) 执行以下命令获取 SELinux 详细状态报告:

sestatus
1

• 关键字段解析:

• SELinux status:enabled 表示 SELinux 已启用(可能处于 Enforcing/Permissive 模式)。

• Current mode:显示当前实际运行模式(如 enforcing)。

• Mode from config file:显示重启后生效的模式(如配置文件中设置了 enforcing)。

示例输出(仅节选关键部分):

SELinux status: enabled
Current mode: enforcing
Mode from config file: enforcing
1
2
3

三、检查配置文件 /etc/selinux/config(确认持久化配置) 查看配置文件中的默认模式设置(需重启生效):

cat /etc/selinux/config | grep ^SELINUX=
1

• 配置项解析:

• SELINUX=enforcing:系统重启后自动进入强制模式。

• SELINUX=permissive:重启后进入宽容模式。

• SELINUX=disabled:彻底关闭 SELinux。

注意:若此处为 enforcing 但当前模式非强制,说明用户通过 setenforce 临时修改了模式(重启后会恢复配置文件的设定)。


四、模式切换验证(附加操作) 如果需要临时切换模式(无需重启):

setenforce 1   # 切换为 Enforcing 模式
setenforce 0   # 切换为 Permissive 模式
1
2

验证效果:再次执行 getenforce 观察输出变化。


总结对比

方法 优势 局限性
getenforce 快速、直接 仅显示当前状态,无持久化配置信息
sestatus 显示运行模式与配置文件的关联性 输出信息较多,需针对性筛选
查看配置文件 确认重启后的持久化行为 需手动编辑文件并重启生效

若需长期保持 Enforcing 模式,建议同时修改配置文件并执行 setenforce 1 以确保当前和重启后的一致性。

编辑 (opens new window)
上次更新: 2025/06/10, 09:18:05
查询linux端口是否占用
linux查看每个进程内存大小

← 查询linux端口是否占用 linux查看每个进程内存大小→

最近更新
01
集成loki
07-04
02
TCP的ESTABLISHED是什么意思
06-24
03
安装1panel
06-24
更多文章>
Theme by Vdoing | Copyright © 2025-2025 plantre | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式