Jinsi ya Kubadilisha (su) hadi Akaunti Nyingine ya Mtumiaji bila Nenosiri


Katika mwongozo huu, tutaonyesha jinsi ya kubadili akaunti nyingine au maalum ya mtumiaji bila kuhitaji nenosiri. Kwa mfano, tuna akaunti ya mtumiaji inayoitwa postgres (akaunti chaguomsingi ya mfumo wa mtumiaji mkuu wa PostgreSQL), tunataka kila mtumiaji (kawaida hifadhidata yetu ya PostgreSQL na wasimamizi wa mfumo) katika kikundi kiitwacho postgres kubadili hadi akaunti ya postgres kwa kutumia su amri bila kuingiza nenosiri.

Kwa chaguo-msingi, mtumiaji wa mizizi pekee ndiye anayeweza kubadili akaunti ya mtumiaji mwingine bila kuingiza nenosiri. Mtumiaji mwingine yeyote ataulizwa kuingiza nenosiri la akaunti ya mtumiaji anayobadilisha (au ikiwa anatumia amri ya sudo, ataulizwa kuingiza nenosiri lake), ikiwa hawatatoa nenosiri sahihi, wanapata. hitilafu ya \uthibitishaji imeshindwa kama inavyoonyeshwa kwenye picha ya skrini ifuatayo.

Unaweza kutumia suluhu zozote kati ya hizo mbili zilizotolewa hapa chini kutatua suala hapo juu.

1. Kutumia Moduli ya Uthibitishaji ya PAM

PAM (Moduli za uthibitishaji zinazoweza kuchomekwa) ndizo msingi wa uthibitishaji wa mtumiaji kwenye mifumo ya uendeshaji ya Linux ya kisasa. Ili kuruhusu watumiaji katika kikundi mahususi kubadili hadi akaunti ya mtumiaji mwingine bila nenosiri, tunaweza kurekebisha mipangilio chaguomsingi ya PAM kwa amri ya su katika faili ya /etc/pam.d/su.

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

Ongeza usanidi ufuatao baada ya \auth enough pam_rootok.so kama inavyoonyeshwa kwenye picha ya skrini ifuatayo.

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

Katika usanidi ulio hapo juu, mstari wa kwanza hukagua kama mtumiaji lengwa ni postgres, ikiwa ni, huduma hukagua mtumiaji wa sasa, vinginevyo, mstari wa default=1 umerukwa na hatua za kawaida za uthibitishaji kutekelezwa. .

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

Mstari unaofuata hukagua ikiwa mtumiaji wa sasa yuko kwenye posta za kikundi, ikiwa ndiyo, mchakato wa uthibitishaji unachukuliwa kuwa umefaulu na kurejesha kutosha kwa sababu hiyo. Vinginevyo, hatua za kawaida za uthibitishaji zinatekelezwa.

auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Hifadhi faili na uifunge.

Kisha, ongeza mtumiaji (kwa mfano aaronk) ambaye unataka su kwenye postgres za akaunti bila nenosiri kwenye postgres za kikundi kwa kutumia usermod amri.

$sudo usermod -aG postgres aaronk

Sasa jaribu su kwa akaunti ya postgres kama mtumiaji karibu, hupaswi kuulizwa nenosiri kama inavyoonyeshwa kwenye picha ya skrini ifuatayo:

$ su - postgres

2. Kutumia Sudoers File

Unaweza pia su kwa mtumiaji mwingine bila kuhitaji nenosiri kwa kufanya mabadiliko fulani katika faili ya sudoers. Katika kesi hii, mtumiaji (kwa mfano aaronk) ambaye atabadilika kwenda kwa akaunti nyingine ya mtumiaji (kwa mfano postgres) anapaswa kuwa kwenye faili ya sudoers au kwenye kikundi cha sudo ili kuweza kuomba amri ya sudo.

$ sudo visudo

Kisha ongeza usanidi ufuatao chini ya mstari \%sudo ALL=(ALL:ALL) ALL kama inavyoonyeshwa kwenye picha ya skrini ifuatayo.

aaronk ALL=NOPASSWD: /bin/su – postgres

Hifadhi na funga faili.

Sasa jaribu su kwa postgres za akaunti kama mtumiaji arank, shell haipaswi kukuhimiza kuingiza nenosiri:

$ sudo su - postgres

Ni hayo tu kwa sasa! Kwa habari zaidi, tazama ukurasa wa ingizo la mwongozo wa PAM (man pam.conf) na ule wa amri ya sudo pia (man sudo).

$ man pam.conf
$ man sudo