GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué no se puede usar `su` para cambiar a usuarios con contraseña vacía?

Crea una nueva cuenta llamada test :

$ sudo useradd test

test no tiene una contraseña en este momento. Entonces

$ su test

no funciona Si lo intenta, se le pedirá test la contraseña de No tiene uno. Eso no es lo mismo que su contraseña esté vacía, por lo que si ingresa una contraseña vacía presionando Intro, obtendrá el mensaje "su:Fallo de autenticación".

Lo mismo es cierto si cambia a un tty e intenta iniciar sesión como test :No se acepta una contraseña vacía.

Ahora asigne test una contraseña vacía:

$ sudo passwd -d test

Ahora puede iniciar sesión como test en un tty proporcionando la cadena vacía como contraseña. Sin embargo, si intenta

$ su test

nuevamente, aún recibe el mensaje "su:Error de autenticación", la sesión no cambia al usuario test .

¿Por qué es esto?

Respuesta aceptada:

Desde la salida de ldd /bin/su , el su el binario se compila con pam bibliotecas (libpam* ), por lo que pam gestionará la autenticación, la gestión de cuentas, el inicio de sesión, etc. .

A continuación se muestra cómo su de un sistema Ubuntu típico es administrado por pam , debería encontrar un enfoque similar si está utilizando otra distribución.

El pam reglas para su se definen en el archivo /etc/pam.d/su . Este archivo también incluye el common-auth , common-passwd , common-session archivos del mismo directorio que las plantillas comunes para cubrir las tareas que su nombre sugiere (y se usan en otros pam servicios habilitados).

En mi sistema, en la parte inferior de /etc/pam.d/su tengo:

@include common-auth
@include common-account
@include common-session

Las líneas anteriores no se ocupan de la verificación de contraseña nula, es principalmente el trabajo de pam_unix módulo.

Ahora /etc/pam.d/common-auth tiene:

auth    [success=1 default=ignore]      pam_unix.so nullok_secure

De man pam_unix :

nulok

La acción predeterminada de este módulo es no permitir que el usuario acceda a un servicio si su contraseña oficial está en blanco. El argumento nullok anula este valor predeterminado y permite que cualquier usuario con una
contraseña en blanco acceda al servicio.

nullok_secure

La acción predeterminada de este módulo es no permitir que el usuario acceda a un servicio si su contraseña oficial está en blanco. El argumento nullok_secure anula este valor predeterminado y permite que cualquier usuario
con una contraseña en blanco acceda al servicio siempre que el valor de PAM_TTY se establezca en uno de los valores que se encuentran en /etc/securetty.

como puede ver si el nullok_secure está establecida, a menos que la variable de entorno PAM_TTY se configura de la manera mencionada, el usuario con contraseña nula no podrá iniciar sesión usando su .

Entonces, para permitir que cualquier usuario con contraseña nula haga su , necesitas tener el nullok argumento del pam_unix módulo:

auth    [success=1 default=ignore]      pam_unix.so nullok

esto es inseguro como common-auth el archivo es utilizado por muchos otros servicios, incluso solo para su esto no debe hacerse. (Por el bien de la prueba, puede configurarlo una vez y luego volver al original. Aunque si quiere hacer la prueba, es mejor incorporar todas las lógicas en /etc/pam.d/su y modifique cualquier cambio después en lugar de jugar con cualquier common-* archivo)

Relacionado:¿Cómo encadenar los comandos 'date -d @xxxxxx' y 'find ./'?
Linux
  1. Verifique el espacio en disco usado en Linux con du

  2. Automatización de contraseñas SSH en Linux con sshpass

  3. ¿Por qué no puedo usar Cd en un script Bash?

  4. ¿Por qué Ubuntu obliga a los usuarios a crear una contraseña durante la instalación?

  5. Cómo permitir ssh con contraseñas vacías en Linux

Cómo restablecer una contraseña de Windows con Linux

11 razones por las que deberías cambiarte a Linux

Encuentra cuentas de usuario con contraseña vacía en Linux

¿Cómo proteger GRUB con contraseña en Linux?

¿Cómo comprobar la contraseña con Linux?

ssh:¿por qué puedo iniciar sesión con contraseñas parciales?