כיצד להשתמש בפקודה chmod בלינוקס

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

chmod משנה הרשאות קבצים

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

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

אתה משתמש  chmod בפקודה כדי להגדיר כל אחת מההרשאות האלה. כדי לראות אילו הרשאות הוגדרו בקובץ או בספרייה, נוכל להשתמש ls.

צפייה והבנת הרשאות קבצים

אנו יכולים להשתמש באפשרות -l(פורמט ארוך) כדי lsלרשום את הרשאות הקבצים עבור קבצים וספריות.

ls -l

בכל שורה, התו הראשון מזהה את סוג הערך שרשום. אם זה מקף ( -) זה קובץ. אם זו האות d זו ספריה.

תשעת התווים הבאים מייצגים את ההגדרות לשלוש קבוצות ההרשאות.

  • שלושת התווים הראשונים מציגים את ההרשאות עבור המשתמש שבבעלותו הקובץ ( הרשאות משתמש ).
  • שלוש התווים האמצעיים מציגים את ההרשאות לחברי הקבוצה של הקובץ ( הרשאות קבוצתיות ).
  • שלושת התווים האחרונים מציגים את ההרשאות למי שלא נמצא בשתי הקטגוריות הראשונות ( הרשאות אחרות ).

יש שלוש תווים בכל קבוצת הרשאות. הדמויות הן אינדיקטורים לנוכחות או היעדרות של אחת ההרשאות. הם מקף ( -) או אות. אם הדמות היא מקף, המשמעות היא שלא ניתן אישור. אם התו הוא r, w, או x, הרשות שהוענקה לו.

האותיות מייצגות:

  • r : הרשאות קריאה. ניתן לפתוח את הקובץ ולצפות בתוכנו.
  • w : הרשאות כתיבה. ניתן לערוך, לשנות ולמחוק את הקובץ.
  • x : ביצוע הרשאות. אם הקובץ הוא סקריפט או תוכנית, ניתן להריץ אותו (לבצע אותו).

לדוגמה:

  •  --- פירושו שלא ניתנו הרשאות כלל.
  •  rwxפירושו שהוענקו הרשאות מלאות. האינדיקטורים לקריאה, כתיבה והביצוע נמצאים כולם.

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

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

הסט השני של שלוש התווים הוא ההרשאות הקבוצתיות, אלה הן r-x. אלה מראים כי חברי קבוצת הדייב קראו ומבצעים הרשאות לספריה זו. פירוש הדבר שהם יכולים לרשום את הקבצים ואת תוכנם בספריה, והם יכולים cd(לבצע) לספרייה זו. אין להם הרשאות כתיבה, ולכן הם לא יכולים ליצור, לערוך או למחוק קבצים.

הסט האחרון של שלוש הדמויות הוא גם כן  r-x. ההרשאות הללו חלות על אנשים שלא נשלטים על ידי שתי קבוצות ההרשאות הראשונות. אנשים אלה (המכונים "אחרים") קראו ומבצעים הרשאות בספריה זו.

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

עבור כל הקבצים האחרים (מלבד קובץ התסריט mh.sh) dave וחברי קבוצת dave קראו מאפייני קריאה וכתיבה על הקבצים, והאחרים קיבלו הרשאות קריאה בלבד.

במקרה המיוחד של קובץ התסריט mh.sh, הבעלים דייב וחברי הקבוצה קראו, כתבו ויבצעו הרשאות, והאחרים קראו והוציאו הרשאות בלבד.

הבנת תחביר ההיתר

כדי chmod להגדיר הרשאות, עלינו לומר זאת:

  • מי:  למי אנו מגדירים הרשאות.
  • מה : איזה שינוי אנו מבצעים? האם אנו מוסיפים או מסירים את ההרשאה?
  • איזה : אילו מההרשאות אנו מגדירים?

אנו משתמשים באינדיקטורים כדי לייצג את הערכים הללו, ויוצרים "הצהרות הרשאות" קצרות כגון u+x, כאשר "u" פירושו "משתמש" (מי), "+" פירושו להוסיף (מה), ו- "x" פירושו הרשאת הביצוע (אשר) .

ערכי ה"מי "בהם אנו יכולים להשתמש הם:

  • u : משתמש, כלומר בעל הקובץ.
  • g : קבוצה, כלומר חברים בקבוצה שהקובץ שייך אליה.
  • o : אחרים, כלומר אנשים לא נשלטים על ידי uועל gהרשאות.
  • a : הכל, כלומר כל האמור לעיל.

אם לא נעשה שימוש באף אחד מאלה, chmodהתנהג כאילו aנעשה שימוש " ".

הערכים "באילו" אנו יכולים להשתמש הם:

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

הערכים "באילו" אנו יכולים להשתמש הם:

  • r : אישור הקריאה.
  • w : הרשאת הכתיבה.
  • x : הרשאת הביצוע.

הגדרת ושינוי הרשאות

נניח שיש לנו קובץ שבו לכולם יש הרשאות מלאות עליו.

ls -l new_ file.txt

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

chmod u = rw, og = r new_file.txt

השימוש באופרטור "=" פירושו שאנחנו מוחקים את ההרשאות הקיימות ואז מגדירים את ההרשאות שצוינו.

בואו נבדוק את ההרשאה החדשה בקובץ זה:

ls -l new_file.txt

ההרשאות הקיימות הוסרו וההרשאות החדשות נקבעו, כפי שציפינו.

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

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

ls -l new_script.sh

אנו יכולים להוסיף את הרשאת הביצוע לכולם באמצעות הפקודה הבאה:

chmod a + x new_script.sh

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

ls -l new_script.sh

יכולנו להשיג את אותו הדבר בלי ה"א "בהצהרה" a + x ". הפקודה הבאה הייתה עובדת באותה מידה.

chmod + x new_script.sh

הגדרת הרשאות למספר קבצים

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

אלה הקבצים בספריה הנוכחית:

ls -l

נניח שאנחנו רוצים להסיר את הרשאות הכתיבה למשתמשים "אחרים" מקבצים שיש להם סיומת ".page". אנו יכולים לעשות זאת באמצעות הפקודה הבאה:

chmod או * .page

בואו לבדוק איזה השפעה הייתה:

ls -l

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

אם היינו רוצים לכלול קבצים בספריות המשנה, היינו יכולים להשתמש באפשרות -R(רקורסיבית).

chmod -R או * .page

קצרנות מספרית

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

הספרות שבהן אתה יכול להשתמש ומה שהם מייצגים מפורטים כאן:

  • 0: (000) אין אישור.
  • 1: (001) אישור ביצוע.
  • 2: (010) הרשאת כתיבה.
  • 3: (011) כתוב והפעל הרשאות.
  • 4: (100) הרשאת קריאה.
  • 5: (101) קרא והפעל הרשאות.
  • 6: (110) הרשאות קריאה וכתיבה.
  • 7: (111) קרא, כתוב והפעל הרשאות.

כל אחת משלוש ההרשאות מיוצגת על ידי אחת הסיביות במקבילה הבינארית למספר העשרוני. אז 5, שהוא 101 בינארי, פירושו לקרוא ולהוציא לפועל. 2, שהוא 010 בבינארי, פירושו הרשאת הכתיבה.

באמצעות שיטה זו, אתה מגדיר את ההרשאות שברצונך לקבל; אינך מוסיף הרשאות אלה להרשאות הקיימות. אז אם כבר היו הרשאות קריאה וכתיבה היית צריך להשתמש ב- 7 (111) כדי להוסיף הרשאות ביצוע. שימוש ב- 1 (001) יסיר את הרשאות הקריאה והכתיבה ויוסיף את הרשאת הביצוע.

בואו להוסיף את הרשאת הקריאה בחזרה בקבצי ".page" עבור קטגוריית המשתמשים האחרים. עלינו להגדיר את הרשאות המשתמש והקבוצה גם כן, לכן עלינו להגדיר אותם למה שהם כבר. למשתמשים אלה כבר יש הרשאות קריאה וכתיבה, שהם 6 (110). אנו רוצים של"אחרים "יהיה קריאה והרשאות, ולכן יש להגדירם 4 (100).

הפקודה הבאה תשיג זאת:

chmod 664 * .עמוד

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

ls -l

אפשרויות מתקדמות

אם אתה קורא את דף האיש, chmodתראה שיש כמה אפשרויות מתקדמות שקשורות לסיביות SETUID ו- SETGID ולמחיקה מוגבלת או לסיבית "דביקה".

עבור 99% מהמקרים שתזדקק chmodלהם, האפשרויות המתוארות כאן יסיקו אותך.