NFSv4 com idmap

6

Os seguintes erros aparecem no servidor NFS, você poderia, por favor, informar como eu posso consertar 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'

EDIT: 03 de setembro de 2013 10:41

Por favor, note 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

Edit: Wed 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
    
por HTF 03.09.2013 / 09:40

3 respostas

7

Vou adivinhar um pouco. Se você resolver UID '0' ou '500' no seu servidor NFS, o que você ganha? São contas locais por acaso?

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

Como você determinou corretamente, parece que está quebrado aqui - então minha pergunta seria, qual domínio de autenticação você está usando e, quando você o consulta, você recebe uma resposta para o UID 0 e 500?

Eu vi semelhante quando, por exemplo, o servidor estava olhando para a ramificação errada do diretório LDAP (bem, diretório ativo) comparado ao cliente. Como não conseguiu resolver o relacionamento UID / username, ele quebrou e traduziu esses usuários para 'nobody' como resultado.

Você tem resolução configurada via nsswitch - o que nsswitch diz para 'passwd'? (No servidor principalmente, como é onde o problema parece existir).

Editar: OK, então de acordo com o seu 'passwd' você tem 'arquivos' como seu banco de dados local - por exemplo, %código%. Isso significa que você está mapeando o UID / GID por meio de contas locais. Você não deveria estar usando UIDs com NFSv4 - deve ser usernames.

No entanto, um pouco de googling me dá: link

Portanto, as próximas perguntas são - você está usando a autenticação 'sys'? Eu estou supondo que com base no seu fstab que você é, em que ponto - isso parece ser esperado comportamento - seus clientes estão usando 'sys' e, portanto, passando UID / GID. O 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 ele se parece no cliente e no servidor (ls -l para obter o nome de usuário, ls -ln para obter o uid)? Se isso estiver funcionando corretamente, isso parece ser um artefato de retrocompatibilidade entre o NFSv3 Auth sys e o NFSv4, e as mensagens são inofensivas.

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

    
por 11.06.2014 / 12:40
2

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 de usuário @ domínio entendidos pelo idmapper e mapeados para contas locais (assim você não precisa do mesmo uid / gid no servidor e no cliente).

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

mount -t nfs4 server:/path /mountpoint
    
por 03.09.2013 / 11:06
1

verifique se as soluções seguintes do fórum do gentoo o ajudam:

 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, isso parece a segunda opção.

google para a mensagem de erro exata "nss_getpwnam: nome '0' não mapeia no domínio" dá-lhe muitos resultados que podem ajudá-lo também (apenas apontou o mais promissor)

    
por 10.06.2014 / 16:06

Tags