我希望能够通过 Samba 从 Docker 容器共享命名卷。Samba 作为本机服务在主机系统上运行(而不是在 Docker 中)。Docker 容器以特定 UID 运行,因此其卷中的所有文件也归该 UID 所有。
主机系统没有与该 UID 对应的用户。
为了确保所有文件继续归正确的 UID 所有,我想使用参数force user
强制 Samba 访问具有 UID 的所有文件。以下是共享配置:
[container]
comment = Docker container storage
path = /var/lib/docker/volumes/appdata/_data
force user = 1001
valid users = # my username here
writable = yes
问题是该force user
命令似乎不起作用,因为它将用户 ID 指定为数字。我根本无法访问共享(我收到来自 Windows 的拒绝访问消息),所以我猜它默认为“nobody”用户,该用户确实无权访问容器的数据文件夹。
Samba 文档指定参数force user
“指定 UNIX用户名将被指定为默认用户”(强调我的)。这似乎表明您不能使用数字 UID 作为“用户名”。
除了在主机系统上手动创建与 UID 匹配的用户之外,还有其他选择吗?存在潜在的安全风险,如果另一个容器在同一个主机 UID 下运行,Samba 用户可能能够以某种方式访问另一个容器的数据。