Docker配置/秘密始终是用户/组可写的

时间:2018-12-20 11:36:14

标签: docker docker-compose

似乎每当我使用密钥/配置时,它们始终是组和用户可写的,即使我将模式显式设置为非组可写的。撰写文件示例:

version: "3.4"
services:
  alpine:
    image: alpine
    entrypoint: ["stat", "/foo"]
    secrets:
      - source: foo
        target: /foo
        mode: 400

secrets:
  foo:
    file: foo

状态权限:

Access: (0620/-rw--w----)  Uid: (    0/    root)   Gid: (    0/    root)

我在撰写文件中将其设置为400,但在容器中为620!

这似乎有点奇怪,并且对我来说是个问题,因为我想将此用于ssh,如果用户/主机密钥之类的文件可组写入,则会出错。我唯一的其他选择是将配置烘焙到映像中,如果可能的话,我想避免。

这是我最初在论坛上提出的问题,但我想也可以在这里发布:https://forums.docker.com/t/secrets-configs-always-group-writable/65458

1 个答案:

答案 0 :(得分:2)

您需要以0开头,否则yaml表示法会将数字解析为十进制而不是八进制:

mode: 0400

八进制620是十进制400。

请参阅Yaml规范:https://yaml.org/type/int.html

还有撰写文档中的示例:https://docs.docker.com/compose/compose-file/#long-syntax-2