ניהול הרשאות קבצים ותיקיות עם chmod באופן רקורסיבי

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

המשך לקרוא כדי ללמוד עוד!

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

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

למידה על משתמשים וקבוצות ב-Linux

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

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

Listing the owner and group of a set of files and directories

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

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

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

אם אינך נותן למשתמש (u) הרשאת ביצוע לספרייה, הוא לא יוכל לרשום את התוכן מאחר שהמשתמש לא יוכל לבצע פקודות בתוך הספרייה!

דוגמה מוצגת למטה, פלט הפקודה ls -l מדגים את סוגי ההרשאות השונים. אלה הרשאות שמוקדם על ידי הערך d, מציינות ספרייה.

Listing file and directory permissions

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

  • משתמש (u): בעל הקובץ או התיקייה, מודגש בצבע כחול.
  • קבוצה (g): חברי הקבוצה שלה קובץ או התיקייה שייכת אליה, מודגשים בצבע ירוק.
  • אחר (o): כל המשתמשים והקבוצות הנוספים שלא הוקצו באופן ברור, מודגשים בצבע אדום.
Demonstrating the combined permissions for a file or directory

שינוי ההרשאות של הקובץ באמצעות פקודת chmod רקורסיבית

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

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

Checking the current permission of index.js.

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

Changing index.js’ permissions.

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

Verifying index.js permissions

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

זכרו את המספרים המשויכים להרשאות כמו קריאה או כתיבה? במקום לציין את הערכים התווים, תוכלו לציין הרשאות ספציפיות דרך מספר. על ידי הוספת הערכים, אתם יוצרים הרשאה ספציפית כמו 6 המשלבת בין הרשאת כתיבה (2) וקריאה (4).

בדוגמה למטה, הגדר הרשאות עבור קובץ main.py באמצעות הפקודה chmod 664 main.py. הערכים המספריים מתפצלים כך:

  • משתמש: קריאה וכתיבה (6).
  • קבוצה: קריאה וכתיבה (6).
  • אחרים: קריאה (4).
Changing permissions for main.py.

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

Verifying permissions for main.py

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

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

1. רשום תחילה את ההרשאות הקיימות עבור קובץ README.md באמצעות הפקודה ls -l README.md.

Checking README.md current permissions

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

Changing README.md permissions

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

Checking README.md new permissions

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

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

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

1. יש לשקול את הפקודה הבאה, chmod -R a=r,u=rwx my_dir. רוב האפשרויות אתה כבר ראית לפני כן.

פקודה זו תשנה את ההיתרים עבור כל הקבצים בתיקייה, my_dir ותתי התיקיות שלה, באמצעות האפשרות הרקורסיבית (-R). הקבצים מוגדרים לקריאה (r) עבור כולם (a), עם היתר שונה עבור המשתמש הנוכחי (u) המוגדר להרשאות מלאות (קריאה, כתיבה, ביצוע).

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

Checking my_dir files new permissions

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

Checking my_dir files new permissions to confirm every part now has every permission

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

Recursively changing permissions with the numeric method

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

Checking the permissions set once again, this time with the numeric method

הגדרת התנהגות קובץ ותיקייה באמצעות הרשאות מיוחדות

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

הגדרת הרשאות SUID (משתמש + S)

מסומן בדרך כלל כ-SUID, זו הרשאה מיוחדת למשתמש. ה-SUID יש לו תפקיד אחד: קובץ עם SUID תמיד מוריץ כמו המשתמש שבבעלותו של הקובץ, ללא קשר למי מפעיל את הקובץ.

לדוגמה, נניח שיש לך את index.js. כדי לתת הרשאת SUID נוספת, הרץ chmod u+s index.js.

עכשיו, אם תריץ ls -l index.js, תגלה שלמשתמש ישנו s בהרשאות שלו במקום x.

Checking index.js new permissions

הגדרת הרשאות SGID (קבוצה + S)

מסומן בדרך כלל כ-SGID, הרשאה מיוחדת זו מכילה שני תפקידים:

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

תירגול על הקובץ index.php. כדי להוסיף את ההרשאה SGID לקובץ זה, הרץ את הפקודה הבאה: chmod g+s index.php.

כעת, אם תריץ ls -l index.php, תגלה שיש לקבוצה group את ה- s בהרשאותיהם.

Checking index.php new permissions

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

Checking my_dir new permissions

שינוי בהרשאת הביט הנצמד

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

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

שים לב שכדי להוסיף את ביט הנצמד, אין לך לציין את קבוצת other(o) לפני +t.

כאשר אתה בודק את הרשאות my_dir החדשות, תראה "T" גדולה בהרשאות other, כפי שמוצג בתמונה למטה.

Checking my_dir new and special permissions

הסקירה

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

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

Source:
https://adamtheautomator.com/chmod-recursive/