Ονομα
utmp, wtmp - εγγραφές εγγραφής
Σύνοψη
#include
Περιγραφή
Το αρχείο 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). Τα πεδία των συμβολοσειρών τερματίζονται με '\ 0' αν είναι μικρότερα από το μέγεθος του πεδίου.
Οι πρώτες καταχωρήσεις που δημιουργήθηκαν έχουν προκύψει από την init (8) επεξεργασία inittab (5). Πριν επεξεργαστεί μια καταχώρηση, το init (8) καθαρίζει utmp ορίζοντας ut_type σε 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 στην INIT_PROCESS .
Το getty (8) εντοπίζει την καταχώρηση από το pid, αλλάζει ut_type σε LOGIN_PROCESS , αλλάζει ut_time , ορίζει ut_line και περιμένει να δημιουργηθεί σύνδεση. login (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 bytes.
Το xterm (1) και οι άλλοι εξομοιωτές τερματικών δημιουργούν άμεσα μια εγγραφή USER_PROCESS και δημιουργούν το ut_id χρησιμοποιώντας τα δύο τελευταία γράμματα του / dev / ttyp % c ή χρησιμοποιώντας το p % d για το / dev / pts / % d . Αν βρουν 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 εκτός από το ότι ένα μηδενικό όνομα χρήστη υποδεικνύει μια έξοδο στο σχετικό τερματικό. Επιπλέον, το όνομα του τερματικού "~" με όνομα χρήστη "shutdown" ή "reboot" υποδηλώνει διακοπή συστήματος ή επανεκκίνηση του συστήματος και το ζεύγος ονομάτων τερματικών "|" / "}" καταγράφει την παλαιά / νέα ώρα συστήματος όταν η ημερομηνία (1) αλλάξει. Το wtmp διατηρείται με login (1), init (1) και με ορισμένες εκδόσεις του getty (1). Κανένα από αυτά τα προγράμματα δεν δημιουργεί το αρχείο , οπότε αν καταργηθεί, η εγγραφή είναι απενεργοποιημένη.