ലിനക്സ് കമാൻഡ് പഠിക്കുക - wtmp

പേര്

utmp, wtmp - ലോഗിൻ റെക്കോർഡുകൾ

സംഗ്രഹം

# ഉള്പ്പെടുത്തുക

വിവരണം

നിലവിൽ ആർക്ക് സിസ്റ്റം ഉപയോഗിയ്ക്കുന്നു എന്നതിനെപ്പറ്റിയുള്ള വിവരങ്ങൾ കണ്ടുപിടിക്കാൻ utmp ഫയൽ അനുവദിക്കുന്നു. നിലവിൽ സിസ്റ്റത്തെ കൂടുതൽ ഉപയോക്താക്കൾ ഉപയോഗിയ്ക്കാം, കാരണം എല്ലാ പ്രോഗ്രാമുകളും utmp logging ഉപയോഗിക്കുന്നതല്ല.

മുന്നറിയിപ്പ്: utmp എഴുതാൻ പാടില്ല, കാരണം പല സിസ്റ്റം പ്രോഗ്രാമുകളും (മണ്ടത്തരം) അതിന്റെ വിശ്വാസ്യതയെ ആശ്രയിച്ചിരിക്കുന്നു. നിങ്ങൾ ഏതു ഉപയോക്താവിനും UMMP റൈറ്റ് ചെയ്യാവുന്നതാണോയെന്ന് നിങ്ങൾ സിസ്റ്റം ഫയലുകൾ തടയുന്ന ഫിഗ് ചെയ്ത സിസ്റ്റം ലോഗ് ഫയലുകളും റിവിഷനുകളും റിസ്ക് ചെയ്യും.

ഫയൽ ഉൾപ്പെടുത്തിയിട്ടുള്ള ഘടനയിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഘടനയാണ് ഫയൽ (ഇത് ചുറ്റും നിരവധി നിർവ്വചനങ്ങൾ മാത്രമേയുള്ളൂ; വിശദാംശങ്ങൾ libc പതിപ്പിനെ ആശ്രയിച്ചിരിക്കുന്നു):

UT_UNKNOWN 0 # നിർവ്വചിക്കുക RUN_LVL 1 # #DOFIND # 2 #OD_TIME # # നിർദ്ദിഷ്ട OLD_TIME നിർവ്വചിക്കുക 4 # ININT_PROCESS # # നിർവ്വഹിക്കുക LOGIN_PROCESS 6 # നിർവ്വചിക്കുക USER_PROCESS 7 # DEAD_PROCESS 8 # നിർവ്വചിക്കുക # # UT_LINESIZE 12 # നിർദ്ദിഷ്ട UT_NAMESESE 32 # ഡീഫൈൻ നിർവ്വചിക്കുക UT_HOSTSIZE 256 struct exit_status {ഹൃസ്വ int e_termination; / * പ്രക്രിയ അവസാനിക്കൽ സ്ഥിതി. * / ഹ്രസ്വചിഹ് 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 * / char ut_user [UT_NAMESIZE]; / * ഉപയോക്തൃ നാമം * / char ut_host [UT_HOSTSIZE]; / * റിമോട്ട് പ്രവേശനത്തിനായി ഹോസ്റ്റ് നെയിം * / struct exit_status ut_exit; / * DEAD_PROCESS എന്ന പേരിൽ അടയാളപ്പെടുത്തിയ ഒരു പ്രോസസിന്റെ എക്സിറ്റ് നില. * / long ut_session; / * സെഷൻ ഐഡി, * / struct സമയത്തിന്റെ ut_tv തുറക്കാനായി ഉപയോഗിക്കുന്നു; / * സമയ എൻട്രി ചെയ്തു. * / int32_t ut_addr_v6 [4]; / * റിമോട്ട് ഹോസ്റ്റിന്റെ ഐപി വിലാസം. * / ചക്രം പാഡ് [20]; / * ഭാവിയിലെ ഉപയോഗത്തിനായി കരുതി വച്ചിരിക്കുന്നു. * /}; / * ബാക്ക്വേർഡ് കോംപാറ്റിബിളിറ്റി ഹാക്കുകൾ. ut_name ut_user #ifndef _NO_UT_TIME # ut_time ut_tv.tv_sec #endfine ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6 ഉപയോഗിയ്ക്കുക [0]

ഈ ഘടന ഉപയോക്താവിന്റെ ടെർമിനലുമായി ബന്ധപ്പെട്ട ഒരു പ്രത്യേക ഫയൽ, ഉപയോക്താവിന്റെ ലോഗിൻ നാമം, സമയം രൂപത്തിൽ (2) പ്രവേശന സമയം എന്നിവ നൽകും . ഫീൽഡിന്റെ വലുപ്പത്തേക്കാൾ കുറവാണെങ്കിൽ സ്ട്രിംഗ് ഫീൽഡുകൾ '\ 0' അവസാനിപ്പിക്കുകയാണ്.

Init (8) പ്രോസസ്സിംഗ് inittab (5) ൽ നിന്ന് ആദ്യ എൻട്രികൾ സൃഷ്ടിച്ചത്. ഒരു എൻട്രി പ്രോസസ്സ് ചെയ്യുന്നതിനു മുൻപ്, init (8), ut_type DEAD_PROCESS അല്ലെങ്കിൽ RUN_LVL അല്ല , കൂടാതെ PID ut_pid ഉള്ള പ്രോസസ് ഇല്ലാത്ത ഓരോ റെക്കോഡിനും ഒരു ഡീബേസ് , ഡീഡ്_ഒഎസ്ആർറോ , ut_host , ഉം __സമയം ക്ലിയർ ചെയ്യുക വഴി ut_pst ആയി ക്യൂട്ട് ചെയ്യുന്നു. ആവശ്യമുള്ള ut_id ഉള്ള വ്യത്യാസമില്ലാതെ ഒരു റെക്കോഡ് ഇല്ലെങ്കിൽ, init പുതിയൊരു ക്രിയ സൃഷ്ടിക്കുന്നു. ഇത് initab , ut_pid , ut_time എന്നീ നിലവിലെ മൂല്യങ്ങളിലേക്കും ut_type നിന്നും INIT_PROCESS ലേക്കും ut_id സജ്ജീകരിച്ചിരിക്കുന്നു .

getty (8) pid വഴി പ്രവേശനം കണ്ടെത്തുന്നു, LO__PROCESS ലേക്ക് U_type മാറ്റുന്നു, changes ut_time , സജ്ജമാക്കുന്നു ut_line , കൂടാതെ സ്ഥാപിക്കുന്നതിനുള്ള കണക്കിനായി കാത്തിരിക്കുന്നു. ലോഗിൻ (8), ഒരു ഉപയോക്താവിനെ ആധികാരികമാക്കിയ ശേഷം, USER_PROCESS- ലേക്ക് മാറ്റി _ __ ഉപയോഗിക്കുക , ut_time , കൂടാതെ ut_host ഉം ut_addr ഉം സജ്ജമാക്കുന്നു. ഗൗരവം (8), ലോഗിൻ (8) എന്നിവയെ ആശ്രയിച്ച്, ഉചിതമായ ut_pid നു പകരം ഉദ്ധരണികൾ ut_line ആയിരിക്കും .

Init (8) ഒരു പ്രക്രിയ അവസാനിച്ചതായി കണ്ടുപിടിക്കുമ്പോൾ, അതിന്റെ utmp എൻട്രിയെ ut_pid വഴി കണ്ടുപിടിക്കുന്നു , ut_type ലേക്ക് DEAD_PROCESS സജ്ജമാക്കുന്നു, ഒപ്പം ut_user , ut_host , ut_time നൾ ബൈറ്റുകൾ ഉപയോഗിച്ച് അവയെ ക്ലിയർ ചെയ്യുന്നു.

xterm (1), മറ്റ് ടെർമിനൽ എമുലേറ്ററുകൾ നേരിട്ട് ഒരു USER_PROCESS റെക്കോർഡ് സൃഷ്ടിക്കുകയും / dev / ttyp % c ന്റെ അവസാനത്തെ രണ്ട് അക്ഷരങ്ങൾ ഉപയോഗിച്ച് അല്ലെങ്കിൽ / dev / pts / % dp % d ഉപയോഗിച്ചുകൊണ്ടുള്ള ut_id സൃഷ്ടിക്കുക . ഈ ഐഡിക്ക് DEAD_PROCESS അവർ കണ്ടെത്തിയാൽ, അവർ അത് റീസൈക്കിൾ ചെയ്യുന്നു, അല്ലെങ്കിൽ അവർ ഒരു പുതിയ എൻട്രി സൃഷ്ടിക്കുന്നു. അവർക്ക് കഴിയുമോ, DEAD_PROCESS ആയി അത് പുറത്തുകടക്കുമ്പോൾ അടയാളപ്പെടുത്തും, മാത്രമല്ല അവ അവർക്ക് ഉപേലു , ലൈൻ , ടൈം , യൂസർ , എന്റർ_ഹോസ്റ്റ് എന്നിവയും നൽകണം .

xdm (8) ഉൽപാപ് റെക്കോഡും ഉണ്ടാക്കരുതു്, കാരണം നൽകിയിട്ടുളള ടെർമിനൽ ലഭ്യമല്ല. ഇത് സൃഷ്ടിക്കുന്നത് അനുവദിക്കുന്നത് വിരലുകൊണ്ടുള്ള തെറ്റുകൾക്ക് കാരണമാക്കും, ഉദാഹരണം: /dev/machine.dom സ്റ്റേറ്റ് സ്റ്റാറ്റിന് കഴിയില്ല. ഇത് ftpd (8) പോലെയുള്ള wtmp എൻട്രികൾ ഉണ്ടാക്കണം.

telnetd (8) ഒരു LOGIN_PROCESS പ്രവേശനം സജ്ജീകരിച്ചു ബാക്കി പതിവുപോലെ പ്രവേശിച്ച് (8) സാധാരണപോലെ. ടെൽനെറ്റ് സെഷൻ അവസാനിച്ചതിനു ശേഷം telnetd (8) വിവരിച്ചുപറഞ്ഞ രീതിയിൽ utmp വൃത്തിയാക്കുന്നു.

Wtmp ഫയല് എല്ലാ ലോഗിനുകളും ലോഗൗട്ടുകളും രേഖപ്പെടുത്തിയിട്ടുണ്ട്. അതിന്റെ ഫോർമാറ്റ് കൃത്യമായി utmp പോലെ തന്നെയാണ്, പൂജ്യം യൂസർ നാമവും അനുബന്ധ ടെർമിനലിൽ ഒരു ലോഗ്ഔട്ട് സൂചിപ്പിക്കുന്നു. കൂടാതെ, ഉപയോക്തൃനാമം "shutdown" അല്ലെങ്കിൽ "റീബൂട്ട്" എന്ന പേരിൽ "~" ടെർമിനൽ പേര് ഒരു സിസ്റ്റം ഷട്ട്ഡൌൺ അല്ലെങ്കിൽ റീബൂട്ട് ചെയ്യുകയും, ടെർമിനൽ നാമങ്ങളുടെ ജോഡിയും സൂചിപ്പിയ്ക്കുന്നു. / "}" തീയതി (1) മാറ്റിയാൽ പഴയ / പുതിയ സിസ്റ്റം സമയം ലോഗ് ചെയ്യുന്നു. wtmp പ്രവേശിക്കുന്നത് (1), init (1), ചിലത് (1) ന്റെ പതിപ്പുകൾ. ഈ പ്രോഗ്രാമുകളൊന്നും ഫയലിനെ സൃഷ്ടിക്കുന്നില്ല, അതിനാൽ അത് നീക്കിയാൽ, റെക്കോർഡ് ചെയ്യൽ ഓഫാക്കിയിരിക്കുന്നു.