WARNING: [pool www] ACL set, listen.owner = 'nginx' is ignored

php-fpmが下記ログを出力してたので調査したときの覚書。

WARNING: [pool www] ACL set, listen.owner = 'nginx' is ignored

環境: CentOS Stream 8, nginx 1.20.1, php 7.4.6


設定ファイルに記載されている。
# less /etc/php-fpm.d/www.conf

; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
listen.acl_users = apache,nginx
;listen.acl_groups =

acl_usersが有効の場合、 listen.ownerとlisten.groupが無視される。

CentOS8のdnf module listからPHPをインストールするとlisten.acl_usersが有効になっている。
CentOS7のremiリポジトリからインストールしたPHPはコメントアウトされていた。


ACL(POSIX Access Control Lists)とは

従来の3bitでのパーミッション管理(所有者・グループ・その他)を拡張したアクセス権限管理。
Windowsサーバー環境をLinuxサーバー環境へ置き換える場合に有用らしい。
カーネル2.6からサポート。

現在のカーネルのバージョン確認
# uname -r

ACLのアクセス権限を確認するにはgetfaclコマンドを使う
# getfacl /run/php-fpm/www.sock

getfacl: Removing leading '/' from absolute path names
# file: run/php-fpm/www.sock
# owner: root
# group: root
user::rw-
user:apache:rw-
user:nginx:rw-
group::rw-
mask::rw-
other::---

従来のパーミッション管理で十分なのでlisten.acl_usersをコメントアウトする。

# less /etc/php-fpm.d/www.conf

;listen.acl_users = apache,nginx

php-fpm再起動して確認
# systemctl restart php-fpm
# systemctl status php-fpm

ちなみにこれでgetfaclしてみる。
# getfacl /run/php-fpm/www.sock

getfacl: Removing leading '/' from absolute path names
# file: run/php-fpm/www.sock
# owner: nginx
# group: www
user::rw-
group::rw-
other::---

たまたまweb serverの実行ユーザーをnginxにしていたので気付くのが遅れた。


【関連記事】