objectif
Écrire ou modifier des fichiers nécessitant les privilèges root sans utiliser un éditeur, en évitant les pièges des redirections avec sudo.
code minimal
# écrire (écrase) /etc/app.conf
echo 'enabled=true' | sudo tee /etc/app.conf >/dev/null
utilisation
# ajouter (append) une ligne en fin de fichier
echo 'feature_x=true' | sudo tee -a /etc/app.conf >/dev/null
# écrire plusieurs lignes avec here-doc sécurisé
sudo tee /etc/app.conf >/dev/null <<'EOF'
enabled=true
port=8080
EOF
# créer le dossier cible au besoin avec les bons droits
sudo install -d -m 0755 /etc/myapp
echo 'mode=prod' | sudo tee /etc/myapp/app.conf >/dev/null
# écriture atomique dans /etc (temp dans le même dossier)
tmp="$(sudo mktemp -p /etc .app.conf.XXXXXX)"
sudo tee "$tmp" >/dev/null <<'EOF'
enabled=true
port=8080
EOF
sudo mv -f "$tmp" /etc/app.conf
# définir précisément propriétaire et permissions
echo 'enabled=true' | sudo tee /etc/app.conf >/dev/null
sudo chown root:root /etc/app.conf
sudo chmod 0644 /etc/app.conf
# idempotent: n'ajouter la ligne que si absente
grep -qxF 'feature_y=true' /etc/app.conf || echo 'feature_y=true' | sudo tee -a /etc/app.conf >/dev/null
variante(s) utile(s)
# avec envsubst pour templater puis écrire en root
export APP_PORT=8080
envsubst '${APP_PORT}' < app.conf.tmpl | sudo tee /etc/app.conf >/dev/null
# éditer en toute sécurité avec sudoedit (ouvre votre éditeur, copie atomiquement)
sudoedit /etc/app.conf
# lecture protégée (ne pas afficher les secrets à l'écran)
sudo cat /etc/app.conf > /tmp/app.conf.safe && sed -n '1,5p' /tmp/app.conf.safe && rm -f /tmp/app.conf.safe
notes
sudo echo ... > /fichieréchoue car la redirection>est faite par le shell non privilégié;sudo teecontourne ce piège.- utilisez
-apour ajouter sans écraser; évitez>>avec sudo. - pour une écriture atomique, créez le fichier temporaire dans le même dossier cible puis
mv -fsous sudo. - définissez explicitement permissions et propriétaire pour les fichiers de configuration sensibles.