Deshabilite el inicio de sesión de un usuario sin deshabilitar la cuenta


87

Digamos que creo un usuario llamado "falso" usando el addusercomando. ¿Cómo puedo asegurarme de que este usuario NO sea una opción de inicio de sesión viable, sin deshabilitar la cuenta? En resumen, quiero que se pueda acceder a la cuenta a través de su - bogus, pero no quiero que sea accesible a través de un mensaje de inicio de sesión regular.

Al buscar, parece que necesito deshabilitar la contraseña de ese usuario, pero hacerlo passwd -d bogusno ayudó. De hecho, empeoró las cosas, porque ahora podía iniciar sesión en falso sin siquiera escribir una contraseña.

¿Hay alguna manera de deshabilitar los inicios de sesión regulares para una cuenta determinada?

Nota: Para ser claros, sé cómo eliminar a un usuario de las opciones de menú de las pantallas de inicio de sesión gráficas, como gdm, pero estos métodos simplemente ocultan la cuenta sin inhabilitar el inicio de sesión. Estoy buscando una forma de deshabilitar el inicio de sesión normal por completo, incluido el modo de texto.


2
Tu -des la bandera para eliminar la contraseña. Eso es diferente de deshabilitarlo (referido como bloqueo, ver la respuesta de Chad).
Caleb

1
Probablemente desee deshabilitarlos por completo: unix.stackexchange.com/questions/7690/… También vea esta pregunta de Ubuntu: askubuntu.com/questions/282806/how-to-enable-or-disable-a-user
Simon Woodside

Respuestas:


102
passwd -l user

es lo que quieres

Eso bloqueará la cuenta de usuario. Pero aún podrás

su - user

pero tendrás que hacerlo su - usercomo root.

Alternativamente, puede lograr lo mismo anteponiendo a !a la contraseña del usuario /etc/shadow(esto es todo passwd -ldetrás de escena). Y passwd -udeshacerá esto.


27
Al utilizar la passwd -lopción, debe tener en cuenta que el usuario puede iniciar sesión con otro token de autenticación (por ejemplo, una clave SSH).
pl1nk

2
Consulte mi respuesta a continuación sobre una solución recomendada sobre cómo evitar esto.
Jörg Gottschlich

2
Esto no funciona en ubuntu 16.04. Cambiará la fecha de caducidad y ya no permitirá a su - user.
merlin

1
¿Es esto lo mismo que la --disabled-passwordopción dada adduser? ¿Crear un usuario sin --disabled-passwordy luego ejecutar passwd -len ese usuario logra el mismo resultado que ejecutar addusercon --disabled-passworden primer lugar?
haridsv

39

La página de manual de passwd(1)dice sobre passwd -l:

Tenga en cuenta que esto no deshabilita la cuenta. El usuario aún puede iniciar sesión con otro token de autenticación (por ejemplo, una clave SSH). Para deshabilitar la cuenta, los administradores deben usar usermod --expiredate 1 (esto establece la fecha de vencimiento de la cuenta al 2 de enero de 1970).

Entonces

usermod --expiredate 1 [LOGIN]

Me parece la forma correcta de deshabilitar una cuenta que un usuario ya no debería poder usar (por ejemplo, porque dejó la empresa).


44
En mi CentOs 6.3, passwd -lbloquea la sshconexión de un usuario, ¡y usermod --expiredate 1no lo hace!
fduff

1
En mi CentOS 7.4, passwd -lya no bloquea las sshconexiones de un usuario, y usermod --expiredate 1 usersí bloquea. Per man passwdtambién puede usar chage -E 0 userpara bloquear a un usuario. Después de aplicar usermodo chagepuedo hacerlosudo su user
user12345

usermod --expiredate 0 [LOGIN]también funciona, establece la fecha de vencimiento al 1 de enero de 1970, mientras que un 1 establece esto al 2 de enero de 1970.
slm

"El valor 0 no debe usarse, ya que se interpreta como una cuenta sin vencimiento o como vencimiento el 1 de enero de 1970". - sombra (5)
Johannes

28

Hay dos métodos para evitar que un usuario pueda iniciar sesión:

  1. puedes bloquear al usuario editando /etc/passwd
  2. directamente emitiendo el passwdcomando con el -linterruptor

En el segundo caso, el usuario puede iniciar sesión utilizando otro token de autenticación (por ejemplo, una clave SSH).

Método 1

  1. Encuentre dónde está nologin: / bin / nologin o / bin / sbin / nologin
  2. Abra una terminal e inicie sesión como root
  3. Tipo vi /etc/passwd

Ahora está en el passwdarchivo, presione Inspara editar el archivo.

Cambie la línea a continuación con la nologinopción ( /bin/bashsignifica que el usuario puede iniciar sesión).

root:x:0:0:root:/root:/bin/bash

a esto. nologinsignifica que el usuario no puede iniciar sesión.

root:x:0:0:root:/root:/bin/nologin

(o con / bin / sbin / nologin)

  1. Cierra el vi Esc :wq

Método 2

Para bloquear al usuario: passwd -l username

Para desbloquear usuario: passwd -u username


1
En un sistema Ubuntu 14.04, encontré en /usr/sbin/nologinlugar de /bin/nologin.
Dennis Williamson

7

Es una tarea bastante fácil, simplemente tiene que hacer algunos cambios en el /etc/passwdarchivo.

Simplemente tiene que cambiar el shell, que generalmente es por defecto, /bin/bashes decir, puede iniciar sesión con este shell, cámbielo a /bin/nologino /bin/false. Es recomendable cambiarlo a /bin/nologinporque /bin/falseestá desactualizado.


4

Establecer /bin/falsecomo un shell en/etc/passwd


18
Cuando se establece el shell en /bin/false, se evita usar su para actuar como ese usuario. Además, el uso /bin/falseno produce ningún error ni otro indicio de lo que salió mal: en los casos en que uno quiera evitar que incluso su se use para obtener un shell como ese usuario, el shell debe cambiarse por el /sbin/nologinque produce un error.
HedgeMage

8
No, el sues todavía posible para los usuarios con /bin/falseconchas en passwd- sólo tiene que utilizar la opción --shell: su - --shell /bin/sh bogus.
Matej Kovac

1
/usr/sbin/nologintiene el mismo efecto que /bin/false, pero también muestra un mensaje informativo útil.
Rörd

0

Cuando bloqueamos al usuario usando el passwd -l usercomando, " !!" se indican en el /etc/shadowarchivo. Pero aún podemos cambiar a un shell de usuario desde la cuenta raíz, pero no podemos cambiar a la cuenta de usuario por el shell de inicio de sesión de otros usuarios normales.

También podemos desactivar la cuenta proporcionando /bin/nologino /bin/falseen el /etc/passwdarchivo. Por lo tanto, es posible que el usuario no pueda iniciar sesión.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.