រៀនពាក្យបញ្ជាលីនុច - wtmp

ឈ្មោះ

utmp, wtmp - កំណត់ត្រាចូល

សង្ខេប

#include

ការពិពណ៌នា

ឯកសារ utmp អនុញ្ញាតឱ្យនរណាម្នាក់ស្វែងរកព័ត៌មានអំពីអ្នកដែលកំពុងប្រើប្រព័ន្ធ។ មានអ្នកប្រើប្រាស់ច្រើនជាងបច្ចុប្បន្នកំពុងប្រើប្រព័ន្ធព្រោះមិនមែន កម្មវិធី ទាំងអស់ប្រើការចុះឈ្មោះ utmp ។

ការព្រមាន: utmp ត្រូវតែមិនអាចសរសេរបានទេពីព្រោះកម្មវិធីប្រព័ន្ធជាច្រើន (ល្ងង់ខ្លៅ) ពឹងផ្អែកលើភាពសុចរិតរបស់វា។ អ្នកប្រថុយប្រថុយក្លែងក្លាយឯកសារប្រព័ន្ធនិងការកែប្រែឯកសារប្រព័ន្ធប្រសិនបើអ្នកទុក 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 {short int e_mart; / * ស្ថានភាពបញ្ចប់ដំណើរការ។ * / short int e_exit; / * ដំណើរការស្ថានភាពចេញ។ * /}; រចនាសម្ព័ន្ធ utmp {short_type; / * ប្រភេទនៃការចូល * / pid_t ut_pid; / * pid នៃដំណើរការចូល * / char ut_line [UCLINESIZE]; / * ឈ្មោះឧបករណ៍របស់ 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; / * លេខសម្គាល់សម័យត្រូវបានប្រើសម្រាប់ windowing * / struct timeval ut_tv; / * ធាតុពេលវេលាត្រូវបានបង្កើតឡើង។ * / int32_t ut_addr_v6 [4]; / * អាសយដ្ឋាន IP របស់ម៉ាស៊ីនពីចម្ងាយ។ * / char pad [20]; / * បម្រុងទុកសម្រាប់ការប្រើនាពេលអនាគត។ * /}; / * ការថយក្រោយភាពឆបគ្នាការ Hack ។ * / #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' ប្រសិនបើវាខ្លីជាងទំហំនៃវាល។

ធាតុដំបូងដែលបង្កើតឡើងពីលទ្ធផលពី init init (8) ដំណើរការ inittab (5) ។ មុនពេលធាតុត្រូវបានដំណើរការទោះបីជា init (8) សម្អាត utmp ដោយកំណត់ ut_type ទៅ DEAD_PROCESS , ការ លុប ut_user , ut_host និង ut_time ដោយ null octets សម្រាប់កំណត់ត្រានីមួយដែល ut_type មិនមែន DEAD_PROCESSRUN_LVL និងកន្លែងដែលគ្មានដំណើរការជាមួយ PID ut_pid ។ ប្រសិនបើគ្មានកំណត់ត្រាទទេជាមួយ ut_id ដែលត្រូវការអាចរកបានទេ init បង្កើតថ្មី។ វាកំណត់ ut_id ពី inittab, ut_pid និង ut_time ទៅតម្លៃបច្ចុប្បន្ននិង type_type ទៅ INIT_PROCESS

getty (8) កំណត់ធាតុដោយ pid, ផ្លាស់ប្ដូរ ut_type ទៅ LOGIN_PROCESS , ផ្លាស់ប្ដូរ ut_time , កំណត់ ut_line និងរង់ចាំការភ្ជាប់ដែលត្រូវបង្កើត។ ចូល (8) បន្ទាប់ពីអ្នកប្រើត្រូវបានផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ, ការផ្លាស់ប្តូរ ut_type ទៅជា USER_PROCESS , ការផ្លាស់ប្តូរ ut_time និងកំណត់ ut_host និង ut_addr ។ អាស្រ័យលើ getty (8) និង login (8) ទិន្នន័យអាចត្រូវបានកំណត់ទីតាំងដោយ ut_line ជំនួសឱ្យ ut_pid ដែលចូលចិត្ត។

ពេល init (8) រកឃើញថាដំណើរការបានចេញវាកំណត់ធាតុ utmp របស់វាដោយ ut_pid កំណត់ ut_type ទៅ DEAD_PROCESS និងជម្រះ ut_user ut_host និង ut_time ដោយ null octets

xterm (1) និងវត្ថុត្រាប់តាមស្ថានីយផ្សេងបង្កើតទិន្នន័យ USER_PROCESS ដោយផ្ទាល់ហើយបង្កើត ut_id ដោយប្រើអក្សរពីរ / dev / ttyp % c ចុងក្រោយ ឬប្រើ p % d សម្រាប់ / dev / pts / % d ។ ប្រសិនបើពួកគេរកឃើញ DEAD_PROCESS សម្រាប់លេខសម្គាល់នេះពួកគេកែច្នៃវាវិញបើមិនដូច្នេះទេពួកគេនឹងបង្កើតធាតុថ្មី។ ប្រសិនបើពួកគេអាចធ្វើបានពួកគេនឹងសម្គាល់វាជា DEAD_PROCESS នៅពេលចាកចេញហើយវាត្រូវបានគេណែនាំថាពួកគេប្រើ null ut_line , ut_time , ut_user និង ut_host ផងដែរ។

xdm (8) មិនគួរបង្កើតកំណត់ត្រា utmp ទេពីព្រោះមិនមានស្ថានីយដែលបានកំណត់ទេ។ ការបង្កើតវានឹងបង្កឱ្យមានកំហុសដូចជា 'ម្រាមដៃ: មិនអាចធ្វើបដិសេដ /dev/machine.dom' ។ វាគួរតែបង្កើតធាតុ wtmp, ទោះបីជា, គ្រាន់តែដូចជា ftpd (8) ធ្វើ។

telnetd (8) បង្កើតធាតុ LOGIN_PROCESS ហើយទុកឱ្យសល់ ចូល (8) តាមធម្មតា។ បន្ទាប់ពីការបញ្ឈប់ telnet បញ្ចប់ telnetd (8) សម្អាតឧបករណ៍ប្រើប្រាស់នៅក្នុងវិធីដែលបានពិពណ៌នា។

ឯកសារ wtmp កត់ត្រាចូលទាំងអស់និង logouts ។ ទ្រង់ទ្រាយរបស់វាគឺស្រដៀងនឹង utmp ដែរ លើកលែងតែឈ្មោះអ្នកប្រើណាម្នាក់បង្ហាញការចេញនៅលើស្ថានីយដែលជាប់ទាក់ទង។ លើសពីនេះឈ្មោះស្ថានីយ "~" ជាមួយឈ្មោះអ្នកប្រើ "បិទ""ចាប់ផ្ដើមឡើងវិញ" បង្ហាញពីការបិទប្រព័ន្ធឬការចាប់ផ្ដើមឡើងវិញហើយឈ្មោះស្ថានីយ "|" / "}" កំណត់ពេលវេលាប្រព័ន្ធចាស់ / ថ្មីនៅពេល កាលបរិច្ឆេទ (1) ផ្លាស់ប្តូរវា។ wtmp ត្រូវបានរក្សាទុកដោយការ ចូល (1), init (1) និងកំណែមួយចំនួនរបស់ getty (1) ។ ទាំងកម្មវិធីទាំងនេះមិនបង្កើត ឯកសារ ទេដូច្នេះប្រសិនបើវាត្រូវបានយកចេញការរក្សាកំណត់ត្រាត្រូវបានបិទ។