Cómo cambiar (su) a otra cuenta de usuario sin contraseña


En esta guía, le mostraremos cómo cambiar a otra o una cuenta de usuario específica sin requerir una contraseña. Por ejemplo, tenemos una cuenta de usuario llamada postgres (la cuenta del sistema de superusuario de PostgreSQL predeterminada), queremos que todos los usuarios (normalmente nuestra base de datos PostgreSQL y administradores del sistema) en el grupo llamado postgres cambien a la cuenta de postgres usando el su comando sin ingresar una contraseña.

De forma predeterminada, solo el usuario root puede cambiar a otra cuenta de usuario sin ingresar una contraseña. A cualquier otro usuario se le pedirá que ingrese la contraseña de la cuenta de usuario a la que está cambiando (o si está usando el comando sudo, se le pedirá que ingrese su contraseña), si no proporciona la contraseña correcta, obtendrá un error de "autenticación fallida" como se muestra en la siguiente captura de pantalla.

Puede utilizar cualquiera de las dos soluciones que se proporcionan a continuación para resolver el problema anterior.

1. Uso del módulo de autenticación PAM

PAM (módulos de autenticación conectables) son el núcleo de la autenticación de usuarios en los sistemas operativos Linux modernos. Para permitir que los usuarios de un grupo específico cambien a otra cuenta de usuario sin una contraseña, podemos modificar la configuración predeterminada de PAM para el comando su en el archivo /etc/pam.d/su.

# vim /etc/pam.d/su
OR
$ sudo vim /etc/pam.d/su

Agregue las siguientes configuraciones después de "auth suficiente pam_rootok.so" como se muestra en la siguiente captura de pantalla.

auth       [success=ignore default=1] pam_succeed_if.so user = postgres
auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

En la configuración anterior, la primera línea verifica si el usuario de destino es postgres, si lo es, el servicio verifica al usuario actual, de lo contrario, se omite la línea default u003d 1 y se ejecutan los pasos de autenticación normales .

auth       [success=ignore default=1] pam_succeed_if.so user = postgres

La línea que sigue verifica si el usuario actual está en el grupo postgres, si yes , el proceso de autenticación se considera exitoso y devuelve suficiente como resultado. De lo contrario, se ejecutan los pasos de autenticación normales.

auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Guarde el archivo y ciérrelo.

A continuación, agregue el usuario (por ejemplo aaronk) que desea su a la cuenta postgres sin contraseña al grupo postgres usando el comando usermod.

$sudo usermod -aG postgres aaronk

Ahora intente su a la cuenta de postgres como el usuario aaronk, no se le debe solicitar una contraseña como se muestra en la siguiente captura de pantalla:

$ su - postgres

2. Uso del archivo Sudoers

También puede su a otro usuario sin requerir una contraseña haciendo algunos cambios en el archivo sudoers. En este caso, el usuario (por ejemplo, aaronk) que cambiará a otra cuenta de usuario (por ejemplo, postgres) debe estar en el archivo sudoers o en el grupo sudo para poder invocar el comando sudo.

$ sudo visudo

Luego agregue la siguiente configuración debajo de la línea “% sudo ALL u003d (ALL: ALL) ALL” como se muestra en la siguiente captura de pantalla.

aaronk ALL=NOPASSWD: /bin/su – postgres

Guarde y cierre el archivo.

Ahora intente su a la cuenta postgres como el usuario aaronk, el shell no debería pedirle que ingrese una contraseña:

$ sudo su - postgres

¡Eso es todo por ahora! Para obtener más información, consulte la página de entrada del manual de PAM (man pam.conf) y la del comando sudo también (man sudo).

$ man pam.conf
$ man sudo