מאז הקמתה, לינוקס הותאמה לתמיכה בסביבה מרובת משתמשים. עם משתמשים וקבוצות רבות על מערכת עובדת, זה די נפוץ למצוא ספריות משותפות בין משתמשים באותה קבוצה ובעיות בשיתוף קבצים בתוך ספריות. במאמר זה, נדון כיצד ניתן להשתמש בסיביות דביקות כדי להתאים את הרשאת הגישה לקבצים בספריות משותפות.
למטרות המחשה, יש לנו מערכת עם שלושה משתמשים – john1, john2 ו-john3, כולם חברים בקבוצה המשותפת “johns”
נניח ש- “john1” יוצר ספרייה חדשה בשם “shared-dir” שתתחלק בין כל המשתמשים בקבוצת “johns”.
כפי ש ls
הפקודה, אנו יכולים לראות את ההרשאה של “shared-dir”, אותה ניתן לפרש בטבלה הבאה:
רק “john1” יכול לקרוא את התוכן של הספרייה וגם לכתוב לספרייה. בזמן שאנו עובדים עם ספרייה משותפת, אנו רוצים שכל המשתמשים בקבוצה יוכלו לכתוב ל-“shared-dir”.
לשם כך, בואו נשנה את ההרשאות באמצעות chmod
פקודה. נוסיף הרשאות “כתיבה” לכל המשתמשים בקבוצת “ג’ונים” כפי שמוצג להלן.
אנו יכולים לראות את ההרשאות המעודכנות עבור “shared-dir” כפי שמוצג להלן. החלק הצהוב עם קו תחתון מראה שקבוצת “ג’ונים” קיבלה הרשאת “כתיבה”.
תוכן העניינים
הוספת קבצים לספרייה המשותפת
כעת “john1” מוסיף שני קבצים (j1_file1.txt ו-j1_file2.txt) ל-“shared-dir”
כדי להקל על ההבנה, שני התווים הראשונים של שם הקובץ הם שם נרדף לשם המשתמש.
באופן דומה, “john2” יכול גם “לכתוב” לספריית “shared-dir”.
ישנם ארבעה קבצים ב-“shared-dir” כעת.
האם יש בעיה בתצורה הנוכחית?
הקובץ “j1_file1.txt” נוצר על ידי “john1” מה שהופך את “john1” לבעלים של הקובץ. כעת “john2” נכנס ומנסה למחוק את הקובץ הזה, והוא יוכל לעשות זאת.
“John1” היה הבעלים של הקובץ, אך “john2” הצליח למחוק אותו מכיוון שניתנה הרשאת “כתיבה” לכל חברי הקבוצה “johns”.
תרחיש זה אינו אידיאלי. אנחנו רוצים שכל המשתמשים יוכלו לכתוב לספרייה, אבל רק הבעלים של הקובץ אמור להיות מסוגל למחוק קובץ. כיצד ניתן להשיג זאת?
היכרות עם Sticky Bit
ה-sticky bit הוא הרשאה מיוחדת שניתן להגדיר על ספרייה שיש לה הרשאות “כתיבה” עבור הקבוצה שיש לה גישה אליה. הביט הזה מבטיח שכל חברי הקבוצה יכולים לכתוב לספרייה, אבל רק מי שיצר את הקובץ, כלומר הבעלים של הקובץ, יכול למחוק אותו.
chmod
פקודה עם ה +t
ניתן להשתמש בדגל כדי להגדיר את ה-sticky bit בספרייה.
את ההרשאה המעודכנת ניתן לראות למטה.
כעת, אם “john2” ינסה למחוק את הקובץ “j1_file2.txt” שנוצר על ידי “john1”, פעולה זו לא תתאפשר.
אם תסיר את הרשאת ה”ביצוע” עבור “אחרים” כפי שמוצג להלן:
קיומו של סיביות דביקות בספרייה מיוצג על ידי “T” רישיות בחלק “האחר” של מחרוזת ההרשאה. ההתנהגות של ה-sticky bit בספרייה נשארת זהה.
גרסה של הפקודה “chmod”.
הצורה המספרית של chmod
ניתן להשתמש בפקודה גם כדי להגדיר את ה-sticky bit בספרייה.
chmod nxyz <file_name>
איפה,
- n = 1, בהתייחס לסיבית הדביקה. ערכים אחרים של “n” מתייחסים להרשאות מיוחדות אחרות.
- x: הרשאה שניתנה לבעל הקובץ
- y: הרשאה שניתנה לקבוצה בעלת גישה לקובץ
- z: רשות שניתנה לאחרים
כדי להגדיר את ה-sticky bit ב-“shared-dir”, השתמש בפקודה הבאה:
chmod 1755 shared-dir
מה שמייצר את אותה תוצאה כמו השימוש +t
הרשאות ברירת מחדל קיימות.
שימוש ב-sticky bit תקף רק עבור ספריות, זה לא הגיוני להשתמש בו עבור קבצים.