Files
StudyDiary/04-博客发布/040-系统技术/如何解决linux下docker文件夹的权限相关问题.md
2026-07-23 20:36:13 +08:00

2.9 KiB
Raw Permalink Blame History

群晖系统

群晖安装container manager后会自动创建一个名为docker的文件夹,并赋予其ContainerManager、administrators的读写权限和Everyone的只读权限,但这样的权限很多时候无法满足使用需求,比如如果挂载了qbittorrent的config文件夹,启动docker容器时会报Could not create required directory 这样的错误导致甚至容器都无法创建成功,这个时候有两个解决问题的简单方法

一.为容器添加环境变量PUID=1026PGID=101(对支持 PUID/PGID 环境变量的镜像)

[69425d60282ba6072.png_e1080]

这两个id是你运行群晖时默认创建用户的uid和管理员组gid (至少7.2版本时这样的,如果设置之后还是有问题的话进命令行查一下用户id填进去就行),添加后这两个环境变量后你的容器就默认运行在此用户下,并且创建和下载的文件所有者也是此用户,权限问题就此解决

二.群晖文件权限问题的通用解:添加everone的可读写权限(右键文件夹-点击属性-点击权限-点击新增)

[69425d60598da6072.png_e1080]

包治百病,只是牺牲了一点点理论上的安全性

飞牛系统

飞牛os虽然不会在你安装docker应用时替你创建一个带权限设置的docker文件夹,但因为飞牛里容器会默认以root用户运行(应该是),所以你只需要随便创建一个文件夹并挂载运行即可,绝大多数时候完全不需要进行任何额外的文件夹权限设置,qbittorrent的创建和使用中不会出现任何的权限问题。

一切都很美好,我们已经搞定了一切….么?

之所以只是说绝大多数时候,是因为偶尔有些镜像配置里使用了非root用户的情况,比如,我在用docker-compose创建archivebox/archivebox时就遇到了权限错误,虽然容器的运行和执行下载任务都没有问题,但如我在飞牛网页端对下载的文件进行替换的话,会导致容器读不到被替换后的文件而出现错误

就像这样:原文件的所有者是911

[69425d604db8f6072.png_e1080]

而被替换后的文件所有者变成当前登录网页的飞牛用户:ceshi(这是我的测试用户)

[69425d60273716072.png_e1080

替换后在网页端打开这个文件会报Server Error (500),该怎么解决呢?倒也简单,和群晖的第一种方法原理相同,在环境变量里添加PUID=1000,PGID=1000就一般可以搞定(飞牛里无法设置文件权限为everone可读写,所以纯网页只有这一种方式,还是没用的话就只能进ssh里设置…那就是另一个故事了)

[69425d6022a276072.png_e1080]

喵,就是这样~

本文纯粹经验分享~