当我尝试从已安装的 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
。但规格说“应为任何新用户自动创建一个“主垃圾”目录。如果垃圾操作需要此目录但该目录不存在,则实现应自动创建它,而不会发出任何警告或延迟。“。那么为什么会出现错误?是 Bug 吗?/etc/fstab
如果卷已针对所有人作为 RW 安装,为什么我必须更改已安装卷的条目并添加 uid 和 guid 等选项?
这些只是偏离标准的一些例子。因此,问题是:
“如果 Ubuntu 没有 100% 遵守规范,那么确切地垃圾箱能用吗?在哪里可以找到有关 Ubuntu 垃圾箱实现的技术参考?
顺便说一句:如果 Ubuntu 确实遵循规范,请告诉我我做错了什么,特别是关于/.Trash-<uid>
vs/.Trash/<uid>
问题。
谢谢!
编辑:
更多信息:
如果给定文件系统不支持粘性位 (VFAT、NTFS),那么它可能也没有权限 (至少 VFAT 肯定不支持)。那么是什么阻止一个用户清除或
/
恢复其他用户的?如果一个人可以读/写他自己的垃圾,那么他就可以对整个驱动器(包括其他人的垃圾)执行相同的操作,对吗?或者 Gnome对 VFAT/NTFS 文件系统上的文件夹./Trash-xxx
有某种“额外”保护?./Trash-xxx
如果 Linux 可以通过编辑 uid 和 gid 选项来“模拟” NTFS 安装上的文件权限
/fstab
,那么它也可以“模拟”粘滞位吗?我真的更喜欢使用/.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 固定分区的粘滞位(至少)?
答案1
据我所知,GNOME 正确地使用了 .Trash - 如果您查看 gio/glocalfile.c 源代码,您会发现它确实会尝试使用 .Trash 目录(如果存在)。但请注意,该目录必须具有正确的权限,以便用户能够安全地在其中存储垃圾文件(这里所说的安全是指其他用户将无法恢复用户丢弃的文件)。为此,GNOME 要求 .Trash 目录必须设置粘滞位 - 请参阅 FreeDesktop.Org 的垃圾规范中的垃圾目录,注释 (1)。
上述方法的主要问题是,您发现的大多数 r/w 可移动媒体都是 FAT,它不支持粘滞位,因此安全处理此问题的唯一方法是使用每个用户的垃圾目录。
关于根垃圾 - 我无法重现您描述的问题,但它对我来说似乎运行良好。
关于 /etc/fstab - 我不确定那里有什么问题:除非您想完全控制外部文件系统的安装位置,否则您应该需要摆弄 fstab。通常,可移动媒体会在 /media 中检测到当前活动用户后自动安装,但其他用户则无法访问它。如果您想要不同的设置,那么您应该摆弄配置文件。不过,我不明白这与垃圾有什么关系。
答案2
有点晚了,但如果有人感兴趣的话:,我遇到了同样的问题,但根据建议,我下载了 Dolphin。然后我sudo dolphin
在终端中运行了 Dolphin。
现在,右键单击垃圾箱并选择清空垃圾箱清除文件而不是产生错误。
这实际上与您的问题无关,而只是一种解决方法。