לדלג לתוכן

הרשאות בלינוקס מוסברות בפשטות

אם ראיתם פעם פלט של ls -l וקיבלתם משהו כמו -rwxr-xr-- והרגשתם שאתם קוראים הירוגליפים, אתם לא לבד. הרשאות בלינוקס נראות מפחידות בהתחלה, אבל ברגע שיש לכם מודל חשיבה נכון, זה נהיה טריוויאלי. אז בואו נבנה את המודל הזה מאפס.

שלוש שאלות, לא יותר

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

  • בעלים - owner. המשתמש שיצר את הקובץ, או מי שהועבר אליו הבעלות.
  • קבוצה - group. קבוצת משתמשים שהוגדרה במערכת, שיכולה לכלול כמה משתמשים.
  • כולם - others. כל מי שלא הבעלים ולא בקבוצה.

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

מה זה בעצם rwx

כשאתם מריצים ls -l ורואים משהו כמו -rwxr-xr--, תפרקו את זה כך. התו הראשון מתאר את סוג הקובץ - קו מקף לקובץ רגיל, ו-d לתיקייה. אחריו יש שלוש קבוצות של שלושה תווים:

  • rwx - הרשאות הבעלים. יכול לקרוא, לכתוב ולהריץ.
  • r-x - הרשאות הקבוצה. יכולה לקרוא ולהריץ, אבל לא לכתוב.
  • r-- - הרשאות כולם. יכולים רק לקרוא.

r זה קריאה, w זה כתיבה, x זה הרצה, ומקף אומר שההרשאה הזאת חסומה. שלוש הרשאות, שלוש קבוצות, וזה כל הקוד שאתם צריכים לפצח.

למה יש הבדל בין קריאה, כתיבה והרצה

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

עבור תיקייה המשמעות שונה. קריאה אומרת שאפשר לראות אילו קבצים יש בתיקייה, כתיבה אומרת שאפשר ליצור או למחוק קבצים בתוכה, והרצה אומרת שאפשר "להיכנס" לתיקייה עם cd ולגשת לקבצים שבתוכה. זו הסיבה שאתם יכולים לראות תיקייה עם ls בלי להיות מסוגלים להיכנס אליה, אם חסרה לכם הרשאת ההרצה עליה.

chmod והמספרים המסתוריים

הפקודה שמשנה הרשאות היא chmod, ואפשר להשתמש בה בשתי דרכים. הדרך הסמלית קלה להבנה בהתחלה - chmod +x script.sh מוסיפה הרשאת הרצה, ו-chmod u+w file.txt נותנת לבעלים הרשאת כתיבה.

הדרך השנייה, המספרית, נראית מפחידה אבל היא בעצם פשוטה ברגע שמבינים את ההיגיון. לכל הרשאה יש ערך - קריאה שווה 4, כתיבה שווה 2, והרצה שווה 1. סוכמים את הערכים שרוצים להעניק לכל קבוצה, וזהו המספר שלה. rwx זה 4+2+1=7, ו-r-x זה 4+1=5. אז כשאתם רואים chmod 754 file.sh, זה בעצם אומר - לבעלים הכל (7), לקבוצה קריאה והרצה (5), ולכולם רק קריאה (4). ברגע שמבינים את החיבור הזה, אין יותר צורך לשנן טבלאות - פשוט מחשבים אותו בראש.

למה זה חשוב באמת

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

איך תופסים את זה בפועל

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

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

תרגלו הרשאות בקורס לינוקס הבסיסי

ואם משהו לא מסתדר לכם עם ההרשאות, תשאלו בדיסקורד - זה בדיוק הסוג של שאלה שמישהו יפתור לכם בשתי דקות.

הצטרפו לקהילה בדיסקורד