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

Le fuseau horaire, configuré lors de l'installation initiale, est une donnée de configuration du paquet tzdata. Pour le modifier, on lancera donc la commande dpkg-reconfigure tzdata, qui permet de choisir de manière interactive le fuseau horaire à utiliser. Sa configuration est stockée dans le fichier /etc/timezone. Par ailleurs, le fichier correspondant du répertoire /usr/share/zoneinfo/ est copié dans /etc/localtime ; ce fichier contient notamment les dates des changements d'heure pour les pays appliquant une heure d'été.
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
mercredi 23 septembre 2015, 10:28:59 (UTC+0200)
$ TZ="Pacific/Honolulu" date
mardi 22 septembre 2015, 22:29:15 (UTC-1000)

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.
Quand il s'installe, le paquet sudo donne les droits complets de root à tous les utilisateurs membres du groupe Unix sudo. Pour déléguer d'autres droits, l'administrateur doit faire appel à la commande visudo, qui permet de modifier le fichier de configuration /etc/sudoers (ici encore, cela invoquera l'éditeur de texte vi, ou tout éditeur mentionné dans la variable d'environnement EDITOR). L'ajout d'une ligne utilisateur ALL=(ALL) ALL permettra à l'utilisateur concerné d'exécuter n'importe quelle commande en tant que root.
Des configurations plus sophistiquées permettront de n'autoriser que quelques commandes particulières à certains utilisateurs. Tous les détails de ces différentes possibilités sont donnés dans la page de manuel sudoers(5).

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 blancs, 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).
    Ce champ est fréquemment remplacé par l'identifiant unique du système de fichiers (que l'on peut obtenir par blkid périphérique) préfixé de UUID=. Cela permet notamment de ne pas être affecté par le changement possible du nom du périphérique en cas d'ajout ou de suppression de disques (ou de détection des disques dans un ordre différent).
  • 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 disquettes et les clés USB, car chacune 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. When it is 1, it tells the dump tool that the partition contains data that is to be backed up.
  • pass: this last field indicates whether the integrity of the filesystem should be checked on boot, and in which order this check should be executed. If it is 0, no check is conducted. The root filesystem should have the value 1, while other permanent filesystems get the value 2.

Exemple 8.6. Exemple de fichier /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda1 during installation
UUID=c964222e-6af1-4985-be04-19d7c764d0a7 /               ext3    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=ee880013-0f63-4251-b5c6-b771f53bd90e none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy   auto    rw,user,noauto  0       0
arrakis:/partage /partage       nfs     defaults        0       0
La dernière entrée de cet exemple correspond à un système de fichiers en réseau (NFS) : le répertoire /partage/ du serveur arrakis est monté sur le répertoire /partage/ local. Le format du fichier /etc/fstab est documenté dans la page de manuel fstab(5).

8.9.6. locate et updatedb

La commande locate retrouve l'emplacement d'un fichier dont on connaît une partie du nom. Elle renvoie un résultat quasi instantanément car elle consulte une base de données particulière qui stocke l'emplacement de tous les fichiers du système ; celle-ci est mise à jour quotidiennement par la commande updatedb. Il existe plusieurs mises en œuvre de la commande locate ; Debian a choisi mlocate comme mise en œuvre standard.
mlocate est suffisamment fin pour ne renvoyer que les fichiers accessibles à l'utilisateur qui lance la commande, et ce bien qu'il utilise une base de données répertoriant tous les fichiers du système (puisque sa mise en œuvre d'updatedb tourne avec les permissions de root). Pour plus de sûreté, l'administrateur peut exclure certains répertoires de l'indexation, en utilisant la variable PRUNEDPATHS du fichier de configuration /etc/updatedb.conf.