Puedo modificar la propiedad de una carpeta compartida en vagrant?
Utilizo vagranty chef para desarrollar mi propio blog en una máquina virtual. Para tener fácil acceso a la carpeta de Wordpress he creado una carpeta compartida.
Básicamente la carpeta de wordpress está en mi host y se monta como 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 VM siempre es vagrant:vagrant
incluso si la cambio en mi host. Los cambios de propiedad en la máquina virtual se ignoran.
I no se puede 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 truco realmente feo.
Esto es lo que realmente quiero. Es esto 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 propiedad y acceso adecuadas y seguras.
4 answers
Como @StephenKing sugiere, 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 establecer todo en world writable en el host. No he encontrado ningún método para cambiar la propiedad de un directorio anidado.
Aquí hay un quickfix:
config.vm.share_folder "v-wordpress", "/var/www/wordpress", "/host/path", :owner => "www-data", :group => "www-data"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-14 13:02:24
@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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-31 12:16:40
Puede permitir cambiar la propiedad dentro del invitado:
config.vm.share_folder "foo", "/guest/path", "/host/path", {:extra => 'dmode=777,fmode=777'}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-26 15:55:06
Siguiendo los consejos increíbles de @StephenKing y @aycokoster, tuve un caso de uso para montar otro directorio de solo lectura.
He añadido
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-05 17:23:07