ユーザーが自分のディレクトリで作業するときいいえ読み取り権限がある場合、cdを使用すると、サブディレクトリが存在するかどうかによって異なるエラーメッセージが生成されます。
$ ls
ls: cannot open directory .: Permission denied
$ cd nonexistentdirectory
-bash: cd: nonexistentdirectory: No such file or directory
$ cd existingdirectory
-bash: cd: username: Permission denied
これは質問です:ユーザーが読み取り権限なしでこの方法でリストされたディレクトリを無差別に代入できるのはセキュリティ上の欠陥ですか?もしそうなら、これはUNIXまたはBashの欠陥ですか?
答え1
機能は正常に動作するため、これはセキュリティ上の欠陥ではありません。 (この機能がほとんど偶然に登場したことを考えると、これは驚くべきことではありません。)
ユーザーがディレクトリに対する実行権限を持っているが読み取り権限がない場合、ユーザーはディレクトリ名のみを知っていると、ディレクトリ内のすべてのエントリにアクセスできます。このアクセスには、名前、タイプ、サイズ、日付など、アイテムのすべてのメタデータが含まれます。したがって、ユーザーは、存在しないアイテムと自分がアクセスできないコンテンツを含む既存のアイテムを区別できます。
項目名はパスワードと同じです。パスワードを知ると、その項目にアクセスできます。エントリには追加のアクセス制限があるかもしれませんが、これは関係のない質問です。可能なすべてのパスワードを試して、いつでも無差別パスワード認証を実行できます。
--xディレクトリのエントリに関する情報を公開したくない場合は、推測できない名前(つまり、十分に長い任意の名前)を使用してください。
答え2
はい、Unixファイルとディレクトリ権限が定義され実装されている方法のセキュリティ上の欠陥と考えることができます。これは妥協案です。たとえば、ユーザーがパスを知っている場合は、制限された階層内のディレクトリへのアクセス権をユーザーに付与できます。
回避策は、制限されたディレクトリをネストして非常に重要な情報にアクセスするために複数のコンポーネントを推測する必要があることです。しかし、もちろん、これは実際にセキュリティを強化するものではなく、ぼやけているだけです。
ユーザーはとにかくroot
これらの制限を迂回する可能性があるため、それでも特に安全ではありません。合理的なセキュリティが必要な場合は、マルチユーザーシステムが適切ではない可能性があります。