找到问题根 … 阅读全文
找到问题根源后,解决思路就很明确了:让容器内的 emby 用户与 NFS 目录的所有者 UID 保持一致,从而直接获得目录的访问权限。具体操作步骤如下:
-
停止 Emby 服务,避免在用户调整过程中出现进程占用问题,执行命令
systemctl stop emby-server。由于之前的 emby 用户 UID 与目标 UID 不匹配,需要先将其删除,执行userdel emby,删除用户时其对应的 emby 组也会被自动移除,这是后续需要重建组的原因。 -
重建 emby 组,为了避免权限混乱,我们可以指定 1000 为 GID,执行
groupadd -g 1000 emby
然后重新创建 emby 用户,关键是指定 UID 为 1000(与 NFS 目录所有者 UID 一致),同时将主组设为刚创建的 emby 组,并保留原有的附加组权限,命令为
useradd -u 1000 -g emby -G video,render emby
否则还需要修复 Emby 数据目录的权限,否则新的 emby 用户可能无法访问原有的配置和数据。通常 Emby 的数据目录在 /var/lib/emby,执行 chown -R emby:emby /var/lib/emby 即可递归修改目录所有者为新的 emby 用户和组。
用户重建后,如果原来的视频目录所有者是 1000:1000(对应 NAS 上第一个普通用户和它的组),那么已经可以正常访问了。
最后重启 Emby 服务,让所有配置生效,执行 systemctl restart emby-server。
重启完成后,我们可以通过 id emby 验证用户配置,此时应显示
root@Emby:/# id emby
uid=1000(emby) gid=1000(emby) groups=1000(emby),44(video),104(render)
确认 UID 和组权限都已正确配置;再执行 ls -ld /videos,会发现目录所有者已从数字 1000 变为 emby,说明权限匹配成功。
此时再次进入 Emby 后台扫描视频库,就能正常识别 NAS 上的所有视频文件了。整个过程的核心在于理解“Linux 权限基于 UID/GID 匹配”的原则,NFS 挂载目录的所有者 UID 在容器内必须有对应的用户,才能让应用获得合法的访问权限,这也是容器化部署中常见的权限配置要点。 收起