οutmp αρχείο επιτρέπει σε κάποιον να ανακαλύψει πληροφορίες σχετικά με το ποιος χρησιμοποιεί αυτήν τη στιγμή το σύστημα. Ενδέχεται να υπάρχουν περισσότεροι χρήστες που χρησιμοποιούν το σύστημα αυτήν τη στιγμή, επειδή δεν χρησιμοποιούν όλα τα προγράμματα utmp καταγραφής.
Προειδοποίηση: utmp δεν πρέπει να είναι εγγράψιμο, επειδή πολλά προγράμματα του συστήματος (ανόητα) εξαρτώνται από την ακεραιότητά του. Διακινδυνεύετε τα πλαστά αρχεία καταγραφής του συστήματος και τις τροποποιήσεις των αρχείων συστήματος, αν φύγετεutmpεγγράψιμο σε οποιονδήποτε χρήστη.
Το αρχείο είναι μια ακολουθία εγγραφών με την ακόλουθη δομή που δηλώνεται στο αρχείο include (σημειώστε ότι αυτό είναι μόνο ένας από τους πολλούς ορισμούς γύρω, οι λεπτομέρειες εξαρτώνται από την έκδοση του libc):
#define UT_UNKNOWN 0 #define RUN_LVL 1 #define BOOT_TIME 2 #define NEW_TIME 3 #καθορισμός OLD_TIME 3 #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; / * κατάσταση τερματισμού διαδικασίας. * / σύντομη int e_exit; / * κατάσταση εξόδου διεργασίας. * /}. struct utmp {short 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. * / long 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 με μηδενικά bytes για κάθε εγγραφή πουut_type δεν είναιDEAD_PROCESS ήRUN_LVL και όπου δεν υπάρχει διαδικασία με PIDut_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, και περιμένει την σύνδεση. Σύνδεση (8), μετά την επαλήθευση ενός χρήστη, αλλάζειut_type προς τοUSER_PROCESS, αλλαγέςut_time, και ορίζειut_host καιut_addr. Εξαρτάται από getty (8) και Σύνδεση (8), τα αρχεία μπορούν να εντοπιστούν από τοut_line αντί των προτιμώμενωνut_pid.
Πότε μέσα σε αυτό (8) διαπιστώνει ότι μια διαδικασία έχει εξέλθει, εντοπίζει την καταχώρησή τηςut_pid, σκηνικάut_type προς τοDEAD_PROCESS, και καθαρίζειut_user, ut_host καιut_time με μηδενικά byte.
xterm (1) και άλλοι εξομοιωτές τερματικών δημιουργούν άμεσα έναUSER_PROCESS καταγραφή και δημιουργία τουut_id χρησιμοποιώντας τα δύο τελευταία γράμματα του/ dev / ttyp %ντο ή με τη χρήσηΠ %ρε Για/ dev / pts / %ρε . Αν βρουν έναDEAD_PROCESS για αυτό το id, την ανακυκλώνουν, διαφορετικά δημιουργούν μια νέα καταχώρηση. Αν μπορούν, θα το επισημάνουνDEAD_PROCESS στην έξοδο και συνιστάται να μηδενίζονται ut_line,ut_time, ut_user, καιut_host επισης.
xdm (8) δεν θα πρέπει να δημιουργήσει μια εγγραφή utmp, επειδή δεν υπάρχει καθορισμένος τερματικός σταθμός. Το να το δημιουργήσετε θα οδηγήσει σε σφάλματα, όπως το 'finger: can not stat /dev/machine.dom'. Θα πρέπει να δημιουργήσει καταχωρήσεις wtmp, όμως, ακριβώς όπως ftpd (8).
telnetd (8) δημιουργεί αLOGIN_PROCESS εισόδου και αφήνει τα υπόλοιπα Σύνδεση (8) ως συνήθως. Μετά την ολοκλήρωση της περιόδου σύνδεσης telnet, telnetd (8) καθαρίζει το utmp με τον περιγραφόμενο τρόπο.
οwtmp αρχείο καταγράφει όλες τις συνδέσεις και τα αποσυνδεδεμένα αρχεία. Η μορφή του είναι ακριβώς όπωςutmp εκτός από το ότι ένα μηδενικό όνομα χρήστη υποδεικνύει μια σύνδεση στο σχετικό τερματικό. Επιπλέον, το όνομα του τερματικού'~'με όνομα χρήστη"ΤΕΡΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΑΣ" ή"επανεκκίνηση" υποδηλώνει διακοπή συστήματος ή επανεκκίνηση του συστήματος και το όνομα ζεύγους τερματικών'|'/'}' καταγράφει τον παλαιό / νέο χρόνο συστήματος όταν ημερομηνία (1) αλλάζει.wtmp διατηρείται από Σύνδεση (1), μέσα σε αυτό (1) και μερικές εκδόσεις του getty (1). Κανένα από αυτά τα προγράμματα δεν δημιουργεί το αρχείο, οπότε αν καταργηθεί, η εγγραφή είναι απενεργοποιημένη.




