Skip to main content

Comment utiliser la commande Unix Utmp sous Linux

How to Monitor User Login and System Restart Activities (Juin 2025)

How to Monitor User Login and System Restart Activities (Juin 2025)
Anonim

leutmp fichier permet de découvrir des informations sur qui utilise actuellement le système. Il est possible que davantage d'utilisateurs utilisent actuellement le système, car tous les programmes n'utilisent pas la journalisation utmp.

Attention: utmp ne doit pas être accessible en écriture, car de nombreux programmes système dépendent (bêtement) de son intégrité. Vous risquez de faux fichiers journaux système et des modifications des fichiers système si vous quittezutmpaccessible en écriture à tout utilisateur.

Le fichier est une séquence d'entrées avec la structure suivante déclarée dans le fichier d'inclusion (notez qu'il ne s'agit que d'une définition parmi d'autres; les détails dépendent de la version de libc):

#define UT_UNKNOWN 0 #Fine UT_HOSTSIZE 256 struct exit_status {short int e_termination; / * statut de fin de processus. * / short int e_exit; / * état de sortie du processus. * /}; struct utmp {short ut_type; / * type de login * / pid_t ut_pid; / * pid du processus de connexion * / char ut_line UT_LINESIZE; / * nom de périphérique de tty - "/ dev /" * / char ut_id 4; / * init id ou abbrev. ttyname * / char ut_user UT_NAMESIZE; / * nom d'utilisateur * / char ut_host UT_HOSTSIZE; / * nom d'hôte pour la connexion à distance * / struct exit_status ut_exit; / * Etat de sortie d'un processus marqué comme DEAD_PROCESS. * / long ut_session; / * ID de session, utilisé pour le fenêtrage * / struct timeval ut_tv; / * l'heure a été entrée. * / int32_t ut_addr_v6 4; / * Adresse IP de l'hôte distant. * / pavé de caractères 20; /* Réservé pour une utilisation future. * /}; / * Piratage de compatibilité ascendante. * / #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

Cette structure donne le nom du fichier spécial associé au terminal de l'utilisateur, le nom de connexion de l'utilisateur et l'heure de connexion sous la forme suivante:temps(2). Les champs de chaîne sont terminés par'' si elles sont plus courtes que la taille du champ.

Les premières entrées jamais créées résultent de init (8) traitement inittab (5). Avant qu'une entrée soit traitée, cependant, init (8) nettoie utmp en définissantut_type àDEAD_PROCESS, défrichageut_user, ut_host, etut_time avec des octets nuls pour chaque enregistrement quiut_type n'est pasDEAD_PROCESS ouRUN_LVL et où aucun processus avec PIDut_pid existe. Si aucun enregistrement vide avec le nécessaireut_id peut être trouvé, init en crée un nouveau. Il établitut_id de l'inittab,ut_pid etut_time aux valeurs actuelles, etut_type àINIT_PROCESS.

getty (8) localise l'entrée par le pid, changeut_type àLOGIN_PROCESS, changementsut_time, ensemblesut_lineet attend que la connexion soit établie. s'identifier (8), après l’authentification d’un utilisateur, changeut_type àUSER_PROCESS, changementsut_timeet ensemblesut_host etut_addr. Cela dépend de getty (8) et s'identifier (8), les enregistrements peuvent être localisés parut_line au lieu de la préférableut_pid.

Quand init (8) constate qu’un processus s’est terminé, il localise son entrée utmp parut_pid, ensemblesut_type àDEAD_PROCESSet effaceut_user, ut_host etut_time avec des octets nuls.

xterm (1) et d’autres émulateurs de terminal créent directement unUSER_PROCESS enregistrer et générer leut_id en utilisant les deux dernières lettres de/ dev / ttyp % c ou en utilisantp %ré pour/ dev / pts / %ré . S'ils trouvent unDEAD_PROCESS pour cet identifiant, ils le recyclent, sinon ils créent une nouvelle entrée. S'ils le peuvent, ils le marqueront commeDEAD_PROCESS en quittant et il est conseillé qu'ils null ut_line,ut_time, ut_user, etut_host ainsi que.

xdm (8) ne devrait pas créer un enregistrement utmp, car il n'y a pas de terminal attribué. Le laisser en créer un entraînera des erreurs, telles que "finger: ne peut pas stat /dev/machine.dom". Il devrait créer des entrées wtmp, cependant, tout comme ftpd (8) fait.

telnetd (8) met en place unLOGIN_PROCESS entrée et laisse le reste à s'identifier (8) comme d'habitude. Une fois la session Telnet terminée, telnetd (8) nettoie utmp de la manière décrite.

lewtmp fichier enregistre toutes les connexions et les déconnexions. Son format est exactement commeutmp sauf qu'un nom d'utilisateur nul indique une déconnexion sur le terminal associé. De plus, le nom du terminal'~'avec nom d'utilisateur"fermer" ou"redémarrer" indique un arrêt ou un redémarrage du système et la paire de noms de terminaux'|'/'}' enregistre l’ancienne / la nouvelle heure système lorsque rendez-vous amoureux (1) le change.wtmp est maintenu par s'identifier (1), init (1), et certaines versions de getty (1). Aucun de ces programmes ne crée le fichier. Ainsi, s'il est supprimé, la conservation des enregistrements est désactivée.