为已挂载的 ext4 分区启用垃圾

为已挂载的 ext4 分区启用垃圾

我想为多个用户安装一个带有子文件夹的 ext4 分区

/data
  user1/
  user2/
  ...

就像/home。因此我复制了 mount 的 fstab 条目/home

UUID=...   /data    ext4    defaults    0    2

手动创建挂载点

sudo mkdir /data

并创建具有适当权限的子文件夹:

sudo mkdir /data/user1 && chown user1:user1 /data/user1
sudo mkdir /data/user2 && chown user2:user2 /data/user2
...

虽然这允许用户在其子文件夹中创建文件,他们无法将其移至垃圾箱

我手动创建了该lost+found文件夹,但没有成功。

# ls -al /data/ | grep lost
drwx------  2 root        root        4096 Okt 15 11:55 lost+found

我需要做哪些更改才能启用垃圾箱?

答案1

垃圾目录需要以这种格式命名才能正常工作:.Trash-$UID 是否允许对已安装的分区进行‘移至垃圾箱’而不是‘永久删除’?

###############################################################################

根据这篇 archlinux 帖子指的是FreeDesktop 垃圾桶规格我们可以为每个用户使用位于顶部文件夹中的垃圾文件夹

/data
  .Trash-<user1.uid>
  .Trash-<user2.uid>
  ...

并由相应的用户拥有。

chown user1:user1 /data/.Trash-<user1.uid>
chown user2:user2 /data/.Trash-<user2.uid>
...

修改后,用户可以创建文件、将文件删除到垃圾箱以及恢复文件。

更新:您必须重新登录才能使其正常工作。

答案2

上述垃圾目录的正确格式是

.Trash-$UID

mkdir -p .Trash-$UID/{expunged,files,info}
chown $UID:$GID -Rv .Trash-$UID
chmod 750 -Rv .Trash-$UID

以上内容在 ubuntu、arch 和 fedora 中对我有用:

是否允许对已安装的分区进行‘移至垃圾箱’而不是‘永久删除’?

https://wiki.archlinux.org/title/Trash_management

https://bbs.archlinux.org/viewtopic.php?id=207042

答案3

我创建了一个名为mktrash.sh垃圾mkdir文件夹的脚本。

#!/bin/bash

if [ "$1" = "" ]; then
    echo "Parameter: <mount path> - the top directory"
    exit
fi

TRASH=$1/.Trash
UTRASH=$TRASH/$UID

echo Creating Trash Directory: $UTRASH
echo Ctrl-C to Cancel, Enter to Continue
echo You will need to enter your SUDO password for creating $TRASH
read VAR

sudo mkdir -v $TRASH
sudo chmod -v 1777 $TRASH
mkdir -v $UTRASH
chmod -v 700 $UTRASH

如果能对任何坐骑实现自动化,那就太好了。

一旦.Trash目录存在,新用户就应该自动添加,并且Trash全世界都可以写入。

相关内容