ലിനക്സ് ഷെൽ പ്രോഗ്രാമിങ് #1

പ്രൈം ജ്യോതി under പരമ്പര on 3 ഏപ്രിൽ, 2014

ലിനക്സ് ഷെൽ പ്രോഗ്രാമിങ് പഠിക്കാൻ തുടങ്ങുന്നതിനുമുമ്പ് കെർണലിനെക്കുറിച്ച് അറിയേണ്ടതാവശ്യമാണ്. ഒരു ലിനക്സ് സിസ്റ്റത്തിൽ ഹാർഡ്‌‌വേറിനെ ആവശ്യാനുസരണം പ്രവർത്തിപ്പിക്കുന്ന കെർണലാണ് പ്രധാന ഘടകം. പ്രോഗ്രാമുകൾ ഡിസ്കിൽ നിന്നും റീഡ് ചെയ്യൂക, അവ റൺ ചെയ്യുക, വിവിധ പ്രോഗ്രാമുകൾക്ക് ആവശ്യമായ ഹാർഡ്‌‌വേർ ഘടങ്ങളെ ആവശ്യാനുസരണം പ്രവർത്തിപ്പിക്കുക എന്നിവയാണ് കെർണലിന്റെ ചില ചുമതലകൾ. കെർണലിനെയും ഉയോക്താവിനെയും ബന്ധിപ്പിക്കുന്ന ഒരു മധ്യസ്ഥ പ്രോഗ്രാമാണ് ഷെൽ. ഉപയോക്താവ് നല്കുന്ന നിർദ്ദേശങ്ങൾ ഷെൽ അപഗ്രഥിക്കുകയും സാധൂകരിക്കുകയും ചെയ്തശേഷം റൺ ചെയ്യാനായി കെർണലിനു കൈമാറുന്നു. അതുപോലെ തന്നെ കെർണൽ റൺ ചെയ്ത പ്രോഗ്രാമുകളുടെ ഫലങ്ങൾ ഉപയോക്താവിനു കൈമാറുകയും ചെയ്യുന്നു. ഇതു കൂടാതെ ഒന്നിലധികം ഫയലുകളെ വിവക്ഷിക്കാവുന്നതരത്തിലുള്ള പാറ്റേണുകളെ അവയുമായി യോജിക്കുന്ന ഫയൽ/ഡയറക്റ്ററി പേരുകളാക്കി മാറ്റുകയും ചെയ്യുന്നു.

ഷെൽ ഒരു പ്രോഗ്രാമിങ് ഭാഷ പോലെ ഉപയോഗിക്കാനും കഴിയും. വിവിധ കമാന്റുകളെ കൂട്ടിയിണക്കി ആവശ്യാനുസരണം റൺ ചെയ്യാൻ ഇതു വഴി കഴിയും. ഇങ്ങനെയുള്ള പ്രോഗ്രാമുകളെ ഷെൽ സ്ക്രിപ്റ്റുകൾ എന്നു പറയുന്നു. ലിനക്സിൽ bash, sh, ksh, csh എന്നിങ്ങനെ ഒന്നിലധികം ഷെല്ലുകൾ ലഭ്യമാണ്. bash ഷെൽ മിക്കവാറും എല്ലാ ലിനക്സ് സിസ്റ്റങ്ങളിലും ലഭ്യമായതിനാൽ ബാഷ് ഷെൽ ആകും ഇവിടെ ഉപയോഗിക്കുക. ഷെല്ലിന്റെ പ്രവർത്തനരീതികൾ മനസ്സിലാക്കുന്നതിന് ലിനക്സ്, ഫയലുകളെയും ഡയറക്റ്ററികളേയും എങ്ങനെ കൈകാര്യം ചെയ്യുന്നുവെന്നറിയുന്നത് ആവശ്യമാണ്. ഉപയോക്താവിന് ഉപയോഗിക്കേണ്ട മിക്കവാറും എല്ലാ കാര്യങ്ങളും ഫയലുകളായിട്ടാണ് ലിനക്സ് കാണുന്നത്. ഈ വീക്ഷണകോണിൽ ഒരു ടെക്സ്റ്റ് ഫയലും ഒരു പ്രിന്ററും, ഫയലുകളായി ലിനക്സ് കണക്കാക്കുന്നു. ഇതുകാരണം ഡേറ്റ വിവിധ തരം ഡിവൈസുകളിലേക്ക് എഴുതുന്നതിനും വായിക്കുതിനും ഏകീകൃത രീതി ഉപയോഗിക്കാൻ ഉപയോക്താക്കൾക്ക് കഴിയുന്നു.

ലിനക്സ് ഫയലുകളുടെ വിന്യാസം

ലിനക്സ് ഫയൽ സിസ്റ്റത്തിനെ അനേകം ശാഖകളുള്ള ഒരു വൃക്ഷത്തോടുപമിക്കാവുന്നതാണ്. മറ്റ് ഫയലുകളെയും ഡയറക്റ്ററികളെയും ഉൾക്കൊള്ളുന്ന തായ്ത്തടിയാണ് റൂട്ട് ഡയറക്റ്ററി. റൂട്ട് ഡയറക്ടറി / (സ്ലാഷ്)എന്ന ചിഹ്നം കൊണ്ട് സൂചിപ്പിക്കുന്നു. റൂട്ട് ഡയറക്റ്ററിയിൽ മറ്റു ഡയറക്റ്ററികളും ഫയലുകളും ഉണ്ടാകും. ഒരു വൃക്ഷ ശാഖയ്ക്ക് വളരെയധികം ഉപശാഖകളെന്ന പോലെ ഒരു ഡയറക്റ്ററിക്കുള്ളിൽ അനവധി ഫയലുകളും മറ്റ് ഡയറക്റ്ററികളും ഉണ്ടാകാം. ലിനക്സ് പ്രവർത്തിക്കുന്നതിനാവശ്യമായ ഫയലുകളും ഡിസ്കുകൾ, പ്രിന്ററുകൾ, മറ്റ് ഇന്പുട്ട്/ഔട്ട്പുട്ട് ഡിവൈസുകൾ എന്നിവയെ പ്രതിനിധീകരിക്കുന്ന ഫയലുകളും, ഉപയോക്താക്കളുടെ ഡേറ്റാ ഫയലുകളും മറ്റും ഫയൽ സിസ്റ്റത്തിലെ വിവിധ ഡയറക്റ്ററികളിലായി വ്യാപിച്ചു കിടക്കുന്നു. Linux Standard Base എന്ന മാനദണ്ഡത്തിനനുസരിച്ചാണ് ഈ വിന്യാസമെന്നതിനാൽ വിവിധ ഡിസ്റ്റ്രിബ്യൂഷനുകളാണെങ്കിലും ലിനക്സിന് പ്രവർത്തിക്കാനാവശ്യമായ ഫയലുകൾ മുൻനിശ്ചയിക്കപ്പെട്ട ഡയറക്റ്ററികളിൽ തന്നെ ലഭ്യമായിരിക്കും. ഇങ്ങനെയുള്ള ചില ഡയറക്റ്ററികളിൽ പ്രധാനപ്പെട്ടവ താഴെ കൊടുത്തിരിക്കുന്നു.

  • / : റൂട്ട് ഡയറക്റ്ററി. മറ്റെല്ലാ ഡയറക്റ്ററികളും ഫയലുകളും ഈ ഡയറക്റ്ററിയിൽ സ്ഥിതി ചെയ്യുന്നു.
  • /boot : സിസ്റ്റം ബൂട്ടു ചെയ്യുന്നതിനാവശ്യമായ ഫയലുകളാണ് ഈ ഡയറക്റ്ററിയിൽ ഉണ്ടാകുക.
  • /bin : ഉപയോക്താക്കൾ സാധാരണയായി ഉപയോഗിക്കുന്ന പ്രോഗ്രാമുകൾ.
  • /dev : ഡിവൈസ് ഫയലുകൾ. പ്രിന്ററുകൾ, ഡിസ്കുകൾ എന്നിവ.
  • /home : ഉപയോക്താക്കളുടെ ഹോം ഡയറക്റ്ററികൾ.
  • /lib : പ്രോഗ്രാമുകൾക്കാവശ്യമായ പൊതു ലൈബ്രറി ഫയലുകൾ
  • /tmp : താല്കാലികമായി നിർമ്മിക്കുന്ന ഫയലുകൾക്കു വേണ്ടിയുള്ള ഡയറക്റ്ററി.
  • /opt : മറ്റു സ്രോതസ്സുകളിൽ നിന്നുള്ള പ്രോഗ്രാമുകൾ.

ഒരു ഉപയോക്താവ് ലിനക്സ് സിസ്റ്റത്തിൽ ടെർമിനൽ വഴി ലോഗിൻ ചെയ്യുകയോ, ഒരു ടെർമിനൽ തുറക്കുകയോ ചെയ്യുമ്പോൾ സാധാരണയായി അവരുടെ ഹോം ഡയറക്റ്ററിയിലാണ് ആദ്യം എത്തിച്ചേരുക. നേരത്തേ സൂചിപ്പിച്ചതു പോലെ ഇത് /home എന്ന ഡയറക്റ്ററിയിൽ ഓരോ ഉപയോക്താവിനുമുള്ള ഡയറക്റ്ററിയാണിത്. ഉദാഹരണത്തിന് prime എന്ന ഉപയോക്താവ് ടെർമിനലിൽ നിന്ന് ലോഗിൻ ചെയ്യുകയോ, ടെർമിനൽ തുറക്കുകയോ ചെയ്യുമ്പോൾ /home/prime എന്ന ഡയറക്റ്ററിയിലാകും എത്തുക. ഉപയോക്താവിന്റെ ഇഷ്ടാനുസരണം ഈ ഡയറക്റ്ററിക്കുള്ളിൽ ഫയലുകളും ഡയറക്റ്ററികളും സൃഷ്ടിക്കാവുന്നതാണ്. ഒരു ടെർമിനൽ തുറക്കുമ്പോൾ‌ ഉപയോക്താവിൽ നിന്നും നിർദ്ദേശങ്ങൾ സ്വീകരിക്കാൻ ഷെൽ തയ്യാറാണ് എന്നു സൂചിപ്പിക്കുന്ന ഷെൽ പ്രോംപ്റ്റുകൾ കാണാവുന്നതാണ്. സാധാരണ ഉപയോക്താക്കളുടെ പ്രോംപ്റ്റ് $ എന്ന ചിഹ്നമായിരിക്കും. സെറ്റപ് ചെയ്ത രീതിയനുസരിച്ച് പ്രോംപ്റ്റിൽ ഉപയോക്താവിന്റെ പേര്/ഇപ്പോഴുള്ള ഡയറക്റ്ററിയുടെ പേര്/സിസ്റ്റത്തിന്റെ പേര് ഇവയും ഉണ്ടായേക്കാം. ഇപ്പോഴുള്ള ഡയറക്റ്ററിയുടെ പേര് പ്രോംപ്റ്റിൽ കാണാൻ പറ്റുന്നിലെങ്കിൽ pwd എന്ന കമാന്റ് ഉപയോഗിച്ച് കണ്ടുപിടിക്കാൻ കഴിയും. pwd എന്നത് print working directory എന്നതിന്റെ ചുരുക്കമായി കണക്കാക്കാവുന്നതാണ്. ലിനക്സിൽ അടിക്കടി ഉപയോഗിക്കുന്ന പല കമാന്റുകളുടെ പേരുകളും രണ്ടോ മൂന്നോ അക്ഷരങ്ങൾ മാത്രമുള്ളവയാണ്. ഷെൽ വലിയ അക്ഷരങ്ങളെയും ചെറിയ അക്ഷരങ്ങളെയും തിരിച്ചറിയുന്നതിനാൽ pwd, Pwd, PWD എന്നിവ വ്യത്യസ്ത കമാന്റുകളായി കണക്കാക്കും.

[prime@ford ~]$ pwd
/home/prime</pre>

ഇവിടെ [prime@ford ~]$ എന്നത് ഷെൽ പ്രോംപ്റ്റും, pwd എന്നത് റൺചെയ്യേണ്ട കമാന്റും /home/prime എന്നത് കമാന്റിന്റെ ഔട്ട്പുട്ടും ആണ്. പ്രോംപ്റ്റിലെ ~ ചിഹ്നം ശ്രദ്ധിച്ചിരിക്കുമല്ലോ? ഇത് ഹോം ഡയറക്റ്ററിയുടെ ചുരുക്കെഴുത്താണ്. നമ്മുടെ ഹോം ഡയറക്റ്ററിയെ കുറിക്കേണ്ട സന്ദർഭങ്ങളിൽ ~ എന്നെഴുതിയാൽ മതിയാകും. ഇനി നമുക്ക് /tmp എന്ന ഡയറക്റ്ററിയിലേക്ക് പോകണമെന്നിരിക്കട്ടെ, പ്രോംപ്റ്റിൽ cd /tmp എന്നു കൊടുത്താൽ മതിയാകും.

[prime@ford ~]$ cd /tmp
[prime@ford tmp]$

cd എന്നത് change current directory എന്നതിന്റെ ചുരുക്കമാണ്. cdക്കു ശേഷമുള്ള /tmp നമുക്ക് പോകേണ്ട ഡയറക്റ്ററിയാണ്.

ഇവിടെ ശ്രദ്ധിക്കേണ്ട ഒരു കാര്യം /tmpലേക്കു മാറിയ കാര്യം വിജയകരമായി പൂർത്തിയാക്കി എന്നുള്ള കാര്യം ഷെൽ എടുത്തു പറഞ്ഞിട്ടില്ല എന്നുള്ളതാണ്. /tmp ലേക്കു മാറിയ ശേഷം പ്രോംപ്റ്റ് പ്രിന്റ് ചെയ്യുകമാത്രമേ ചെയ്തിട്ടുള്ളൂ. പ്രോംപ്റ്റിൽ ഡയറക്റ്ററിയുടെ പേര് കാണിക്കണമെന്ന വിധത്തിൽ സംവിധാനം ചെയ്തിരിക്കുന്നതിനാൽ tmp എന്നത് അവിടെ കാണുന്നതാണ്. ഷെൽ മാത്രമല്ല, മറ്റു കമാന്റുകളും ഇതുപോലെ മിതഭാഷികളാണ്. ഷെൽസ്ക്രിപ്റ്റുകൾ എഴുതുന്ന സമയം ഷെല്ലിന്റെയും മറ്റു കമാന്റുകളുടെയും മിതഭാഷിത്വം എന്തുകൊണ്ടാണെന്നും അത് എത്രമാത്രം ഉപയോഗകരവുമാണെന്ന് വ്യക്തമാകും.

ഇനി തിരിച്ച് ഹോം ഡയറക്റ്ററിയിലേക്ക് പോകണമെങ്കിൽ cd /home/prime എന്നോ cd ~ എന്നോ റൺ ചെയ്താൽ മതിയാകും. cd എന്നു മാത്രം റൺ ചെയ്താൽ ഏതു ഡയറക്റ്ററിയിൽ നിന്നായാലും നമ്മുടെ ഹോം ഡയറക്റ്ററിയിലേക്ക് എത്തും. പലപ്പോഴും നമുക്ക് ഹോം ഡയറക്റ്ററിയിലേക്ക് പോകേണ്ടിവരുന്നതിനാൽ ഇത് കാര്യം എളുപ്പമാക്കുന്നു. ഇതുപോലെ മറ്റൊരു ചുരുക്കെഴുത്താണ് cd - ഇങ്ങനെ ചെയ്യുമ്പോൾ നേരത്തേയുണ്ടായിരുന്ന ഡയറക്റ്ററിയിലേക്ക് പോകുന്നു. ഒരു ഡയറക്റ്ററിയിൽ നിന്ന് മറ്റൊരു ഡയറക്റ്ററിയിലേക്ക് തിരിച്ചും മറിച്ചും പോകേണ്ടിവരുമ്പോൾ ഡയറക്റ്ററിയുടെ പേര് മുഴുവൻ ടൈപ്പ് ചെയ്യാതെ cd - എന്നു മാത്രം ടൈപ്പു ചെയ്യുന്നത് വളരെ സൗകര്യപ്രദമാണെല്ലോ.

ഇനി ഒരു ഡയറക്റ്ററിയിൽ ഏതെല്ലാം ഫയലുകൾ അല്ലെങ്കിൽ ഡയറക്റ്ററികൾ ഉണ്ടെന്നു കണ്ടുപിടിക്കുന്നത് എങ്ങനെയെന്നു നോക്കാം. ഇതിനായി ls എന്ന കമാന്റ് ആണ് ഉപയോഗിക്കുന്നത്. list files/list directory contents എന്നതിന്റെ ചുരുക്കമാണ് ls.

[prime@ford ~]$ ls /tmp
gman.bash.man     kde-prime      lu33fvpi.tmp  systemd-private-1R3sY9
hsperfdata_prime  ksocket-prime  orbit-prime   systemd-private-17GYRV
[prime@ford ~]$

ഇവിടെ /tmp ലെ ഫയലുകൾ ലിസ്റ്റ് ചെയ്യാനാണ് ls നോട് ആവശ്യപ്പെട്ടത്. നേരത്തേ സൂചിപ്പിച്ചതു പോലെ മിതഭാഷിത്വം ഇവിടെയും കാണാം. എത്ര ഫയലുകൾ ഉണ്ടെന്നോ, ഫയലുകളുടെ വലിപ്പം എത്രയാണെന്നോ ls പറഞ്ഞിട്ടില്ലെന്ന് ശ്രദ്ധിക്കുക. ഫയലുകളുടെ വലിപ്പം എത്രയാണെന്ന് അറിയണമെങ്കിൽ -l എന്ന ഓപ്ഷൻ കൂടി കൊടുക്കണം.

[prime@ford ~]$ ls -l /tmp
total 304
-rw-rw-r--. 1 prime prime 308869 Dec 19 16:35 gman.bash.man
drwxr-xr-x. 2 prime prime     80 Dec 19 19:30 hsperfdata_prime
drwx------. 2 prime prime    360 Dec 19 20:06 kde-prime
drwx------. 2 prime prime    120 Dec 19 19:55 ksocket-prime
drwx------. 2 prime prime    800 Dec 19 19:59 lu33fvpi.tmp
drwx------. 2 prime prime     40 Jan  1  1970 orbit-prime
drwx------. 3 root  root      60 Dec 19 15:57 systemd-private-17GYRV
drwx------. 3 root  root      60 Dec 19 09:35 systemd-private-1R3sY9
[prime@ford ~]$

ഇവിടെ -l എന്നത് ലോങ് ഫോർമാറ്റിൽ ഔട്ട് പുട്ട് വേണം എന്നതിനെ സൂചിപ്പിക്കുന്നു. ഔട്ട്പുട്ടിന്റെ ആദ്യം കാണുന്ന total 304 ഈ ലിസ്റ്റ് ചെയ്ത ഫയലുകൾ 304 ബ്ലോക്കുകൾ ഉപയോഗിച്ചിരിക്കുന്നു എന്ന് സൂചിപ്പിക്കുന്നു. ഫയലുകളുടെ ലിസ്റ്റിങ്ങിൽ ആദ്യം പെർമിഷൻ, ലിങ്കുകളുടെ എണ്ണം, യൂസർ, ഗ്രൂപ്, ഫയൽ സൈസ്, ഫയൽ മോഡിഫൈ ചെയ്യപ്പെട്ട സമയം, ഫയലിന്റെ പേര് എന്നിവയാണ് കാണുന്നത്. ഇനി മുന്നോട്ടു പോകുന്നതിനു മുമ്പ് ഗ്രൂപ്പുകളെക്കുറിച്ചും ഫയൽ പെർമിഷനുകളെക്കുറിച്ചും അറിയേണ്ടതാവശ്യമാണ്.

ഗ്രൂപ്പുകളും ഫയൽ പെർമിഷനുകളും

ലിനക്സ് സിസ്റ്റം ഒരേ സമയം പല ഉപയോക്താക്കൾക്കു ഒരേ സമയം ഉപയോഗിക്കാൻ പറ്റിയവിധത്തിൽ സംവിധാനം ചെയ്തിട്ടുള്ളതാണ്. ഉപയോക്താക്കളുടേയും സിസ്റ്റത്തിന്റെയും സുരക്ഷയ്ക്കും സ്വകാര്യതയ്ക്കുമായി സംവിധാനം ചെയ്തിട്ടുള്ളതാണ് ഗ്രൂപ്പുകളും പെർമിഷനുകളും. ഒരേ തരത്തിലുള്ള ഉപയോക്താക്കളെ ഗ്രൂപ്പുകളായി തിരിക്കാൻ സാധിക്കും. ഉദാഹരണത്തിന് ഒരു സ്കൂളിലെ കുട്ടികളാണ് ഉപയോക്താക്കളെങ്കിൽ അവരെ ഏതു ക്ലാസിലാണ് പഠിക്കുന്നതെന്നനുസരിച്ചും, ഡിവിഷൻ അനുസരിച്ചും വിവിധ ഗ്രൂപ്പുകളാക്കി തിരിക്കാവുന്നതാണ്. ഇതിൻ പ്രകാരം മൂന്നാം ക്ലാസിൽ എ ഡിവിഷനിൽ പഠിക്കുന്ന അതുല്യ എന്നകുട്ടി മൂന്നാം ക്ലാസ്, മൂന്ന് എ എന്നീ ഗ്രൂപ്പുകളിലും, ഒന്നാം ക്ലാസിൽ ബി ഡിവിഷനിൽ പഠിക്കുന്ന മനോജ് എന്ന കുട്ടി ഒന്നാം ക്ലാസ്, ഒന്ന് ബി എന്നീ ഗ്രൂപ്പുകളിലും അംഗങ്ങളായിരിക്കും. അതുപോലെ ആവശ്യമുള്ള മറ്റു ഗ്രൂപ്പുകളിലും അംഗമായേക്കാം. സാധാരണ ഗതിയിൽ ഒരു ഉപയോക്താവ് സൃഷ്ടിക്കുന്ന ഫയലുകൾ അവരുടെ ഹോം ഡയറക്റ്ററിയിലോ, അതിലുള്ളെ മറ്റേതെങ്കിലും ഡയറക്റ്ററിയിലോ ആകും ഉണ്ടാകുക. ഒരു ഉപയോക്താവിന്റെ ഫയലുകൾ മറ്റൊരു ഉപയോക്താവ് കാണേണ്ട ആവശ്യം മിക്കവാറും ഉണ്ടാകില്ലല്ലോ? എന്നാൽ ചില സന്ദർഭങ്ങളിൽ ചില ഫയലുകൾ ഗ്രൂപ്പിലുള്ള ആൾക്കാർ കാണേണ്ടി വരും. ഉദാഹരണത്തിന് സ്കൂളിലെ നാടകോത്സവത്തിന് വിവിധ ക്ലാസുകൾ അവതരിപ്പിക്കുന്ന നാടകങ്ങളുണ്ടെന്നു കരുതുക. രണ്ടാം ക്ലാസിലെ എല്ലാകുട്ടികൾക്കും രണ്ട് എയിലെ മിനേഷ് എഴുതിയ നാടകം വായിക്കാൻ പറ്റണം. എന്നാൽ മറ്റുള്ള ക്ലാസിലെ കുട്ടികൾക്ക് അത് വായിക്കാൻ പറ്റരുത്. ഇവിടെയാണ് ഗ്രൂപ്പുകളും പെർമിഷനുകളും ഉപയോഗപ്പെടുന്നത്. നേരത്തേ കണ്ട ls -l /tmp ന്റെ ഔട്ട്പുട്ടിൽ നിന്നുള്ള ഒരു വരി നോക്കാം.

drwxr-xr-x. 2 prime prime     80 Dec 19 19:30 hsperfdata_prime

ഇതിലെ ആദ്യത്തെ ഭാഗം drwxr-xr-x. ശ്രദ്ധിക്കുക. ആദ്യത്തെ d എന്നത് ലിസ്റ്റ് ചെയ്യപ്പെട്ടത് ഒരു ഡയറക്റ്ററി ആണെന്നു സൂചിപ്പിക്കുന്നു. അതിനു ശേഷമുള്ള 9 അക്ഷരങ്ങൾ പെർമിഷനെ ചിപ്പിക്കുന്നു. ഓരോ ഫയലിനും റീഡ്(r), റൈറ്റ്(w), എക്സിക്യൂട്ട്(x) എന്നിങ്ങനെ മൂന്ന് പെർമിഷനുകളുണ്ട്. ഏതെങ്കിലും പെർമിഷൻ ഇല്ലെങ്കിൽ അക്കാര്യം - കൊണ്ട് സൂചിപ്പിക്കുന്നു ഒരു ഫയലിലെ ഉള്ളടക്കം വായിക്കുവാനുള്ള പെർമിഷനാണ് റീഡ് പെർമിഷൻ, ഉള്ളടക്കം മാറ്റം വരുത്തുവാൻ റൈറ്റ് പെർമിഷൻ ആവശ്യമാണ്. ഒരു പ്രോഗ്രം റൺ ചെയ്യാൻ എക്സിക്യൂട്ട് പെർമിഷൻ ആവശ്യമാണ്.

9 അക്ഷരങ്ങൾ ഉള്ളതിനാൽ മൂന്ന് സെറ്റ് പെർമിഷനുകളെ കുറിക്കുകയാണെന്നു കാണാൻ പ്രയാസമില്ല. ആദ്യത്തെ സെറ്റ് പെർമിഷൻ ഫയലിന്റെ ഉടമസ്ഥനുള്ള പെർമിഷനുകളാണ്. രണ്ടാമത്തേത് ഗ്രൂപ്പിനുള്ള പെർമിഷനുകളും മൂന്നാമത്തെ സെറ്റ് മറ്റുള്ളവർക്കുള്ള പെർമിഷനുകളുമാണ്. ഒരു ഫയലിന്റെ പെർമിഷൻ -rwxr-x--- എന്നാണെങ്കിൽ അതിന്റെ ഉടമസ്ഥന് അത് വായിക്കുവാനും മാറ്റം വരുത്തുവാനും റൺ ചെയ്യാനും കഴിയും. എന്നാൽ ഗ്രൂപ്പിലുള്ളവർക്ക് അത് വായിക്കുവാനും റൺ ചെയ്യുവാനും മാത്രമേ കഴിയൂ. മറ്റുള്ളവർക്കാകട്ടേ, ആ ഫയൽ വായിക്കാൻ പോലും പറ്റില്ല. ഡയറക്റ്ററിയുടെ കാര്യത്തിൽ എക്സിക്യൂട്ട് പെർമിഷൻ, ആ ഡയറക്റ്ററിയിലേക്ക് പ്രവേശിക്കാനുള്ള അനുമതിയെ സൂചിപ്പിക്കുന്നു. ഉദാഹരണത്തിന് നാടകം എന്ന ഡയറക്റ്ററിയുടെ പെർമിഷൻ drwxr-xr-- എന്നാണെന്നു കരുതുക. ഈ ഫയൽ ഒന്ന് ബി എന്ന ഗ്രൂപ്പ്ന്റേതാണെന്നും കരുതുക. അങ്ങനെയാകുമ്പോൾ ഈ ഡയറക്റ്ററിയുടെ ഉടമസ്ഥനും ഒന്ന് ബി എന്ന ഗ്രൂപ്പിലെ അംഗങ്ങൾക്കും ഈ ഡയറക്റ്ററിയിലേക്ക് പ്രവേശിക്കാം. എന്നാൽ മറ്റുള്ള ആർക്കും ഈ ഡയറക്റ്ററിയിൽ പ്രവേശിക്കാൻ പറ്റില്ല.

ഫയലുകളുടെ പെർമിഷനുകൾ എങ്ങനെ മാറ്റാമെന്ന് മറ്റൊരിക്കൽ വിശദീകരിക്കാം.