exécuter setfacl sur un répertoire partagé vagabond

10

Essayer de faire fonctionner un projet Symfony2 avec une VM vagabonde. J'ai vu des millions d'articles à ce sujet, mais obtenir correctement le répertoire de cache se révèle être atrocement douloureux.

Dans mon Vagrantfile:

config.vm.share_folder("src", "/var/www", "../www")

fstabFichier de ma VM :

proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/ubuntu--1110-root /               ext4    acl,errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=4ed7eaaf-6f42-48ba-b5ed-f0c1df9add38 /boot           ext2    defaults        0       2
/dev/mapper/ubuntu--1110-swap_1 none            swap    sw              0       0

Le package acl a été installé sur la machine virtuelle.

Lorsque j'exécute ce qui suit dans / var / www selon les instructions d'installation de Symfony2:

 sudo setfacl -R -m u:apache:rwx -m u:username:rwx app/cache app/logs

Je reçois:

Opération non prise en charge

Je peux exécuter la commande sur n'importe quel autre répertoire ou fichier sur le FS (en dehors du répertoire partagé) et la commande fonctionne. Ce qui donne?

Josh Nankin
la source
Cela n'a pas résolu le problème réel, mais a exécuté ce travail pour l'instant: stackoverflow.com/questions/7357120/…
Josh Nankin

Réponses:

6

Pour contourner tous les problèmes d'autorisation avec Symfony2 et Vagrant, la solution la plus simple est de changer l'utilisateur et le groupe exécutant apache en vagrant. Pour ce faire, éditez le fichier / etc / apache2 / envvars et remplacez les lignes 16 et 17 par celles-ci: export APACHE_RUN_USER = vagrant export APACHE_RUN_GROUP = vagrant Notez que ces instructions concernent Apache 2.2 sur Ubuntu, reportez-vous à votre version Apache et OS à faire donc.

Si vous ne voulez pas changer d'utilisateur et de groupe apache, vous pouvez également monter un ramdisk et y placer votre projet symfony. Vagrant peut alors modifier les autorisations sur ce disque. Consultez ce lien pour obtenir des instructions sur la façon de monter un disque virtuel.

jfcartier
la source
3

Une meilleure solution consiste à remplacer les attributs. Voir le wiki Opscode .

Par exemple, dans une définition de rôles:

override_attributes({
    "apache" => {
      "user" => "vagrant",
      "group" => "vagrant"
    }
})

J'ai eu le même problème avec Typo3 dans un dossier partagé, ne parvenant pas à créer des fichiers temporaires.

Martin Lauer
la source