സു, സുഡോ എന്നിവ തമ്മിലുള്ള വ്യത്യാസവും ലിനക്സിൽ സുഡോ എങ്ങനെ കോൺഫിഗർ ചെയ്യാം
ലിനക്സ് സിസ്റ്റം അതിന്റെ മറ്റേതൊരു എതിരാളിയേക്കാളും വളരെ സുരക്ഷിതമാണ്. ലിനക്സിൽ സുരക്ഷ നടപ്പിലാക്കുന്നതിനുള്ള ഒരു മാർഗ്ഗം ഉപയോക്തൃ മാനേജ്മെന്റ് നയവും ഉപയോക്തൃ അനുമതിയുമാണ് കൂടാതെ സാധാരണ ഉപയോക്താക്കൾക്ക് ഒരു സിസ്റ്റം പ്രവർത്തനങ്ങളും നടത്താൻ അധികാരമില്ല.
ഒരു സാധാരണ ഉപയോക്താവിന് എന്തെങ്കിലും സിസ്റ്റം വൈഡ് മാറ്റങ്ങൾ വരുത്തണമെങ്കിൽ അയാൾ 'su' അല്ലെങ്കിൽ 'sudo' കമാൻഡ് ഉപയോഗിക്കേണ്ടതുണ്ട്.
ശ്രദ്ധിക്കുക - ഈ ലേഖനം ഉബുണ്ടു അധിഷ്ഠിത വിതരണങ്ങൾക്ക് കൂടുതൽ ബാധകമാണ്, മാത്രമല്ല മിക്ക ജനപ്രിയ ലിനക്സ് വിതരണങ്ങൾക്കും ബാധകമാണ്.
നിങ്ങളുടെ റൂട്ട് പാസ്uവേഡ് മറ്റ് ഉപയോക്താക്കളുമായി പങ്കിടാൻ 'su' നിങ്ങളെ പ്രേരിപ്പിക്കുന്നു, അതേസമയം 'sudo' root പാസ്uവേഡ് ഇല്ലാതെ സിസ്റ്റം കമാൻഡുകൾ നടപ്പിലാക്കുന്നത് സാധ്യമാക്കുന്നു. സിസ്റ്റം കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുന്നതിന് നിങ്ങളുടെ സ്വന്തം പാസ്uവേഡ് ഉപയോഗിക്കാൻ 'sudo' നിങ്ങളെ അനുവദിക്കുന്നു, അതായത്, റൂട്ട് പാസ്uവേഡ് ഇല്ലാതെ സിസ്റ്റം ഉത്തരവാദിത്തം നിയോഗിക്കുന്നു.
'sudo' എന്നത് ഒരു റൂട്ട് ബൈനറി setuid ആണ്, ഇത് അംഗീകൃത ഉപയോക്താക്കൾക്ക് വേണ്ടി റൂട്ട് കമാൻഡുകൾ എക്സിക്യൂട്ട് ചെയ്യുന്നു, കൂടാതെ 'sudo' എന്നതിന് ശേഷം സിസ്റ്റം കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നതിന് ഉപയോക്താക്കൾ സ്വന്തം പാസ്uവേഡ് നൽകേണ്ടതുണ്ട്.
'sudo' എക്സിക്യൂട്ട് ചെയ്യാൻ കഴിയുന്ന ഉപയോക്താക്കളുടെ ലിസ്റ്റ് ചേർക്കാൻ/നീക്കം ചെയ്യാൻ നമുക്ക് '/usr/sbin/visudo' പ്രവർത്തിപ്പിക്കാം.
$ sudo /usr/sbin/visudo
'/usr/sbin/visudo' ഫയലിന്റെ ഒരു സ്uക്രീൻ ഷോട്ട് ഇതുപോലെ കാണപ്പെടുന്നു:
സുഡോ ലിസ്റ്റ് ഡിഫോൾട്ടായി താഴെയുള്ള സ്ട്രിംഗ് പോലെ കാണപ്പെടുന്നു:
root ALL=(ALL) ALL
ശ്രദ്ധിക്കുക: /usr/sbin/visudo ഫയൽ എഡിറ്റ് ചെയ്യുന്നതിന് നിങ്ങൾ റൂട്ട് ആയിരിക്കണം.
പല സാഹചര്യങ്ങളിലും, സിസ്റ്റം അഡ്മിനിസ്uട്രേറ്റർ, ഫീൽഡിൽ പ്രത്യേകമായി പുതിയതായി \റൂട്ട് ALL=(എല്ലാ) എല്ലാം എന്ന സ്ട്രിംഗ് ഒരു ടെംപ്ലേറ്റായി കണ്ടെത്തുകയും മറ്റുള്ളവർക്ക് അനിയന്ത്രിതമായ പ്രവേശനം അനുവദിക്കുകയും ചെയ്യുന്നു, അത് വളരെ ദോഷകരമായേക്കാം.
'/usr/sbin/visudo' ഫയൽ ചുവടെയുള്ള പാറ്റേൺ പോലെയുള്ള ഒന്നിലേക്ക് എഡിറ്റുചെയ്യുന്നത് വളരെ അപകടകരമാണ്, ലിസ്റ്റുചെയ്ത എല്ലാ ഉപയോക്താക്കളെയും നിങ്ങൾ പൂർണ്ണമായും വിശ്വസിക്കുന്നില്ലെങ്കിൽ.
root ALL=(ALL) ALL adam ALL=(ALL) ALL tom ALL=(ALL) ALL mark ALL=(ALL) ALL
ശരിയായി ക്രമീകരിച്ച 'സുഡോ' വളരെ അയവുള്ളതും പ്രവർത്തിപ്പിക്കേണ്ട കമാൻഡുകളുടെ എണ്ണം കൃത്യമായി കോൺഫിഗർ ചെയ്തേക്കാം.
ക്രമീകരിച്ച 'സുഡോ' ലൈനിന്റെ വാക്യഘടന ഇതാണ്:
User_name Machine_name=(Effective_user) command
മുകളിലുള്ള വാക്യഘടനയെ നാല് ഭാഗങ്ങളായി തിരിക്കാം:
- User_name: ഇതാണ് 'sudo' ഉപയോക്താവിന്റെ പേര്.
- Machine_name: ഇതാണ് ഹോസ്റ്റ് നാമം, ഇതിൽ 'sudo' കമാൻഡ് സാധുവാണ്. നിങ്ങൾക്ക് ധാരാളം ഹോസ്റ്റ് മെഷീനുകൾ ഉള്ളപ്പോൾ ഉപയോഗപ്രദമാണ്.
- (Effective_user): കമാൻഡുകൾ എക്uസിക്യൂട്ട് ചെയ്യാൻ അനുവദിച്ചിരിക്കുന്ന 'ഇഫക്റ്റീവ് യൂസർ'. സിസ്റ്റം കമാൻഡുകൾ എക്സിക്യൂട്ട് ചെയ്യാൻ ഉപയോക്താക്കളെ അനുവദിക്കുന്നതിന് ഈ കോളം നിങ്ങളെ അനുവദിക്കുന്നു.
- കമാൻഡ്: കമാൻഡ് അല്ലെങ്കിൽ ഉപയോക്താവിന് പ്രവർത്തിപ്പിക്കാവുന്ന ഒരു കൂട്ടം കമാൻഡുകൾ.
ചില സാഹചര്യങ്ങളും അവയുടെ അനുബന്ധ 'സുഡോ' ലൈനും:
Q1. നിങ്ങൾക്ക് ഒരു ഡാറ്റാബേസ് അഡ്മിനിസ്ട്രേറ്ററായ ഒരു ഉപയോക്തൃ അടയാളമുണ്ട്. നിങ്ങൾ അവന് ഡാറ്റാബേസ് സെർവറിൽ (beta.database_server.com) എല്ലാ ആക്uസസ്സും നൽകണം, അല്ലാതെ ഏതെങ്കിലും ഹോസ്റ്റിൽ അല്ല.
മേൽപ്പറഞ്ഞ സാഹചര്യത്തിൽ 'sudo' വരി ഇങ്ങനെ എഴുതാം:
mark beta.database_server.com=(ALL) ALL
Q2. മുകളിൽ വിശദീകരിച്ചിരിക്കുന്ന അതേ ഡാറ്റാബേസ് സെർവറിൽ റൂട്ട് അല്ലാതെ മറ്റൊരു ഉപയോക്താവായി സിസ്റ്റം കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യേണ്ട ഒരു ഉപയോക്താവ് നിങ്ങൾക്ക് ‘tom’ ഉണ്ട്.
മേൽപ്പറഞ്ഞ സാഹചര്യത്തിൽ 'sudo' വരി ഇങ്ങനെ എഴുതാം:
mark beta.database_server.com=(tom) ALL
Q3. നിങ്ങൾക്ക് ഒരു സുഡോ ഉപയോക്താവ് ‘കാറ്റ്’ ഉണ്ട്, അത് ‘ഡോഗ്’ എന്ന കമാൻഡ് മാത്രം പ്രവർത്തിപ്പിക്കേണ്ടതാണ്.
മേൽപ്പറഞ്ഞ സാഹചര്യം നടപ്പിലാക്കാൻ, നമുക്ക് 'sudo' എന്ന് എഴുതാം:
mark beta.database_server.com=(cat) dog
Q4. ഉപയോക്താവിന് നിരവധി കമാൻഡുകൾ നൽകേണ്ടതുണ്ടെങ്കിൽ?
ഉപയോക്താവ് പ്രവർത്തിപ്പിക്കേണ്ട കമാൻഡുകളുടെ എണ്ണം 10-ൽ താഴെയാണെങ്കിൽ, ചുവടെ കാണിച്ചിരിക്കുന്നതുപോലെ എല്ലാ കമാൻഡുകളും അവയ്ക്കിടയിൽ വൈറ്റ് സ്പേസ് സഹിതം സ്ഥാപിക്കാം:
mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...
ഈ കമാൻഡിന്റെ ലിസ്റ്റ് ശ്രേണിയിൽ വ്യത്യാസപ്പെട്ടാൽ, അക്ഷരാർത്ഥത്തിൽ ഓരോ കമാൻഡും സ്വമേധയാ ടൈപ്പ് ചെയ്യാൻ സാധ്യമല്ലെങ്കിൽ നമ്മൾ അപരനാമങ്ങൾ ഉപയോഗിക്കേണ്ടതുണ്ട്. അപരനാമങ്ങൾ! അതെ, ലിനക്സ് യൂട്ടിലിറ്റി, അവിടെ ഒരു നീണ്ട കമാൻഡ് അല്ലെങ്കിൽ കമാൻഡിന്റെ ഒരു ലിസ്റ്റ് ചെറുതും എളുപ്പവുമായ കീവേഡ് ആയി പരാമർശിക്കാവുന്നതാണ്.
'sudo' കോൺഫിഗറേഷൻ ഫയലിൽ എൻട്രിക്ക് പകരം ഉപയോഗിക്കാവുന്ന കുറച്ച് അപരനാമം ഉദാഹരണങ്ങൾ.
User_Alias ADMINS=tom,jerry,adam user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top
ഉപയോക്താക്കൾക്ക് പകരം ആ ഗ്രൂപ്പിൽ പെട്ട ഒരു സിസ്റ്റം ഗ്രൂപ്പുകൾ വ്യക്തമാക്കാൻ കഴിയും, അത് താഴെപ്പറയുന്നതുപോലെ '%' പ്രത്യയത്തിൽ ചേർത്തു:
%apacheadmin WEBSERVERS=(www) APACHE
Q5. പാസ്uവേഡ് നൽകാതെ ഒരു ‘sudo’ കമാൻഡ് എക്uസിക്യൂട്ട് ചെയ്യുന്നത് എങ്ങനെ?
'NOPASSWD' ഫ്ലാഗ് ഉപയോഗിച്ച് പാസ്uവേഡ് നൽകാതെ തന്നെ നമുക്ക് ഒരു 'sudo' കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യാം.
adam ALL=(ALL) NOPASSWD: PROCS
ഇവിടെ 'adam' എന്ന ഉപയോക്താവിന് \PROCS എന്നതിന് കീഴിൽ വരുന്ന എല്ലാ കമാൻഡുകളും പാസ്uവേഡ് നൽകാതെ തന്നെ എക്സിക്യൂട്ട് ചെയ്യാൻ കഴിയും.
'su' എന്നതുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ \sudo നിങ്ങൾക്ക് കരുത്തുറ്റതും സുരക്ഷിതവുമായ അന്തരീക്ഷം നൽകുന്നു. കൂടാതെ \sudo കോൺഫിഗറേഷൻ എളുപ്പമാണ്. ചില Linux വിതരണങ്ങളിൽ സ്ഥിരസ്ഥിതിയായി \sudo പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ട്, എന്നാൽ ഇന്നത്തെ മിക്ക ഡിസ്ട്രോകൾക്കും നിങ്ങൾ അത് ഒരു സുരക്ഷാ നടപടിയായി പ്രവർത്തനക്ഷമമാക്കേണ്ടതുണ്ട്.
സുഡോയിലേക്ക് ഒരു ഉപയോക്താവിനെ (ബോബ്) ചേർക്കുന്നതിന് താഴെയുള്ള കമാൻഡ് റൂട്ടായി പ്രവർത്തിപ്പിക്കുക.
adduser bob sudo
ഇപ്പോഴത്തേക്ക് ഇത്രമാത്രം. രസകരമായ മറ്റൊരു ലേഖനവുമായി ഞാൻ ഇവിടെ വീണ്ടും വരും. അതുവരെ തുടരുക, Tecmint-ലേക്ക് കണക്റ്റ് ചെയ്യുക. ഞങ്ങളുടെ അഭിപ്രായ വിഭാഗത്തിൽ നിങ്ങളുടെ വിലയേറിയ ഫീഡ്uബാക്ക് ഞങ്ങൾക്ക് നൽകാൻ മറക്കരുത്.