שאלה מדוע "chmod -R 777 /" הרסני?


זה קנוניקל שאלה על הרשאת קובץ ו למה 777 הוא "הרסני".

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

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


247
2018-02-28 21:25




עצרתי את נשימתי כשראיתי את השאלה הזאת. - Alireza Savand


תשובות:


קודם כל nitpick המינוח קטין: chmod לא להסיר הרשאות. זה שינויים אותם.


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

עכשיו, למה זה רע?

  1. אתה פשוט תן לכולם לקרוא / לשנות כל קובץ במערכת שלך.
    • לנשק סיסמה הביטחון שלום (כל אחד יכול לקרוא את קובץ הצל ו לפצח את הסיסמאות שלך, אבל למה לטרוח? פשוט לשנות את הסיסמה! זה הרבה יותר קל!).
    • לנשק את הביטחון הבינארי שלך שלום (מישהו יכול פשוט לכתוב חדש login תוכנית המאפשרת להם בכל פעם).
    • לנשק את הקבצים שלך שלום: משתמש אחד misdirects rm -r / והכול נגמר. מערכת ההפעלה נאמר לתת להם לעשות מה שהם רוצים!
  2. יש לך pissed כל תוכנית בודקת הרשאות על קבצים לפני תחילת.
    sudo, sendmail, וכן שורה של אחרים פשוט לא יתחילו יותר. הם יבדקו הרשאות קבצים מרכזיות, יראו שהם לא מה שהם אמורים להיות, וגורמים להודעת שגיאה.
    באופן דומה ssh ישבור בצורה איומה (קבצי מפתח חייבים להיות בעלי הרשאות ספציפיות, אחרת הם "לא בטוחים" וכברירת מחדל SSH יסרבו להשתמש בהם).
  3. מחקת את סטואידים / setgid ביטים על התוכניות שהיו להם.
    המצב 777 למעשה 0777. בין הדברים בספרה המובילה הם setuid ו setgid סיביות.
    רוב התוכניות אשר setwid / setgid יש להגדיר קצת כי הם חייבים לפעול עם זכויות מסוימות. הם שבורים עכשיו.
  4. נשברת /tmp ו /var/tmp הדבר השני בספרה אוקטלית מובילה כי יש אפס הוא sticky bit - מה שמגן על קבצים /tmp (ו /var/tmp) מלהימחק על ידי אנשים שאינם בבעלותם.
    יש (למרבה הצער) הרבה תסריטים גרועים שם בחוץ כי "לנקות" על ידי עושה rm -r /tmp/*, ובלי הדביקה הדבוקה /tmp  אתה יכול לנשק את כל הקבצים במדריך זה שלום.
    לאחר שריטה קבצים להיעלם באמת יכול להרגיז כמה תוכניות קשות כתוב ...
  5. אתה גרמת להרס /dev  /proc ומערכות קבצים דומות
    זה יותר בעיה במערכות יוניקס ישנות יותר /devהיא מערכת קבצים אמיתית, ואת הדברים שהיא מכילה הם קבצים מיוחדים שנוצרו עם mknod, כמו שינוי הרשאות יישמר על פני אתחול מחדש, אבל על כל מערכת שיש הרשאות המכשיר שלך יכול לגרום לבעיות משמעותיות, מן הסיכונים אבטחה ברור (כל אחד יכול לקרוא כל TTY) לגורמים פוטנציאליים פחות ברורה של פאניקה הליבה.
    Credit to @Tonny for pointing out this possibility
  6. שקעים וצינורות עשויים להישבר, או יש בעיות אחרות שקעים וצינורות עשויים להישבר לחלוטין, או להיחשף לזריקה זדונית כתוצאה מהפיכתם לכתיבה עולמית.
    Credit to @Tonny for pointing out this possibility
  7. ביצעת את כל הקבצים על מערכת ההפעלה שלך
    הרבה אנשים יש . שלהם PATH (לא כדאי!) - זה יכול לגרום הפתעה לא נעימה כמו עכשיו כל אחד יכול להוריד קובץ בשם נוח כמו פקודה (נניח make או ls, ויש לך זריקה לעבר מקבל אותך להפעיל קוד זדוני שלהם.
    Credit to @RichHomolka for pointing out this possibility
  8. על כמה מערכות chmod יאפס את רשימות בקרת הגישה (ACL)
    זה אומר שאתה עלול בסופו של דבר צורך ליצור מחדש את כל רשימות ACL שלך בנוסף לתקן הרשאות בכל מקום (והוא דוגמה בפועל של הפקודה להיות הרסני).
    Credit to @JamesYoungman for pointing out this possibility

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


335
2018-02-28 21:46



לפחות על כמה מערכות /tmp יהיה קבוע לאחר אתחול מחדש. למרות הכל הרבה דברים אחרים נראה שבור. לפחות ב VM אני רק בדקה על זה נראה אתחול מחדש קבוע /tmp הרשאות. במקום כלשהו חייב להיות משהו בתסריט הפעלה. - Zoredache
@Zoredache מערכות המשתמשות tmpfs בדרך כלל לתקן את עצמם, אלה שיש להם / tmp על הדיסק מאי (תלוי סקריפטים ההפעלה שלהם) - voretaq7
+1 להצביע על כך סטואיד ו setgid יבוטלו. זהו היבט הרסני מאוד. נסה לרוץ find / -perms -4000 -type f ו find / -perms -2000 -type f לראות בינאריות שונות המסתמכות על הדגלים האלה. - Kyle Smith
הקלדת משהו כמו "פחות foo.txt" לא לבצע קובץ בשם less.txt הנחת מסביב ללא קשר לסיביות ההפעלה להיות מוגדר. אתה צריך את הספרייה less.txt היה ב הנתיב שלך ואתה צריך להקליד "less.txt foo.txt פחות" - לא ממש דבר מקריים שם. גם אם היית באמצעות השלמת פגז זה יפסיק בשעה פחות ואתה עדיין צריך להוסיף את. TXT. כדי לקרוא קובץ טקסט אקראי עם ערכת bit הפעלה אתה צריך. / Nameoffile.txt. - The Real Bill
@Deji everyone מוגדר כאיגוד של קבוצה כולל המשתמש המחזיק את הקובץ, משתמשים בקבוצה אשר הבעלים של הקובץ, ומשתמשים שאינם עומדים בשני קריטריונים אלה (פשוטו כמשמעו שלוש ספרות הרשאה אוקטלי: User, Group, ו Other). במילים אחרות כל משתמש עם גישה למערכת. ("גישה" בהקשר זה יכול להיות חשבון פגז, וזה איך אני בדרך כלל כתובת זה, אבל זה כולל גם גישה באמצעות טופס אינטרנט / CGI אשר כותב נתונים לדיסק: www המשתמש יכול כעת לכתוב לכל קובץ על המערכת, כלומר, מבקרים אקראיים יכולים גם.) - voretaq7


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

אז זה לא ממש כי המערכת נהרסה - זה כי כלים רבים נועדו להיכשל מיד כאשר ההרשאות טועים.

אם אתה מאתחל מערכת לאחר ביצוע chmod 777 -R / זה יהיה אתחול, ואתה יכול להתחיל תהליכים שאין להם אישור הרשאה מפורשת. אז המערכת היא לא ממש מת, רק קצת לא שמיש לפי עיצוב.


100
2018-02-28 21:33