
fdisk -l, יוצרים עליו מערכת קבצים ext4 ומחברים אותה לתיקייה /data./etc/fstab משנים את אפשרויות ההרכבה מ-defaults ל-acl. בלי האפשרות הזאת ה-ACL לא יעבוד.acl ובלי להוריד אותו. הפקודה mount מראה את האפשרות./data יוצרים תיקייה לכל פרויקט, ומגדירים בעלות של משתמש וקבוצה. אחרים מאבדים את ההרשאה לקרוא ולהיכנס.setfacl -m u:alex:rwx <folder> נותן למשתמש alex הרשאה מלאה לתיקייה, בלי להוסיף אותו לקבוצה. הסרה נעשית עם setfacl -x u:alex <folder>.setfacl -m g:<group>:rw <folder>. הסרה נעשית עם -x.getfacl <folder> מציג את כל ההרשאות של התיקייה. ב-ls -l מופיע סימן + ליד ההרשאות כשיש ACL.setfacl -m d:u:alex:rwx <folder> מוסיף הרשאה שתחול גם על קבצים ותיקיות חדשים שייווצרו בתוך התיקייה. הקובץ שנוצר ירש את ההרשאה, אבל הבעלות נשארת אצל מי שיצר אותו.cp -R רגיל אינו שומר את ה-ACL. cp -Rp שומר את ההרשאות והבעלות, וגם את ה-ACL בדוגמה.tar אינו שומר ACL כברירת מחדל. צריך לציין במפורש את האפשרות --acls כדי לשמור אותם בארכיון. בשחזור מספיק tar -xvf.מבנה ושמות דיסקים ומחיצות בלינוקס:

הטקסט המלא של הדקות הראשונות בהרצאה «הרשאות מתקדמות בלינוקס - ACL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים לסרטון בנושא ACL, Access Control Lists. Access Control Lists זאת בעצם מערכת הרשאות מאוד מדויקת בתוך הלינוקס ותכף אנחנו נבין מה זה אומר.
אבל בואו נראה בעצם מה מאפשר לי המערכת הרגילה של ההרשאות לעשות. כמו שאתם יודעים אני יכול בעצם לעשות ls-la ולראות ככה הרשימה של הרשאות שיש לי.
יש לי בעצם שלוש רמות של הרשאות במערכת. הרשאות ל-Owner, לבעל הקובץ, שבעצם מצוינות על ידי שלוש אותיות R, W ויכול להיות גם X, R לקריאה, W לכתיבה ו-X ל-Execute, להרצה של הקובץ.
הרשאות לקבוצה שבעצם אליה שייך הקובץ, שהם גם R, W ו-X. והרשאות לכל האחרים, שהם גם rw וx ולכל קובץ בעצם רשום למי הוא שייך ולאיזה קבוצה הוא שייך למשל הקובץ הזה שייך למשתמש root ולקבוצה שהיא root על פניו זה בעצם הדיפולט שהלינוקס נותן וזה מאפשר לנו למשל אם אנחנו רוצים לשתף תיקייה נגיד אני אצור פה תיקייה mkdir test ואני יכול לייצר גם קבוצה עד או מייצר קבוצה
חדשה נקרא לה group1 נקרא לה בעצם groupA וניצור גם קבוצה שאני אקרא לה groupB אז צריך רגע ls-l וכרגע יש לי תיקיית טסט שהיא שייכת לroot ומקבוצה root אני יכול לעשות לה change own נגיד אני רוצה לתת לתיקייה הזאת הרשאות לקבוצה A אני עושה לה chown owner הבעלים של הקבצים עדיין נשארות
והקבוצה group a על תיקייה מסוג על תיקיית טסט. עכשיו אני רואה שהתיקייה של בעצם של התיקיית טסט שייכת למשתמש רות ולקבוצה group a ועכשיו בעצם group a תהיה לו הרשאות לתיקייה הזאת.
אני יכול לקחת ולעשות למשל Change Own ולתת את הקבוצה הזאת לגרופ B ועכשיו אני אראה שהתיקייה היא בעצם נהייתה בבעלות של Root ויש הרשאות לגרופ B על התיקייה הזאת.
יחד עם זאת, מה שאני לא יכול לעשות בעזרת המנגנון הסטנדרטי זה בעצם לתת את התיקייה הזאת שהיא תהיה גם של גרופ A וגם של גרופ B ואם אני ארצה לעשות כזה דבר מה שאני אצטרך לעשות אני אצטרך למשל ליצור גרופ A and B ואת כל המשתמשים שנמצאים בגרופ A ובגרופ B להוסיף לגרופ הזה
מה שכמובן יסבך את התהליך במיוחד אם יש לי כמה עשרות של תיקיות כאלה שאני ארצה לקבוע במדויק את ההרשאות לכל תיקייה כזאת.
בדיוק אותו המצב קורה גם עם המשתמשים. למשל, יש לי פה owner אחד שהוא רות, ואני רוצה ספציפית לתת לקובץ הזה הרשאות למשתמש מסוים במערכת. אני לא יכול.
הדרך היחידה שלי לתת הרשאות למשתמש אחר היא בעצם לקחת וליצור איזושהי קבוצה משותפת שכוללת גם את אותו המשתמש, מה שכמובן יכול עוד יותר לסרבל את הניהול.
בדוגמה בעצם שאנחנו נראה בסרטון הזה, אנחנו נשתמש בעזרת מנגנון ה-ACL אשר פותר את העניין הזה ומאפשר לכל תיקייה או קובץ בעצם להצר עבור הרשימה של משתמשים וקבוצות ולתת למשתמשים האלה הרשאות על אותו קובץ.
בעצם בעזרת המנגנון הזה אנחנו הולכים לפתור את זה ולהקים שרת storage בו תהיה תקייה עם פרויקטים ולכל אחד מהפרויקטים האלה אנחנו נשייך יוזרים מסוימים וקבוצות מסוימות ואנחנו נראה איך אנחנו יכולים בעצם בקלי קלות לקבוע הרשאות לכל פרויקט או אפילו לחלק מהפרויקט הזה.
אז יש לנו על השרת הזה דיסק שבו אנחנו הולכים להשתמש כמחיצת הסטורט שלנו, fdisk-l, הנה אנחנו רואים אותו, דיסק devsdb בגודל 8 ג'יגה, ועליו אנחנו הולכים בעצם להקים את התיקיות שלנו.
מה שאנחנו נעשה, אנחנו ניצור פייל סיסטם, mkfsxt4, אני הולך, אני בעצם, היות שבזה לצורך הדגמה, אני לא הולך להשתמש ב-LVM, אני פשוט הולך להקים פייל סיסטם על כל הדיסק.
יפה מאוד. וכרגע אני הולך לוודא שבעצם הפייל סיסטם שלי אכן נכון, ליצור תיקיית סלאש דאטה ולעשות מאונט לפייל סיסטם.
df-lh, l זה בשביל לוקל ו-h בשביל יומן, שיציג לי את הגודל בג'יגה בייטים אוקיי ואני רואה כרגע שתיקיית דאטה היא בעצם מוכנה לשימוש אני הולך להוסיף את זה בעצם ל-etc0-tab כדי שהמאונט יתבצע באופן אוטומטי devsdb בעצם הנתיב של ה-device כאן אני רושם את הנתיב של הקובץ וסליחה את הנתיב של
המאונט לאן אני רוצה לעשות לו מאונט סלאש דאטה, סוג של מערכת קבצים, ext4 ו-mount options, כרגע דפולטיביים, defaults ו-0.0, כרגע אני עושה u-mount לתיקייה כדי לבדוק שהמאונט האוטומטי עובד, ו-aritz mount -a, והיות וה-mount a חזר ללא הודעות שגיאה זה
אומר שה-mount יתבצע כמו שצריך. אני יכול לראות ב-DF-LH את התיקייה ואם אני אריץ את הפקודה מונט אז אני בעצם אראה את האפשרויות בעצם את הפלגים שאיתם נעשה המונט שכרגע הם RW ואת זה אני הולך תכף לשנות למשהו אחר כי בשביל שה-ACL יעבוד אני צריך מראש לעשות לתיקייה מונט עם האפשרות של ACL.
כדי לערוך את זה ב-0-tab אני עושה את זה בצורה הבאה, vitc 0-tab וכאן בעצם במקום ה-defaults אני אשנה את זה ל-acl.
עכשיו יש לי שתי דרכים, כרגע בעצם הפייל סיסטם אפילו ששיניתי ב-0-tab, מן הסתם השינוי הזה לא תפס באופן מיידי. אם אני אריץ את הפקודה mount אני עדיין אראה את זה כ-mounted עם rw.
ויש לי בעצם שתי אפשרויות. אפשרות אחת היא להוריד את המאונט הזה, כן, ולעשות לו U-Mount ואז לעשות Mount מינוס A, והאפשרות השנייה שהיא קצת יותר מעניינת, ולכן אני הולך להדגים אותה עכשיו, היא לעשות את זה באונליין.
עכשיו, מה שצריך בשביל לעשות את זה באונליין זה בעצם להוריד את המאונט, כן, לעשות מאונט מחדש, יותר נכון, בלי להוריד את המאונט, ואת זה עושים בצורה הבאה.
מונט מינוס אוו רי מונט סיק rw כדי לשמר את הקריאה ואת הכתיבה אוקיי ו-acl ואז אני רושם את ה device slash dev sdb slash data אוקיי הפקודה הזאת רצה בהצלחה ועכשיו אם אני אעשה מונט אני אראה שפה בעצם הצטרפה האופציה acl אגב הפקודה הזאתי הרימאונט היא מאוד שימושית, למשל אם אני ארצה לקחת פייל סיסטם ולהפוך אותו ל-read-only, אני יכול להריץ את זה בצורה הבאה,
mount-o ro.acl, או פשוט ro, ואז הפייל סיסטם יהיה read-only, ואני לא אוכל בעצם לכתוב או לקרוא ממנו, למשל אם יש איזושהי סכנה שיש איזשהו האקר שפרץ לשרת, או שיש איזושהי פעילות שאני מזהה אותה כלא תקינה, אני יכול לקחת חלק מהתיקיות ולהעביר אותן בצורה יזומה למצב read-only.
עכשיו אני אעשה mount, אני אראה פה שהתיקיה היא במצב read-only. שימוש נוסף באפשרות הזאת היא למשל כאשר היו לי איזה שהם תקלות בסטורג', וכאשר יש תקלות בסטורג' חלק ממנגנוני ההגנה של הלינוקס הוא להפוך את ה-Mount Point ל-Read Only, ואז אחרי שהעניין עם ה-Storage יסתדר, אני ארצה להחזיר את זה למצב של RW.
למשל, אחרי ש... לא יודע, נגיד שינינו איזושהי הגדרה ב-Storage, אז אני לא רוצה להוריד את השרת ולעשות לו ריבוט, אני רוצה לוודא שבעצם שזה ימשיך לעבוד בלי לעשות ריסטארט לשרת, או בלי להוריד את התיקייה, כי יכול להיות שיש לי פרוססים שמשל קורים משם,
אז אני יכול להריץ את הפקודת מונט עם האפשרות רי-מאונט ו-RW. אוקיי, ועכשיו אני אראה שהמונט RW, וגם לצורך ההדגמה, ותמיד כדאי לבדוק, במיוחד אחרי שעושים שינויים ב-0 תב, שבעצם הפקודה מונט מינוס A עובדת תקין, ולכן אני הולך עכשיו
לעשות U-Mount ל-SlashData ולהריץ מונט מינוס A ובואו נוודא אכן שיש ACL ואכן יש ACL וזה מה שצריך לעשות בשביל שבכלל לאפשר את האופציה של עבודה עם ACL. אגב אם אני אקח למשל מערכת קבצים ישנה ואני אעביר אותה לקרנל שהוא בעצם לא תומך ב-ACL אני עדיין אוכל לראות
את הקבצים ולכתוב עליהם אבל פשוט כל ההגדרות של ה-ACL הם לא יתפסו על הקבצים האלה אלא בעצם המערכת תתייחס אליהם לפי ההרשאות המסורתיות של הלינוקס שיש על הקבצים האלה.
ובכן, עכשיו אני אלך לתיקיית דאטה ואני אצור שם כמה ספריות לפרויקטים. mkdir, proa, prob וproc וprod, projecta, projectb, projectc וprojd, ולצורך העניין אני אוסיף גם כמה קבוצות.
אגב, הקבוצות נוספות לקובץ ETC Group. אני יכול לראות פה שיש לי כאן את ה- Group A ואת ה- Group B. ואם אתם זוכרים מהשיעורים הקודמים, גם לכל יוזר נוצרת לו בעצם קבוצה שהיא הקבוצה הפרטית של היוזר הזה.
יצרתי בעוד מועד עם הפקודה User Add שלוש יוזרים שאני אשתמש בהם בהדגמה אלכס, דוד ודני, אוקיי? אז כמו שאמרנו במערכת של הלינוקס המסורתית, זה פה ls-l, יש לי פה בעצם שלוש תיקיות,