在外部驱动器上共享 ext3/ext4 分区

在外部驱动器上共享 ext3/ext4 分区

有没有一种方法可以在不同的 Linux 机器上的不同用户 (uid) 之间共享外部 USB 驱动器上的 ext3/ext4 格式的分区,而无需为此目的创建组,将分区的组所有权设置为该组,并将每个相应的用户添加到每台机器上的组中?

这意味着我需要在每台机器上拥有 root 权限……但在某些情况下我可能没有。

我正在使用该分区来存储我在 Linux 上开发的代码,并且我希望该选项是安全的……如果可能的话。

我可以使用 vfat 分区,但是我无法控制 rw 权限 + 我无法直接在目录中开发:我总是必须将目录压缩为 tar.gz,提取,工作,tar.gz,复制到外部驱动器...等等。

谢谢!

答案1

一般答案是“否”。文件系统上的 uid 和 gid 将在写入时设置,如果它们在不同的机器上不匹配,那么权限也不会匹配。

如果您不想在多台机器上对 uid/gid 进行小规模的改动,您可以尝试使用 acls 为所有机器上的所有所需用户设置所需的权限。我怀疑这会在内部使用数字 uid,因此可能会发生这种情况,即授予机器 A 上的 uid a 的帐户 foo 访问权限,将授予机器 B 上的 uid a 的随机人员 bar 访问您的文件的权限。这似乎也比它的价值更麻烦。

我认为更明智的方法是使用 tar 来迁移您的开发树。

我也曾经有过一个不成熟的想法,那就是随身携带一个 Subversion 存储库(其中的文件只有 root 才能写入,并具有适当的访问配置文件),并依靠所有要使用的机器上的 svn 服务器,但我认为这并不是非常明智。

答案2

我发现Debian、Ubuntu、RedHat、Fedora、CentOS、Suse、FreeBSD、OpenBSD、NetBSD、MacOSX、Solaris 上的sys组共享 ID 。3

没有其他组名共享相同的 ID。即使是某些系统上的rootID 为 的组实际上也是。在 Linux 上通常是 ,但在 BSD 上是((0wheelnogroup6553432766

将 segid 位和 ACL(包括默认值)设置为sys外部存储上的目录:

$ sudo chgrp -R sys /mnt/data/dir
$ sudo chgmod -R g+s /mnt/data/dir
$ sudo fsetacl -R -m g:sys:rwx /mnt/data/dir
$ sudo fsetacl -R -d -m g:sys:rwx /mnt/data/dir

user添加到组后,sys它能够在任何主机上读取和写入/mnt/data/dir。您不再需要sudo每次都具有特权才能访问。

sys组和setgid位可以很好地完成工作,但是为了解决uname掩码问题,您需要使用 ACL。

这是你能做的最好的事。

UNIX 不是为个人/家庭使用而设计的。它是企业/企业操作系统,没有定义跨不同主机插入可移动媒体((

也可以看看:

相关内容