പാസ്uവേഡ് ഇല്ലാതെ മറ്റൊരു ഉപയോക്തൃ അക്കൗണ്ടിലേക്ക് (സു) എങ്ങനെ മാറാം


ഈ ഗൈഡിൽ, ഒരു പാസ്uവേഡ് ആവശ്യമില്ലാതെ മറ്റൊരു അല്ലെങ്കിൽ ഒരു നിർദ്ദിഷ്ട ഉപയോക്തൃ അക്കൗണ്ടിലേക്ക് എങ്ങനെ മാറാമെന്ന് ഞങ്ങൾ കാണിക്കും. ഉദാഹരണത്തിന്, ഞങ്ങൾക്ക് പോസ്റ്റ്uഗ്രെസ് (ഡിഫോൾട്ട് PostgreSQL സൂപ്പർ യൂസർ സിസ്റ്റം അക്കൗണ്ട്) എന്നൊരു ഉപയോക്തൃ അക്കൗണ്ട് ഉണ്ട്, പോസ്റ്റ്uഗ്രെസ് എന്ന ഗ്രൂപ്പിലെ എല്ലാ ഉപയോക്താവും (സാധാരണയായി ഞങ്ങളുടെ PostgreSQL ഡാറ്റാബേസും സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർമാരും) su< ഉപയോഗിച്ച് postgres അക്കൗണ്ടിലേക്ക് മാറണമെന്ന് ഞങ്ങൾ ആഗ്രഹിക്കുന്നു. ഒരു പാസ്വേഡ് നൽകാതെ കമാൻഡ്.

സ്ഥിരസ്ഥിതിയായി, റൂട്ട് ഉപയോക്താവിന് മാത്രമേ പാസ്uവേഡ് നൽകാതെ മറ്റൊരു ഉപയോക്തൃ അക്കൗണ്ടിലേക്ക് മാറാൻ കഴിയൂ. മറ്റേതെങ്കിലും ഉപയോക്താവ് അവർ മാറുന്ന ഉപയോക്തൃ അക്കൗണ്ടിന്റെ പാസ്uവേഡ് നൽകാൻ ആവശ്യപ്പെടും (അല്ലെങ്കിൽ അവർ സുഡോ കമാൻഡ് ഉപയോഗിക്കുകയാണെങ്കിൽ, അവരുടെ പാസ്uവേഡ് നൽകാൻ ആവശ്യപ്പെടും), അവർ ശരിയായ പാസ്uവേഡ് നൽകിയില്ലെങ്കിൽ, അവർക്ക് ലഭിക്കും ഇനിപ്പറയുന്ന സ്ക്രീൻഷോട്ടിൽ കാണിച്ചിരിക്കുന്നതുപോലെ ഒരു \ആധികാരികത പരാജയപ്പെട്ടു പിശക്.

മുകളിലുള്ള പ്രശ്നം പരിഹരിക്കാൻ നിങ്ങൾക്ക് ചുവടെ നൽകിയിരിക്കുന്ന രണ്ട് പരിഹാരങ്ങളിൽ ഏതെങ്കിലും ഉപയോഗിക്കാം.

1. PAM പ്രാമാണീകരണ മൊഡ്യൂൾ ഉപയോഗിക്കുന്നു

ആധുനിക ലിനക്സ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളിലെ ഉപയോക്തൃ പ്രാമാണീകരണത്തിന്റെ കാതലാണ് PAM (പ്ലഗ്ഗബിൾ ഓതന്റിക്കേഷൻ മൊഡ്യൂളുകൾ). ഒരു നിർദ്ദിഷ്uട ഗ്രൂപ്പിലെ ഉപയോക്താക്കളെ പാസ്uവേഡ് ഇല്ലാതെ മറ്റൊരു ഉപയോക്തൃ അക്കൗണ്ടിലേക്ക് മാറാൻ അനുവദിക്കുന്നതിന്, /etc/pam.d/su ഫയലിലെ su കമാൻഡിനായുള്ള സ്ഥിരസ്ഥിതി PAM ക്രമീകരണങ്ങൾ നമുക്ക് പരിഷ്uക്കരിക്കാനാകും.

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

ഇനിപ്പറയുന്ന സ്ക്രീൻഷോട്ടിൽ കാണിച്ചിരിക്കുന്നതുപോലെ \auth പര്യാപ്തമായ pam_rootok.so എന്നതിന് ശേഷം ഇനിപ്പറയുന്ന കോൺഫിഗറേഷനുകൾ ചേർക്കുക.

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

മുകളിലെ കോൺഫിഗറേഷനിൽ, ടാർഗെറ്റ് ഉപയോക്താവ് പോസ്റ്റ്uഗ്രെസ് ആണോ എന്ന് ആദ്യ വരി പരിശോധിക്കുന്നു, അത് ആണെങ്കിൽ, സേവനം നിലവിലെ ഉപയോക്താവിനെ പരിശോധിക്കുന്നു, അല്ലാത്തപക്ഷം, default=1 ലൈൻ ഒഴിവാക്കുകയും സാധാരണ പ്രാമാണീകരണ ഘട്ടങ്ങൾ നടപ്പിലാക്കുകയും ചെയ്യുന്നു. .

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

നിലവിലെ ഉപയോക്താവ് ഗ്രൂപ്പ് പോസ്റ്റ്uഗ്രേസിൽ ആണോ എന്ന് പിന്തുടരുന്ന വരി പരിശോധിക്കുന്നു, അതെ ആണെങ്കിൽ, പ്രാമാണീകരണ പ്രക്രിയ വിജയകരമാണെന്ന് കണക്കാക്കുകയും തൽഫലമായി മതിയായ വരുമാനം നൽകുകയും ചെയ്യുന്നു. അല്ലെങ്കിൽ, സാധാരണ പ്രാമാണീകരണ ഘട്ടങ്ങൾ നടപ്പിലാക്കുന്നു.

auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

ഫയൽ സംരക്ഷിച്ച് അത് അടയ്ക്കുക.

അടുത്തതായി, നിങ്ങൾ su ചെയ്യാൻ ആഗ്രഹിക്കുന്ന ഉപയോക്താവിനെ (ഉദാഹരണത്തിന് aaronk) ചേർക്കുക, usermod കമാൻഡ് ഉപയോഗിച്ച് ഗ്രൂപ്പ് postgres-ലേക്ക് പാസ്uവേഡ് ഇല്ലാതെ അക്കൗണ്ട് postgres-ലേക്ക് ചേർക്കുക.

$sudo usermod -aG postgres aaronk

ഇപ്പോൾ aaronk എന്ന ഉപയോക്താവ് പോസ്റ്റ്uഗ്രെസ് അക്കൗണ്ടിലേക്ക് su ശ്രമിക്കുക, ഇനിപ്പറയുന്ന സ്uക്രീൻഷോട്ടിൽ കാണിച്ചിരിക്കുന്നതുപോലെ ഒരു പാസ്uവേഡിനായി നിങ്ങളോട് ആവശ്യപ്പെടരുത്:

$ su - postgres

2. Sudoers ഫയൽ ഉപയോഗിക്കുന്നു

sudoers ഫയലിൽ ചില മാറ്റങ്ങൾ വരുത്തി ഒരു പാസ്uവേഡ് ആവശ്യമില്ലാതെ നിങ്ങൾക്ക് മറ്റൊരു ഉപയോക്താവിന് su നൽകാനും കഴിയും. ഈ സാഹചര്യത്തിൽ, മറ്റൊരു ഉപയോക്തൃ അക്കൗണ്ടിലേക്ക് മാറുന്ന (ഉദാഹരണത്തിന് aaronk) ഉപയോക്താവ് (ഉദാഹരണത്തിന് postgres) sudoers ഫയലിലോ സുഡോ ഗ്രൂപ്പിലോ സുഡോ കമാൻഡ് അഭ്യർത്ഥിക്കാൻ കഴിയണം.

$ sudo visudo

തുടർന്ന് ഇനിപ്പറയുന്ന സ്uക്രീൻഷോട്ടിൽ കാണിച്ചിരിക്കുന്നതുപോലെ \%sudo ALL=(ALL:ALL) ALL” എന്ന വരിക്ക് താഴെയുള്ള കോൺഫിഗറേഷൻ ചേർക്കുക.

aaronk ALL=NOPASSWD: /bin/su – postgres

ഫയൽ സംരക്ഷിച്ച് അടയ്ക്കുക.

ഇപ്പോൾ aaronk എന്ന ഉപയോക്താവ് അക്കൗണ്ട് postgres-ലേക്ക് su ശ്രമിക്കുക, ഒരു പാസ്uവേഡ് നൽകാൻ ഷെൽ നിങ്ങളോട് ആവശ്യപ്പെടരുത്:

$ sudo su - postgres

ഇപ്പോഴത്തേക്ക് ഇത്രമാത്രം! കൂടുതൽ വിവരങ്ങൾക്ക്, PAM മാനുവൽ എൻട്രി പേജും (man pam.conf) സുഡോ കമാൻഡും (man sudo) കാണുക.

$ man pam.conf
$ man sudo