'

Outils pour utilisateurs

Outils du site


doc:incrond

incron

installation

$ sudo aptitude install incron
$ echo root | tee -a /etc/incron.allow

La première commande installe incron, la seconde autorise l'utilisateur root à utiliser incron (par défaut personne n'est autorisé).

configuration

Le moyen le plus simple consiste à ajouter un fichier dans le répertoire /etc/incron.d à la manière de /etc/cron.d. La syntaxe est simple, il faut 3 champs, le nom du fichier ou du répertoire à surveiller (mais pas dans les sous-répertoires), l'action à surveiller (man 5 incrontab section EVENT SYMBOLS) et la commande à exécuter.

Il est possible de passer des paramètres à la commande :

  • $$ : le caractère $
  • $@ : le chemin
  • $# : le nom du fichier sans le chemin complet
  • $% : le nom de l'événement
  • $& : le chiffre correspondant à l'événement

Chaque événement fera l'objet d'un message dans les journaux système.

Dès qu'un fichier est créé dans le répertoire /etc/incron.d, incrond le prend en compte (à croire qu'il s'utilise lui-même ;-) ).

exemple

$ cat > /etc/incron.d/demo
/home/sylvain/tmp/ IN_CREATE,IN_DELETE,IN_MODIFY /home/sylvain/bin/inotify.sh $@$# $%

Cette ligne permet de surveiller les créations, suppressions et modifications dans le répertoire /home/sylvain/tmp/.

Le script exécuté écrit dans un fichier temporaire le nom du fichier avec le chemin complet et le nom de l'action :

$ cat /home/sylvain/bin/inotify.sh
sylvain@moe ~/tmp/c $ cat /srv/d_moe/home/sylvain/bin/inotify.sh 
#!/bin/dash
echo $1 $2 >> /tmp/incron_demo

Essai :

$ cd ~/tmp
$ touch new
$ echo a > new
$ rm new

Dans les journaux système, on retrouve la trace de chaque événement :

$ tail -n 10 /var/log/syslog | grep incron
Mmm DD HH:MM:SS moe incrond[25578]: (system::etc) CMD (/home/sylvain/bin/inotify.sh /home/sylvain/tmp/new IN_CREATE )
Mmm DD HH:MM:SS moe incrond[25578]: (system::etc) CMD (/home/sylvain/bin/inotify.sh /home/sylvain/tmp/new IN_MODIFY )
Mmm DD HH:MM:SS moe incrond[25578]: (system::etc) CMD (/home/sylvain/bin/inotify.sh /home/sylvain/tmp/new IN_DELETE )

Le fichier /tmp/incron_demo:

$ cat /tmp/incron_demo 
/home/sylvain/tmp/new IN_CREATE
/home/sylvain/tmp/new IN_MODIFY
/home/sylvain/tmp/new IN_DELETE

limitations

Si l'on souhaite surveiller des fichiers de configuration, par exemple stockés dans /etc/, la configuration peut vite devenir difficile car incrond ne surveille pas les sous-répertoires. Il faudra donc créé autant de ligne de configuration que de répertoire à surveiller. Le risque de ne pas être exhaustif est donc important.

idées

incrond offre énormément de possibilités. Certaines seront probablement développées ici dans le futur.

surveillance de /etc

La première utilisation est simplement de tracer tous les changements dans les fichiers et répertoire de configuration simplement dans les journaux système (/var/log/...).

On pourrait également imaginer qu'à chaque modification d'un fichier de configuration, incrond envoie un message à l'administrateur via différents moyens.

Il serait aussi possible de créer un script qui commit automatiquement les changements dans les fichiers dans un système de gestion de version comme mercurial ou git. Ce serait très pratique pour suivre les modifications. Si le serveur de gestion de version n'est pas installé sur la même machine et en gérant les droits, on peut alors s'en servir comme d'une brique pour améliorer la sécurité des fichiers de configuration (il faut qu'un éventuel pirate s'introduise dans les deux serveurs pour cacher ces changements de configuration).

À suivre ...


Ce texte est sous licence Art Libre
$Id: incrond.mkd bcf81dfea251 2010/03/29 22:17:42 Sylvain $

doc/incrond.txt · Dernière modification: Le 07/01/2015 à 23:52 (modification externe)