BASH/מערכת ההרשאות
במערכות הקבצים של לינוקס ישנה חלוקה של המשתמשים לשלוש קבוצות: המשתמש, הקבוצה בה הוא נמצא, וכל השאר (אחרים). ניתן להגדיר הרשאות שונות לכל אחת מהקבוצות כאשר גם ההרשאות מחולקות לשלוש: קריאה כתיבה והרצה (של תוכנה או תוכנית). מעל לחלוקה זו יושב מנהל המערכת (משתמש root) ויכול להתעלם מההרשאות של הקובץ (גם קובץ שאף אחד לא יכול לקרוא, root יכול). היחיד שיכול לשנות הרשאות (חוץ מ-root) הוא המשתמש שיצר את הקובץ, הוא מוגדר כ"בעלים" של הקובץ.
את ההרשאות לכל קובץ ניתן לסכם במטריצה הבאה (דוגמא להרשאות על קובץ):
\ u g o
r 1 1 1
w 1 1 1
x 1 0 0
u(ser), g(roup), o(ther)
r(ead), w(rite), (e)x(ecution)
בדוגמא למעלה יש לכל המשתמשים הרשאות קריאה וכתיבה ורק למשתמש שיצר את הקובץ יש הרשאות הרצה.
מכיוון שלכל אחת מהקבוצות יש שלושה סוגי הרשאות בצורה של ביטוי בוליאני (כלומר, כן או לא) נוצרה שיטה מקוצרת לכתיבת הרשאות שבה כל אחת מהקבוצות מיוצגות על ידי הערך של ההצגה הבינארית. אם יש לקבוצת המשתמש הרשאות קריאה וכתיבה אבל לא הרצה, אז יש להם הרשאות "110" (הקריאה היא בעל הערך הכי גבוה, וההרצה הכי נמוך) או בצורה אוקטלית (בסיס שמונה) "6". בדוגמא למעלה יש הרשאות "766" (משמאל נמצא המשתמש ומימין האחרים)
מבנה ההרשאות הוא (מימין לשמאל):
משתמשים שלא שייכים לקבוצת הקובץ | משתמשים ששייכים לקבוצת הקובץ | בעל הקובץ |
---|
ניתן לזכור את מספרי ההרשאות בצורה הבאה:
מספר ההרשאה | אות ההרשאה | ההרשאה |
---|---|---|
0 | - | ללא הרשאה |
1 | x | הרצה |
2 | w | כתיבה |
4 | r | קריאה |
עכשיו תורכם: נסה להשלים את הטבלה הבאה: |
ההרשאה | בעל הקובץ | חברי קבוצת הקובץ | אחרים |
---|---|---|---|
766 | הרצה, קריאה, כתיבה | הרצה, קריאה | הרצה, קריאה |
162 | |||
461 | |||
456 |
ll (ls -lsa)
עריכההפקודה ll (אשר היא alias לפקודה ls עם הדגלים lsa) מראה לנו את קבצים עם מספר פרמטרים, אחד מהם הוא ההרשאות לקובץ.
#ll
-rw-r--r-- 1 john john 272 Mar 17 08:22 test.txt
chmod
עריכההפקודה chmod היא הפקודה שמשנה את ההרשאות לקובץ מסויים. לפקודה יש שני תחבירים בעלי תוצאה זהה:
- שינוי הגדרות כולל
#chmod 777 file_name
בצורה הזאת אנחנו קובעים בהגדרה אחת את ההרשאות לכל קבוצות המשתמשים. המספר הוא ההצגה האוקטלית שראינו למעלה והפירוש שלו הוא מיידי לגבי ההרשאות של הקובץ.
- שינוי ספציפי
#chmod u+x file_name
בשיטה הזאת אנחנו מפרשים את הקבוצה והפעולה שאותה רוצים לשנות. האות הראשונה מייצגת את הקבוצה (u/g/o ואפשר גם a שישנה עבור כל הקבוצות) לאחר מכן סימן פלוס או מינוס כדי להוסיף הרשאות או להוריד, ולבסוף הפעולה (r/w/x) ככה שבדוגמא הוספנו (+) לבעלים (u) הרשאות ריצה (x). ההוראה a-r תגרום להורדת הרשאות הקריאה לכולם.