Provided by: manpages-fr_4.18.1-1_all bug

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'inittab, 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  utilisateur  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  enregistrements  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 entry 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'enregistrement  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 associated terminal. Furthermore, the terminal
       name ~ with username shutdown 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 entrées utmp corrompues et, potentiellement, des  trous
       de  sécurité.  Effacer  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 permet  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), logout(3), logwtmp(3), updwtmp(3)

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.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.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org>, David  Prévot  <david@tilapin.org>,  Jean-Baptiste  Holcroft
       <jean-baptiste@holcroft.fr> et Grégoire Scano <gregoire.scano@malloc.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⟩.