套件共享文件夹和用户新建共享文件夹默认权限
| 共享文件夹 | 默认权限 |
|---|---|
| Chat | - 群组 administrator: 读取&写入 - 用户 Chat: 读取&写入 |
| docker | - 群组 administrators: 读取&写入 - 用户 ContainerManager: 读取&写入 - 群组 Owner: 完全控制 - 群组 Everyone: 读取 |
| homes | - 群组 administrators: 读取&写入 - 群组 Owner: 完全控制 - 群组 Everyone: 遍历文件夹/执行文件 |
| MailPlus | - 群组 administrators: 读取&写入 - 群组 Owner: 完全控制 - 群组 Everyone: 遍历文件夹/执行文件 |
| web | - 群组 administrators: 读取&写入 - 用户 http: 读取 - 群组 http: 读取 |
| web_packages | - 群组 administrators: 读取&写入 - 用户 http: 读取 - 群组 http: 读取 |
| 新建共享文件夹 | - 群组:administrators: 读取&写入 |
- 以上所有权限应用范围为全部(此文件夹、子文件夹、子文件、所有后代)
- 完全控制包含管理、读取、写入权限。
常见权限问题:
1. Docker 挂载卷没有读写权限
如果容器挂载的卷位于 docker 共享文件夹内,默认具有 Everyone 读取权限,所以一些只需要读取配置文件的容器能够正常运行。
如果容器挂载的卷位于其他共享文件夹,需要给共享文件夹添加相应的 Everyone 读取权限。
2. 通过 chmod 修改权限无效
群晖权限管理不仅仅依赖于 Linux 文件权限管理,还与共享文件夹权限相关,需要两者都具有权限才能对文件进行相应的访问。
例如通过 chmod 修改文件权限为 777,但是共享文件夹只有 administrator 群组具备读写权限,那么其他用户依然无法访问该文件。
3. 最佳实践
对于 docker 应用,如果容器支持指定用户/用户组执行,可以将使用本地用户 id/用户组 id 运行容器。这样本地用户拥有读写权限,那么容器也拥有同样的权限。不推荐使用 adminitrator 组用户进行映射,会带来安全问题。
如果不想指定容器执行用户,那么就需要针对容器内的用户,赋予文件相应用户和用户组权限。例如 nesux3,默认用户/用户组为 200:200,通过 chown -R 200:200 /path/to/data修改文件所有者,还需要在共享文件夹权限管理中配置 Owner 组的读写权限。两者一致才能保证容器能够正常读写文件。