זכויות ב Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

שלום לכולם. זהו תרגום של מאמר מהספר RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 ו-EX300.

לִדחוֹף: אני מקווה שהמאמר יהיה שימושי לא רק למתחילים, אלא גם יעזור למנהלים מנוסים יותר לייעל את הידע שלהם.

אז בואו נלך.

זכויות ב Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

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

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

ניהול בעלות על קבצים

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

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

В Linux לכל קובץ ולכל ספרייה יש שני בעלים: המשתמש ובעל הקבוצה.

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

זה קורה בסדר הבא:

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

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

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

עם הפקודה ls אתה יכול להציג את הבעלים של הקבצים בספרייה נתונה. לפעמים זה יכול להיות שימושי לקבל רשימה של כל הקבצים במערכת שיש להם משתמש או קבוצה נתונה כבעלים. בשביל זה אתה יכול להשתמש למצוא. טַעֲנָה מצא-משתמש יכול לשמש למטרה זו. לדוגמה, הפקודה הבאה מפרטת את כל הקבצים שבבעלות המשתמש linda:

find / -user linda

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

לדוגמה, הפקודה הבאה מחפשת את כל הקבצים השייכים לקבוצה משתמשים:

find / -group users

החלפת בעלים

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

chown кто что

לדוגמה, הפקודה הבאה משנה את הבעלים של ספריית /home/account למשתמש linda:

chown linda /home/account

קבוצה chown יש מספר אפשרויות, אחת מהן שימושית במיוחד: -R. אתה יכול לנחש מה זה עושה כי אפשרות זו זמינה גם עבור פקודות רבות אחרות. זה מאפשר לך להגדיר רקורסיבית את הבעלים, מה שמאפשר לך להגדיר את הבעלים של הספרייה הנוכחית וכל מה שמתחת. הפקודה הבאה משנה את הבעלות על ספריית /home וכל מה שמתחתיה למשתמש linda:

עכשיו הבעלים נראים כך:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

בא נעשה:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

כעת המשתמש ליסה הפך לבעלים של ספריית החשבונות:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

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

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

הפקודה הבאה משנה כל בעלים של /home/account group לקבוצת החשבונות:

chown .account /home/account

אתה יכול להשתמש chown לשנות את הבעלים של משתמש ו/או קבוצה במספר דרכים. הנה כמה דוגמאות:

  • chown lisa myfile1 מגדיר את המשתמש lisa כבעלים של myfile1.
  • chown lisa.sales myfile מגדיר את המשתמש lisa כבעלים של קובץ myfile, וגם מגדיר את קבוצת המכירות כבעלים של אותו קובץ.
  • chown lisa:sales myfile זהה לפקודה הקודמת.
  • chown .sales myfile מגדיר את קבוצת המכירות כבעלים של myfile מבלי לשנות את הבעלים של המשתמש.
  • chown :sales myfile זהה לפקודה הקודמת.

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

chgrp .sales /home/account

כמו עם chown, אתה יכול להשתמש באפשרות -R с chgrp, כמו גם לשנות באופן רקורסיבי את הבעלים של הקבוצה.

הבנת הבעלים המוגדר כברירת מחדל

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

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

[root@server1 ~]# groups lisa
lisa : lisa account sales

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

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

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

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

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

ניהול זכויות יסוד

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

הבנת הרשאות קריאה, כתיבה וביצוע

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

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

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

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

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

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

זכויות ב Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

באמצעות chmod

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

זכויות ב Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

בעת הגדרת הרשאות, חשב את הערך שאתה צריך. אם אתה רוצה להגדיר קריאה/כתיבה/ביצוע עבור משתמש, קריאה/ביצוע עבור קבוצה, וקרא/ביצוע עבור אחרים ב-/somefile אז אתה משתמש בפקודה הבאה chmod:

chmod 755 /somefile

כאשר אתה משתמש chmod בדרך זו, כל ההרשאות הנוכחיות מוחלפות בהרשאות שהגדרת.

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

  1. ראשית אתה מציין עבור מי אתה רוצה לשנות הרשאות. כדי לעשות זאת, אתה יכול לבחור בין משתמש (u), קבוצה (g) ואחרים (o).
  2. לאחר מכן אתה משתמש בהצהרה כדי להוסיף או להסיר הרשאות מהמצב הנוכחי, או להגדיר אותן באופן מוחלט.
  3. בסוף אתה משתמש r, w и xכדי לציין אילו הרשאות ברצונך להגדיר.

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

chmod +x somefile

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

chmod g+w,o-r somefile

בעת שימוש chmod -R o+rx /data אתה מגדיר הרשאת ביצוע עבור כל הספריות כמו גם הקבצים בספריית /data. כדי להגדיר הרשאת ביצוע רק עבור ספריות ולא עבור קבצים, השתמש chmod -R o+ rX /data.

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

זכויות מורחבות

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

הבנת הרשאות SUID, GUID ו- Sticky Bit Extended

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

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

שקול, למשל, מצב שבו משתמש צריך לשנות את הסיסמה שלו. לשם כך, המשתמש חייב לכתוב את הסיסמה החדשה שלו לקובץ /etc/shadow. עם זאת, קובץ זה אינו ניתן לכתיבה על ידי משתמשים שאינם שורשיים:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

הרשאת SUID מציעה פתרון לבעיה זו. כלי השירות /usr/bin/passwd משתמש בהרשאה זו כברירת מחדל. המשמעות היא שכאשר משנים את הסיסמה, המשתמש הופך באופן זמני ל-root, מה שמאפשר לו לכתוב לקובץ /etc/shadow. אתה יכול לראות את הרשאת SUID עם ll -l איך s במצב שבו אתה בדרך כלל מצפה לראות x להרשאות מותאמות אישית:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

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

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

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

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

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

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

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

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

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

הרשאת SGID מוצגת בפלט ll -l איך s בעמדה שבה בדרך כלל תמצא הרשאה לבצע קבוצה:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

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

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

כאשר אתה מחיל את ה-sticky bit, המשתמש יכול למחוק קבצים רק אם מתקיים אחד מהתנאים הבאים:

  • המשתמש הוא הבעלים של הקובץ;
  • המשתמש הוא הבעלים של הספרייה שבה נמצא הקובץ.

בעת שימוש ll -l, אתה יכול לראות את החלק הדביק כמו t במצב שבו בדרך כלל תראה הרשאת ביצוע עבור אחרים:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

החלת זכויות מורחבות

כדי ליישם SUID, SGID ו-sticky bit אתה יכול גם להשתמש chmod. ל-SUID יש ערך מספרי של 4, ל-SGID יש ערך מספרי של 2, ול-sticky bit יש ערך מספרי של 1.

אם ברצונך להחיל הרשאות אלה, עליך להוסיף ארגומנט בן ארבע ספרות chmod, שהספרה הראשונה שלו מתייחסת להרשאות מיוחדות. השורה הבאה, למשל, תוסיף הרשאת SGID לספרייה ותגדיר rwx עבור משתמש ו-rx עבור group ואחרים:

chmod 2755 /somedir

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

  1. לשימוש SUID chmod u+s.
  2. לשימוש SGID chmod g+s.
  3. לשימוש דביק chmod +t, ואחריו שם הקובץ או הספרייה שעבורם ברצונך להגדיר הרשאות.

הטבלה מסכמת את כל מה שאתה צריך לדעת על ניהול הרשאות מיוחדות.

זכויות ב Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

דוגמה לעבודה עם זכויות מיוחדות

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

  1. פתח מסוף שבו אתה משתמש לינדה. אתה יכול ליצור משתמש עם הפקודה משתמש הוסף לינדה, הוסף סיסמה passwd לינדה.
  2. צור את ספריית /data בשורש ואת /data/sales עם הפקודה mkdir -p /data/sales. לְהַשְׁלִים cd /data/salesכדי לעבור למדריך המכירות. לְהַשְׁלִים לגעת בלינדה1 и לגעת בלינדה2כדי ליצור שני קבצים ריקים בבעלות לינדה.
  3. לבצע סו-ליסה כדי להעביר את המשתמש הנוכחי למשתמשת ליסה, שהיא גם חברה בקבוצת המכירות.
  4. לבצע cd /data/sales ומהספרייה הזו בצע ll -l. תראה שני קבצים שנוצרו על ידי המשתמש linda ושייכים לקבוצת linda. לְהַשְׁלִים rm -f linda*. פעולה זו תסיר את שני הקבצים.
  5. לבצע לגעת בליזה1 и לגעת בליזה2כדי ליצור שני קבצים בבעלות המשתמש lisa.
  6. לבצע סו- להעלות את ההרשאות שלך לשורש.
  7. לבצע chmod g+s,o+t /data/salesכדי להגדיר את סיביות מזהה הקבוצה (GUID) וכן את הסיביות הדביקות בספריית הקבוצה המשותפת.
  8. לבצע סו-לינדה. אז תעשה לגעת בלינדה3 и לגעת בלינדה4. כעת אתה אמור לראות ששני הקבצים שיצרת הם בבעלות קבוצת המכירות, שהיא הבעלים של הקבוצה של ספריית /data/sales.
  9. לבצע rm -rf ליסה*. ה-sticky bit מונע מחיקת קבצים אלו מטעם המשתמש linda, מכיוון שאינך הבעלים של קבצים אלו. שימו לב שאם המשתמש לינדה הוא הבעלים של ספריית /data/sales, הם יכולים למחוק את הקבצים האלה בכל מקרה!

ניהול ACL (setfacl, getfacl) ב Linux

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

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

הבנת ACLs

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

כלי השירות tar אינו תומך ב-ACLs. כדי לוודא שהגדרות ACL לא יאבדו בעת יצירת גיבוי, השתמש כוכב במקום זפת. כוכב עובד עם אותן אפשרויות כמו זפת; זה רק מוסיף תמיכה בהגדרות ACL.

אתה יכול גם לגבות ACL עם getfacl, שניתן לשחזר באמצעות הפקודה setfacl. כדי ליצור גיבוי, השתמש getfacl -R /directory > file.acls. כדי לשחזר הגדרות מקובץ גיבוי, השתמש setfacl --restore=file.acl.

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

הכנת מערכת הקבצים עבור ACLs

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

כדי לתקן את זה אתה צריך להוסיף את האפשרות תושבת acl ב-/etc/fstab כך שמערכת הקבצים מותאמת עם תמיכת ACL כברירת מחדל.

שינוי והצגה של הגדרות ACL עם setfacl ו-getfacl

כדי להגדיר ACL אתה צריך את הפקודה setfacl. כדי לראות את הגדרות ה-ACL הנוכחיות, אתה צריך getfacl. קְבוּצָה ll -l אינו מציג רשימות ACL קיימות; זה רק מראה + אחרי רשימת ההרשאות, מה שמציין שה-ACL חלים גם על הקובץ.

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

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

כתוצאה מביצוע הפקודה getfacl למטה תוכלו לראות שההרשאות מוצגות עבור שלושה אובייקטים שונים: משתמש, קבוצה ואחרים. כעת בואו נוסיף ACL כדי לתת הרשאות קריאה וביצוע גם לקבוצת המכירות. פקודה בשביל זה setfacl -mg:sales:rx /dir. בצוות הזה -m מציין שיש לשנות את הגדרות ה-ACL הנוכחיות. אחרי זה g:sales:rx אומר לפקודה להגדיר את ה-read-execute ACL (rx) עבור הקבוצה (g) מכירות. למטה תוכלו לראות איך נראית הפקודה, כמו גם את הפלט של הפקודה getfacl לאחר שינוי הגדרות ה-ACL הנוכחיות.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

כעת, לאחר שאתה מבין כיצד להגדיר ACL קבוצתי, קל להבין את ACL עבור משתמשים ומשתמשים אחרים. למשל, הפקודה setfacl -mu:linda:rwx /data נותן הרשאות למשתמש linda בספריית /data מבלי להפוך אותו לבעלים או לשנות את ההקצאה של הבעלים הנוכחי.

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

עבודה עם ברירת מחדל ACL

אחד היתרונות של שימוש ב-ACL הוא שאתה יכול להעניק הרשאות למספר משתמשים או קבוצות בספרייה. יתרון נוסף הוא שאתה יכול לאפשר ירושה על ידי עבודה עם ברירת המחדל של ACLs.

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

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

כדי להגדיר את ברירת המחדל של ACL אתה רק צריך להוסיף את האפשרות d לאחר אפשרות -m (הסדר משנה!). אז השתמש setfacl -md:g:sales:rx /dataאם אתה רוצה שמכירות קבוצתיות יקראו ויבצעו כל מה שנוצר אי פעם בספריית /data.

בעת שימוש ב-ACL ברירת מחדל, זה עשוי להיות שימושי גם להגדיר ACL עבור אחרים. זה בדרך כלל לא הגיוני כי אתה יכול גם לשנות את ההרשאות עבור אחרים המשתמשים chmod. עם זאת, מה שאתה לא יכול לעשות איתו chmod, הוא לציין את הזכויות שיש להעניק למשתמשים אחרים עבור כל קובץ חדש שנוצר אי פעם. אם אתה רוצה למנוע מאחרים לקבל הרשאות כלשהן על כל דבר שנוצר ב-/data למשל השתמש setfacl -md:o::- /data.

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

דוגמה לניהול זכויות מוגברות באמצעות ACL

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

ראשית, ודא שקבוצת החשבונות מקבלת הרשאות קריאה בספריית /data/sales וקבוצת המכירות מקבלת הרשאות קריאה בספריית /data/account.

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

  1. פתח מסוף.
  2. לבצע setfacl -mg:account:rx /data/sales и setfacl -mg:sales:rx /data/account.
  3. לבצע getfaclכדי לוודא שההרשאות נקבעו כפי שרצית.
  4. לבצע setfacl -md:g:account:rwx,g:sales:rx /data/salesכדי להגדיר את ברירת המחדל של ACL עבור ספריית המכירות.
  5. הוסף ברירת מחדל ACL עבור ספריית /data/account באמצעות setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. ודא שהגדרות ה-ACL בתוקף על ידי הוספת קובץ חדש ל-/data/sales. לְהַשְׁלִים גע ב-/data/sales/newfile ולבצע getfacl /data/sales/newfile כדי לבדוק את ההרשאות הנוכחיות.

הגדרת הרשאות ברירת מחדל עם umask

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

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

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

מבין המספרים המשמשים ב אומסק, כמו במקרה של ארגומנטים מספריים לפקודה chmod, הספרה הראשונה מתייחסת להרשאות המשתמש, הספרה השנייה מתייחסת להרשאות הקבוצה, והאחרונה מתייחסת להרשאות ברירת המחדל שהוגדרו עבור אחרים. מַשְׁמָעוּת אומסק ברירת המחדל 022 נותנת 644 עבור כל הקבצים החדשים ו-755 עבור כל הספריות החדשות שנוצרו בשרת שלך.

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

זכויות ב Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

דרך קלה לראות כיצד פועלת הגדרת ה-umask היא כדלקמן: התחל עם הרשאות ברירת המחדל של הקובץ המוגדרות ל-666 וחסר את ה-umask כדי לקבל את ההרשאות היעילות. עשה את אותו הדבר עבור הספרייה והרשאות ברירת המחדל שלה של 777.

ישנן שתי דרכים לשנות את הגדרת umask: עבור כל המשתמשים ועבור משתמשים בודדים. אם ברצונך להגדיר את umask עבור כל המשתמשים, עליך לוודא שהגדרת umask נלקחת בחשבון בעת ​​הפעלת קבצי סביבת מעטפת, כפי שצוין ב-/etc/profile. הגישה הנכונה היא ליצור סקריפט מעטפת בשם umask.sh בספרייה /etc/profile.d ולציין את ה-umask שבו ברצונך להשתמש בסקריפט מעטפת זה. אם ה-umask משתנה בקובץ זה, הוא מוחל על כל המשתמשים לאחר הכניסה לשרת.

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

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

עבודה עם תכונות משתמש מורחבות

זהו החלק האחרון על זכויות ב Linux.

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

כמו ב-ACL, ייתכן שתכונות הקובץ יצטרכו לכלול את האפשרות הר.

זוהי אופציה user_xattr. אם אתה מקבל הודעת "פעולה לא נתמכת" בעת עבודה עם תכונות משתמש מורחבות, הקפד להגדיר את הפרמטר הר ב-/etc/fstab.

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

להלן התכונות השימושיות ביותר שתוכל ליישם:

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

a תכונה זו מאפשרת לך להוסיף אבל לא להסיר קובץ.

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

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

d תכונה זו מבטיחה שהקובץ לא יישמר בגיבויים שבהם נעשה שימוש בכלי ה-dump.

I תכונה זו מאפשרת יצירת אינדקס עבור הספרייה שבה היא מופעלת. זה מספק גישה מהירה יותר לקבצים עבור מערכות קבצים פרימיטיביות כמו Ext3 שאינן משתמשות במסד הנתונים B-tree לגישה מהירה לקבצים.

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

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

s החלף את הבלוקים שבהם הקובץ נשמר ל-0s לאחר מחיקת הקובץ. זה מבטיח שלא ניתן לשחזר את הקובץ לאחר מחיקתו.

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

אם אתה רוצה להחיל את התכונות, אתה יכול להשתמש בפקודה צ'אטר. לדוגמה, השתמש chattr +s קובץ כלשהולהחיל תכונות על קובץ כלשהו. צריך להסיר תכונה? לאחר מכן השתמש chattr -s somefileוהוא יוסר. כדי לקבל סקירה כללית של כל התכונות המוחלות כעת, השתמש בפקודה lsattr.

תקציר

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

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

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

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

תודה על ההערות berez.

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

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

תודה לך על תגובתך CryptoPirate

מקור: www.habr.com

קנה אירוח אמין לאתרים עם הגנת DDoS, שרתי VPS VDS 🔥 קנה אחסון אתרים אמין עם הגנת DDoS, שרתי VPS VDS | ProHoster