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é 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/false
debe 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/nologin
lugar de/sbin/nologin
en Debian y Ubuntu?Respuestas:
Cuando
/sbin/nologin
se 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/false
es solo un binario que sale inmediatamente, devolviendo falso, cuando se llama, por lo que cuando alguien que tienefalse
como shell inicia sesión, se desconecta inmediatamente cuandofalse
sale. Configurar el shell/bin/true
tiene el mismo efecto de no permitir que alguien inicie sesión, perofalse
probablemente se usa como una convencióntrue
ya que es mucho mejor para transmitir el concepto de que la persona no tiene un shell.Mirando
nologin
la 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 defalse
su creación. El uso defalse
como shell probablemente sea solo una convención llevada a cabo desde los primeros días de UNIX.nologin
es 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 ambosnologin
yfalse
tendrá el mismo resultado final de alguien que no tiene una cubierta y no ser capaz de ssh en.fuente
/usr/sbin/nologin
para distribuciones basadas en Debian.Algunos servidores FTP le permitirán el acceso FTP solo si tiene un shell válido.
/sbin/nologin
es considerado como un shell válido, mientras/bin/false
que no lo es.(Creo que "válido" significa que su estado de salida es 0, pero
/etc/shells
tambié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/false
es 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/nologin
está 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/false
para usuarios ficticios, pero podría ser confuso ya que el usuario no sabe por qué fueron expulsados.fuente
/bin/true
y/bin/false
no siempre es lo que obtendrá en un script de shell. Enzsh
true
yfalse
están integrados, dondebash
utiliza las/bin/*
versionesEn mi máquina,
nologin
muestra siempre el mismo mensaje, en inglés, ignorando los argumentos./bin/false
responde--version
y--help
en el idioma indicado por$LC_CTYPE
. Aparte de estas diferencias cosméticas, tienen el mismo efecto.En cuanto a la usabilidad,
nologin
es mejor si se usa en la cuenta de una persona real que habla inglés. En cuanto a la seguridad, no hay diferencia.fuente
false
es más para las cuentas del sistema que no tienen un usuario real, ynologin
es para cuentas deshabilitadas.nologin
versió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/nologin
proviene del proyecto util-linux , mientras que/bin/false
es 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. FreeBSDfalse
simplemente devuelve 1 , mientrasnologin
verifica 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 (false
supongo 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/false
son útiles para usuarios sin privilegios. Por otro lado,/sbin/nologin
es para usuarios privilegiados.fuente
/etc/passwd
. Acabo de echar un vistazo a/etc/passwd
un tramo Debian recién instalado. En este cuadro, casi todas las cuentas del sistema (ID de usuario <1000) tienen/usr/sbin/nologin
como 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.