NFSv4 com idmap

NFSv4 com idmap

Os seguintes erros aparecem no servidor NFS. Você poderia informar como posso corrigir isso?

Detalhes:

Sistema: CentOS versão 6.4, NFS: nfs-utils-1.2.3-36

# cat /etc/idmapd.conf

[General]
Domain = domain.com

[Mapping]
Nobody-User = nobody
Nobody-Group = nobody

[Translation]
Method = nsswitch

Sep  3 08:25:28 snode1 rpc.idmapd[1382]: nss_getpwnam: name '0' does not map into domain 'domain.com'
Sep  3 08:25:29 snode1 rpc.idmapd[1382]: nss_getpwnam: name '500' does not map into domain 'domain.com'

EDITAR: 03 de setembro de 2013 10:41

Observe que estou usando o NFSv4 e esses erros aparecem apenas no servidor NFS (não nos clientes NFS).

Servidor:

# cat /etc/sysconfig/nfs

MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
...
RPCNFSDARGS="-N 2 -N 3"

Clientes:

# cat /etc/fstab

server:/     /data  nfs4    defaults,hard,intr,timeo=15,_netdev,noatime,nodiratime,nosuid    0 0

Editar: Quarta, 11 de junho 14:52:50 BST 2014

# getent passwd "0" | cut -d: -f1
root
# getent passwd "500" | cut -d: -f1
user1

-

# grep "^passwd" /etc/nsswitch.conf 
passwd:     files

Responder1

Vou dar um palpite. Se você resolver o UID '0' ou '500' no seu servidor NFS, o que você obtém? Por acaso são contas locais?

A razão pela qual sugiro isso é que o NFSv4, por design, faz referência a nomes de contas dentro de um domínio e tenta evitar a 'autenticação local' das versões anteriores do NFS. Portanto, ele usa idmapd, que traduz nomes de contas - transmitidos nos pacotes NFS - para traduzir nome de usuário em UID/GID.

Como você determinou corretamente, parece ser isso que está quebrado aqui - então minha pergunta seria: qual domínio de autenticação você está usando e, ao consultá-lo, obtém uma resposta para UID 0 e 500?

Já vi algo semelhante quando, por exemplo, o servidor estava olhando para a ramificação errada do diretório LDAP (bem, diretório ativo) em comparação com o cliente. Como não conseguiu resolver o relacionamento UID/nome de usuário, ele quebrou e, como resultado, traduziu esses usuários em 'ninguém'.

Você configurou a resolução via nsswitch - o que o nsswitch diz para 'passwd'? (Principalmente no servidor, pois é aí que o problema parece existir).

Editar: OK, então de acordo com sua 'senha' você tem 'arquivos' como seu banco de dados local - por exemplo /etc/passwd, . Isso significa que você está mapeando UID/GID por meio de contas locais. Vocênão deveriasempre use UIDs com NFSv4 - devem ser nomes de usuário.

No entanto, uma pesquisa no Google me dá: http://www.spinics.net/lists/linux-nfs/msg38598.html

Portanto, a próxima pergunta é: você está usando a autenticação 'sys'? Suponho que, com base no seu fstab, você está, nesse ponto - esse parece ser um comportamento esperado - seus clientes estão usando 'sys' e, portanto, passando UID/GID. idmapd está reclamando porque não são usuários válidos (são UIDs).

Se no seu cliente você 'toca' em um arquivo como UID 500 ou 0, como será a aparência no cliente e no servidor (ls -l para obter o nome de usuário, ls -ln para obter o uid)? Se estiver funcionando corretamente, parece ser um artefato de compatibilidade com versões anteriores entre o sistema de autenticação NFSv3 e o NFSv4, e as mensagens são inofensivas.

Você pode considerar atualizar para a autenticação Kerberos ou similar, mas por experiência própria, esse não é um exercício trivial. (Embora com algumas vantagens bastante úteis). Essa mensagem (trilha) que vinculei implica que essa mensagem de erro para de aparecer em versões posteriores do kernel.

Responder2

Parece que você está usando o NFSv3, que envia apenas identificadores numéricos de usuários e grupos pela rede.

Para fazer o idmapd funcionar, você precisará usar o NFSv4, que envia identificadores user@domain compreendidos pelo idmapper e mapeados para contas locais (para que você não precise do mesmo uid/gid no servidor e no cliente).

Tente montar esse compartilhamento com a opção -t:

mount -t nfs4 server:/path /mountpoint

Responder3

verifique se as seguintes soluções são provenientes dofórum gentooajudar você:

 1. On the NFS server, /etc/hostname did not contain the FQDN, just the local hostname.
 2. This particular client had an unconfigured /etc/idmapd.conf. It had Domain = localdomain instead of Domain = FQDN-minus-hostname. 

Para sua configuração, esta parece ser a segunda opção.

google para obter a mensagem de erro exata "nss_getpwnam: o nome '0' não mapeia para o domínio" fornece muitos resultados que também podem ajudá-lo (apenas apontei os mais promissores)

informação relacionada