我试图在k8s中部署一个停靠容器,该容器在/var/run下创建自己的子目录,但该目录的任何子目录似乎都不保留它们的权限。与root用户相比,docker映像是作为一个权限较低的用户运行的。我在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码头文件:
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 deniedchown和chmod的输出确认这些更改正在使其成为所有子目录。这是预期的行为吗?这与它在/var/run下有什么关系吗?
编辑
我试着转到/tmp,我得到了同样的问题。
发布于 2022-09-02 21:36:05
chmod需要包含目录的执行权限。
https://stackoverflow.com/questions/73585949
复制相似问题