OnWorks Linux ו-Windows Online WorkStations

לוגו

אירוח מקוון בחינם עבור תחנות עבודה

<הקודם | תוכן | הבא>

אל האני -u ו -a אפשרויות נותנות מידע נוסף. לאפשרויות נוספות ומה הן עושות, עיין בדפי המידע.


בחלק הבא נראה כיצד תהליך אחד יכול ליצור אחר.


תמונה

4.1.5. חיים ומוות של תהליך


4.1.5.1. יצירת תהליך


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


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


אל האני fork-and-exec מנגנון מחליף אפוא פקודה ישנה לחדשה, בעוד שהסביבה שבה מופעלת התוכנית החדשה נשארת זהה, כולל תצורה של התקני קלט ופלט, משתני סביבה ועדיפות. מנגנון זה משמש ליצירת כל תהליכי UNIX, כך שהוא חל גם על מערכת ההפעלה לינוקס. אפילו התהליך הראשון, init, עם מזהה תהליך 1, מתפצל במהלך הליך האתחול ב-

מה שנקרא אתחול הליך.


סכימה זו ממחישה את מנגנון המזלג והביצוע. מזהה התהליך משתנה לאחר הליך המזלג:


איור 4-1. מנגנון מזלג והפעלה


תמונה


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


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


תמונה

4.1.5.2. סיום תהליכים


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


לאחר מכן ניתן לפרש את קודי ההחזרה על ידי ההורה, או בסקריפטים. הערכים של קודי ההחזרה הם ספציפיים לתוכנית. בדרך כלל ניתן למצוא מידע זה בדפי האדם של התוכנית שצוינה, למשל grep הפקודה חוזרת -1 אם לא נמצאו התאמות, עליהן ניתן להדפיס הודעה בשורות "לא נמצאו קבצים". דוגמה נוספת היא הפקודה מובנית של Bash נָכוֹן, שלא עושה כלום מלבד החזרת סטטוס יציאה של 0, כלומר הצלחה.


תמונה


4.1.5.3. אותות


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


טבלה 4-2. אותות נפוצים


שם האות

מספר אות

משמעות

טווח יעד

15

לסיים את התהליך בצורה מסודרת.

סיגינט

2

להפסיק את התהליך. תהליך יכול להתעלם מהאות הזה.

סיגיל

9

להפסיק את התהליך. תהליך לא יכול להתעלם מהאות הזה.

הרשמה

1

עבור דמונים: קרא שוב את קובץ התצורה.

אתה יכול לקרוא עוד על פעולות ברירת מחדל שננקטות בעת שליחת אות לתהליך ב איש 7 אוֹת.


תמונה

4.1.6. SUID ו-SGID


כפי שהובטח בפרק הקודם, כעת נדון במצבים המיוחדים SUID ו-SGID ביתר פירוט. מצבים אלה קיימים כדי לספק למשתמשים רגילים את היכולת לבצע משימות שבדרך כלל לא היו מסוגלים לבצע בגלל סכימת הרשאות הקבצים ההדוקה המשמשת במערכות מבוססות UNIX. במצב האידיאלי משתמשים במצבים מיוחדים באופן דליל ככל האפשר, מכיוון שהם כוללים סיכוני אבטחה. מפתחי לינוקס בדרך כלל ניסו להימנע מהם ככל האפשר. הלינוקס ps גרסה, למשל, משתמשת במידע המאוחסן ב- / proc מערכת קבצים, הנגישה לכולם, ובכך נמנעת חשיפה של נתוני מערכת ומשאבים רגישים לציבור הרחב. לפני כן, ועדיין במערכות UNIX ישנות יותר, ה ps תוכנית דרושה גישה לקבצים כגון / dev / mem ו / dev / kmem, שהיו לו חסרונות בגלל ההרשאות והבעלות בקבצים האלה:


rita:~> ls

קרוו-ר-----

-l

/dev/*mem

שורש 1


קמם


1,


2 באוגוסט 30 22:30 /dev/kmem

קרוו-ר-----

שורש 1

קמם

1,

1 באוגוסט 30 22:30 /dev/mem

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


תמונה

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


bea:~> ls -l /etc/passwd

-rw-r--r-- שורש שורש אחד

1267 16 בינואר 14:43 /etc/passwd

bea:~> ls -l /etc/passwd

-rw-r--r-- שורש שורש אחד

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

הרשאות מיוחדות לתוכנית:


mia:~> אשר passwd

passwd הוא /usr/bin/passwd

mia:~> אשר passwd

passwd הוא /usr/bin/passwd


mia:~> ls -l /usr/bin/passwd

-rs--x--x שורש שורש 1

13476 7 באוגוסט 06:03 /usr/bin/passwd*

mia:~> ls -l /usr/bin/passwd

-rs--x--x שורש שורש 1

תמונה

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


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


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


תמונה

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


ג'ו:~> אשר כותבים

הכתיבה היא /usr/bin/write


ג'ו:~> ls -l /usr/bin/write

-rwxr-sr-x 1 root tty

8744 5 בדצמבר 00:55 /usr/bin/write*

ג'ו:~> אשר כותבים

הכתיבה היא /usr/bin/write


ג'ו:~> ls -l /usr/bin/write

-rwxr-sr-x 1 root tty


ג'ו:~> מי

ג'ני טי1

ג'ני נקודות/1

ג'ני נקודות/2

ג'ני נקודות/3

ג'ו נקודות/0

23 בינואר 11:41

23 בינואר 12:21 (:0)

23 בינואר 12:22 (:0)

23 בינואר 12:22 (:0)

20 בינואר 10:13 (lo.callhost.org)

ג'ו:~> מי

ג'ני טי1

ג'ני נקודות/1

ג'ני נקודות/2

ג'ני נקודות/3

ג'ו נקודות/0


ג'ו:~> ls -l /dev/tty1

crw--w---- 1 jenny tty 4,

1 בינואר 23 11:41 /dev/tty1

ג'ו:~> ls -l /dev/tty1

crw--w---- 1 jenny tty 4,


ג'ו:~> תכתוב את ג'ני טי1

היי ג'ני, נאכל ארוחת צהריים ביחד?

^C

ג'ו:~> תכתוב את ג'ני טי1

היי ג'ני, נאכל ארוחת צהריים ביחד?

^C

משתמש ג'ני מקבל את זה על המסך שלה:


הודעה מאת [מוגן בדוא"ל] ב-ptys/1 בשעה 12:36 ... היי ג'ני, נאכל צהריים ביחד?

EOF

הודעה מאת [מוגן בדוא"ל] ב-ptys/1 בשעה 12:36 ... היי ג'ני, נאכל צהריים ביחד?

EOF

לאחר קבלת הודעה, ניתן לנקות את המסוף באמצעות ה- Ctrl+L שילוב מקשים. על מנת שלא לקבל הודעות כלל (למעט ממנהל המערכת), השתמש ב- הודעה פקודה. כדי לראות באילו משתמשים מחוברים מקבלים הודעות מאחרים מי -w. כל התכונות מוסברות במלואן בדפי המידע של כל פקודה.


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

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


תמונה


מחשוב ענן מערכת ההפעלה המוביל ב-OnWorks: