ຮຽນຮູ້ Linux Command - wtmp

ຊື່

utmp, wtmp - ບັນທຶກການເຂົ້າສູ່ລະບົບ

Synopsis

#include

ລາຍລະອຽດ

ໄຟລ໌ utmp ອະນຸຍາດໃຫ້ຫນຶ່ງໃນການຄົ້ນພົບຂໍ້ມູນກ່ຽວກັບຜູ້ທີ່ກໍາລັງໃຊ້ລະບົບ. ອາດຈະມີຜູ້ໃຊ້ຫຼາຍຂື້ນໃນປັດຈຸບັນໂດຍໃຊ້ລະບົບ, ເນື່ອງຈາກວ່າບໍ່ແມ່ນ ໂປລແກລມ ທັງຫມົດທີ່ໃຊ້ utging logging.

ຄໍາເຕືອນ: utmp ບໍ່ຄວນຈະຂຽນໄດ້, ເພາະວ່າໂຄງການລະບົບຫຼາຍໆຄົນ (ໂງ່) ແມ່ນຂຶ້ນກັບຄວາມຊື່ສັດຂອງມັນ. ທ່ານມີຄວາມສ່ຽງຕໍ່ລະບົບບັນທຶກແຟັກແລະການດັດແປງໄຟລ໌ລະບົບຖ້າທ່ານອອກຈາກ utmp ທີ່ ສາມາດຂຽນໄດ້ກັບຜູ້ໃຊ້ໃດໆ.

ໄຟລ໌ແມ່ນລໍາດັບຂອງບົດລາຍງານທີ່ມີໂຄງສ້າງຕໍ່ໄປນີ້ປະກາດໃນໄຟລ໌ປະກອບ (ສັງເກດວ່ານີ້ແມ່ນພຽງແຕ່ຫນຶ່ງໃນຄໍານິຍາມທີ່ແຕກຕ່າງກັນ, ລາຍະລະອຽດແມ່ນຂຶ້ນຢູ່ກັບສະບັບຂອງ libc):

#define UCUNKNOWN 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_termination / * ສະຖານະການສິ້ນສຸດຂະບວນການ. * / short int e_exit / * process exit status * /} struct utmp {short ut_type / * type of login * / 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] / * hostname ສໍາຫລັບການເຂົ້າສູ່ລະບົບແບບໄລຍະໄກ * / struct exit_status ut_exit / * ສະຖານະການອອກຂອງຂະບວນການທີ່ຫມາຍເປັນ DEAD_PROCESS. * / long ut_session / * session ID, ໃຊ້ສໍາຫລັບ windowing * / struct timeval ut_tv / * ທີ່ໃຊ້ເວລາເຂົ້າມາ. * / int32_t ut_addr_v6 [4] / * ທີ່ຢູ່ IP ຂອງໂຮດໄລຍະໄກ. * / char pad [20] / * ສໍາລັບການນໍາໃຊ້ໃນອະນາຄົດ. * /} / * Back hacks compatibility. * / #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' ຖ້າພວກເຂົາສັ້ນກວ່າຂະຫນາດຂອງພາກສະຫນາມ.

ການຂຽນທໍາອິດທີ່ເຄີຍສ້າງຂື້ນມາຈາກການປະຕິບັດການ in (8) inittab (5). ກ່ອນທີ່ຈະເອົາຂໍ້ມູນເຂົ້າໃນການປະມວນຜົນ, init (8) ລ້າງ utmp ໂດຍກໍານົດ ut_type ກັບ DEAD_PROCESS , clearing 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 ກັບ INIT_PROCESS .

getty (8) ກໍານົດການເຂົ້າໂດຍ pid, ປ່ຽນ ut_type ກັບ LOGIN_PROCESS , ປ່ຽນ ut_time , ຕັ້ງ ut_line , ແລະ waits ສໍາລັບການເຊື່ອມຕໍ່ທີ່ຈະຖືກສ້າງຕັ້ງຂຶ້ນ. ເຂົ້າສູ່ລະບົບ (8), ຫຼັງຈາກທີ່ຜູ້ໃຊ້ໄດ້ຮັບການຢືນຢັນແລ້ວ, ປ່ຽນ ut_type ກັບ USER_PROCESS , ປ່ຽນ ut_time , ແລະຕັ້ງ ut_host ແລະ ut_addr . ຂຶ້ນຢູ່ກັບ getty (8) ແລະ ເຂົ້າສູ່ລະບົບ (8), ບັນທຶກສາມາດຕັ້ງຢູ່ໃນ ut_line ແທນ ut_pid ທີ່ເຫມາະສົມ.

ໃນເວລາທີ່ init (8) ເຫັນວ່າຂະບວນການໄດ້ອອກມາ, ມັນກໍານົດການນໍາໃຊ້ utmp ໂດຍ ut_pid , ກໍານົດ ut_type ກັບ DEAD_PROCESS , ແລະ clears ut_user , ut_host ແລະ ut_time ກັບ null bytes.

xterm (1) ແລະຕົວສະກົດຕົວ ຍ່ອຍ ອື່ນໆໂດຍກົງສ້າງບັນທຶກ USER_PROCESS ແລະສ້າງ ut_id ໂດຍໃຊ້ສອງຕົວອັກສອນສຸດທ້າຍຂອງ / dev / ttyp % c ຫຼືໃຊ້ p % d ສໍາລັບ / dev / pts / % d . ຖ້າພວກເຂົາພົບ DEAD_PROCESS ສໍາລັບ id ນີ້, ພວກເຂົາຈະນໍາໃຊ້ມັນ, ຖ້າບໍ່ດັ່ງນັ້ນພວກເຂົາຈະສ້າງລາຍການໃຫມ່. ຖ້າພວກເຂົາສາມາດເຮັດໄດ້, ພວກເຂົາຈະຫມາຍມັນເປັນ DEAD_PROCESS ໃນເວລາອອກແລະແນະນໍາວ່າພວກເຂົາ null ut_line , ut_time , ut_user ແລະ ut_host ເຊັ່ນກັນ.

xdm (8) ບໍ່ຄວນສ້າງບັນທຶກ utmp, ເນື່ອງຈາກບໍ່ມີການຕັ້ງຄ່າ terminal. ໃຫ້ມັນສ້າງຫນຶ່ງຈະເຮັດໃຫ້ເກີດຄວາມຜິດພາດ, ເຊັ່ນ: 'ນິ້ວມື: ບໍ່ສາມາດ stat /dev/machine.dom'. ມັນຄວນສ້າງລາຍການ wtmp, ແຕ່, ຄືກັນກັບ ftpd (8) ບໍ່.

telnetd (8) ຕັ້ງຄ່າ LOGIN_PROCESS ແລະປ່ອຍສ່ວນທີ່ເຫຼືອ ເຂົ້າສູ່ລະບົບ (8) ຕາມປົກກະຕິ. ຫຼັງຈາກສິ້ນສຸດກອງປະຊຸມ telnet, telnetd (8) ເຮັດຄວາມສະອາດ utmp ໃນວິທີທີ່ອະທິບາຍ.

ໄຟລ໌ wtmp ບັນທຶກການເຂົ້າສູ່ລະບົບທັງຫມົດແລະ logouts. ຮູບແບບຂອງມັນແມ່ນຄ້າຍຄື utmp ຍົກເວັ້ນວ່າຊື່ຜູ້ໃຊ້ທີ່ບໍ່ຖືກຕ້ອງສະແດງເຖິງການອອກໃບຢັ້ງຢືນຢູ່ທີ່ປາຍທີ່ກ່ຽວຂ້ອງ. ນອກຈາກນັ້ນ, ຊື່ທີ່ຢູ່ "~" ກັບຊື່ຜູ້ໃຊ້ "shutdown" ຫຼື "reboot" ສະແດງໃຫ້ເຫັນວ່າການປິດລະບົບຫຼື reboot ແລະຄູ່ຊື່ "|" / "}" ບັນທຶກເວລາລະບົບເກົ່າ / ໃຫມ່ເມື່ອ ວັນທີ (1) ປ່ຽນມັນ. wtmp ຖືກຮັກສາໄວ້ໂດຍ ເຂົ້າສູ່ລະບົບ (1), init (1), ແລະບາງສະບັບຂອງ getty (1). ບໍ່ມີບັນດາໂຄງການເຫຼົ່ານີ້ສ້າງ ໄຟລ໌ , ດັ່ງນັ້ນຖ້າມັນຖືກລຶບອອກ, ການບັນທຶກການບັນທຶກຈະຖືກປິດ.