Après avoir installé Linux sur votre machine, que ce soit via une procédure classique décrite dans ce guide d’installation Linux ou grâce à WSL2 pour une utilisation sous Windows (voir ici), vous voici prêt à entrer dans le cœur du système.
Nous allons aborder des concepts essentiels comme l’architecture du système, le rôle du noyau, la gestion des processus, des fichiers et des utilisateurs, ainsi que la manière dont Linux gère le réseau et les services.
À la fin vous aurez une compréhension globale qui vous permettra d’approfondir les aspects pratiques dans la suite de votre parcours.
Qu’est-ce que Linux ?
Section intitulée « Qu’est-ce que Linux ? »Linux est un système d’exploitation open source de type Unix, créé en 1991 par Linus Torvalds. À l’origine, le terme « Linux » désignait uniquement le noyau du système, mais par métonymie, il est aujourd’hui couramment utilisé pour désigner l’ensemble du système d’exploitation, qui combine le noyau Linux avec des outils issus du projet GNU .
Composants principaux de Linux
Section intitulée « Composants principaux de Linux »-
Noyau (Kernel) : C’est le cœur du système. Il gère les ressources matérielles, la mémoire, les processus et les périphériques. Le noyau assure la communication entre le matériel et les logiciels .
-
Shell : Il s’agit de l’interface en ligne de commande qui permet aux utilisateurs d’interagir avec le système. Le shell interprète les commandes saisies et les transmet au noyau pour exécution. Il existe plusieurs shells, dont Bash, Zsh et Fish. Le shell est essentiel pour l’administration système, l’automatisation des tâches et le développement d’applications. Il permet aux utilisateurs d’exécuter des commandes, de gérer des fichiers, de configurer le système et d’interagir avec d’autres programmes. Le shell est également utilisé pour écrire des scripts, qui sont des séquences de commandes exécutées automatiquement. Ces scripts peuvent être utilisés pour automatiser des tâches répétitives, gérer des configurations système, effectuer des sauvegardes, déployer des applications, etc. Plus de détails sur les shells dans la section Shells Linux.
-
Outils CLI : Ce sont des outils essentiels qui complètent le noyau pour former un système d’exploitation fonctionnel. Ils incluent outils toute la gamme de commandes et d’utilitaires qui permettent aux utilisateurs d’effectuer des tâches variées, telles que la gestion des fichiers, la configuration du réseau, la surveillance des performances, etc. Ces outils sont souvent fournis par le projet GNU et d’autres projets open source. Ils comprennent des commandes de base comme
ls,cp,mv,rm, ainsi que des utilitaires plus avancés pour la gestion des systèmes de fichiers, la gestion des processus, la configuration du réseau, la gestion des utilisateurs, etc. Plus de détails sur ces commandes dans la section Commandes Linux. -
Applications : En plus des composants de base, les distributions Linux incluent souvent une variété d’applications pour des tâches spécifiques, allant des navigateurs web aux suites bureautiques. Ces applications peuvent être installées via des gestionnaires de paquets, qui facilitent l’installation, la mise à jour et la suppression de ces logiciels.
Distributions Linux
Section intitulée « Distributions Linux »Une distribution Linux est un ensemble cohérent qui combine le noyau Linux avec des utilitaires GNU, un système d’initialisation, des gestionnaires de paquets et d’autres logiciels. Chaque distribution est adaptée à des besoins spécifiques, qu’il s’agisse de serveurs, de postes de travail ou d’appareils embarqués .
Open Source et communauté
Section intitulée « Open Source et communauté »Linux est distribué sous la licence publique générale GNU (GPL), ce qui signifie que son code source est librement accessible, modifiable et redistribuable. Cette nature open source a favorisé une vaste communauté de développeurs et d’utilisateurs qui contribuent activement à son développement et à son amélioration continue.
Architecture du système Linux
Section intitulée « Architecture du système Linux »Le fonctionnement de Linux repose sur une architecture en couches qui garantit souplesse, stabilité et sécurité. À la base, le matériel : processeur, mémoire, périphériques. Ce matériel est contrôlé par le noyau Linux, qui agit comme un intermédiaire entre la machine et les logiciels utilisateurs.
Les couches principales
Section intitulée « Les couches principales »-
Matériel Il comprend les composants physiques (CPU, RAM, disques…).
-
Noyau Linux Le kernel est responsable de :
- la gestion des ressources matérielles,
- la gestion des processus,
- la gestion de la mémoire,
- la gestion du système de fichiers,
-
Interface système (APIs) Le noyau expose des interfaces pour permettre aux programmes d’accéder aux fonctionnalités systèmes (exemple : appels système
read(),write()). -
Shells et interfaces utilisateur Les utilisateurs interagissent avec le système grâce aux Shells (Bash, Zsh) et aux Interfaces graphiques (GNOME, KDE).
-
Applications Les applications utilisent les services fournis par le noyau via des appels système.
Mode utilisateur vs mode noyau
Section intitulée « Mode utilisateur vs mode noyau »Linux fonctionne en deux modes distincts :
- Mode noyau : le noyau s’exécute avec tous les droits matériels.
- Mode utilisateur : les applications tournent avec des privilèges restreints pour éviter d’endommager le système.
Les communications entre couches
Section intitulée « Les communications entre couches »Lorsqu’une application utilisateur a besoin d’un service système (lire un fichier, ouvrir un socket…), elle fait un appel système qui traverse la couche utilisateur pour atteindre le noyau.
Illustration du modèle
Section intitulée « Illustration du modèle »Pour comprendre l’enchaînement des couches, voici un scénario :
- Vous tapez
lsdans un terminal. - Le shell interprète la commande.
- La commande utilise des appels système pour lire le contenu du répertoire.
- Le noyau communique avec le système de fichiers (matériel) pour récupérer les données.
Ce fonctionnement structuré garantit que chaque composant a un rôle précis et que le système reste modulaire et sécurisé.
Le processus de démarrage
Section intitulée « Le processus de démarrage »Le démarrage d’un système Linux suit un enchaînement d’étapes précises qui permettent de passer d’une machine éteinte à un système pleinement opérationnel. Comprendre ces étapes est fondamental pour diagnostiquer des problèmes de boot ou optimiser le temps de démarrage.
Les étapes clés
Section intitulée « Les étapes clés »-
BIOS/UEFI À l’allumage, le BIOS ou l’UEFI initialise le matériel. Il détermine l’ordre de boot et lance le chargeur de démarrage.
-
Chargeur de démarrage (GRUB/systemd-boot) Le chargeur comme GRUB2 propose un menu de sélection du système à démarrer. Il charge ensuite le noyau Linux en mémoire.
-
Chargement du noyau Une fois en mémoire, le noyau détecte le matériel, monte le système de fichiers racine
/, et démarre le processus PID 1. -
Systemd (init) La gestion des services est ensuite prise en charge par systemd, qui remplace les anciens systèmes init. Il lance en parallèle les services nécessaires. Cette partie est développée ici.
Gestion des processus
Section intitulée « Gestion des processus »Sous Linux, chaque programme actif est un processus, identifié par un PID. Ces processus sont organisés en arborescence (parent/enfant) et passent par différents états : actif, suspendu, zombie.
Les commandes clés incluent :
ps auxtopkill <PID>La priorité des processus peut être ajustée avec nice ou renice. Ces
notions, indispensables pour surveiller et gérer efficacement votre système,
sont détaillées dans le guide dédié : Gestion des processus
Linux.
La Gestion des services sous Linux
Section intitulée « La Gestion des services sous Linux »La gestion des services sous Linux permet de contrôler les programmes qui
tournent en arrière-plan (appelés aussi démons). Avec l’arrivée de
systemd, cette gestion est centralisée via la commande systemctl, qui
permet de démarrer, arrêter, activer ou surveiller ces services.
Quelques commandes essentielles :
systemctl start nom_servicesystemctl stop nom_servicesystemctl status nom_serviceLes services sont définis par des fichiers unités, qui spécifient comment chaque service doit être lancé et contrôlé. Pour aller plus loin : Gestion des services Linux.
La gestion des utilisateurs sous Linux
Section intitulée « La gestion des utilisateurs sous Linux »Linux gère l’accès aux ressources grâce à un système d’utilisateurs et de
groupes, chaque utilisateur étant membre d’au moins un groupe. Le
super-utilisateur (root) dispose de privilèges complets pour administrer le
système. Les comptes utilisateurs sont créés avec useradd, modifiés avec
usermod et supprimés avec userdel. Les informations d’authentification sont
stockées dans /etc/passwd (utilisateurs) et /etc/group (groupes).
L’élévation de privilèges, via des outils comme sudo, permet aux
utilisateurs d’exécuter des commandes avec des droits temporaires plus élevés.
Ce mécanisme, crucial pour la sécurité, doit être maîtrisé pour éviter des abus
ou des failles.
Pour approfondir ces notions : Gestion des utilisateurs.
Le système de fichiers Linux
Section intitulée « Le système de fichiers Linux »Le système de fichiers Linux organise les données sous forme d’une arborescence,
débutant à la racine /. Chaque répertoire joue un rôle spécifique : /bin pour
les commandes essentielles, /etc pour la configuration, /home pour les
répertoires utilisateurs, ou encore /var/log pour les journaux. Cette
structure cohérente facilite la gestion des ressources et des services système.
Les permissions (lecture, écriture, exécution) définissent les droits d’accès pour le propriétaire, le groupe et les autres utilisateurs. Elles peuvent être gérées en mode octal (ex. chmod 755 fichier) ou symbolique (ex. chmod u=rw,g=r,o=). Des attributs spéciaux comme le sticky bit, le setgid et le setuid renforcent la sécurité, notamment sur les répertoires sensibles.
Pour des explications détaillées et des exemples pratiques, consultez le guide Système de fichiers Linux.
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
📋 Récapitulatif de vos réponses
Vérifiez vos réponses avant de soumettre. Cliquez sur une question pour la modifier.
Détail des réponses
Conclusion
Section intitulée « Conclusion »Maintenant que vous avez une vue d’ensemble du fonctionnement de Linux, vous disposez des bases indispensables pour administrer efficacement un serveur ou un poste de travail sous Linux. Vous avez découvert les principaux composants du système : du noyau aux processus, des services aux utilisateurs, sans oublier le système de fichiers qui structure toutes vos données.
Ces notions vous permettront :
- de mieux comprendre ce qui se passe « sous le capot »,
- d’anticiper les problèmes courants,
- et de progresser vers des tâches plus avancées comme la sécurisation, la gestion réseau ou l’automatisation.
La suite de votre apprentissage vous amènera à approfondir chaque aspect de manière plus détaillée grâce aux guides dédiés disponibles dans la formation. Pratiquez régulièrement ces concepts de base pour consolider vos acquis et devenir à l’aise avec l’administration Linux au quotidien.
FAQ : Questions Fréquentes
Section intitulée « FAQ : Questions Fréquentes »Linux est un système d'exploitation open source de type Unix, créé en 1991 par Linus Torvalds.
Définition
- À l'origine : uniquement le noyau (kernel)
- Aujourd'hui : désigne l'ensemble du système (noyau + outils GNU)
Caractéristiques clés
- Libre et gratuit : code source accessible à tous
- Multi-utilisateur et multi-tâches
- Portable : fonctionne sur serveurs, PC, mobiles, embarqué
- Sécurisé : gestion fine des permissions
Exemples d'utilisation
- 90%+ des serveurs web dans le monde
- Android (basé sur le noyau Linux)
- Supercalculateurs (100% du Top 500)
Architecture en couches
| Composant | Rôle |
|---|---|
| Noyau (Kernel) | Gère matériel, mémoire, processus |
| Shell | Interface ligne de commande (Bash, Zsh) |
| Outils CLI | Commandes système (ls, cp, grep...) |
| Applications | Logiciels utilisateur |
Le Noyau
uname -r # Affiche la version du noyau
Gère : processus, mémoire, périphériques, système de fichiers, réseau.
Le Shell
- Bash : le plus répandu
- Zsh : moderne, autocomplétion avancée
- Fish : convivial pour débutants
Une distribution (distro) est un ensemble complet prêt à installer.
Composition
- Noyau Linux
- Utilitaires GNU
- Gestionnaire de paquets (
apt,dnf,pacman) - Système d'init (
systemd) - Interface graphique (optionnel)
Distributions populaires
| Distro | Usage | Gestionnaire |
|---|---|---|
| Ubuntu | Desktop/Serveur | apt |
| Debian | Serveur stable | apt |
| RHEL/Rocky | Entreprise | dnf |
| Arch | Utilisateurs avancés | pacman |
| Alpine | Conteneurs | apk |
Choisir sa distribution
- Débutant : Ubuntu, Linux Mint
- Serveur : Debian, Rocky Linux
- DevOps : Ubuntu Server, Alpine
Modèle en couches
┌─────────────────────────┐
│ Applications │ Mode utilisateur
├─────────────────────────┤
│ Shell / Interface │
├─────────────────────────┤
│ Appels système (API) │
├─────────────────────────┤
│ Noyau Linux │ Mode noyau
├─────────────────────────┤
│ Matériel │
└─────────────────────────┘
Deux modes d'exécution
- Mode noyau : accès complet au matériel (privilégié)
- Mode utilisateur : accès restreint (sécurisé)
Communication
Les applications utilisent des appels système (syscalls) pour demander des services au noyau :
strace ls # Trace les appels système
Séquence de boot
BIOS/UEFI : Initialisation matériel, POST
Bootloader (GRUB) :
/etc/default/grub # Configuration
/boot/grub/grub.cfg # Fichier généré
Noyau Linux : Chargement en mémoire, initialisation pilotes, montage racine
systemd (PID 1) :
systemctl list-units --type=target
Lance les services et atteint la cible (graphical.target, multi-user.target)
Diagnostic
dmesg | less # Messages du noyau
journalctl -b # Logs du boot actuel
systemd-analyze blame # Temps de démarrage
Concepts clés
- PID : identifiant unique du processus
- PPID : PID du processus parent
- États : Running, Sleeping, Stopped, Zombie
Commandes essentielles
# Lister les processus
ps aux # Tous les processus
ps -ef --forest # Arborescence
# Surveillance temps réel
top # Vue classique
htop # Vue améliorée
# Gestion des processus
kill PID # Signal SIGTERM
kill -9 PID # Signal SIGKILL (force)
killall nginx # Par nom
# Priorité
nice -n 10 commande # Lancer avec priorité basse
renice -n 5 -p PID # Modifier la priorité
Processus en arrière-plan
commande & # Lancer en background
jobs # Lister les jobs
fg %1 # Ramener au premier plan
systemd : le gestionnaire moderne
systemctl est la commande principale :
# État d'un service
systemctl status nginx
# Démarrer / Arrêter
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl reload nginx # Recharge config
# Activation au boot
systemctl enable nginx
systemctl disable nginx
# Lister les services
systemctl list-units --type=service
systemctl list-units --failed
Fichiers unités
/etc/systemd/system/ # Personnalisés (priorité)
/lib/systemd/system/ # Fournis par les paquets
systemctl daemon-reload # Recharger après modif
Journaux
journalctl -u nginx # Logs d'un service
journalctl -f # Suivre en temps réel
Types d'utilisateurs
- root (UID 0) : super-utilisateur, tous les droits
- Utilisateurs système (UID 1-999) : services
- Utilisateurs normaux (UID 1000+) : humains
Commandes de gestion
# Créer un utilisateur
sudo useradd -m -s /bin/bash jean
sudo passwd jean
# Modifier
sudo usermod -aG docker jean # Ajouter au groupe
sudo usermod -l nouveau ancien
# Supprimer
sudo userdel -r jean # -r supprime le home
# Groupes
sudo groupadd devops
sudo gpasswd -a jean devops
Fichiers importants
| Fichier | Contenu |
|---|---|
/etc/passwd |
Comptes utilisateurs |
/etc/shadow |
Mots de passe (hashés) |
/etc/group |
Groupes |
sudo
sudo commande # Exécuter en root
sudo -u user commande # En tant que user
visudo # Éditer /etc/sudoers
Arborescence standard (FHS)
/
├── bin/ → Binaires essentiels
├── boot/ → Fichiers de démarrage
├── dev/ → Périphériques
├── etc/ → Configuration système
├── home/ → Répertoires utilisateurs
├── lib/ → Bibliothèques partagées
├── opt/ → Logiciels optionnels
├── proc/ → Infos processus (virtuel)
├── root/ → Home de root
├── tmp/ → Fichiers temporaires
├── usr/ → Programmes utilisateur
└── var/ → Données variables (logs)
Permissions
ls -la fichier
# -rwxr-xr-- user group fichier
# ^^^ ^^^ ^^^
# | | └── Autres (r-x)
# | └────── Groupe (r-x)
# └────────── Propriétaire (rwx)
chmod 755 fichier # rwxr-xr-x
chmod u+x script.sh # Ajouter exécution
chown user:group fichier # Changer propriétaire