无论创建者是谁,任何人都可以对任何事情做任何事情的目录

无论创建者是谁,任何人都可以对任何事情做任何事情的目录

这是针对 FreeBSD UFS 的,但我希望它适用于任何类型的 POSIX 样式文件系统。

这是上下文:

  • 格式化为 UFS 的外部卷。
  • 有多个 FreeBSD 工作站,每个工作站都由拥有它们的用户以自己的方式进行配置。
  • 对于 来说$REASONS,通过 NFS、Samba 等进行网络和文件共享不是一种选择。

外部卷从一个用户传递到另一个用户,每个用户都使用该卷上的数据,并且需要完全访问权限才能读取、写入和执行该数据。用户将创建新的文件和文件夹。他们会定期删除和修改文件和文件夹。

由于系统之间的 ID 可能不同,通用组方法将不起作用。我已经尝试过设置开放权限,例如 777,我尝试过 ACL,我简要地研究了粘性位。这些解决方案都不起作用。我会遇到一个问题,用户 A 会创建一个文件,但用户 B 无法修改它。

在 NTFS 上有“每个人”的概念,并将其设置为“完全控制”。如何使用 UFS 等 POSIX 文件系统获得类似的行为?

编辑:(澄清 777 方法失败的原因)。

john@pc1 /mnt# sudo chmod 777 /media/external_usb/
john@pc1 /mnt# ls -larths /media/external_usb/
total 18
 1 drwxrwxrwx  2 john  john     2B Dec 16 12:41 ./
17 drwxr-xr-x  9 root  wheel     9B Dec 16 12:41 ../

john@pc1 ~> touch /media/external_usb/test
john@pc1 ~> ls -larths /media/external_usb/test
1 -rw-r--r--  1 john  john     0B Dec 16 12:43 /media/external_usb/test

# Drive is moved from pc1 to pc2

adam@pc2 ~> touch /media/external_usb/test
touch: /media/external_usb/test: Permission denied

答案1

当您将目录权限设置为 777 时,目录中的每个用户的文件仍然归该用户/组所有——特别是他们的 UID:GID。并且,文件权限不允许“任何人”更改文件。在您的示例中,即使任何人都可以访问该文件所在的目录,该文件也只能由 john rw。

为了执行您想要的操作,在将驱动器移动到另一个系统之前,john 需要将文件的权限设置为 666(任何人都可以读写)。非常没有安全感,但显然你被困住了。

如果您确实希望人们能够执行该文件,那么您需要将该文件的权限设置为 777 而不是 666。

这不是 BSD 或 UFS 问题...您在几乎任何 UNIX 操作系统和文件系统上都会遇到同样的问题。

相关内容