伺服器建立的子目錄上的 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

相關內容