Técnicamente, a menos que pam está configurado para verificar su shell con pam_shells ninguno de estos puede evitar su inicio de sesión, si no está en el shell. En mi sistema son incluso de diferentes tamaños, por lo que sospecho que realmente hacen algo. Entonces, ¿cuál es la diferencia? ¿Por qué existen ambos? ¿Por qué usaría uno sobre el otro?
-rwxr-xr-x 1 root root 21K Feb 4 17:01 /bin/false
-rwxr-xr-x 1 root root 4.7K Mar 2 14:59 /sbin/nologin
Respuesta aceptada:
Cuando /sbin/nologin está configurado como shell, si el usuario con ese shell inicia sesión, recibirá un mensaje cortés que dice "Esta cuenta no está disponible actualmente". Este mensaje se puede cambiar con el archivo /etc/nologin.txt .
/bin/false es solo un binario que sale inmediatamente, devolviendo falso, cuando se llama, por lo que cuando alguien que tiene false cuando Shell inicia sesión, se desconectan inmediatamente cuando false salidas Configurando el shell en /bin/true tiene el mismo efecto de no permitir que alguien inicie sesión pero false probablemente se usa como una convención sobre true ya que es mucho mejor para transmitir el concepto de que la persona no tiene caparazón.
Mirando nologin La página del manual dice que se creó en 4.4 BSD (principios de la década de 1990), por lo que llegó mucho después de false fue creado. El uso de false como shell es probablemente solo una convención de los primeros días de UNIX.
nologin es la opción más fácil de usar, con un mensaje personalizable para el usuario que intenta iniciar sesión, por lo que, en teoría, querrá usar eso; pero ambos nologin y false tendrá el mismo resultado final de alguien que no tiene un caparazón y no puede entrar.