rmdir -rfの代わりにrm -rfを使用する理由

rmdir -rfの代わりにrm -rfを使用する理由

私はディレクトリ内のすべてを削除するコマンドがなぜrm -rf

同じことをするフラグはなぜありませんかrmdir

rmdirディレクトリ操作で使用する方が直感的ではないでしょうか?

ベストアンサー1

初期のUnixファイルシステム(少なくとも1970年頃のV7時代)では、ディレクトリは特別なファイルとして実装されており、ルートのみを生成したmknod(2)システムコールを使用でき、ルートのみのディレクトリunlink(2)特殊ファイルを作成できました。

これらの保護措置は、ファイルシステム構造の一貫性を維持するために行われます。たとえば、ユーザーがディレクトリ特殊ファイルを作成できる場合、ユーザーは自分..の親ディレクトリが自分(特に自分のiノード)を指すようにすることができます。これにより、ファイルシステムに循環参照が生成され、悪いことになります。もちろん、他の不一致が発生する可能性もあります。これはただ一つの明らかな例です。

一貫性は、権限のないユーザーに代わって特権システムコールを実行できるように、Set-UIDルートやmkdir(1)Set-UIDなどのユーザースペースプログラムによって維持されます。rmdir(1)再帰的に追加されると、rm(1)削除コマンドは現在のUIDで実行され、空のディレクトリを削除するrmdir(1)ためにのみ呼び出されます。これは特権の上昇に対するかなり標準的なアプローチです。必要以上の権限を使用しないでください。

しばらくすると、独自のmkdir(2)システムコールが追加されましたが、rmdir(2)間の関係はまだ存在します。rm(1)rmdir(1)

個人的には、私はこれがより満足していると思い、rmdir junk私ができる最悪のことは空のディレクトリを削除することです。

おすすめ記事