שליטה מתקדמת על הרשאות ב-Linux: חקירה מעמיקה לפקודות Chmod ו-Chown

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

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

עכשיו גלגל את המעטפות האלה ושולט בהרשאות Linux כמו אלוף!

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

לפני שתתחיל בשטח הרחב של הרשאות Linux, וודא שיש לך מכונת Linux למיומנות בפקודות chmod ו־chown. במדריך זה משמשת אובונטו 22.04 LTS (ג'אמי ג'לי פיש).

הבנת הפקודות chmod ו־chown

בעולם הרשאות Linux, הפקודות chmod ו־chown מחזיקות כוח משמעותי. הבנת כיצד להשתמש בפקודות אלו בצורה אפקטיבית היא חיונית לכל משתמש Linux, ממתחילים ועד מנהלי מערכות מנוסים.

שתי הפקודות מציעות דרכים רבות לשלוט במערכת Linux שלך, אך למטה מוצגות היסודות של מה שכל אחת מהן יכולה:

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

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

המשך לקרוא ולשטוף עוד עמוק יותר בתיאוריות של פקודות אלו.

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

לפני שמשנים הרשאות ובעלות עם פקודות chmod ו־chown, השלב הראשון הוא לרשום קבצים ולצפות בהרשאותיהם.

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

כדי לצפות בהרשאות של קובץ או תיקייה:

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

ls -l

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

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

Viewing a list of files and directories

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

בנוסף, כל אחת מתוך ההרשאות הללו ניתנת לשימוש בשלושה קטגוריות שונות של בעלות: בעל הקובץ, קבוצה ואחרים (משתמשים שאינם בעלי הקובץ ולא חברים בקבוצה).

הבא ממחיש כל חלק מהרשאות הקובץ:

  • התו הראשון מציין קובץ () או תיקייה (d).
  • החלק הראשון (rw-) – מעניק לבעל הקובץ הרשאות קריאה וכתיבה אך לא ביצוע.
  • החלק השני (rw-) – נותן לקבוצה הרשאות קריאה וכתיבה אך לא ביצוע.
  • החלק האחרון (r–) – מאפשר לאחרים הרשאה לקרוא אך לא לכתוב או לבצע.
Illustrating file permissions

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

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

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

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

1. בצע את הפקודה who למטה כדי ליצור קובץ חדש (>) בשם user.txt כמשתמש לא רשאי, המכיל רשימה של המשתמשים המחוברים כעת למחשב Linux שלך.

הפקודה הזו לא תחזיר פלט בטרמינל, אך תאמת את ההרשאות של הקובץ בשלב הבא.

who > user.txt

2. לאחר מכן, הריץ את הפקודה למטה כדי להציג את ההרשאות של קובץ user.txt.

ls -l user.txt

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

שים לב להרשאות הנוכחיות של הקובץ, מאחר שתבצע השוואה מאוחר יותר. המוקד שלך כעת הוא הרשאות המשתמש (rw-).

Viewing the file’s default permissions

3. כעת, הרץ את הפקודה הבאה כדי להסיר (-) את ההרשאה לכתיבה (w) מהבעלים (u), משאר ההרשאות לקטגוריות אחרות לא תשתנה.

הטבלה הבאה מפרטת מה מייצג כל סמל:

User Symbol Details Operation Symbol Details Permission Symbol Details
u Owner + Add permissions r Read
g Group Remove permissions w Write
o Others = Set permissions explicitly x Execute

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

chmod u-w user.txt

4. לאחר שינוי ההרשאות, הריץ את הפקודה הבאה כדי להציג את ההרשאות של קובץ user.txt.

ls -l user.txt

השווה את ההרשאות של הקובץ שהערת בשלב שני (rw-) לאלו שמופיעות למטה. שים לב שהבעלים (u) כעת יש רק את הרשאת הקריאה (r–).

Viewing modified owner permission

5. ביצוע כל פקודה למטה כדי לבצע את הפעולות הבאות:

  • הוסף (+), כתוב (w), ובצע (x) הרשאות לבעל הקובץ (u) על אותו קובץ user.txt.
  • הצג את מידע הקובץ user.txt כדי לוודא את ההרשאות ששונו.
chmod u+wx user.txt
ls -l user.txt

כפי שמוצג למטה, המשתמש כעת יש לו הרשאות קריאה, כתיבה וביצוע (rwx) על קובץ user.txt.

Viewing modified owner permissions

6. במקום להוסיף, הפעל את הפקודה chmod למטה כדי להסיר (-) את ההרשאות הבאות:

  • הרשאת ביצוע (x) לבעל הקובץ (u).
  • הרשאת כתיבה (w) לקבוצה (g).
  • כל הרשאות (rwx) לאחרים (o).

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

הפעם, אפשרות -v אומרת ל־chmod להציג הודעה על השינויים שבוצעו על ידי הפעולה.

chmod -v u-x,g+w,o-rwx user.txt
Viewing modified permissions for owner, group, and others

7. לאחר מכן, הפעל את הפקודה הבאה כדי לבצע את הפעולות הבאות:

  • הוסף (+) הרשאות קריאה (r) לכל הקטגוריות.
  • הסר (-) הרשאות כתיבה וביצוע (wx) לכל (a) הקטגוריות.
chmod a+r,a-wx user.txt

8. כעת, בצע את הפקודה למטה כדי להציג את הרשאות המעודכנות של קובץ user.txt.

ls -l user.txt
Viewing updated permissions for all categories

? לחלופין, תוכל לשנות את אותה הרשאה עבור כל שלוש הקטגוריות (משתמש, קבוצה ואחרים) עם הפקודות הבאות:

chmod ugo-r – מסיר (-) הרשאות קריאה (r) עבור כל שלוש הקטגוריות (ugo).

chmod ugo+r – מוסיף (+) הרשאות קריאה (r) עבור כל שלוש הקטגוריות (ugo).

9. לבסוף, הפעל את הפקודות למטה כדי לבצע את הפעולות הבאות:

  • chmod – מגדיר (=) הרשאות קריאה וכתיבה (rw) עבור בעל הקובץ והקבוצה, ומסיר הרשאות של אחרים (o=).
    הסימן = מאפשר לך להגדיר באופן פולחן הרשאות ולדרוס כל הרשאות קיימות. אם אין הרשאות מסויימות אחרי הסימן =, כל ההרשאות לקטגוריה זו יוסרו.
  • ls – צפה בשינויים שביצעת בהרשאות קובץ user.txt.
chmod ug=rw,o= user.txt
ls -l user.txt
Viewing the modified permissions set

התאמת הרשאות באמצעות פקודת chmod: מצב אוקטלי

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

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

  • קריאה (r) = 4
  • כתיבה (w) = 2
  • ביצוע (x) = 1
  • אין הרשאות (-) = 0

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

1. בצע את הפקודה הבאה של \texttt{chmod} כדי להוסיף את ההרשאות הבאות (\texttt{664}) לקובץ \texttt{user.txt}:

  • בעלים – קריאה (\texttt{4}) + כתיבה (\texttt{2}) + ביצוע (\texttt{0}) = \texttt{6}
  • קבוצה – קריאה (\texttt{4}) + כתיבה (\texttt{2}) + ביצוע (\texttt{0}) = \texttt{6}
  • אחרים – קריאה (\texttt{4}) + כתיבה (\texttt{0}) + ביצוע (\texttt{0}) = \texttt{4}

כאשר אתה משתמש במספר בארבע ספרות עם הפקודה \texttt{chmod} להרשאות קובץ ב-Linux, הספרה המובילה (הימנית) מייצגת הרשאות מיוחדות, כמו setuid, setgid, ו-sticky bit. הספרות הבאות שלוש הבאות מייצגות את הרשאות הרגילות לבעלים, לקבוצה ולאחרים בהתאמה.

אך כאשר אתה משתמש במספר בשלוש ספרות, הספרה הראשונה מייצגת את ההרשאות של בעל הקובץ (\texttt{u}), השנייה לקבוצה של הקובץ (\texttt{g}), והאחרונה לאחרים (\texttt{o}).

במקרים רבים, בעיקר כשאין עיסוק בהרשאות מיוחדות, ייתכן שתראה רק רשומה בשלוש ספרות. האפס המוביל, המציין רישום בסיסי של נומרציה אוקטלית, יכול להיה משתמש ולכן להילקח. כמו בדוגמא למטה, במקום \texttt{0664}, תשתמש ב-\texttt{664}.

chmod 664 user.txt

2. לאחר מכן, הפעל את הפקודה הבאה כדי להציג את ההרשאות לקובץ \texttt{user.txt}.

ls -l user.txt

בפלט למטה, תוכל לראות את ההרשאות שהוגדרו עבור קובץ user.txt הן במצב סימבולי, ששווה ל-664 במצב אוקטלי.

Viewing permissions modified via octal mode

3. כעת, הריץ את הפקודה stat למטה כדי להציג סטטיסטיקות מקיפות על הקובץ user.txt, כולל ההרשאות במצב סימבולי ואוקטלי.

stat user.txt

על המאפיין גישה, כפי שמוצג למטה, תראה את המצב האוקטלי והסימבולי המשוייכים להרשאות הקובץ user.txt.

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

Viewing the octal and symbolic representations of permissions

שינוי בבעלות הקובץ בעזרת הפקודה chown

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

הפקודה chown (שינוי בעלים) היא הפקודה הראשית לניהול בעלות של קובץ או ספרייה. כמו פקודת chmod, הפקודה chown היא פקודה שכרות רק – רק משתמש root יכול לשנות את הבעלות של קובץ או ספרייה.

כדי לנהל את הבעלות עם הפקודה chown, המשך בצעדים הבאים:

1. הרוץ את הפקודות ליצירת משתמש (useradd) בשם bill ולספק סיסמה חזקה.

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

sudo useradd bill
sudo passwd bill
Adding a user and updating user password

2. לאחר מכן, בצע כל פקודה למטה וכתוב רשימת משתמשים שנכנסו כעת (who) לקובץ בשם new.txt כמשתמש שאינו רשאי, וצפה (ls) בבעלותו וההרשאות שלו.

who > new.txt
ls -l  new.txt

למטה, הפלט מציג את בעל הקובץ הוא mercy.

Viewing the owner of the new.txt file

3. לאחר שאישור הבעלות, הרץ את הפקודה chown למטה כדי לשנות את בעל הקובץ new.txt להיות bill.

כמו פקודת chmod, פקודת chown אינה מספקת פלט, אך תוודא את השינוי בבעלות בשלב הבא.

sudo chown bill new.txt

4. כעת, הפעל את הפקודה הבאה כדי לצפות (ls) בבעל החדש של קובץ new.txt.

ls -l  new.txt

הפלט למטה מאשר שהצלחת לשנות את בעלות הקובץ new.txt להיות bill, שעתה בעליות וסמכות על הקובץ זה.

Viewing the new owner of the new.txt file

אכן אפשר להטמיע את פקודת chown כדי לשנות את בעלות הקבוצה

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

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

כדי לשנות את בעלות הקבוצה, השלימו את השלבים הבאים:

ls -l  new.txt
Viewing the group associated with the new.txt file

1. בצעו את הפקודה הבאה כדי לראות את הקבוצה הקשורה לקובץ new.txt.

  • 2. לאחר מכן, הפעילו את הפקודות הבאות, שאינן מספקות פלט אך מבצעות את הפעולות הבאות:
  • צורו קבוצה (groupadd) בשם developers.
sudo groupadd developers
sudo chown :developers new.txt

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

sudo chown -R john:finance-group user.txt

sudo chown -R john:finance-group ~/Desktop

3. כעת, הפעילו מחדש את הפקודה הבאה כדי לראות (ls) את בעלות הקבוצה החדשה של קובץ new.txt.

ls -l  new.txt

למטה, הפלט מאשר ששיניתם בהצלחה את בעלות הקבוצה של קובץ new.txt ל־developers.

Viewing the new group ownership of the new.txt file

שינוי בעלות קובץ דרך UID ו-GID מספריים

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

זהוויות המשתמש ייחודיות אלו הן מזהה משתמש (UID) ומזהה קבוצה (GID). הן מספקות אופן בלתי דופי לקביעת בעלות על קבצים בסביבות עם שמות משתמשים או קבוצות מתנפצות או דומות.

כדי לשנות את הבעלות באמצעות UID ו-GID מספריים, בצעו את השלבים הבאים:

1. בצע את הפקודה הבאה כדי לרשום מידע (ls) על קובץ new.txt.

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

ls -n new.txt

שים לב למזהה המשתמש והמזהה של הקבוצה הקשורים עם קובץ new.txt, מאחר ותצטרך אותם לביצוע השוואות בשלב הבא.

Viewing the UID and GID associated with the new.txt file

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

ודא שאתה מחליף את המציין <username> ו־<groupname> בשמות המשתמש והקבוצה הרצויים שלך.

getent passwd <username>
getent group <groupname>

שים לב למזהה המשתמש (כלומר, 1002) ולמזהה הקבוצה (כלומר, 1005) בפלט הבא, מאחר ותצטרך אותם לשינוי בבעלות בשלב הבא.

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

לכן, מזהה הקבוצה של המשתמש john שונה ממזהה הקבוצה של הקבוצה finance. אלא אם כן המשתמש מתווסף באופן ברור לקבוצה, המזהים הרלוונטיים שלהם נשארים שונים.

Viewing UID and GID for user john and group finance

3. לאחר מכן, הרץ את הפקודה הבאה כדי לשנות את הבעלות ואת הבעלות הקבוצתית של קובץ new.txt. וודא שאתה מחליף את 1002 ו־1005 באלו שרשמת בשלב השני.

? שים לב ששימוש במזהים מספריים עבור UID ו-GID עשוי להיות פחות קריא מאשר שימוש בשמות משתמשים ושמות קבוצות. וודא כי אתה משתמש במספרים הנכונים כדי למנוע שינויים לא ברצון.

sudo chown 1002:1005 new.txt

4. לבסוף, הפעל מחדש את הפקודה למטה כדי לרשום מידע (ls) על קובץ ה-new.txt ולאמת את השינויים בבעלות הקובץ.

ls -n new.txt

השווה את ה-UID וה-GID שרשמת בשלב הראשון עם אלו למטה. שים לב כי בעלות הקובץ החדשה השתנתה מ-1001:1003 ל-1002:1005.

Verifying the new UID and GID for the new.txt file

מסקנה

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

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

אך למה לא לחזק עוד יותר את המיומנויות ב-Linux שלך? אולי כדאי לחקור תוך עמק את שיטות בקרת גישה מתקדמות, כולל רשימות בקרת גישה (ACLs)? גלה עוד שליטה מדויקת יותר על הרשאות קבצים ותיקיות!

Source:
https://adamtheautomator.com/chmod-and-chown/