サーバーによって作成されたサブディレクトリでの setfacl の問題

サーバーによって作成されたサブディレクトリでの setfacl の問題

サーバーによって実行される PHP スクリプトによって作成されたフォルダーの親権限を継承する際に問題が発生しています。

デプロイヤー ユーザーを作成し、www-dataグループに追加して、初期フォルダーとファイル構成を以下のように設定しました。

usermod -a -G www-data deployer
chown -R www-data:www-data /var/www
chmod -R 0775 /var/www
find /var/www -type d -exec chmod 2775 {} +;   
find /var/www -type f -exec chmod 0664 {} +;

php5-fpm.conf以下のようにファイルを編集し、を追加しますumask 0002

umask 0002
pre-start exec /usr/lib/php5/php5-fpm-checkconf
respawn
exec /usr/sbin/php5-fpm --nodaemonize --fpm-config /etc/php5/fpm/php-fpm.co

そして、これは私の関連部分です/etc/php5/fpm/pool.d/www.confが、nginx ユーザーも ですwww-data

user  = www-data
group = www-data

listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0666

以下のようにsetfaclコマンドを実行しました。

setfacl -Rm u:www-data:rwx,u:deployer:rwx,g:www-data:rwx /var/www/site/storage
setfacl -Rdm u:www-data:rwx,u:deployer:rwx,g:www-data:rwx /var/www/site/storage

ただし、サーバーによって実行される PHP スクリプトが、デプロイヤー ユーザーによって作成されたストレージ フォルダー内にフォルダーを作成しようとすると、新しく作成されたフォルダーは親の権限を継承しません。

drwxrwsr-x+ deployer www-data storage
drwxr-sr-x+ www-data www-data storage-cache-folder 
drwxr-sr-x+ www-data www-data storage-cache-folder-subfolder

何が足りないのでしょうか?

答え1

私は PHP 開発者ではありませんが、システム管理者として、あなたが抱えている問題を解決する回避策があることをお伝えできます。PHP によって動的に作成されたファイルに特定の権限を与えるには、ACL を使用してデフォルトの権限を設定するか、PHP chmod を使用します。

   chmod($file, 0777); for example (change it whatever perm you'd like)

   setfacl -d -m o::rwx /var/www/site/storage (or add the group/user you'd like)

ACL -d オプションは、そのディレクトリをデフォルトで提供される/付与される権限として設定するため、そこに作成されるものはすべてそのデフォルトの権限を持ちます。

あなたが何を求めているかをよりよく理解するには、ここを確認してください:

   http://php.net/manual/en/function.umask.php

関連情報