Búsqueda de sitios web

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


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

De forma predeterminada, sólo el usuario raíz 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 "error de autenticación", 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 contraseña, podemos modificar la configuración PAM predeterminada para el comando su en el archivo /etc/pam.d/su archivo.

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 objetivo es postgres; si lo es, el servicio verifica el usuario actual; de lo contrario, se omite la línea default=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 comprueba 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 en la cuenta postgres como el usuario aaronk; no se le debería solicitar una contraseña como se muestra en la siguiente captura de pantalla:

su - postgres

2. Usando el archivo Sudoers

También puede su a otro usuario sin requerir una contraseña realizando 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 ser capaz de invocar el comando sudo.

sudo visudo

Luego agregue la siguiente configuración debajo de la línea “%sudo ALL=(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 en la cuenta postgres como el usuario aaronk, el shell no debería solicitarle 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 también la de sudo command (man sudo).

man pam.conf
man sudo