¿Qué sucede con la autenticación de usuarios LDAP y los recursos compartidos del directorio de inicio de NFS cuando está fuera de la red?

9

Actualmente tengo varias máquinas en la red doméstica que son una mezcla de computadoras de escritorio y portátiles estáticas. Se está volviendo inmanejable para mí y no es práctico para todos ellos tener directorios de inicio locales, configuraciones y seguridad, por lo que estoy considerando usar LDAP para la administración de usuarios comunes y NFS para directorios de inicio compartidos.

¿Qué sucede cuando una de las computadoras portátiles está en la carretera? La red doméstica es inalcanzable, ¿fallará la autenticación y volverá al almacenamiento local? Además, cuando regrese la computadora portátil, ¿hay alguna forma de sincronizar el almacenamiento doméstico en el servidor NFS?

Jim
fuente

Respuestas:

6

Ni NFS ni LDAP admiten la operación desconectada: es decir, cuando la computadora portátil no puede llegar a los servidores, no podrá acceder a ningún directorio montado en NFS ni podrá realizar búsquedas de usuarios. Básicamente, estará atascado.

Algunas soluciones alternativas podrían ser las siguientes.

En lugar de enrutar directorios de inicio a través de NFS, puede mantener los directorios locales y usarlos al unísono para sincronizarlos con el del servidor central. Puede ejecutar unísono desde cron, protegido por una prueba que anula la operación si el servidor no es accesible. Esta publicación en AskUbuntu y esta otra proporcionan una discusión sobre el tema de la sincronización y algunas sugerencias útiles.

Con respecto al problema de autenticación / autorización del usuario, las soluciones giran en torno al uso de libnss-dbcomo fuente de información del usuario:

  • Instale libnss-db, luego configure /etc/nsswitch.confpara buscar la dbfuente además de la regular files:

    passwd: archivos db grupo: archivos db sombra: archivos db

    Los dbarchivos de origen se encuentran en /var/lib/misc ( /var/lib/misc/passwd.dbetc.). Luego puede mantener una copia maestra de estos archivos en su servidor central y sincronizar los clientes conrsync + cron. Desventajas: no hay scripts de administración listos para administrar los archivos db en el servidor (que yo sepa), además de que incurres en un retraso de sincronización y tienes que configurar una forma de rsyncconectarte al servidor maestro.

  • Los paquetes nss-updatedby libpam-ccredsproporcionan una forma más limpia de configurar esto: con nss-updatedbusted puede recrear localmente el passwd.dby group.db, mientras que la shadowinformación es administrada por libpam-ccreds. Las instrucciones sobre cómo configurarlas se pueden encontrar en los READMEarchivos que acompañan a los paquetes.

Riccardo Murri
fuente
@Jorge: muchas gracias por esta sugerencia! He actualizado el texto de respuesta.
Riccardo Murri
2

Archivos

En cuanto a los archivos, buscaría una sincronización basada en red para archivos comunes (por ejemplo, Ubuntu One o Dropbox ) y luego tendría una carpeta compartida para archivos más grandes (tal vez Música, Fotos, Video y Ubuntu ISOs). Esto podría ser un montaje NFS, que cuando falla no importa demasiado, o un recurso compartido de Samba, o probablemente una de varias otras tecnologías.

LDAP

La falla de LDAP definitivamente causa problemas. Todo tipo de cuentas del sistema que normalmente desconoce no se pueden traducir (nombre <-> número de identificación) y, en el mejor de los casos, el sistema se bloqueará repetidamente durante un minuto a la vez mientras espera una respuesta del servidor LDAP antes recurriendo al sistema local. O el sistema podría bloquearse y fallar por completo.

Hay algunas formas de evitar esto . Puede configurar una copia local y sincronizarla de varias maneras: vea otras respuestas a esta pregunta y a la pregunta vinculada. También puede indicarle a LDAP que no obtenga los usuarios del sistema del directorio LDAP, sino de los archivos locales. En nuestros servidores hemos puesto lo siguiente al final de nuestroldap.conf

# We need to ensure that various things can work without LDAP being available
# for example: booting, ssh in as root, apache ...
nss_initgroups_ignoreusers avahi,avahi-autoipd,backup,bin,daemon,dhcp,dhcpd,games,gdm,gnats,haldaemon,hplip,irc,klog,libuuid,list,lp,mail,man,messagebus,munin,mysql,nbd,news,ntp,nut,polkituser,proxy,pulse,root,sshd,statd,sync,sys,syslog,uucp,www-data

Debería asegurarse de que todos los usuarios del sistema estén en esa lista. Incluso entonces, probablemente no sea suficiente para el uso de una computadora portátil.

Desde la página del manual nss_ldap

nss_initgroups_ignoreusers <user1,user2,...,userN>
          This option directs the nss_ldap implementation of initgroups(3)
          to return NSS_STATUS_NOTFOUND if called with a listed  users  as
          its argument.

Básicamente, LDAP finge que no conoce a esos usuarios sin siquiera contactar al servidor maestro, por lo que el NSS recurre a los usuarios locales y el sistema funciona bien.

Una última idea es que si está dispuesto a pasar el tiempo aprendiendo LDAP, en su lugar, podría aprender algunos títeres básicos y usarlos para mantener a todos sus usuarios iguales en todos los sistemas; consulte esta receta de títeres, por ejemplo. Puppet también te permitirá hacer muchas otras cosas: instalar paquetes comunes, configuraciones comunes de varios aspectos ...

Hamish Downer
fuente