即我想要的是相当于 Windows 的 Linux Public/Pictures
。
问题是当您将文件移动到文件夹/目录时,Linux 文件管理器 Nautilus 不会应用默认 ACL(也不是旧的 set-group-id)。即使在预期的情况下,文件一次仅位于一个目录中,即它还没有被硬链接到另一个目录中,情况也是如此。
因此,即使使用默认 ACL,也无法从插入的相机中拖动照片。其他用户将能够读取照片,但无法写入照片。它们在文件管理器中显示为带有挂锁。
有趣的是,在这种情况下它没有使用rename()
,因为移动跨越了文件系统。在这种情况下,Nautilus 只是通过重新应用源文件 :trollface: 的权限来提供一致的语义。
不幸的是,在厌倦了指导其他用户如何使用 Digikam 之后,我记起这一点已经太晚了。 (Digikam 有效,因为从卡中删除照片是一个单独的操作。所以照片必然是复制的,而不是移动)。我指示他们写下有关使用文件管理器的注释。叹。
所以我知道这不是预期的用途,即多用户计算机尚未真正得到满足。但有什么明智的方法可以为我的其他用户进行设置吗?
我不赞成人们比文件管理器更难记住(大约一个月)的任何方法。 Digikam 除外;它有太多毫无意义的选择,然后在从卡上删除图像之前要求确认,好像整个操作充满了危险。 (同样不幸的是,使用我们的软件时,我们会看到“使用 Digikam 导入照片”弹出窗口,但该弹出窗口不起作用)。
我还排除了任何无法将相册名称(包括日期)保存到文件系统的照片管理器。如果您无法导出到 Digikam,那么您就没有足够的可信度让我从 Digikam 导入!
环境:
- Linux
- 德班
- 标准 GNOME 桌面
答案1
我忘了还有别的事。如果我无法写入文件,我仍然可以删除它并替换它。 这正是保存文件的正确方法。 (因为您必须fsync()
先拥有一个耐用的文件,然后才能安全地替换旧的文件)。
它似乎工作正常,你只需忽略挂锁:)。例如,我可以旋转其他用户复制的照片。
免责声明:Digikam 似乎无法正确更新照片元数据。因此,这将默默地失败(:trollface2 :),使(元数据)数据库不一致。幸运的是,我现在不关心做标记,但这是我以后会遇到的另一个小陷阱。
答案2
有趣的是,在这种情况下它没有使用 rename(),因为移动跨越了文件系统。在这种情况下,Nautilus 只是通过重新应用源文件 :trollface: 的权限来提供一致的语义。
我希望这是唯一的问题。但当我获得相同的有效权限时复制以及。如果我检查,确实应用了默认 ACL getfacl
。然而,它还显示了一个“掩码”,并且默认应用的 ACL 已被该掩码有效禁用。
甚至为了得到复制工作...您不一定需要默认 ACL;从历史上看,你会依赖用户私人群组模式,共享目录被标记为 set-GID。
不幸的是,现代 GNOME 并不是为多用户系统开发的,并且有两个问题破坏了它。
- 尤迪卡当代表用户安装 FAT 文件系统(如相机的 SD 卡)时,使用古老的 unix 掩码 0022。
- systemd 错误(或“RFE”哈哈):允许选择“systemd --user”umask。
例如,当您使用 cp 从 SD 卡复制图像时,cp 会复制原始模式,并以当前 umask 为上限。所以它受到两个问题的影响。 (它可能会受到第一个问题的影响,因为您是从名为 的服务cp
内部运行的)。systemd --user
gnome-terminal-server.service
(这种情况的另一个方面是,Debian 很早就实现了 UPG,但后来在实现 PAM 时破坏了 umask。虽然使用 PAM 配置来解决这个问题要简单得多,但这可能说明了需求的缺乏,并且可能导致了对 UPG 认识的缺乏)。
第 2 期打破了传统的使用 UPG,它依赖于umask
0002 和 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