Linux — utilisation avancée et administration · Étape 15

Modifie des fichiers avec vi, vim et nano

Édite une configuration sans perdre l’original, vérifie le diff et valide le résultat avant remplacement.

Durée indicative · ~1 h 30Niveau intermédiairePrérequis conseillé · Leçon 14 — paquets Debian et Red HatPratique · TP
L’idée reçue

« Savoir ouvrir un éditeur suffit pour modifier une configuration système. »

L’opération complète inclut sauvegarde, droits, modification minimale, diff, validation syntaxique, remplacement contrôlé et rollback.

01Prépare une copie de travail

export LAB="/tmp/soria-linux-processes-$USER"
cp -a "$LAB/config/soria-agent.conf" "$LAB/config/soria-agent.conf.bak"
cp -a "$LAB/config/soria-agent.conf" "$LAB/config/soria-agent.conf.work"
stat -c '%a %U:%G %n' "$LAB/config/"soria-agent.conf*

Travaille sur la copie .work. Le fichier .bak fournit un rollback immédiat.

02Utilise vi ou vim

vi "$LAB/config/soria-agent.conf.work"
Action vi/vim
Commande
Effet
passer en insertion
i
modifier le texte
revenir au mode normal
Esc
quitter l’insertion
rechercher
/mot
trouver la prochaine occurrence
enregistrer
:w
écrire le fichier
quitter
:q
quitter si aucun changement non sauvé
abandonner
:q!
quitter sans enregistrer

Modifie interval_seconds de 10 à 30 et log_level de info à warning.

03Utilise nano comme alternative

nano "$LAB/config/soria-agent.conf.work"

Dans nano, Ctrl+O enregistre, Ctrl+W recherche et Ctrl+X quitte. Les raccourcis affichés en bas utilisent le symbole ^ pour Ctrl.

04Compare avant de remplacer

diff -u "$LAB/config/soria-agent.conf.bak" "$LAB/config/soria-agent.conf.work" || true

grep -E '^(agent_name|interval_seconds|log_level|output_file)=' "$LAB/config/soria-agent.conf.work"
Un diff doit montrer uniquement les deux valeurs prévues. Toute autre modification doit être expliquée ou annulée.

05Valide la structure

awk -F= '
/^[[:space:]]*#/ || /^[[:space:]]*$/ { next }
NF != 2 { bad=1; print "invalid line:", NR, $0 }
END { exit bad }
' "$LAB/config/soria-agent.conf.work"

grep -qx 'interval_seconds=30' "$LAB/config/soria-agent.conf.work"
grep -qx 'log_level=warning' "$LAB/config/soria-agent.conf.work"

Dans un vrai service, remplace cette validation générique par la commande native : par exemple sshd -t, nginx -t ou visudo -c.

06Remplace et vérifie

install -m 0644 "$LAB/config/soria-agent.conf.work" "$LAB/config/soria-agent.conf.new"
mv "$LAB/config/soria-agent.conf.new" "$LAB/config/soria-agent.conf"
diff -u "$LAB/config/soria-agent.conf.expected" "$LAB/config/soria-agent.conf"

Créer un nouveau fichier puis le renommer limite la fenêtre où la destination pourrait être partiellement écrite.

07Teste le rollback

cp -a "$LAB/config/soria-agent.conf.bak" "$LAB/config/soria-agent.conf"
diff -u "$LAB/config/soria-agent.conf.bak" "$LAB/config/soria-agent.conf"

08Situe Emacs

Emacs est un environnement extensible disposant d’un éditeur puissant, d’un gestionnaire de paquets et de nombreux modes. Il n’est pas requis pour ce parcours ; l’objectif opérationnel est de pouvoir intervenir avec vi/vim, presque toujours disponible, et nano lorsqu’il est installé.

Challenge autonome

Modifie une configuration réelle en sécurité

Choisis un fichier non critique dans une VM de laboratoire. Sauvegarde métadonnées et contenu, effectue une seule modification, montre le diff, exécute le validateur natif, applique, vérifie puis restaure la version initiale.

09Nettoie le laboratoire

./module3-processes-software-lab.sh stop
./module3-processes-software-lab.sh reset

Ce que tu retiens

L’éditeur n’est qu’un outil. La compétence d’administration consiste à préserver l’original, limiter le changement, valider, appliquer de manière contrôlée et savoir revenir en arrière.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.