Qiu*_*ang 3 umask docker dockerfile
我希望 docker 中的某个目录具有特定的 umask 值,例如 000。我尝试在 dockerfile 和 ENTRYPOINT shell 脚本中设置该值,但它们都无法工作,
...
RUN umask 000 /var/www/html/storage/logs //the directory
ENTRYPOINT ["/etc/start.sh"]
#in the /etc/start.sh
#!/bin/sh
umask 000 /var/www/html/storage/logs
...
Run Code Online (Sandbox Code Playgroud)
当我登录docker容器并检查/var/www/html/storage/logsumask时,它仍然是默认的0022
/var/www/html # cd storage/logs/
/var/www/html/storage/logs # umask
0022
Run Code Online (Sandbox Code Playgroud)
这是为什么?我该如何让它发挥作用?谢谢!
umask 是进程的属性,而不是目录的属性。与其他与进程相关的特性一样,它将在每个命令结束时重置RUN。
如果您尝试使非 root 用户可写入目录,最好的选择是将该目录授予chown该用户。(在 Ask Ubuntu 上如何为特定文件夹设置 umask有一些进一步的选择。)如果目录最终是绑定挂载点或卷挂载点,那么这些都无关紧要;挂载目录的所有特征都将替换 Dockerfile 中发生的任何内容。
如果您确实需要更改 umask,唯一可以真正做到的地方是在入口点包装脚本中。主容器进程也可以自行设置。
#!/bin/sh
# entrypoint.sh
umask 000
# ... other first-time setup ...
exec "$@"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9633 次 |
| 最近记录: |