ال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 # تعريف USER_PROCESS 7 #define DEAD_PROCESS 8 # تعريف الحساب 9 # تعريف UT_LINESIZE 12 # تعريف UT_NAMESIZE 32 # تعريف UT_HOSTSIZE 256 struct exit_status {short int e_thmination؛ / * حالة إنهاء العملية. * / قصير int e_exit؛ / * معالجة حالة الخروج. * /}؛ struct utmp {short ut_type؛ / * type of login * / pid_t ut_pid؛ / * pid لعملية تسجيل الدخول * / char ut_line UT_LINESIZE؛ / * device name of tty - "/ dev /" * / char ut_id 4؛ / * id id أو abbrev. ttyname * / char ut_user UT_NAMESIZE؛ / * اسم المستخدم * / char ut_host UT_HOSTSIZE؛ / * اسم المضيف لتسجيل الدخول عن بعد * / struct exit_status ut_exit؛ / * حالة الخروج لعملية وضعت عليها علامة DEAD_PROCESS. * / ut_session طويل / * معرف جلسة العمل ، المستخدم للنوافذ * / struct timeval ut_tv؛ / * تم إدخال الوقت. * / int32_t ut_addr_v6 4؛ / * عنوان IP للمضيف البعيد. * / char pad 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). يتم إنهاء حقول السلسلة بواسطة' ' إذا كانت أقصر من حجم الحقل.
المدخلات الأولى التي تم إنشاؤها من أي وقت مضى نتيجة فيه (8) المعالجة inittab (5). قبل معالجة أي إدخال ، فيه (8) ينظف utmp عن طريق الإعدادut_type إلىDEAD_PROCESS، المقاصةut_user, ut_hostوut_time مع البايتات فارغة لكل سجلut_type ليسDEAD_PROCESS أوRUN_LVL وحيث لا توجد عملية مع PIDut_pid موجود. إذا لم يكن هناك سجل فارغ مع الحاجةut_id يمكن العثور على ، إنشاء واحد جديد. يحددut_id من inittab ،ut_pid وut_time إلى القيم الحالية ، وut_type إلىINIT_PROCESS.
جيتي (8) يحدد موقع الإدخال بواسطة pid ، التغييراتut_type إلىLOGIN_PROCESSوالتغييراتut_time، موعاتut_line، وينتظر أن يتم تأسيس الاتصال. تسجيل الدخول (8) ، بعد أن تم توثيق المستخدم ، التغييراتut_type إلىUSER_PROCESSوالتغييراتut_time، ويضعut_host وut_addr. اعتمادا علي جيتي (8) و تسجيل الدخول (8) ، قد تكون السجلات موجودةut_line بدلا من الأفضلut_pid.
متى فيه (8) يجد أن عملية قد خرجت ، فإنه يحدد موقع مدخل utmp بهاut_pid، موعاتut_type إلىDEAD_PROCESS، ويزيلut_user, ut_host وut_time مع البايتات فارغة.
تيرم (1) وغيرها من المحاكيات الطرفية مباشرة إنشاءUSER_PROCESS سجل وتوليدut_id باستخدام الحرفين الأخيرين من/ ديف / ttyp ج٪ أو باستخدامص ٪د إلى عن على/ ديف / نقطة / ٪د . إذا وجدواDEAD_PROCESS بالنسبة إلى هذا المعرّف ، يعيدون تدويره ، وإلا فسيخلقون إدخالًا جديدًا. إذا استطاعوا ذلك ، فسيشيرون إلى أنهDEAD_PROCESS على الخروج ، وينصح بأنهم لاغية ut_line,ut_time, ut_userوut_host كذلك.
xdm (8) لا ينبغي إنشاء سجل utmp ، لأنه لا يوجد محطة محددة. سيؤدي تركه لإنشاء واحد إلى حدوث أخطاء ، مثل "finger: لا يمكن stat /dev/machine.dom". يجب إنشاء إدخالات wtmp ، على الرغم من ، مثل فقط فتب (8) يفعل.
telnetd (8) يضعLOGIN_PROCESS دخول وترك الباقي ل تسجيل الدخول (8) كالمعتاد. بعد انتهاء جلسة Telnet ، telnetd (8) ينظف utmp في الطريقة الموصوفة.
الwtmp ملف يسجل كل تسجيلات الدخول والخروج. شكله هو بالضبط مثلutmp باستثناء أن اسم مستخدم فارغ يشير إلى الخروج على المحطة الطرفية المرتبطة. علاوة على ذلك ، اسم المحطة'~'مع اسم المستخدم"اغلق" أو"اعادة التشغيل" يشير إلى إيقاف تشغيل النظام أو إعادة التشغيل واثنين من أسماء المحطة الطرفية'|'/'}' يسجل وقت النظام القديم / الجديد عندما تاريخ (1) يغيرها.wtmp يتم الاحتفاظ بها من قبل تسجيل الدخول (1), فيه (1) ، وبعض إصدارات جيتي (1). لا ينشئ أي من هذه البرامج الملف ، لذلك إذا تمت إزالته ، يتم إيقاف حفظ السجلات.




