V této příručce si ukážeme, jak přepnout na jiný nebo konkrétní uživatelský účet bez nutnosti zadání hesla. Máme například uživatelský účet s názvem postgres (výchozí PostgreSQL systémový účet superuživatele), chceme každého uživatele (typicky náš PostgreSQL administrátoři databáze a systému) ve skupině nazvané postgres přepnete na postgres účet pomocí su
příkaz bez zadání hesla.
Ve výchozím nastavení může pouze uživatel root přepnout na jiný uživatelský účet bez zadání hesla. Každý jiný uživatel bude vyzván k zadání hesla uživatelského účtu, na který přechází (nebo pokud používá příkaz sudo, bude vyzván k zadání hesla), pokud neposkytne správné heslo, dostane „ověření se nezdařilo “, jak je znázorněno na následujícím snímku obrazovky.
K vyřešení výše uvedeného problému můžete použít kterékoli ze dvou níže uvedených řešení.
1. Použití PAM Authentication Module
PAM (Připojitelné ověřovací moduly ) jsou jádrem ověřování uživatelů v moderních operačních systémech Linux. Abychom uživatelům v určité skupině umožnili přepnout na jiný uživatelský účet bez hesla, můžeme upravit výchozí nastavení PAM pro příkaz su v /etc/pam.d/su soubor.
# vim /etc/pam.d/su OR $ sudo vim /etc/pam.d/su
Za „auth dostatečný pam_rootok.so přidejte následující konfigurace “, jak je znázorněno na následujícím snímku obrazovky.
auth [success=ignore default=1] pam_succeed_if.so user = postgres auth sufficient pam_succeed_if.so use_uid user ingroup postgres
Ve výše uvedené konfiguraci první řádek kontroluje, zda je cílový uživatel postgres , pokud ano, služba zkontroluje aktuálního uživatele, v opačném případě default=1
řádek je přeskočen a jsou provedeny běžné autentizační kroky.
auth [success=ignore default=1] pam_succeed_if.so user = postgres
Následující řádek kontroluje, zda je aktuální uživatel ve skupině postgres , pokud yes
, je proces ověřování považován za úspěšný a výsledkem je dostatečná návratnost. Jinak se provedou běžné ověřovací kroky.
auth sufficient pam_succeed_if.so use_uid user ingroup postgres
Uložte soubor a zavřete jej.
Dále přidejte uživatele (například aaronk ), které chcete su
na účet postgres bez hesla do skupiny postgres pomocí příkazu usermod.
$sudo usermod -aG postgres aaronk
Nyní zkuste su
na postgres účtu jako uživatel aaronk , neměli byste být vyzváni k zadání hesla, jak je znázorněno na následujícím snímku obrazovky:
$ su - postgres
2. Pomocí souboru Sudoers
Můžete také su
jinému uživateli bez vyžadování hesla provedením některých změn v souboru sudoers. V tomto případě uživatel (například aaronk ), který přejde na jiný uživatelský účet (například postgres ) by měl být v souboru sudoers nebo ve skupině sudo, aby bylo možné vyvolat příkaz sudo .
$ sudo visudo
Poté přidejte následující konfiguraci pod řádek “%sudo ALL=(ALL:ALL) ALL”
jak je znázorněno na následujícím snímku obrazovky.
aaronk ALL=NOPASSWD: /bin/su – postgres
Uložte a zavřete soubor.
Nyní zkuste su
na účet postgres jako uživatel aaronk , shell by vás neměl vyzývat k zadání hesla:
$ sudo su - postgres
To je prozatím vše! Další informace naleznete na stránce ručního zadávání PAM (man pam.conf ) a příkaz sudo také (man sudo ).
$ man pam.conf $ man sudoSouvisející čtení :10 užitečných konfigurací Sudoers pro nastavení „sudo“ v Linuxu