Sådan skiftes (su) til en anden brugerkonto uden adgangskode


I denne vejledning viser vi, hvordan du skifter til en anden eller en bestemt brugerkonto uden at kræve en adgangskode. For eksempel har vi en brugerkonto kaldet postgres (standardkonto PostgreSQL superbruger systemkonto), vi vil have, at hver bruger (typisk vores PostgreSQL-database og systemadministratorer) i gruppen kaldet postgres skifter til postgres-kontoen ved hjælp af su kommando uden at indtaste et kodeord.

Som standard kan kun rodbrugeren skifte til en anden brugerkonto uden at indtaste en adgangskode. Enhver anden bruger bliver bedt om at indtaste adgangskoden til den brugerkonto, de skifter til (eller hvis de bruger sudo-kommandoen, bliver de bedt om at indtaste deres adgangskode), hvis de ikke giver den korrekte adgangskode, får de en “godkendelse mislykkedes” -fejl som vist i det følgende skærmbillede.

Du kan bruge en af de to nedenstående løsninger til at løse ovenstående problem.

1. Brug af PAM-godkendelsesmodul

PAM (Pluggable authentication modules) er kernen i brugergodkendelse på moderne Linux-operativsystemer. For at tillade brugere i en bestemt gruppe at skifte til en anden brugerkonto uden adgangskode, kan vi ændre standard PAM-indstillingerne for kommandoen su i /etc/pam.d/su-filen.

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

Tilføj følgende konfigurationer efter “godkend nok pam_rootok.so” som vist i det følgende skærmbillede.

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

I ovenstående konfiguration kontrollerer den første linje, om målbrugeren er postgres, hvis det er, tjenesten kontrollerer den aktuelle bruger, ellers springes linjen default = 1 over, og de normale godkendelsestrin udføres .

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

Linjen, der følger, kontrollerer, om den aktuelle bruger er i gruppens postgres. Hvis ja , betragtes godkendelsesprocessen som vellykket og returnerer tilstrækkelig som et resultat. Ellers udføres de normale godkendelsestrin.

auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Gem filen, og luk den.

Dernæst tilføj den bruger (for eksempel aaronk), som du vil su til kontopostgrene uden adgangskode til gruppepostgres ved hjælp af kommandoen usermod.

$sudo usermod -aG postgres aaronk

Prøv nu at su til postgres-kontoen som brugeren aaronk, du skal ikke blive bedt om en adgangskode som vist i følgende skærmbillede:

$ su - postgres

2. Brug af Sudoers File

Du kan også su til en anden bruger uden at kræve en adgangskode ved at foretage nogle ændringer i sudoers-filen. I dette tilfælde skal brugeren (for eksempel aaronk), der skifter til en anden brugerkonto (f.eks. Postgres), være i sudoers-filen eller i sudo-gruppen for at kunne påkalde sudo-kommandoen.

$ sudo visudo

Tilføj derefter følgende konfiguration under linjen “% sudo ALL = (ALL: ALL) ALL” som vist i følgende skærmbillede.

aaronk ALL=NOPASSWD: /bin/su – postgres

Gem og luk filen.

Prøv nu at su til kontoens postgres, da brugeren aaronk, skal shell ikke bede dig om at indtaste en adgangskode:

$ sudo su - postgres

Det er alt for nu! For mere information, se PAM manuel indtastningsside (man pam.conf) og også sudo-kommandoen (man sudo).

$ man pam.conf
$ man sudo