gpt4 book ai didi

linux - Dockerfile 中的 setfacl 没有效果

转载 作者:行者123 更新时间:2023-12-01 22:50:30 26 4
gpt4 key购买 nike

我想在使用 setfacl 构建 docker 镜像时为某些文件夹设置默认 acl,但没有效果。默认 acl 不变。我的目标是在/opt 中创建的每个文件都必须对任何用户具有 rwX 权限,因为该镜像稍后将使用任意 uid 运行,并且需要对/opt 的完全访问权限。

这是一个简单的 Dockerfile 示例

FROM ubuntu:bionic
SHELL ["/bin/bash", "-c"]
RUN apt-get update > /dev/null && apt-get install -y --no-install-recommends acl > /dev/null
RUN chmod -R a+rwXs /opt
RUN setfacl -d -m o::rwx /opt
RUN getfacl /opt

输出是

# file: opt
# owner: root
# group: root
# flags: ss-
user::rwx
group::rwx
other::rwx

这是错误的,缺少默认的 acl。但是如果我手动运行容器中的命令,它就可以工作

docker run -ti --rm ubuntu:bionic bash
root@636bf8fdba41:/# apt-get update > /dev/null && apt-get install -y --no-install-recommends acl > /dev/null
debconf: delaying package configuration, since apt-utils is not installed
root@636bf8fdba41:/# chmod -R a+rwXs /opt
root@636bf8fdba41:/# setfacl -d -m o::rwx /opt
root@636bf8fdba41:/# getfacl /opt
getfacl: Removing leading '/' from absolute path names
# file: opt
# owner: root
# group: root
# flags: ss-
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group::rwx
default:other::rwx

知道为什么 docker 在 Dockerfile 中运行 setfacl 时没有正确应用 acl 更改吗?

Docker 版本 19.03.5,内部版本 633a0ea838Ubuntu 18.04 作为主机

最佳答案

Any idea why docker does not correctly apply the acl changes when running setfacl in the Dockerfile?

不要将此视为权威答案,因为我只是猜测。

Docker 镜像必须在具有不同存储后端的各种发行版上运行(当您考虑镜像注册表时,可能会更多,例如 hub.docker.com)。即使那些基于文件系统的文件系统也可能受到具有不同功能的不同文件系统的支持。

这意味着为了让 Docker 镜像在所有情况下都能可靠且可重复地运行,它们必须最大限度地减少它们保留的扩展文件系统功能的数量。

这可能就是为什么实现文件系统 ACL 所需的扩展属性没有保留为镜像的一部分。

<小时/>

它在容器中工作,因为此时文件存储在特定的本地文件系统上,因此您可以利用该文件系统支持的任何功能。

关于linux - Dockerfile 中的 setfacl 没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59043049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com