app/cache/
ディレクトリのアクセス許可を 0775 (ファイルは 664) に設定しました。そして、所有者を root:www-data にします。これは機能しますが、キャッシュをクリアすると、パーミッションが 0755 (ファイルは 644) になり、所有者は root:root になります。これを行うことになっています:
$ rm -rf app/cache/*
$ rm -rf app/logs/*
$ APACHEUSER=`ps aux | grep -E '[a]pache|[h]ttpd' | grep -v root | head -1 | cut -d\ -f1`
$ sudo chmod +a "$APACHEUSER allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
またはこれ:
$ APACHEUSER=`ps aux | grep -E '[a]pache|[h]ttpd' | grep -v root | head -1 | cut -d\ -f1`
$ sudo setfacl -R -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs
$ sudo setfacl -dR -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs
しかし、私の VPS では acl が機能せず、次のように変更できません: serverfault question。私は Symfony2 のドキュメントでこれを見てきました:
Without using ACL
If you don't have access to changing the ACL of the directories, you will need to change the umask so that the cache and log directories will be group-writable or world-writable (depending if the web server user and the command line user are in the same group or not). To achieve this, put the following line at the beginning of the app/console, web/app.php and web/app_dev.php files:
umask(0002); // This will let the permissions be 0775
// or
umask(0000); // This will let the permissions be 0777
Note that using the ACL is recommended when you have access to them on your server because changing the umask is not thread-safe.
質問は次のとおり
です。ACL を使用せずにアクセス許可を適切に設定するより安全な方法はありますか?
使用方法は危険ですか?umask
. この場合、「スレッドセーフではない」とはどういう意味ですか?