¿Cómo puedo mantener constantes las cuentas de los usuarios en varias máquinas?

16

Ahora tengo una Raspberry Pi que ejecuta Debian Wheezy. Tengo un par de máquinas (4 físicas, 2 virtuales) sentadas aquí y me gustaría unificar las cuentas de usuario en esas máquinas.

Las máquinas que ejecuto tienen los siguientes derivados de Debian instalados:

  • Debian Wheezy (armhf)
  • Estable de Debian (amd64)
  • Debian inestable (amd64)
  • Ubuntu 14.04 (amd64)

¿Cómo podría configurar las cuentas de usuario en todas las máquinas por igual? Quiero que el nombre, el nombre largo, la contraseña y el UID sean consistentes.

En el futuro, me gustaría unificar otras partes de la configuración, tal vez

  • HTCondor
  • Puntos de montaje (Samba)
  • /etc/apt/sources.list
  • Actualizaciones desatendidas

Como uso diferentes variantes de Ubuntu y Debian, las sources.listdiferencias serán un poco diferentes, pero serán las mismas en cada distribución.

¿Cuál sería un buen enfoque para esto?

Martin Ueding
fuente
1
Debe configurar todos los usuarios como ldapusuarios.
Ramesh
1
@Ramesh ¿Eso significaría que los usuarios solo pueden iniciar sesión cuando hay una conexión de red?
Martin Ueding
Si. Es posible que necesite la conexión de red para ldaptrabajar. Pero le ahorra la molestia de configurar usuarios en todas las máquinas.
Ramesh
¿Hay una máquina que esté siempre encendida y accesible a través de la red? ¿Hay una máquina que esté siempre encendida y accesible cuando desee cambiar su contraseña?
Gilles 'SO- deja de ser malvado'
1
@ramesh Puede tener LDAP sin conexión utilizando SSSD .
Patrick

Respuestas:

14

Básicamente tienes 2 opciones.

  1. Use el sistema de autenticación local de cada máquina y envíe los cambios de credenciales a todas ellas.
  2. Use un servidor de autenticación centralizado.

1. Autenticación local sincronizada

Existen múltiples productos que logran esto fácilmente. Puppet , Chef , Ansible y Salt son algunos de los más comunes. Todas estas herramientas se incluyen en lo que se conoce como " Gestión de la configuración ".

Básicamente, tendría un repositorio en el que define sus credenciales de autenticación como código. El "código" sería tan simple como una directiva que especifica el nombre de usuario y la contraseña hash. Luego sincronizaría este código con todas sus máquinas y ejecutaría cualquier herramienta CM que eligiera. La herramienta CM luego actualizaría las credenciales de autenticación local de cada usuario (también creando el usuario si es necesario).

Como usted dijo que también desea hacer otros tipos de configuración, esta podría ser la solución más adecuada.

2. Autenticación centralizada

La forma más común de autenticación centralizada es LDAP. Ejecutar un servidor LDAP puede parecer desalentador, pero hay algunas buenas soluciones empaquetadas como FreeIPA que lo hacen fácilmente manejable.

Ahora, uno de sus primeros pensamientos podría ser: "Quiero que la autenticación funcione incluso si el servidor central está inactivo". Esto se logra fácilmente mediante el uso de SSSD . Cuando un usuario inicia sesión por primera vez en un servidor, SSSD consulta LDAP (o kerberos si está empleado), y si las credenciales son válidas, las almacena en caché en la máquina local. Si el servidor LDAP no está disponible, recurre al uso de su caché. Por lo tanto, siempre que un usuario haya iniciado sesión una vez, podrá continuar si LDAP no está disponible.

3. Combinación de los dos.

También podría usar una combinación de las dos soluciones. Esto es muy común en entornos empresariales a gran escala, pero también puede emplearse a pequeña escala. Básicamente, tendría un servidor de autenticación centralizado y utilizaría una herramienta CM para configurar a los clientes para que lo usen.

Patricio
fuente
¡Muchas gracias, eso debería darme suficientes puntos de partida! :-)
Martin Ueding