【Linux】POSIX ACL とは

php-fpm のUnixドメインソケットのオーナーをapacheに変更したら、 よくわからんワーニングが出た。

listen.owner = apache
listen.group = apache
listen.mode = 0660
May 29 13:43:04 ip-172-30-2-142 php-fpm: [29-May-2018 13:43:04] WARNING: [pool www] ACL set, listen.owner = 'apache' is ignored
May 29 13:43:04 ip-172-30-2-142 php-fpm: [29-May-2018 13:43:04] WARNING: [pool www] ACL set, listen.group = 'apache' is ignored

ソケットの所有者を確認したら、root限定だった。

# ll /run/php-fpm/www.sock
srw-rw----+ 1 root root 0  6月  6 15:24 /run/php-fpm/www.sock

でもapacheユーザーで動いてるwebサーバーからソケット使えてるし??? ACLとは???

なるほど、従来の所有権・パーミッションによるアクセス制限を発展させた機能らしい。 1ミリも知らんかった。

この設定で、POSIX ACL を設定しているらしい。

listen.acl_users = apache,nginx
# 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::---

わかりにくい……

# POSIX ACL未設定の普通のファイル
# ll /etc/php-fpm.conf
-rw-r--r-- 1 root root 4024 12月 13 12:45 /etc/php-fpm.conf

# ls に + があったら要注意
# ll /run/php-fpm/www.sock
srw-rw----+ 1 root root 0  6月  6 15:24 /run/php-fpm/www.sock