Podman 容器中的卷绑定“权限被拒绝”

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

我正在尝试运行一个 Podman 容器,其卷绑定到主机上的数据目录,其中该数据目录具有有限的权限。即使我的用户帐户具有访问权限,我也会从容器内部收到“权限被拒绝”的消息。


数据目录

/mnt/data
由本地组拥有:

$ ls -lah /mnt
drwxrwx---      root  comp            data

我的本地用户是该组的成员:

$ whoami
robert
$ groups
robert comp

我可以按预期访问

/mnt/data

但现在我尝试通过无根容器访问该文件夹:

podman run --rm -it -v /mnt/data:/mnt/data ubuntu

我无法进入该文件夹:

(container) # ls -lah /mnt/data
ls: cannot open directory '/mnt/data/': Permission denied

一些更仔细的检查:

(container) # ls -lah /mnt
drwxrwx---    nobody nogroup     data
(container) # whoami
root
(container) # groups
root

好吧,根据这个我确实无法访问我的数据文件夹(假设容器中的 root 不是真正的超级用户)。


如何让正确的权限也适用于容器内部?

$ podman run --rm -it -v /mnt/data:/mnt/data --userns=keep-id ubuntu
(container) # whoami
ubuntu
(container) # groups
ubuntu
(container) # ls -lah /mnt
drwxrwx---    nobody nogroup     data

我现在已经成为不同的用户,但我仍然没有我需要的组。

$ id -u 1000 $ getent group comp 1003 $ podman run --rm -it -v /mnt/data:/mnt/data --uidmap=0:1000:1 --gidmap=0:1003:1 ubuntu (container) # ls -lah /mnt drwxrwx--- nobody nogroup data (container) # ls -lah /mnt/data ls: cannot open directory '/mnt/data/': Permission denied
    
acl podman
1个回答
0
投票
我通过使用

keep-groups: 找到了一些解决方案

$ podman run --rm -it -v /mnt/data:/mnt/data --userns=keep-id --group-add=keep-groups ubuntu (container) # whoami && groups && id -u && id -g && getent group nogroup ubuntu ubuntu nogroup 1000 1000 nogroup:x:65534: (container) # ls -lah /mnt drwxrwx--- nobody nogroup data (container) # ls -lah /mnt/data -rw-rw-r-- ubuntu ubuntu file.txt
现在看来我由容器用户创建了 

nogroup

 的成员,当我试图让我的主机用户/组落入容器时,这不是我所期望的。

这对我来说不是真正的解决方案,因为我的真实图像的功能与此不同

nogroup

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