¿Cómo puedo hacer un mapeo de UID NFSv4 en sistemas con desajustes de UID?

11

Estoy trabajando en un laboratorio con tres sistemas Ubuntu, y me gustaría montar algunos sistemas de archivos a través de NFS. Sin embargo, si bien los sistemas tienen algunos de los mismos nombres de usuario, los UID y GID no coinciden, porque los tres sistemas se configuraron por separado. Cuando monte un sistema de archivos NFS de un sistema a otro, la propiedad aparece mal. Por ejemplo, si el UID 1000 es alice en el servidor1 y el mismo UID, 1000, es bob en el servidor2, cuando el servidor1 monta el sistema de archivos exportado del servidor2, los archivos de bob parecen ser propiedad de alice.

Entonces, ¿hay alguna manera de hacer que NFS (v4) convierta UID entre servidores a través de sus nombres de usuario asociados? Buscando en Google esto, he visto muchas referencias a Kerberos, LDAP o NIS, lo que parece una exageración masiva para una tarea tan simple, y podría no ser posible ya que estos sistemas no se administran de manera centralizada. Este enlace parece indicar que lo que pido es imposible. ¿Es correcto?

Editar: He probado todas las configuraciones para las /etc/idmapd.confque puedo pensar o encontrar en Internet, y aunque el proceso idmapd se está ejecutando claramente, hasta ahora no he visto ninguna evidencia de que NFS esté intentando utilizarlo, y nunca ha tenido ningún efecto en la identificación de usuario informada en los montajes NFS.

Ryan C. Thompson
fuente
1
Creo que lo más fácil para ti es poner todas tus cosas en orden. Puede permanecer con su esquema de autenticación actual ya que solo tiene tres cuadros, pero debe sincronizar todos los UID / GID de los usuarios en sus cuadros. Esta no es una tarea difícil en realidad.
Serge
Sí, eso es lo que finalmente terminé haciendo.
Ryan C. Thompson

Respuestas:

5

Sin una administración centralizada de usuarios, la "mejor" forma que veo es forzar a todos los servidores a usar el mismo GID y UID para cada usuario. Ahora ... solo estoy hablando de archivos y / o directorios.

Lo que haría en este caso es:

  • Registre cada UID y GID actualmente en uso.
  • Edite /etc/passwdy /etc/groupcombine los grupos en todos los servidores. Preferiblemente a nuevos UID y GID para que el siguiente paso sea más rápido
  • Ejecute esto (tomará algún tiempo):

    find / -group <OLD_GID> -exec chgrp <NEW_GID> '{}' \+
    find / -user  <OLD_UID> -exec chown <NEW_UID> '{}' \+
    
BitsOfNix
fuente
Ummm, la declaración "find" está comenzando desde el directorio raíz. El comando está cambiando la propiedad de cada directorio en el sistema. Los cambios sugeridos a estos comandos incluirán todos los archivos del sistema. Le sugiero que limite contra qué directorios se ejecuta este comando o tendrá un muy mal día.
2
De find man: -group gname True si el archivo pertenece al grupo gname. Si gname es numérico y no aparece en la base de datos del grupo (4), se toma como una ID de grupo.
BitsOfNix
1

NFSv4 admite mapeo de id. Cuando está habilitado, NFS transmitirá nombres de usuario en lugar de identificadores numéricos. Los hosts que tienen uid numéricos diferentes para el mismo usuario no son un problema, ya que los nombres de usuario se asignan a uid en el host.

La asignación de identificación siempre se usa con los modos de seguridad Kerberos ( sec=krb5).

La asignación de id también se puede usar en el modo AUTH_UNIX (el predeterminado sec=sys). He explicado los detalles de configuración en respuesta a: Cómo hacer que el mapa de identificación NFSv4 funcione con sec = sys .

sebasth
fuente