更改 Dockerfile 中 `/etc/passwd` 的权限

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

我正在为 Openshift 构建 Podman 映像,但遇到权限问题。

按照本指南,由于 Openshift 在运行容器时分配随机 UID 和 GID“0”,我尝试 chmod

 
/etc/passwd
 使其组可写,并在运行时将我的 Openshift 用户添加到其中;但似乎我不能总是
chmod
那个
/etc/passwd
文件。

最小 Dockerfile:

FROM ubuntu:20.04 USER root RUN ls -l /etc/passwd RUN chmod g+w /etc/passwd RUN ls -l /etc/passwd
构建时(

sudo podman build . -t test-image

),我在
/etc/passwd
上看到了正确的权利:

STEP 1: FROM ubuntu:20.04 STEP 2: USER root --> Using cache 2cb48e4f8eed907e057017011e20ddc47ec8f152bb7afe34ecf6be23413cd08b STEP 3: RUN ls -l /etc/passwd -rw-r--r--. 1 root root 926 Sep 21 16:48 /etc/passwd ^ ^ ^ 79f60398d64ece1b413fd904681ad5fd0725bae4b283abce7b7a9ea017d4ebe7 STEP 4: RUN chmod g+w /etc/passwd 6ed13401ab693dbc362ec90b9c3767c1cd2244074ca4e92bd1b31b72b3e80868 STEP 5: RUN ls -l /etc/passwd -rw-rw-r--. 1 root root 926 Sep 21 16:48 /etc/passwd ^ ^ ^ STEP 6: COMMIT test d667b2c05818b5af3c9db85a5e7179c8e7b1c21281e31c34a871e97268716f39
当我使用 

root

 用户运行容器时,没有问题:

[user@server]$ sudo podman run -it test-image /bin/bash root@295ab7b72a4d:/# ls -l /etc/passwd -rw-rw-r--. 1 root root 926 Sep 21 16:48 /etc/passwd ^ ^ ^
但是当我与随机用户一起运行时,

/etc/passwd

权限不再改变......

[user@server]$ sudo podman run -it -u 1000701200:0 test-image /bin/bash 1000701200@a63d9bf9f53a:/$ ls -l /etc/passwd -rw-r--r--. 1 root root 977 Oct 19 08:51 /etc/passwd ^ ^ ^
为什么

/etc/passwd

的权限取决于运行容器的用户?

提前致谢。

编辑1:我创建的随机文件不是这种情况,它按预期工作。所以

/etc/passwd

 文件有一些特别之处。

docker kubernetes openshift podman passwd
2个回答
2
投票
podman 版本是原因 - 更新到 3.x 版本解决了该问题。


0
投票
事实并非如此,我将 RHEL8.9 与 Podman 和 Buildah 一起使用,并且由于该文件上的 McAfee 服务锁定而收到针对 /etc/passwd 的权限被拒绝错误。我已向我的 ISSO 请求暂时停止该服务。

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