dwww Home | Manual pages | Find package

utmp(5)                       File Formats Manual                      utmp(5)

NOM
       utmp, wtmp - Enregistrements de connexion

SYNOPSIS
       #include <utmp.h>

DESCRIPTION
       Le  fichier  utmp  permet de voir qui est connecté sur le système. Tous
       les programmes n'utilisant pas les  enregistrement  utmp,  il  se  peut
       qu'il y ait plus d'utilisateurs que ceux affichés.

       Attention :  utmp ne doit pas être accessible en écriture par la classe
       d'utilisateurs « autres », car  de  nombreux  programmes  systèmes  dé-
       pendent (malheureusement) de son intégrité. En laissant utmp accessible
       en écriture pour les utilisateurs n'étant ni le propriétaire ni dans le
       groupe  propriétaire, vous prenez le risque d'avoir de mauvais fichiers
       de journalisation, et des modifications de fichiers système.

       Le fichier est une suite de structures utmp, déclarées comme ceci  dans
       <utmp.h>  (notez qu'il ne s'agit que d'une des définitions existantes ;
       les détails dépendent de la version de la bibliothèque C) :

           /* Valeurs pour le champ ut_type, ci-dessous */

           #define EMPTY         0 /* Record does not contain valid info
                                      (formerly known as UT_UNKNOWN on Linux) */
           #define RUN_LVL       1 /* Change in system run-level (see
                                      init(1)) */
           #define BOOT_TIME     2 /* Time of system boot (in ut_tv) */
           #define NEW_TIME      3 /* Time after system clock change
                                      (in ut_tv) */
           #define OLD_TIME      4 /* Time before system clock change
                                      (in ut_tv) */
           #define INIT_PROCESS  5 /* Process spawned by init(1) */
           #define LOGIN_PROCESS 6 /* Session leader process for user login */
           #define USER_PROCESS  7 /* Normal process */
           #define DEAD_PROCESS  8 /* Terminated process */
           #define ACCOUNTING    9 /* Not implemented */

           #define UT_LINESIZE      32
           #define UT_NAMESIZE      32
           #define UT_HOSTSIZE     256

           struct exit_status {              /* Type for ut_exit, below */
               short e_termination;          /* Process termination status */
               short e_exit;                 /* Process exit status */
           };

           struct utmp {
               short   ut_type;              /* Type of record */
               pid_t   ut_pid;               /* PID of login process */
               char    ut_line[UT_LINESIZE]; /* Device name of tty - "/dev/" */
               char    ut_id[4];             /* Terminal name suffix,
                                                or inittab(5) ID */
               char    ut_user[UT_NAMESIZE]; /* Username */
               char    ut_host[UT_HOSTSIZE]; /* Hostname for remote login, or
                                                kernel version for run-level
                                                messages */
               struct  exit_status ut_exit;  /* Exit status of a process
                                                marked as DEAD_PROCESS; not
                                                used by Linux init(1) */
               /* The ut_session and ut_tv fields must be the same size when
                  compiled 32- and 64-bit. This allows data files and shared
                  memory to be shared between 32- and 64-bit applications. */
           #if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
               int32_t ut_session;           /* Session ID (getsid(2)),
                                                used for windowing */
               struct {
                   int32_t tv_sec;           /* Seconds */
                   int32_t tv_usec;          /* Microseconds */
               } ut_tv;                      /* Time entry was made */
           #else
                long   ut_session;           /* Session ID */
                struct timeval ut_tv;        /* Time entry was made */
           #endif

               int32_t ut_addr_v6[4];        /* Adresse IP hôte distant ;
                                                les adresses IPv4 utilisent
                                                seulement ut_addr_v6[0] */
               char __unused[20];            /* Réservé pour utilisation future */
           };

           /* Bidouille pour 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]

       This structure gives the name of the special file associated  with  the
       user's  terminal,  the  user's login name, and the time of login in the
       form of time(2). String fields are terminated by a null byte ('\0')  if
       they are shorter than the size of the field.

       Le  premier  enregistrement  créé  est  le traitement de inittab(5) par
       init(1). Néanmoins, avant ça, init(1) positionne  le  champ  ut_type  à
       DEAD_PROCESS,  et  efface ut_user, ut_host et ut_time (remplis avec des
       octets nuls)  de  tous  les  enregistrement  dont  l'ut_type  n'est  ni
       DEAD_PROCESS  ni RUN_LVL, et si aucun processus de PID ut_pid n'existe.
       Si aucun enregistrement  vide  n'est  trouvé  avec  le  ut_id  correct,
       init(1)  en crée un nouveau. Il positionne ut_id en s'aidant de l'init-
       tab, ut_pid  et  ut_time  avec  les  valeurs  actuelles  et  ut_type  à
       INIT_PROCESS.

       mingetty(8)  (ou  agetty(8)) récupère l'entrée correspondant à son PID,
       donne à ut_type  la  valeur  LOGIN_PROCESS,  modifie  ut_time,  définit
       ut_line  et attend l'établissement d'une connexion. Une fois qu'un uti-
       lisateur  a  été  authentifié,  login(1)  donne  à  ut_type  la  valeur
       USER_PROCESS,  modifie ut_time et définit ut_host et ut_addr. Selon les
       utilitaires mingetty(8) (ou agetty(8)) et login(1) utilisés, les  enre-
       gistrements  sont parfois identifiés par ut_line plutôt que ut_pid, qui
       est préférable.

       When init(1)  finds that a process has exited, it locates its utmp  en-
       try  by  ut_pid,  sets  ut_type  to  DEAD_PROCESS,  and clears ut_user,
       ut_host, and ut_time with null bytes.

       xterm(1), et d'autres émulateurs de terminaux,  créent  directement  un
       enregistrement  USER_PROCESS,  engendrant  ut_id  grâce à la chaîne qui
       suffixe le nom du terminal (les caractères  qui  suivent  /dev/[pt]ty.)
       S'ils  trouvent un DEAD_PROCESS correspondant à cet ID, ils le recycle,
       sinon ils en créent un nouveau. Si possible, ils marquent l'enregistre-
       ment  comme étant DEAD_PROCESS lorsqu'ils se terminent et il faut tenir
       compte du fait qu'ils effacent également ut_line, ut_time,  ut_user  et
       ut_host.

       telnetd(8) construit un enregistrement LOGIN_PROCESS et laisse le reste
       du travail à login(1). Une fois que la  session  telnet  est  terminée,
       telnetd(8) efface l'utmp de la manière décrite plus haut.

       The  wtmp  file  records  all logins and logouts. Its format is exactly
       like utmp except that a null username indicates a logout on  the  asso-
       ciated  terminal.  Furthermore, the terminal name ~ with username shut-
       down or reboot indicates a system shutdown or reboot and  the  pair  of
       terminal  names  |/} logs the old/new system time when date(1)  changes
       it. wtmp is maintained by  login(1),  init(1),  and  some  versions  of
       getty(8)   (e.g.,  mingetty(8)   or  agetty(8)). None of these programs
       creates the file, so if it is removed, record-keeping is turned off.

FICHIERS
       /var/run/utmp
       /var/log/wtmp

STANDARDS
       POSIX.1 does not specify a utmp structure, but rather one  named  utmpx
       (as  part  of  the  XSI  extension), with specifications for the fields
       ut_type, ut_pid, ut_line, ut_id, ut_user, and ut_tv. POSIX.1  does  not
       specify the lengths of the ut_line and ut_user fields.

       Linux  définit  la structure utmpx comme étant la même que la structure
       utmp.

   Comparaison avec des systèmes historiques
       Les enregistrements utmp de Linux ne se conforment ni  à  v7/BSD  ni  à
       System V. Ils sont en réalité un mélange des deux.

       v7/BSD  comporte  moins  de champs ; par exemple pas de ut_type, ce qui
       conduit les programmes natifs de v7/BSD à  afficher  des  entrées  (par
       exemple)  des  entrées  « mortes »  ou d'identification (« login »). De
       plus, il n'y a pas de fichier de configuration pour allouer  les  slots
       aux sessions. BSD le fait parce qu'il lui manque le champ ut_id.

       Sous Linux (comme sous System V), le champ ut_id d'un enregistrement ne
       sera jamais modifié après son  initialisation.  L'effacement  de  ut_id
       peut engendrer des conditions de concurrence conduisant à avoir des en-
       trées utmp corrompues et, potentiellement, des trous de sécurité. Effa-
       cer  les  champs mentionnés ci-dessus en les remplissant avec des zéros
       binaires n'est pas requis par la sémantique de System V, mais cela per-
       met l'exécution de nombreux programmes qui s'appuient sur la sémantique
       de BSD et qui ne modifient pas utmp. Linux utilise les conventions  BSD
       en  ce  qui concerne le contenu des lignes, tels que c'est précisé plus
       haut.

       System V n'a pas de champ ut_host ni ut_addr_v6.

NOTES
       Contrairement à d'autres systèmes, sur lesquels l'effacement du fichier
       arrête  la  journalisation,  le fichier utmp doit toujours exister sous
       Linux. Si vous désirez désactiver who(1), laissez le  fichier  utmp  en
       place, mais ne le laissez pas lisible par tout le monde.

       Le format de ces fichiers dépend de la machine, et il est recommandé de
       ne les utiliser que sur la machine où ils ont été créés.

       Notez que sur les plates-formes biarch, c'est-à-dire les  systèmes  qui
       utilisent  à  la  fois  des  applications 32 et 64 bits (x86_64, ppc64,
       s390x, etc.), ut_tv est de la même taille en mode 32 bits et en mode 64
       bits.  De même en ce qui concerne ut_session et ut_time s'ils existent.
       Ceci permet aux fichiers de données et à  la  mémoire  partagée  d'être
       partagés  entre  les  applications 32 bits et 64 bits. Cela est fait en
       modifiant le type de ut_session en int32_t, et celui de  ut_tv  en  une
       structure  avec  deux  champs  int32_t,  tv_sec  et tv_usec. Puisque la
       structure ut_tv est différente de la  structure  timeval,  au  lieu  de
       l'appel :

           gettimeofday((struct timeval *) &ut.ut_tv, NULL);

       il est recommandé d'utiliser la méthode suivante pour définir ce champ

           struct utmp ut;
           struct timeval tv;

           gettimeofday(&tv, NULL);
           ut.ut_tv.tv_sec = tv.tv_sec;
           ut.ut_tv.tv_usec = tv.tv_usec;

VOIR AUSSI
       ac(1),  date(1),  init(1),  last(1), login(1), logname(1), lslogins(1),
       users(1), utmpdump(1), who(1), getutent(3), getutmp(3),  login(3),  lo-
       gout(3), logwtmp(3), updwtmp(3)

TRADUCTION
       La  traduction française de cette page de manuel a été créée par Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, Fran-
       çois Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe  Gué-
       rard  <fevrier@tigreraye.org>,  Jean-Luc  Coulon (f5ibh) <jean-luc.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.org>, David  Prévot  <david@tilapin.org>,  Jean-Baptiste  Holcroft
       <jean-baptiste@holcroft.fr>   et  Grégoire  Scano  <gregoire.scano@mal-
       loc.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la        GNU        General       Public       License       version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ concernant  les  conditions
       de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous découvrez un bogue dans la traduction de cette page de manuel,
       veuillez envoyer un message à ⟨debian-l10n-french@lists.debian.org⟩.

Pages du manuel de Linux 6.03   5 février 2023                         utmp(5)

Generated by dwww version 1.15 on Sat Jun 29 01:40:47 CEST 2024.