1.4 הרשאות בלינוקס הרצאה
משתמשים, קבוצות והרשאות¶
- בלינוקס אנחנו רוצים ליצור מערכת הרשאות, כדי להגדיר מי יכול לצפות, לקרוא או להריץ קבצים מסוימים.
- לשם כך יש לנו משתמשים, קבוצות והרשאות לקבצים.
משתמשים וקבוצות¶
- הפקודה
whoami- מציגה את המשתמש הנוכחי. - הפקודה
id- מציגה את המשתמש הנוכחי, הקבוצות שלו, ומזהה של כל קבוצה ומשתמש.
- משתמש root - משתמש root הוא משתמש שיכול לבצע כל פעולה בלינוקס, בדומה למשתמש system ב-Windows. יש קבצים ופקודות שאליהם אנחנו יכולים לגשת רק עם משתמש זה. - תקיית הבית של המשתמש root נמצאת ב
/root - הפקודה
sudo- מאפשרת לנו להריץ פקודות כ-root, וניתן להשתמש בה לביצוע פעולות עם הרשאות גבוהות. - למשל הקובץ
etc/hosts/במערכת ההפעלה, מכיל את רשומות סטטיות של dns- כדי לערוך אותו צריך הרשאות root, אז נשתמש בsudo כדי לערוך את הקובץ:
-
שימו לב שהפקודה sudo דורשת להזין סיסמא, הזינו את הסיסמא של המשתמש שלכם, שהזנתם כשהתקנתם את ubuntu.
-
הפקודה
useradd- מוסיפה משתמש חדש. - הפקודה
groupadd- מוסיפה קבוצה חדשה.
- הפקודה
passwd username- נותנת לנו להוסיף או לשנות סיסמא למשתמש, כדי להריץ אותה נצטרך הרשאות root. - הפקודה
su- מעבר למשתמש אחר.
-
תזכורת: כדי לצאת מshell, השתמשו בפקודת exit.
-
גישה למשתמש root - כדי לגשת למשתמש root, ניתן להוסיף סיסמה עבור root.
- בנוסף, אפשר להשתמש ב-
sudo suכדי לגשת ל-root.
קבצי 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.
ניתן להוסיף משתמשים לקבוצה באמצעות הפקודה הבאה:
בנוסף קיימות הגדרות נוספות לקבוצת ה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- משנה את "תאריך ושעה" של הקובץ.
שינוי הרשאות הקובץ¶
- אפשר לייצג הרשאות של קובץ על פי מספר, ולרוב נעשה זאת כשנרצה לשנות את ההרשאות של קובץ, בצורה הבאה:
זכרו שההרשאות של קובץ מורכבות מ-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- משנה את הרשאות הקובץ.
- ניתן להשתמש ב-
+ו--כדי להוסיף ולהסיר הרשאות בקלות עם chmod.
למשל למעלה הסרנו הרשאת ריצה, ואז הוספנו מחדש.
ביט suid¶
- ביט suid הוא הרשאה מיוחדת שניתן לתת לקובץ שתעשה את הדברים הבאים:
- כשמשתמש מריץ קובץ עם ביט suid, הקובץ יפעל עם הרשאות הבעלים של הקובץ.
- לדוגמה: אם הבעלים של קובץ כלשהו הוא root ויש ביט suid, אם מישהו יריץ את הקובץ הוא יפעל עם הרשאות root.
- הפקודה
chmod +s ./file- יוסיף ביט suid לקובץ.
דוגמה:
הפקודה מראה את היוזר שאיתו התוכנה whoami רצה. - אם נוסיף suid לwhoami כroot (כלומר עם sudo) כשנריץ את whoami עם המשתמש שלנו נראה שהפקודה רצה עם הרשאות root.
כמובן שאפשר גם למחוק את הsuid ביט.
- הפקודה
find / -perm -4000- יחפש קבצים שיש להם ביט suid מופעל.
- ניתן לראות ש-
passwd,sudo,suהם קבצים שיש להם ביט suid מופעל ו-root כבעלים, וזה הגיוני כי הם זקוקים להרשאות root כדי לבצע את עבודתם, ואנחנ ונרצה שכל משתמש יוכל להריץ אותם- גם לא root והן עדיין יפעלו בהרשאות root.