Open Source
Code source libre et gratuit, modifiable par tous.
Cette page présente les notions fondamentales de Linux que tout administrateur système doit maîtriser. Nous aborderons l’architecture du système, la gestion des processus, des utilisateurs et du système de fichiers.
Linux est un système d’exploitation open source créé par Linus Torvalds en 1991. Il est basé sur Unix et constitue aujourd’hui le système le plus utilisé sur les serveurs dans le monde.
Open Source
Code source libre et gratuit, modifiable par tous.
Sécurisé
Architecture robuste avec gestion fine des permissions.
Stable
Conçu pour fonctionner 24/7 sans redémarrage.
Performant
Optimisé pour les charges serveur intensives.
| Distribution | Usage principal | Base |
|---|---|---|
| Ubuntu Server | Serveurs web, cloud | Debian |
| Debian | Serveurs stables | - |
| Rocky Linux | Entreprise | RHEL |
| Alpine | Conteneurs | musl libc |
Le système Linux est organisé en couches distinctes qui interagissent entre elles.
┌─────────────────────────────────────────────────────────────┐│ Applications utilisateur │├─────────────────────────────────────────────────────────────┤│ Shell (Bash) │├─────────────────────────────────────────────────────────────┤│ Bibliothèques système (glibc, etc.) │├─────────────────────────────────────────────────────────────┤│ Appels système (syscalls) │├─────────────────────────────────────────────────────────────┤│ Kernel Linux │├─────────────────────────────────────────────────────────────┤│ Matériel (CPU, RAM, Disques) │└─────────────────────────────────────────────────────────────┘Le Kernel (Noyau)
Le cœur du système. Il gère :
Le Shell
L’interface entre l’utilisateur et le kernel. Le plus courant est Bash (Bourne Again Shell).
Les bibliothèques système
Fournissent des fonctions réutilisables aux applications (glibc, libssl, etc.).
Les applications
Les programmes que vous utilisez : serveurs web, bases de données, outils CLI.
Comprendre le boot Linux est essentiel pour diagnostiquer les problèmes de démarrage.
BIOS/UEFI → Bootloader (GRUB) → Kernel → systemd → ServicesSystemd est le système d’init moderne utilisé par la plupart des distributions.
# Voir l'état du démarragesystemd-analyze
# Détail du temps de boot par servicesystemd-analyze blameBIOS → Bootloader → Kernel → init → Runlevels → ServicesAncien système basé sur des scripts dans /etc/init.d/.
Un processus est une instance d’un programme en cours d’exécution.
# Lister tous les processusps aux
# Affichage interactif en temps réeltophtop # Version améliorée (à installer)
# Rechercher un processuspgrep nginxps aux | grep nginx
# Tuer un processuskill <PID> # Signal SIGTERM (arrêt propre)kill -9 <PID> # Signal SIGKILL (arrêt forcé)killall nginx # Tuer par nom| État | Code | Description |
|---|---|---|
| Running | R | En cours d’exécution |
| Sleeping | S | En attente d’un événement |
| Stopped | T | Arrêté (Ctrl+Z) |
| Zombie | Z | Terminé mais non récupéré par le parent |
Les services (ou daemons) sont des processus qui s’exécutent en arrière-plan.
# Démarrer un servicesudo systemctl start nginx
# Arrêter un servicesudo systemctl stop nginx
# Redémarrer un servicesudo systemctl restart nginx
# Recharger la configuration (sans interruption)sudo systemctl reload nginx
# Activer au démarragesudo systemctl enable nginx
# Désactiver au démarragesudo systemctl disable nginx
# Voir le statutsudo systemctl status nginxLinux est un système multi-utilisateurs. Chaque utilisateur a des droits spécifiques.
root (UID 0)
Superutilisateur avec tous les droits. À utiliser avec précaution.
Utilisateurs système
Comptes pour les services (www-data, mysql, etc.). UID < 1000.
Utilisateurs normaux
Comptes humains avec UID ≥ 1000.
# Créer un utilisateursudo useradd -m -s /bin/bash alice
# Définir un mot de passesudo passwd alice
# Ajouter à un groupesudo usermod -aG sudo alice
# Supprimer un utilisateursudo userdel -r alice # -r supprime aussi le home
# Lister les groupes d'un utilisateurgroups aliceid alice| Fichier | Contenu |
|---|---|
/etc/passwd | Liste des utilisateurs |
/etc/shadow | Mots de passe chiffrés |
/etc/group | Liste des groupes |
/etc/sudoers | Configuration sudo |
Tout dans Linux est un fichier : documents, répertoires, périphériques, processus.
/├── bin/ → Binaires essentiels (ls, cp, mv)├── boot/ → Fichiers de démarrage (kernel, grub)├── dev/ → Fichiers de périphériques├── etc/ → Configuration système├── home/ → Répertoires utilisateurs├── lib/ → Bibliothèques partagées├── media/ → Points de montage amovibles├── mnt/ → Points de montage temporaires├── opt/ → Logiciels optionnels├── proc/ → Informations sur les processus (virtuel)├── root/ → Home de root├── run/ → Données runtime├── sbin/ → Binaires système├── srv/ → Données des services├── sys/ → Informations sur le système (virtuel)├── tmp/ → Fichiers temporaires├── usr/ → Applications utilisateurs└── var/ → Données variables (logs, cache, mail)Chaque fichier a 3 types de permissions pour 3 catégories :
-rwxr-xr-- 1 alice developers 4096 Jan 1 12:00 script.sh│└┬┘└┬┘└┬┘│ │ │ └── Others (o) : r-- (lecture seule)│ │ └───── Group (g) : r-x (lecture + exécution)│ └──────── Owner (u) : rwx (tous les droits)└────────── Type : - (fichier), d (dossier), l (lien)# Modifier les permissionschmod 755 script.sh # rwxr-xr-xchmod u+x script.sh # Ajouter exécution pour ownerchmod go-w fichier.txt # Retirer écriture pour group et others
# Modifier le propriétairechown alice:developers fichier.txtVous connaissez maintenant les bases fondamentales de Linux :
Pour un serveur de production, privilégiez :
sudo et su ?sudo commande : exécute UNE commande en tant que rootsu : change d’utilisateur (nécessite le mot de passe de l’utilisateur cible)su - ou su - root : ouvre un shell root completPréférez sudo qui offre une meilleure traçabilité (logs) et ne nécessite pas de partager le mot de passe root.
# Espace disque par partitiondf -h
# Taille des dossiersdu -sh /var/log/*
# Outil interactifncdu /# Par nomfind / -name "nginx.conf"
# Par typefind /var -type f -name "*.log"
# Avec locate (plus rapide, utilise une base de données)sudo updatedb # Mettre à jour la baselocate nginx.conf