Les ACL, il n'y a rien de bien compliqué. Sous Capistrano, génère une nouvelle task qui s'éxécutera uniquement avant le deploy:publishing :
Je ne te conseilles pas d'utiliser les ACL par défaut, à savoir cette commande :
Seulement celle affectant l'utilisateur suffit, donc tu dois juste effectuer un sudo setfacl -R -m u:www-data:rwX app/cache app/logs. Ton utilisateur perso n'a pas besoin d'avoir les droits étant donné que tu déploies ton code par Capistrano. L'utilisateur qui déploie aura donc forcément les droits sur les répertoires étant donné que c'est lui qui doit lancer un composer install. De ce fait, l'ACL te permet d'assigner d'autres permissions que celles mises par défaut (si tu suis les normes Capistrano, ton utilisateur qui publie doit être deploy, donc l'utilisateur deploy a droit de lecture, écriture et exécution sur tes dossiers, alors que www-data non. Donc tu veux que deploy et www-data aient les mêmes droits, ce qui justifie l'utilisation des ACL). Une autre solution sera de faire un chown -R www-data sur les dossiers mais lors de la suppression des vieilles release, tu auras une erreur lors du rm étant donné que deploy ne sera plus titulaire du dossier.
J'espère avoir été assez clair dans mes explications...