लिनक्स कमांड जानें - wtmp

नाम

utmp, wtmp - लॉगिन रिकॉर्ड

सार

# शामिल

विवरण

Utmp फ़ाइल किसी को वर्तमान में सिस्टम का उपयोग करने वाले व्यक्ति के बारे में जानकारी खोजने की अनुमति देती है। वर्तमान में सिस्टम का उपयोग करने वाले अधिक उपयोगकर्ता हो सकते हैं, क्योंकि सभी प्रोग्राम utmp लॉगिंग का उपयोग नहीं करते हैं।

चेतावनी: utmp लिखने योग्य नहीं होना चाहिए, क्योंकि कई सिस्टम प्रोग्राम (मूर्खतापूर्ण) इसकी अखंडता पर निर्भर करते हैं। यदि आप किसी भी उपयोगकर्ता को लिखने के लिए utmp छोड़ते हैं तो आप सिस्टम फ़ाइलों की फ़ेक्ड सिस्टम और संशोधनों को संशोधित करते हैं।

फ़ाइल फ़ाइल में शामिल निम्नलिखित संरचना के साथ प्रविष्टियों का एक अनुक्रम है (ध्यान दें कि यह केवल कई परिभाषाओं में से एक है; विवरण libc के संस्करण पर निर्भर करता है):

#define UT_UNKNOWN 0 # परिभाषित करें RUN_LVL 1 # परिभाषित करें BOOT_TIME 2 # परिभाषित करें NEW_TIME 3 # परिभाषित करें OLD_TIME 4 # परिभाषित करें INIT_PROCESS 5 # परिभाषित करें LOGIN_PROCESS 6 # परिभाषित करें USER_PROCESS 7 # परिभाषित करें DEAD_PROCESS 8 # खाता परिभाषित करें # # परिभाषित करें UT_LINESIZE 12 # परिभाषित करें UT_NAMESIZE 32 #define UT_HOSTSIZE 256 स्ट्रक्चर exit_status {लघु int e_termination; / * प्रक्रिया समाप्ति की स्थिति। * / लघु int e_exit; / * बाहर निकलने की स्थिति की प्रक्रिया। * /}; संरचना utmp {लघु ut_type; / * लॉगिन का प्रकार * / pid_t ut_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]; / * दूरस्थ लॉगिन * / struct exit_status ut_exit के लिए होस्टनाम; / * DEAD_PROCESS के रूप में चिह्नित प्रक्रिया की निकास स्थिति। * / लंबा ut_session; / * सत्र आईडी, विंडोिंग * / स्ट्रक्चर टाइमवल ut_tv के लिए उपयोग किया जाता है; / * समय प्रविष्टि बनाया गया था। * / int32_t ut_addr_v6 [4]; / * दूरस्थ मेजबान का आईपी पता। * / चार पैड [20]; /* भविष्य उपयोग के लिए आरक्षित। * /}; / * पिछड़ा संगतता हैक्स। * / #define ut_name ut_user #ifndef _NO_UT_TIME # परिभाषित करें ut_time ut_tv.tv_sec #endif #define ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6 [0]

यह संरचना उपयोगकर्ता के टर्मिनल से जुड़े विशेष फ़ाइल का नाम देती है, उपयोगकर्ता का लॉगिन नाम, और समय के रूप में लॉगिन का समय (2)। यदि वे फ़ील्ड के आकार से छोटे हैं तो स्ट्रिंग फ़ील्ड को '\ 0' से समाप्त कर दिया जाता है।

इनिट्स (8) प्रसंस्करण inittab (5) से उत्पन्न पहली प्रविष्टियों का परिणाम। प्रविष्टि संसाधित होने से पहले, हालांकि, init (8) ut_type को DEAD_PROCESS पर सेट करके, ut_user , ut_host , और ut_time को प्रत्येक रिकॉर्ड के लिए शून्य बाइट्स के साथ समाशोधन करके utmp को साफ़ करता है , जो ut_type DEAD_PROCESS या RUN_LVL नहीं है और जहां PID ut_pid के साथ कोई प्रक्रिया मौजूद नहीं है। यदि आवश्यक ut_id के साथ कोई खाली रिकॉर्ड नहीं पाया जा सकता है, तो init एक नया बनाता है। यह inittab, ut_pid और ut_time से मौजूदा मानों में ut_id सेट करता है, और ut_type INIT_PROCESS पर सेट करता है

गेट्टी (8) पिड द्वारा प्रविष्टि को रेखांकित करता है, ut_type को LOGIN_PROCESS में बदलता है, ut_time बदलता है, ut_line सेट करता है , और स्थापित होने के लिए कनेक्शन की प्रतीक्षा करता है। लॉगिन (8), उपयोगकर्ता को प्रमाणित करने के बाद , USER_PROCESS में ut_type बदलता है, ut_time बदलता है, और ut_host और ut_addr सेट करता है। गेट्टी (8) और लॉगिन (8) के आधार पर, रिकॉर्ड्स को बेहतर ut_pid के बजाय ut_line द्वारा स्थित किया जा सकता है।

जब init (8) को पता चलता है कि एक प्रक्रिया समाप्त हो गई है, तो यह ut_pid द्वारा अपनी utmp प्रविष्टि को रेखांकित करता है, ut_type को DEAD_PROCESS पर सेट करता है, और null बाइट्स के साथ ut_user , ut_host और ut_time साफ़ करता है।

xterm (1) और अन्य टर्मिनल अनुकरणकर्ता सीधे USER_PROCESS रिकॉर्ड बनाते हैं और / dev / ttyp % c के अंतिम दो अक्षरों का उपयोग करके या dev / pts / % d के लिए p % d का उपयोग करके ut_id उत्पन्न करते हैं। अगर उन्हें इस आईडी के लिए DEAD_PROCESS मिल जाता है, तो वे इसे रीसायकल करते हैं, अन्यथा वे एक नई प्रविष्टि बनाते हैं। यदि वे कर सकते हैं, तो वे इसे बाहर निकलने पर DEAD_PROCESS के रूप में चिह्नित करेंगे और यह सलाह दी जाती है कि वे null ut_line , ut_time , ut_user , और ut_host भी हैं।

xdm (8) को utmp रिकॉर्ड नहीं बनाना चाहिए, क्योंकि कोई असाइन टर्मिनल नहीं है। इसे बनाने के लिए परिणामस्वरूप त्रुटियां होंगी, जैसे 'उंगली: stat /dev/machine.dom' नहीं। यह wtmp प्रविष्टियां बनाना चाहिए, हालांकि, ftpd (8) की तरह ही।

telnetd (8) एक LOGIN_PROCESS प्रविष्टि सेट करता है और शेष को सामान्य रूप से लॉगिन (8) छोड़ देता है। टेलनेट सत्र समाप्त होने के बाद, टेलनेट (8) वर्णित तरीके से utmp को साफ़ करता है।

Wtmp फ़ाइल सभी लॉग इन और लॉगआउट रिकॉर्ड करता है। इसका प्रारूप बिल्कुल utmp की तरह है, सिवाय इसके कि एक शून्य उपयोगकर्ता नाम संबंधित टर्मिनल पर लॉगआउट इंगित करता है। इसके अलावा, टर्मिनल नाम "~" उपयोगकर्ता नाम "शट डाउन" या "रीबूट" के साथ सिस्टम शट डाउन या रीबूट और टर्मिनल नामों की जोड़ी इंगित करता है "|" / "}" पुराने / नए सिस्टम समय को लॉग करता है जब दिनांक (1) इसे बदलता है। wtmp लॉगिन (1), init (1), और गेट्टी के कुछ संस्करण (1) द्वारा बनाए रखा जाता है। इनमें से कोई भी प्रोग्राम फ़ाइल बनाता है, इसलिए यदि इसे हटा दिया गया है, तो रिकॉर्ड-रखरखाव बंद है।