Como definir corretamente as permissões para a pasta NFS? Permissão negada na extremidade da montagem.

46

Estou tentando me conectar a uma pasta NFS no meu servidor dev. O proprietário da pasta no servidor de desenvolvimento é darren e group darren.

Quando exporto e montei no meu Mac usando o Utilitário de Disco, ele é montado, mas quando tento abrir a pasta diz que não tenho permissões. Eu configurei rw, sync e no_subtree_check. O usuário no Mac está ocupado com vários grupos.

Preciso ter o mesmo grupo e usuário definido para acessar a pasta?

Darren
fonte
2
Obrigado pela sua pergunta, este tópico resolveu o problema para mim! Mas aceite a resposta com os mais votos positivos.
mamiu

Respostas:

61

O NFS é construído sobre a autenticação RPC. Com o NFS versão 3, o mecanismo de autenticação mais comum é AUTH_UNIX. A identificação do usuário e a identificação do grupo do sistema do cliente são enviadas em cada chamada RPC, e as permissões que essas identificações têm no arquivo acessado são verificadas no servidor. Para que isso funcione, os UID e GIDs devem ser os mesmos no servidor e nos clientes. No entanto, você pode forçar todo o acesso a ocorrer como um único usuário e grupo combinando as opções de exportação all_squash, anonuid e anongid. all_squash mapeará todos os UIDs e GIDs para o usuário anônimo, e anonuid e anongid definirão o UID e o GID do usuário anônimo. Por exemplo, se seu UID e GID no servidor de desenvolvimento forem 1001, você poderá exportar seu diretório pessoal com uma linha como

/home/darren 192.168.1.1/24(rw,all_squash,anonuid=1001,anongid=1001)

Estou menos familiarizado com o NFS versão 4, mas acho que você pode configurar o rpc.idmapd nos clientes para alterar o uid e o gid que eles enviam ao servidor.

sciurus
fonte
7
Encontrei esta resposta tentando resolver um problema do Apple OS X Yosemite nfs. Essa resposta é muito mais relevante e precisa do que a resposta aceita. Não é aconselhável nem é possível combinar UID / GID entre sistemas. Um usuário root no sistema A não é, provavelmente, um usuário root no sistema B.
Allan
28

Quando você monta o NFS, suas permissões devem ser iguais às que você possui no servidor. Por exemplo, se seu usuário tiver apenas acesso somente leitura, montá-lo com leitura e gravação fará com que você veja os mesmos erros que você mencionou na sua postagem ao tentar realmente carregar a montagem. Infelizmente, isso APENAS será exibido ao acessar a pasta, não quando você realmente a montar.

Você também deseja garantir que o NFS do usuário esteja sendo executado como no servidor e o usuário no cliente esteja usando o mesmo UID e GID. Você pode verificar esses valores executando id darrenno servidor e no cliente. Se os valores UID e GID não corresponderem, você pode editar /etc/passwdpara fazer isso - mas certifique-se de entender o que está fazendo antes de alterar arbitrariamente os valores!

Algumas boas fontes:

Eu espero que isso ajude!

Andrew M.
fonte
Sim, eu não deveria ter tentado alterar o UID. Tenho que refazer meu servidor agora. Como imitar o UID e o GID? É realmente assim tão complicado?
Darren
Infelizmente, na minha experiência de usar isso no local de trabalho, o NFS é extremamente frágil e sim - pode ser complicado. Normalmente, você desejará um usuário NFS dedicado com um UID / GID específico em cada servidor / cliente, para não ter esse problema. Se você tiver uma escolha em seu ambiente de desenvolvimento (por exemplo, ele NÃO TEM QUE usar o NFS), usar algo como SSHFS fará com que suas dores de cabeça desapareçam - mas não replicará a mesma funcionalidade que um servidor de produção usando NFS.
Andrew M.
Você acha que o Samba é outra solução? Eu o usei no Windows sem problemas e estou pensando que esse é o caminho que terei que seguir, embora esteja usando um Mac para desenvolver meu aplicativo.
Darren
Essa é certamente outra possibilidade, se você estiver disposto a configurá-la.
Andrew M.
2
Eu hesitaria em dizer que o NFS é frágil. É um protocolo de serviço de arquivo estabelecido há muito tempo. Na verdade, existem apenas dois requisitos para o NFS: UID / GID sincronizado entre os clientes e tempo sincronizado entre os clientes e o servidor. Tradicionalmente, o NIS era usado para sincronizar as informações do usuário, mas o LDAP é uma opção mais segura para novas implantações na última década.
Jeff Strunk
2

Seus UIDs e GIDs correspondem nos dois servidores? É isso que está usando para controlar o acesso, e não o nome de login e grupo.

JOTN
fonte
-2

Para mim, o problema foi corrigido, fornecendo _netdeva opção de montagem no cliente.

Ou seja, adicione isso a /etc/fstab:

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0
Vanuan
fonte