何年もの間Linuxで働いており、自由な時間を自分自身で見つけたので、いくつかの基本を再訪することにしました。だから私は権限に関するもの(ソースコードをチェックせずに)とそのフォルダーの特別なケースを読み直し、(特定のユーザー/の)フォルダーの権限について新しい(少なくとも私には...)考え方を思いついたgroup / others):次のように、フォルダーを2列のテーブルとして想像します。
filename | inode
foo | 111
bar | 222
読み取り権限あなたが読むことができる手段(およびリスト)表の左欄、書き込みテーブルにエントリを追加したり削除する権限の対応、および実行 iノードにファイル名から変換することができることに許可相当し; つまり、フォルダのコンテンツにアクセスできます。
私はいくつかの実験を行いましたが、結果はすべて私の「世界観」と一致していますが、1つの結論は避けられないようd-w-------
です。権限を持つフォルダはまったく役に立たないということです。詳しく説明する:その内容を一覧表示できない、内部に存在することがわかっているファイルを読み取ることができない(名前をiノードに変換できないため)、ファイルを削除または名前変更または追加することはできません。 、およびハードリンクを追加することもできません(おそらく、これは名前とiノード番号を追加することを意味します。つまり、両方を知っていることになります。つまり、両方を知っているため、実行権限の設定を解除する目的に違反しています)。 。そこにあればもちろん、ある一つのこのようなフォルダ内のファイルは、あなたがその内容を削除することはできませんので、あなたは、どちらか、そのフォルダを削除することはできません。
だから...私は2つの質問をしたいと思います:
- 私のこの類推は正しいですか、それとも大きな失敗ですか?
- 前の回答とは無関係には、そこにある任意の説明に従って権限でフォルダを持つことが適切である状況は?
mkdir foo ; chmod 200 foo ; touch foo/bar
私が得た後touch: cannot touch ‘foo/bar’: Permission denied
。これは、foo / barがすでに存在する場合でも発生します。私はbash(Arch Linux)でテストしています。