Linux est le système d'exploitation de référence pour les serveurs et l'infrastructure IT. Cette section couvre les commandes essentielles et les bonnes pratiques d'administration système.

📌 Distributions populaires :
  • Ubuntu/Debian : Conviviales, bonnes pour débuter
  • RHEL/CentOS/Rocky : Entreprise, support long terme
  • Arch : Rolling release, personnalisable
  • Alpine : Légère, idéale pour conteneurs
Bash
# Navigation
pwd                    # Afficher le répertoire actuel
ls                     # Lister les fichiers
ls -la                 # Liste détaillée avec fichiers cachés
ls -lh                 # Tailles lisibles (human-readable)
cd /var/www            # Changer de répertoire
cd ..                  # Remonter d'un niveau
cd ~                   # Aller au home directory
cd -                   # Revenir au répertoire précédent

# Manipulation fichiers
touch fichier.txt      # Créer un fichier vide
mkdir dossier          # Créer un dossier
mkdir -p a/b/c         # Créer une arborescence
cp source dest         # Copier
cp -r dossier/ dest/   # Copier récursivement
mv ancien nouveau      # Renommer/déplacer
rm fichier.txt         # Supprimer un fichier
rm -rf dossier/        # Supprimer récursivement (DANGER!)
rmdir dossier          # Supprimer un dossier vide

# Recherche
find / -name "*.log"   # Trouver tous les fichiers .log
find . -type f -size +10M  # Fichiers > 10MB
locate fichier         # Recherche rapide (base de données)
which python3          # Trouver l'emplacement d'une commande
whereis nginx          # Localiser binaire, source, man page

Visualisation du Contenu

Bash
# Afficher contenu
cat fichier.txt        # Tout le fichier
head fichier.txt       # 10 premières lignes
head -n 20 fichier.txt # 20 premières lignes
tail fichier.txt       # 10 dernières lignes
tail -n 50 fichier.txt # 50 dernières lignes
tail -f /var/log/syslog  # Suivre en temps réel

# Pagination
less fichier.txt       # Naviguer dans un fichier (q pour quitter)
more fichier.txt       # Affichage page par page

# Édition
nano fichier.txt       # Éditeur simple
vim fichier.txt        # Éditeur avancé
vi fichier.txt         # Vi classique

# Compter
wc fichier.txt         # Lignes, mots, caractères
wc -l fichier.txt      # Nombre de lignes

# Recherche dans fichiers
grep "erreur" fichier.log          # Chercher "erreur"
grep -r "TODO" .                   # Recherche récursive
grep -i "error" fichier.log        # Insensible à la casse
grep -v "debug" fichier.log        # Exclure les lignes avec "debug"
grep -n "error" fichier.log        # Avec numéros de ligne

Permissions et Propriétés

Bash
# Voir les permissions
ls -l fichier.txt
# -rw-r--r-- 1 user group 1024 Jan 1 12:00 fichier.txt
#  ^^^ ^^^ ^^^
#  |   |   |
#  |   |   +-- Autres (r = lecture)
#  |   +------ Groupe (r = lecture)
#  +---------- Propriétaire (rw = lecture + écriture)

# Changer permissions (chmod)
chmod 755 script.sh           # rwxr-xr-x
chmod +x script.sh            # Ajouter exécution
chmod -w fichier.txt          # Retirer écriture
chmod u+x script.sh           # User: ajout exec
chmod g-w fichier.txt         # Group: retrait write
chmod o+r fichier.txt         # Others: ajout read

# Permissions numériques
# 4 = read, 2 = write, 1 = execute
# 755 = rwxr-xr-x (7=4+2+1, 5=4+1, 5=4+1)
# 644 = rw-r--r-- (6=4+2, 4, 4)
# 700 = rwx------ (propriétaire seul)

# Changer propriétaire
chown user:group fichier.txt  # Changer user et group
chown user fichier.txt        # Changer seulement user
chown -R user:group dossier/  # Récursif

# Changer uniquement le groupe
chgrp group fichier.txt

Gestion des Processus

Bash
# Lister processus
ps aux                 # Tous les processus
ps aux | grep nginx    # Chercher nginx
top                    # Monitoring temps réel (q pour quitter)
htop                   # Top amélioré (si installé)

# Informations détaillées
pgrep -a nginx         # Trouver PID d'un processus
pidof nginx            # PID de nginx

# Gestion processus
kill 1234              # Arrêter proprement (SIGTERM)
kill -9 1234           # Forcer l'arrêt (SIGKILL)
killall nginx          # Tuer tous les processus nginx
pkill -f "python script.py"  # Tuer par nom

# Priorités
nice -n 10 ./script.sh # Lancer avec priorité basse
renice -n -5 -p 1234   # Changer priorité d'un processus

# Background/Foreground
./script.sh &          # Lancer en arrière-plan
jobs                   # Lister jobs en background
fg %1                  # Ramener job 1 au foreground
bg %1                  # Continuer job 1 en background
Ctrl+Z                 # Suspendre processus actuel
disown -h %1           # Détacher job du terminal

# Screen & tmux (sessions persistantes)
screen                 # Nouvelle session
screen -ls             # Lister sessions
screen -r              # Rattacher session
Ctrl+A D               # Détacher session

tmux                   # Nouvelle session tmux
tmux ls                # Lister sessions
tmux attach            # Rattacher dernière session

Informations Système

Bash
# Informations générales
uname -a               # Infos système
hostname               # Nom de la machine
uptime                 # Temps depuis démarrage
date                   # Date et heure
cal                    # Calendrier

# CPU
lscpu                  # Infos CPU détaillées
cat /proc/cpuinfo      # Infos processeur
nproc                  # Nombre de cœurs

# Mémoire
free -h                # Utilisation mémoire
cat /proc/meminfo      # Détails mémoire

# Disque
df -h                  # Espace disque
du -sh *               # Taille des dossiers
du -h --max-depth=1    # Taille niveau 1
lsblk                  # Lister disques et partitions
fdisk -l               # Partitions détaillées (root)

# Matériel
lshw                   # Liste matériel (root)
lspci                  # Périphériques PCI
lsusb                  # Périphériques USB
dmidecode              # Infos BIOS/DMI (root)

# Distribution
cat /etc/os-release    # Infos distribution
lsb_release -a         # Version Ubuntu/Debian

Réseau

Bash
# Interfaces réseau
ip addr                # Afficher IP et interfaces
ip a                   # Version courte
ifconfig               # Ancienne commande (deprecated)
ip link show           # État interfaces

# Configuration
ip addr add 192.168.1.100/24 dev eth0  # Ajouter IP
ip link set eth0 up    # Activer interface
ip link set eth0 down  # Désactiver interface

# Routage
ip route               # Table de routage
route -n               # Ancienne syntaxe
traceroute google.com  # Tracer route

# DNS
cat /etc/resolv.conf   # Serveurs DNS
nslookup google.com    # Résolution DNS
dig google.com         # DNS détaillé
host google.com        # DNS simple

# Connectivité
ping -c 4 google.com   # Test connexion (4 paquets)
curl -I https://example.com  # Headers HTTP
wget https://example.com/file  # Télécharger fichier

# Ports et connexions
netstat -tulpn         # Ports écoutés
ss -tulpn              # Alternative moderne
lsof -i :80            # Processus sur port 80
nc -zv host 22         # Tester port

# Firewall
sudo ufw status        # État firewall (Ubuntu)
sudo ufw enable        # Activer firewall
sudo ufw allow 22      # Autoriser SSH
sudo ufw allow 80/tcp  # Autoriser HTTP
sudo ufw deny 23       # Bloquer telnet

# iptables (avancé)
sudo iptables -L       # Lister règles
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Gestion des Paquets

Ubuntu/Debian (apt)

Bash
# Mise à jour
sudo apt update              # Actualiser liste paquets
sudo apt upgrade             # Installer mises à jour
sudo apt full-upgrade        # Upgrade complet
sudo apt dist-upgrade        # Upgrade distribution

# Installation/suppression
sudo apt install nginx       # Installer nginx
sudo apt install php mysql-server  # Installer plusieurs
sudo apt remove nginx        # Désinstaller
sudo apt purge nginx         # Désinstaller + configs
sudo apt autoremove          # Nettoyer dépendances

# Recherche
apt search nginx             # Chercher paquet
apt show nginx               # Infos sur paquet
apt list --installed         # Paquets installés
apt list --upgradable        # Mises à jour disponibles

RHEL/CentOS (yum/dnf)

Bash
sudo yum update              # Mise à jour
sudo yum install nginx       # Installer
sudo yum remove nginx        # Désinstaller
sudo yum search nginx        # Chercher
yum list installed           # Paquets installés

Gestion des Services (systemd)

Bash
# État services
sudo systemctl status nginx       # État nginx
sudo systemctl is-active nginx    # Actif?
sudo systemctl is-enabled nginx   # Démarre au boot?

# Contrôle services
sudo systemctl start nginx        # Démarrer
sudo systemctl stop nginx         # Arrêter
sudo systemctl restart nginx      # Redémarrer
sudo systemctl reload nginx       # Recharger config

# Démarrage automatique
sudo systemctl enable nginx       # Activer au boot
sudo systemctl disable nginx      # Désactiver au boot

# Logs
sudo journalctl -u nginx          # Logs du service
sudo journalctl -u nginx -f       # Suivre logs
sudo journalctl --since "1 hour ago"  # Dernière heure
sudo journalctl --since today     # Aujourd'hui

# Lister services
systemctl list-units --type=service  # Tous services
systemctl list-unit-files --type=service  # Avec état

Archives et Compression

Bash
# tar (archive sans compression)
tar -cvf archive.tar dossier/     # Créer
tar -xvf archive.tar              # Extraire
tar -tvf archive.tar              # Lister contenu

# tar.gz (gzip)
tar -czvf archive.tar.gz dossier/ # Créer
tar -xzvf archive.tar.gz          # Extraire

# tar.bz2 (bzip2, meilleure compression)
tar -cjvf archive.tar.bz2 dossier/  # Créer
tar -xjvf archive.tar.bz2           # Extraire

# zip
zip -r archive.zip dossier/       # Créer
unzip archive.zip                 # Extraire
unzip -l archive.zip              # Lister contenu

# Compression individuelle
gzip fichier.txt                  # Créer fichier.txt.gz
gunzip fichier.txt.gz             # Décompresser
bzip2 fichier.txt                 # Créer fichier.txt.bz2
bunzip2 fichier.txt.bz2           # Décompresser

Utilisateurs et Groupes

Bash
# Informations
whoami                 # Utilisateur actuel
id                     # UID, GID, groupes
w                      # Utilisateurs connectés
last                   # Dernières connexions

# Gestion utilisateurs
sudo adduser john      # Créer utilisateur (interactif)
sudo useradd -m john   # Créer utilisateur (manuel)
sudo userdel john      # Supprimer utilisateur
sudo userdel -r john   # Supprimer + home directory
sudo passwd john       # Changer mot de passe

# Groupes
sudo groupadd dev      # Créer groupe
sudo usermod -aG dev john  # Ajouter user à groupe
sudo gpasswd -d john dev   # Retirer user du groupe
groups john            # Groupes d'un user

# Sudo
sudo visudo            # Éditer sudoers
# Ajouter: john ALL=(ALL:ALL) ALL

# Switch user
su - john              # Devenir john
sudo -i                # Shell root
sudo -u john commande  # Exécuter en tant que john

Tâches Planifiées (Cron)

Bash
# Éditer crontab
crontab -e             # Éditer pour user actuel
sudo crontab -e        # Éditer pour root
crontab -l             # Lister tâches
crontab -r             # Supprimer toutes les tâches

# Format crontab
# ┌─── Minute (0-59)
# │ ┌─── Heure (0-23)
# │ │ ┌─── Jour du mois (1-31)
# │ │ │ ┌─── Mois (1-12)
# │ │ │ │ ┌─── Jour de la semaine (0-7, 0 et 7 = dimanche)
# * * * * * commande

# Exemples
0 2 * * * /script/backup.sh        # 2h du matin
*/5 * * * * /script/check.sh       # Toutes les 5 minutes
0 */2 * * * /script/hourly.sh      # Toutes les 2 heures
0 9 * * 1 /script/monday.sh        # Lundi 9h
0 0 1 * * /script/monthly.sh       # 1er du mois à minuit
@reboot /script/startup.sh         # Au démarrage
@daily /script/daily.sh            # Quotidien
@weekly /script/weekly.sh          # Hebdomadaire

Bonnes Pratiques

✅ Sécurité et administration :
  • Mises à jour régulières : sudo apt update && sudo apt upgrade
  • Firewall : Activer ufw et configurer les règles
  • SSH sécurisé : Désactiver root login, utiliser clés SSH
  • Utilisateurs dédiés : Ne pas tout faire en root
  • Logs : Surveiller /var/log régulièrement
  • Backups : Automatiser avec rsync ou Restic
  • fail2ban : Protéger contre bruteforce
  • Monitoring : Installer htop, glances, netdata

Ressources