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にしていたので気付くのが遅れた。