Certains logiciels fournissent aussi la possibilité de vérifier la syntaxe des fichiers de configuration qu’ils utilisent. Cela permet d’éviter des erreurs ou interruptions de service dûes à une erreur dans le fichier. Voici trois exemples :
1. Apache
Apache2 fournit apachectl
. Si la syntaxe des sites actifs est correcte, la sortie sera :
# apachectl -t Syntax OK
Avec un fichier de configuration incorrect nommé conte.conf
contenant
ServerName le.grand.mechant.loup.example CustomLog /il/etait/une/fois combined RencontreChaperonRouge on
la sortie sera
# apachectl -t [Sun Sep 18 22:18:32.305781 2022] [core:error] [pid 14382:tid 139846731306112] (EAI 2)Name or service not known: AH00547: Could not resolve host name a.oree.du.bois -- ignoring! AH00526: Syntax error on line 4 of /etc/apache2/sites-enabled/conte.conf: Invalid command 'RencontreChaperonRouge', perhaps misspelled or defined by a module not included in the server configuration Action '-t' failed. The Apache error log may have more information.
Attention, les vérifications d’apachectl ne sont pas exhaustives et une erreur peut encore survenir lors du redémarrage du serveur Apache. Ici le chemin vers le fichier n’existe pas mais n’a pas été détecté. Si apachectl -t
détecte une erreur, il y a un problème. S’il n’en détecte pas, il n’y a peut-être pas de problème.
(test réalisé avec Apache/2.4.38)
2. OpenSSH
La commande sshd -t
exécutée avec des droits root permet de vérifier la validité de la configuration du serveur openSSH (le fichier /etc/ssh/sshd_config
sous Debian).
Si le fichier est correct, alors rien n’est affiché et la valeur de sortie est 0.
Avec un fichier sshd_config commençant par :
PetitPotDeBeurre on Tartiflette off
La sortie sera :
# sshd -t [sudo] password for stephane: /etc/ssh/sshd_config: line 1: Bad configuration option: PetitPotDeBeurre /etc/ssh/sshd_config: line 2: Bad configuration option: Tartiflette /etc/ssh/sshd_config: terminating, 2 bad configuration options
avec une valeur de sortie de 255.
(test réalisé avec OpenSSH_7.9p1, OpenSSL 1.1.1d)
3. Sudo
Si une erreur est faite dans le fichier /etc/sudoers
qui empêche sa relecture par l’exécutable sudo
, il devient impossible d’utiliser la commande sudo
. visudo
permet d’éviter ce désagrément.
Supposons que l’utilisateur ait ajouté à la ligne 12,
Hello MereGrand
puis enregistre le fichier :
% sudo visudo /etc/sudoers:12:25: erreur de syntaxe Hello MereGrand ^ Et maintenant ?
Lorsque le fichier est incorrect, trois choix sont possibles :
- remodifier le fichier
- quitter sans enregistrer
- quitter en enregistrant (une déception pourrait arriver peu de temps après)
L’éditeur par défaut utilisé par visudo
est vi
. Cela est modifiable en paramétrant des variables d’environnement comme $EDITOR
. (En réalité, c’est plus compliqué: il y a deux autres variables d’environnement possibles et deux variables de configuration de sudo permettent de modifier de comportement des éditeurs par défaut. man sudo
si vous pensez que cette complexité a un intérêt dans votre cas.)
(testé avec visudo version 1.9.5p2, version de la grammaire de visudo : 48)
Faim de loup, fin d’article
Ces outils sont pratiques pour éviter de mettre un service en panne ou s’enfermer dehors. Ils sont complémentaires de vérificateur générique de syntaxe JSON, YAML, etc.