Podman 卷安装:何时使用 :z 或 :Z 后缀?

rug*_*ugk 21 selinux container docker podman

Podman 手册页解释了卷安装/绑定:

\n
\n

像 SELinux 这样的标签系统要求在装载到容器中的卷\n内容上放置适当的标签。如果没有标签,安全系统可能\n会阻止容器内运行的进程使用该内容。默认情况下,Podman 不会更改操作系统设置的标签。

\n

要更改容器上下文中的标签,您可以将两个后缀\n :z:Z之一添加到卷装载。这些后缀告诉 Podman 重新标记共享卷上的文件\n对象。z选项告诉 Podman 两个容器共享卷内容。因此,Podman 使用共享\n内容标签来标记内容。共享卷标签允许所有容器读取/写入内容。\nZ选项告诉 Podman 使用私有非共享标签来标记内容。

\n
\n

然而,故障排除页面用几乎相同的词语解释了同样的事情。

\n

现在,对于 Podman 和 SELinux 相当陌生,想知道我实际上应该在什么时候使用什么?\n我知道,当我收到权限错误时,它们可能是由 SELinux 引起的,所以两个开关之一可以解决这个问题。但这两个选项(小写 z 和大写 Z)有什么区别呢?

\n

它所说的区别是:

\n
    \n
  • :z创建共享内容标签
  • \n
  • :Z创建私人非共享标签
  • \n
\n

这引入了许多新词:

\n
    \n
  • 共享和非共享(这是什么意思?)
  • \n
  • ??? vs private(再次,it\xe2\x80\x99s 不清楚这对我来说意味着什么)
  • \n
  • 它还表示一个选项为 \xe2\x80\x9ccontent label\xe2\x80\x9d ,而另一个选项仅表示 \xe2\x80\x9clabel\xe2\x80\x9d \xe2\x80\x93 这些之间有区别吗两个术语还是相同?
  • \n
\n

那么这些词在这种情况下意味着什么?\n最后一个问题:我什么时候应该使用什么?

\n

Ste*_*itt 13

\xe2\x80\x9cShared\xe2\x80\x9d 表示多个容器可以共享卷;\xe2\x80\x9cunshared\xe2\x80\x9d 表示他们可以\xe2\x80\x99t。更详细一点,:z用适当的标签 ( ) 标记每个容器内的卷container_file_t,任何给定的卷都可以并行安装在多个容器内,并且所有正在运行的具有该卷安装的容器都可以访问它。主机或任何正在运行的容器所做的任何更改将对所有正在运行的容器可见。

\n

\xe2\x80\x9cPrivate\xe2\x80\x9d 表示此外,容器内使用的标签对该容器来说是私有的。\xe2\x80\x99s 在文件系统级别没有额外的分层,因此这实际上意味着即使从主机\xe2\x80\x99s 的角度来看,内容也是私有的。具有相同挂载的容器可以\xe2\x80\x99t 至少与 Podman 共享对其 \xe2\x80\x94 的访问权限,最后一个容器获胜,并且是唯一有权访问该卷的容器。在我看来, \xe2\x80\x9cprivate\xe2\x80\x9d 的反义词是 \xe2\x80\x9cshared\xe2\x80\x9d,这可以解释为什么 \xe2\x80\x99s 中没有相反的术语文档(\xe2\x80\x9c共享共享标签\xe2\x80\x9d)。

\n

我\xe2\x80\x99m不确定\xe2\x80\x99s在\xe2\x80\x9c内容标签\xe2\x80\x9d v.\xe2\x80\x9clabel\xe2\x80\x9d中是否有任何意义,除非它\ xe2\x80\x99s 暗示在此类容器中创建的任何内容都将被相应地标记,包括在主机中,因此您\xe2\x80\x99 将看到带有该标签的文件container_file_t

\n

请参阅这篇文章,在 Podman 上更详细地展示差异Docker也有同样的区别

\n