将 ext4 格式的 USB 驱动器与另一台计算机一起使用时出现不同的 UID/GID

Mar*_*arc 13 filesystems ext4

使用像ext4U 盘或存储卡这样的文件系统的问题是,当它安装到另一个系统时,磁盘的 UID/GID 可能不存在。

这可以通过安装选项修复吗?

War*_*ung 13

我假设您希望找到Linux命令知道的其他一些文件系统支持的uid=Ngid=N选项的等效项mount。对不起,但不,ext4 没有那个选项。

这些其他文件系统都为了这样一个选项,权限文件可能没有有用的POSIX权限的文件系统。您希望取消权限——或者至少,重新分配它们——从安全的角度来看这是一个坏主意,这无疑是这些选项不存在的原因。

当您在可移动媒体上使用像 ext4 这样的文件系统时,您是在说您关心诸如 POSIX 权限之类的事情。这意味着您必须采取与 NFS 相同的步骤来同步用户和组 ID。

如果您实际上并不关心权限,那么可能有更适合您的情况的文件系统。

在下面的评论之后,我尝试将 UDF 作为此类文件系统的候选者,但可惜,它不起作用:

  • 如果您在一个 Linux 机器上创建一个 UDF 文件系统,向其中添加文件,更改它们的权限,并将它们挂载到另一个 Linux 机器上,它会遵守它在那里找到的权限,即使您给了uid=N,gid=N. 与 NFS 一样,您必须在此处同步 UID 和 GID。

  • Mac OS X 的行为符合预期:它相信它拥有在 Linux 机器上创建的 UDF 文件系统上的所有内容。但是,将文件添加到磁盘,它将设置文件的 UID 和 GID,然后 Linux 机器将遵守这些。

  • 如果您随后尝试将该文件系统挂载到 FreeBSD 机器上,它会大喊invalid argument. 我认为这是因为内核开发人员没有意识到 UDF 可以出现在非光学媒体上,仅仅是因为我在网上找不到任何成功的报告。也许我错过了一个魔法咒语。

  • 据报道,可以让 UDF 硬盘驱动器在 Windows 上工作,但它的创建方式非常挑剔。如果您需要此功能,最好在 Windows 中进行格式化。从命令行:

    format /fs:udf x:

    不要使用/q: 这会创建一个不太可能安装在其他操作系统上的文件系统。

    请注意,UDF 只能在 Vista 和更新版本上读/写。XP 将挂载在 Vista 上创建的 UDF 硬盘驱动器,但无法写入。

某种形式的 FAT 可能是这里的最佳选择。如果您因为 FAT32 4 GB 文件大小限制而避免这种情况,您可能希望查看exFAT。有一个免费的 FUSE 版本可用。

如果您使用的 Linux 发行版足够新,并且它们包含对 NTFS 的可靠读/写支持,那么 NTFS 也可能有效。

  • 实际上 UDF 确实具有 posix 权限。如果您不指定 uid/gid 选项,它会像 ext[234] 或任何其他 posix fs 一样存储所有权和权限。如果您指定一个 id,则默认是在写入光盘时将该 id 转换为 -1,并在从光盘读取时将 -1 转换为该 id。这使得普通用户可以轻松地在其 ID 不同的系统之间移动文件。几年前,我添加了“ignore”作为始终应用 id 的值,而不仅仅是当它在光盘上为 -1 时,并且“忘记”总是将 -1 写入光盘,无论所有者是否与默认 ID 匹配。 (3认同)