Administration Linux : les commandes essentielles pour debuter

6 min de lecture
Administration Linux : les commandes essentielles pour debuter

Pourquoi maîtriser la ligne de commande

L’administration d’un serveur Linux repose sur six familles de commandes : navigation fichiers (ls, cd, find), gestion des utilisateurs (useradd, chmod), controle des processus (systemctl, kill), diagnostic reseau (ss, ip, curl), stockage (df, du) et automatisation (cron, scripts bash). Ces commandes couvrent 90% des operations quotidiennes sur un serveur de production.

96.3% des serveurs web dans le top 1 million de sites utilisent un systeme Linux ou Unix selon W3Techs. L’administration de ces serveurs passe par le terminal : connexion SSH, configuration, monitoring, deploiement.

Les interfaces graphiques existent (Webmin, Cockpit) mais elles ne couvrent qu’une fraction des operations. La ligne de commande donne un controle total sur le systeme. Chaque action est reproductible, scriptable et documentable.

Se deplacer dans l’arborescence

Le systeme de fichiers Linux s’organise en arborescence depuis la racine /. Les repertoires principaux suivent une convention standardisee :

RepertoireContenu
/etcFichiers de configuration
/var/logJournaux systeme
/homeRepertoires utilisateurs
/optLogiciels tiers
/tmpFichiers temporaires
/usr/binBinaires utilisateur

Les commandes de navigation de base :

pwd                     # Affiche le repertoire courant
ls -la                  # Liste les fichiers avec details et fichiers caches
cd /var/log             # Se deplacer vers /var/log
cd ..                   # Remonter d'un niveau
cd ~                    # Retourner au repertoire personnel

Manipuler les fichiers

cp source.txt dest.txt          # Copier un fichier
cp -r dossier/ copie/           # Copier un repertoire
mv ancien.txt nouveau.txt       # Renommer ou deplacer
rm fichier.txt                  # Supprimer un fichier
rm -rf dossier/                 # Supprimer un repertoire (attention)
mkdir -p chemin/sous-dossier    # Creer une arborescence

La commande rm -rf est irreversible. Aucune corbeille n’existe par defaut en ligne de commande. Verifier deux fois la cible avant d’executer.

Lire et rechercher

cat fichier.txt                 # Afficher le contenu entier
less fichier.txt                # Afficher avec pagination
head -n 20 fichier.txt          # Les 20 premieres lignes
tail -n 50 fichier.txt          # Les 50 dernieres lignes
tail -f /var/log/syslog         # Suivre un fichier en temps reel
grep "erreur" fichier.txt       # Chercher un motif dans un fichier
find /var -name "*.log"         # Trouver des fichiers par nom

La commande tail -f est indispensable pour surveiller les journaux en temps reel. Combiner avec grep pour filtrer : tail -f /var/log/nginx/error.log | grep 502.

Gestion des utilisateurs

Comptes et groupes

useradd -m -s /bin/bash jean    # Creer un utilisateur avec repertoire home
passwd jean                      # Definir le mot de passe
usermod -aG sudo jean           # Ajouter au groupe sudo
userdel -r jean                 # Supprimer l'utilisateur et son home
groups jean                      # Lister les groupes d'un utilisateur

Permissions

Chaque fichier possede trois niveaux de permissions : proprietaire (u), groupe (g), autres (o). Chaque niveau combine lecture (r=4), ecriture (w=2) et execution (x=1).

chmod 755 script.sh             # rwxr-xr-x (proprietaire : tout, reste : lecture+exec)
chmod 644 config.txt            # rw-r--r-- (proprietaire : lecture+ecriture, reste : lecture)
chown www-data:www-data /var/www  # Changer le proprietaire

La regle de base : accorder le minimum de permissions necessaire. 78% des incidents de securite impliquent des permissions trop larges selon le NIST. Un fichier de configuration ne doit pas etre executable. Un script doit etre executable uniquement par les utilisateurs qui ont besoin de le lancer. Le deploiement du MFA sur les comptes SSH renforce cette premiere ligne de defense.

Gestion des processus

Surveiller les processus

ps aux                          # Liste tous les processus
top                             # Moniteur en temps reel (interactif)
htop                            # Version amelioree de top (a installer)
ps aux | grep nginx             # Chercher un processus specifique

Controler les processus

kill 1234                       # Envoyer SIGTERM au processus 1234
kill -9 1234                    # Forcer l'arret (SIGKILL)
systemctl start nginx           # Demarrer un service
systemctl stop nginx            # Arreter un service
systemctl restart nginx         # Redemarrer un service
systemctl status nginx          # Verifier l'etat d'un service
systemctl enable nginx          # Demarrer au boot

La commande kill -9 doit rester un dernier recours. Elle interrompt le processus sans lui laisser le temps de fermer proprement ses connexions et ses fichiers. Utiliser kill (SIGTERM) en premier, attendre quelques secondes, et passer a kill -9 uniquement si le processus ne repond pas.

Reseau

Diagnostic

ip addr                         # Afficher les interfaces et adresses IP
ip route                        # Afficher la table de routage
ss -tlnp                        # Lister les ports en ecoute
ping -c 4 8.8.8.8              # Tester la connectivite reseau
traceroute google.com           # Tracer la route vers une destination
curl -I https://example.com     # Verifier les headers HTTP
dig example.com                 # Resolution DNS

La commande ss -tlnp est la premiere a executer pour verifier quels services ecoutent sur quels ports. Un service qui ecoute sur 0.0.0.0 est accessible depuis l’exterieur. Un service sur 127.0.0.1 est limite au serveur local. Les memes principes de diagnostic s’appliquent a l’optimisation d’un reseau domestique en contexte de teletravail.

Pare-feu

ufw status                      # Etat du pare-feu (Ubuntu)
ufw allow 22/tcp                # Autoriser SSH
ufw allow 80/tcp                # Autoriser HTTP
ufw allow 443/tcp               # Autoriser HTTPS
ufw enable                      # Activer le pare-feu

Activer le pare-feu avant de le configurer risque de couper la connexion SSH. Toujours autoriser le port SSH (22 ou port personnalise) en premier. La configuration du pare-feu fait partie des mesures de base pour proteger un serveur des cybermenaces.

Disque et stockage

df -h                           # Espace disque par partition
du -sh /var/log                 # Taille d'un repertoire
lsblk                           # Lister les disques et partitions
ncdu /                          # Analyse interactive de l'espace (a installer)

Un disque plein bloque le serveur. Configurer une alerte a 80% d’occupation. Les repertoires qui grossissent le plus vite sont generalement /var/log (journaux) et /tmp (fichiers temporaires).

Scripts et automatisation

Cron

Le service cron execute des commandes a intervalles reguliers :

crontab -e                      # Editer les taches planifiees
crontab -l                      # Lister les taches planifiees

Format d’une ligne cron : minute heure jour_mois mois jour_semaine commande

0 2 * * * /opt/scripts/backup.sh       # Tous les jours a 2h00
*/5 * * * * /opt/scripts/check.sh      # Toutes les 5 minutes
0 0 * * 0 /opt/scripts/cleanup.sh      # Tous les dimanches a minuit

Rediriger la sortie des crons vers un fichier de log pour diagnostiquer les echecs : 0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1.

Scripts bash

Un script bash rassemble plusieurs commandes dans un fichier executable :

#!/bin/bash
# Sauvegarde du repertoire /var/www
DATE=$(date +%Y%m%d)
tar -czf /backup/www-$DATE.tar.gz /var/www
find /backup -name "www-*.tar.gz" -mtime +30 -delete
echo "Sauvegarde terminee : www-$DATE.tar.gz"

Rendre le script executable avec chmod +x script.sh puis le lancer avec ./script.sh.

Bonnes pratiques

  • Utiliser sudo plutot que de travailler en root. Le compte root a un pouvoir de destruction illimite. Sudo trace chaque commande privilegiee dans les journaux.
  • Documenter les modifications. Un fichier /root/changelog.txt ou un depot Git pour /etc trace l’historique des changements de configuration.
  • Tester avant de deployer. Modifier une configuration nginx ou ssh sur un serveur de test avant le serveur de production.
  • Automatiser les taches repetitives. Chaque operation manuelle repetee est une source d’erreur. Si une tache se repete plus de trois fois, en faire un script. L’automatisation prend tout son sens lors d’une migration vers le cloud ou les scripts de deploiement remplacent les interventions manuelles.

La ligne de commande Linux s’apprend par la pratique. Monter un VPS a 4 EUR par mois et s’exercer sur un serveur reel accelere l’apprentissage par rapport aux tutoriels theoriques. Les erreurs sur un serveur de test ne coûtent rien. Les memes erreurs en production coûtent du temps et de la credibilite.

Sur le meme sujet