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