Tenho um Servidor (Debian) que está servindo algumas pastas via NFS e um Cliente (Debian) que se conecta ao Servidor NFS (Com NFSv4) e monta aquela pasta exportada. Até agora está tudo bem, consigo conectar e modificar o conteúdo das pastas. Mas os usuários estão completamente confusos. Pelo que entendi isso se deve ao NFS usar os UIDs para definir as permissões, e como os UIDs dos usuários do Cliente e do Servidor diferem, então isso acontece, o que ainda é esperado. Mas pelo que entendi, ao habilitar o NFSv4, o IDMAPD deve entrar em ação e usar o nome de usuário em vez dos UIDs. Os usuários existem no servidor e no clientelado, eles apenas têm UIDs diferentes. Mas, por qualquer motivo, o IDMAPD não funciona ou parece não fazer nada.
Então aqui está o que eu fiz até agora:
No lado do servidor:
- nfs-kernel-server instalado
- preencheu /etc/exports com as configurações de exportação adequadas --> /rfolder ip/24(rw,sync,no_subtree_check,no_root_squash)
- e mudou /etc/default/nfs-common para NEED_IDMAPD=yes
Do lado do cliente
- nfs-common instalado
- e mudou /etc/default/nfs-common para NEED_IDMAPD=yes
- e monte a pasta com " mount -t nfs4 ip:/rfolder /media/lfolder "
Reiniciado e reiniciado várias vezes, mas ainda nada. Quando crio no Servidor uma pasta com o usuário A , no Cliente vejo que o dono da pasta é algum usuário X . Quando crio um arquivo do Cliente com o usuário A , no lado do Servidor diz que é de algum usuário Y .
Verifiquei com o HTOP se o processo rpc.idmap está sendo executado no servidor e está de fato. Embora no cliente não pareça estar em execução. Ao tentar iniciar manualmente o serviço no cliente , recebi uma mensagem de erro informando que o IDMAP requer a execução da dependência nfs-kernel-server. Portanto, instalei-o no lado do cliente e agora tenho o processo rpc.idmap em execução no cliente e no servidor . Reiniciei os dois e o problema ainda persiste.
Alguma ideia do que há de errado aqui? Ou como configurar isso corretamente?
Há algumas coisas a serem observadas ao usar o mapeamento de id NFSv4 em montagens que usam a autenticação AUTH_SYS padrão (
sec=sys
opção de montagem) em vez de Kerberos.NOTA: Com
AUTH_SYS
idmapping apenas traduz os nomes de usuários/grupos. As permissões ainda são verificadas em relação aos valores UID/GID locais. A única maneira de obter permissões trabalhando com nomes de usuários é com o Kerberos.Em kernels recentes, somente o servidor usa rpc.idmapd (documentado em
man rpc.idmapd
). Ao usar idmap, os nomes de usuário são transmitidos no formato usuário@domínio . A menos que um nome de domínio esteja configurado em/etc/idmapd.conf
, o idmapd usa o nome de domínio DNS do sistema. Para que o idmap mapeie os usuários corretamente, o nome do domínio precisa ser o mesmo no cliente e no servidor.Em segundo lugar, o kernel desativa o mapeamento de id para
sec=sys
montagens NFSv4 por padrão . Definirnfs4_disable_idmapping
o parâmetro como false habilita o mapeamento de id parasec=sys
montagens.No servidor:
e no(s) cliente(s):
Você precisa limpar o cache do idmap
nfsidmap -c
nos clientes para que as alterações fiquem visíveis nos sistemas de arquivos NFSv4 montados.Para tornar essas alterações permanentes , crie arquivos de configuração em
/etc/modprobe.d/
,no servidor (
modprobe.d/nfsd.conf
):no (s) cliente(s) (
modprobe.d/nfs.conf
):É um comportamento bastante conhecido e documentado. Se você tiver usuários diferentes no lado do servidor e no lado do cliente que compartilham o mesmo
uid
arquivo , os arquivos parecerão ter proprietários diferentes.Além dos arquivos compartilhados, é aconselhável ter o cuidado de mapear os usuários com o mesmo id em todas as máquinas que compartilham os mesmos sistemas de arquivos.
Você pode fazer isso manualmente, algum sistema mínimo de automação/script, ou melhor ainda, ou configurar autenticação centralizada, por exemplo, com LDAP. consulte Autenticação centralizada usando OpenLDAP