180 likes | 375 Views
מערכות הפעלה. חומר נוסף לתרגולים – אדמיניסטרציה ושימוש מתקדם ב Linux. תוכן התרגול. שימוש מתקדם אדמיניסטרציה החומר להרצאה זו נלקח מ: הרצאות של מועדון ה Linux החיפאי http://haifux.org/lectures/84-sil/users-processes-files-and-permissions/users-perms-lec.html
E N D
מערכות הפעלה חומר נוסף לתרגולים – אדמיניסטרציה ושימוש מתקדם ב Linux
תוכן התרגול • שימוש מתקדם • אדמיניסטרציה • החומר להרצאה זו נלקח מ: • הרצאות של מועדון ה Linux החיפאי • http://haifux.org/lectures/84-sil/users-processes-files-and-permissions/users-perms-lec.html • The Linux Documentation Project • http://tldp.org/LDP/sag/html/index.html מערכות הפעלה - תרגול 15
Linux – כבר הכרנו ? • מערכת הפעלה דמוית Unix • תאימות גבוהה (אך לא רשמית) לתקן POSIX.1 • מערכת הפעלה חופשית • ניתנת להורדה בחינם מהאינטרנט • קוד פתוח - מפותחת כשיתוף פעולה של אלפי מתכנתים מכל העולם • התחילה כפרויקט של סטודנט ב-1990 • Linus Torvalds – כיום מוביל את פיתוח הגרעין העתידי של Linux • שמה המלא: GNU/Linux • חלק ניכר מהתוכנה בכל distribution (גרסת הפצה) מעבר לגרעין הוא קוד פתוח של פרויקט GNU • Linux מותאמת לסביבות חומרה רבות ושונות • למעשה, כמעט לכל סוג מעבד שיש • משעוני יד ועד לשרתים אירגוניים מערכות הפעלה - תרגול 15
משתמשים • Linux היא מערכת הפעלה מרובת משתמשים • לכל משתמש יש User Id • User ID ='0‘ נקרא משתמש root - האדמיניסטרטור שיכול לעשות כל דבר במחשב • כל תהליך משויך ל user שהפעיל אותו • כל קובץ משויך ל user שיצר אותו • קובץ /etc/passwd מכיל את רשימת כל ה users במערכת: • User Name • Password סיסמאות יכולות להופיע בצורה מוצפנת גם בקובץ wshado/etc/ • User ID (number) • User's default Group ID (will be explained later) • Home Directory • Login Shell מערכות הפעלה - תרגול 15
קבוצות משתמשים • מוגדרות בקובץ /etc/group המכיל את רשימת כל ה groups במערכת: • Group Name • Password • Group Id (number) • List of Users • לכל User יש default group, אך הוא יכול להשתייך לקבוצות נוספות • אפשר לבדוק לאילו קבוצות User שייך ע"י הפקודה groups [username] מערכות הפעלה - תרגול 15
קבצים • לכל קובץ מוגדרות הרשאות גישה • ההרשאות מתחלקות ל 3 קבוצות: user-owner, group-owner, others • כל קבוצת הרשאות מתחלקת להרשאות קריאה,כתיבה, הרצה - rwx • ספריה היא גם קובץ. עבור ספריה: • קריאה פירושה לראות את רשימת הקבצים והתתי ספריות בספריה זו • כתיבה פירושה יצירת קובץ או ספריה חדשה בספריה זו • הרצה פירושה לגשת לקבצים בספריה • כדי לקרוא קובץ tmp/X/ צריך הרשאת x על "/" , הרשאת x על tmp/ והרשאת r על tmp/X/ • בעל הקובץ – זה שיצר אותו, רשאי לשנות את ההרשאות • ניתן לשנות הרשאות ע"י הפקודה chmod • כ"א מ 9 ההרשאות נכתבות בפורמט של מספר אוקטלי – בין 0 ל 7 • הרשאות ברירת מחדל הן בד"כ rw לכולם עבור קובץ, rwx לכולם עבור ספריה • הפקודה umask קובעת אילו הרשאות ברירת מחדל לא לתת לקובץ חדש מערכות הפעלה - תרגול 15
תהליכים • פקודה ps מציגה את רשימת התהליכים הרצים ב shell הנוכחי • (היא ניגשת ל /proc – פרטים בהמשך) • ps –a, ps –u <user_name> • kill <pid>, kill -9 <pid> - משתמש יכול להרוג רק תהליכים שלו • root יכול להרוג תהליכים של כולם • הפקודה sbin/fuser/ - רשימת התהליכים שמחזיקים את הקובץ פתוח כרגע • הפקודה usr/sbin/lsof/ - רשימת הקבצים הפתוחים כרגע ע"י תהליך נתון מערכות הפעלה - תרגול 15
הרשאות מיוחדות – suid • לכל קובץ קיים ביט הרשאה נוסף – set user-id bit • כשהוא דלוק עבור קובץ הרצה אזי: • כשמשתמש יריץ אותו – התהליך שירוץ יקבל את ההרשאות של בעל הקובץ ולא את ההרשאות של המשתמש שהריץ את הקובץ • suid מאפשר לתת למשתמש גישה זמנית לקבצים שבד"כ אין לו גישה אליהם • שימוש טיפוסי: • התוכנית passwd, שמשנה סיסמא של המשתמש צריכה לגשת לקובץ /etc/passwd לכתיבה. למשתמש רגיל כמובן אסור לגשת לקובץ /etc/passwd • קובץ של התוכנית passwd שייך לroot ול root מותר גם לגשת לקובץ /etc/passwd • suid bit של התוכנית passwd דלוק • כשמשתמש מריץ את התוכנית passwd – התהליך שמריץ את תוכנית מקבל באופן זמני את כל הרשאות הגישה של rootולכן יכול לגשת ל /etc/passwd מערכות הפעלה - תרגול 15
מציאת קבצים • משתנה סביבה PATH – רשימת הספריות בהן יש לחפשexecutables בעת הרצה • הפקודה which - היכן בדיוק ממוקם executable שהספריה שלו מפורטת בpath • אם קובץ ההרצה לא ב path או סתם כדי למצוא קובץ במערכת הקבצים: • find – סורק את מערכת הקבצים (איטי אבל תמיד נכון) • locate – מחפש במסד נתונים (מהיר אבל יכול לטעות) • updatedb– מעדכן את מסד הנתונים (רץ ברקע כל פרק זמן מסוים) מערכות הפעלה - תרגול 15
System Monitoring • - topמציגה את הסטטסיטיקות לגב ביצועי המערכת • כמות התהליכים • CPU usage • תפוסת זכרון פיזי ו swap • תהליכים שצורכים הכי הרבה זמן CPU • iostat – מידע על ביצועי IO של הדיסק • df -h – מידע על הדיסקים (כל ה mounted disks) • du -h – גודל הספריות והקבצים (du -hs - סיכום) • quota –v– גודל הדיסק המרבי המוקצה עבור המשתמש • w – כל המשתשים שכרגע logged-in והפקודה שהם מריצים מערכות הפעלה - תרגול 15
תקשורת - פקודות שימושיות • ifconfig – מידע על כל כרטיסי התקשורת במחשב (interfaces) • כתובת IP, כתובת MAC (כתובת פיזית) • בעזרת פקודה זו ניתן גם לקנפג את ה interface - למשל להגדיר כתובת IP חדשה • hostname – שם המחשב • netstat – מציג את מצב הinterfaces • Open TCP connections מערכות הפעלה - תרגול 15
strace – System Call Tracer • אילו קריאות מערכת מופעלות בעת ביצוע התוכנית הבאה? #include <stdio.h> int main(void) { printf("Hello, world!"); return 0; } • אילו קריאות מערכת מופעלות ע"י תוכנית X בהינתן קובץ הרצה של Xבלבד? • מהם הפרמטרים של הקריאות האלו? מהו ערך החזרה? האם הם הצליחו? מהו errno לאחר החזרה? מהי המחרוזת הסימבולית המתאימה ל- errno ? מערכות הפעלה - תרגול 15
strace (2) 1. execve("./a", ["./a"], [/* 36 vars */]) = 0 2. uname({sys="Linux", node="csd", ...}) = 0 3. brk(0) = 0x501000 4. [...] 5. open("/lib64/tls/libc.so.6", O_RDONLY) = 3 6. read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\322"..., 640) = 640 7. fstat(3, {st_mode=S_IFREG|0755, st_size=1669728, ...}) = 0 8. mmap(NULL, 2376040, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x2a9568c000 9. mmap(0x2a958c7000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x13b000) = 0x2a958c7000 10. mmap(0x2a958cc000, 16744, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0)=0x2a958cc000 11. close(3) = 0 12. write(1, "Hello, world!", 13Hello, world!) = 13 13. exit(0) = ? מערכות הפעלה - תרגול 15
strace (3) • שורה 1 מופעלת ע"י strace עצמו והיא מפעילה את ה-loader של המערכת (בד"כ /lib/ld-linux.so.2) על מנת להריץ את הקובץ • שורות 2-11 מבוצעות ע"י ה- loader • 2 – בדיקת סוג המערכת (ארכיטקטורה, גרסת גרעין, ...) • 3 – קביעת גודל ה-heap הנוכחי • 4 – חיפוש הספריה הסטנדרטית (libc) במדריכים שונים • 5 – פתיחת הספריה עם fd = 3 • 6 – קריאת ה-header של הקובץ כדי לגלות היכן בקובץ נמצא הקוד, הנתונים וכו' • 7 – מציאת גודל הקובץ • 8-10 – מיפוי code, data and bss sections של הספריה למרחב הזכרון של התהליך • שורות 11-13 מבוצעות ע"י התכנית עצמה • 11 – סגירת הקובץ (אין בו יותר צורך כי כל החלקים הנדרשים מופו לזכרון) • 12 – printf קורא ל-write על fd=1 (תזכורת:גם עם היה output redirection) • 13 – סיום התהליך מערכות הפעלה - תרגול 15
/proc virtual filesystem • מורכבת (mounted) בזמן עלית המערכת בספריה/proc • אינה מחוברת לאף התקן פיזי • קיימת אך ורק בזיכרון • קריאה מקובץ גורמת להפעלת פונקציה בגרעין אשר מספקת on-the-fly את תוכן הקובץ • כתיבה לקובץ מאפשרת לשנות פרמטרים מסויימים של הגרעין • לכן, לרוב רק ל- root יש הרשאת כתיבה מערכות הפעלה - תרגול 15
/proc (2) • 2 חלקים עיקריים: • ספריה לכל תהליך במערכת • שם הספריה הוא ה-PID של התהליך • /proc/self הוא קישור סימבולי לספריה של התהליך הנוכחי • תוכן הספריה : • cmdline – שורת הפקודה איתה הופעל התהליך (קובץ הרצה + ארגומנטים) • cwd – קישור סימבולי לספרית העבודה הנוכחית של התהליך • environ – משתני סביבה של התהליך (environment variables) • exe - קישור סימבולי לקובץ ההרצה של התהליך • fd – ספריה המכילה קישורים סימבוליים לקבצים הפתוחים של התהליך • maps – כתובות והרשאות של מיפויים של קבצים לתוך מרחב הזיכרון של התהליך • stat, statm, status – קבצי סטטוס וסטטיסטיקה לגבי התהליך מערכות הפעלה - תרגול 15
/proc (3) • פרט לספריות הקשורות לתהליכים, /proc מכילה קבצים שונים • cmdline – הפרמטרים של הגרעין בעת העליה • בין היתר מכיל את שם ההתקן שבו נמצא ה-root filesystem • cpuinfo – מכיל אינפורמציה על כל מעבד במערכת • יצרן, תדירות, גודל מטמון, ... • filesystems – מכיל את כל סוגי מערכות הקבצים הנתמכות ע"י הגרעין • ext2, ext3, vfat, tmpfs, proc, nfs, ntfs, iso9660, udf, ... • interrupts – מכיל את רשימת ה-IRQs במערכת ואת כמות הפסיקות שטופלו ע"י כל מעבד מכל סוג • loadavg – 3 מספרים המודדים את עומס המערכת בדקה, 5 דקות ו-15 דקות האחרונות • meminfo – מכיל אינפורמציה לגבי הזיכרון הפיזי וה-swap (סה"כ במערכת, זיכרון פנוי, ...) מערכות הפעלה - תרגול 15
/proc (4) • קבצים נוספים • modules – דרייברים שנטענו אל הגרעין • mounts – רשימת מערכות הקבצים שהורכבו • uptime – זמן מעליית המערכת • version – גרסת הגרעין מערכות הפעלה - תרגול 15