Product SiteDocumentation Site

8.9. Autres configurations : synchronisation, logs, partages…

Cette section regroupe de nombreux éléments qu'il est bon de connaître pour maîtriser tous les aspects de la configuration du système GNU/Linux. Ils sont cependant traités brièvement et renvoient souvent à la documentation de référence.

8.9.1. Fuseau horaire

The timezone, configured during initial installation, is a configuration item for the tzdata package. To modify it, use the dpkg-reconfigure tzdata command, which allows you to choose the timezone to be used in an interactive manner. Its configuration is stored in the /etc/timezone file. Additionally, /etc/localtime becomes a symbolic link to the corresponding file in the /usr/share/zoneinfo; the file that contains the rules governing the dates where daylight saving time (DST) is active, for countries that use it.
Pour changer temporairement de fuseau horaire, il est possible de mettre en place un fuseau horaire ayant la priorité sur les réglages du système avec la variable d'environnement TZ :
$ date
Thu Sep  2 22:29:48 CEST 2021
$ TZ="Pacific/Honolulu" date
Thu 02 Sep 2021 10:31:01 AM HST

8.9.2. Synchronisation horaire

La synchronisation horaire, qui peut paraître superflue sur un ordinateur, prend toute son importance dans le cadre d'un réseau. Les utilisateurs n'ayant pas le droit de modifier la date et l'heure, il est important que ces informations soient exactes pour ne pas les gêner. Par ailleurs, le fait d'avoir tous les ordinateurs synchronisés permet de mieux croiser les informations obtenues à partir de logs issus de machines différentes. Ainsi, en cas d'attaque, il est plus simple de reconstituer la séquence chronologique des actions des indélicats sur les différentes machines compromises. Des données collectées sur plusieurs machines à des fins de statistiques n'ont pas non plus grand sens si leurs horodatages sont divers.

8.9.2.1. Pour les stations de travail

Les stations de travail étant redémarrées régulièrement (ne serait-ce que par souci d'économie d'énergie), il suffit de les synchroniser par NTP au démarrage. Pour cela, il est possible d'y installer le paquet Debian ntpdate. On changera au besoin le serveur NTP employé en modifiant le fichier /etc/default/ntpdate.

8.9.2.2. Pour les serveurs

Les serveurs ne redémarrent que très rarement et il est très important que leur heure système soit juste. Pour conserver une heure correcte en permanence, on installera un serveur NTP local, service proposé par le paquet ntp. Dans sa configuration par défaut, le serveur se synchronisera sur pool.ntp.org et fournira l'heure à qui la lui demandera sur le réseau local. On le configurera à travers le fichier /etc/ntp.conf ; l'élément le plus intéressant à changer est le serveur NTP de référence. Si le réseau compte beaucoup de serveurs, il peut être intéressant de n'avoir qu'un seul serveur qui se synchronise sur les serveurs publics, les autres se synchronisant sur lui.

8.9.3. Rotation des fichiers de logs

Les fichiers de logs prenant rapidement du volume, il est nécessaire de les archiver. On emploie en général une archive « tournante » : le fichier de log est régulièrement archivé et seules ses X dernières archives sont conservées. logrotate, le programme chargé de ces rotations, suit les directives données dans le fichier /etc/logrotate.conf et tous ceux du répertoire /etc/logrotate.d/. L'administrateur peut modifier ces fichiers s'il souhaite adapter la politique de rotation des logs définie par Debian. La page de manuel logrotate(1) décrit toutes les options autorisées dans ces fichiers de configuration. Il peut être intéressant d'augmenter le nombre de fichiers conservés dans la rotation des logs, ou de déplacer les fichiers de logs dans un répertoire spécifique dédié à l'archivage au lieu de les supprimer. On peut encore les envoyer par courrier électronique pour les archiver ailleurs.
Le programme logrotate est exécuté quotidiennement par l'ordonnanceur cron (décrit dans la Section 9.7, « Planification de tâches : cron et atd »).

8.9.4. Partage des droits d'administration

Bien souvent, plusieurs administrateurs s'occupent du réseau. Partager le mot de passe de l'utilisateur root n'est pas très élégant et ouvre la porte à des abus du fait de l'anonymat de ce compte partagé. La solution à ce problème est le programme sudo, qui permet à certains utilisateurs d'exécuter certaines commandes avec des droits particuliers. Dans son emploi le plus courant sudo permet à un utilisateur de confiance d'exécuter n'importe quelle commande en tant que root. Pour cela, l'utilisateur doit simplement exécuter sudo commande et s'authentifier à l'aide de son mot de passe personnel.
When installed, the sudo package gives full root rights to members of the sudo Unix group. To delegate other rights, the administrator can use the visudo command, which allows them to modify the /etc/sudoers configuration file (here again, this will invoke the vi editor, or any other editor indicated in the EDITOR environment variable). Alternatively they might put rules in small files in /etc/sudoers.d/ as long as this directory is included by /etc/sudoers via @includedir /etc/sudoers.d, which is the default for Debian. Adding a line with username ALL=(ALL) ALL allows the user in question to execute any command as root.
More sophisticated configurations allow authorization of only specific commands to specific users. All the details of the various possibilities are given in the sudoers(5) manual page.

8.9.5. Liste des points de montage

Le fichier /etc/fstab donne la liste de tous les montages possibles (effectués automatiquement au démarrage ou à exécuter manuellement pour les périphériques amovibles). Chaque point de montage y est détaillé sur une ligne par plusieurs champs séparés par des espaces, qui sont :
  • file system: this indicates where the filesystem to be mounted can be found, it can be a local device (hard drive partition, CD-ROM) or a remote filesystem (such as NFS or even SSHFS).
    This field is frequently replaced with the unique ID of the filesystem (which you can determine with blkid device) prefixed with UUID=. This guards against a change in the name of the device in the event of addition or removal of disks, or if disks are detected in a different order. Section 8.8.1, « Identifier ses disques » covers this topic in more detail.
  • Point de montage : c'est l'endroit de l'arborescence où ce système de fichiers sera rendu accessible.
  • Type : ce champ définit le système de fichiers employé sur le périphérique. ext4, ext3, vfat, ntfs, reiserfs, xfs en sont quelques exemples.
    La liste complète des systèmes de fichiers reconnus est disponible dans la page de manuel mount(8). La valeur spéciale swap sert aux partitions d'échange ; la valeur spéciale auto demande au programme mount de détecter automatiquement le système de fichiers (ce qui est surtout utile pour les lecteurs de disques et les clés USB, car chacun peut abriter un système de fichiers différent).
  • Options : elles sont nombreuses, dépendent du système de fichiers et sont documentées dans la page de manuel de mount. Voici les plus courantes :
    • rw ou ro feront respectivement monter le système de fichiers en lecture/écriture ou en lecture seule .
    • noauto désactive le montage automatique au démarrage .
    • nofail indique au système d'initialisation que le démarrage peut continuer même si le périphérique n'est pas présent. Il ne faut pas oublier cette option pour les disques externes qui peuvent être débranchés au démarrage, autrement systemd ne tolérera pas leur absence : il interrompra le processus de démarrage jusqu'à ce que tous les points de montage qui doivent être montés automatiquement le soient effectivement. Signalons que l'on peut combiner cette option avec x-systemd.device-timeout=5s pour indiquer à systemd de ne pas attendre l'apparition du périphérique pendant plus de 5 secondes (voir systemd.mount(5)) .
    • user autorise tous les utilisateurs à monter ce système de fichiers (opération d'ordinaire réservée à root) .
    • defaults correspond à l'ensemble d'options (rw, suid, dev, exec, auto, nouser et async), qu'on pourra inhiber individuellement après defaults — soit en ajoutant nosuid, nodev, etc. pour bloquer suid, dev, etc., soit en ajoutant user pour réactiver cette option (puisque defaults inclut nouser).
  • dump: this field is almost always set to 0 and kind of a relic. When it is greater then zero, it tells the dump tool that the partition contains data that is to be backed up frequently. The tool supports Ext2/3/4 filesystems only and will use the value here when run via dump -W or dump -w to determine which partitions need to be backed up. Consider the examples in /usr/share/doc/dump/examples/ if you want to use this feature. But there are better alternatives to backup a filesystem, like fsarchiver.
  • pass : ce dernier champ indique si l'intégrité du système de fichiers doit être vérifiée au démarrage et dans quel ordre cette vérification doit avoir lieu. S'il est à 0, aucune vérification n'est faite. Le système de fichiers racine doit avoir la valeur 1, les autres systèmes de fichiers permanents du système recevront la valeur 2.

Exemple 8.5. Exemple de fichier /etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <file system>                           <mount point>   <type>      <options>         <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=7a250fb8-c16d-4a4e-9808-ec08ae92b6c6 /               ext4        errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=13f367ae-dbaf-40ed-85c0-4072a2ebe426 none            swap        sw                0       0
/dev/sr0                                  /media/cdrom0   udf,iso9660 user,noauto       0       0
/dev/fd0                                  /media/floppy   auto        rw,user,noauto    0       0
arrakis:/shared                           /shared         nfs         defaults          0       0
The last entry in the example corresponds to a network filesystem (NFS): the /shared/ directory on the arrakis server is mounted at /shared/ on the local machine.
The format of the /etc/fstab file is documented in the fstab(5) manual page.

8.9.6. locate et updatedb

The locate command can find the location of a file when you only know part of the name. It sends a result almost instantaneously, since it consults a database that stores the location of all the files on the system; this database is updated daily by the updatedb command. There are multiple implementations of the locate command and Debian picked mlocate for its standard system. If you want to consider an alternative, you can try plocate which provides the same command line options and can be considered a drop-in replacement.
locate is smart enough to only return files which are accessible to the user running the command even though it uses a database that knows about all files on the system (since its updatedb implementation runs with root rights). For extra safety, the administrator can use PRUNEDPATHS in /etc/updatedb.conf to exclude some directories from being indexed.