Learn Linux Command - wtmp

სახელი

utmp, wtmp - შესვლა ჩანაწერები

სინოფსისი

# შედის

აღწერა

Utmp ფაილი საშუალებას იძლევა აღმოაჩინოს ინფორმაცია, თუ ვინ იყენებს ამჟამად სისტემას. სისტემაში უფრო მეტი მომხმარებელი შეიძლება იყენებდეს სისტემას, რადგან ყველა პროგრამა არ იყენებს utgp logging- ს.

გაფრთხილება: არ უნდა იყოს ჩაწერადი, რადგან ბევრი სისტემის პროგრამები (სულელურად) დამოკიდებულია მის მთლიანობასთან. თქვენ რისკავს ყალბი სისტემა logfiles და მოდიფიკაცია სისტემის ფაილი თუ დატოვონ utmp writable ნებისმიერ მომხმარებელს.

ფაილი არის ჩანაწერების თანმიმდევრობა იმ ფაილში, რომელშიც მითითებულია შემდეგი სტრუქტურა (უნდა აღინიშნოს, რომ ეს არის მხოლოდ რამდენიმე განსაზღვრება, რომელიც დეტალურადაა დამოკიდებული libc- ს ვერსიაში):

# შეცვალეთ UT_UNKNOWN # # შეიტყვეთ BOOT_TV2 # განსაზღვრავს NEW_TIME 3 # განსაზღვრავს OLD_TIME 4 # განსაზღვრავს INIT_PROCESS 5 # LOGIN_PROCESS 6 # შეცვალოს USER_PROCESS 7 # განსაზღვრავს DEAD_PROCESS 8 # დეფინიცია 9 # განსაზღვრავს UT_LINESIZE 12 # განსაზღვრავს UT_NAMESESE 32 # განსაზღვრულ UT_HOSTSIZE 256 struct exit_status {მოკლე 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 id ან abbrev. ttyname * / char ut_user [UT_NAMESIZE]; / * მომხმარებლის სახელი * / char ut_host [UT_HOSTSIZE]; / * დისტანციური შესვლასთან დაკავშირებული მასპინძელი * / struct exit_status ut_exit; / * პროცესის გასვლის სტატუსი DEAD_PROCESS- ში. * / ხანგრძლივი ut_session; / * სესიის ID, რომელიც გამოიყენება windowing * / struct ვადებს ut_tv; / * დრო შესვლის გაკეთდა. * / int32_t ut_addr_v6 [4]; / * დისტანციური მასპინძლის IP მისამართი. * / char pad [20]; / * დაცულია მომავალი გამოყენებისათვის. * /}; / * Backwards თავსებადობა hacks. * / # განსაზღვრავს ut_name ut_user #ifndef _NO_UT_TIME # განსაზღვრავს ut_time ut_tv.tv_sec #endif # განსაზღვრა ut_xtime ut_tv.tv_sec # განსაზღვრავს ut_addr ut_addr_v6 [0]

ეს სტრუქტურა იძლევა მომხმარებლის ტერმინალთან ასოცირებული სპეციალური ფაილის სახელს, მომხმარებლის სახელითა და დროით შესვლას (2). სიმებიანი ველი შეწყდა "0" -ით, თუ ისინი უფრო მცირე ზომის სფეროში არიან.

პირველი ჩანაწერები წარმოიშვა შედეგად init (8) დამუშავება inittab (5). შესვლის პროცესის დაწყებამდე, თუმცა, init (8) ასუფთავებს ut_ppt- ის მიერ DEAD_PROCESS- ს , ut_user , ut_host და ut_time null bytes- ით ყოველი ჩანაწერისთვის, რომელიც ut_type არ არის DEAD_PROCESS ან RUN_LVL და სადაც არ არსებობს პროცესი PID ut_pid- თან . თუ არ არსებობს ცარიელი ჩანაწერი საჭირო ut_id- სთან ერთად, init ქმნის ახალს. ის განსაზღვრავს ut_id საწყისი inittab, ut_pid და ut_time მიმდინარე ღირებულებები და ut_type to INIT_PROCESS .

ჯდომა (8) იკავებს ჩანაწერის ჩანაწერს, შეიტანება ut_type LOGIN_PROCESS- ზე , ცვლილებებს ut_time- ს , აყენებს ut_line და ელოდება კავშირი. შესვლა (8), მომხმარებლის დამტკიცების შემდეგ , ut_type- ის შეცვლა USER_PROCESS- ში , ცვლილებების შევსებაზე და პარამეტრებს ut_host და ut_addr . გეტის (8) და შემოსვლის (8) დამოკიდებულების მიხედვით, ჩანაწერები შეიძლება განთავსდეს ut_pid- ის ნაცვლად ut_line- ის მიერ .

როდესაც init (8) აღმოაჩენს, რომ პროცესი გადის, იგი იყენებს ut_pid- ს მიერ utmp შესვლისას , ადგენს ut_type- ის DEAD_PROCESS- ს , და უშვებს ut_user , ut_host და ut_time null bytes.

xterm (1) და სხვა ტერმინალის emulators პირდაპირ ქმნის USER_PROCESS ჩანაწერს და გენერირება ut_id ბოლო ორი ასოების / dev / ttyp % c გამოყენებით ან p % d / dev / pts / % d . ამ ID- ისთვის DEAD_PROCESS- ის აღმოჩენის შემთხვევაში, ისინი იბრუნებენ მას, წინააღმდეგ შემთხვევაში ისინი ახალ ჩანაწერს ქმნიან. თუ ისინი შეძლებენ, ისინი გამოდიან DEAD_PROCESS- ის გასვლისას და ურჩია, რომ ისინი გაანგარიშებათ , რომ ისინი იყენებენ ut_line , ut_time , ut_user და ut_host- ს.

xdm (8) არ უნდა შექმნათ utmp ჩანაწერი, რადგან არ არის დანიშნული ტერმინალი. გამოვიყენოთ ერთი, გამოიწვევს შეცდომებს, როგორიცაა "თითი: არ შეიძლება stat /dev/machine.dom". მან უნდა შექმნას wtmp მასალა, თუმცა, ისევე როგორც ftpd (8) აკეთებს.

telnetd (8) ადგენს LOGIN_PROCESS ჩანაწერს და დატოვებს დანარჩენს (8) ჩვეულებრივ. მას შემდეგ, რაც telnet სხდომა დამთავრდა, telnetd (8) ასუფთავებს utmp აღწერილი გზა.

Wtmp ფაილი აგზავნის ყველა logins და logouts. მისი ფორმატი ზუსტად ისევე, როგორც utmp გარდა იმისა, რომ null მომხმარებლის სახელი მიუთითებს მოთავსება ასოცირებული ტერმინალში. უფრო მეტიც, ტერმინალის სახელი "~", რომელზეც "სახელი " "გამორთვა" ან "გადატვირთვა" მიუთითებს სისტემის გამორთვა ან გადატვირთვა და ტერმინალური ტერმინი "|" / "}" მოძველებულია ძველი / ახალი სისტემის დროს, როდესაც იგი შეცვლის თარიღს (1). wtmp ინახება login (1), init (1) და ზოგიერთი ვერსიის გეტის (1). არცერთი პროგრამა არ ქმნის ფაილს , ასე რომ, თუ წაშლილია, ჩაწერა გამორთულია.