¿Cómo saber si un usuario tiene "permiso para iniciar sesión" en Linux?

12

La pregunta es simple: quiero enumerar todas las cuentas de usuario que pueden iniciar sesión en mi sistema, pero no estoy seguro de si todos los usuarios en / etc / passwd son usuarios "podrían iniciar sesión".

Detalles:

Puedo ver los usuarios cuyas conchas se establecen en /usr/sbin/nologiny /bin/falseen /etc/passwd, ¿significa que no se puede iniciar sesión?

También sé que puedo establecer la contraseña cifrada del usuario *o !en /etc/shadowdesactivar una cuenta, por lo que el "usuario discapacitado" también debe ser tratar como "no puede iniciar sesión en el" usuario, ¿verdad?

harryz
fuente

Respuestas:

13

Mucho de esto depende de su definición de "Log in" - técnicamente cualquier usuario que existe en /etc/passwdy /etc/shadowes un "usuario válido" y en teoría podría acceder bajo el sistema derecho de circunstancias.

Los métodos de los que habla se dividen en las siguientes categorías generales:

  • Usuarios con cuentas "bloqueadas"
    Un usuario cuya contraseña está configurada en *, !o algún otro hash que nunca coincida está "bloqueado" (en los días del Sol, la convención solía ser *LK*"Bloqueado").
    Estos usuarios no pueden iniciar sesión escribiendo una contraseña , pero aún pueden iniciar sesión utilizando otros mecanismos de autenticación (claves SSH, por ejemplo).

  • Los usuarios con un shell "no interactivo"
    Un usuario cuya cuenta tiene un "shell no interactivo" ( /bin/false, /sbin/nologin) no puede iniciar sesión de forma interactiva , es decir, no puede obtener un indicador de shell para ejecutar comandos (esto también evita SSH ejecución del comando si el usuario tiene claves SSH en el sistema).
    Es posible que estos usuarios aún puedan iniciar sesión para hacer cosas como leer / enviar correos electrónicos (a través de POP / IMAP y SMTP AUTH). En general, se considera una buena práctica establecer un shell no interactivo para usuarios que nunca deberían necesitar usar el shell (y para la mayoría de las "cuentas de servicio").

Por lo tanto, según sus criterios para "poder iniciar sesión", es posible que desee marcar una o ambas cosas.

voretaq7
fuente
6

Hay una diferencia entre deshabilitar al usuario y configurar el shell en / bin / false o similar.

Establecer el shell en / bin / false evita que el usuario obtenga un shell, pero aún puede iniciar sesión en el sistema si los usuarios locales se utilizan para otra cosa (autenticación de correo, ftp, etc.). Deshabilitar al usuario hace que sea imposible para él usar cualquier servicio del servidor que use usuarios locales.

Pentium100
fuente
entonces, ¿en realidad todos los usuarios en / etc / passwd son usuarios "podrían iniciar sesión", pero algunos están deshabilitados (*!) y otros están restringidos (/ bin / false)?
harryz
3

Además de lo anterior, los usuarios pueden ser bloqueados de un sistema a pesar de que su contraseña se vea correcta usando varios métodos diferentes.

/etc/security/access.conf se puede usar para limitar quién puede iniciar sesión.

Hay muchos módulos PAM que se pueden configurar para restringir usuarios específicos o modificar el comportamiento de inicio de sesión según sea necesario. (es decir, ningún directorio de inicio en el servidor no permite el inicio de sesión).

billq
fuente