GNU/Linux >> Linux の 問題 >  >> Linux

なぜRm-rfであり、Rmdir -rfではないのですか?

ディレクトリ内のすべてを削除するコマンドがrm -rfである理由をいつも知りたいと思っていました。 。

rmdirで同じことを行うためのフラグがないのはなぜですか ?

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

承認された回答:

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

これらの保護は、ファイルシステム構造の一貫性を維持するために実施されました。たとえば、ユーザーがディレクトリ特殊ファイルへの書き込みを許可されている場合、その親ディレクトリを..にすることができます。 それ自体(具体的にはそれ自体のiノード)を指します。これにより、ファイルシステムに循環参照が作成されますが、これは悪いことです。もちろん、他にも矛盾が生じる可能性がありますが、これは明確な例にすぎません。

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

しばらくしてからmkdir(2) およびrmdir(2) 独自のシステムコールとして追加されましたが、rm(1)間の関係 およびrmdir(1) 残ります。

個人的には、rmdir junkの方が少し満足できると思います。 そして、私がした最悪の事態は、空のディレクトリを削除することでした。


Linux
  1. なぜデイスとそれは何ですか?

  2. 恐ろしい 'rm -rf /' さえ許可されているのはなぜですか?

  3. sftp rmdir が機能しないのはなぜですか?

  1. パスワードハッシュとその必要性

  2. cpを取得する理由:Linuxでのディレクトリエラーの省略と解決方法

  3. chown を使用してディレクトリのグループ所有者を変更することは許可されていません....なぜですか?

  1. $var対${var}そして引用するか引用しないか?

  2. なぜCdはプログラムではないのですか?

  3. Linux –なぜSuだけでなくSuを使用するのですか?