驱动器从一台服务器移动到另一台服务器时的权限和所有者

驱动器从一台服务器移动到另一台服务器时的权限和所有者

我很确定这个问题与发行版和硬件无关。我有一个格式化为 ext4 的 USB 驱动器,其中有一个为 minidlna 配置的目录(加上子目录),拥有 root:minidlna,权限为 775。它最近被移动到一个新的安装中,其中还使用相同的用户名安装了 minidlna。然而,在这个新安装中,minidlna 无法读取该目录的内容。每种情况下的硬件都是带有 Ubuntu 服务器 21.04 的 Raspberry Pi 4

(此外,我将此目录的父目录作为 Nextcloud 的 Snap 安装实例的数据目录,该实例以 root 身份访问这些目录,并且我在现有目录中创建新文件时遇到了一些权限被拒绝的问题 - 作为 root!我怀疑问题是相关的,当我理解 minidlna 的原因时,我就会理解 nextcloud snap。)

我检查了以下建议: id minidlna返回 uid 112 和 gid 120 并ls -aln返回匹配的 gid 120

drwxrwxr-x 17 0 120 4096 8 月 10 日 16:55 。

为了确保这一点,我chown -R 112:120对目录进行了操作,但仍然没有什么区别。如果我重新启动 minidlna 守护进程,然后检查其状态,它总是(被截断)

minidlna.c:670: 错误:媒体目录“/media/path_to/directory”无法访问 [权限被拒绝]

答案1

文件系统不存储用户名字,它只存储数字 UID。如果minidlna在一个系统上使用 UID 123 创建用户,而在另一个系统上使用 UID 142 创建用户,则在主机之间移动文件系统时将会出现不匹配。

管理员的工作就是确保这种情况不会发生。我认为 Debian 和 Ubuntu 从 UID 100 开始按顺序创建系统用户,但如果您在两个系统上安装了不同的软件(或者以不同的顺序安装了相同的软件!),UID 编号将不匹配。

检查 中的 UID /etc/passwd,这是第三个字段。

要解决您的情况,您可以删除其中一台主机上与 minidlna 相关的所有内容,然后使用与另一台主机上相同的 UID 创建用户,然后重新安装所有内容。当然,请检查您要使用的 UID 是否免费。

例如,如果主机 A 上的minidlnaUID 123 且 UID 142 空闲,而主机 B 上minidlna的 UID 142 且 UID 123 用于其他用途,则在主机 A 上进行重新编号。

这几乎同样适用于可能与用户一起创建的任何组。检查/etc/group,第四个字段在 中/etc/passwd

相关内容