www-data ユーザーの ACL が r-- に設定されていますが、Apache (PHP) はまだファイルを読み取ることができません

www-data ユーザーの ACL が r-- に設定されていますが、Apache (PHP) はまだファイルを読み取ることができません

私の PHP スクリプトは、まったく別のディレクトリにあるいくつかのファイルにアクセスする必要があります。

www-data ユーザーの ACL に読み取り権限を設定しましたが、PHP の file_get_contets() 関数は「権限が拒否されました」というエラーを返します。

これは、そのディレクトリに www-data ユーザーまたはグループを設定した場合にのみ機能しますが、ACL が設定されたユーザーで実行されているプログラムに影響を与えず、所有権を設定することがこれを行う唯一の方法である場合を除いて、これを行いたくありません。

ACL リスト:

# owner: user1
# group: group1
# flags: -s-
user::rwx
group::rwx
other::---
default:user::rwx
default:user:www-data:rwx
default:user:user1:rwx
default:user:user2:rwx
default:group::rwx
default:mask::rwx
default:other::---

前もって感謝します

答え1

出力には、ディレクトリに「デフォルト」(継承可能)ACLが設定されているが、「通常」(有効)ACLが設定されていないことが示されています。言い換えると、プレフィックスが付けられたエントリは、default:新しく作成されたファイルにコピーするためにのみ存在しますが、しないでくださいこのディレクトリ自体にすぐに適用されます。

したがって、有効な権限はこれらだけであり、ユーザー「www-data」および「user2」に一致する唯一の ACE は、other::---権限をまったく付与しない汎用エントリです。

# 所有者: ユーザー1
# グループ: グループ1
# フラグ: -s-
ユーザー::rwx
グループ::rwx
他の:: - -

「www-data」は、ディレクトリに対して +x (トラバース) 権限を付与するどの ACE にも一致しないため、その権限が何であっても、内部のファイルにアクセスすることはできません。

これを修正するには、今度は「default」フラグを追加せずに ACL を再度設定します。

setfacl -m "u:www-data:rwx" the_directory

関連情報