docker映像中的用户正在失去对/tmp和/var/run中的子目录的权限



我正试图在k8s中部署一个docker容器,该容器在/var/run下创建自己的子目录,但该目录的任何子目录似乎都没有保留其权限。docker镜像以权限低于root的用户身份运行。我在k8s中运行这个,k8s的livenessCheck将在pod上执行并检查/var/run/myapp/somesubdir下的文件(在精神上类似于/proc和其他目录如何公开信息(。

在代码中,在应用程序启动时,以下文件由代码编写:/var/run/myapp/test/var/run/myapp/somesubdir/test-2。在代码中,我看到在试图写入这些文件时出现拒绝权限的错误。

其中一个错误的示例:

threw exception; nested exception is java.nio.file.AccessDeniedException: /var/run/myapp/somesubdir/test-2

docker文件:

RUN adduser --system --disabled-password app-user && 
groupadd app && 
usermod -a -G app app-user && 
mkdir -p /var/run/myapp/somesubdir && 
chown -Rv app-user:app /var/run/myapp && 
chmod -Rv 664 /var/run/myapp
USER app-user
# ...

如果我执行吊舱,我会看到什么

app-user@mypod:/app$ stat /var/run/myapp/
File: /var/run/myapp/
Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 10008fh/1048719d    Inode: 12310926    Links: 3
Access: (0664/drw-rw-r--)  Uid: (  102/app-user)   Gid: ( 1000/     app)
app-user@mypod:/app$ stat /var/run/myapp/somesubdir
stat: cannot stat '/var/run/myapp/somesubdir': Permission denied

chown和chmod的输出确认更改正在对所有子目录进行更改。这是预期的行为吗?这与它在/var/run下有关吗?

编辑

我试过切换到/tmp,但也遇到了同样的问题。

chmod需要包含目录的执行权限

相关内容

最新更新