共享、读写、照片目录树,适合普通用户

共享、读写、照片目录树,适合普通用户

即我想要的是相当于 Windows 的 Linux Public/Pictures

问题是当您将文件移动到文件夹/目录时,Linux 文件管理器 Nautilus 不会应用默认 ACL(也不是旧的 set-group-id)。即使在预期的情况下,文件一次仅位于一个目录中,即它还没有被硬链接到另一个目录中,情况也是如此。

因此,即使使用默认 ACL,也无法从插入的相机中拖动照片。其他用户将能够读取照片,但无法写入照片。它们在文件管理器中显示为带有挂锁。

有趣的是,在这种情况下它没有使用rename(),因为移动跨越了文件系统。在这种情况下,Nautilus 只是通过重新应用源文件 :trollface: 的权限来提供一致的语义。

不幸的是,在厌倦了指导其他用户如何使用 Digikam 之后,我记起这一点已经太晚了。 (Digikam 有效,因为从卡中删除照片是一个单独的操作。所以照片必然是复制的,而不是移动)。我指示他们写下有关使用文件管理器的注释。叹。

所以我知道这不是预期的用途,即多用户计算机尚未真正得到满足。但有什么明智的方法可以为我的其他用户进行设置吗?

我不赞成人们比文件管理器更难记住(大约一个月)的任何方法。 Digikam 除外;它有太多毫无意义的选择,然后在从卡上删除图像之前要求确认,好像整个操作充满了危险。 (同样不幸的是,使用我们的软件时,我们会看到“使用 Digikam 导入照片”弹出窗口,但该弹出窗口不起作用)。

我还排除了任何无法将相册名称(包括日期)保存到文件系统的照片管理器。如果您无法导出到 Digikam,那么您就没有足够的可信度让我从 Digikam 导入!

环境:

  • Linux
  • 德班
  • 标准 GNOME 桌面

答案1

我忘了还有别的事。如果我无法写入文件,我仍然可以删除它并替换它。 这正是保存文件的正确方法。 (因为您必须fsync()先拥有一个耐用的文件,然后才能安全地替换旧的文件)。

它似乎工作正常,你只需忽略挂锁:)。例如,我可以旋转其他用户复制的照片。

免责声明:Dig​​ikam 似乎无法正确更新照片元数据。因此,这将默默地失败(:trollface2 :),使(元数据)数据库不一致。幸运的是,我现在不关心做标记,但这是我以后会遇到的另一个小陷阱。

答案2

有趣的是,在这种情况下它没有使用 rename(),因为移动跨越了文件系统。在这种情况下,Nautilus 只是通过重新应用源文件 :trollface: 的权限来提供一致的语义。

我希望这是唯一的问题。但当我获得相同的有效权限时复制以及。如果我检查,确实应用了默认 ACL getfacl。然而,它还显示了一个“掩码”,并且默认应用的 ACL 已被该掩码有效禁用。

甚至为了得到复制工作...您不一定需要默认 ACL;从历史上看,你会依赖用户私人群组模式,共享目录被标记为 set-GID。

不幸的是,现代 GNOME 并不是为多用户系统开发的,并且有两个问题破坏了它。

  1. 尤迪卡当代表用户安装 FAT 文件系统(如相机的 SD 卡)时,使用古老的 unix 掩码 0022。
  2. systemd 错误(或“RFE”哈哈):允许选择“systemd --user”umask

例如,当您使用 cp 从 SD 卡复制图像时,cp 会复制原始模式,并以当前 umask 为上限。所以它受到两个问题的影响。 (它可能会受到第一个问题的影响,因为您是从名为 的服务cp内部运行的)。systemd --usergnome-terminal-server.service

(这种情况的另一个方面是,Debian 很早就实现了 UPG,但后来在实现 PAM 时破坏了 umask。虽然使用 PAM 配置来解决这个问题要简单得多,但这可能说明了需求的缺乏,并且可能导致了对 UPG 认识的缺乏)。

第 2 期打破了传统的使用 UPG,它依赖于umask0002 和 set-GID 共享目录。

但是,当您在共享目录上使用默认 ACL 时,该 ACLumask会被有效地覆盖,并且问题 1 是“唯一”问题。

答案3

我在 Docker bug 评论中看到了建议的另一种方法。有一个可以更改权限的 FUSE 文件系统。仅使用 FUSE 就会对性能产生影响,但是FUSE 并不像你想象的那么糟糕。查看http://bindfs.org/

的示例行/etc/fstab,允许已添加到photos组中的用户:

/home/photos /home/photos fuse.bindfs nofail,allow_other,force-group=photos,perms=g+wX

也可以用几行代码来寻址。不幸的是,这并不是一个完全微不足道的练习。如果您不介意它在文件名中换行(或反斜杠,显然?),下面的第二个链接将起作用。

https://superuser.com/questions/139513/acl-and-moving-files-in-nautilus

http://positon.org/a-solution-to-the-umask-problem-inotify-to-force-permissions

相关内容