卷标签后缀的区别
在启用了强制访问控制的 Linux 主机上修正卷标签:不同后缀分别表示共享与私有,标签不对时容器读写会被拒绝并留下审计记录。
基本信息
| 场景 | 强制访问控制启用状态的主机上的卷访问 |
|---|---|
| 语法 | 挂载卷时加共享或私有的后缀 |
| 排查 | 查看当前模式、目录标签与审计记录 |
| 区别 | 共享后缀可多容器共用,私有后缀会重新打标签 |
| 影响面 | 重新打标签会影响该目录上的其他使用者 |
典型使用场景
- 容器读写挂载目录被拒绝时定位标签问题
- 多容器共享同一目录时选择合适的后缀
- 核对宿主当前的强制访问控制模式
- 排查审计记录里的拒绝事件
- 从其他发行版迁移过来的主机上确认标签行为
检查与修正
检查与修正
getenforce # 当前模式
docker run -d -v /srv/data:/data:Z --name app app/data:1.0
ls -Z /srv/data | head -3 # 查看目录标签
sudo ausearch -m avc -ts recent 2>/dev/null | tail -5 # 审计记录关注点与异常表现
| 关注点 | 正常表现 | 异常表现 |
|---|---|---|
| 当前模式 | 按预期启用或宽松 | 模式与预期不符 |
| 目录标签 | 与容器可用类型一致 | 标签不匹配被拒 |
| 审计记录 | 无相关拒绝 | 频繁出现拒绝事件 |
| 共享需求 | 按共享后缀配置 | 私有后缀影响其他使用者 |
多个容器共享同一目录用共享后缀;私有后缀会把宿主目录重新打成容器可用标签,影响该目录上的其他使用者。
对系统目录执行私有后缀重打标签可能影响宿主服务,动手前先圈定范围。
标签修正要在创建或重建容器时生效,运行中的容器改挂载参数不生效。
目录标签与容器期望类型不匹配时读写会被拒绝并留下审计记录,先看审计再改标签。
在宽松模式下这个问题不会出现,换到启用模式的主机后才暴露,迁移时要专门验证。
标签问题表现为权限被拒,但根因不在文件权限位,排查时不要把两者混淆。