如何为 NFS 挂载启用垃圾?

如何为 NFS 挂载启用垃圾?

我的主机上的目录/home/users是连接到不受我控制的服务器的 NFS 安装。使用 Nautilus 删除$HOME( /home/users/foo) 中的文件时,我收到以下消息:

无法将文件移至废纸篓,是否立即删除?

无法将文件“...”移至废纸篓。

有没有办法为这个挂载点启用垃圾回收?我拥有该分区的写访问权限,但即使在创建预期/home/users/.Trash-$(id -u)并设置粘性位后,Nautilus 仍然无法使用垃圾回收。

阅读时这个问题垃圾桶规格我发现那$HOME/.local/share/Trash是标准位置(除非$XDG_DATA_HOME设置),而且看起来 Nautilus 对此只是一知半解:$HOME/.local/share/Trash/info/[filename]<.number>.trashinfo每次我尝试删除文件时它确实都会写入,但文件都是空的,我仍然不断收到错误消息。

答案1

您正在尝试为无法识别的文件系统设置权限。除非模拟,否则“删除”的系统功能不是基于 Linux 的位中使用的系统。当您告诉它删除时,它会尝试写入“垃圾箱”。您只是在移动东西。要删除它,您需要访问文件系统,而不是原始数据。它会将数据踢回,因为您只是要求它移动而不是删除,删除命令不在其掌控范围内。/无论您使用什么命令。

如果您可以在 samba 或任何您喜欢的环境中挂载服务器的分区/驱动器,则可以使用它们来删除。尝试虚拟挂载,并赋予权限。如果您只有读/写权限,但没有删除/移动权限,那么您将遇到麻烦。

答案2

uid=1000 en gid=1000是使垃圾桶正常工作所必需的。您可能需要以某种方式挂载它,是否可以在 SAMBA 中挂载它,如下面的 fstab 中所示?

UUID=***********   /media/DATA     ntfs-3g defaults, uid=1000, gid=1000,  locale=nl_NL.UTF-8    0        0

答案3

NFS 使用 UID(用户 ID)和 GID(组 ID)来获取权限,我相信您需要在本地和远程系统上匹配这些权限才能获得您描述的功能。这种情况不太可能发生,因为您声明“服务器不在我的控制之下”

资料来源: http://forums.openmediavault.org/index.php/Thread/5827-nfs-and-trash/ http://linux.die.net/man/5/exports

答案4

Nautilus 的垃圾桶看上去就像一个目录,但实际上由两部分组成。一部分用于存放本地文件(在每个 NFS 客户端上)$HOME/.local/share/Trash,另一部分用于存放 NFS 服务器上的共享文件,例如/home/users/.Trash-1002,其中/home/users/是共享分区,1002是数字用户 ID(作为示例)。

就像您的情况一样,您的 $HOME 目录/home/users/foo是共享分区的一部分/home/users,所有内容都是完全共享的,甚至本地文件也是如此,甚至本地垃圾桶也是如此。我可以想象这对 Nautilus 来说很令人困惑。使用哪个垃圾桶,共享的还是本地的?

也许您的管理员应该考虑将共享驱动器安装为(符号链接的)单独分区,同时将 $HOME 目录保留在每个客户端的本地。这样,即使服务器发生故障,用户仍然可以使用客户端,并且它允许在每个客户端上使用不同的发行版。最重要的是:您的垃圾桶将按预期工作。

例如(在每个客户端上):

/home/foo      {local storage, $HOME}
/nfs/users/foo {nfs mounted storage}

ln -s /nfs/users/foo /home/foo/my_share

在服务器上,您或您的管理员可以创建一个共享垃圾桶:

uid=$(id -u)
dir="/nfs/users/.Trash-$uid"
mkdir -m 02700 $dir
mkdir -m 00700 $dir/expunged
mkdir -m 02700 $dir/files
mkdir -m 02700 $dir/info
sudo chown -R $uid:$uid $dir

要激活,请在每个客户端上注销并重新登录。

相关内容