垃圾箱如何工作,我在哪里可以找到官方文档,参考或规范?
当尝试从已安装的NTFS卷管理垃圾箱时,我最终阅读了FreeDesktop.org的参考资料 。
我四处寻找并做了一些测试,我意识到Ubuntu / Gnome并没有遵循100%的规格。 原因如下:
-
对于非/分区,它总是使用
/.Trash-
,它从未使用/.Trash/
,即使我事先创建它。 虽然这有效,但这很烦人:如果我有15个用户,我最终在我的驱动器中有15个/.Trash-xxx
文件夹,而另一个方法仍然会给出一个文件夹(有15个子文件夹)。 我的驱动器中的“污染”是非常不愉快的。 规范说“ 如果没有$topdir/.Trash
目录,则使用$topdir/.Trash-$uid
目录 ”。 嗯,它存在,所以它为什么从不使用它? -
根垃圾不起作用,至少没有开箱即用。 以root身份打开nautilus并点击垃圾桶; 它给出了一个错误。 尝试删除任何文件,它说“它无法移动到垃圾箱”。 好的,我知道这可以通过创建
/root/.local/share
来解决。 但规格说“ A”家庭垃圾“目录应该为任何新用户自动创建。如果垃圾操作需要这个目录但不存在,实现应该自动创建它,没有任何警告或延迟。 ” 为什么错误呢? 错误? -
为什么我必须更改已安装卷的
/etc/fstab
条目,添加uid和guid等选项,如果这些卷已经作为RW安装在每个人的位置?
这些只是偏离标准的一些例子。 所以,问题是:
“如果Ubuntu没有100%遵守规范,垃圾箱究竟如何工作?我能在哪里找到Ubuntu实施垃圾箱的技术参考?”
顺便说一句:如果Ubuntu碰巧遵循规范,请告诉我我做错了什么,特别是关于/.Trash-
vs /.Trash/
问题。
谢谢!
编辑:
更多信息:
-
如果给定的fs不支持粘滞位(VFAT,NTFS),它可能也没有权限(至少VFAT肯定没有)。 那么是什么阻止了一个用户清除
/
恢复其他用户的./Trash-xxx
? 如果一个人可以读/写自己的垃圾桶,那么对于整个驱动器,包括其他垃圾可以做同样的事情,对吗? 或者Gnome对VFAT / NTFS fs上的./Trash-xxx
文件夹有什么“额外”保护? -
如果Linux可以通过编辑
/fstab
uid和gid选项“模拟”NTFS挂载的文件权限,它是否也可以“模拟”粘滞位? 我更愿意使用/.Trash/xxx
格式… -
对于root问题:对于/ partition,我可以将root用作root用户,然后转到
/root/.local/share/Trash
。 但是如果我点击Nautilus“Trash”(作为root),我会收到一个错误。 不是吗? 因此文件被正确删除,但我无法访问它。 我所能做的只是手动“清除”它们(通过删除/root/.local/share/Trash
文件),但恢复将非常棘手(打开信息文件和手动移动等)。 -
对于非/分区(或至少对于VFAT / NTFS),我甚至不能以root身份使用垃圾:它不会创建
./Trash-0
文件夹,只是说“不能垃圾,想要永久删除?” 为什么? -
关于fstab:我将它用于我的NTFS分区的永久挂载。 我有几个,如果没有“预先安装”它们真的使台式机和/或Nautilus混乱。 我宁愿预先安装,集成在我的文件系统中,安装在
/data
,/windows/xp
,/windows/vista
等等,并保留/media
及其“mount / unmount”灵活性真正的移动驱动器
所以,如果Ubuntu / Gnome真正遵循规范,有没有办法解决根问题并“模拟”(至少)我的fstab’ed NTFS固定分区的粘性位?
据我所知,GNOME正确使用.Trash – 如果查看gio / glocalfile.c源代码,你会发现它确实尝试使用.Trash目录(如果存在)。 请注意,目录必须具有正确的权限,以便用户能够安全地将垃圾文件存储在其中(并且安全地在这里,我的意思是其他用户将无法恢复用户的已删除文件)。 对于这个GNOME要求.Trash目录必须在其上设置粘滞位 – 请参阅垃圾目录,注意FreeDesktop.Org的垃圾桶规范中的注释(1)。
上述方法的主要问题是,您发现的大多数r / w可移动介质都是FAT,它不支持粘滞位,因此安全处理此问题的唯一方法是使用每用户垃圾目录。
关于root Trash – 我无法重现您描述的问题,它似乎对我有用。
关于/ etc / fstab – 我不确定那里有什么问题:除非你想要完全控制外部文件系统的安装位置,否则你应该需要使用fstab。 通常可移动媒体在检测到/媒体时为当前活动的用户自动安装,但是任何其他用户都无法访问。 如果你想要一个不同的设置,那么你应该搞乱配置文件。 但我不知道这与垃圾有什么关系。
有点晚了,但如果有人有兴趣:,我有同样的问题但是,根据建议我下载了Dolphin。 然后我在终点站通过sudo dolphin
运行Dolphin。
现在,右键单击Wastebin并选择Empty Wastebin清除文件而不是产生错误。
这与您的问题无关,而只是一种解决方法。