RHCSA സീരീസ്: ACL-കളും (ആക്സസ് കൺട്രോൾ ലിസ്റ്റുകളും) മൗണ്ടിംഗ് സാംബ/NFS ഷെയറുകളും ഉപയോഗിക്കുന്നു - ഭാഗം 7


കഴിഞ്ഞ ലേഖനത്തിൽ (RHCSA സീരീസ് ഭാഗം 6) parted, ssm എന്നിവ ഉപയോഗിച്ച് ലോക്കൽ സിസ്റ്റം സ്റ്റോറേജ് എങ്ങനെ സജ്ജീകരിക്കാമെന്നും കോൺഫിഗർ ചെയ്യാമെന്നും ഞങ്ങൾ വിശദീകരിക്കാൻ തുടങ്ങി.

സിസ്റ്റം ബൂട്ട് സമയത്ത് ഒരു പാസ്uവേഡ് ഉപയോഗിച്ച് എൻക്രിപ്റ്റ് ചെയ്ത വോള്യങ്ങൾ എങ്ങനെ സൃഷ്ടിക്കാമെന്നും മൗണ്ട് ചെയ്യാമെന്നും ഞങ്ങൾ ചർച്ച ചെയ്തു. കൂടാതെ, മൗണ്ട് ചെയ്ത ഫയൽസിസ്റ്റമുകളിൽ നിർണായകമായ സ്റ്റോറേജ് മാനേജ്മെന്റ് പ്രവർത്തനങ്ങൾ നടത്തുന്നത് ഒഴിവാക്കണമെന്ന് ഞങ്ങൾ മുന്നറിയിപ്പ് നൽകി. അത് മനസ്സിൽ വെച്ചുകൊണ്ട് ഞങ്ങൾ ഇപ്പോൾ Red Hat Enterprise Linux 7-ൽ ഏറ്റവും കൂടുതൽ ഉപയോഗിക്കുന്ന ഫയൽ സിസ്റ്റം ഫോർമാറ്റുകൾ അവലോകനം ചെയ്യും, തുടർന്ന് നെറ്റ്uവർക്ക് ഫയൽസിസ്റ്റമുകൾ (CIFS, NFS) സ്വയമേവയും സ്വയമേവയും മൗണ്ടുചെയ്യൽ, ഉപയോഗിക്കൽ, അൺമൗണ്ട് ചെയ്യൽ എന്നീ വിഷയങ്ങൾ ഉൾക്കൊള്ളുന്നു. നിങ്ങളുടെ സിസ്റ്റത്തിനായുള്ള ആക്സസ് നിയന്ത്രണ ലിസ്റ്റുകളുടെ.

തുടരുന്നതിന് മുമ്പ്, നിങ്ങൾക്ക് ഒരു സാംബ സെർവറും ഒരു NFS സെർവറും ലഭ്യമാണെന്ന് ഉറപ്പാക്കുക (NFSv2 ഇനി RHEL 7-ൽ പിന്തുണയ്uക്കില്ല എന്നത് ശ്രദ്ധിക്കുക).

ഈ ഗൈഡിനിടെ ഞങ്ങൾ IP 192.168.0.10 ഉള്ള ഒരു മെഷീൻ ഉപയോഗിക്കും, അതിൽ രണ്ട് സേവനങ്ങളും സെർവറായി പ്രവർത്തിക്കുന്നു, കൂടാതെ IP വിലാസം 192.168.0.18 ഉള്ള ഒരു RHEL 7 ബോക്uസ് ക്ലയന്റായി. പിന്നീട് ലേഖനത്തിൽ നിങ്ങൾ ക്ലയന്റിൽ ഇൻസ്റ്റാൾ ചെയ്യേണ്ട പാക്കേജുകൾ ഞങ്ങൾ നിങ്ങളോട് പറയും.

RHEL 7-ലെ ഫയൽ സിസ്റ്റം ഫോർമാറ്റുകൾ

RHEL 7 മുതൽ, XFS അതിന്റെ ഉയർന്ന പ്രകടനവും സ്കേലബിളിറ്റിയും കാരണം എല്ലാ ആർക്കിടെക്ചറുകൾക്കുമുള്ള സ്ഥിര ഫയൽ സിസ്റ്റമായി അവതരിപ്പിച്ചു. മുഖ്യധാരാ ഹാർഡ്uവെയറിനായി Red Hat-ഉം അതിന്റെ പങ്കാളികളും നടത്തുന്ന ഏറ്റവും പുതിയ ടെസ്റ്റുകൾ പ്രകാരം ഇത് നിലവിൽ പരമാവധി 500 TB ഫയൽസിസ്റ്റം വലുപ്പത്തെ പിന്തുണയ്ക്കുന്നു.

കൂടാതെ, ext3 അല്ലെങ്കിൽ ext4 പോലെയല്ല (ext2 എന്നത് RHEL 7-ൽ നിന്ന് ഒഴിവാക്കിയതായി കണക്കാക്കുന്നു) സ്ഥിരസ്ഥിതി മൌണ്ട് ഓപ്ഷനുകളായി, XFS, user_xattr (വിപുലീകരിച്ച ഉപയോക്തൃ ആട്രിബ്യൂട്ടുകൾ), acl (POSIX ആക്സസ് കൺട്രോൾ ലിസ്റ്റുകൾ) എന്നിവ പ്രാപ്തമാക്കുന്നു. ), അതായത് ഒരു XFS ഫയൽസിസ്റ്റം മൌണ്ട് ചെയ്യുമ്പോൾ കമാൻഡ് ലൈനിലോ /etc/fstab-ലോ ആ ഓപ്uഷനുകൾ നിങ്ങൾ വ്യക്തമായി വ്യക്തമാക്കേണ്ടതില്ല എന്നാണ് (ഈ അവസാന സന്ദർഭത്തിൽ അത്തരം ഓപ്ഷനുകൾ പ്രവർത്തനരഹിതമാക്കണമെങ്കിൽ, നിങ്ങൾ വ്യക്തമായി < ഉപയോഗിക്കണം. b>no_acl കൂടാതെ no_user_xattr).

ഒരു ഫയലിന്റെ മൈം ടൈപ്പ്, ക്യാരക്ടർ സെറ്റ് അല്ലെങ്കിൽ എൻകോഡിംഗ് പോലുള്ള അനിയന്ത്രിതമായ അധിക വിവരങ്ങൾ സംഭരിക്കുന്നതിന് ഫയലുകൾക്കും ഡയറക്uടറികൾക്കും വിപുലീകൃത ഉപയോക്തൃ ആട്രിബ്യൂട്ടുകൾ നൽകാമെന്നത് ഓർക്കുക, അതേസമയം ഉപയോക്തൃ ആട്രിബ്യൂട്ടുകൾക്കുള്ള ആക്uസസ് അനുമതികൾ സാധാരണ ഫയൽ പെർമിഷൻ ബിറ്റുകളാൽ നിർവചിക്കപ്പെടുന്നു.

ഓരോ സിസ്റ്റം അഡ്uമിനിസ്uട്രേറ്റർക്കും, തുടക്കക്കാരനോ വിദഗ്ദ്ധനോ, ഫയലുകളിലും ഡയറക്uടറികളിലും ഉള്ള പതിവ് ആക്uസസ് അനുമതികൾ നന്നായി അറിയാം, അത് ഉടമയ്uക്കും ഗ്രൂപ്പിനും \ലോകം (മറ്റെല്ലാവർക്കും) ചില പ്രത്യേകാവകാശങ്ങൾ (വായിക്കുക, എഴുതുക, നടപ്പിലാക്കുക) വ്യക്തമാക്കുന്നു. ) എന്നിരുന്നാലും, നിങ്ങളുടെ മെമ്മറി അൽപ്പം പുതുക്കണമെങ്കിൽ RHCSA പരമ്പരയുടെ ഭാഗം 3 റഫർ ചെയ്യാൻ മടിക്കേണ്ടതില്ല.

എന്നിരുന്നാലും, വ്യത്യസ്uത ഉപയോക്താക്കൾക്കായി വ്യത്യസ്uത അനുമതികൾ കോൺഫിഗർ ചെയ്യാൻ സ്റ്റാൻഡേർഡ് ugo/rwx സെറ്റ് അനുവദിക്കാത്തതിനാൽ, ഫയലുകൾക്കും ഡയറക്uടറികൾക്കുമുള്ള കൂടുതൽ വിശദമായ ആക്uസസ് അവകാശങ്ങൾ സാധാരണ പെർമിഷനുകളാൽ നിർവചിക്കുന്നതിന് വേണ്ടി ACL-കൾ അവതരിപ്പിച്ചു.

വാസ്തവത്തിൽ, ACL-നിർവചിച്ച അനുമതികൾ ഫയൽ പെർമിഷൻ ബിറ്റുകൾ വ്യക്തമാക്കിയ അനുമതികളുടെ ഒരു സൂപ്പർസെറ്റാണ്. ഇതെല്ലാം വിവർത്തനം ചെയ്യുന്നതെങ്ങനെയെന്ന് നമുക്ക് നോക്കാം യഥാർത്ഥ ലോകത്ത്.

1. രണ്ട് തരത്തിലുള്ള ACL-കൾ ഉണ്ട്: ആക്uസസ് ACL-കൾ, അവ ഒരു നിർദ്ദിഷ്ട ഫയലിലേക്കോ ഒരു ഡയറക്uടറിയിലോ പ്രയോഗിക്കാൻ കഴിയും), കൂടാതെ ഒരു ഡയറക്uടറിയിൽ മാത്രം പ്രയോഗിക്കാൻ കഴിയുന്ന ഡിഫോൾട്ട് ACL-കൾ. അതിൽ അടങ്ങിയിരിക്കുന്ന ഫയലുകൾക്ക് ഒരു ACL സെറ്റ് ഇല്ലെങ്കിൽ, അവയുടെ പാരന്റ് ഡയറക്uടറിയുടെ ഡിഫോൾട്ട് ACL അവയ്ക്ക് ലഭിക്കും.

2. ആരംഭിക്കുന്നതിന്, ഓരോ ഉപയോക്താവിനും ഓരോ ഗ്രൂപ്പിനും അല്ലെങ്കിൽ ഒരു ഫയലിന്റെ ഉടമസ്ഥതയിലുള്ള ഗ്രൂപ്പിൽ ഇല്ലാത്ത ഓരോ ഉപയോക്താവിനും ACL-കൾ കോൺഫിഗർ ചെയ്യാവുന്നതാണ്.

3. യഥാക്രമം -m അല്ലെങ്കിൽ -x ഓപ്ഷനുകൾ ഉപയോഗിച്ച് setfacl ഉപയോഗിച്ച് ACL-കൾ സജ്ജീകരിച്ചിരിക്കുന്നു (നീക്കംചെയ്യുന്നു).

ഉദാഹരണത്തിന്, നമുക്ക് tecmint എന്ന പേരിൽ ഒരു ഗ്രൂപ്പ് ഉണ്ടാക്കാം, അതിലേക്ക് johndoe, davenull എന്നീ ഉപയോക്താക്കളെ ചേർക്കാം:

# groupadd tecmint
# useradd johndoe
# useradd davenull
# usermod -a -G tecmint johndoe
# usermod -a -G tecmint davenull

രണ്ട് ഉപയോക്താക്കളും സപ്ലിമെന്ററി ഗ്രൂപ്പ് ടെക്uമിന്റിൽ പെട്ടവരാണെന്ന് നമുക്ക് പരിശോധിക്കാം:

# id johndoe
# id davenull

ഇനി /mnt-നുള്ളിൽ പ്ലേഗ്രൗണ്ട് എന്നൊരു ഡയറക്ടറിയും അതിനുള്ളിൽ testfile.txt എന്ന ഫയലും സൃഷ്ടിക്കാം. ഞങ്ങൾ ഗ്രൂപ്പ് ഉടമയെ tecmint ആയി സജ്ജീകരിക്കുകയും അതിന്റെ സ്ഥിരസ്ഥിതി ugo/rwx അനുമതികൾ 770 ആയി മാറ്റുകയും ചെയ്യും (ഫയലിന്റെ ഉടമയ്ക്കും ഗ്രൂപ്പ് ഉടമയ്ക്കും അനുവദിച്ചിട്ടുള്ള അനുമതികൾ വായിക്കാനും എഴുതാനും നടപ്പിലാക്കാനും):

# mkdir /mnt/playground
# touch /mnt/playground/testfile.txt
# chmod 770 /mnt/playground/testfile.txt

തുടർന്ന്, ആ ക്രമത്തിൽ ഉപയോക്താവിനെ johndoe, davenull എന്നിവയിലേക്ക് മാറ്റി ഫയലിലേക്ക് എഴുതുക:

echo "My name is John Doe" > /mnt/playground/testfile.txt
echo "My name is Dave Null" >> /mnt/playground/testfile.txt

ഇതുവരെ വളരെ നല്ലതായിരുന്നു. ഇപ്പോൾ നമുക്ക് ഫയലിലേക്ക് എഴുതാൻ ഉപയോക്താവിനെ അനുവദിക്കാം - കൂടാതെ റൈറ്റ് ഓപ്പറേഷൻ പരാജയപ്പെടും, അത് പ്രതീക്ഷിച്ചിരുന്നു.

എന്നാൽ നമുക്ക് യഥാർത്ഥത്തിൽ /mnt/playground/testfile.txt-ൽ എഴുതാനുള്ള അനുമതികൾ ലഭിക്കാൻ ഗകനേപ (ഗ്രൂപ്പ് ടെക്uമിന്റ് അംഗമല്ലാത്ത) ഉപയോക്താവിനെ ആവശ്യമുണ്ടെങ്കിൽ എന്തുചെയ്യും? ആ ഉപയോക്തൃ അക്കൗണ്ട് ഗ്രൂപ്പ് tecmint-ലേക്ക് ചേർക്കുന്നതാണ് നിങ്ങളുടെ മനസ്സിൽ ആദ്യം വരുന്ന കാര്യം. എന്നാൽ ഗ്രൂപ്പിനായി സജ്ജീകരിച്ചിരിക്കുന്ന റൈറ്റ് ബിറ്റ് എല്ലാ ഫയലുകളിലും അത് അദ്ദേഹത്തിന് എഴുതാനുള്ള അനുമതി നൽകും, ഞങ്ങൾക്ക് അത് ആവശ്യമില്ല. അദ്ദേഹത്തിന് /mnt/playground/testfile.txt-ലേക്ക് എഴുതാൻ മാത്രമേ ഞങ്ങൾ ആഗ്രഹിക്കുന്നുള്ളൂ.

# touch /mnt/playground/testfile.txt
# chown :tecmint /mnt/playground/testfile.txt
# chmod 777 /mnt/playground/testfile.txt
# su johndoe
$ echo "My name is John Doe" > /mnt/playground/testfile.txt
$ su davenull
$ echo "My name is Dave Null" >> /mnt/playground/testfile.txt
$ su gacanepa
$ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

/mnt/playground/testfile.txt എന്നതിലേക്ക് ഗകനേപയ്ക്ക് വായിക്കാനും എഴുതാനും ആക്uസസ് നൽകാം.

റൂട്ട് ആയി പ്രവർത്തിപ്പിക്കുക,

# setfacl -R -m u:gacanepa:rwx /mnt/playground

ടെസ്റ്റ് ഫയലിലേക്ക് എഴുതാൻ ഗകനേപയെ അനുവദിക്കുന്ന ഒരു ACL നിങ്ങൾ വിജയകരമായി ചേർത്തു. തുടർന്ന് ഗകനേപ എന്ന ഉപയോക്താവിലേക്ക് മാറുകയും ഫയലിലേക്ക് വീണ്ടും എഴുതാൻ ശ്രമിക്കുകയും ചെയ്യുക:

$ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

ഒരു നിർദ്ദിഷ്uട ഫയലിനോ ഡയറക്uടറിക്കോ വേണ്ടിയുള്ള ACL-കൾ കാണുന്നതിന്, getfacl ഉപയോഗിക്കുക:

# getfacl /mnt/playground/testfile.txt

ഒരു ഡയറക്uടറിയിലേക്ക് സ്ഥിരസ്ഥിതി ACL സജ്ജീകരിക്കുന്നതിന് (അതിന്റെ ഉള്ളടക്കം മറിച്ചെഴുതിയില്ലെങ്കിൽ അത് അവകാശമാക്കും), റൂളിനു മുമ്പായി d: ചേർക്കുകയും ഫയലിന്റെ പേരിന് പകരം ഒരു ഡയറക്ടറി വ്യക്തമാക്കുകയും ചെയ്യുക:

# setfacl -m d:o:r /mnt/playground

മുകളിലെ ACL, ഉടമ ഗ്രൂപ്പിൽ ഇല്ലാത്ത ഉപയോക്താക്കളെ /mnt/playground ഡയറക്uടറിയുടെ ഭാവി ഉള്ളടക്കങ്ങളിലേക്ക് റീഡ് ആക്uസസ്സ് അനുവദിക്കും. മാറ്റത്തിന് മുമ്പും ശേഷവും getfacl /mnt/playground-ന്റെ ഔട്ട്പുട്ടിലെ വ്യത്യാസം ശ്രദ്ധിക്കുക:

ഔദ്യോഗിക RHEL 7 സ്റ്റോറേജ് അഡ്മിനിസ്uട്രേഷൻ ഗൈഡിലെ അദ്ധ്യായം 20 കൂടുതൽ ACL ഉദാഹരണങ്ങൾ നൽകുന്നു, നിങ്ങൾ അത് പരിശോധിച്ച് റഫറൻസ് ആയി ഉപയോഗിക്കണമെന്ന് ഞാൻ വളരെ ശുപാർശ ചെയ്യുന്നു.