Sélectionner une page
Contenu du cours
Systèmes d’Exploitation
Devenez autonome dans la gestion des environnements Linux et Windows Server. Vous apprendrez à administrer, automatiser et sécuriser les serveurs grâce à des outils et langages comme Bash, Systemd, PowerShell et Active Directory. Ce bloc développe les compétences essentielles à la maintenance et à la supervision des systèmes d’exploitation d’entreprise.
0/4
Réseaux et Télécommunications
Maîtrisez la conception, la configuration et le dépannage d’infrastructures réseau complexes. Ce module couvre les fondamentaux du modèle OSI, du subnetting, des VLAN, du routage et des services réseau (DNS, DHCP) à l’aide d’équipements professionnels (Cisco, HP). Vous apprendrez également à renforcer la sécurité et la performance des architectures réseau.
0/3
Virtualisation et Cloud
Développez une expertise en virtualisation et en Cloud Computing. Vous apprendrez à déployer des machines virtuelles avec VMware ou Proxmox, à orchestrer des conteneurs avec Docker et Kubernetes, et à utiliser les principaux Clouds publics (AWS, Azure). L’accent est mis sur l’automatisation via Terraform et Ansible pour une gestion d’infrastructure moderne et scalable.
0/4
Sécurité des Systèmes d’Information
Renforcez la résilience et la conformité des systèmes informatiques. Ce bloc vous forme au hardening des serveurs, à la configuration des pare-feu (iptables, pfSense), à la mise en place de VPN, ainsi qu’à la réalisation d’audits de sécurité. Vous serez capable d’anticiper, détecter et corriger les failles afin de protéger les infrastructures contre les cybermenaces.
0/3
DevOps et Automatisation
Intégrez les pratiques DevOps pour une gestion fluide du cycle de vie des applications. Vous apprendrez à utiliser Git, à mettre en place des pipelines CI/CD (avec Jenkins, GitLab CI), et à surveiller les systèmes via des outils d’observabilité comme Prometheus, Grafana et ELK. Ce bloc met l’accent sur l’efficacité, la collaboration et la proactivité dans la gestion IT.
0/2
Projet Final et Certification
Mettez en pratique l’ensemble des compétences acquises à travers un projet d’envergure. Vous concevrez, déploierez et documenterez une infrastructure hybride (On-Premise + Cloud), intégrant sécurité, réseau, virtualisation et DevOps. Ce projet constitue la synthèse du cursus et vous prépare directement à la certification RNCP de niveau 6 (Bac+3).
0/2
Administrateur SysOps & DevOps
À propos de la leçon

Cours Complet – Fondamentaux Linux 🐧

 

📋 Module 1.1 : Administration Linux – Fondamentaux (40h)

 


 

1. Introduction à Linux

 

1.1 Qu’est-ce que Linux ?

Linux est un système d’exploitation **open source** basé sur Unix, créé par Linus Torvalds en 1991.

 

Caractéristiques principales

  • Open Source : Code source librement accessible et modifiable.
  • Multiutilisateur : Plusieurs utilisateurs peuvent travailler simultanément.
  • Multitâche : Exécution de plusieurs processus en parallèle.
  • Portable : Fonctionne sur diverses architectures matérielles.
  • Sécurisé : Système de permissions robuste.
  • Stable : Utilisé dans 90% des serveurs web mondiaux.

 

Architecture Linux

┌─────────────────────────────────────┐
│         Applications                │
│    (Firefox, Apache, MySQL)         │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│      Shell (Interface)              │
│    (Bash, Zsh, Fish)                │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│         Noyau Linux                 │
│  (Kernel - Gestion des ressources)  │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│         Matériel                    │
│   (CPU, RAM, Disques, Réseau)       │
└─────────────────────────────────────┘

1.2 Distributions Linux

Une distribution (ou « distro ») est un ensemble comprenant le noyau Linux, des outils système et des applications.

 

Distributions principales pour serveurs

Distribution Caractéristiques Usage recommandé
Ubuntu Server Facile, bien documentée, LTS Débutants, cloud, Docker
Debian Très stable, conservatrice Serveurs de production
CentOS / Rocky Linux Clone gratuit de RHEL Entreprises, compatibilité RHEL
Red Hat Enterprise Linux Support commercial, certifiée Grandes entreprises
Alpine Linux Très légère (5 MB) Conteneurs Docker

 

Versions LTS (Long Term Support)

  • Ubuntu LTS : Support de 5 ans (ex: Ubuntu 22.04 LTS jusqu’en 2027)
  • Mises à jour de sécurité garanties.
  • Recommandé pour la production.

 

1.3 Philosophie Unix/Linux

 

Principes fondamentaux

  1. Tout est fichier : périphériques, processus, configurations.
  2. Programmes simples : chaque outil fait une chose et la fait bien.
  3. Composition : combiner des outils simples via pipes.
  4. Texte brut : privilégier les formats texte pour la configuration.

 

Exemple de composition

# Lister les fichiers, filtrer, compter
ls -l | grep ".txt" | wc -l


 

2. Installation et Configuration

 

2.1 Installation d’Ubuntu Server

 

Prérequis matériels minimaux

  • CPU : 1 GHz ou plus
  • RAM : 2 GB minimum (4 GB recommandé)
  • Disque : 25 GB minimum
  • Réseau : Carte réseau

 

Étapes d’installation

1. Téléchargement

 

2. Création de média bootable

# Sous Linux avec dd
sudo dd if=ubuntu-22.04-server.iso of=/dev/sdX bs=4M status=progress

Ou utiliser Rufus (Windows) / Etcher (multiplateforme)

 

3. Installation pas à pas

  • Démarrer sur le média d’installation
  • Choisir la langue : English (recommandé pour les serveurs)
  • Configuration réseau : DHCP ou IP statique
  • Configuration du disque : Utiliser le disque entier ou partitionnement manuel
  • Profil utilisateur : créer un compte administrateur
  • Installation OpenSSH Server : OUI (pour l’accès à distance)
  • Snaps : facultatif (Docker, etc.)

 

4. Premier démarrage

# Mise à jour du système
sudo apt update
sudo apt upgrade -y

# Installation d'outils essentiels
sudo apt install -y vim curl wget git htop net-tools

 

2.2 Configuration initiale

 

Configuration réseau statique

 

Méthode moderne avec Netplan (Ubuntu 18.04+)

Fichier : /etc/netplan/00-installer-config.yaml

network:
  version: 2
  ethernets:
    ens33:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

Application de la configuration :

sudo netplan apply

 

Configuration du hostname

# Voir le hostname actuel
hostname

# Changer le hostname
sudo hostnamectl set-hostname mon-serveur

# Vérifier
hostnamectl

 

Fichier /etc/hosts

# Éditer /etc/hosts
sudo vim /etc/hosts

# Contenu
127.0.0.1       localhost
192.168.1.100   mon-serveur.local mon-serveur

 

2.3 Connexion SSH

 

Installation et configuration SSH

# Installation du serveur SSH
sudo apt install openssh-server

# Démarrage du service
sudo systemctl start ssh
sudo systemctl enable ssh

# Vérification
sudo systemctl status ssh

 

Configuration sécurisée SSH

Fichier : /etc/ssh/sshd_config

# Port personnalisé (optionnel)
Port 2222

# Désactiver root login
PermitRootLogin no

# Authentification par clé uniquement (recommandé)
PasswordAuthentication no
PubkeyAuthentication yes

# Timeout
ClientAliveInterval 300
ClientAliveCountMax 2

Redémarrage du service :

sudo systemctl restart ssh

 

Connexion depuis un client

# Connexion simple
ssh utilisateur@192.168.1.100

# Avec port personnalisé
ssh -p 2222 utilisateur@192.168.1.100

# Avec clé SSH
ssh -i ~/.ssh/ma_cle utilisateur@192.168.1.100

 

Génération de clés SSH

# Sur le client
ssh-keygen -t rsa -b 4096 -C "mon-email@example.com"

# Copier la clé publique sur le serveur
ssh-copy-id utilisateur@192.168.1.100

# Ou manuellement
cat ~/.ssh/id_rsa.pub | ssh utilisateur@192.168.1.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"


 

3. Navigation en Ligne de Commande

 

3.1 Structure du système de fichiers Linux

/                   (racine)
├── bin            → Binaires essentiels
├── boot           → Fichiers de démarrage
├── dev            → Fichiers de périphériques
├── etc            → Fichiers de configuration
├── home           → Répertoires utilisateurs
│   ├── user1
│   └── user2
...
└── var            → Données variables
    ├── log        → Journaux système
    ├── www        → Sites web
    └── mail       → Mails

 

3.2 Chemins absolus vs relatifs

 

Chemin absolu

Commence par / (racine)

cd /home/user/documents
cd /etc/apache2

 

Chemin relatif

Relatif au répertoire courant

cd documents          # Si on est dans /home/user
cd ../autre_user      # Remonte d'un niveau puis descend

 

Raccourcis importants

  • . → Répertoire courant
  • .. → Répertoire parent
  • ~ → Répertoire home de l’utilisateur
  • - → Répertoire précédent

 

3.3 Commandes de base

 

pwd (Print Working Directory)

pwd
# Affiche : /home/user/documents

ls (List)

# Liste détaillée + cachés + taille humaine + trié par date
ls -lhta

Sortie de ls -l expliquée :

-rw-r--r-- 1 user group 4096 Oct 17 10:30 fichier.txt
│││││││││  │ │    │     │    │           └─ Nom
│││││││││  │ │    │     └─ Date de modification
│││││││││  │ │    └─ Taille (octets)
...
└─ Type (- fichier, d répertoire, l lien)

 

cd (Change Directory)

# Aller au home
cd ~

# Répertoire précédent
cd -

 

mkdir (Make Directory)

# Créer une arborescence
mkdir -p projet/src/main/java

# Avec permissions spécifiques
mkdir -m 755 public_html

 

rmdir (Remove Directory)

# Supprimer un répertoire vide
rmdir mon_dossier

 

touch

# Créer un fichier vide
touch fichier.txt

 

cat (Concatenate)

# Afficher le contenu
cat fichier.txt

# Numéroter les lignes
cat -n fichier.txt

 

more et less

# Pagination avancée (less - recommandé)
less fichier.txt

 

head et tail

# Suivre en temps réel (logs)
tail -f /var/log/syslog

# Afficher les 50 dernières lignes et suivre
tail -n 50 -f /var/log/apache2/access.log


 

4. Gestion des Fichiers et Répertoires

 

4.1 Copie et déplacement

cp (Copy)

# Copier un répertoire (récursif) avec conservation des attributs
cp -rp dossier_source/ dossier_destination/

# Copie interactive (demande confirmation)
cp -i fichier.txt destination.txt

 

mv (Move / Rename)

# Renommer un fichier
mv ancien_nom.txt nouveau_nom.txt

# Déplacer un fichier
mv fichier.txt /home/user/documents/

 

4.2 Suppression

rm (Remove)

# Supprimer un répertoire et son contenu (récursif)
rm -r dossier/

# Supprimer récursivement avec force
rm -rf dossier/

# ⚠️ DANGER : Ne JAMAIS faire
rm -rf /

 

4.3 Recherche de fichiers

find

# Rechercher par taille (> 100 MB)
find /var -size +100M

# Rechercher par date de modification (modifiés dans les 7 derniers jours)
find /var/log -mtime -7

# Rechercher et supprimer
find /tmp -name "*.tmp" -delete

 

locate

# Recherche rapide (base de données)
locate fichier.txt

# Mettre à jour la base de données
sudo updatedb

 

which et whereis

# Trouver l'emplacement d'une commande
which python3
# /usr/bin/python3

 

4.4 Liens symboliques et durs

ln (Link)

 

Lien symbolique (symlink)

# Créer un lien symbolique
ln -s /chemin/vers/fichier lien_vers_fichier

 

Lien dur (hard link)

# Créer un lien dur (même inode)
ln fichier_original lien_dur


 

5. Éditeurs de Texte

 

5.1 Vim

Vim est l’éditeur le plus puissant et répandu sur Linux. Il fonctionne avec des modes.

 

Modes de Vim

  1. Mode Normal : Navigation et commandes (défaut)
  2. Mode Insertion : Édition de texte (touche i)
  3. Mode Commande : Exécution de commandes (touche :)

 

Commandes essentielles

# Passer en mode Insertion : i, a, o, O
# Retour en mode Normal : ESC

# Suppression de la ligne : dd
# Copier/Coller la ligne : yy, p

# Sauvegarder et quitter :
:wq           → Sauvegarder et quitter
:q!           → Quitter sans sauvegarder

 

Rechercher et remplacer

# Remplacer globalement dans tout le fichier
:%s/ancien/nouveau/g    → Remplacer dans tout le fichier

 

5.2 Nano

Nano est plus simple et intuitif. Les commandes sont affichées en bas (^ signifie Ctrl).

 

Utilisation de base

# Ouvrir un fichier
nano fichier.txt

# Commandes principales
Ctrl+O        → Sauvegarder (WriteOut)
Ctrl+X        → Quitter


 

6. Permissions et Sécurité

 

6.1 Système de permissions Unix

 

Types de permissions

  • r (read) = 4 : Lecture
  • w (write) = 2 : Écriture
  • x (execute) = 1 : Exécution

 

Catégories

  • u (user) : Propriétaire
  • g (group) : Groupe
  • o (others) : Autres

 

Notation octale

Octal Permissions Signification
7 rwx Tous les droits
6 rw- Lecture + Écriture
4 r– Lecture

 

6.2 Commande chmod

 

Notation octale

# Donner 755 (rwxr-xr-x)
chmod 755 script.sh

# Récursif
chmod -R 755 /var/www/

 

Notation symbolique

# Ajouter exécution au propriétaire
chmod u+x script.sh

# Retirer écriture au groupe
chmod g-w fichier.txt

 

6.3 Commande chown

# Changer propriétaire et groupe (récursif)
sudo chown -R www-data:www-data /var/www/html/

 

6.5 umask

umask définit les permissions par défaut lors de la création de fichiers (Fichiers : 666 – umask ; Répertoires : 777 – umask).

# Voir umask actuel
umask
# 0022

 

6.6 Permissions spéciales

  • Sticky Bit (t) : Sur répertoire, empêche la suppression des fichiers par d’autres utilisateurs.
  • SUID (s) : Exécuter avec les droits du propriétaire (ex: passwd).
  • SGID (s) : Sur répertoire, fichiers créés héritent du groupe.

 


 

7. Gestion des Utilisateurs et Groupes

 

7.1 Fichiers de configuration

  • /etc/passwd : Infos utilisateur (login:x:UID:GID:comment:home:shell)
  • /etc/shadow : Mots de passe chiffrés (accès root)
  • /etc/group : Infos groupes (nom:x:GID:membres)

 

7.2 Gestion des utilisateurs

 

useradd – Créer un utilisateur

# Création complète
sudo useradd -m -s /bin/bash -c "John Doe" -G sudo,developers john

usermod – Modifier un utilisateur

# Ajouter à des groupes
sudo usermod -aG docker,developers john

# Verrouiller le compte
sudo usermod -L john

userdel – Supprimer un utilisateur

# Supprimer l'utilisateur ET son home
sudo userdel -r john

7.3 Gestion des groupes

# Créer un groupe
sudo groupadd developers

# Ajouter un utilisateur au groupe
sudo gpasswd -a john developers

7.4 Commandes de consultation

# Voir ses propres identités
id
# Voir qui est connecté
who / w
# Historique des connexions
last

7.5 Commutations d’utilisateur

  • su - john : Devenir l’utilisateur john (avec environnement complet).
  • sudo commande : Exécuter une commande en tant que root.
  • sudo -i : Devenir root temporairement.

Configuration sudo (/etc/sudoers)

⚠️ Ne jamais éditer directement ! Utiliser :

sudo visudo

Exemple de configuration :

# Donner tous les droits
john ALL=(ALL:ALL) ALL

# Par groupe
%sudo ALL=(ALL:ALL) ALL

8. Scripts Bash

8.1 Introduction aux scripts

Structure de base :

#!/bin/bash
# Shebang : indique l'interpréteur à utiliser

# Commandes
echo "Hello World"

Exécution :

chmod +x mon_script.sh
./mon_script.sh

8.2 Variables

# Déclaration de variables (pas d'espace autour du =)
nom="John"
echo "Bonjour $nom"

# Variables spéciales (Arguments)
echo "Nom du script: $0"
echo "Premier argument: $1"
echo "Nombre d'arguments: $#"

# Code de retour de la dernière commande
echo "Code retour: $?"

8.3 Entrées utilisateur

# Lecture avec prompt
read -p "Votre âge: " age

# Lecture sans affichage (mot de passe)
read -sp "Mot de passe: " password
echo

8.4 Opérations arithmétiques

# Méthode 1: $(( ))
a=10
b=5
somme=$((a + b))
echo "Somme: $somme"

# Incrémentation
i=0
((i++))

9. TP Pratiques

Cette section est réservée aux travaux pratiques basés sur les chapitres 1 à 8.