Dockerfile中的setfacl无效

问题描述 投票:0回答:1

我想使用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

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

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

linux docker ubuntu dockerfile acl
1个回答
0
投票

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

不要以这个为权威答案,因为我只是在猜测。

Docker映像必须在具有不同存储后端的各种发行版上运行(当您在映像注册中心(例如hub.docker.com)工作时,可能甚至更多)。甚至那些基于文件系统的文件也可以由具有不同功能的不同文件系统支持。

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

这可能是为什么实现文件系统ACL所需的扩展属性未保留为映像的一部分的原因。


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

© www.soinside.com 2019 - 2024. All rights reserved.