דוגמא:
כעת שאנו יודעים איך לשמור על קבצינו מוגנים. לפני שנמשיך להיבט אחר של פקודת chmod נתבונן בבעיה שאנו כבר יודעים לפתור.
לפנינו תוכן סיפריה השיך למשתמש בשם yaron מקבוצת marketing:
- r w - - - - - - - yaron marketing customers.dat
- r w x - - - - - - yaron marketing summarize
הקובץ customers.dat מכיל שמות, כתובות, מספרי טלפון, גיל והכנסה חודשית של לקוחות.
התוכנית summarize קוראת את קובץ הלקוחות ומדפיסה סיכום של הלקוחות על-פי קבוצות של גיל והכנסה חודשית.
המשתמש yaron אינו מעוניין שכל אחד יוכל לגשת לקרוא את הפרטים החסויים של לקוחותיו (שם, כתובת, טלפון) ולכן השתמש בפקודה chmod שהוא מכיר על מנת שרק הוא יוכל לקרוא את קובץ הלקוחות, וכן רק הוא יוכל להריץ את התוכנית.
כעת נראה מה קורה כאשר ירון מריץ את התוכנית summarize:
מאורע |
תגובת UNIX |
הקשת הפקודה summarize |
שם משתמש: yaron פקודה: הרצת תוכנית (execute) קובץ: summarize יש הרשאה |
התוכנית מתחילה לרוץ | - - - - |
התוכנית מבקשת לקרוא קובץ: customers.dat |
שם משתמש: yaron פקודה: קריאה (read) קובץ: customers.dat יש הרשאה - התוכנית בוצעה |
דוגמא נוספת:
מיכל ממחלקת sales מעוניינת להשתמש בתוכנית summarize של ירון כדי למצוא את הלקוחות שקונים מוצרים. לשם כך, ירון ביצע את הפקודה הבאה:
chmod og+rx summarize %
כעת תוכן הסיפריה שבה נמצאים הקבצים נראה כך:
- r w - - - - - - - yaron marketing customers.dat
- r w x r - x r - x yaron marketing summarize
כעת כל אחד יכול להריץ את התוכנית summarize וקובץ הלקוחות נשאר חסוי , ירון חושב.
נראה מה קורה כאשר מיכל מנסה להריץ את התוכנית summarize:
מאורע תגובת UNIX שם משתמש: michal מקבוצת sales שייך ל- "other" פקודה: הרצת תוכנית (execute) קובץ: summarize יש הרשאה התוכנית מבקשת לקרוא קובץ: customers.dat שם משתמש: michal מקבוצת sales שייך ל- "other" פקודה: קריאה (read) קובץ: customers.dat אין הרשאה - הבקשה נדחית
הקשת הפקודה summarize
התוכנית מתחילה לרוץ
- - - -
לירון יש בעיה. אם הוא יתן את הפקודה:
chmod og+r customers.dat %
כל אחד יוכל לקרוא את תוכן הקובץ, ופרטי הלקוחות לא יהיו חסויים. ירון רוצה לתת את הרשאת קריאת הקובץ אך ורק למי שצריך להריץ את התוכנית summarize.
Set UID
כמוב שיש דרך שבה ירון יוכל לתת למיכל את אותן ההרשאות שיש לו לקובץ הלקוחות בזמן שהיא מריצה את התוכנית summarize.
ירון מקליד את הפקודה הבאה:
chmod u+s summarize %
פקודה זו משמעותה Set User ID , כלומר: תוסיף למשתמש שמריץ את התוכנית summarize את אותן הרשאות שיש לבעל התוכנית (במקרה זה, ירון) בעת הרצתה.
כעת תוכן הסיפריה שבה נמצאים הקבצים נראה כך:
- r w - - - - - - - yaron marketing customers.dat
- r w s r - x r - x yaron marketing summarize
נראה מה יקרה כאשר מיכל תנסה להריץ שוב את התוכנית:
מאורע תגובת UNIX שם משתמש: michal מקבוצת sales שייך ל- "other" פקודה: הרצת תוכנית (execute) קובץ: summarize יש הרשאה תחת השפעת Set User ID שינוי User ID אתה כעת המשתמש yaron כל עוד התוכנית רצה התוכנית מבקשת לקרוא קובץ: customers.dat שם משתמש: yaron פקודה: קריאה (read) קובץ: customers.dat יש הרשאה - התוכנית בוצעה
הקשת הפקודה summarize
התוכנית מתחילה לרוץ
הבעיה נפתרה !!! ירון יכול לתת למיכל להריץ את התוכנית שלו. התוכנית שלו תשנה באופן זמני את ה- user id לזה של ירון, כך שקובץ הלקוחות יהיה ניתן לקריאה.
אם מיכל תנסה לגשת לקובץ הלקוחות מכל תכנית אחרת - לא יהיו לה הרשאות.
פקודה זו ניתן לתת גם לקבוצה, כך שמי שינסה להריץ את התוכנית יקבל את הרשאותיה:
chmod g+s summarize %