acl - permisos - ¿Puedo modificar la propiedad de una carpeta compartida en vagabundo?
copiar carpeta compartida google drive (4)
@ john-syrinek
en 1.2+
config.vm.synced_folder "src/", "/srv/website",
owner: "root", group: "root"
http://docs.vagrantup.com/v2/synced-folders/basic_usage.html
Uso vagabundo y chef para desarrollar mi propio blog en una máquina virtual. Para tener un acceso fácil a la carpeta wordpress, creé una carpeta compartida.
Básicamente, la carpeta wordpress está en mi host y se monta como una carpeta compartida en / var / www / wordpress en la máquina virtual. La configuración es similar a:
config.vm.share_folder "foo", "/guest/path", "/host/path"
Mi problema es que la propiedad en mi máquina virtual siempre es vagrant:vagrant
incluso si la cambio en mi host. Los cambios de propiedad en la VM son ignorados.
No puedo usar chown
para establecer la propiedad del directorio de carga en www-data:www-data
.
Es posible usar chmod
y cambiar las restricciones de acceso a 777
, pero este es un hack realmente feo.
Esto es lo que realmente quiero. ¿Es posible?:
- Desarrollo: acceso a la carpeta compartida desde mi host.
- Restricción de acceso: en la máquina virtual, todos los archivos y carpetas deben tener restricciones de acceso y propiedad adecuadas y seguras.
Como @StephenKing sugiere que puede cambiar las opciones de todo el directorio.
La función relevante no está documentada, pero la fuente nos dice:
# File ''lib/vagrant/config/vm.rb'', line 53
def share_folder(name, guestpath, hostpath, opts=nil)
@shared_folders[name] = {
:guestpath => guestpath.to_s,
:hostpath => hostpath.to_s,
:create => false,
:owner => nil,
:group => nil,
:nfs => false,
:transient => false,
:extra => nil
}.merge(opts || {})
end
Básicamente puede establecer group, owner y acl para toda la carpeta, lo que es mucho mejor que configurar todo en World Writeable en el host. No he encontrado ningún método para cambiar la propiedad de un directorio anidado.
Aquí hay una solución rápida:
config.vm.share_folder "v-wordpress", "/var/www/wordpress", "/host/path", :owner => "www-data", :group => "www-data"
Puedes permitir cambiar la propiedad dentro del invitado:
config.vm.share_folder "foo", "/guest/path", "/host/path", {:extra => ''dmode=777,fmode=777''}
Siguiendo los consejos de @StephenKing y @aycokoster, tuve un caso de uso para montar otro directorio de solo lectura.
yo añadí
config.vm.share_folder "foo", "/guest/path", "/host/path", :extra => ''ro''
y
# discard exit status because chown `id -u vagrant`:`id -g vagrant` /host/path is okay
vagrant up || true