לדלג לתוכן

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

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

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

משתמשים וקבוצות

  • הפקודה whoami - מציגה את המשתמש הנוכחי.
  • הפקודה id - מציגה את המשתמש הנוכחי, הקבוצות שלו, ומזהה של כל קבוצה ומשתמש.
    whoami
    id
    
  • משתמש root - משתמש root הוא משתמש שיכול לבצע כל פעולה בלינוקס, בדומה למשתמש system ב-Windows. יש קבצים ופקודות שאליהם אנחנו יכולים לגשת רק עם משתמש זה. - תקיית הבית של המשתמש root נמצאת ב /root
  • הפקודה sudo - מאפשרת לנו להריץ פקודות כ-root, וניתן להשתמש בה לביצוע פעולות עם הרשאות גבוהות.
  • למשל הקובץ etc/hosts/ במערכת ההפעלה, מכיל את רשומות סטטיות של dns- כדי לערוך אותו צריך הרשאות root, אז נשתמש בsudo כדי לערוך את הקובץ:
    sudo nano /etc/hosts
    
  • שימו לב שהפקודה sudo דורשת להזין סיסמא, הזינו את הסיסמא של המשתמש שלכם, שהזנתם כשהתקנתם את ubuntu.

  • הפקודה useradd - מוסיפה משתמש חדש.

  • הפקודה groupadd - מוסיפה קבוצה חדשה.
    sudo useradd amit
    sudo groupadd best_group
    
  • הפקודה passwd username - נותנת לנו להוסיף או לשנות סיסמא למשתמש, כדי להריץ אותה נצטרך הרשאות root.
  • הפקודה su - מעבר למשתמש אחר.
    sudo passwd amit
    su amit
    whoami
    exit
    
  • תזכורת: כדי לצאת מshell, השתמשו בפקודת exit.

  • גישה למשתמש root - כדי לגשת למשתמש root, ניתן להוסיף סיסמה עבור root.

    sudo passwd root
    su root
    whoami
    exit
    

  • בנוסף, אפשר להשתמש ב-sudo su כדי לגשת ל-root.
    sudo su
    whoami
    exit
    

קבצי passwd + shadow

  • בלינוקס הקובץ "/etc/passwd" מכיל רשימה של כל המשתמשים במערכת, כולל הid שלהם, והנתיב של תקיית הבית (אם יש להם.)
    הריצו cat /etc/passwd.
  • בלינוקס הקובץ "/etc/shadow" מכיל רשימה של כל הסיסמאות של המשתמשים במערכת אחרי "עירבול" (hash). כאשר אנחנו רוצים להתחבר למשתמש מסויים בלינוקס, המערכת מבצעת פעולת hash לסיסמה שאנחנו מכניסים, ובודקת את התוצאה עם הסיסמא שנמצאת בקובץ.
    הריצו cat /etc/shadow

פקודת sudo

  • כפי שהוזכר, ניתן להשתמש ב-sudo כדי להריץ פקודות כ-root.
  • לא תמיד ניתן להריץ פקודות עם sudo.
  • הפקודה sudo -l - בודק אילו פקודות ניתן להריץ עם sudo.
  • הסיבה שאפשר להשתמש ב-sudo היא שהמשתמש שלנו נמצא בקבוצת sudoers.
  • ניתן להוסיף משתמשים לקבוצת sudoers כך שיוכלו להשתמש ב-sudo, וניתן להגדיר באופן ידני אילו פקודות הם יכולים להריץ עם sudo.
    ניתן להוסיף משתמשים לקבוצה באמצעות הפקודה הבאה:
    sudo adduser <username> sudo
    

    בנוסף קיימות הגדרות נוספות לקבוצת הsudoers בקובץ: etc/sudoers/ נסו לערוך אותו עם הרשאות root.

הרשאות קבצים

  • הפקודה ls -l - מאפשרת לנו לראות המון הגדרות לגבי קבצים במערכת, בניהם ההרשאות שלהם. הדגל -l נקרא גם long mode כי הוא מראה לנו המון מידע על כל קובץ.
הסבר על הlong mode
  • הנה דוגמה לקובץ שמוצג עם -l
    -rwxrw-r-- 1 amit bestgroup      4385 Dec  7 15:28  51334.py
  • האות הראשונה מציינת את סוג הקובץ.
    • האות - מייצגת קובץ רגיל.
    • האות d מייצגת תיקיה.
    • ועוד...
  • אותיות 2-4 מציינות את ההרשאות שיש לבעל הקובץ.
    • האות r מייצגת שלבעל הקובץ יש הרשאה לקרוא את הקובץ.
    • האות w - מייצגת שלבעל הקובץ יש הרשאה לכתוב לקובץ.
    • האות x - מייצגת שלבעל הקובץ יש הרשאה להריץ את הקובץ.
  • אותיות 5-7 מציינות את ההרשאות שיש לחברי הקבוצה של הקובץ.
    • האות r - מייצגת שלחברי הקבוצה יש הרשאה לקרוא את הקובץ.
    • האות w - מייצגת שלחברי הקבוצה יש הרשאה לכתוב לקובץ.
    • האות x -מייצגת שלחברי הקבוצה יש הרשאה להריץ את הקובץ.
  • אותיות 8-10 מציינות את ההרשאות שיש לכולם.
    • האות r - מייצגת שלכולם יש הרשאה לקרוא את הקובץ.
    • האות w - מייצגת שלכולם יש הרשאה לכתוב לקובץ.
    • האות x - מייצגת שלכולם יש הרשאה להריץ את הקובץ.
  • לאחר מכן, שם הבעלים של הקובץ.
  • לאחר מכן, שם הקבוצה של הקובץ.
  • לאחר מכן, גודל הקובץ.
  • לאחר מכן, "תאריך ושעה" של הקובץ (מתי הקובץ שונה לאחרונה).
  • לבסוף, שם הקובץ.

שינוי בעל הקובץ

  • הפקודה chown - משנה את הבעלים של הקובץ. (נריץ עם sudo)
  • הפקודה chgrp - משנה את הקבוצה של הקובץ. (נריץ עם sudo)
  • הפקודה touch - משנה את "תאריך ושעה" של הקובץ.
    ls -l ./file
    sudo chown amit ./file
    sudo chgrp best_group ./file
    ls -l ./file
    touch ./file
    ls -l ./file
    
שינוי הרשאות הקובץ
  • אפשר לייצג הרשאות של קובץ על פי מספר, ולרוב נעשה זאת כשנרצה לשנות את ההרשאות של קובץ, בצורה הבאה:
    זכרו שההרשאות של קובץ מורכבות מ-9 אותיות: (--- --- ---)
    לפני שינוי הרשאות של קובץ ספציפי, יש לחשב את ערך ההרשאה.
    איך מחשבים:
  • r = 4, w = 2, x = 1
  • משלבים את ערכי ההרשאות של ההרשאות שברצונכם לתת.
  • ואז עושים את זה עבור הבעלים, הקבוצה וכולם.

דוגמאות:
- ההרשאה: --rwxrw-r היא- (rwx) עבור הבעלים, (rw) עבור הקבוצה ו-(r) עבור כולם.
- בעלים (rwx): r + w + x = 4 + 2 + 1 = 7
- קבוצה (rw): r + w = 4 + 2 = 6
- כולם (r): r = 4
- הרשאה סופית: 764
- ההרשאה: rwxrwxrwx היא- (rwx) עבור הבעלים, (rwx) עבור הקבוצה ו-(rwx) עבור כולם.
- בעלים (rwx): r + w + x = 4 + 2 + 1 = 7
- קבוצה (rwx): r + w + x = 4 + 2 + 1 = 7
- כולם (rwx): r + w + x = 4 + 2 + 1 = 7
- הרשאה סופית: 777

  • הפקודה chmod - משנה את הרשאות הקובץ.
    ls -l ./file
    chmod 777 ./file
    ls -l ./file
    
  • ניתן להשתמש ב-+ ו-- כדי להוסיף ולהסיר הרשאות בקלות עם chmod.
    ls -l ./file
    chmod -x ./file
    ls -l ./file
    chmod +x ./file
    

    למשל למעלה הסרנו הרשאת ריצה, ואז הוספנו מחדש.

ביט suid

  • ביט suid הוא הרשאה מיוחדת שניתן לתת לקובץ שתעשה את הדברים הבאים:
  • כשמשתמש מריץ קובץ עם ביט suid, הקובץ יפעל עם הרשאות הבעלים של הקובץ.
  • לדוגמה: אם הבעלים של קובץ כלשהו הוא root ויש ביט suid, אם מישהו יריץ את הקובץ הוא יפעל עם הרשאות root.
  • הפקודה chmod +s ./file - יוסיף ביט suid לקובץ.
    דוגמה:
    whoami
    

    הפקודה מראה את היוזר שאיתו התוכנה whoami רצה.
  • אם נוסיף suid לwhoami כroot (כלומר עם sudo) כשנריץ את whoami עם המשתמש שלנו נראה שהפקודה רצה עם הרשאות root.
    which whoami
    sudo chmod +s /usr/bin/whoami
    whoami
    

    כמובן שאפשר גם למחוק את הsuid ביט.
    sudo chmod -s /usr/bin/whoami
    
  • הפקודה find / -perm -4000 - יחפש קבצים שיש להם ביט suid מופעל.
    find / -perm -4000
    ls -l /usr/bin/sudo
    `-rwsr-xr-x 1 root root 261080 Oct 10  2022 /usr/bin/sudo`
    
  • ניתן לראות ש-passwd, sudo, su הם קבצים שיש להם ביט suid מופעל ו-root כבעלים, וזה הגיוני כי הם זקוקים להרשאות root כדי לבצע את עבודתם, ואנחנ ונרצה שכל משתמש יוכל להריץ אותם- גם לא root והן עדיין יפעלו בהרשאות root.