25291


<http://j-caw.co.jp/blog/?p=351> を見ていました。動画自体は、ルート(`/`) で `sudo rm -rf /`
を実行する、というものです。このページに添付されている動画に、その実行結果が表示されているのですが、いくつかのファイル・ディレクトリは、 `Cannot
remove` によって削除できないという旨が帰ってきています。

自分の理解ですと、`sudo rm -rf` を実行すれば、対象のファイルは必ず削除できるものだと思っていました。たとえば、 file を open
していても、 linux では rm が問題なく実行されます。(そしてすべての fd が閉じられたときに完全に削除)
なので、この動画の挙動がどうして発生するのか理解できずにいます。

質問:

  * sudo rm -rf で削除できないファイルとは、どのような状態のファイルですか？


CC BY-SA 3.0
2016-05-30T06:50:26.720
25289
2016-05-30T13:41:41.163
754
question
linux
sudo rm -rf で削除できないファイル・ディレクトリとは？


OSや、他の実行中のプロセスが握っていてロックがかかっているファイルではないでしょうか？


CC BY-SA 3.0
2016-05-30T07:00:34.917
25290
2016-05-30T07:00:34.917
25289
answer


動画でエラーになっているのは、[udev](https://ja.wikipedia.org/wiki/Udev)や[sysfs](https://ja.wikipedia.org/wiki/Sysfs)により仮想的にファイルとして見えている実在しないファイルですね。


CC BY-SA 3.0
2016-05-30T07:01:05.783
25291
2016-05-30T07:01:05.783
4010
25289
answer


まぁ動画とは関係ないですが、こんな物もあるということで参考になれば。

昔FreeBSDをかまっていた時に、rootでも消せないファイルがありました。  
「うぉーーー、なんで消せないんだーーー!!」と悩んだのですが、調べてみるとchflagsというコマンドで変更不可にされていたファイルでした。

…で終わっちゃうとオフトピなので、linuxでも似たようなものはないかな、と調べてみたら、「[chattr](https://linuxjm.osdn.jp/html/e2fsprogs/man1/chattr.1.html)」というコマンドがあるそうです。(ext2/3/4のファイルシステム限定だそうですけど)

[code]

    $ sudo mkdir hoge && sudo touch hoge/piyo
    $ sudo chattr +i hoge/piyo
    $ sudo rm -rf hoge
    rm: `hoge/piyo' を削除できません: 許可されていない操作です
    $ ls
    hoge
    $ sudo chattr -i hoge/piyo
    $ sudo rm -rf hoge
    $ ls
    $
    
[/code]


CC BY-SA 3.0
2016-05-30T13:41:41.163
25312
2016-05-30T13:41:41.163
15473
25289
answer