משתמש אובונטו עם מינימום זכויות. שרת אובונטו - זכויות משתמש ניהוליות. הוספת משתמש לקבוצת sudo

06.12.2021

נניח שאני משתמש חדש אובונטו לינוקס 16.04.xx LTS. יכול להיות שיש לי מיד מספר שאלות. איך ליצור אחד חדש משתמש sudoבשרת שלי? כיצד להוסיף משתמש חדש לקובץ sudoer באמצעות פרמטר שורת הפקודהעל אובונטו?

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

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

קרא עוד על קבוצת ניהול וקבוצת sudo בשרת אובונטו

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

# grep -B1 -i "^%sudo" /etc/sudoers

$ sudo grep -B1 -i "^%sudo" /etc/sudoers

# אפשר לחברי הקבוצה sudo לבצע כל פקודה %sudo ALL=(ALL:ALL) ALL

בואו נסתכל על כמה דוגמאות מעשיות.

כיצד להוסיף משתמש חדש בשם vivek ב-sudo באמצעות שורת הפקודה?

פתח מסוף או היכנס לחשבון שלך שרת מרוחק:

$ ssh root@server-name-IP-here $ ssh [מוגן באימייל]( root@server:/root) #

# adduser vivek

$ sudo adduser vivek

איור 01: כיצד להוסיף משתמש חדש באובונטו

דוגמאות לתפוקות נתונים אפשריות:

כיצד ליצור משתמש sudo באובונטו עבור חשבון vivek

הזן את הפקודה הבאה:

# adduser vivek sudo

או השתמש בפקודה usermod כדי להוסיף משתמש לקבוצה בלינוקס:

# usermod -aG sudo vivek

$ sudo usermod -aG sudo vivek

$ sudo adduser vivek sudo

דוגמאות לתפוקות נתונים אפשריות:

איור 02: הוסף את המשתמש vivek ל-sudo כדי לקבל זכויות אדמין

אמת את המשתמש החדש ואת חבר הקבוצה באמצעות:

$id vivek

דוגמאות לתפוקות נתונים אפשריות:

איור 03: הצג מידע על משתמש וקבוצה

כעת משתמש vivek יכול להתחבר באמצעות פקודת ssh באופן הבא:

$ssh [מוגן באימייל]

ודא ש-vivek יכול להשתמש בפקודה sudo:

$ sudo cat /etc/sudoers

בפעם הראשונה שתשתמש בפקודה sudo, תתבקש להזין סיסמה חֶשְׁבּוֹן vivek. לכן, הזן את סיסמת vivek כדי לקבל גישה לשורש. כל סוג של פקודה עם sudo חייב להיות מופעל עם הרשאות שורש עבור חשבון vivek. כדי לקבל את מעטפת השורש, הזן:

$sudo –s

דוגמאות לתפוקות נתונים אפשריות:

איור 03: בדיקת גישת sudo עבור חשבון המשתמש vivek

ועכשיו עשית את זה. כעת אתה יכול לאפשר למשתמשים אחרים להפעיל sudo בשרת אובונטו שלך ולתת למשתמשים זכויות אדמין.

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

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

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

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

    תצורות עם סיסמאות שורש אינן נתמכות.

    sudo passwd

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

    סיסמה עבור שם משתמש: (הזן סיסמה משלך) הזן סיסמת UNIX חדשה: (הזן סיסמה חדשה עבור root)הקלד שוב סיסמת UNIX חדשה: (חזור על סיסמה חדשה עבור root) passwd: הסיסמה עודכנה בהצלחה

    כדי להשבית את סיסמת חשבון השורש, השתמש בתחביר passwd הבא:

    sudo passwd -l root

    עם זאת, כדי להשבית את חשבון השורש עצמו, השתמש בפקודה הבאה:

    usermod --expiredate 1

    כדאי לקרוא עוד על סודו על ידי קריאת דף האיש:

    גבר סודו

כברירת מחדל, המשתמש הראשוני שנוצר על ידי מתקין אובונטו הוא חבר בקבוצת "sudo" שמתווסף לקובץ /etc/sudoers כמשתמש מורשה של sudo. אם אתה רוצה לתת לכל חשבון אחר גישת שורש מלאה דרך sudo, פשוט הוסף אותו לקבוצת sudo.

הוספה ומחיקה של משתמשים

התהליך לניהול משתמשים וקבוצות מקומיים הוא פשוט ושונה מעט מאוד מרוב מערכות ההפעלה האחרות של GNU/Linux. אובונטו והפצות אחרות מבוססות דביאן מעודדות את השימוש בחבילת "adduser" לניהול חשבונות.

    כדי להוסיף חשבון משתמש, השתמש בתחביר הבא, ופעל לפי ההנחיות כדי לתת לחשבון סיסמה ומאפיינים ניתנים לזיהוי, כגון שם מלא, מספר טלפון וכו'.

    שם משתמש sudo adduser

    כדי למחוק חשבון משתמש והקבוצה הראשית שלו, השתמש בתחביר הבא:

    שם משתמש sudo deluser

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

    זכור, לכל משתמש שנוסף מאוחר יותר עם אותו UID/GID כמו הבעלים הקודם תהיה כעת גישה לתיקיה זו אם לא נוקטת באמצעי הזהירות הדרושים.

    ייתכן שתרצה לשנות את ערכי ה-UID/GID האלה למשהו מתאים יותר, כגון חשבון השורש, ואולי אפילו להעביר את התיקיה כדי למנוע התנגשויות עתידיות:

    sudo chown -R root:root /home/username/ sudo mkdir /home/archived_users/ sudo mv /home/username /home/archived_users/

    כדי לנעול או לבטל את הנעילה של חשבון משתמש באופן זמני, השתמש בתחביר הבא, בהתאמה:

    sudo passwd -l שם משתמש sudo passwd -u שם משתמש

    כדי להוסיף או למחוק קבוצה מותאמת אישית, השתמש בתחביר הבא, בהתאמה:

    sudo addgroup groupname sudo delgroup groupname

    כדי להוסיף משתמש לקבוצה, השתמש בתחביר הבא:

    שם משתמש sudo adduser שם קבוצה

אבטחת פרופיל משתמש

כאשר נוצר משתמש חדש, כלי השירות adduser יוצר ספריית בית חדשה לגמרי בשם /home/username. פרופיל ברירת המחדל מעוצב לפי התוכן שנמצא בספרייה של /etc/skel, הכוללת את כל יסודות הפרופיל.

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

    כדי לאמת את ההרשאות הנוכחיות של ספריית הבית של המשתמש, השתמש בתחביר הבא:

    ls -ld /home/שם משתמש

    הפלט הבא מראה שלספרייה /home/username יש הרשאות קריאות בעולם:

    drwxr-xr-x 2 שם משתמש שם משתמש 4096 2007-10-02 20:03 שם משתמש

    אתה יכול להסיר את ההרשאות הניתנות לקריאה בעולם באמצעות התחביר הבא:

    sudo chmod 0750 /home/שם משתמש

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

    גישה הרבה יותר יעילה לעניין תהיה לשנות את הרשאות ברירת המחדל הגלובליות של adduser בעת יצירת תיקיות ביתיות של משתמשים. כל שעליך לעשות הוא לערוך את הקובץ /etc/adduser.conf ולשנות את המשתנה DIR_MODE למשהו מתאים, כך שכל ספריות הבית החדשות יקבלו את ההרשאות הנכונות.

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

    ls -ld /home/שם משתמש

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

    drwxr-x--- 2 שם משתמש שם משתמש 4096 2007-10-02 20:03 שם משתמש

מדיניות סיסמאות

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

אורך סיסמה מינימלי

כברירת מחדל, אובונטו דורשת אורך סיסמה מינימלי של 6 תווים, כמו גם כמה בדיקות אנטרופיה בסיסיות. ערכים אלה נשלטים בקובץ /etc/pam.d/common-password, המתואר להלן.

סיסמה pam_unix.so obscure sha512

אם תרצה להתאים את האורך המינימלי ל-8 תווים, שנה את המשתנה המתאים ל-min=8. השינוי מתואר להלן.

סיסמה pam_unix.so obscure sha512 minlen=8

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

תפוגת סיסמה

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

    כדי להציג בקלות את המצב הנוכחי של חשבון משתמש, השתמש בתחביר הבא:

    sudo chage -l שם משתמש

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

    שינוי סיסמה אחרון: 20 בינואר, 2015 תוקף הסיסמה: לעולם לא סיסמה לא פעילה: לעולם לא פג תוקף החשבון: לעולם מספר ימים מינימלי בין החלפת סיסמה: 0 מספר ימים מקסימלי בין שינוי סיסמה: 99999 מספר ימי אזהרה לפני פקיעת הסיסמה: 7

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

    sudo לשנות שם משתמש

    להלן גם דוגמה כיצד ניתן לשנות באופן ידני את תאריך התפוגה המפורש (-E) ל- 31/01/2015, גיל סיסמה מינימלי (-m) של 5 ימים, גיל סיסמה מקסימלי (-M) של 90 יום, חוסר פעילות תקופה (-I) של 5 ימים לאחר פקיעת הסיסמה, ותקופת אזהרה (-W) של 14 ימים לפני פקיעת הסיסמה:/home/username/.ssh/authorized_keys .

    הסר או שנה את שם הספרייה .ssh/ בתיקיית הבית של המשתמש כדי למנוע יכולות נוספות של אימות SSH.

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

    מי | שם משתמש grep (כדי לקבל את מסוף pts/#) sudo pkill -f pts/#

    הגבל גישת SSH רק לחשבונות משתמש שאמורים להיות להם. לדוגמה, אתה יכול ליצור קבוצה בשם "sshlogin" ולהוסיף את שם הקבוצה כערך המשויך למשתנה AllowGroups שנמצא בקובץ /etc/ssh/sshd_config.

    sshlogin של AllowGroups

    לאחר מכן הוסף את משתמשי ה-SSH המותרים שלך לקבוצה "sshlogin", והפעל מחדש את שירות SSH.

    sudo adduser שם משתמש sshlogin sudo systemctl הפעל מחדש את sshd.service

    אימות מסד נתונים חיצוני של משתמשים

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

אפשרות -c - הוסף הערה למשתמש
אוֹפְּצִיָה -g sudo - הוסף משתמש לקבוצת sudo.
האפשרות -s תגדיר את המעטפת של המשתמש ל-/bin/bash

אפשרות -ד משמש לציון תיקיית הבית של המשתמש
אפשרות -מ יציין שיש ליצור את התיקיה באופן מיידי:

Sudo useradd -c "תגובה למשתמש" -g sudo -d /home/NameUser -m -s /bin/bash NameUser

הגדר סיסמה עבור משתמש NameUser:

Sudo passwd NameUser

הוסף משתמש באמצעות הפקודה adduser

sudo useradd -c "תגובה למשתמש" -g sudo -d /home/NameUser -m -s /bin/bash NameUser

הזינו את הסיסמה, ענו על כל השאלות שנשאלו, קבלו משתמש עם סיסמה וספרייה ביתית

שינוי סיסמת המשתמש

sudo passwd NameUser

הוסף משתמש לקבוצת sudo

usermod -a -G sudo NameUser

הוסף משתמש/קבוצת משתמשים ל-Sudores ישירות:

בוא נערוך את הקובץ /etc/sudores.tmpעוֹרֵך visudo

סודו ויזודו

בואו ניתן זכויות שורש למשתמש בשם שם משתמש

User_name ALL=(ALL:ALL) ALL

בואו ניתן זכויות שורש לקבוצת משתמשים שם קבוצהעל ידי הוספת שורה ל קובץ sudoers -

Group_name ALL=(ALL:ALL) ALL

משתמש והקבוצות שלו

אנו מסתכלים על הקבוצות הזמינות על המארח

חתול /etc/group

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

Grep examplegroup /etc/group

אנו בודקים/מבררים לאילו קבוצות שייך המשתמש (כמו גם ה-uid, gid שלו)

מזהה שם משתמש

הוסף שם משתמש קיים לקבוצת דוגמאות קבוצתית קיימת

Usermod -g examplegroup NameUser

הסרת משתמש אובונטו

אנו משתמשים בפקודה, התיקיה של המשתמש לא תימחק

Sudo userdel NameUser

מחק את התיקיה במידת הצורך

Sudo rm -r /home/NameUser/

אנו בודקים אם המשתמש מחק אם אין פלט, אז המשתמש נמחק

Sudo grep -R NameUser /etc/passwd --color

רשום את כל המשתמשים המקומיים

sudo cat /etc/passwd sudo cat /etc/shadow

כדי להציג מידע מפורט יותר על המשתמש, התקן את החבילה אֶצבַּע

Sudo apt-get install finger

כדי להציג מידע על המשתמש NameUser, הפעל את הפקודה

שם אצבע משתמש

כדי להוציא מידע על כל המשתמשים לקובץ infoaboutalluser.txtבואו ניצור סקריפט finger.sh

#!/bin/bash n=`cat /etc/passwd | cut -d: -f1` עבור i ב-$n; do echo "============================================== ============================ ==================================================================================================================================================================================================

בוא נריץ את התסריט finger.shושמור את תוכנו בקובץ infoaboutalluser.txt

./finger.sh infoaboutalluser.txt

רשום את כל המשתמשים המורשים:

egrep ":0:0:" /etc/passwd

או לא מיוחס

Egrep -v ":0:0:" /etc/passwd

רשום את כל המשתמשים ששמם מתחיל באותיות abcd:

Cat /etc/passwd | grep "^.*"

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

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

בתחילה, לכל קובץ היו שלושה פרמטרי גישה. הנה הם:

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

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

  • בעלים- סט זכויות לבעל הקובץ, המשתמש שיצר אותו או מוגדר כעת על ידי בעליו. בדרך כלל לבעלים יש את כל הזכויות, לקרוא, לכתוב ולבצע.
  • קְבוּצָה- כל קבוצת משתמשים שקיימת במערכת ומשויכת לקובץ. אבל זו יכולה להיות רק קבוצה אחת והיא בדרך כלל הקבוצה של הבעלים, אם כי ניתן להקצות קבוצה אחרת לקובץ.
  • מנוחה- כל המשתמשים מלבד הבעלים והמשתמשים הכלולים בקבוצת הקבצים.

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

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

הרשאות קובץ מיוחדות בלינוקס

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

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

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

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

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

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

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

בואו נסתכל מקרוב על המשמעות של הערכים המותנים של דגלי הזכויות:

  • --- - אין זכויות כלל;
  • --איקס- רק ביצוע הקובץ כתוכנה מותר, אך לא שינוי או קריאה;
  • -וו-- רק כתיבה ושינוי של הקובץ מותרים;
  • -wx- שינוי וביצוע מותרים, אך במקרה של ספרייה, אינך יכול לראות את תוכנו;
  • ר--- זכויות קריאה בלבד;
  • r-x- קריאה וביצוע בלבד, ללא הרשאת כתיבה;
  • rw-- זכויות קריאה וכתיבה, אך ללא ביצוע;
  • rwx- כל הזכויות;
  • --ש- ביט SUID או SGID מוגדר, הראשון מוצג בשדה עבור הבעלים, השני עבור הקבוצה;
  • --ט- Sticky-bit מותקן, מה שאומר שמשתמשים לא יכולים למחוק את הקובץ הזה.

בדוגמה שלנו, לקובץ test1 יש הרשאות תוכנית אופייניות, הבעלים יכול לעשות הכל, הקבוצה יכולה רק לקרוא ולבצע, וכל השאר יכולים רק לבצע. עבור test2, דגלי SUID ו-SGID מוגדרים בנוסף. ועבור התיקיה test3 מותקן Sticky-bit. קובץ test4 זמין לכולם. עכשיו אתה יודע איך להציג את הזכויות לקובץ לינוקס.

כיצד לשנות הרשאות קובץ בלינוקס

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

$ chmod options קטגוריית קובץ דגל פעולה

אופציות לא יעניינו אותנו כעת, חוץ אולי רק אחת. עם האפשרות -R אתה יכול לאלץ את התוכנית להחיל שינויים על כל הקבצים והספריות באופן רקורסיבי.

  • u- בעל הקובץ;
  • ז- קבוצת קבצים;
  • o- משתמשים אחרים.

הפעולה יכולה להיות אחד משני דברים, או להוסיף את הדגל "+" או להסיר את הדגל "-". לגבי זכויות הגישה עצמן, הן דומות לפלט של כלי השירות ls: r - read, w - write, x - execute, s - suid/sgid, תלוי בקטגוריה שעבורה הגדרת את זה, t - sets sticky -ביט. לדוגמה, לכל המשתמשים יש גישה מלאה לקובץ test5:

chmod ugo+rwx test5

לחלופין, נשלול את כל הזכויות מהקבוצה וממשתמשים אחרים:

chmod go-rwx test5

בואו ניתן לקבוצה את הזכות לקרוא ולבצע:

chmod g+rx test5

למשתמשים אחרים קראו בלבד:

עבור קובץ test6, הגדר את ה-SUID:

ולמבחן 7 - SGID:

בוא נראה מה קרה:

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

מסקנות

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

לסיום, אני רוצה להציע סרטון טוב על זכויות גישה בלינוקס:

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

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

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

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

$ ls -l /bin/ls

אתה רואה את זה ב במקרה הזההבעלים של הקובץ הוא משתמש השורש וקבוצת השורש. אבל כעת בפלט של פקודה זו אנו מתעניינים יותר בשדה הראשון, שקובע את סוג הקובץ וזכויות הגישה לקובץ. שדה זה בדוגמה למעלה מיוצג על ידי מחרוזת תווים -rwxr-xr-x. ניתן לחלק את הסמלים הללו ל-4 קבוצות.

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

    - = - קובץ רגיל;

    ד =- קטלוג;

    ב =- לחסום קובץ מכשיר;

    c =- קובץ מכשיר תו;

    s =- שקע דומיין;

    p =- צינור בשם (צינור);

    l =- קישור סמלי (קישור).

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

באופן כללי, זכויות גישה ומידע על סוגי הקבצים במערכות UNIX מאוחסנים באיודות במבנה נפרד המורכב משני בתים, כלומר 16 סיביות (זה טבעי, מכיוון שהמחשב פועל על ביטים, לא על התווים r, w, x). ארבע מתוך 16 הסיביות הללו שמורות לרשומת סוג הקובץ המקודד. שלושת הביטים הבאים מציינים מאפיינים מיוחדים קבצי הפעלה, שעליו נדבר קצת מאוחר יותר. ולבסוף, 9 הסיביות הנותרות קובעות את הרשאות הקובץ. 9 ביטים אלו מחולקים ל-3 קבוצות של שלושה ביטים. שלושת הסיביות הראשונות מגדירות את זכויות המשתמש, שלושת הסיביות הבאות מגדירות את זכויות הקבוצה, ו-3 הסיביות האחרונות מגדירות את הזכויות של כל שאר המשתמשים (כלומר, כל המשתמשים מלבד בעל הקובץ וקבוצת הקבצים).

במקרה זה, אם לביט המקביל יש ערך של 1, הזכות ניתנת, ואם היא שווה ל-0, הזכות לא ניתנת. בצורה הסמלית של סימון זכויות, 1 מוחלף בסמל המתאים (r, w או x), ו-0 מיוצג על ידי מקף.

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

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

אם תפעיל את אותה פקודה ls -l, אבל בתור הארגומנט האחרון יש לתת לו לא את שם הקובץ, אלא את שם הספרייה, נראה שזכויות גישה מוגדרות גם עבור ספריות, והן מצוינות על ידי אותם סמלי rwx. לדוגמה, על ידי הפעלת הפקודה ls -l /, נראה שספריית bin מתאימה לשורה:

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

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

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

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

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

$ chmod wXp שם קובץ

איפה במקום הסמל wמוחלף

    או סמל u(כלומר המשתמש שהוא הבעלים);

    אוֹ ז(קְבוּצָה);

    אוֹ o(כל המשתמשים שאינם חברים בקבוצה שאליה שייך קובץ זה);

    אוֹ א(כל המשתמשים במערכת, כלומר הבעלים, הקבוצה וכל השאר).

במקום איקסלָשִׂים:

    אוֹ + (אנו מעניקים את הזכות);

    אוֹ - (אנו שוללים את הזכות המקבילה);

    אוֹ = (התקן את הזכויות שצוינו במקום הקיימות),

במקום ע- סמל המציין את הזכות המתאימה:

    ר(קריאה);

    w(תקליט);

    איקס(ביצועים).

הנה כמה דוגמאות לשימוש בפקודה chmod:

$ chmod a+x file_name

מעניק לכל משתמשי המערכת את הזכות להפעיל קובץ זה.

$ chmod go-rw file_name

מסיר הרשאות קריאה וכתיבה עבור כולם מלבד בעל הקובץ.

$ chmod ugo+rwx file_name

נותן לכולם הרשאות קריאה, כתיבה וביצוע.

אם נשמיט את הציון למי מוענקת הזכות הזו, אז מובן שאנחנו מדברים על כל המשתמשים באופן כללי, כלומר במקום $ chmod a+x file_name

ניתן לכתוב בפשטות

$ chmod +x file_name

אפשרות שניה לציון הפקודה chmod(משתמשים בו לעתים קרובות יותר) מבוסס על ייצוג דיגיטלי של זכויות. לשם כך, אנו מקודד את התו r עם הספרה 4, את התו w עם הספרה 2, ואת התו x עם הספרה 1. על מנת לספק למשתמשים סט מסוים של זכויות, עלינו להוסיף את המספרים המתאימים . לאחר שהשגנו כך את הערכים המספריים הדרושים עבור בעל הקובץ, עבור קבוצת הקבצים ועבור כל שאר המשתמשים, הגדרנו את שלוש הספרות הללו כארגומנט לפקודה chmod(אנחנו שמים את המספרים האלה אחרי שם הפקודה לפני הארגומנט השני, שמציין את שם הקובץ). לדוגמה, אם אתה צריך לתת את כל הזכויות לבעלים (4+2+1=7), זכויות קריאה וכתיבה לקבוצה (4+2=6), ולא לתת זכויות לאחרים, אז אתה צריך לתת את הפקודה הבאה:

$ chmod 760 file_name

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

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

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

הראשון מבין התכונות הללו הוא מה שנקרא "סיבית שינוי מזהה משתמש". המשמעות של החלק הזה היא כדלקמן.

בדרך כלל, כאשר משתמש מריץ תוכנית, תוכנית זו מקבלת את אותן זכויות גישה לקבצים וספריות שיש למשתמש שהפעיל את התוכנית. אם מוגדר "bit change user ID", אז התוכנית תקבל זכויות גישה לקבצים וספריות שיש לבעלים של קובץ התוכנית (לכן, התכונה המדוברת נקראת טוב יותר "bit change owner ID"). זה מאפשר לך לפתור כמה משימות שאחרת יהיה קשה להשלים. הדוגמה האופיינית ביותר היא פקודת שינוי הסיסמה passwd. כל סיסמאות המשתמש מאוחסנות בקובץ /etc/passwd, שנמצא בבעלות משתמש העל שורש. לכן, תוכניות שהושקו על ידי משתמשים רגילים, כולל הפקודה passwd, לא יכול לכתוב לקובץ הזה. המשמעות היא שהמשתמש אינו יכול לשנות את הסיסמה שלו. אבל לקובץ /usr/bin/passwd יש את ה-"change owner ID bit", שהוא המשתמש שורש. לכן, תוכנית שינוי הסיסמה passwdפועל עם זכויות שורשומקבל את הזכות לכתוב לקובץ /etc/passwd (התוכנה עצמה מבטיחה שהמשתמש יכול לשנות רק שורה אחת בקובץ זה).

ניתן להגדיר את ה-"change owner ID bit" על ידי משתמש העל באמצעות הפקודה

# chmod +s file_name

"סיבית שינוי מזהה קבוצה" פועלת בצורה דומה.

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

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

# chmod 4775 file_name

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

    4 - "סיבית שינוי מזהה משתמש",

    2 - "סיבית שינוי מזהה קבוצה",

    1 - "סיבית שמירת משימה (סיבית דביקה)".

אם אחד משלושת הסיביות הללו מוגדר ל-1, פלט הפקודה משתנה מעט ls -lבמונחים של הצגת תכונות זכויות הגישה המותקנות. אם ה-"change user ID bit" מוגדר ל-1, התו "x" בקבוצה המגדירה את הזכויות של בעל הקובץ מוחלף בתו "s". יתרה מכך, אם לבעלים יש את הזכות לבצע את הקובץ, אזי הסמל "x" מוחלף ב-s קטן, ואם לבעלים אין את הזכות לבצע את הקובץ (לדוגמה, הקובץ אינו בר הפעלה בכלל), אז "S" ממוקם במקום "x". החלפות דומות מתרחשות בעת ציון "סיביות שינוי מזהה קבוצה", אך התו "x" בקבוצת התכונות המציינת את זכויות הקבוצה מוחלף. אם ה-"task sticky bit" הוא 1, אז תו ה-"x" בקבוצת התכונות המגדיר את הזכויות עבור כל שאר המשתמשים מוחלף, וה-"x" מוחלף בתו "t" אם כל המשתמשים יכולים להפעיל את הקובץ , ועם הסמל "T" אם אין להם זכות זו.

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

# ls -l prim1

V. Kostromin (kos at rus-linux dot net) - 4.5. הרשאות קבצים וספריות