האם אתה עייף מלהיות חייב לשנות אישורי קבצים ותיקיות באופן ידני? האם אתה מחפש דרך מהירה ויעילה יותר לשנות אישורי קבצים ותיקיות שלך? אם כן, אז הגעת למקום הנכון מכיוון שבמאמר הזה תלמד כיצד לשנות אישורי קבצים ותיקיות באמצעות הפקודה chmod
באופן רקורסיבי!
המשך לקרוא כדי ללמוד עוד!
דרישות מוקדמות
כדי לעקוב אחרי, יש לך צורך במכשיר Linux ובתיקייה של קבצים ותתי-תיקיות שבהם אישורים זמינים לתרגול.
למידה על משתמשים וקבוצות ב-Linux
בעלי וקבוצות הם חשובים ב-Linux, הם נחוצים לניהול מאובטח של קבצים ותיקיות. בעל הקובץ או התיקייה הוא אליו הקובץ או התיקייה משוייכים, שהם היוצרים, כברירת מחדל. ב-Linux, קבצים ותיקיות שייכים גם לקבוצות. המשתמשים והקבוצות מוגדרים גם על ידי הפקודה chown
.
בתמונת המסך למטה, התוכן המודגש בצבע ירוק מציין את המשתמש שברשותו הקובץ או התיקייה, mihail
בדוגמה זו. התוכן המודגש בצבע כחול מציין איזו קבוצה הקובץ או התיקייה שייכת אליה, שבבעלות הקבוצה staff
בדוגמה זו.

הבנת אישורי קבצים ותיקיות ב-Linux
ההרשאות קובעות אילו פעולות יכול משתמש או קבוצה לבצע על קובץ או ספרייה נתונים. הן מסומנות בתצוגת תווים וגם מקבלות ערך מספרי.
- קריאה (
r
או4
): מציין אם משתמש או קבוצה יכולים לקרוא את תוכן הקובץ או הספרייה. ההרשאה לקרוא מוענקת כברירת מחדל לכל הקבצים והספריות הנוצרים חדשים עבור כל הצדדים. - כתיבה (
w
או2
): מציין אם משתמש או קבוצה יכולים לערוך את תוכן האובייקט. ההרשאה לכתיבה מוענקת כברירת מחדל רק לבעלים של הקובץ או הספרייה. - ביצוע (
x
או1
): מציין אם משתמש או קבוצה יכולים לבצע קובץ או לבצע פקודות בתוך ספרייה. ההרשאה לביצוע מוענקת כברירת מחדל רק לספריות אך לא לקבצים.
אם אינך נותן למשתמש (
u
) הרשאת ביצוע לספרייה, הוא לא יוכל לרשום את התוכן מאחר שהמשתמש לא יוכל לבצע פקודות בתוך הספרייה!
דוגמה מוצגת למטה, פלט הפקודה ls -l
מדגים את סוגי ההרשאות השונים. אלה הרשאות שמוקדם על ידי הערך d
, מציינות ספרייה.

למה אז נראים כאילו יש שלוש סטים של הרשאות עבור כל אובייקט? שליטה גרנולרית על הרשאות מתבצעת על ידי חלוקת ההרשאות לסעיפים (המתייחסים לצדדים לצורך המדריך הזה) המפורטים למטה.
- משתמש (
u
): בעל הקובץ או התיקייה, מודגש בצבע כחול. - קבוצה (
g
): חברי הקבוצה שלה קובץ או התיקייה שייכת אליה, מודגשים בצבע ירוק. - אחר (
o
): כל המשתמשים והקבוצות הנוספים שלא הוקצו באופן ברור, מודגשים בצבע אדום.

שינוי ההרשאות של הקובץ באמצעות פקודת chmod רקורסיבית
עם הבנה נכונה של הרשאות Linux, קראו ללמוד כיצד לשנות את ההרשאות של קובץ. הרשאות משתנות דרך פקודת ה-chmod
הרקורסיבית כפי שמוצג בדוגמאות למטה.
1. ראשית, בדקו את ההרשאות הנוכחיות בעזרת הפקודה ls -l
. כאן מוצג הקובץ my_dir/index.js.

2. הריצו את פקודת ה-chmod
, כשמציינים את הצד, a
(הכל), ואת ההרשאות, rwx
, או קריאה/כתיבה/ביצוע. הפקודה המלאה היא: chmod a=rwx index.js
.

3. כפי שאתם רואים, ריצת פקודת ה-chmod
הרקורסיבית לא מחזירה תוצאה. כדי לוודא שההרשאות שונו, הריצו שוב את הפקודה ls -l
.

הגדרת הרשאות של קובץ באמצעות ערכים נומריים
זכרו את המספרים המשויכים להרשאות כמו קריאה או כתיבה? במקום לציין את הערכים התווים, תוכלו לציין הרשאות ספציפיות דרך מספר. על ידי הוספת הערכים, אתם יוצרים הרשאה ספציפית כמו 6
המשלבת בין הרשאת כתיבה (2
) וקריאה (4
).
בדוגמה למטה, הגדר הרשאות עבור קובץ main.py באמצעות הפקודה chmod 664 main.py
. הערכים המספריים מתפצלים כך:
- משתמש: קריאה וכתיבה (
6
). - קבוצה: קריאה וכתיבה (
6
). - אחרים: קריאה (
4
).

לאחר שההרשאות משתנות, ודא את ההרשאות החדשות עבור קובץ main.py באמצעות הפקודה ls -l
.

הסרת והוספת הרשאות לקבצים
הפקודות שאינן מספריות שהרצת עד כה, השתמשו בפרמטר ההקצאה (=
) עם הפקודה chmod
באופן רקורסיבי, להגדרת הרשאות מפורשות. במקום זאת, אתה יכול להסיר (-
) או להוסיף (+
) הרשאות לקבוצות ההרשאות הקיימות.
1. רשום תחילה את ההרשאות הקיימות עבור קובץ README.md באמצעות הפקודה ls -l README.md
.

2. לאחר מכן, הוסף (+
) הרשאת ביצוע (x
) לצד המשתמש (u
), בעוד שהסר (-
) הרשאת קריאה (r
) מצד אחר (o
) עבור README.md, עם הפקודה הבאה chmod u+x,o-r README.md
. ההרשאות השונות של הצדדים מופרדות בפסיקים (,
).

3. הרץ את הפקודה ls -l README.md
כדי לוודא שההרשאות השתנו.

שינוי רקורסיבי של הרשאות לקבצים ותיקיות
אף על פי שאתה מתקדם, אתה עובד רק על קובץ אחד בכל פעם. מה קורה אם יש לך מספר גדול של קבצים שאתה רוצה לשנות את ההיתרים שלהם? זמן להרחיב את יכולותיך וללמוד לשנות היתרים עבור מספר קבצים.
אחת האפשרויות לשנות היתרים של מספר רב של קבצים היא להריץ את chmod
באופן רקורסיבי עם אפשרות ה־-R
(רקורסיבי, ולא באות גדולה). האפשרות הרקורסיבית תשנה את ההיתרים עבור כל הקבצים, כולל אלה שנמצאים בתת־תיקיות, בתוך נתיב נתון.
1. יש לשקול את הפקודה הבאה, chmod -R a=r,u=rwx my_dir
. רוב האפשרויות אתה כבר ראית לפני כן.
פקודה זו תשנה את ההיתרים עבור כל הקבצים בתיקייה, my_dir ותתי התיקיות שלה, באמצעות האפשרות הרקורסיבית (-R
). הקבצים מוגדרים לקריאה (r
) עבור כולם (a
), עם היתר שונה עבור המשתמש הנוכחי (u
) המוגדר להרשאות מלאות (קריאה, כתיבה, ביצוע).
בתמונת המסך למטה, אתה רואה את ההיתרים התוצאתיים לאחר ביצוע הפקודה, שאין לה פלט תוצאה.

2. נניח שאתה מפעיל את הפקודה, chmod -R a=rwx my_dir
, על אותו תיקייה כמו לפני כן, my_dir. שוב, אתה משנה את כל הקבצים ב־my_dir, ובתת־התיקיות שלה, כדי לתת לכולם (a
) היתרים מלאים (קריאה, כתיבה, ביצוע). הנה תוצאת הפקודה, מאחר ו־chmod
הרקורסיבי אינו מציג פלט.

3. מה עם השיטה המספרית? כפי שמוצג למטה, השיטה הרקורסיבית עובדת גם עם הרשאות מספריות, chmod -R 770 my_dir
. כאן אתה נותן הרשאות מלאות למשתמש ולקבוצה, אך אין הרשאות לצד השלישי.

4. הרץ ls -l
כדי לבדוק שהרשאות הקבצים והתיקיות של my_dir מוגדרות בשיטת המספרית.

הגדרת התנהגות קובץ ותיקייה באמצעות הרשאות מיוחדות
הרשאות מיוחדות מאפשרות מספר יתרונות נוספים השונים מהסטנדרטיים. יש שלושה הרשאות מיוחדות. הנה איך הרשאות מיוחדות אלו פועלות וכיצד ניתן להוסיף אותן לקובץ או לתיקייה.
הגדרת הרשאות SUID (משתמש + S)
מסומן בדרך כלל כ-SUID, זו הרשאה מיוחדת למשתמש. ה-SUID יש לו תפקיד אחד: קובץ עם SUID תמיד מוריץ כמו המשתמש שבבעלותו של הקובץ, ללא קשר למי מפעיל את הקובץ.
לדוגמה, נניח שיש לך את index.js. כדי לתת הרשאת SUID נוספת, הרץ chmod u+s index.js
.
עכשיו, אם תריץ ls -l index.js
, תגלה שלמשתמש ישנו s בהרשאות שלו במקום x.

הגדרת הרשאות SGID (קבוצה + S)
מסומן בדרך כלל כ-SGID, הרשאה מיוחדת זו מכילה שני תפקידים:
- אם הוגדר לקובץ, הוא מאפשר לקובץ להתבצע כקבוצה שבבעלותו את הקובץ, ללא קשר למי מפעיל את הקובץ.
- אם הוא מוגדר עבור ספרייה, כל הקבצים שיוצרו בספרייה יקבלו את הבעלות הקבוצתית של הבעלים של הספרייה.
תירגול על הקובץ index.php. כדי להוסיף את ההרשאה SGID לקובץ זה, הרץ את הפקודה הבאה: chmod g+s index.php
.
כעת, אם תריץ ls -l index.php
, תגלה שיש לקבוצה group את ה- s בהרשאותיהם.

עבור לספרייה: my_dir. תוכל להוסיף את הרשאת ה SGID לספרייה זו באמצעות הפקודה הבאה: chmod g+s my_dir
. כל הקבצים שיוצרו בספרייה זו יקבלו כעת את הבעלות הקבוצתית של בעל הספרייה. תוכל לבדוק את הרשאות הספרייה החדשות באמצעות ls -ld my_dir
(הפרמטר d
מגביל את הפלט לספריות בלבד).

שינוי בהרשאת הביט הנצמד
ההרשאה המיוחדת האחרונה ידועה גם בשם "ביט הנצמד". ההרשאה הזו אינה משפיעה על קבצים יחידים. אך, ברמת הספרייה, היא מגבילה את מחיקת הקבצים. רק ה בעלים של קובץ יכול להסיר קובץ בתוך ספרייה זו.
הוסף את ביט הנצמד לספרייה הידועה הישנה my_dir. כדי לעשות זאת, הרץ את הפקודה כך: chmod +t my_dir
.
שים לב שכדי להוסיף את ביט הנצמד, אין לך לציין את קבוצת other(o) לפני
+t
.
כאשר אתה בודק את הרשאות my_dir החדשות, תראה "T" גדולה בהרשאות other, כפי שמוצג בתמונה למטה.

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