Kuinka vaihtaa (su) toiseen käyttäjätiliin ilman salasanaa


Tässä oppaassa näytämme, kuinka voit vaihtaa toiseen tai tiettyyn käyttäjätiliin ilman salasanaa. Meillä on esimerkiksi käyttäjätili nimeltä postgres (oletusarvoinen PostgreSQL-superkäyttäjätili), haluamme jokaisen käyttäjän (yleensä PostgreSQL-tietokanta ja järjestelmänvalvojat) ryhmässä postgres vaihtaaksesi postgres-tiliin su-komennolla ilman salasanaa.

Oletuksena vain pääkäyttäjä voi vaihtaa toiseen käyttäjätiliin ilman salasanaa. Muita käyttäjiä pyydetään syöttämään sen käyttäjätilin salasana, johon hän vaihtaa (tai jos he käyttävät sudo-komentoa, heitä pyydetään antamaan salasana), jos he eivät anna oikeaa salasanaa, he saavat "Todennus epäonnistui" -virhe, joka näkyy seuraavassa kuvakaappauksessa.

Voit käyttää mitä tahansa kahdesta alla olevista ratkaisuista ratkaistaksesi yllä olevan ongelman.

1. PAM-todennusmoduulin käyttäminen

PAM (Pluggable-todennusmoduulit) ovat nykyaikaisten Linux-käyttöjärjestelmien käyttäjän todennuksen ytimessä. Jotta tietyn ryhmän käyttäjät voivat vaihtaa toiseen käyttäjätiliin ilman salasanaa, voimme muokata su-komennon PAM-oletusasetuksia tiedostossa /etc/pam.d/su tiedosto.

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

Lisää seuraavat määritykset "auth riittävä pam_rootok.so" jälkeen seuraavan kuvakaappauksen mukaisesti.

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

Yllä olevassa kokoonpanossa ensimmäinen rivi tarkistaa, onko kohdekäyttäjä postgres, jos on, palvelu tarkistaa nykyisen käyttäjän, muuten default=1-rivi ohitetaan. ja normaalit todennusvaiheet suoritetaan.

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

Seuraava rivi tarkistaa, onko nykyinen käyttäjä ryhmässä postgres, jos kyllä, todennusprosessin katsotaan onnistuneen ja sen tuloksena palauttaa riittävästi. Muussa tapauksessa suoritetaan normaalit todennusvaiheet.

auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Tallenna tiedosto ja sulje se.

Lisää seuraavaksi käyttäjä (esimerkiksi aaronk), jonka haluat su, tilille postgres ilman salasanaa ryhmään postgres. käyttämällä usermod-komentoa.

$sudo usermod -aG postgres aaronk

Yritä nyt su kirjautua postgres-tiliin käyttäjänä aaronk. Sinulta ei pitäisi pyytää salasanaa, kuten seuraavassa kuvakaappauksessa näkyy:

su - postgres

2. Sudoers-tiedoston käyttäminen

Voit myös su toiselle käyttäjälle ilman salasanaa tekemällä muutoksia sudoers-tiedostoon. Tässä tapauksessa käyttäjän (esimerkiksi aaronk), joka vaihtaa toiseen käyttäjätiliin (esim. postgres), tulee olla sudoers-tiedostossa tai sudo-ryhmässä. voi kutsua sudo-komentoa.

sudo visudo

Lisää sitten seuraavat asetukset rivin “%sudo ALL=(ALL:ALL) ALL” alle seuraavan kuvakaappauksen mukaisesti.

aaronk ALL=NOPASSWD: /bin/su – postgres

Tallenna ja sulje tiedosto.

Yritä nyt su kirjautua tilille postgres käyttäjänä aaronk, komentotulkin ei pitäisi pyytää sinua antamaan salasanaa:

sudo su - postgres

Tässä kaikki tältä erää! Lisätietoja on PAM:n manuaalisen syöttämisen sivulla (man pam.conf) ja myös sudo-komennon sivulla (man sudo).

man pam.conf
man sudo