如果容器无法访问群晖NAS上的映射文件夹或文件,在容器日志中看到“权限被拒绝”错误。发生此错误时,容器可能会意外停止。

在本文中,我们以Node-RED容器为例。您可能会看到以下日志:

Error: EACCES: permission denied, copyfile '/usr/src/node-red/node_modules/node-red/settings.js' -> '/data/settings.js'

注意系统是DSM 7.2 及以上版本

问题描述

容器没有访问映射的文件夹或文件的权限。如症状中给出的示例,容器的“/data”存储空间未映射到可读写文件夹。

若要容器正常运行,请确保Everyone至少拥有映射的文件夹或文件的读取权限。 1 2具体权限要求可能因映像而异。请参阅您正在使用的映像文档以了解详细信息。

解决方法

按照以下步骤修改映射的文件夹或文件的权限:

1. 在Container Manager >容器中,选择容器并单击详细信息

2. 在设置> 存储空间设置中,检查映射的文件夹或文件的权限。在以下示例中,容器的/data 存储空间映射到/docker/nodered文件夹并具有读/写权限。
1.png

3. 在File Station中,前往映射的文件夹或文件并配置权限。 File StationContainer Manager中的权限设置必须一致。根据Container Manager中的设置,按以下所示在File Station中配置权限:Container Manager权限File Station 权限只读所有人阅读1 2读取/写入适合所有人读写3例如,允许“Everyone ”对/docker/nodered文件夹拥有读写权限。
2.png

    注意:

    1. 查看“docker”共享文件夹 的默认权限
    2. 容器会在 DSM 上以root或其他任意用户身份运行。容器使用的用户帐户可能因容器配置而异。因此,向“每个人”分配权限可保证容器可以访问映射的文件夹和文件,无论是root用户还是任意用户。
    3. 为增强数据安全性,请仅将“ Everyone读写权限”应用于映射的子文件夹或文件,而不是整个共享文件夹。除了这些权限之外,您可以为整个共享文件夹配置权限以控制访问。