我想将我的 USB 记忆棒格式化ext4
并像使用任何其他典型的非 Linux 格式驱动器(、、、FAT32
)exFAT
一样使用NTFS
。
也就是说,我希望能够将 U 盘插入我的任何一台 linux 机器,并对其进行读/写,而无需调整权限,例如做chmod
或其他chown
事情。
我更喜欢使用 GParted 之类的 GUI 分区软件,而不是命令行命令,尽管我欢迎任何解决方案!
我确信这样的帖子对某些人来说是重复的旗帜天堂,但是在浏览了 6~10 个 SO 和谷歌的论坛帖子之后,我没有找到一个简单的解决方案来解决我的问题。似乎一切都是关于在每个用户的基础上调整权限。也许您只是无法使用ext4
与NTFS
.
与任何 Unix 风格的文件系统一样,ext4 包括标准的 Unix 文件所有权和权限约定。也就是说,用户由一个 UID 号标识,每个用户将属于一个或多个组,每个组由其 GID 号标识。每个文件都有一个所有者 UID 和一个组所有者 GID。三个经典的 Unix 文件权限集是:
为了能够在不需要调整权限的情况下访问记忆棒,您必须确保在记忆棒上创建的任何文件和目录都将自动具有非限制性权限。问题是,对创建的任何新文件的权限都由该
umask
值控制......并且您真的不想继续将其更改000
为在 USB 记忆棒上创建文件并恢复为默认值(通常为002
或022
)以供正常使用. 一个错误可能会导致您创建具有广泛权限的重要配置文件,这可能会危及您的用户帐户的安全性或导致其他更小的问题。如果您可以确保您的普通用户的 UID 号在所有 Linux 系统中都相同,并且您只关心该用户的访问权限(当然还有 root 用户),那么您只需将 USB 记忆棒格式化为 ext4 就可以了,第一次挂载它,并在开始使用文件系统之前将其根目录的所有权分配给您的常规用户帐户。
假设这
/dev/sdX1
是您希望在其中创建文件系统的 USB 记忆棒分区,并且<username>
是您的用户名,您可以在设置 USB 记忆棒以供使用时执行此操作:但是如果你不能保证匹配 UID/GID 号码,和/或有多个用户可能想要使用 U 盘,你需要做一些更复杂的事情,但在创建 ext4 后仍然是一次性操作棒上的文件系统。
我们需要在 U 盘文件系统的根目录上设置一个默认 ACL,为任何新文件或目录上的每个人分配完全访问权限。并且为了确保在启用 ACL 支持的情况下挂载存储棒,我们需要使用
tune2fs
来调整存储在文件系统元数据中的默认挂载选项。假设您的所有系统都支持 ext4 文件系统上的 ACL,并且您可能使用的任何可移动媒体安装工具都不会选择忽略
acl
安装选项,那么您现在应该有一个 USB 记忆棒,在上面创建的所有文件都将具有权限-rw-rw-rw-
和所有创建的子目录将是drwxrwxrwx+
. 加号表示子目录将有一个 ACL:为棒的根目录配置的自定义默认权限集也将被子目录继承,并且它们的行为相同。所有者 UID/GID 仍将匹配在文件系统上创建文件的用户的 UID 和主 GID,但由于放宽了文件和目录权限,这应该不是什么大问题。
我可能期望的唯一问题是,将文件复制到 USB 记忆棒默认情况下会尝试复制原始文件的文件权限,在这种情况下您不希望这样做。
例如,如果您在系统 A 上创建一个具有 -rw-r--r-- 权限的文件并将其复制到记忆棒,然后将记忆棒移动到具有不匹配 UID 号的系统 B。您仍然可以在系统 B 上读取文件,但如果不先明确删除或重命名原始文件,则无法在记忆棒上覆盖它。但是你可以这样做,只要你对文件所在的目录有写权限。
这实际上可能是一个有用的功能:如果您在多个系统上修改同一个文件,这将推动您每次保存文件的新版本,而不是覆盖一个真实文件......如果文件很重要,那可能实际上是一件好事。