🐧 Introduction a Linux
Comprendre le systeme d'exploitation des professionnels
🎯 Objectifs d'apprentissage
- Comprendre ce qu'est Linux et son histoire
- Connaitre les avantages de Linux pour les serveurs
- Identifier les principales distributions
- Comprendre la philosophie Open Source
Conseil de Mentor (30 ans d'experience)
"J'ai commence ma carriere avec Unix en 1994. Aujourd'hui, Linux alimente plus de 90% des serveurs web mondiaux, tous les superordinateurs du TOP500, et la majorite des appareils IoT. Maitriser Linux n'est pas optionnel pour un architecte systeme - c'est fondamental."
📖 Qu'est-ce que Linux ?
Linux est un systeme d'exploitation open source cree en 1991 par Linus Torvalds, un etudiant finlandais. Il voulait un systeme UNIX-like gratuit pour son PC personnel.
Definition cle: Systeme d'exploitation
Un systeme d'exploitation (OS) est le logiciel qui gere le materiel de l'ordinateur et fournit des services aux programmes. C'est l'intermediaire entre vous et la machine.
Techniquement, "Linux" designe uniquement le noyau (kernel). Un systeme Linux complet comprend:
- Le Kernel Linux - Coeur du systeme, gere le materiel
- GNU Tools - Utilitaires de base (ls, cp, grep...)
- Shell - Interface en ligne de commande (Bash, Zsh)
- Gestionnaire de paquets - Installation de logiciels
- Interface graphique (optionnelle sur serveur)
📈 Pourquoi Linux domine les serveurs ?
| Avantage | Explication | Impact |
|---|---|---|
| Gratuit | Pas de licence a payer | Economies massives |
| Stable | Uptimes de plusieurs annees | Moins de maintenance |
| Securise | Peu de virus, mises a jour rapides | Protection des donnees |
| Leger | Fonctionne sans GUI | Plus de ressources pour les apps |
| Flexible | 100% configurable | Adapte a tous les besoins |
| Open Source | Code source visible | Transparence, audit possible |
📦 Les distributions Linux
Une distribution est un "package" complet de Linux avec des logiciels pre-configures. Voici les principales familles:
LINUX KERNEL
|
+---------------------+---------------------+
| | |
DEBIAN RED HAT ARCH
| | |
+----+----+ +----+----+ |
| | | | |
Ubuntu Debian RHEL Fedora Arch
| | Manjaro
Mint CentOS
Rocky
AlmaLinux
Utilisation serveurs:
- RHEL/CentOS/Rocky: Entreprises (support commercial)
- Ubuntu Server: Cloud, startups
- Debian: Stabilite maximale
Pour ce cours
Nous utilisons RHEL/Rocky Linux car c'est le standard en entreprise. Les commandes sont similaires sur CentOS, AlmaLinux et Fedora. Les differences avec Debian/Ubuntu seront indiquees.
🧠 Verifiez votre comprehension
Quel pourcentage des serveurs web mondiaux utilisent Linux ?
📚 Points cles a retenir
- Linux = Kernel cree par Linus Torvalds en 1991
- Open Source = Code visible et modifiable
- 90%+ des serveurs web utilisent Linux
- RHEL/Rocky = Standard entreprise | Ubuntu = Cloud/Startups
- Avantages: Gratuit, stable, securise, leger, flexible
🏗 Architecture Linux
Comprendre la structure interne du systeme
🎯 Objectifs d'apprentissage
- Comprendre les couches d'un systeme Linux
- Connaitre le role du Kernel
- Maitriser le processus de demarrage (boot)
- Comprendre Systemd et les runlevels
🔭 Les couches de Linux
+------------------------------------------------------------------+
| APPLICATIONS |
| (Firefox, Apache, MySQL, Docker, etc.) |
+------------------------------------------------------------------+
|
+------------------------------------------------------------------+
| SHELL |
| (Bash, Zsh, Fish, etc.) |
| Interface entre l'utilisateur et le systeme |
+------------------------------------------------------------------+
|
+------------------------------------------------------------------+
| GNU UTILITIES |
| (ls, cp, mv, grep, awk, sed, etc.) |
| Outils standard Unix/Linux |
+------------------------------------------------------------------+
|
+------------------------------------------------------------------+
| KERNEL |
| +----------------+ +----------------+ +----------------+ |
| | Process Mgmt | | Memory Mgmt | | Device Drivers | |
| | (processus) | | (memoire) | | (materiels) | |
| +----------------+ +----------------+ +----------------+ |
| +----------------+ +----------------+ |
| | File Systems | | Network Stack | |
| | (fichiers) | | (reseau) | |
| +----------------+ +----------------+ |
+------------------------------------------------------------------+
|
+------------------------------------------------------------------+
| HARDWARE |
| (CPU, RAM, Disque, Carte reseau, etc.) |
+------------------------------------------------------------------+
Le Kernel (Noyau)
Le kernel est le coeur de Linux. Il gere:
- Processus: Creation, planification, terminaison
- Memoire: Allocation RAM, swap, protection
- Drivers: Communication avec le materiel
- Fichiers: Lecture/ecriture sur disques
- Reseau: Pile TCP/IP, sockets
🔌 Processus de demarrage (Boot)
Quand vous allumez un serveur Linux, voici ce qui se passe:
SEQUENCE DE BOOT LINUX (UEFI + Systemd)
1. BIOS/UEFI
|
| POST (Power-On Self-Test)
| Detecte le materiel
v
2. BOOTLOADER (GRUB2)
|
| Charge le kernel en memoire
| Passe les parametres boot
v
3. KERNEL
|
| Initialise les drivers
| Monte le filesystem racine
| Lance le premier processus
v
4. SYSTEMD (PID 1)
|
| Premier processus utilisateur
| Gere tous les autres services
v
5. SERVICES
|
| Reseau, SSH, HTTP, DB...
v
6. LOGIN PROMPT
|
| Console ou interface graphique
Les composants du boot
| Composant | Role | Fichiers cles |
|---|---|---|
| GRUB2 | Bootloader - Charge le kernel | /boot/grub2/grub.cfg |
| Kernel | Noyau du systeme | /boot/vmlinuz-* |
| Initramfs | Systeme de fichiers temporaire | /boot/initramfs-* |
| Systemd | Gestionnaire de services | /etc/systemd/system/ |
⚙ Systemd: Le chef d'orchestre
Systemd est le gestionnaire de systeme et de services moderne de Linux. Il remplace les anciens scripts init.d.
❌ Ancien systeme (SysV init)
- Scripts shell sequentiels
- Demarrage lent
- Pas de gestion des dependances
- Difficile a debugger
✅ Systemd (moderne)
- Demarrage parallele
- Gestion des dependances
- Journalisation integree (journald)
- Cgroups pour l'isolation
Commandes systemctl essentielles
Experience de terrain
"En 30 ans, j'ai vu l'evolution de init.d vers Systemd. Certains puristes ont resiste au changement, mais Systemd a revolutionne la gestion des services. Aujourd'hui, comprendre systemctl est indispensable pour tout administrateur Linux."
🛠 Lab Pratique: Explorer le boot
Verifier la version du kernel
Voir le temps depuis le dernier boot
Lister les services actifs
Voir les logs de boot
🧠 Verifiez votre comprehension
Quel est le PID (Process ID) de Systemd ?
📚 Points cles a retenir
- Linux = Couches: Hardware -> Kernel -> Utilities -> Shell -> Apps
- Boot: BIOS/UEFI -> GRUB2 -> Kernel -> Systemd -> Services
- Systemd = PID 1, gestionnaire de services moderne
- systemctl = commande pour gerer les services
- journalctl = commande pour voir les logs
📁 Systeme de Fichiers Linux
Maitriser la hierarchie FHS
🎯 Objectifs d'apprentissage
- Comprendre la structure FHS (Filesystem Hierarchy Standard)
- Connaitre le role de chaque repertoire principal
- Faire le parallele avec Windows
- Naviguer efficacement dans l'arborescence
📌 Le Filesystem Hierarchy Standard (FHS)
Contrairement a Windows avec ses lettres de lecteur (C:, D:), Linux utilise une arborescence unique partant de la racine /.
/ <-- Racine (root) - Point de depart UNIQUE
|
+-- /bin <-- Binaires essentiels (ls, cp, cat...)
|
+-- /boot <-- Fichiers de demarrage (kernel, grub)
|
+-- /dev <-- Fichiers de peripheriques (disques, terminals)
|
+-- /etc <-- Configuration systeme (nginx.conf, passwd)
|
+-- /home <-- Repertoires utilisateurs
| +-- /azureuser <-- Votre dossier personnel
|
+-- /lib, /lib64 <-- Bibliotheques partagees
|
+-- /opt <-- Applications optionnelles tierces
| +-- /semarchy <-- Notre application Semarchy!
|
+-- /proc <-- Systeme de fichiers virtuel (infos kernel)
|
+-- /root <-- Repertoire de l'admin root
|
+-- /sbin <-- Binaires systeme (fdisk, iptables)
|
+-- /tmp <-- Fichiers temporaires
|
+-- /usr <-- Programmes utilisateurs
| +-- /bin <-- Programmes supplementaires
| +-- /local <-- Installation locales
|
+-- /var <-- Donnees variables
+-- /log <-- Fichiers de logs
+-- /lib <-- Donnees d'applications (bases, etc.)
+-- /www <-- Sites web (parfois)
Comparaison Windows / Linux
| Windows | Linux | Usage |
|---|---|---|
| C:\ | / | Racine du systeme |
| C:\Users\ | /home/ | Dossiers utilisateurs |
| C:\Program Files\ | /usr/ ou /opt/ | Applications |
| C:\Windows\System32\ | /bin/, /sbin/ | Binaires systeme |
| Panneau de configuration | /etc/ | Configuration |
| C:\Windows\Logs\ | /var/log/ | Fichiers de logs |
Les repertoires les plus importants
En tant qu'administrateur, vous passerez 90% de votre temps dans:
/etc - Configuration
/var/log - Logs
/opt - Applications
/home - Vos fichiers
💾 Tout est fichier sous Linux
Une philosophie fondamentale de Linux: tout est represente comme un fichier.
| Type | Exemple | Description |
|---|---|---|
| Fichier regulier | /etc/passwd | Fichier texte ou binaire classique |
| Repertoire | /home/ | Conteneur pour d'autres fichiers |
| Peripherique bloc | /dev/sda | Disque dur |
| Peripherique caractere | /dev/tty | Terminal |
| Lien symbolique | /usr/bin/python -> python3 | Raccourci vers un autre fichier |
| Socket | /var/run/docker.sock | Communication inter-processus |
🛠 Lab Pratique: Explorer le systeme de fichiers
Voir l'arborescence
Trouver ou vous etes
Voir l'espace disque
Voir la taille des dossiers
📚 Points cles a retenir
- / = racine unique (pas de C:, D: comme Windows)
- /etc = configuration | /var/log = logs | /opt = apps
- /home = dossiers utilisateurs
- Tout est fichier sous Linux (meme les peripheriques)
- pwd = ou suis-je | df -h = espace disque | du -sh = taille dossier
⌨ Commandes Linux Essentielles
Les 25 commandes que vous utiliserez tous les jours
🎯 Objectifs d'apprentissage
- Maitriser les commandes de navigation
- Gerer les fichiers et dossiers
- Comprendre les pipes et redirections
- Utiliser les commandes d'information systeme
Conseil de Mentor
"Ces 25 commandes representent 95% de ce que vous taperez au quotidien. Ne les memorisez pas toutes d'un coup - pratiquez-les une par une. Apres quelques semaines, elles deviendront des reflexes."
📌 Navigation
📁 Gestion des fichiers
DANGER: rm -rf
La commande rm -rf supprime tout sans demander confirmation.
JAMAIS faire rm -rf / ou rm -rf * avec sudo!
Toujours verifier deux fois avant d'executer.
🔍 Recherche
🔁 Pipes et Redirections
L'une des forces de Linux: combiner des commandes simples pour faire des operations complexes.
PIPES (|) - Envoyer la sortie d'une commande vers une autre
commande1 | commande2 | commande3
Exemple:
cat access.log | grep "ERROR" | wc -l
| | |
| | +-- Compter les lignes
| +-- Filtrer les lignes avec "ERROR"
+-- Lire le fichier
REDIRECTIONS - Envoyer vers/depuis des fichiers
> Ecraser dans un fichier echo "test" > fichier.txt
>> Ajouter a un fichier echo "test" >> fichier.txt
< Lire depuis un fichier mysql < script.sql
2> Rediriger les erreurs cmd 2> errors.log
&> Sortie + erreurs cmd &> output.log
💻 Information systeme
🛠 Lab Pratique: Combiner les commandes
Scenario: Vous devez analyser les logs de connexion SSH.
Voir les tentatives de connexion echouees
Compter les echecs par IP
📚 Aide-memoire des 25 commandes
| Categorie | Commandes |
|---|---|
| Navigation | pwd, ls, cd |
| Fichiers | cat, less, head, tail, cp, mv, rm, touch, mkdir |
| Recherche | find, grep, which |
| Systeme | uname, uptime, free, df, top |
| Reseau | ip, ss, ping |
| Outils | sort, uniq, wc, awk |
👥 Utilisateurs & Permissions
Gerer les acces et la securite du systeme
🎯 Objectifs d'apprentissage
- Comprendre le modele de securite Linux (utilisateurs, groupes)
- Gerer les utilisateurs avec useradd, usermod, userdel
- Maitriser les permissions chmod et chown
- Configurer sudo et le fichier sudoers
- Utiliser les ACL pour des permissions avancees
Conseil de Mentor
"La securite Linux repose sur un principe simple: le moindre privilege. Chaque utilisateur et processus ne doit avoir que les permissions strictement necessaires. Maitrisez ce concept et vous eviterez 90% des failles de securite."
👤 Le modele de securite Linux
Linux utilise un modele de securite base sur trois concepts fondamentaux:
MODELE DE SECURITE LINUX
+------------------+ +------------------+ +------------------+
| UTILISATEUR | | GROUPE | | AUTRES |
| (User) | | (Group) | | (Others) |
+------------------+ +------------------+ +------------------+
| | |
v v v
Proprietaire Membres du groupe Tous les autres
du fichier proprietaire utilisateurs
Chaque fichier a:
- Un proprietaire (user)
- Un groupe proprietaire (group)
- Des permissions pour user/group/others
Fichiers de configuration des utilisateurs
| Fichier | Contenu | Exemple |
|---|---|---|
/etc/passwd |
Liste des utilisateurs | azureuser:x:1000:1000::/home/azureuser:/bin/bash |
/etc/shadow |
Mots de passe chiffres | azureuser:$6$xxx...::0:99999:7::: |
/etc/group |
Liste des groupes | docker:x:988:azureuser |
Format de /etc/passwd
username:x:UID:GID:commentaire:home:shell
- UID: User ID (0=root, 1-999=systeme, 1000+=utilisateurs)
- GID: Group ID principal
- x: Mot de passe dans /etc/shadow
👷 Gestion des utilisateurs
Attention avec usermod -G
Sans l'option -a, usermod -G remplace tous les groupes!
Toujours utiliser usermod -aG (append) pour ajouter a un groupe.
👥 Gestion des groupes
🔒 Permissions Linux (chmod)
Chaque fichier a 3 types de permissions pour 3 categories:
LECTURE DES PERMISSIONS (ls -l)
-rwxr-xr-x 1 root root 4096 Jan 15 10:30 script.sh
|___|___|___
| | |
| | +-- Others (autres): r-x = lecture + execution
| +------ Group (groupe): r-x = lecture + execution
+---------- User (proprio): rwx = lecture + ecriture + execution
SIGNIFICATION:
r (read) = 4 = Lire le fichier / Lister le dossier
w (write) = 2 = Modifier le fichier / Creer dans le dossier
x (execute) = 1 = Executer le script / Entrer dans le dossier
- (aucun) = 0 = Permission refusee
Notation numerique (octale)
| Permission | Binaire | Octal | Signification |
|---|---|---|---|
| --- | 000 | 0 | Aucune permission |
| --x | 001 | 1 | Execution seule |
| -w- | 010 | 2 | Ecriture seule |
| -wx | 011 | 3 | Ecriture + Execution |
| r-- | 100 | 4 | Lecture seule |
| r-x | 101 | 5 | Lecture + Execution |
| rw- | 110 | 6 | Lecture + Ecriture |
| rwx | 111 | 7 | Toutes les permissions |
Permissions communes
755 = Scripts executables, dossiers
644 = Fichiers de configuration
600 = Fichiers secrets (cles SSH, mots de passe)
700 = Dossiers prives
👤 Propriete (chown)
🔐 Sudo et sudoers
sudo permet d'executer des commandes avec les privileges root sans se connecter en root.
Fichier /etc/sudoers
Syntaxe: utilisateur machine=(run_as) commandes
Exemples:
root ALL=(ALL) ALL - root peut tout faire
%wheel ALL=(ALL) ALL - groupe wheel peut tout faire
john ALL=(ALL) NOPASSWD: /bin/systemctl - john peut utiliser systemctl sans mot de passe
📋 ACL (Access Control Lists)
Les ACL permettent des permissions plus fines que le modele user/group/others.
🛠 Lab Pratique: Gestion des utilisateurs
Creer un utilisateur developpeur
Creer un dossier projet partage
Verifier les permissions
🧠 Verifiez votre comprehension
Quelle permission octale correspond a "rw-r--r--" ?
📚 Points cles a retenir
- Utilisateurs: useradd, usermod -aG, userdel
- Groupes: groupadd, /etc/group
- Permissions: r=4, w=2, x=1 | 755=rwxr-xr-x, 644=rw-r--r--
- Propriete: chown user:group fichier
- Sudo: ajouter au groupe wheel (RHEL) ou sudo (Debian)
- ACL: setfacl/getfacl pour permissions avancees
📦 Gestion des Paquets
Installer, mettre a jour et gerer les logiciels
🎯 Objectifs d'apprentissage
- Comprendre les gestionnaires de paquets Linux
- Maitriser DNF/YUM (RHEL) et APT (Debian)
- Gerer les repositories
- Effectuer des mises a jour systeme
Conseil de Mentor
"Les mises a jour regulieres sont cruciales pour la securite. En production, je recommande de planifier des fenetres de maintenance mensuelles pour les patchs. Toujours tester sur un environnement de dev/staging avant la prod!"
📦 Les gestionnaires de paquets
Un gestionnaire de paquets automatise l'installation, la mise a jour et la suppression des logiciels.
ECOSYSTEME DES PAQUETS LINUX
+------------------+ +------------------+
| Famille RHEL | | Famille Debian |
+------------------+ +------------------+
| Format: .rpm | | Format: .deb |
| Outil bas: rpm | | Outil bas: dpkg |
| Outil haut: dnf | | Outil haut: apt |
| (ancien: yum) | | |
+------------------+ +------------------+
| |
v v
+------------------+ +------------------+
| RHEL, Rocky, | | Debian, Ubuntu, |
| CentOS, Fedora, | | Linux Mint |
| AlmaLinux | | |
+------------------+ +------------------+
Notre VM: Rocky Linux = DNF
💻 DNF - Commandes essentielles (RHEL/Rocky)
📂 Gestion des repositories
Les repositories sont des serveurs contenant les paquets disponibles.
EPEL - Un repo indispensable
EPEL (Extra Packages for Enterprise Linux) contient des milliers de paquets supplementaires non inclus dans RHEL/Rocky. Essentiel pour htop, certbot, et bien d'autres.
📄 Comparaison DNF / APT
| Action | DNF (RHEL/Rocky) | APT (Debian/Ubuntu) |
|---|---|---|
| Installer | dnf install nginx |
apt install nginx |
| Supprimer | dnf remove nginx |
apt remove nginx |
| Mettre a jour la liste | dnf check-update |
apt update |
| Mettre a jour les paquets | dnf update |
apt upgrade |
| Rechercher | dnf search nginx |
apt search nginx |
| Infos paquet | dnf info nginx |
apt show nginx |
📦 RPM - Gestion bas niveau
🛠 Lab Pratique: Gestion des paquets
Installer EPEL et htop
Verifier les mises a jour de securite
Explorer l'historique DNF
🧠 Verifiez votre comprehension
Quelle commande installe un paquet sans demander de confirmation?
📚 Points cles a retenir
- DNF = gestionnaire de paquets pour RHEL/Rocky/CentOS
- APT = gestionnaire pour Debian/Ubuntu
- dnf install -y, dnf update, dnf remove
- EPEL = repo supplementaire indispensable
- rpm -qa = lister tous les paquets installes
- dnf history = voir et annuler les transactions
⚙ Services & Systemd
Gerer les services et le demarrage du systeme
🎯 Objectifs d'apprentissage
- Maitriser systemctl pour gerer les services
- Comprendre les units systemd
- Analyser les logs avec journalctl
- Creer un service personnalise
⚙ Systemd en detail
Systemd est le gestionnaire de systeme et de services moderne. Il gere:
- Le demarrage du systeme
- Les services (daemons)
- Les montages de disques
- Les timers (cron moderne)
- Les logs (journald)
Types d'units systemd
| Type | Extension | Usage |
|---|---|---|
| Service | .service | Daemons (nginx, docker, sshd) |
| Socket | .socket | Activation par socket |
| Timer | .timer | Taches planifiees |
| Mount | .mount | Points de montage |
| Target | .target | Groupes d'units (multi-user, graphical) |
💻 Commandes systemctl
📋 Anatomie d'un fichier .service
Apres modification d'un service
Toujours executer sudo systemctl daemon-reload apres avoir modifie un fichier .service pour que systemd recharge la configuration.
📜 Journalctl - Les logs systemd
🛠 Lab Pratique: Creer un service
Creer un script simple
Creer le fichier service
Activer et tester
📚 Points cles a retenir
- systemctl start/stop/restart/status SERVICE
- systemctl enable --now = activer + demarrer
- journalctl -u SERVICE -f = logs en temps reel
- daemon-reload apres modification de .service
- Services dans /etc/systemd/system/
📈 Processus & Performance
Surveiller et optimiser le systeme
🎯 Objectifs d'apprentissage
- Comprendre les processus Linux
- Utiliser ps, top, htop pour surveiller
- Gerer les processus (kill, nice)
- Analyser les ressources systeme
⚙ Qu'est-ce qu'un processus?
Un processus est une instance d'un programme en cours d'execution. Chaque processus a:
- PID - Process ID unique
- PPID - Parent Process ID
- UID - Utilisateur proprietaire
- Etat - Running, Sleeping, Stopped, Zombie
HIERARCHIE DES PROCESSUS
systemd (PID 1)
|
+-- sshd
| +-- sshd (session)
| +-- bash
| +-- vim
| +-- ps
|
+-- dockerd
| +-- containerd
| +-- container1
| +-- container2
|
+-- nginx (master)
+-- nginx (worker)
+-- nginx (worker)
💻 Commandes de surveillance
💣 Gestion des processus
| Signal | Numero | Action |
|---|---|---|
| SIGTERM | 15 | Terminaison propre (defaut) |
| SIGKILL | 9 | Force l'arret (ne peut pas etre ignore) |
| SIGHUP | 1 | Recharge la configuration |
| SIGSTOP | 19 | Suspend le processus |
| SIGCONT | 18 | Reprend le processus |
📈 Ressources systeme
Comprendre le Load Average
Le load average represente le nombre moyen de processus en attente de CPU.
- Sur 4 CPUs, un load de 4.0 = 100% utilisation
- Un load de 8.0 sur 4 CPUs = surcharge (processus en file d'attente)
📚 Points cles a retenir
- ps aux = liste tous les processus
- top/htop = surveillance temps reel
- kill -15 (propre) vs kill -9 (force)
- free -h = memoire, df -h = disque
- Load average doit etre < nombre de CPUs
💾 Stockage & LVM
Gerer les disques et les volumes
🎯 Objectifs d'apprentissage
- Comprendre les partitions et systemes de fichiers
- Utiliser LVM pour la gestion flexible des volumes
- Monter et demonter des disques
- Surveiller l'espace disque
💾 Architecture du stockage
HIERARCHIE DU STOCKAGE LINUX
Disque physique (/dev/sda, /dev/nvme0n1)
|
+-- Partition 1 (/dev/sda1) --> /boot (500M)
|
+-- Partition 2 (/dev/sda2) --> LVM
|
+-- Volume Group (vg_data)
|
+-- Logical Volume (lv_root) --> /
+-- Logical Volume (lv_home) --> /home
+-- Logical Volume (lv_var) --> /var
💻 Commandes de base
📦 LVM - Logical Volume Manager
LVM permet de gerer les disques de facon flexible: agrandir, reduire, deplacer sans demonter.
| Concept | Commandes | Description |
|---|---|---|
| Physical Volume (PV) | pvcreate, pvs, pvdisplay | Disque ou partition physique |
| Volume Group (VG) | vgcreate, vgs, vgdisplay | Pool de stockage (1+ PV) |
| Logical Volume (LV) | lvcreate, lvs, lvdisplay | Volume utilisable (comme partition) |
📂 Montage des disques
📚 Points cles a retenir
- lsblk, df -h = voir les disques
- LVM: PV -> VG -> LV
- lvextend + resize2fs/xfs_growfs pour agrandir
- /etc/fstab = montages permanents
💻 Introduction au Bash
Le langage de script du sysadmin
🎯 Objectifs d'apprentissage
- Comprendre ce qu'est Bash et son utilite
- Ecrire votre premier script
- Comprendre le shebang et l'execution
- Maitriser les bonnes pratiques
Conseil de Mentor
"Bash est votre meilleur ami pour automatiser les taches repetitives. En 30 ans, j'ai ecrit des milliers de scripts. Commencez simple - meme un script de 5 lignes qui vous fait gagner 2 minutes par jour represente 12 heures par an!"
💡 Qu'est-ce que Bash?
Bash (Bourne Again SHell) est:
- Un interpreteur de commandes (le terminal que vous utilisez)
- Un langage de script pour automatiser des taches
- Le shell par defaut sur la plupart des distributions Linux
📄 Votre premier script
Execution du script
Le Shebang (#!)
#!/bin/bash est le "shebang". Il indique au systeme quel interpreteur utiliser.
- #!/bin/bash = Script Bash
- #!/usr/bin/python3 = Script Python
- #!/bin/sh = Shell POSIX (plus portable)
✅ Bonnes pratiques
set -e : Votre filet de securite
Sans set -e, un script continue meme si une commande echoue. Avec, il s'arrete immediatement. Indispensable en production!
📚 Points cles a retenir
- Shebang #!/bin/bash en premiere ligne
- chmod +x pour rendre executable
- set -euo pipefail pour la robustesse
- Commenter et documenter vos scripts
📋 Variables Bash
Stocker et manipuler des donnees
🎯 Objectifs d'apprentissage
- Declarer et utiliser des variables
- Comprendre les variables d'environnement
- Maitriser les substitutions de commandes
- Manipuler les chaines de caracteres
📋 Declaration de variables
Erreur classique
nom = "Jean" est FAUX! Pas d'espaces autour du =
Correct: nom="Jean"
🌐 Variables d'environnement
🔄 Substitution de commandes
🔧 Manipulation de chaines
🔢 Tableaux
📚 Points cles a retenir
- Pas d'espace autour de = : nom="valeur"
- $VAR ou ${VAR} pour utiliser
- $(commande) pour substitution
- $1, $2, $@ pour les arguments
- $? = code retour (0 = succes)
🔀 Conditions & Boucles
Controler le flux d'execution
🎯 Objectifs d'apprentissage
- Maitriser if/elif/else
- Comprendre les operateurs de test
- Utiliser les boucles for, while, until
- Controler les boucles avec break et continue
🔀 Conditions if/else
Operateurs de test
| Type | Operateur | Signification |
|---|---|---|
| Fichiers | -f fichier | Fichier existe et est regulier |
| -d dossier | Dossier existe | |
| -r fichier | Fichier lisible | |
| -w fichier | Fichier modifiable | |
| Chaines | -z "$var" | Variable vide |
| -n "$var" | Variable non vide | |
| "$a" = "$b" | Chaines egales | |
| Nombres | $a -eq $b | Egal (equal) |
| $a -ne $b | Different (not equal) | |
| $a -lt $b | Plus petit (less than) | |
| $a -gt $b | Plus grand (greater than) |
🔄 Boucle for
🔁 Boucles while et until
📚 Points cles a retenir
- [ condition ] avec espaces obligatoires
- -f (fichier), -d (dossier), -z (vide)
- -eq, -ne, -lt, -gt pour nombres
- for item in liste; do ... done
- while [ condition ]; do ... done
🛠 Fonctions Bash
Organiser et reutiliser le code
🎯 Objectifs d'apprentissage
- Creer et appeler des fonctions
- Passer des parametres
- Retourner des valeurs
- Gerer la portee des variables
🛠 Syntaxe des fonctions
📥 Parametres et retours
🎯 Exemple complet
📚 Points cles a retenir
- nom_fonction() { ... } pour declarer
- $1, $2, $@ pour les parametres
- local var="valeur" pour variables locales
- return 0/1 pour code de retour
- echo pour "retourner" une valeur
📄 Grep, Sed, Awk
Les outils de traitement de texte
🎯 Objectifs d'apprentissage
- Maitriser grep pour la recherche
- Utiliser sed pour la substitution
- Comprendre awk pour le traitement avance
- Combiner ces outils efficacement
Conseil de Mentor
"Grep, Sed et Awk sont les 'trois mousquetaires' du traitement de texte sous Linux. Maitrisez-les et vous pourrez analyser n'importe quel fichier de log ou de config en quelques secondes."
🔍 Grep - Recherche de motifs
📝 Sed - Editeur de flux
📊 Awk - Traitement de donnees
🎯 Exemples pratiques
📚 Points cles a retenir
- grep: recherche (-i ignore casse, -r recursif, -v inverse)
- sed: substitution s/old/new/g, -i pour modifier en place
- awk: colonnes $1 $2, -F separateur, calculs
- Combiner avec pipes: grep | awk | sort | uniq
🐍 Python pour SysAdmin
Automatisation avancee avec Python
🎯 Objectifs d'apprentissage
- Comprendre pourquoi utiliser Python en administration
- Maitriser les bases du langage
- Ecrire des scripts d'automatisation simples
Conseil de Mentor
"Bash est parfait pour les scripts simples, mais Python devient indispensable des que la logique se complexifie. APIs REST, parsing JSON, gestion d'erreurs avancee - Python excelle la ou Bash atteint ses limites."
💡 Pourquoi Python?
Bash - Ideal pour
- Scripts courts (< 100 lignes)
- Enchainer des commandes
- Manipulation de fichiers simple
Python - Ideal pour
- Logique complexe
- APIs REST / JSON / YAML
- Gestion d'erreurs robuste
- Librairies riches
💻 Syntaxe de base
📦 Librairies utiles
| Librairie | Usage |
|---|---|
| os, sys | Interactions systeme |
| subprocess | Executer des commandes |
| pathlib | Manipulation de chemins |
| json, yaml | Parsing de fichiers config |
| requests | Requetes HTTP/API |
| paramiko | SSH en Python |
| logging | Logs structures |
📚 Points cles a retenir
- Python 3 avec #!/usr/bin/env python3
- Indentation = structure du code
- f-strings pour le formatage: f"valeur: {var}"
- Librairies standard puissantes
📁 Python: Fichiers & OS
Manipuler le systeme avec Python
📁 Manipulation de fichiers
⚙ Executer des commandes
📄 JSON et YAML
📚 Points cles a retenir
- pathlib.Path pour les fichiers modernes
- subprocess.run() pour les commandes
- json.load()/dump() pour JSON
- yaml.safe_load() pour YAML
🎯 Projet: Script de Backup
Mettre en pratique vos connaissances
🎯 Objectif du projet
Creer un script de backup automatise qui:
- Sauvegarde des dossiers configures
- Compresse les fichiers
- Rotation des anciennes sauvegardes
- Log les operations
💻 Version Bash
🐍 Version Python
Automatisation avec cron
Ajoutez au crontab: 0 2 * * * /opt/scripts/backup.sh
Execute le backup tous les jours a 2h du matin.
🏆 Felicitations!
Vous avez complete la section Scripting! Vous savez maintenant:
- Ecrire des scripts Bash robustes
- Utiliser Python pour l'automatisation
- Combiner les deux selon les besoins
📦 Introduction a Git
Le controle de version pour tous
🎯 Objectifs d'apprentissage
- Comprendre le controle de version
- Configurer Git
- Connaitre les concepts de base
💡 Pourquoi Git?
- Historique - Chaque modification est tracee
- Collaboration - Travail en equipe sur le meme code
- Branches - Experimenter sans casser le code principal
- Rollback - Revenir en arriere si probleme
⚙ Configuration initiale
📊 Concepts fondamentaux
ZONES GIT
+------------------+ +------------------+ +------------------+
| Working Dir | --> | Staging Area | --> | Repository |
| (vos fichiers) | | (index) | | (.git/) |
+------------------+ +------------------+ +------------------+
| | |
git add git commit git push
📚 Points cles a retenir
- Git = controle de version distribue
- Working Directory -> Staging -> Repository
- Configurer user.name et user.email d'abord
📋 Commandes Git de base
Les commandes du quotidien
💻 Commandes essentielles
🌐 Travail avec remote
📚 Points cles a retenir
- git add -> git commit -> git push
- git status pour voir l'etat
- git pull pour recuperer les changements
🔨 Branches & Merging
Travailler en parallele
🔨 Gestion des branches
🔄 Merge
WORKFLOW DE BRANCHES
main: A---B-------E---F (merge)
\ /
feature: C---D
📚 Points cles a retenir
- git branch / git checkout -b pour creer
- git merge pour fusionner
- Resoudre les conflits manuellement si besoin
🚀 Workflows Git Pro
Bonnes pratiques en equipe
🚀 GitFlow simplifie
GITFLOW SIMPLIFIE
main ----*-----------*-----------*---- (production)
\ /
develop ------*---*---*---*---*---*------ (integration)
\ / \ /
feature/x --------*---* \ /
\ /
feature/y --------------------*-*
✅ Bonnes pratiques
- Commits atomiques - Un commit = un changement logique
- Messages clairs - "Fix login bug" pas "update"
- Pull avant push - Evite les conflits
- Branches courtes - Merger frequemment
- Ne jamais forcer sur main - git push --force interdit!
🏆 Felicitations!
Vous maitrisez maintenant Git! Vous etes pret pour l'examen final.
📚 Revision Espacee
Renforcez votre memoire avec les flashcards
La repetition espacee
La science montre que reviser a intervalles reguliers ameliore la retention de 200%. Cliquez sur les cartes pour voir la reponse, puis evaluez si vous connaissiez la reponse.
Flashcards Linux
🏆 Examen Final - Phase 1
Validez vos connaissances en Fondamentaux
Instructions
Cet examen comporte 15 questions couvrant tous les modules de la Phase 1.
Objectif: 80% de bonnes reponses pour valider la phase.
Vous pouvez recommencer autant de fois que necessaire.
Section A: Linux (5 questions)
1. Quel est le PID du processus systemd?
2. Quelle permission octale correspond a rwxr-xr-x?
3. Quelle commande ajoute un utilisateur au groupe docker?
4. Ou se trouvent les fichiers de configuration systeme?
5. Quelle commande installe un paquet sans confirmation sur RHEL?
Section B: Bash (5 questions)
6. Quel shebang utiliser pour un script Bash?
7. Comment acceder au premier argument d'un script?
8. Quel operateur teste si un fichier existe?
9. Quelle commande remplace du texte dans un fichier?
10. Dans awk, comment afficher la premiere colonne?
Section C: Git (5 questions)
11. Quelle commande initialise un nouveau depot Git?
12. Quelle sequence pour sauvegarder des modifications?
13. Comment creer et basculer sur une nouvelle branche?
14. Quelle commande fusionne une branche dans main?
15. Que fait git pull?
🏆 Felicitations!
Vous avez termine l'examen de la Phase 1 - Fondamentaux!
Si vous avez obtenu au moins 12/15 (80%), vous etes pret pour la Phase 2: Infrastructure.
Resume de ce que vous avez appris:
- ✅ Administration Linux (fichiers, users, services)
- ✅ Scripting Bash (variables, conditions, fonctions)
- ✅ Outils de texte (grep, sed, awk)
- ✅ Python pour l'automatisation
- ✅ Git et controle de version