🐧 Cours Complet sur Linux

Maîtrisez le système d'exploitation le plus puissant du monde

🔍

1. Introduction à Linux

🎯 Objectifs: Comprendre les bases de Linux, son importance et ses avantages.

Qu'est-ce que Linux ?

Linux est un système d'exploitation libre et open source basé sur Unix. Il est:

  • Gratuit et libre d'utilisation
  • 🔓 Open source - code source accessible
  • 🎨 Personnalisable à l'extrême
  • 🔒 Sécurisé par conception
  • Stable et performant

Pourquoi apprendre Linux ?

$ echo "Pourquoi Linux ?"
🌐 90% des serveurs web utilisent Linux
☁️ Infrastructure Cloud (AWS, GCP, Azure)
💻 Environnement de développement puissant
🔐 Cybersécurité et tests de pénétration
💼 Compétences très demandées sur le marché
❓ Quiz: Quel est l'avantage principal de Linux ?
A) Il est développé par Microsoft
B) Il est libre et open source
C) Il ne fonctionne que sur Mac
D) Il coûte très cher

2. Histoire & Philosophie

📅 Chronologie

  • 1969: Création d'Unix aux Laboratoires Bell
  • 1983: Richard Stallman lance le projet GNU
  • 1991: Linus Torvalds crée le noyau Linux
  • 1993: Première distribution Slackware
  • 2000s: Explosion de l'adoption en entreprise
💡 Le saviez-vous ? Le nom "Linux" vient de "Linus" (Torvalds) + "Unix"

🔄 Philosophie Unix/Linux

$ cat /etc/unix-philosophy
1. Faire une chose et bien la faire
2. Tout est fichier
3. Composition de programmes simples
4. Éviter les interfaces utilisateur captives
5. Stocker les données en texte plat

3. Distributions Linux

🏢 Distributions Principales

🟦 Ubuntu (Debian)

Parfait pour débuter, interface conviviale, large communauté

$ lsb_release -a
Description: Ubuntu 22.04 LTS

🔴 Red Hat / CentOS / Fedora

Orienté entreprise, très stable, utilisé en production

🟢 SUSE

Distribution européenne, forte en entreprise

⚫ Arch Linux

Pour utilisateurs avancés, rolling release, très personnalisable

🎯 Conseil: Commencez par Ubuntu ou Linux Mint pour débuter !

4. Architecture du Système

🏗️ Structure en Couches

┌─────────────────────────┐
│ Applications │ (Firefox, LibreOffice)
├─────────────────────────┤
│ Interface Graphique │ (GNOME, KDE)
├─────────────────────────┤
│ Shell / Terminal │ (Bash, Zsh)
├─────────────────────────┤
│ Système GNU │ (Outils, bibliothèques)
├─────────────────────────┤
│ Noyau Linux │ (Kernel)
├─────────────────────────┤
│ Matériel │ (CPU, RAM, Disque)
└─────────────────────────┘

🔧 Composants Clés

  • Kernel: Cœur du système, gestion matériel
  • Shell: Interface en ligne de commande
  • Système de fichiers: Organisation des données
  • Processus: Programmes en cours d'exécution

5. Terminal & Commandes

💻 Commandes Essentielles

📁 Navigation

$ pwd
/home/utilisateur
$ ls -la
drwxr-xr-x 2 user user 4096 Jan 15 10:30 Documents
$ cd Documents
$ cd ..
$ cd ~

📄 Manipulation de Fichiers

$ touch nouveau_fichier.txt
$ mkdir nouveau_dossier
$ cp fichier.txt copie.txt
$ mv ancien.txt nouveau.txt
$ rm fichier.txt
$ rm -rf dossier/

🔍 Recherche et Affichage

$ cat fichier.txt
$ less fichier.txt
$ head -10 fichier.txt
$ tail -10 fichier.txt
$ grep "motif" fichier.txt
$ find . -name "*.txt"
❓ Que fait la commande "ls -la" ?
A) Supprime tous les fichiers
B) Liste tous les fichiers avec détails
C) Crée un nouveau dossier
D) Édite un fichier

6. Système de Fichiers

🗂️ Hiérarchie Standard

/
├── bin/ # Binaires essentiels
├── boot/ # Fichiers de démarrage
├── dev/ # Périphériques
├── etc/ # Configuration système
├── home/ # Dossiers utilisateurs
├── lib/ # Bibliothèques partagées
├── media/ # Points de montage médias
├── mnt/ # Points de montage temporaires
├── opt/ # Logiciels optionnels
├── proc/ # Informations processus
├── root/ # Dossier de l'admin
├── run/ # Données d'exécution
├── sbin/ # Binaires système
├── srv/ # Données de services
├── sys/ # Interface noyau
├── tmp/ # Fichiers temporaires
├── usr/ # Programmes utilisateur
└── var/ # Données variables

🔐 Permissions de Fichiers

$ ls -l fichier.txt
-rw-r--r-- 1 user group 1024 Jan 15 10:30 fichier.txt
│││││││││└─ Autres (lecture)
││││││││└── Groupe (lecture)
│││││││└─── Groupe (écriture)
││││││└──── Propriétaire (lecture)
│││││└───── Propriétaire (écriture)
││││└────── Type de fichier

Modification des Permissions

$ chmod 755 script.sh
$ chmod +x programme
$ chown user:group fichier.txt

7. Gestion des Utilisateurs

👥 Comptes Utilisateurs

$ whoami
utilisateur
$ id
uid=1000(user) gid=1000(user) groups=1000(user),27(sudo)
$ sudo adduser nouveau_user
$ sudo deluser ancien_user
$ sudo usermod -aG sudo nouveau_user

🔑 Sudo et Privilèges

⚠️ Important: sudo permet d'exécuter des commandes avec les privilèges administrateur
$ sudo apt update
$ sudo systemctl restart apache2
$ sudo -i
root@serveur:#

8. Processus & Services

⚙️ Gestion des Processus

$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
$ top
$ htop
$ kill 1234
$ killall firefox

🔄 Services Systemd

$ systemctl status apache2
$ sudo systemctl start apache2
$ sudo systemctl stop apache2
$ sudo systemctl enable apache2
$ sudo systemctl disable apache2

9. Configuration Réseau

🌐 Commandes Réseau

$ ip addr show
$ ping google.com
$ wget https://example.com/file.zip
$ curl -I https://example.com
$ netstat -tuln
$ ss -tuln

🔧 Configuration

$ sudo dhclient eth0
$ sudo ip route add default via 192.168.1.1
$ cat /etc/resolv.conf

10. Sécurité

🔒 Sécurité de Base

$ sudo ufw enable
$ sudo ufw allow 22
$ sudo ufw deny 23
$ ssh user@serveur
$ ssh-keygen -t rsa -b 4096

🔍 Monitoring

$ sudo tail -f /var/log/auth.log
$ last
$ w
🛡️ Bonnes Pratiques:
  • Mettez à jour régulièrement le système
  • Utilisez des mots de passe forts
  • Configurez un pare-feu
  • Surveillez les logs

11. Scripts Bash

📝 Premier Script

#!/bin/bash
# Mon premier script
echo "Bonjour $USER!"
echo "Nous sommes le $(date)"
echo "Vous êtes dans: $(pwd)"

🔄 Structures de Contrôle

#!/bin/bash
# Condition
if [ "$1" = "test" ]; then
    echo "Mode test activé"
else
    echo "Mode normal"
fi

# Boucle
for i in {1..5}; do
    echo "Itération $i"
done

12. Administration Système

📦 Gestion des Paquets

# Ubuntu/Debian
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install vim
$ sudo apt remove vim
$ apt search keyword
# CentOS/RHEL
$ sudo yum update
$ sudo yum install vim
$ sudo dnf install vim

💾 Gestion de l'Espace Disque

$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 8.5G 10G 46% /
$ du -sh /home
$ ncdu /home

⏰ Tâches Programmées (Cron)

$ crontab -e
# Sauvegarde quotidienne à 2h du matin
0 2 * * * /home/user/backup.sh
$ crontab -l
🎓 Félicitations! Vous avez terminé ce cours sur Linux. Continuez à pratiquer pour maîtriser ce puissant système d'exploitation !