web-dev-qa-db-ja.com

`/`の下に作成されたゴミを管理するにはどうすればよいですか?

前回ファイルをゴミ箱に移動しました

$ pwd
/tmp/test
$ trash mfile 
trash: cannot trash regular file `mfile'
$ Sudo trash mfile 
$

そしてファイルは入りました

$ Sudo ls /.Trash/0/files -la
total 12
drwx------ 2 root root 4096 May 19 16:52 .
drwx------ 4 root root 4096 May 19 16:52 ..
-rw-rw-r-- 1 t    t       6 May 19 16:48 mfile
  1. 今、私はゴミ箱を空にすることはできません:

    $ Sudo trash-empty 
    $ Sudo ls /.Trash/0/files -la
    total 12
    drwx------ 2 root root 4096 May 19 16:52 .
    drwx------ 4 root root 4096 May 19 16:52 ..
    -rw-rw-r-- 1 t    t       6 May 19 16:48 mfile
    

    どうすればゴミ箱を空にできますか?

  2. そのゴミ箱にファイルをリストすることもできません

    $ Sudo trash-list
    [Sudo] password for t: 
    TrashDir skipped because parent not sticky: /.Trash/0
    

    ありがとう。

5
Tim

この問題の根本的な原因は、マウントされたパーティション用にごみ箱フォルダを作成するときに、 スティッキービット を設定しなくても作成できることだと思います。これは、 "system_internal"マウントパス のいずれかにマウントする場合に当てはまるようです trash-cli に対するこの問題と、シークレットを追加する回避策に関してバグが報告されています--trash-dirオプションがコミットでtrash-empty(2a83ed5)に追加され、スティッキービットチェックをバイパスしてtrash-emptyが指定されたディレクトリを空にできるようになりました。この手がかりは、私たちを最も簡単な解決策に導きます。コマンドchmod +t /mount/point/.Trashを使用して、問題のごみ箱フォルダにスティッキービットを設定するだけです。これにより、ごみ箱が意図したとおりに機能するようになります。 Ubuntu16.04とUbuntu18.04の/srv/home/media/$USER/VolumeNameにマウントされたパーティションでこのアプローチをテストしたところ、期待どおりの結果が得られました。このアプローチは他の `nixesでも機能することを期待しています。

注:このアプローチは、NTFSやFATなどのスティッキービットの設定をサポートしていないファイルシステムでは機能しませんが、EXT2/3 /ではうまく機能します。 4つのファイルシステム。

これらの "system_internal"マウントパスのリストは次のとおりです:

 "/",              /* we already have "Filesystem root" in Nautilus */ 
    "/bin",
    "/boot",
    "/compat/linux/proc",
    "/compat/linux/sys",
    "/dev",
    "/etc",
    "/home",
    "/lib",
    "/lib64",
    "/libexec",
    "/live/cow",
    "/live/image",
    "/media",
    "/mnt",
    "/opt",
    "/rescue",
    "/root",
    "/sbin",
    "/srv",
    "/tmp",
    "/usr",
    "/usr/X11R6",
    "/usr/local",
    "/usr/obj",
    "/usr/ports",
    "/usr/src",
    "/usr/xobj",
    "/var",
    "/var/crash",
    "/var/local",
    "/var/log",
    "/var/log/audit", /* https://bugzilla.redhat.com/show_bug.cgi?id=333041 */
    "/var/mail",
    "/var/run",
    "/var/tmp",       /* https://bugzilla.redhat.com/show_bug.cgi?id=335241 */
    "/proc",
    "/sbin",
    "/net",
    "/sys",

出典:

https://github.com/andreafrancia/trash-cli/issues/65

https://www.linuxquestions.org/questions/linux-desktop-74/how-do-empty-view-trash-files-on-mounted-volumes-899188/

https://en.wikipedia.org/wiki/Sticky_bit

2
Elder Geek

-rおよび-fスイッチを含むrmコマンドで削除するだけです。これらは、ごみ箱に入れられたファイルへのディレクトリ(r)とシンボリックリンク(f)を削除します。

rm -rf /.Trash/0/files/*

グロブ展開(*)を忘れないでください。そうしないと、ごみ箱ディレクトリが削除されます。

echo "alias empty='rm -rf /.Trash/0/files/*'" >> ~/.bashrc

これによりエイリアスが作成されるため、コマンドemptyを使用してゴミ箱を空にすることができます。

0
Linux Lover