septembre
2010
Automatiser les mises à jour de sécurité en cas d’absence prolongée est surement une bonne pratique. Par contre, mettre à jour automatiquement l’ensemble des paquets de votre distribution favorite semble être une mauvaise idée. Problème: comment forcer notre gestionnaire de paquets préféré à ne procéder qu’à la mise à jour des paquets de sécurité ? Par défaut, apt-get lit le fichier /etc/apt/sources.list et l’ensemble des fichiers situés sous /etc/apt/sources.list.d/ pour trouver les dépôts. Dans notre cas, les seuls paquets qui nous intéressent se trouvent sous:
ftp://security.debian.org/debian-security/dists/lenny/updates/contrib
ftp://security.debian.org/debian-security/dists/lenny/updates/non-free
C’est indiqué par le fichier sources.list par la ligne:
deb http://security.debian.org/ lenny/updates main contrib non-free
En lisant la page de man d’apt-get, on remarque l’option -o qui permet de définir une option de configuration. La syntaxe est la suivante:
apt-get -o <ConfigurationOption>=<value>
La suite de la page de manuel liste les différents mots-clés possibles pour
Vous trouverez ci-dessous un petit script qui, lancé tous les jours par cron, fait les mises à jours de sécurité, puis envoie un mail de statut à l’administrateur.
Notez l’option -y lors de l’appel à apt-get upgrade et qui permet de s’affranchir du prompt de confirmation.
% echo 'deb http://security.debian.org/ lenny/updates main' > /etc/apt/sources.list.security
% chmod 0400 /etc/apt/sources.list.security
% chattr +i /etc/apt/sources.list.security
% cat > /etc/cron.daily/securityAutoUpgrades
#!/bin/bash
aptSecuritySourceFile=/etc/apt/sources.list.security
if [ -f $aptSecuritySourceFile ];
then
(/usr/bin/apt-get -o Dir::Etc::SourceList=$aptSecuritySourceFile update &&
/usr/bin/apt-get -y -o Dir::Etc::SourceList=$aptSecuritySourceFile upgrade) | mail -s "[`hostname`] Security update" root
fi
% chmod u+x /etc/cron.daily/securityAutoUpgrades
% chattr +i /etc/cron.daily/securityAutoUpgrades
%