Zoeken op website

Hoe u zonder wachtwoord kunt overschakelen naar een ander gebruikersaccount


In deze handleiding laten we zien hoe u naar een ander of specifiek gebruikersaccount kunt overschakelen zonder dat u een wachtwoord nodig heeft. We hebben bijvoorbeeld een gebruikersaccount genaamd postgres (het standaard PostgreSQL superuser-systeemaccount), we willen dat elke gebruiker (meestal onze PostgreSQL-database en systeembeheerders) in de groep genaamd postgres om over te schakelen naar het postgres-account met behulp van de opdracht su zonder een wachtwoord in te voeren.

Standaard kan alleen de rootgebruiker overschakelen naar een ander gebruikersaccount zonder een wachtwoord in te voeren. Elke andere gebruiker wordt gevraagd het wachtwoord in te voeren van het gebruikersaccount waarnaar hij overschakelt (of als hij de opdracht sudo gebruikt, wordt hem gevraagd zijn wachtwoord in te voeren). Als hij niet het juiste wachtwoord opgeeft, krijgt hij een “authenticatie mislukt”-fout zoals weergegeven in de volgende schermafbeelding.

U kunt een van de twee onderstaande oplossingen gebruiken om het bovenstaande probleem op te lossen.

1. PAM-authenticatiemodule gebruiken

PAM (Inplugbare authenticatiemodules) vormen de kern van gebruikersauthenticatie op moderne Linux-besturingssystemen. Om gebruikers in een specifieke groep toe te staan zonder wachtwoord naar een ander gebruikersaccount over te schakelen, kunnen we de standaard PAM-instellingen voor de su-opdracht in /etc/pam.d/su wijzigen. sterk> bestand.

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

Voeg de volgende configuraties toe na “autoriseer voldoende pam_rootok.so”, zoals weergegeven in de volgende schermafbeelding.

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

In de bovenstaande configuratie controleert de eerste regel of de doelgebruiker postgres is. Als dit het geval is, controleert de service de huidige gebruiker, anders wordt de regel default=1 overgeslagen en de normale authenticatiestappen worden uitgevoerd.

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

De regel die volgt controleert of de huidige gebruiker zich in de groep postgres bevindt. Als yes het authenticatieproces als succesvol wordt beschouwd en als resultaat voldoende retourneert. Anders worden de normale authenticatiestappen uitgevoerd.

auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Sla het bestand op en sluit het.

Voeg vervolgens de gebruiker (bijvoorbeeld aaronk) die u wilt su toe aan het account postgres zonder een wachtwoord voor de groep postgres met behulp van het usermod-commando.

$sudo usermod -aG postgres aaronk

Probeer nu su naar het postgres-account te gaan als de gebruiker aaronk. Er zou niet om een wachtwoord moeten worden gevraagd, zoals weergegeven in de volgende schermafbeelding:

su - postgres

2. Sudoers-bestand gebruiken

Je kunt ook su naar een andere gebruiker sturen zonder dat je een wachtwoord nodig hebt, door enkele wijzigingen aan te brengen in het sudoers-bestand. In dit geval moet de gebruiker (bijvoorbeeld aaronk) die naar een ander gebruikersaccount overschakelt (bijvoorbeeld postgres) in het sudoers-bestand of in de sudo-groep staan in staat om het sudo commando aan te roepen.

sudo visudo

Voeg vervolgens de volgende configuratie toe onder de regel “%sudo ALL=(ALL:ALL) ALL ” zoals weergegeven in de volgende schermafbeelding.

aaronk ALL=NOPASSWD: /bin/su – postgres

Sla het bestand op en sluit het.

Probeer nu su naar het account postgres te gaan als de gebruiker aaronk, de shell zou je niet moeten vragen om een wachtwoord in te voeren:

sudo su - postgres

Dat is het voor nu! Voor meer informatie, zie de pagina voor handmatige invoer van PAM (man pam.conf) en ook die van sudo command (man sudo).

man pam.conf
man sudo