Alterando permissões em uma montagem NFS + compartilhando diretórios com uma VM guest

1

Estou criando um ambiente de desenvolvimento em que as pastas de um ambiente host (OSX) são montadas em VMs do VirtualBox que executam convidados do Ubuntu.

Nossa experiência é que os diretórios compartilhados diretos do VirtualBox são muito lentos, então normalmente fizemos isso montando o diretório como uma montagem NFS dentro do guest. A edição em tempo real do ambiente host é um requisito.

O problema é que operações como chown e chgrp falham, e precisamos replicar algo próximo ao nosso ambiente de produção (por exemplo, www-data possuindo os arquivos usados pelo Apache).

bindfs parecia uma possibilidade promissora:

bindfs - mirrors or overlays a local directory with altered permissions

Mas não parece ser possível alterar as permissões com utilitários nativos do Unix e chamadas do sistema. Isso não funcionará para mim, já que preciso integrar com os sistemas de gerenciamento de configuração existentes (Salt, Puppet) que provisionam as caixas.

Existe alguma outra maneira de fazer com que uma montagem do NFS pareça um diretório regular no que diz respeito às permissões? Ou outra alternativa para montar um diretório em uma VM VirtualBox?

EDITAR : Aqui está a saída do mount:

192.168.34.1:/Users/$me/src/states /etc/apps/state type nfs (rw,vers=3,addr=192.168.34.1)
192.168.34.1:/Users/$me/src/apps on /srv/apps type nfs (rw,vers=3,addr=192.168.34.1)

Quando digo que a alteração de permissões "falha", quero dizer que recebo erros de "operação não permitida".

Por exemplo:

$ ls -l /srv/www
total 8
drwxrwxr-x 4 501 dialout 136 May 31 16:20 default_vhost
drwxrwxr-x 5 501 dialout 170 May 31 16:20 default_vhost_ssl
$ chown root /srv/www/*
chown: changing ownership of '/srv/www/default_vhost': Operation not permitted
chown: changing ownership of '/srv/www/default_vhost_ssl': Operation not permitted
    
por Cera 31.05.2013 / 10:30

1 resposta

2

Somente o root pode usar chown . NFS ou não, você precisa executar chown como root.

Por padrão, o NFS mapeia o usuário root local para o usuário remoto nobody . Isso torna chown impossível de usar, você teria que executá-lo no servidor. Se estiver tudo bem para a raiz do lado do cliente ter poderes de root no sistema de arquivos NFS, exporte o sistema de arquivos com a opção no_root_squash . Ou seja, no servidor, em /etc/exports , você deve ter algo como.

/Users/$me/src/states 192.168.34.2(no_root_squash,async)
    
por 01.06.2013 / 00:59