Si /etc/nsswitch.conf
tiene:
passwd: files ldap
esta línea en ella, y yo hago getent passwd
¿se ejecutará primero en la /etc/passwd
lista y luego pasar por todos los usuarios en LDAP? Eso parece ser lo que sucede.
Lo probé en un servidor de Red Hat y se desplazaban miles de líneas cuando /etc/passwd
solo tiene 36 líneas.
Comentarios
Responder
getent
devolverá los resultados para cualquier «base de datos» que especifiques. Determina qué backends usar al construir esta «base de datos» según el contenido de /etc/nsswitch.conf
.
getent
enumera sus «bases de datos» cuando consulta su página de uso, getent --help
.
Supported databases: ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts initgroups netgroup networks passwd protocols rpc services shadow
Que yo sepa, no hay wa y para deshabilitar su comportamiento de proporcionar todos los resultados para los distintos backends que están configurados en /etc/nsswitch.conf
.
getent
y /etc/nsswitch.conf
son parte de nss (cambio de servicio de nombres).
Extracto de la página de manual de nss
Cada llamada a una función que recupera datos de una base de datos del sistema, como la contraseña o la base de datos del grupo, es manejada por la implementación del Cambio de servicio de nombres en la biblioteca GNU C. Los diversos servicios proporcionados se implementan mediante módulos independientes, cada uno de los cuales naturalmente varía mucho del otro.
Las implementaciones predeterminadas que vienen con la biblioteca GNU C son por defecto conservadoras y no usan datos inseguros. Esto puede resultar muy costoso en algunas situaciones, especialmente cuando las bases de datos son grandes. Algunos módulos permiten que el administrador del sistema solicite tomar atajos si se sabe que son seguros. Entonces, es responsabilidad del administrador del sistema asegurarse de que la suposición sea correcta.
Hay otros módulos en los que la implementación cambió con el tiempo. Si una implementación solía sacrificar la velocidad por el consumo de memoria, podría crear problemas si el la preferencia está cambiada.
Backends
Hay una variedad de estos, demasiados para cubrir aquí. Pero basta con decir que son backends como sssd
(sss / LDAP), NIS y NIS +, por nombrar algunos.
Entonces, dependiendo de lo que su sistema haya especificado en su /etc/nsswitch.conf
, influirá en la salida que muestra getent
cuando se consulta una «base de datos» determinada, como getent passwd
.
Referencias
Comentarios
- El enlace de cómo sssd está muerto.
- @GhostLyrics – enlace cambiado
Responder
Sí, si solo dice getent passwd
, enumerará todos los usuarios que pueda encontrar en cualquiera de las bases de datos enumeradas en nsswitch.
Comentarios
- solo para los proveedores de NSS que permiten la enumeración. Por ejemplo, con
sss
, puede deshabilitar la enumeración para algunos dominios.
getent passwd
mostrará todos los usuarios (local + ldap)