NFSv4 con mapa de identificación

NFSv4 con mapa de identificación

Los siguientes errores aparecen en el servidor NFS. ¿Podría indicarme cómo puedo solucionarlo?

Detalles:

Sistema: CentOS versión 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 septiembre de 2013 10:41

Tenga en cuenta que estoy usando NFSv4 y estos errores aparecen solo en el servidor NFS (no en los clientes NFS).

Servidor:

# cat /etc/sysconfig/nfs

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

Clientela:

# cat /etc/fstab

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

Editar: miércoles 11 de junio a las 14:52:50 BST de 2014

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

-

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

Respuesta1

Voy a adivinar un poco. Si resuelve UID '0' o '500' en su servidor NFS, ¿qué obtiene? ¿Son cuentas locales por casualidad?

La razón por la que sugiero esto es que NFSv4, por diseño, hace referencia a nombres de cuentas dentro de un dominio e intenta evitar la "autenticación local" de versiones anteriores de NFS. Por lo tanto, utiliza idmapd, que traduce los nombres de cuentas (transmitidos en los paquetes NFS) para traducir el nombre de usuario a UID/GID.

Como ha determinado correctamente, eso parece ser lo que no funciona aquí; entonces mi pregunta sería: ¿qué dominio de autenticación está utilizando? Cuando lo consulta, ¿obtiene una respuesta para UID 0 y 500?

He visto algo similar cuando, por ejemplo, el servidor buscaba en la rama incorrecta del directorio LDAP (bueno, directorio activo) en comparación con el cliente. Debido a que no pudo resolver la relación UID/nombre de usuario, se rompió y, como resultado, tradujo a estos usuarios a "nadie".

Tienes la resolución configurada a través de nsswitch. ¿Qué dice nsswitch para 'contraseña'? (Principalmente en el servidor, ya que ahí es donde parece existir el problema).

Editar: OK, entonces de acuerdo con su 'contraseña' tiene 'archivos' como su base de datos local, por ejemplo /etc/passwd. Esto significa que estás asignando UID/GID a través de cuentas locales. Túno deberíaAlguna vez usará UID con NFSv4; deberían ser nombres de usuario.

Sin embargo, un poco de búsqueda en Google me da: http://www.spinics.net/lists/linux-nfs/msg38598.html

Por lo tanto, la siguiente pregunta es: ¿está utilizando la autenticación 'sys'? Supongo que, según su fstab, es así, en cuyo punto (este parece ser el comportamiento esperado) sus clientes están usando 'sys' y, por lo tanto, pasan UID/GID. idmapd se queja porque no son usuarios válidos (son UID).

Si en su cliente, "toca" un archivo como UID 500 o 0, ¿cómo se verá en el cliente y el servidor (ls -l para obtener el nombre de usuario, ls -ln para obtener el uid)? Si eso funciona correctamente, parece ser un artefacto de compatibilidad con versiones anteriores entre el sistema de autenticación NFSv3 y NFSv4, y los mensajes son inofensivos.

Podría considerar actualizar a la autenticación Kerberos o similar, pero por experiencia, no es un ejercicio trivial. (Aunque con algunas ventajas bastante útiles). Ese mensaje (sendero) que vinculé implica que este mensaje de error deja de aparecer en versiones posteriores del kernel.

Respuesta2

Parece que estás usando NFSv3, que envía solo identificadores numéricos de usuarios y grupos a través de la red.

Para que idmapd funcione, necesitará usar NFSv4, que envía identificadores de usuario@dominio comprendidos por idmapper y asignados a cuentas locales (por lo que no necesita el mismo uid/gid tanto en el servidor como en el cliente).

Intente montar ese recurso compartido con la opción -t:

mount -t nfs4 server:/path /mountpoint

Respuesta3

Por favor verifique si las siguientes soluciones provienen delforo gentooayudarte:

 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 su configuración, esta parece la segunda opción.

Busque en Google el mensaje de error exacto "nss_getpwnam: el nombre '0' no se asigna al dominio" le brinda muchos resultados que también podrían ayudarlo (solo señalé los más prometedores)

información relacionada