PracticU

הרשאות מתקדמות בלינוקס - ACL

בלי כתוביותעם כתוביות
PracticU › קורס לינוקס למתקדמים - הסמכה בינלאומית - Linux - Red Hat - RHCSA / RHCE › הרשאות מתקדמות בלינוקס - ACL
מילון מושגים:
הרשאה - קביעה אילו פעולות ומשאבים מותרים למשתמש או לתהליך לאחר שזהותו אומתה. שולטת במי רשאי לעשות מה.
ACL - רשימת בקרת גישה: אוסף כללים שקובעים מי רשאי לגשת למשאב ואילו פעולות מותרות לו.
קבוצה - אוסף של משתמשים או אובייקטים שמנוהלים יחד, כדי להעניק הרשאות או הגדרות משותפות בבת אחת.
דיסק - התקן לאחסון קבוע של נתונים, כמו כונן קשיח (HDD) או כונן מבוסס זיכרון מהיר (SSD).
מערכת קבצים - השיטה שבה מערכת ההפעלה מארגנת, שומרת ומנהלת קבצים ותיקיות על התקן אחסון, למשל NTFS.
גיבוי - העתק שמור של נתונים שנשמר כדי לאפשר שחזור במקרה של תקלה, מחיקה או פגיעה במקור.
שחזור - החזרת נתונים או מערכת למצב תקין קודם מתוך גיבוי, לאחר תקלה, מחיקה או פגיעה.
Active Directory - שירות מדריך של מיקרוסופט לניהול מרכזי של משתמשים, מחשבים והרשאות ברשת ארגונית מבוססת דומיין.

הרשאות מתקדמות בלינוקס - ACL
ACL (Access Control Lists) הוא מנגנון הרשאות מדויק בלינוקס, שמאפשר לתת הרשאות לכל משתמש או קבוצה בנפרד, ולא רק לבעלים, לקבוצה ולאחרים.
הבעיה שה-ACL פותר
במנגנון הרגיל יש שלוש רמות: בעלים, קבוצה ואחרים, וכל קובץ שייך לקבוצה אחת בלבד. כדי לתת הרשאה למשתמש מסוים צריך להוסיף אותו לקבוצה משותפת, וזה מסבך את הניהול כשיש הרבה תיקיות והרשאות שונות.
השלבים העיקריים
1. הכנת הכונן: מזהים את הדיסק החדש עם fdisk -l, יוצרים עליו מערכת קבצים ext4 ומחברים אותה לתיקייה /data.
2. הפעלת ACL ב-fstab: בקובץ /etc/fstab משנים את אפשרויות ההרכבה מ-defaults ל-acl. בלי האפשרות הזאת ה-ACL לא יעבוד.
3. הרכבה מחדש בלי הפסקה: כדי להפעיל את האפשרות מיד, מבצעים remount של הכונן עם acl ובלי להוריד אותו. הפקודה mount מראה את האפשרות.
4. יצירת תיקיות פרויקט: בתוך /data יוצרים תיקייה לכל פרויקט, ומגדירים בעלות של משתמש וקבוצה. אחרים מאבדים את ההרשאה לקרוא ולהיכנס.
5. הרשאה למשתמש: setfacl -m u:alex:rwx <folder> נותן למשתמש alex הרשאה מלאה לתיקייה, בלי להוסיף אותו לקבוצה. הסרה נעשית עם setfacl -x u:alex <folder>.
6. הרשאה לקבוצה: setfacl -m g:<group>:rw <folder>. הסרה נעשית עם -x.
7. בדיקה: getfacl <folder> מציג את כל ההרשאות של התיקייה. ב-ls -l מופיע סימן + ליד ההרשאות כשיש ACL.
8. הרשאת ברירת מחדל: setfacl -m d:u:alex:rwx <folder> מוסיף הרשאה שתחול גם על קבצים ותיקיות חדשים שייווצרו בתוך התיקייה. הקובץ שנוצר ירש את ההרשאה, אבל הבעלות נשארת אצל מי שיצר אותו.
גיבוי והעתקה
- cp -R רגיל אינו שומר את ה-ACL. cp -Rp שומר את ההרשאות והבעלות, וגם את ה-ACL בדוגמה.
- tar אינו שומר ACL כברירת מחדל. צריך לציין במפורש את האפשרות --acls כדי לשמור אותם בארכיון. בשחזור מספיק tar -xvf.
טעויות נפוצות
- הרכבה ידנית עם ACL אינה נשמרת לאתחול הבא. יש לעדכן את fstab.
- ניתן להוסיף ל-ACL משתמש מ-Active Directory לפי ה-ID שלו, גם אם המשתמש אינו קיים מקומית במערכת.
- שמות הקבצים נשלטים על ידי הרשאת הכתיבה של התיקייה שמכילה אותם. לכן משתמש יכול לשנות שמות בשתי תיקיות גם בלי הרשאה לשנות את תוכן הקובץ.
ה-ACL מאפשר לנהל הרשאות מדויקות לכל תיקייה ולכל משתמש, בלי לסבך את מבנה הקבוצות.
השיעור הבא בקורס: הסבר על Hardlink ועל iNode
לחץ כאן להורדת הורדת קבצי Script של לינוקס שהיו בסרטים
מילון מושגים:
דיסק - התקן לאחסון קבוע של נתונים, כמו כונן קשיח (HDD) או כונן מבוסס זיכרון מהיר (SSD).
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
מחיצה - חלוקה לוגית של דיסק פיזי לאזורים נפרדים, שכל אחד מתפקד כאילו הוא כונן עצמאי.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
דומיין - תחום ניהולי משותף של מחשבים ומשתמשים ברשת ארגונית, המנוהל מרכזית. גם שם ייחודי של אתר באינטרנט.
אימות - תהליך שמוודא שהמשתמש או המערכת הם מי שהם טוענים שהם, בדרך כלל באמצעות סיסמה, קוד או תעודה.
Active Directory - שירות מדריך של מיקרוסופט לניהול מרכזי של משתמשים, מחשבים והרשאות ברשת ארגונית מבוססת דומיין.
GPO - אובייקט מדיניות קבוצתית ב-Active Directory, שמכיל הגדרות ומדיניות המוחלות על משתמשים ומחשבים.


מבנה ושמות דיסקים ומחיצות בלינוקס:


(Sda (disk0): זה הדיסק הפיזי הראשון (SATA DISK)

(Sda1,Sda2 (Partitions in disk): אלו הן המחיצות בתוך הדיסק הפיזי הראשון.

(Sdb (disk1): זה הדיסק הפיזי השני כמו בוינדוס Disk1

(Sdb1,Sdb2 (Partitions in disk): אלו הן המחיצות בתוך הדיסק הפיזי השני.

מחיצת השורש הראשונה:

וינדוס: C

לינוקס: /

מחיצות נוספות:

וינדוס: D: / E:

לינוקס: /data /example כמו תיקיות.

הערה: בתהליך ההתקנה יוצרים מחיצה נוספת לזיכרון הווירטואלי שנקראת SWAP

מטרת צירוף לינוקס לדומיין הינה לאימות משתמשים מתוך Active Directory בלבד ואין GPO  ללינוקס דרך AD.


הוכן ע"י התלמיד המצטיין: אברהים אבו שיכה

פרקי ההרצאה: הרשאות מתקדמות בלינוקס - ACL

  1. 00:00

    מבוא: ACL ומערכת הרשאות מדויקת

  2. 00:59

    בעלים וקבוצה של קובץ ותיקייה

  3. 03:03

    מגבלת הרשאות רגילות: קבוצה אחת בלבד

  4. 04:05

    הבעיה: הרשאה למשתמש בודד

  5. 04:47

    שרת אחסון עם פרויקטים והרשאות ACL

  6. 05:22

    הכנת דיסק והקמת מערכת קבצים ext4

  7. 07:25

    הוספה ל-fstab להרכבה אוטומטית

  8. 08:51

    הפעלת אפשרות acl בקובץ fstab

תמלול ההרצאה: הרשאות מתקדמות בלינוקס - ACL

הטקסט המלא של הדקות הראשונות בהרצאה «הרשאות מתקדמות בלינוקס - ACL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום וברוכים הבאים לסרטון בנושא ACL, Access Control Lists. Access Control Lists זאת בעצם מערכת הרשאות מאוד מדויקת בתוך הלינוקס ותכף אנחנו נבין מה זה אומר.

  2. 00:17

    אבל בואו נראה בעצם מה מאפשר לי המערכת הרגילה של ההרשאות לעשות. כמו שאתם יודעים אני יכול בעצם לעשות ls-la ולראות ככה הרשימה של הרשאות שיש לי.

  3. 00:32

    יש לי בעצם שלוש רמות של הרשאות במערכת. הרשאות ל-Owner, לבעל הקובץ, שבעצם מצוינות על ידי שלוש אותיות R, W ויכול להיות גם X, R לקריאה, W לכתיבה ו-X ל-Execute, להרצה של הקובץ.

  4. 00:51

    הרשאות לקבוצה שבעצם אליה שייך הקובץ, שהם גם R, W ו-X. והרשאות לכל האחרים, שהם גם rw וx ולכל קובץ בעצם רשום למי הוא שייך ולאיזה קבוצה הוא שייך למשל הקובץ הזה שייך למשתמש root ולקבוצה שהיא root על פניו זה בעצם הדיפולט שהלינוקס נותן וזה מאפשר לנו למשל אם אנחנו רוצים לשתף תיקייה נגיד אני אצור פה תיקייה mkdir test ואני יכול לייצר גם קבוצה עד או מייצר קבוצה

  5. 01:46

    חדשה נקרא לה group1 נקרא לה בעצם groupA וניצור גם קבוצה שאני אקרא לה groupB אז צריך רגע ls-l וכרגע יש לי תיקיית טסט שהיא שייכת לroot ומקבוצה root אני יכול לעשות לה change own נגיד אני רוצה לתת לתיקייה הזאת הרשאות לקבוצה A אני עושה לה chown owner הבעלים של הקבצים עדיין נשארות

  6. 02:25

    והקבוצה group a על תיקייה מסוג על תיקיית טסט. עכשיו אני רואה שהתיקייה של בעצם של התיקיית טסט שייכת למשתמש רות ולקבוצה group a ועכשיו בעצם group a תהיה לו הרשאות לתיקייה הזאת.

  7. 02:52

    אני יכול לקחת ולעשות למשל Change Own ולתת את הקבוצה הזאת לגרופ B ועכשיו אני אראה שהתיקייה היא בעצם נהייתה בבעלות של Root ויש הרשאות לגרופ B על התיקייה הזאת.

  8. 03:10

    יחד עם זאת, מה שאני לא יכול לעשות בעזרת המנגנון הסטנדרטי זה בעצם לתת את התיקייה הזאת שהיא תהיה גם של גרופ A וגם של גרופ B ואם אני ארצה לעשות כזה דבר מה שאני אצטרך לעשות אני אצטרך למשל ליצור גרופ A and B ואת כל המשתמשים שנמצאים בגרופ A ובגרופ B להוסיף לגרופ הזה

  9. 03:35

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

  10. 03:49

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

  11. 04:06

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

  12. 04:24

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

  13. 04:47

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

  14. 05:20

    אז יש לנו על השרת הזה דיסק שבו אנחנו הולכים להשתמש כמחיצת הסטורט שלנו, fdisk-l, הנה אנחנו רואים אותו, דיסק devsdb בגודל 8 ג'יגה, ועליו אנחנו הולכים בעצם להקים את התיקיות שלנו.

  15. 05:45

    מה שאנחנו נעשה, אנחנו ניצור פייל סיסטם, mkfsxt4, אני הולך, אני בעצם, היות שבזה לצורך הדגמה, אני לא הולך להשתמש ב-LVM, אני פשוט הולך להקים פייל סיסטם על כל הדיסק.

  16. 06:18

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

  17. 06:43

    df-lh, l זה בשביל לוקל ו-h בשביל יומן, שיציג לי את הגודל בג'יגה בייטים אוקיי ואני רואה כרגע שתיקיית דאטה היא בעצם מוכנה לשימוש אני הולך להוסיף את זה בעצם ל-etc0-tab כדי שהמאונט יתבצע באופן אוטומטי devsdb בעצם הנתיב של ה-device כאן אני רושם את הנתיב של הקובץ וסליחה את הנתיב של

  18. 07:34

    המאונט לאן אני רוצה לעשות לו מאונט סלאש דאטה, סוג של מערכת קבצים, ext4 ו-mount options, כרגע דפולטיביים, defaults ו-0.0, כרגע אני עושה u-mount לתיקייה כדי לבדוק שהמאונט האוטומטי עובד, ו-aritz mount -a, והיות וה-mount a חזר ללא הודעות שגיאה זה

  19. 08:21

    אומר שה-mount יתבצע כמו שצריך. אני יכול לראות ב-DF-LH את התיקייה ואם אני אריץ את הפקודה מונט אז אני בעצם אראה את האפשרויות בעצם את הפלגים שאיתם נעשה המונט שכרגע הם RW ואת זה אני הולך תכף לשנות למשהו אחר כי בשביל שה-ACL יעבוד אני צריך מראש לעשות לתיקייה מונט עם האפשרות של ACL.

  20. 08:59

    כדי לערוך את זה ב-0-tab אני עושה את זה בצורה הבאה, vitc 0-tab וכאן בעצם במקום ה-defaults אני אשנה את זה ל-acl.

  21. 09:23

    עכשיו יש לי שתי דרכים, כרגע בעצם הפייל סיסטם אפילו ששיניתי ב-0-tab, מן הסתם השינוי הזה לא תפס באופן מיידי. אם אני אריץ את הפקודה mount אני עדיין אראה את זה כ-mounted עם rw.

  22. 09:39

    ויש לי בעצם שתי אפשרויות. אפשרות אחת היא להוריד את המאונט הזה, כן, ולעשות לו U-Mount ואז לעשות Mount מינוס A, והאפשרות השנייה שהיא קצת יותר מעניינת, ולכן אני הולך להדגים אותה עכשיו, היא לעשות את זה באונליין.

  23. 09:58

    עכשיו, מה שצריך בשביל לעשות את זה באונליין זה בעצם להוריד את המאונט, כן, לעשות מאונט מחדש, יותר נכון, בלי להוריד את המאונט, ואת זה עושים בצורה הבאה.

  24. 10:10

    מונט מינוס אוו רי מונט סיק rw כדי לשמר את הקריאה ואת הכתיבה אוקיי ו-acl ואז אני רושם את ה device slash dev sdb slash data אוקיי הפקודה הזאת רצה בהצלחה ועכשיו אם אני אעשה מונט אני אראה שפה בעצם הצטרפה האופציה acl אגב הפקודה הזאתי הרימאונט היא מאוד שימושית, למשל אם אני ארצה לקחת פייל סיסטם ולהפוך אותו ל-read-only, אני יכול להריץ את זה בצורה הבאה,

  25. 10:58

    mount-o ro.acl, או פשוט ro, ואז הפייל סיסטם יהיה read-only, ואני לא אוכל בעצם לכתוב או לקרוא ממנו, למשל אם יש איזושהי סכנה שיש איזשהו האקר שפרץ לשרת, או שיש איזושהי פעילות שאני מזהה אותה כלא תקינה, אני יכול לקחת חלק מהתיקיות ולהעביר אותן בצורה יזומה למצב read-only.

  26. 11:27

    עכשיו אני אעשה mount, אני אראה פה שהתיקיה היא במצב read-only. שימוש נוסף באפשרות הזאת היא למשל כאשר היו לי איזה שהם תקלות בסטורג', וכאשר יש תקלות בסטורג' חלק ממנגנוני ההגנה של הלינוקס הוא להפוך את ה-Mount Point ל-Read Only, ואז אחרי שהעניין עם ה-Storage יסתדר, אני ארצה להחזיר את זה למצב של RW.

  27. 11:56

    למשל, אחרי ש... לא יודע, נגיד שינינו איזושהי הגדרה ב-Storage, אז אני לא רוצה להוריד את השרת ולעשות לו ריבוט, אני רוצה לוודא שבעצם שזה ימשיך לעבוד בלי לעשות ריסטארט לשרת, או בלי להוריד את התיקייה, כי יכול להיות שיש לי פרוססים שמשל קורים משם,

  28. 12:15

    אז אני יכול להריץ את הפקודת מונט עם האפשרות רי-מאונט ו-RW. אוקיי, ועכשיו אני אראה שהמונט RW, וגם לצורך ההדגמה, ותמיד כדאי לבדוק, במיוחד אחרי שעושים שינויים ב-0 תב, שבעצם הפקודה מונט מינוס A עובדת תקין, ולכן אני הולך עכשיו

  29. 12:45

    לעשות U-Mount ל-SlashData ולהריץ מונט מינוס A ובואו נוודא אכן שיש ACL ואכן יש ACL וזה מה שצריך לעשות בשביל שבכלל לאפשר את האופציה של עבודה עם ACL. אגב אם אני אקח למשל מערכת קבצים ישנה ואני אעביר אותה לקרנל שהוא בעצם לא תומך ב-ACL אני עדיין אוכל לראות

  30. 13:22

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

  31. 13:38

    ובכן, עכשיו אני אלך לתיקיית דאטה ואני אצור שם כמה ספריות לפרויקטים. mkdir, proa, prob וproc וprod, projecta, projectb, projectc וprojd, ולצורך העניין אני אוסיף גם כמה קבוצות.

  32. 14:15

    אגב, הקבוצות נוספות לקובץ ETC Group. אני יכול לראות פה שיש לי כאן את ה- Group A ואת ה- Group B. ואם אתם זוכרים מהשיעורים הקודמים, גם לכל יוזר נוצרת לו בעצם קבוצה שהיא הקבוצה הפרטית של היוזר הזה.

  33. 14:36

    יצרתי בעוד מועד עם הפקודה User Add שלוש יוזרים שאני אשתמש בהם בהדגמה אלכס, דוד ודני, אוקיי? אז כמו שאמרנו במערכת של הלינוקס המסורתית, זה פה ls-l, יש לי פה בעצם שלוש תיקיות,

לקורס המלא: קורס לינוקס מתקדם אונליין

ההרצאה הקודמת: הסבר על UID ועל GID

ההרצאה הבאה: הסבר על Hardlink ועל iNode

הרצאות קשורות מקורסים אחרים

  • פונקציות מתקדמות - Grouping
  • פקודות DHCP מתקדמות
  • הגדרות מתקדמות - ב-HA Cluster של ESXi
  • HTTPS inspection - הגדרות מתקדמות

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס Docker - עם Swarm Cluster
  • קורס DevOps - Ansible
  • קורס PowerShell