סדרת RHCSA: השימוש ב־ACLs (רשימות בקרת גישה) והרכבת שיתופי Samba / NFS – חלק 7

במאמר האחרון (סדרת RHCSA חלק 6) התחלנו להסביר כיצד להתקין ולהגדיר אחסון מערכת מקומי באמצעות parted ו־ssm.

RHCSA Series:: Configure ACL’s and Mounting NFS / Samba Shares – Part 7

דיונו כלל גם כיצד ליצור ולעגן אמצעי אחסון מוצפן עם סיסמה במהלך ההפעלה של המערכת. בנוסף, התראנו על חשיבותה של אי אפשרות ביצוע פעולות ניהול אחסון קריטיות על מערכות קבצים מחוברות. עם זאת, כעת נבחן את פורמטי מערכת הקבצים הנפוצים ביותר ב־Red Hat Enterprise Linux 7 ולאחר מכן נעבור לכיסוי הנושאים של עגינה, שימוש ו־הורדה ידנית ואוטומטית של מערכות קבצים רשת (CIFS ו־NFS), בנוסף ליישום של רשימות שליטת גישה למערכת שלך.

דרישות מקדימות

לפני שנמשיך הלאה, אנא וודאו שיש לכם שרת Samba ושרת NFS זמינים (שימו לב כי NFSv2 אינו נתמך עוד ב־RHEL 7).

במהלך המדריך נשתמש במכונה עם כתובת IP 192.168.0.10 עם שני השירותים רצים בו כשרת, ובתיבת RHEL 7 כלקוח עם כתובת IP 192.168.0.18. במאמר נספר לכם בהמשך אילו חבילות תצטרכו להתקין בקליינט.

פורמטי מערכת הקבצים ב־RHEL 7

החל מ־RHEL 7, XFS הוכנס כמערכת הקבצים המוגדרת כברירת מחדל עבור כל הארכיטקטורות עקב ביצועיו וקינון שלו. היא תומכת כיום בגודל מרבי של מערכת קבצים של 500 TB לפי הבדיקות האחרונות שביצעו רד האט והשותפים שלו עבור חומרת רגילה.

בנוסף, XFS מאפשר user_xattr (מאפייני משתמש הרחב) ו־acl (רשימות בקרת גישה POSIX) כאפשרויות הרכבת ברירת מחדל, להבדיל מ־ext3 או ext4 (ext2 נחשבת כמנוסחת מ־RHEL 7), שפירושה שלא עליך לציין את האפשרויות האלו באופן מפורש בשורת הפקודה או ב־/etc/fstab כאשר אתה מרכיב מערכת קבצים של XFS (אם ברצונך להשבית אפשרויות כאלו במקרה האחרון זה, עליך להשתמש באופציות no_acl ו־no_user_xattr באופן מפורש).

שימו לב כי ניתן להקצות את המאפיינים הרחבים של המשתמש לקבצים ולתיקיות לאחסון מידע נוסף ריבוי ערכים כגון סוג המיים, ערכת התווים או הקידוד של קובץ, בעוד שההיתרים לגישה למאפייני המשתמש מוגדרים על ידי ביטי ההיתרים הרגילים של קובץ.

רשימות בקרת גישה

כמו כל מנהל מערכת, בין אם מתחיל או מומחה, מכיר היטב את ההרשאות הנפוצות לגישה לקבצים ולספריות, אשר מגדירות מספר זכותות (קריאה, כתיבה ו-ביצוע) עבור הבעלים, הקבוצה ו"העולם" (כל האחרים). אם כך, תרצה להתייחס ל-חלק 3 של סדרת RHCSA אם אתה זקוק לרענון הזיכרון קצת.

עם זאת, מאחר והסט הרגיל ugo/rwx אינו מאפשר להגדיר רישיות שונות עבור משתמשים שונים, ACLs הושקעו כדי להגדיר זכותות גישה מפורטות יותר לקבצים ולספריות מאשר אלה המצוינות על ידי הרשאות רגילות.

למעשה, הרשאות המוגדרות על ידי ACL הן קבוצה משנית של הרשאות המצוינות על ידי סיביות הרשאה של הקובץ. בואו נראה איך כל זה מתבצע בעולם האמיתי.

1. ישנם שני סוגים של ACLs: ACLs גישה, אשר יכולים להיות מופעלים על קובץ ספציפי או על ספריה), ו-ACLs ברירת מחדל, אשר יכולים להיות מופעלים רק על ספריה. אם לקבצים המכילים אין ACL מוגדר, הם ירודים את ACL הברירת המחדל של הספריה ההורה שלהם.

2. כדי להתחיל, ACLs יכולים להיות מוגדרים לפי משתמש, לפי קבוצה, או לפי משתמש שאינו בקבוצת הבעלים של קובץ.

3. ACLs מוגדרים (ונמחקים) באמצעות setfacl, עם האפשרויות -m או -x, בהתאמה.

לדוגמה, ניצור קבוצה בשם tecmint ונוסיף את המשתמשים johndoe ו-davenull אליה:

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

ונוודא כי שני המשתמשים שייכים לקבוצת התוספת tecmint:

# id johndoe
# id davenull
Verify Users

כעת ניצור תיקייה בשם playground בתוך /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

עד כאן כל טוב. עכשיו נאפשר למשתמש gacanepa לכתוב לקובץ – והפעולה תיכשל, כפי שציפינו.

אבל מה קורה אם באמת נצטרך שהמשתמש gacanepa (שאינו חבר בקבוצה tecmint) יקבל הרשאות כתיבה על /mnt/playground/testfile.txt? הדבר הראשון שעשוי לעלות בדעתך הוא להוסיף את חשבון המשתמש הזה לקבוצה 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
Manage User Permissions

בואו ניתן למשתמש gacanepa גישה לקריאה וכתיבה ל/mnt/playground/testfile.txt.

הפעל כמשתמש רשום,

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

ואז תוכל להוסיף בהצלחה ACL שמאפשר לgacanepa לכתוב לקובץ הבדיקה. לאחר מכן החלף למשתמש gacanepa ונסה לכתוב לקובץ שוב:

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

כדי לצפות בACLs של קובץ או ספרייה מסוימים, השתמש בgetfacl:

# getfacl /mnt/playground/testfile.txt
Check ACLs of Files

כדי לקבוע ACL ברירת מחדל לספרייה (שבתוכה יבואו תוכן חדש אלא אם כן יוחלפו), הוסף d: לפני הכלל וציין ספרייה במקום שם קובץ:

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

ה-ACL לעיל יאפשר למשתמשים שאינם בקבוצת בעל המחשב לקבל גישה לקריאה לתוכן העתידי של ה/mnt/playground ספרייה. שים לב להבדל בפלט של getfacl /mnt/playground לפני ואחרי השינוי:

Set Default ACL in Linux

פרק 20 במדריך הניהול האישי של RHEL 7 Storage מספק דוגמאות נוספות של ACL, ואני ממליץ בחום להסתכל עליו ולשמור אותו בהישג יד כמקור להתייעץ.

Source:
https://www.tecmint.com/rhcsa-exam-configure-acls-and-mount-nfs-samba-shares/