私が言及しているのは以下のことですArch Linux アクセス制御リストのドキュメント
それは次のように述べています。
ウェブサーバーにプライベートファイルの実行権限を付与する
次の手法では、全世界にアクセスを許可することでセキュリティを損なうことなく、Web サーバーなどのプロセスにユーザーのホーム ディレクトリにあるファイルへのアクセスを許可する方法について説明します。
以下では、Web サーバーがユーザー http として実行され、geoffrey のホーム ディレクトリ /home/geoffrey へのアクセスを許可することを前提としています。
最初のステップは、ユーザー http に実行権限を付与することです。
setfacl -m "u:http:--x" /home/geoffrey
注意: プロセスがディレクトリの内容を一覧表示するには、ディレクトリに対する実行権限が必要です。
したがって、上記の例では、/home/geoffrey ディレクトリの http ユーザーの実行権限を設定しています。私の理解では、ディレクトリの実行ビットのみを付与しても、ディレクトリの内容を一覧表示することはできませんが、ファイルにはアクセスできます (ファイルの名前がわかっていて、ディレクトリ内の特定のファイルの権限が適切な権限セットになっている場合)。では、setfacl -m "u:http:--x" /home/geoffrey
http ユーザー (または参照されるプロセス) でディレクトリの内容を一覧表示できるのはなぜでしょうか。何が足りないのでしょうか。
よろしくお願いします!
答え1
ディレクトリとその中のファイルにアクセスするには、ディレクトリに対する権限が必要です-x
。ただし、ディレクトリの下のファイルへのアクセスは、ディレクトリ自体ではなく、ファイルの権限に依存します。親 (ディレクトリ) に対する実行権限を持っている限り、そのディレクトリに含まれるファイルにアクセスするために他に何も必要ありません。これは、次の例で簡単に説明できます。
$ sudo mkdir dir1 && echo "Hello world!" | sudo tee dir1/file1 && sudo chmod 700 dir1
Hello world!
$ ls -ld dir1/
drwx------ 2 root root 4096 Apr 12 16:09 dir1/
$ sudo ls -l dir1/
total 4
-rw-r--r-- 1 root root 13 Apr 12 16:09 file1
アクセス権を持っているのは だけなroot
ので、ディレクトリの内容を一覧表示したり、ファイルを cat で実行しようとすると失敗します。
$ ls dir1/
ls: cannot open directory 'dir1/': Permission denied
$ cat dir1/file1
cat: dir1/file1: Permission denied
ファイルへの読み取りアクセス権があるにもかかわらず、が失敗することに注目してくださいcat
。ここで、ユーザーにディレクトリへの実行アクセス権を与えて再試行すると、ファイルを読み取ることができます。
$ sudo chmod 711 dir1/
$ ls -l
total 4
drwx--x--x 2 root root 4096 Apr 12 16:09 dir1
$ cat dir1/file1
Hello world!
ディレクトリの内容を一覧表示するにはディレクトリへの読み取りアクセスが必要なので、まだ表示できませんが、パスがわかっていればディレクトリ内の任意のファイルを読み取ることができるようになりました。
つまり、基本的な考え方は正しいのですが、最後の注釈がわかりにくいのです。内容を一覧表示するには読み取りアクセスが必要ですが、http
パスがわかっている特定のファイルへのアクセス権をユーザーに付与するだけでよい場合は、実行アクセスで十分です。
言い回しは悪いですが、メモ自体が間違っているわけではなく、単に不完全であるだけです。完全にディレクトリの内容を一覧表示します。これらがないと、ファイル名は表示されますが、属性は表示されません。
$ ls -l
total 4
drwxr--r-- 2 root root 4096 Apr 12 16:09 dir1
$ ls -l dir1/
ls: cannot access 'dir1/file1': Permission denied
total 0
-????????? ? ? ? ? ? file1
答え2
何も見逃していません。このドキュメントの大部分は正しいのですが、注記が間違っています。
ホーム ディレクトリを越えて別のディレクトリに移動できます。その別のディレクトリは読み取り可能で移動可能な場合があり、その内容が一覧表示されます。
家を横断のみ可能にするのは良いアイデアだと思いますが、あなたの言う通り、それが何をするのかという説明が間違っています。
- ディレクトリ内のファイル名を一覧表示するには、読み取り権限が必要です。
stat
ファイルへのクロス権限が必要です(ファイルに関する情報を確認したり、ファイルを開くことができます)。
バグレポートを提出しましたか?