Linux कमांड - wtmp जाणून घ्या

नाव

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

सारांश

#include

वर्णन

Utmp फाइल सध्या प्रणालीचा वापर करत आहे त्याबद्दल माहिती शोधण्यास परवानगी देते. सध्या प्रणाली वापरणारे अधिक वापरकर्ते असू शकतात, कारण सर्व प्रोग्राम्स utmp लॉगिंग वापरत नाहीत.

सावधान: utmp लेखनजोगी नाही, कारण बहुतांश प्रणाली कार्यक्रम (मूर्खता) त्याच्या एकाग्रतावर विसंबून आहे. आपण कोणत्याही वापरकर्त्यासाठी utmp लेखनयोग्य सोडल्यास आपण फाइल्सच्या सिस्टम लॉगफाइल आणि सिस्टिम फायलींचे बदल धोक्यात आणत आहात.

फाईल समाविष्ट केलेल्या फाईलमध्ये घोषित खालील रचनासह प्रविष्ट केलेल्या नोंदींचा क्रम आहे (लक्षात घ्या की हे केवळ विविध परिभाषांपैकी एक आहे; तपशील लिबसीच्या आवृत्तीवर अवलंबून आहे):

#define UT_UNKNOWN 0 #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 #define UT_LINESIZE 12 # परिभाषित UT_NAMESIZE 32 # परिभाषित UT_HOSTSIZE 256 संरचना exit_status {लहान पूर्णांक समाप्त; / * प्रक्रिया संपुष्टात येण्याची स्थिती. * / लहान पूर्णांक e_exit; / * प्रक्रिया बाहेर पडायची स्थिती. * /}; struct utmp {short ut_type; / * प्रकारचे लॉगिन * / pid_t ut_pid; / * लॉग इन प्रक्रियेचा * / char ut_line [UT_LINESIZE]; / * tty चा साधन नाव - "/ dev /" * / char ut_id [4]; / * init id किंवा abbrev. ttyname * / चार यूट_यूसर [UT_NAMESIZE]; / * वापरकर्ता नाव * / चार यूट_होस्ट [UT_HOSTSIZE]; दूरस्थ लॉगिनसाठी / * होस्टनाव * / struct exit_status ut_exit; / * DEAD_PROCESS म्हणून चिन्हांकित प्रक्रियेची निर्गमन स्थिती. * / लांब ut_session; / * सत्र ID, विंडोिंगसाठी वापरले * / struct वेळेत ut_tv; / * वेळ नोंद केली. * / int32_t ut_addr_v6 [4]; / * दूरस्थ होस्टचा IP पत्ता. * / चार पॅड [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' द्वारे बंद केल्या जातात जर ते फील्डच्या आकारापेक्षा लहान असतील.

प्रथम नोंदींमध्ये init (8) प्रोसेसिंग इनित्बब (5) मधील परिणाम तयार झाला. नोंद सुरू करण्यापूर्वी, init (8) ut_type ut_type ला DEAD_PROCESS सेट करून, ut_user , ut_host , आणि ut_time ला रिकव्ह बाइटसह प्रत्येक रेकॉर्डसाठी जो ut_type ही DEAD_PROCESS किंवा RUN_LVL नाही आणि जेथे पीआयडी ut_pid अस्तित्वात नाही तेथे प्रक्रिया नाही. आवश्यक ut_id सह रिक्त रेकॉर्ड आढळल्यास, init नविन बनवते. हे ut_id ला inittab, ut_pid आणि ut_time पासून वर्तमान मूल्यांकरीता, आणि ut_type INIT_PROCESS येथे सेट करते .

getty (8) pid द्वारे प्रविष्टे शोधते, LOGIN_PROCESS वर बदलणारे ut_type , ut_time बदलते, ut_line सेट करते आणि कनेक्शनची स्थापना करण्यासाठी प्रतिक्षा करतो. लॉगिन (8), वापरकर्ता प्रमाणीकृत झाल्यानंतर, USER_PROCESS चे ut_type बदलते, बदलते ut_time , आणि ut_host आणि ut_addr सेट करते. Getty (8) आणि लॉगीन (8) वर अवलंबून, रेकॉर्ड वापरण्यायोग्य ut_pid ऐवजी ut_line द्वारे शोधले जाऊ शकतात.

जेव्हा init (8) आढळते की प्रोसेस बाहेर पडले, तेव्हा ut_pid द्वारे त्याचे utmp नोंदणी शोधते, DE_AD_PROCESS करीता ut_type सेट करते, आणि null bytes ut_user , ut_host आणि ut_time रिकामी करते.

xterm (1) आणि इतर टर्मिनल अनुकरणकर्ते थेट USER_PROCESS रेकॉर्ड तयार करतात आणि / dev / ttyp % c चे शेवटचे दोन अक्षरे वापरून / / % d चा / dev / pts / % d वापरुन ut_id व्युत्पन्न करतात. जर त्यांना या आयडीसाठी DEAD_PROCESS सापडले तर त्यांनी ते पुनर्चक्रण केले, अन्यथा ते नवीन नोंद तयार करतील. ते शक्य असल्यास, ते निर्गमन म्हणून ते DEAD_PROCESS म्हणून चिन्हांकित करतील आणि त्यांना सल्ला देण्यात येतो की ते ut_line , ut_time , ut_user , आणि ut_host सारख्या निरर्थक आहेत.

xdm (8) एक utmp रेकॉर्ड तयार करू नये, कारण तेथे नियुक्त टर्मिनल नाही. यास तयार करण्यामुळे त्रुटी उद्भवतील, जसे की 'बोटर: stat /dev/machine.dom' शकत नाही. तो wtmp नोंदी तयार करणे आवश्यक आहे, तरीही, जसे की ftpd (8) करते.

टेलनेट डीडी (8) एक LOGIN_PROCESS प्रविष्ट करणे सेट करते आणि उर्वरित लॉगिनसाठी (8) नेहमीप्रमाणे सोडते. टेलनेटचे सत्र समाप्त झाल्यानंतर, telnetd (8) utmp ला वर्णित मार्गाने साफ करते.

Wtmp फाइल सर्व नोंदी आणि लॉगआउटचे रेकॉर्ड करते. याचे स्वरूप म्हणजे utmp सारखेच आहे परंतु शून्य वापरकर्ता नाव संबंधित टर्मिनलवर लॉगआउट दर्शवितात. याव्यतिरिक्त, वापरकर्त्याचे नाव "बंद" किंवा "रिबूट" असे टर्मिनल नाव " shutdown" किंवा रिबूट दर्शवितो आणि टर्मिनल नावांची जोड "|" / "}" जुन्या / नवीन प्रणालीची वेळ नोंदविते जेव्हा तारीख (1) यात बदल होईल wtmp लॉगिन (1), init (1) आणि getty (1) च्या काही आवृत्त्यांनुसार चालू आहे. यापैकी कुठलेही प्रोग्राम फाइल तयार करत नाही, त्यामुळे ते काढून टाकले असल्यास, रेकॉर्ड ठेवण्याचे बंद केले आहे.