为多个用户提供目录和内容的透明所有权

Oli*_*Oli 8 filesystem permissions multi-user

我有一个目录,我希望系统上的多个用户拥有该目录。也就是说,我希望任何运行的应用程序都oli认为这些文件属于oli,就像任何运行的应用程序jim都会这么认为。这与仅仅授予权限不同,因为我有一个所有权很重要的问题。我信任这种情况下的所有用户。

我立即想到的是某种可以透明地转换 ID 的绑定安装,我确信有一种方法可以使用熔断器来完成此操作,但快速(内核级别)对我来说更可取。


需要明确的是,我并不是在寻找实际的多重所有权,我只是希望多个用户看到这些文件是他们的。据我所知,Linux 中有几个不同的层可以将用户 ID 从一个层映射到另一个层,因此其中一个层可能会完成这里的工作。

Oli*_*Oli 12

找出完全内核内 ID 映射的挂载选项。这允许您使用不同的所有者/组在其他地方重新挂载任何目录。

sudo mount --bind -o "X-mount.idmap=u:1000:1002:1 g:1000:1002:1" /home/oli/dir /home/other/dir
Run Code Online (Sandbox Code Playgroud)

两者oliother用户都可以写入同一组文件,认为他们是所有者。这也可以相当容易地保存到 fstab。


另一个选项是bindfs/FUSE:

sudo bindfs --map=oli/other:@oli/@other /home/oli/dir /home/other/dir
Run Code Online (Sandbox Code Playgroud)

这提供了相当透明的所有权。该other帐户将这些文件视为自己的文件。我预计这会比内核内映射慢。


use*_*489 7

Linux 不支持多个用户拥有文件系统对象。它们必须只有一个所有者。

这听起来像是一个 XY 问题。您认为解决方案是拥有多个所有者,但您没有充分解释问题(您认为应用程序关心文件所有权;为什么?)这可能有其他解决方案,例如组所有权、在容器中运行、更改用户应用程序运行方式等

  • 我_强烈_支持这一点。有少数应用程序确实关心文件所有权,但它们几乎总是出于合法的安全原因这样做(例如,“ssh”关心“~/.ssh”及其中文件的所有权,因为其他用户控制这些是一个巨大的安全风险),所以这不太可能是一个真正的好主意。 (5认同)