לערן די לינוקס קאַמאַנד - ווטמפּ

נאָמען

utmp, ווטמפּ - לאָגין רעקאָרדס

סינאָפּסיס

# ינקלודע <וטמפּ.ה>

באַשרייַבונג

די וטמפּ טעקע אַלאַוז איר צו אַנטדעקן אינפֿאָרמאַציע וועגן וואס איז דערווייַל ניצן די סיסטעם. עס קען זיין מער וסערס דערווייַל ניצן די סיסטעם, ווייַל ניט אַלע מגילה נוצן וטמפּ לאָגינג.

ווארענונג: וטמפּ מוזן נישט זיין סקראַטעד, ווייַל פילע סיסטעם מגילה (פולישלי) אָפענגען אויף זייַן אָרנטלעכקייַט. איר ריזיקירן אָנפאַל סיסטעם לאָגפילעס און מאַדאַפאַקיישאַנז פון סיסטעם טעקעס אויב איר לאָזן וטמפּ שרייַבן צו קיין באַניצער.

דער טעקע איז אַ סיקוואַנס פון איינסן מיט די ווייַטערדיק סטרוקטור דערקלערט אין די אַרייַננעמען טעקע (טאָן אַז דאָס איז בלויז איינער פון עטלעכע דעפֿיניציע אַרום, פרטים זענען אפהענגיק אויף די ווערסיע פון ​​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 #define ACCOUNTING 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {קורץ ינט ע_טערמינאַטיאָן; / * פּראָצעס טערמאַניישאַן סטאַטוס. * / קורץ ינט ע_עקסיט; / * פּראָצעס אַרויסגאַנג סטאַטוס. * /}; struct utmp {קורץ וט_טיפּע; / * טיפּ פון לאָגין * / פּיד_ט וט_פּיד; / * פּיד פון לאָגין פּראָצעס * / טשאַר וט_לינע [UT_LINESIZE]; / * מיטל נאָמען פון טטי - "/ דעוו /" * / טשאַר וט_יד [4]; / * יניט יד אָדער אַבבעוו. טטינאַמע * / טשאַר וט_וסער [UT_NAMESIZE]; / * באַניצער נאָמען * / טשאַר וט_האָסט [וט_האָסציזע]; / * האָסטנאַמע פֿאַר ווייַט לאָגין * / סטריט עקסיט_סטאַטוס וט_עקסיט; / * דער אַרויסגאַנג סטאַטוס פון אַ פּראָצעס אנגעצייכנט ווי DEAD_PROCESS. * / לאַנג וטססעססיאָן; / * סעסיע שייַן, געניצט פֿאַר ווינדאָווינג * / סטרוקט צייטוואַל וט_טוו; / * צייַט פּאָזיציע איז געמאכט. * / int32_t וט_אַדדר_וו 6 [4]; / * יפּ אַדרעס פון ווייַט באַלעבאָס. * / טשאַר פּאַד [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). שטריקל פעלדער זענען טערמאַנייטיד דורך '\ 0' אויב זיי זענען קירצער ווי די גרייס פון דעם פעלד.

די ערשטער ערטער קיינמאָל באשאפן רעזולטאַט פון יניט (8) פּראַסעסינג יניטטאַב (5). איידער אַ פּראָצעס איז פּראַסעסט, כאָטש, יניט (8) קלינז אַרויף וטפּפּ דורך באַשטעטיקן וט_טיפּע צו DEAD_PROCESS , ויסמעקן ut_user , ut_host , and ut_time מיט נאַל ביטעס פֿאַר יעדער רעקאָרד וואָס יט_טיפּע איז ניט דעאַד_פּראָסעסס אָדער רונ_לוול און ווו קיין פּראָצעס מיט פּיד וט_פּיד יגזיסץ. אויב קיין ליידיק רעקאָרדינג מיט די דארף וט_יד קענען זיין געפונען, יניט קריייץ אַ נייַע. עס שטעלט יט_יד פון די יניטטאַב, וט_פּיד און וט_טימע צו די קראַנט וואַלועס, און וט_טיפּע צו INIT_PROCESS .

גטי (8) לאָוקייץ די פּאָזיציע דורך די פּיד, ענדערונגען וט_טיפּע צו LOGIN_PROCESS , ענדערונגען וט_טימע , שטעלט יט_לינע , און ווייץ פֿאַר קשר צו זיין געגרינדעט. לאָגין (8), נאָך אַ באַניצער איז געווען אָטענטאַקייטאַד, ענדערונגען וט_טיפּע צו USER_PROCESS , ענדערונגען וט_טיטימע , און שטעלט וט_האָסט און וט_אַדדר . דעפּענדינג אויף גטי (8) און לאָגין (8), רעקאָרדס זאל זיין ליגן דורך וט_לינע אַנשטאָט פון די בילכער וט_פּיד .

ווען init (8) געפונען אַז אַ פּראָצעס איז יקסייטאַד, עס לאָקאַטעס זייַן וטפּפּ פּאָזיציע דורך וט_פּיד , שטעלן וט_טיפּע צו DEAD_PROCESS , און קלירז וט_וסער , וט_האָסט און וט_טימע מיט נאַל ביטעס.

xterm (1) און אנדערע טערמינאַל עמולאַטאָרס גלייַך שאַפֿן אַ USER_PROCESS רעקאָרדינג און דזשענערייט די ut_id דורך ניצן די לעצטע צוויי אותיות פון / dev / טטיפּ % C אָדער ניצן פּ % d פֿאַר / dev / pts / % d . אויב זיי געפֿינען אַ DEAD_PROCESS פֿאַר דעם שייַן, זיי רעסיקלע עס, אַנדערש זיי מאַכן אַ נייַ פּאָזיציע. אויב זיי קענען, זיי וועלן מארקירן עס ווי DEAD_PROCESS אויף עקסיטינג און עס איז אַדווייזד אַז זיי נול וט_לינע , וט_טימע , וט_וסער , און וט_האָסט ווי געזונט.

קסדם (8) זאָל נישט שאַפֿן אַ וטמפּ רעקאָרד, ווייַל עס איז ניט אַסיינד וואָקזאַל. לעטינג עס מאַכן איינער וועט רעזולטאַט אין ערראָרס, אַזאַ ווי 'פינגער: קענען ניט סטאַט / דעוו / מאַטשינע.דאָם'. עס זאָל שאַפֿן וופּמפּ ערטער, כאָטש, פּונקט ווי פטפּד (8) טוט.

telnetd (8) שטעלט אַ LOGIN_PROCESS פּאָזיציע און בלעטער די מנוחה צו לאָגין (8) ווי געוויינטלעך. נאָך די telnet סעסיע ענדס, telnetd (8) קלינז אַרויף וטמפּ אין די דיסקרייבד וועג.

די ווטמפּ טעקע רעקאָרדירט ​​אַלע לאָגינס און לאָגאָוץ. זייַן פֿאָרמאַט איז פּונקט ווי וטפּמפּ אַחוץ אַז אַ נאַל באַניצער נאָמען ינדיקייץ אַ לאָגאָוט אויף די פארבונדן וואָקזאַל. דערצו, די טערמינאַל נאָמען "~" מיט באַניצער נאָמען "שאַטדאַון" אָדער "רעבאָאָט" ינדיקייץ אַ סיסטעם שאַטדאַון אָדער רעבאָאָט און די פּאָר פון וואָקזאַל נעמען "|" / "}" לאָגס די אַלט / נייַ סיסטעם צייַט ווען דאַטע (1) ענדערונגען עס. ווטמפּ איז מיינטיינד דורך לאָגין (1), יניט (1), און עטלעכע ווערסיעס פון גטי (1). ניט פון די מגילה קריייץ די טעקע , אַזוי אויב עס איז אַוועקגענומען, רעקאָרד-בעכעסקעם איז פארקערט אַוועק.