Skip to main content

כיצד להשתמש ב - Unix פיקוד יוניקס ב - Linux

ניהול חברתי בקוד פתוח- הקץ לפוליטיקה? (bettermeans" intro") (יוני 2026)

ניהול חברתי בקוד פתוח- הקץ לפוליטיקה? (bettermeans" intro") (יוני 2026)
Anonim

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

אזהרה: utmp לא ניתן לכתיבה, כי תוכניות רבות במערכת (בטיפשות) תלויים בשלמותה. אתה מסתכן logfiles מערכת מזויפים ושינויים של קבצי מערכת אם אתה עוזבutmpwritable לכל משתמש.

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

#define UT_UNKNOWN 0 #Define RUN_LVL 1 #define BOOT_TIME 2 #define NEW_TIME 3 #define OLD_TIME 4 #define INIT_PROCESS 5 #define LOGIN_PROCESS 6 #define USER_PROCESS 7 #define DEAD_PROCESS 8 # הגדרת חשבון 9 # הגדרת דף UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {short int e_termination; / * מצב סיום התהליך. * / קצר int e_exit; / * מצב היציאה התהליך. * /}; struct utmp {קצר ut_type; / * סוג ההתחברות * / pid_t ut_pid; / * pid של תהליך הכניסה * / char ut_line UT_LINESIZE; / * שם התקן של tty - "/ dev /" * / char ut_id 4; / * init מזהה או abbrev. ttyname * / char ut_user UT_NAMESIZE; / * שם משתמש * / char ut_host UT_HOSTSIZE; / * hostname עבור התחברות מרחוק * / struct exit_status ut_exit; / * מצב היציאה של תהליך המסומן כ- DEAD_PROCESS. * / ארוך ut_session; / * מזהה הפעלה, המשמש windowing * / struct timeval ut_tv; / * ערך הזמן נעשה. * / int32_t ut_addr_v6 4; / * כתובת ה- IP של המארח מרחוק. * / char כרית 20; /* שמור לשימוש עתידי. * /}; / * פריצות תאימות לאחור. * / #define ut_name ut_user #ifndef _NO_UT_TIME #define ut_time ut_tv.tv_sec #endif #define ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6 0

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

את הרשומות הראשונות שנוצרו אי פעם init (8) עיבוד initt (5). לפני כניסה לערך, עם זאת, init (8) מנקה את utmp על ידי הגדרהut_type לDEAD_PROCESS, ניקויut_user, ut_host, ושעה עם null בתים עבור כל רשומה אשרut_type לאDEAD_PROCESS אוRUN_LVL ואיפה תהליך עם PIDut_pid קיים. אם אין רשומה ריקה עם הצורךut_id ניתן למצוא, יזם יוצר אחד חדש. זה קובעut_id מן inittab,ut_pid ושעה לערכים הנוכחייםut_type לINIT_PROCESS.

גטי (8) מאתר את הערך לפי pid, משתנהut_type לLOGIN_PROCESS, שינוייםשעה, סטיםut_line, ומחכה שהקשר יוקם. התחברות (8), לאחר שהמשתמש אושר, שינוייםut_type לUSER_PROCESS, שינוייםשעה, וכן קובעut_host וut_addr. תלוי ב גטי (8) התחברות (8), רשומות עשוי להיות ממוקם על ידיut_line במקום עדיףut_pid.

מתי init (8) מוצא כי תהליך יצא, הוא מאתר את כניסת utmp שלה על ידיut_pid, סטיםut_type לDEAD_PROCESS, ומנקהut_user, ut_host ושעה עם null בתים.

xterm (1) ו emulators מסוף אחרים ישירות ליצורUSER_PROCESS להקליט וליצורut_id באמצעות שני האותיות האחרונות של/ dev / ttyp % c או באמצעותעמ ' % d ל/ dev / pts / % d . אם הם מוצאיםDEAD_PROCESS עבור זה מזהה, הם למחזר אותו, אחרת הם יוצרים ערך חדש. אם הם יכולים, הם יסמנו את זה בתורDEAD_PROCESS על היציאה והוא מומלץ כי הם null ut_line,שעה, ut_user, וut_host גם כן.

xdm (8) לא צריך ליצור שיא utmp, כי אין מסוף שהוקצה. לתת לזה ליצור אחד יגרום שגיאות, כגון 'אצבע: לא יכול stat /dev / machine.dom'. זה צריך ליצור ערכי wtmp, אם כי, בדיוק כמו ftpd (8) עושה.

טלנט (8) מגדיר אLOGIN_PROCESS הכניסה ומשאירה את השאר התחברות (8) כרגיל. לאחר הפגישה telnet, טלנט (8) מנקה את utmp בדרך המתוארת.

הwtmp קובץ רשומות כל כניסות ו logouts. הפורמט שלה הוא בדיוק כמוutmp למעט שם משתמש null מציין יציאה על הטרמינל המשויך. יתר על כן, שם המסוף'~'עם שם משתמש"לכבות" או"אתחול מחדש" מציין כיבוי או אתחול מחדש של המערכת וזוג שמות המסופים'|'/'}' מתנתק את זמן המערכת הישן / החדש כאשר אשר (1) משנה אותו.wtmp מתוחזק על ידי התחברות (1), init (1), וכמה גרסאות של גטי (1). אף אחת מהתוכניות הללו לא יוצרת את הקובץ, כך שאם הוא יוסר, הרישומה כבויה.