SYSLOG.CONF(5) Formats de fichiers de FreeBSD
syslog.conf - le fichier de configuration de syslogd(8)
Le fichier syslog.conf est le fichier de configuration de syslogd(8). Il est composé de blocs de lignes séparées par des spécifications de programme. Chaque ligne est en deux parties : le champ de sélection qui indique le type de messages et les priorités de la ligne et le champ d'action qui indique quoi faire si un message syslogd correspond à un critère de sélection. Les deux champs sont séparés l'un de l'autre par des tabulations ou espaces.
Notez que si vous utilisez des espaces comme séparateur, votre syslog.conf pourra devenir incompatible avec d'autres Unix ou proches-Unix. Cette particularité existe pour le confort de l'écriture (par exemple, il est possible de copier-coller dans le fichier) et pour éviter de possibles erreurs. Ce changement préserve cependant la compatibilité avec les précédentes versions (c'est à dire tabulation uniquement).
Le champ de sélection est codé sous la forme d'une fonction, un point ("."), des opérateurs de comparaison optionnels ([<=>]) et un niveau, le tout sans espace. La fonction et le niveau ne sont pas sensibles à la casse.
La fonction indique la partie du système qui génère le message, c'est à dire un des mot clé suivants : auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, ntp, syslog, user, uucp et local0 à local7. Tous, à l'exception de mark, correspondent à la valeur équivalente "LOG_" spécifiée par les bibliothèques openlog(3) et syslog(3).
Les opérateurs de comparaison sont utilisés pour indiquer précisément ce qui doit être enregistré. L'opérateur par défaut est "=>" (ou ">=" si vous préférez) et veut dire que les messages de la liste de fonctions d'un niveau supérieur ou égal à niveau seront enregistrés.
Le niveau décrit la sévérité du message par un mot clé de la liste suivante (du plus au moins sérieux) : emerg, alert, crit, err, warning, notice, info et debug. Ils correspondent à la valeur équivalente "LOG_" spécifiée par la bibliothèque syslog(3).
Chaque bloc de lignes est séparé du suivant par une marque qui consiste en une ligne commençant par #!prog ou !prog (cette première forme préservant la compatibilité avec les anciens syslogd, en cas de partage de syslog.conf, par exemple) et chacun est associé aux appels de syslog par le programme spécifique. Une marque pour "foo" correspondra à tout message enregistré par le noyau avec le préfixe "foo: ".
Voir syslog(3) pour plus d'explications sur les mots clé des fonctions et des niveaux. Il est préférable d'effectuer les sélections à partir de la fonction plutôt que du programme car ce dernier peut varier d'un environnement à l'autre. Dans certains cas cepandant, la fonction appropriée n'existe tout simplement pas.
Si un message reçu correspond à la fonction et est du niveau requis (ou d'un plus haut) et que le premier mot du message, après la date, correspond au programme, l'action spécifiée est lancée.
Plusieurs critères de sélection peuvent être indiqués pour une seule action en les séparant par des points-virgule (";"). Il est, cependant, important de noter que chaque critère peut modifier ceux qui le précèdent.
Plusieurs fonctions peuvent être indiquées pour un seul niveau en les séparant par des virgules (",").
Un astérisque ("*") peut être utilisé pour indiquer toute fonction, tout niveau ou tout programme.
La fonction spéciale "mark" reçoit un message de niveau "info" toute les vingt minutes (voir syslogd(8)). Ceci n'est pas dû à un champ fonction contenant un astérisque.
Le niveau spécial "none" désactive une fonction particulière.
Le champ action de chaque ligne spécifie l'action à exécuter lorsque le champ sélection retient un message. Il existe cinq formes :
- Un chemin d'accès (débutant par un slash "/"). Les messages retenus sont ajoutés au fichier.
- Un nom d'hôte (précédé d'un @). Les messages retenus sont transmis au programme syslogd de l'hôte nommé.
- Une liste d'utilisateurs séparés par des virgules. Les messages retenus sont écrits à ces utilisateurs lorsqu'ils se connectent.
- Un astérisque. Les messages retenus sont écrits à tous les utilisateurs connectés.
- Une barre verticale "|" suivie d'une commande vers laquelle diriger les messages. La commande est passée à un /bin/sh pour évaluation donc des méta-caractères d'interpréteur ou des redirection entrée-sortie peuvent apparaitre (notez cependant que rediriger la sortie de stdio(3) depuis la commade appelée peut causer des délais supplémentaires et même des pertes de données dans le cas où un sous process quitte suite à un signal). La commande elle-même tourne avec sa sortie et erreur standard redirigées vers /dev/null. Suite à la réception d'un signal SIGHUP, syslog.conf ferme le tuyau vers le process. Si ce dernier ne se termine pas tout seul, il se voit envoyer un SIGTERM après une période de grâce de 60 secondes.
La commande n'est lancée que lorsque les données qu'elle doit traiter sont arrivées. Si elle quitte plus tard, elle sera relancée si nécessaire. Si le sous-process doit recevoir exactement une seule ligne (ce qui peu accaparer les ressources en cas de messages arrivant rapidement), il se terminera après la fin de celle-ci. Si nécessaire, un script de découpage peut être écrit à cet effet.
A moins que la commande ne travaille en temps partagé, il est probablement utile de la lancer avec exec afin que l'interpréteur n'ait pas besoin d'attendre qu'elle se termine. Attention : le processus est lancé avec la même identité que syslogd(8), normalement super-utilisateur.
Les lignes vides et celles dont le premier caractère autre que blanc est un dièse ("#") sont ignorées.
Voici un exemple de fichier de configaration :
# Afficher tous les messages noyau, ceux # d'autentification de niveau "notice" ou plus # et tout de niveau err ou plus sur la console. # Ne pas afficher les messages d'autentification # privés ! *.err;kern.*;auth.notice;authpriv.none /dev/console # Tout enregistrer de niveau info ou plus, sauf mail. # Ne pas enregistrer les messages d'autentification # privés ! *.info;mail.none;authpriv.none /var/log/messages # Enregistrer les messages daemon seulement au niveau debug. daemon.=debug /var/log/daemon.debug # Le fichier authpriv a un accès restreint. authpriv.* /var/log/secure # Enregistrer le courriel à un seul endroit. mail.* /var/log/maillog # Tout le monde reçoit les messages urgents, plus les # enregistrer sur une autre machine. *.emerg * *.emerg @arpa.berkeley.edu # Root et Eric reçoivent les massages d'alerte et plus. *.alert root,eric # Sauvegarder les erreur courriel et forum de niveau err # et plus dans un fichier spécial. uucp,news.crit /var/log/spoolerr # Tuyauter tout message d'autentification dans un filtre. auth.* |exec /usr/local/sbin/authfilter # Sauvegarder les transaction ftpd passant par mail et news. !ftpd *.* /var/log/spoolerr # Enregistrer les rapports coupe-feu dans un fichier séparé. !ipfw *.* /var/log/ipfw
/etc/syslog.conf, le fichier de configuration de syslogd(8)
L'effet des sélections multiples n'est pas toujours très intuitif. Par exemple, " mail.crit,*.err" choisira les messages "mail" de niveau "err" ou plus et non "crit" ou plus.
En environnement réseau, notez que tous les systèmes d'exploitation n'implémentent pas les mêmes fonctions. authpriv, cron, ftp et ntp, connus de cette implémentation, peuvent ne pas l'être dans le système cible. Encore pire, DEC UNIX utilise la fonction numéro 10 (authpriv ici) pour enregistrer les évènements de son système de fichiers AdvFS.
BSD
9 juin 1993
Version française le 11 juillet 2000 par Guillain SEUILLOT <Guillain@lycosmail.com>