Técnicamente, a menos que pamesté configurado para verificar su shell con pam_shellsninguno 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é ambos existen? ¿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

/bin/falsedebe existir en todas partes, pero no en/sbin/nologin'/ sbin / nologin': no existe dicho archivo o directorio. ¿Alguna idea de por qué es en/usr/sbin/nologinlugar de/sbin/nologinen Debian y Ubuntu?Respuestas:
Cuando
/sbin/nologinse configura 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/falsees solo un binario que sale inmediatamente, devolviendo falso, cuando se llama, por lo que cuando alguien que tienefalsecomo shell inicia sesión, se desconecta inmediatamente cuandofalsesale. Configurar el shell/bin/truetiene el mismo efecto de no permitir que alguien inicie sesión, perofalseprobablemente se usa como una convencióntrueya que es mucho mejor para transmitir el concepto de que la persona no tiene un shell.Mirando
nologinla página del manual de man, dice que fue creado en 4.4 BSD (principios de los 90), por lo que llegó mucho después defalsesu creación. El uso defalsecomo shell probablemente sea solo una convención llevada a cabo desde los primeros días de UNIX.nologines la opción más fácil de usar, con un mensaje personalizable dado al usuario que intenta iniciar sesión, por lo que teóricamente querrá usarlo; pero ambosnologinyfalsetendrá el mismo resultado final de alguien que no tiene una cubierta y no ser capaz de ssh en.fuente
/usr/sbin/nologinpara distribuciones basadas en Debian.Algunos servidores FTP le permitirán el acceso FTP solo si tiene un shell válido.
/sbin/nologines considerado como un shell válido, mientras/bin/falseque no lo es.(Creo que "válido" significa que su estado de salida es 0, pero
/etc/shellstambién puede entrar en él, probablemente depende del sistema, el software FTP y su configuración).fuente
/etc/shells. Solo una suposición ... podría estar equivocado./bin/falsees un comando del sistema que se usa cada vez que necesita pasar un comando a un programa que no debe hacer nada más que salir con un error. Es el compañero de/bin/true. Ambas son utilidades POSIX muy antiguas y estándar, y ninguna produce ningún resultado por definición. true a veces se usa para un script de shell que debería repetirse indefinidamente, como:/usr/sbin/nologinestá específicamente diseñado para reemplazar un shell y produce resultados quejándose de que no puede iniciar sesión. Antes de que existiera, era común usarlo/bin/falsepara usuarios ficticios, pero podría ser confuso ya que el usuario no sabe por qué fueron expulsados.fuente
/bin/truey/bin/falseno siempre es lo que obtendrá en un script de shell. Enzshtrueyfalseestán integrados, dondebashutiliza las/bin/*versionesEn mi máquina,
nologinmuestra siempre el mismo mensaje, en inglés, ignorando los argumentos./bin/falseresponde--versiony--helpen el idioma indicado por$LC_CTYPE. Aparte de estas diferencias cosméticas, tienen el mismo efecto.En cuanto a la usabilidad,
nologines mejor si se usa en la cuenta de una persona real que habla inglés. En cuanto a la seguridad, no hay diferencia.fuente
falsees más para las cuentas del sistema que no tienen un usuario real, ynologines para cuentas deshabilitadas.nologinversión de Centos no toma argumentos, pero puede leer mensajes de/etc/nologin.txt./ bin / false solo el trabajo es salir con un código de salida distinto de cero.
Pruébelo en la línea de comando:
Algunas instituciones usan / bin / false en el campo de shell del archivo de contraseña. Si el usuario intenta iniciar sesión, el shell es / bin / false, por lo que sale inmediatamente
fuente
En linux,
/sbin/nologinproviene del proyecto util-linux , mientras que/bin/falsees parte de GNU Coreutils . Cumplen diferentes roles, y nologin tiene la opción de imprimir un mensaje para las personas que lo tienen como su shell que están iniciando sesión. Los comandos de Linux provienen de BSD, donde parecen tener una larga historia de ser diferentes. FreeBSDfalsesimplemente devuelve 1 , mientrasnologinverifica que se esté ejecutando en un TTY y envía un mensaje a syslog durante los intentos de inicio de sesión. Las versiones de Linux son un poco más complicadas (falsesupongo que hacen todo tipo de cosas divertidas con la internacionalización para la salida de --help, supongo) pero esencialmente funcionan de la misma manera.fuente
Podrían ser el mismo programa, pero tienen diferentes significados. El nombre del programa lo dice todo.
fuente
Ambos realizan más o menos el mismo trabajo, pero
/bin/falseson útiles para usuarios sin privilegios. Por otro lado,/sbin/nologines para usuarios privilegiados.fuente
/etc/passwd. Acabo de echar un vistazo a/etc/passwdun tramo Debian recién instalado. En este cuadro, casi todas las cuentas del sistema (ID de usuario <1000) tienen/usr/sbin/nologincomo shell, con algunas excepciones. Tenga en cuenta que no estoy de acuerdo con la respuesta de @ pythondetective. Solo estoy especulando sobre lo que podría haberlo llevado a esta conclusión. Sin embargo, mi comentario llega un poco tarde.