Admettons que l’on veuille exécuter une commande nécessitant une élévation de privilège via sudo (par exemple mount, shutdown, etc) et que l’on veuille rediriger la sortie de cette commande dans un fichier appartenant à root nécessitant donc lui aussi une élévation de privilège (un quelquonque fichier de /etc).
Si on fait la combinaison suivante, cela échouera :
sudo ma_commande >> mon_fichier
En effet le sudo « fait effet » sur ma_commande mais pas sur la redirection, 2 solutions pour palier à ce problème :
1 – Lancer un terminal en super-utilisateur et éxécuter la commande sans le sudo :
sudo -s ma_commande >> mon_fichier
2 – Utiliser la commande bash
sudo bash -c "ma_commande >> mon_fichier"
Pour info voici la commande qui m’a fait me poser cette question :
sudo bash -c "mdadm --detail --scan >> /etc/mdadm/mdadm.conf"
Edit :
18/01/2010 : Une autre solution : http://linux.leunen.com/?p=780