¿Cuál ' es la diferencia entre / sbin / nologin y / bin / false

Técnicamente, a menos que pam está configurado para comprobar su shell con pam_shells ninguno de estos puede impedir su inicio de sesión, si no está en el shell. En mi sistema incluso son de diferentes tamaños, así que sospecho que realmente hacen algo. Entonces, ¿cuál es la diferencia? ¿Por qué existen ambos? ¿Por qué debería usar 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 

Comentarios

Responder

Cuando /sbin/nologin se establece como shell, si el usuario con ese shell inicia sesión, «recibirán 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, es decir, cuando alguien que tiene false como registros de shell en, se desconectan inmediatamente cuando false sale. Configurar el shell en /bin/true tiene el mismo efecto de no permitir que alguien inicie sesión pero false probablemente se use como una convención sobre true ya que es mucho mejor t transmitiendo el concepto de que la persona no tiene un caparazón.

Mirando la página de manual de nologin, dice que fue creado en 4.4 BSD (principios de 1990 ) por lo que llegó mucho después de que se creara false. El uso de false como shell es probablemente 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 que se le da al usuario que intenta iniciar sesión, por lo que teóricamente querrás usarlo; pero tanto nologin como false tendrán el mismo resultado final de que alguien no tenga un shell y no pueda ingresar mediante SSH.

Comentarios

  • /usr/sbin/nologin para distribuciones basadas en Debian.
  • Al menos la implementación de BSD también registra el inicio de sesión intenta registrar el sistema como se ve en opensource.apple.com/source/system_cmds/system_cmds-735/… , mientras que / bin / false no ‘ registra nada
  • ESTO – Es una respuesta asombrosa, con una gran historia presentada aquí. ¡Bien hecho, Mark!
  • La /etc/nologin.txt función de mensaje personalizado no está disponible en Ubuntu.

Responder

Algunos servidores FTP le permitirán acceso FTP solo si tiene un shell válido. /sbin/nologin se considera un shell válido, mientras que /bin/false no lo es.

(Creo que «válido» significa que El estado de salida es 0, pero /etc/shells también puede aparecer, probablemente depende del sistema, el software FTP y su configuración.)

Comentarios

  • sí, esa ‘ probablemente sea parte del programa ftp usando pam, y pam usando pam_shells que, como dijiste, verifica /etc/shells. Solo una suposición … podría estar equivocado.
  • Acabo de comprobar Ubuntu 8.04 y 14.04. El comando nologin sale con un estado 1 similar a falso, y no se incluye ninguno de verdadero, falso o nologin en / etc / shells. Si lo fueran, un usuario podría usar chsh para seleccionar tal shell y bloquearse a sí mismo fuera de su cuenta.

Responder

/bin/false es un comando del sistema que se usa cada vez que necesita pasar un comando a un programa que no debería hacer más que salir con un error. Es el complemento de /bin/true. Ambas son utilidades POSIX estándar y muy antiguas y, por definición, ninguna de ellas produce ningún resultado.true a veces se usa para un script de shell que debe repetirse indefinidamente, como:

while true; do ... # Waste time if [ $wasted_time -gt 100000 ]; then exit 0 fi ... done 

/usr/sbin/nologin está específicamente diseñado para reemplaza un shell y produce una salida quejándose de que no puede iniciar sesión. Antes de que existiera, era común usar /bin/false para usuarios ficticios, pero podría ser confuso ya que el usuario no saber por qué se han iniciado.

Comentarios

  • vale la pena señalar que /bin/true y /bin/false no siempre son lo que obtendrá en un script de shell. En zsh true y false son integradas, donde bash usa las /bin/* versiones

Responder

En mi máquina, nologin muestra siempre el mismo mensaje, en inglés, ignorando los argumentos . /bin/false responde a --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 seguridad, no hay diferencia.

Comentarios

  • parece que quizás false es más para cuentas del sistema que no tienen un usuario real, y nologin es para cuentas deshabilitadas.
  • ¿Cuál es su sistema operativo? Centos nologin no acepta argumentos, pero puede leer el mensaje de /etc/nologin.txt.

Respuesta

En Linux, /sbin/nologin proviene del proyecto util-linux , mientras que /bin/false es parte de GNU Coreutils . Tienen diferentes roles y nologin tiene la opción de imprimir un mensaje para las personas que tienen como su shell que están iniciando sesión. Los comandos de Linux provienen de BS D, donde parecen tener una larga historia de ser diferentes. El false de FreeBSD simplemente devuelve 1 , mientras que nologin busca asegúrese de que «s se esté ejecutando en un TTY y envíe un mensaje a syslog durante los intentos de inicio de sesión. Las versiones de Linux son un poco más complicadas (false haciendo todo tipo de cosas divertidas con la internacionalización para la salida de –help, supongo) pero esencialmente funciona de la misma manera.

Respuesta

/ bin / false el único trabajo es salir con un código de salida distinto de cero.

Pruébelo en la línea de comando:

$:> /bin/false $:> echo $? 1 $:> 

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 se sale de inmediato

Answer

Pueden ser el mismo programa, pero tienen significados diferentes. El nombre del programa lo dice todo.

  • / bin / false está destinado a devolver un valor falso. se ejecuta como programa.
  • / bin / nologin tiene la intención de indicar al usuario que no se permite iniciar sesión para una cuenta. (Se usa un shell de inicio de sesión).

Respuesta

Ambos hacen más o menos el mismo trabajo pero /bin/false es útil para usuarios sin privilegios. Por otro lado, /sbin/nologin es para usuarios privilegiados.

Comentarios

  • Oh, ¿cómo ¿Llegaste a esa conclusión?
  • Probablemente haya investigado /etc/passwd. Acabo de echar un vistazo a /etc/passwd de una extensión Debian recién instalada. 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 qué podría haberlo llevado a esta conclusión. Sin embargo, mi comentario llega un poco tarde.
  • ¡No! El shell de inicio de sesión predeterminado no es lo mismo que los privilegios.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *