web-dev-qa-db-ja.com

lost + foundの削除不可能なディレクトリ

このディレクトリを削除するにはどうすればよいですか? fsckを実行しましたが、ゴミが見つかりました。これらのファイルを調べたところ、重要なものはありませんでした。だから私は/lost+foundの内容を削除しようとしましたが、この奇妙なディレクトリ以外はすべてなくなっています。 /tmp(ボリューム全体にそのディレクトリを移動できます)に置くと、次回の再起動時にそれが消去されますが、再起動と別のfsckの両方の後にまだ残っていると思いました。

問題は低レベルであり、所有権と権限で遊ぶだけでは十分ではないようですので、自分で問題を再現できるようにしました。お楽しみください!

  • これは安全です。マシン上のこれらのディレクトリを削除するためにイメージをアンマウントできます;
  • これはiso-imageではなく、これはdd if=/dev/sda1 of=/files/broken.isoの結果です;

〜1.2GBのイメージで15MBのアーカイブを作成しました。次のコマンドを使用して、ダウンロードしてそれを実行できます。

cd /tmp
wget https://dl.dropboxusercontent.com/u/22701362/broken.tar.xz
tar xvf broken.tar.xz
mkdir test
Sudo mount broken.iso test
cd test

2つのディレクトリがあります(そのイメージの作成中に、ディスクにそのようなディレクトリが2つあるように見えます)。

/tmp/test> tree
.
├── 1
│   └── plexus-component-annotations-1.5.5.jar.sha1 [error opening dir]
└── 2
    └── #1589030 [error opening dir]

4 directories, 0 files

これらの2つのディレクトリを削除してください。

/tmp/test> Sudo rm -rf *
rm: cannot remove '1/plexus-component-annotations-1.5.5.jar.sha1': Operation not permitted
rm: cannot remove '2/#1589030': Operation not permitted

/tmp/test> Sudo chown -R root:root *
chown: changing ownership of '1/plexus-component-annotations-1.5.5.jar.sha1': Operation not permitted
chown: cannot read directory '2/#1589030': Permission denied

/tmp/test> Sudo chmod -R 777 *
chmod: changing permissions of '1/plexus-component-annotations-1.5.5.jar.sha1': Operation not permitted
chmod: changing permissions of '2/#1589030': Operation not permitted
chmod: cannot read directory '2/#1589030': Permission denied
8
Grief

1つの可能性は、extファイルシステムの場合の不変フラグです。 lsattrコマンドの出力を参照してください。 iが存在する場合は、chattr -i filenameで削除できます

「i」属性を持つファイルは変更できません。削除または名前変更することはできません。このファイルへのリンクを作成することも、ファイルにデータを書き込むこともできません。この属性を設定またはクリアできるのは、スーパーユーザーまたはCAP_LINUX_IMMUTABLE機能を持つプロセスのみです。

この場合、何か他のことが起こっています

これはうまくいくようです、

> lsattr 1
-----a---------- 1/plexus-component-annotations-1.5.5.jar.sha1
> rmdir 1/plexus-component-annotations-1.5.5.jar.sha1
rmdir: failed to remove '1/plexus-component-annotations-1.5.5.jar.sha1': Operation not permitted
> chattr -a 1/plexus-component-annotations-1.5.5.jar.sha1
> rmdir 1/plexus-component-annotations-1.5.5.jar.sha1

> lsattr 2
---D-ad--j--T--- 2/#1589030 
> chattr -D -a -d -j -T 2/\#1589030
> rmdir 2/\#1589030
7
J.J. Hakala

それを削除するためにそれを所有するユーザーになってみてください

Sudo -u 6666 -g 19312 rm -rf ./#1589030
1
Amias