Com canviar (su) a un altre compte d'usuari sense contrasenya


En aquesta guia, mostrarem com canviar a un altre o a un compte d'usuari específic sense requerir una contrasenya. Per exemple, tenim un compte d'usuari anomenat postgres (el compte predeterminat del sistema de superusuari de PostgreSQL), volem que tots els usuaris (normalment la nostra base de dades PostgreSQL i els administradors del sistema) del grup anomenat postgres canviïn al compte de postgres mitjançant el su comanda sense introduir una contrasenya.

Per defecte, només l'usuari root pot canviar a un altre compte d'usuari sense introduir una contrasenya. Es demanarà a qualsevol altre usuari que introdueixi la contrasenya del compte d'usuari al qual està canviant (o si està utilitzant l'ordre sudo, se li demanarà que introdueixi la seva contrasenya), si no proporciona la contrasenya correcta, obtindrà un error \ha fallat l'autenticació, tal com es mostra a la captura de pantalla següent.

Podeu utilitzar qualsevol de les dues solucions que es proporcionen a continuació per resoldre el problema anterior.

1. Ús del mòdul d'autenticació PAM

Els PAM (Mòduls d'autenticació connectables) són el nucli de l'autenticació d'usuaris als sistemes operatius Linux moderns. Per permetre als usuaris d'un grup específic canviar a un altre compte d'usuari sense contrasenya, podem modificar la configuració PAM predeterminada de l'ordre su al fitxer /etc/pam.d/su.

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

Afegiu les configuracions següents després de \auth enough pam_rootok.so tal com es mostra a la captura de pantalla següent.

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

A la configuració anterior, la primera línia comprova si l'usuari objectiu és postgres, si ho és, el servei comprova l'usuari actual, en cas contrari, la línia default=1 s'omet i s'executen els passos d'autenticació normals. .

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

La línia que segueix comprova si l'usuari actual es troba al grup postgres, si , el procés d'autenticació es considera que el procés d'autenticació és correcte i, com a resultat, retorna suficient. En cas contrari, s'executen els passos normals d'autenticació.

auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Deseu el fitxer i tanqueu-lo.

A continuació, afegiu l'usuari (per exemple aaronk) que voleu su al compte postgres sense contrasenya al grup postgres mitjançant l'ordre usermod.

$sudo usermod -aG postgres aaronk

Ara proveu de su al compte de postgres com a usuari aaronk, no se us demanarà una contrasenya com es mostra a la següent captura de pantalla:

$ su - postgres

2. Ús del fitxer Sudoers

També podeu su a un altre usuari sense requerir una contrasenya fent alguns canvis al fitxer sudoers. En aquest cas, l'usuari (per exemple aaronk) que canviarà a un altre compte d'usuari (per exemple, postgres) hauria d'estar al fitxer sudoers o al grup sudo per poder invocar l'ordre sudo.

$ sudo visudo

A continuació, afegiu la configuració següent a sota de la línia \%sudo ALL=(ALL:ALL) ALL” tal com es mostra a la captura de pantalla següent.

aaronk ALL=NOPASSWD: /bin/su – postgres

Desa i tanca el fitxer.

Ara proveu de su al compte postgres com a usuari aaronk, el shell no us hauria de demanar que introduïu una contrasenya:

$ sudo su - postgres

Això és tot per ara! Per obtenir més informació, consulteu la pàgina d'entrada manual de PAM (man pam.conf) i també la de l'ordre sudo (man sudo).

$ man pam.conf
$ man sudo