ejecutando setfacl en un directorio compartido vagabundo

10

Intentando poner en marcha un proyecto de Symfony2 con una VM vagabunda. He visto millones de artículos sobre esto, pero obtener el permiso del directorio de caché correctamente está resultando insoportablemente doloroso.

En mi Vagrantfile:

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

El fstabarchivo de mi 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

El paquete acl se ha instalado en la VM.

Cuando ejecuto lo siguiente en / var / www según las instrucciones de instalación de Symfony2:

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

Yo obtengo:

Operación no admitida

Puedo ejecutar el comando en cualquier otro directorio o archivo en el FS (fuera del directorio compartido) y el comando funciona. ¿Lo que da?

Josh Nankin
fuente
Esto no resolvió el problema real, pero ejecutó esta solución por ahora: stackoverflow.com/questions/7357120/…
Josh Nankin

Respuestas:

6

Para evitar todos los problemas de permisos con Symfony2 y Vagrant, la solución más fácil es cambiar el usuario y el grupo que ejecuta apache a vagabundo. Para hacerlo, edite el archivo / etc / apache2 / envvars y reemplace las líneas 16 y 17 con estas: export APACHE_RUN_USER = vagrant export APACHE_RUN_GROUP = vagrant Tenga en cuenta que estas instrucciones son para apache 2.2 en Ubuntu, consulte su versión de apache y OS para hacerlo entonces.

Si no desea cambiar el usuario y el grupo de Apache, también puede montar un ramdisk y poner su proyecto de Symfony en él. Entonces vagabundo puede modificar los permisos en este disco. Consulte este enlace para obtener instrucciones sobre cómo montar un disco RAM.

jfcartier
fuente
3

Una mejor solución es utilizar la anulación de atributos. Ver Opscode Wiki .

Por ejemplo, en una definición de roles:

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

Tuve el mismo problema con Typo3 en una carpeta compartida, al no poder crear archivos temporales.

Martin Lauer
fuente