垃圾桶是如何工作的,我在哪里可以找到它的官方文档、参考或规范?

Mes*_*ion 14 gnome nautilus documentation trash

在尝试从已安装的 NTFS 卷管理垃圾桶时,我最终阅读了FreeDesktop.org 上的参考资料

四处摸索并进行一些测试,我意识到 Ubuntu/Gnome 并没有 100% 遵循规范。原因如下:

  • 对于非 / 分区,它总是使用<driveroot>/.Trash-<uid>,它从未使用过<driveroot>/.Trash/<uid>,即使我提前创建了它。虽然这有效,但很烦人:如果我有 15 个用户,/.Trash-xxx我的驱动器中最终会有 15 个文件夹,而另一种方法仍然会给出一个文件夹(包含 15 个子文件夹)。我的驱动器中的“污染”非常令人不快。和规格说:“如果一个$topdir/.Trash目录不存在,一个$topdir/.Trash-$uid目录是使用”。嗯,它存在,为什么它从不使用它?

  • 根垃圾确实没有工作,至少不能开箱即用。以 root 身份打开 nautilus 并单击垃圾箱;它给出了一个错误。尝试删除任何文件,它说“它无法移至垃圾箱”。好的,我知道这可以通过创建/root/.local/share. 但是规范说“应该为任何新用户自动创建一个“主垃圾”目录。如果垃圾操作需要这个目录但不存在,则实现应该自动创建它,没有任何警告或延迟。 “。那为什么会出错呢?漏洞?

  • 为什么我必须更改/etc/fstab已安装卷的条目,添加 uid 和 guid 等选项,如果卷已为每个人安装为 RW?

这些只是偏离标准的一些例子。所以,问题是:

“如果 Ubuntu 没有 100% 遵守规范,垃圾究竟是如何工作的?我在哪里可以找到 Ubuntu 实施垃圾的技术参考?”

顺便说一句:如果 Ubuntu 确实遵循规范,请告诉我我做错了什么,特别是关于/.Trash-<uid>vs/.Trash/<uid>问题。

谢谢!

编辑:

更多信息:

  • 如果给定的 fs 不支持粘滞位(VFAT、NTFS),它可能也没有权限(至少 VFAT 肯定没有)。那么是什么阻止了一个用户清除/恢复其他用户的./Trash-xxx?如果一个人可以读/写自己的垃圾箱,那么可以对整个驱动器执行相同的操作,包括其他人的垃圾箱,对吗?还是 Gnome./Trash-xxx对 VFAT/NTFS fs上的文件夹有某种“额外”保护?

  • 如果 Linux 可以通过编辑/fstabuid 和 gid 选项来“模拟”NTFS 挂载的文件权限,它是否也可以“模拟”粘性位?我真的更喜欢使用/.Trash/xxx格式...

  • 对于 root 问题:对于 / 分区,我可以以 root 身份使用垃圾,然后转到/root/.local/share/Trash. 但是,如果我单击 Nautilus“垃圾箱”(以 root 身份),则会出现错误。不是吗?所以文件被正确删除,但我无法访问它。我所能做的就是手动“清除”它们(通过删除 上的文件/root/.local/share/Trash),但恢复将非常棘手(打开信息文件和手动移动等)。

  • 对于非 / 分区(或至少对于 VFAT/NTFS),我什至不能以 root 身份使用垃圾:它不会创建./Trash-0文件夹,它只是说“不能垃圾,想要永久删除?” 为什么?

  • 关于 fstab:我用它来永久安装我的 NTFS 分区。我有几个,如果不是“预先安装”,它们真的会使桌面和/或 Nautilus 变得混乱。我宁愿把它预先安装,集成在我的文件系统,像坐骑/data/windows/xp/windows/vista,等等,并留下/media其“挂载/卸载”灵活性只为真正的可移动驱动器。

因此,如果 Ubuntu/Gnome 真正遵循规范,有没有办法解决根本问题并“模拟”(至少)我的 fstab 的 NTFS 固定分区的粘性位?

Gus*_*uss 3

据我所知,GNOME 正在正确使用 .Trash - 如果您查看 gio/glocalfile.c 源代码,您会发现它确实尝试使用 .Trash 目录(如果存在)。请注意,该目录必须具有正确的权限,用户才能在其中安全地存储垃圾文件(在这里安全地,我的意思是其他用户将无法恢复用户的垃圾文件)。为此,GNOME 要求 .Trash 目录必须设置粘性位 - 请参阅 FreeDesktop.Org 垃圾箱规范中的垃圾箱目录,注释 (1)。

上述方法的主要问题是,您发现的大多数读/写可移动介质都是 FAT,它不支持粘滞位,因此安全处理此问题的唯一方法是使用每个用户的垃圾目录。

关于根垃圾 - 我无法重现您描述的问题,它似乎对我来说效果很好。

关于 /etc/fstab - 我不确定那里有什么问题:您应该需要乱搞 fstab,除非您想完全控制外部文件系统的安装位置。通常,可移动媒体在检测到 /media 中当前处于活动状态的用户后会自动安装,但任何其他用户都无法访问该媒体。如果您想要不同的设置,那么您应该修改配置文件。不过,我不明白这与垃圾有什么关系。