Cours d’Initiation à Linux
Objectif general
Fournir aux participants les bases nécessaires pour comprendre, utiliser et
administrer un système Linux dans un contexte personnel ou professionnel.
1 Histoire et philosophie de Linux
1.1 Origine
• Unix (1969) : Système d’exploitation multi-utilisateur, multitâche,
stable et modulaire.
• Minix (1987) : Version simplifiée d’Unix pour l’apprentissage.
• Linux (1991) : Créé par Linus Torvalds, Linux est un noyau libre,
inspiré de Minix.
o Premier message public : « Just a hobby, won’t be big and
professional like GNU. »
1.2 Philosophie
• Liberté logicielle : Basé sur la licence GPL (General Public License)
— tout utilisateur peut :
o Utiliser
o Étudier
o Modifier
o Distribuer
• Communauté : Linux est développé par des milliers de contributeurs
dans le monde.
• Modularité : Chaque partie (shell, noyau, interface, etc.) est
indépendante.
2 Distribution GNU/Linux : Debian, Ubuntu, Fedora, CentOS, etc.
o Qu’est-ce qu’une distribution ?
▪ Une distribution Linux = Noyau Linux + outils +
gestionnaire de paquets + environnement graphique.
o Exemples populaires
Gestionnaire de
Distribution Public cible Caractéristiques
paquets
Stable,
Debian Apt Ultra stable
serveur
Débutant,
Ubuntu apt Facile à utiliser
bureau
Fedora Avancé, dev dnf Dernières techs
CentOS/RHEL Entreprise yum/dnf Fiabilité pro
Minimaliste, à construire
Arch Linux Expert pacman
soi-même
3 Les différentes interfaces : ligne de commande vs interfaces graphiques (CLI
vs GUI)
CLI (Command Line GUI (Graphical User
Aspect
Interface) Interface)
Utilisation Clavier, terminal Souris, fenêtres
Rapidité Très rapide avec scripts Plus lent mais intuitif
Courbe d’apprentissage plus
Apprentissage Plus accessible
raide
Contrôle
Complet et précis Parfois limité
système
Exemple Bash, Zsh, Fish GNOME, KDE, Xfce
4 Installation de Linux sur une machine virtuelle (VirtualBox ou WSL)
Travaux pratiques
Premiers pas dans le terminal
Commande Description
pwd Affiche le chemin du répertoire courant
ls Liste les fichiers du dossier
cd nom_dossier Se déplacer dans un dossier
mkdir test Crée un dossier
touch fichier Crée un fichier vide
rm fichier Supprime un fichier
man ls Affiche le manuel de la commande ls
5 Commandes de base du terminal
• Arborescence du système de fichiers Linux (/, /home, /etc, /bin, etc.)
• Navigation dans le système : pwd, cd, ls, tree
• Manipulation de fichiers et dossiers : cp, mv, rm, mkdir, touch
• Utilisation de man pour l’aide en ligne
6 Gestion des fichiers et des permissions
• Les types de fichiers Linux
• Droits d’accès : lecture, écriture, exécution
• Commandes : chmod, chown, chgrp
• Notions d’utilisateur et de groupe
7 Éditeurs de texte en ligne de commande
7.1 nano – Éditeur simple pour débutants
7.1.1 Ouvrir un fichier :
nano fichier.txt
7.1.2 Commandes de base :
Action Raccourci clavier
Enregistrer (sauvegarder) Ctrl + O
Quitter Ctrl + X
Couper une ligne Ctrl + K
Action Raccourci clavier
Coller une ligne Ctrl + U
Rechercher un mot Ctrl + W
Lorsque tu appuies sur Ctrl + O, nano demande le nom du fichier à enregistrer
(valider avec Entrée).
7.2 vim – Éditeur puissant pour utilisateurs avancés
7.2.1 Ouvrir un fichier :
vim fichier.txt
7.2.2 Modes de Vim :
• Mode normal : pour naviguer et éditer (par défaut)
• Mode insertion : pour écrire (comme un éditeur normal)
• Mode commande : pour sauvegarder, quitter, etc.
7.2.3 Commandes essentielles :
Action Commande
Passer en mode insertion i
Sauvegarder :w (en mode commande)
Quitter :q
Sauvegarder et quitter :wq ou ZZ
Quitter sans enregistrer :q!
Supprimer une ligne dd
Copier une ligne yy
Coller p
Rechercher un mot /mot puis n
Pour revenir au mode normal, appuie sur Échap.
Astuce : si tu es perdu dans vim
:q!
Cela te permet de quitter sans enregistrer.
8 Gestion des processus et des tâches
• Commandes :
o Listez les processus en cours sur le système
La commande principale pour relever l'activité des processus sur Linux
est ps
▪ Ps
utiliser ps pour relever tous les processus lancés sur le
système,
et les filtrer par utilisateur,
ou les trier par charge CPU consommée et par volume de
mémoire utilisée.
▪ pstree
Cette commande permet d’afficher la hiérarchie des
processus
Lorsque la machine démarre, Linux lance un premier
processus qui aura un ID=1 (init ou systemd en fonction du
type et de l'âge de la distribution). Tous les autres processus
seront des fils et petits-fils de ce processus.
▪ top
C’est un gestionnaire de taches sous linux en terminal
▪ htop
▪ kill
9 Gestion des utilisateurs et groupes
On peut créer autant d'utilisateurs que l'on veut, eux-mêmes répartis dans des
groupes.
Il y a un utilisateur « spécial », root, aussi appelé superutilisateur. Celui-ci a
tous les droits sur la machine.
9.1.1.1 sudo : devenir root un instant
9.1.1.2 sudo su : devenir root et le rester
• Création et suppression d’utilisateurs :
Useradd pour creer un utilisateur,
usermod pout modifier un utilisateur,
userdel pour supprimer un utilisateur
• Gestion des groupes :
o groupadd,
o gpasswd,
o groups
• Gestion des mots de passe : passwd
10 Gestion des paquets logiciels
Les logiciels des systèmes Linux sont livrés sous forme de « paquets», qui
sont des archives spéciales contenant les fichiers nécessaires (programmes,
fichiers de données, configuration, documentation), mais aussi des scripts
d’installation et des indications sur les logiciels qui doivent préalablement être
installés sur le système pour que ce paquet fonctionne bien. Ces logiciels
nécessaires sont nommés des dépendances : si un paquet dépend d’un autre
paquet, cela signifie qu’il a besoin de celui-ci pour fonctionner. Les principaux
formats de paquets sont:
.rpm(distributions Red Hat)
.deb(distributions Debian, Ubuntu et leurs dérivés).
Sous Debian/Ubuntu, le système de gestion de paquetage est nommé
APT(Advanced Package Tool), et s’utilise principalement à travers les
commandes apt-get, apt-cacheet dpkg.Les paquets sont identifiés par un nom
(par exemple « libreoffice-writer ») et un numéro de version. Les mises à jour
remplacent les paquets anciens par de nouvelles versions. Les mises à jour
régulières (quotidiennes) sont essentielles pour garantir la sécurité du système
(corrections de bugs pouvant être exploités par des pirates).Les paquets sont
publiés dans des dépôts, publiés sur le Web (la liste des dépôts et leurs
adresses sont spécifiées dans le fichier: /etc/apt/sources.list).
Les commandes utiles :
apt update: Met à jour votre *liste* de paquets. (interroge les serveurs de la
distribution pour télécharger la liste des paquets publiés et leurs numéros de
versions).
apt list –upgradable: Liste tous les paquets pour lesquels une nouvelle version
est disponible.
apt upgrade: Met à jour tous les paquets.
apt-get --only-upgrade install<nom_paquet>:Met à jour uniquement le paquet
passé en argument.
apt search<mot-recherché>: Rechercheles paquets dont la description
contientle mot clé passé en argument.
apt show<nom-paquet>: Affiche des informations détaillées sur le paquet passé
en argument.
apt install<nom-paquet>: Télécharge et installe le paquet passé en argument.
apt-get remove<nom_paquet>: supprime le paquet passé en argument mais
conserve ses fichiers de configuration.
apt-get purge<nom_paquet>: Supprime le paquet passé en argument ainsi que
ses fichiers de configuration.
apt list –installed: Affiche une liste de tous les paquets déjà installés.
apt-cache depends<nom_paquet>: Affiche les dépendances d'un paquet passé en
argument.
11 Scripting shell de base
11.1 Introduction à Bash
Le Bash, acronyme de "Bourne Again Shell", est l'un des interpréteurs de
commandes les plus utilisés sur les systèmes Unix et Linux. Il est présent par
défaut sur la majorité des distributions Linux, notamment les plus populaires tels
que Debian, Ubuntu, Rocky Linux, etc. Autrement dit, Bash est ce que l'on appelle
un shell, c'est-à-dire une interface système qui se positionne entre l'utilisateur et
le système d'exploitation.
Bash permet d'exécuter des commandes sur la machine locale, de créer et
d'exécuter des scripts pour automatiser des tâches selon les besoins d'un utilisateur
ou d'une organisation. De plus, c'est aussi un excellent moyen de gérer une
machine et les données qu'elle stocke.
11.2 Variables, conditions simples, boucles
Syntaxe générique des commandes Bash
commande [option(s)] [argument(s)]
commande option argument
ls -a /home/dossier
11.3 Création et exécution de scripts .sh
Creation d’un script bash
Les script bash utilisent l’extension .sh
touch ~/ScriptBash.sh
Ecrire un script bash
La première ligne de votre script doit toujours être le Shebang
#!/bin/bash
A la suite de cela nous pouvons ajouter nos lignes de code
#!/bin/bash
# Ecrire un message dans la console
echo "Hello World ! Premier script Bash !"
Exécution :
./ScriptBash.sh
Nécessite des droits d’exécution
11.4 Permissions d’exécution
Le script précédemment écrit n’est pas exécutable en raison du manque de
permission. Il faut donner les droits d’execution comme suit :
chmod +x ScriptBash.sh
Exercice :
12 Réseaux et services
12.1 Notions de base du réseau
12.1.1 Adresse IP (Internet Protocol)
Définition :
Une adresse IP identifie de manière unique un appareil sur un réseau.
Types :
• IPv4 : 4 nombres séparés par des points (ex : 192.168.1.1)
• IPv6 : plus long, format hexadécimal (ex :
2001:0db8:85a3::8a2e:0370:7334)
Public vs Privé :
Type Exemple Utilisation
Visible sur
Publique 8.8.8.8
Internet
Privée 192.168.x.x, 10.x.x.x Réseaux locaux
12.1.2 Masque de sous-réseau (Subnet Mask)
Définition :
Il définit la portion réseau vs la portion hôte d’une adresse IP.
Exemple :
IP : 192.168.1.5
Masque : 255.255.255.0
Réseau : 192.168.1.0
Plage d'hôtes : 192.168.1.1 → 192.168.1.254
12.1.3 Passerelle par défaut (Gateway)
Définition :
L’adresse IP du routeur qui permet à un appareil de communiquer en dehors
de son réseau local.
Ex : 192.168.1.1 est souvent la passerelle des box Internet.
12.1.4 DNS (Domain Name System)
Rôle :
Traduit les noms de domaine (ex : google.com) en adresses IP
(142.250.185.206).
Exemples de serveurs DNS :
Fournisseur Adresse DNS
Google 8.8.8.8
Cloudflare 1.1.1.1
OpenDNS 208.67.222.222
12.1.4.1 DHCP (Dynamic Host Configuration Protocol)
Fonction :
Attribue automatiquement une adresse IP, masque, gateway, et serveur DNS à
chaque appareil connecté au réseau.
Exemple : quand tu connectes ton PC en Wi-Fi chez toi, il reçoit une IP via
DHCP.
12.1.4.2 Ports et Protocoles
Port :
Un port est un point d’entrée pour un service réseau sur une machine.
Service Protocole Port
Web HTTP TCP 80
Service Protocole Port
Web HTTPS TCP 443
SSH TCP 22
DNS UDP 53
12.1.5 Adresse MAC (Media Access Control)
Une adresse physique unique à chaque carte réseau (ex : 00:1A:2B:3C:4D:5E).
Utilisée pour la communication au niveau local (LAN).
12.1.6 NAT (Network Address Translation)
Rôle :
Permet à plusieurs appareils avec des IP privées de partager une seule IP
publique via le routeur.
C’est ce qui te permet d’avoir plusieurs appareils à la maison connectés à
Internet.
12.1.7 Quelques Commandes :
ip - Afficher et configurer les interfaces reseau
----------------------------------------------------
- Afficher les interfaces :
#ip a
- Afficher la route :
#ip route
- Attribuer une IP :
# ip addr add 192.168.1.100/24 dev eth0
ifconfig
------------------------------------------
- Afficher interfaces :
#ifconfig
- Activer interface :
# ifconfig eth0 up
- Desactiver interface :
# ifconfig eth0 down
ping - Tester la connectivite reseau
# ping google.com
netstat - Voir connexions et ports (remplace par ss)
--------------------------------------------------------
- Ports ouverts :
#sudo netstat -tuln
- Connexions :
# netstat -ant
curl - Transferer des donnees (API, Web)
-------------------------------------------
- Telecharger page :
#curl https://example.com
- Enregistrer fichier :
# curl -o fichier.html https://example.com
- Requête POST :
#curl -X POST -d "nom=test" https://httpbin.org/post
wget - Telecharger fichiers/sites
------------------------------------
- Telecharger :
#wget https://example.com/fichier.zip
- Mode arriere-plan :
#wget -b https://example.com/fichier.zip
- Site entier :
#wget --mirror --convert-links --html-extension --no-parent
https://example.com
12.1.8 Accès distant : ssh
12.1.8.1 Découvrez les protocoles de cryptographie asymétrique
Cryptologie C'est la science du secret dans la transmission de l'information.
Cryptographie C'est une discipline de la cryptologie assurant notamment la
confidentialité, l'authenticité et l'intégrité du message dans une
transmission.
Chiffrer On chiffre un message afin de s'assurer qu'il est secret.
Déchiffrer On déchiffre un message afin de récupérer les données
d'origine, lisibles et compréhensibles.
Crypter On crypte lorsqu'on veut altérer un message dans l’objectif
qu’il ne soit plus lisible, à jamais.
Décrypter On essaie cependant de décrypter un message chiffré
lorsqu'on ne connaît pas la clé de déchiffrement.
Le principe de la cryptographie est le suivant :
1. déterminer un algorithme permettant de chiffrer un message,
2. communiquer cet algorithme à votre correspondant afin qu'il puisse
déchiffrer le message
Les algorithme de cryptographie Symetrique
• DES (Data Encryption Standard) d'IBM,
• ou encore AES (Advanced Encryption Standard), qui est probablement le
plus courant aujourd'hui.
Le gros inconvénient de cette méthode réside dans la criticité de cette clé
unique, qui doit être très protégée et transmise de façon sûre à vos
correspondants.
Pour résoudre le problème de la criticité de la clé de chiffrement symétrique,
nous employons plutôt la cryptographie asymétrique, c'est à dire l'utilisation
de deux clés plutôt qu'une :
1. Une clé dite publique, qui va servir à chiffrer le message, et qui peut être
diffusée sans criticité absolue, puisqu'elle ne sert qu'à chiffrer.
2. Une clé dite privée, qui va servir à déchiffrer le message, et qui est
conservée précieusement, sans nécessité de la diffuser :
Les algorithme de cryptographie asymetrique
RSA
DSA
le protocole SSH se définit par l'utilisation des deux procédés de cryptographie :
1. asymétrique pour mettre en place un échange sécurisé avec le client,
2. et symétrique pour gérer les données.
Le principe de fonctionnement est le suivant :
1. Le serveur écoute les demandes de connexions entrantes ;
2. Un client demande une connexion, le serveur lui répond les algorithmes
de chiffrement à sa disposition ;
3. Le client valide un algorithme et le serveur fournit au client sa clé
publique ;
4. À partir de ce moment-là, le client peut vérifier que tous les messages
qu'il va recevoir proviennent bien du serveur ;
5. Le client et le serveur échangent grâce à la cryptographie asymétrique
pour s'accorder sur une clé de chiffrement symétrique basée sur un très
grand nombre premier, on l'appelle la clé de session SSH ;
6. Une fois cette clé partagée, le client et le serveur peuvent l'utiliser pour
tout le reste de la session.
12.1.8.2 Installez un service SSH(OpenSSH)
• sshd: le service SSH ;
• ssh: le client SSH ;
• ssh-keygen et ssh-copy-id: les utilitaires de gestion de clé RSA, DSA ;
• scp et sftp: les clients permettant le transfert de données via SSH.
#apt-get install openssh-server
#systemctl status ssh
#ss -lptun | grep ssh
#systemctl enable ssh
#systemctl stop ssh
#systemctl restart ssh
#ssh username@ip
il est important de securiser le ssh
https://openclassrooms.com/fr/courses/7274161-administrez-un-systeme-
linux/7529351-connectez-vous-a-distance-avec-ssh
• Transfert de fichiers : scp
scp source destination
13 Sécurité et bonnes pratiques
13.1 Mise à jour du système Linux
13.1.1 Debian / Ubuntu / Linux Mint
sudo apt update # Met à jour la liste des paquets disponibles
sudo apt upgrade # Installe les mises à jour disponibles
sudo apt full-upgrade # Mise à jour + gestion des dépendances (recommandé)
sudo apt autoremove # Supprime les paquets devenus inutiles
sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y
13.1.2 RedHat / CentOS / Fedora (ancien système : yum)
sudo yum check-update # Vérifie les mises à jour
sudo yum update # Applique les mises à jour
13.2 Configuration du pare-feu (ufw, firewalld)
13.2.1 UFW (Uncomplicated Firewall)
Vérifier si UFW est installé :
sudo ufw status
Activer / Désactiver UFW :
sudo ufw enable # Active le pare-feu
sudo ufw disable # Désactive le pare-feu
Autoriser / Refuser un service :
osudo ufw allow ssh # Autorise SSH
o sudo ufw allow 80/tcp # Autorise HTTP (port 80)
o sudo ufw allow 443/tcp # Autorise HTTPS (port 443)
o sudo ufw deny 23 # Bloque Telnet
Supprimer une règle :
osudo ufw delete allow 80/tcp
Autoriser une IP spécifique :
o sudo ufw allow from 192.168.1.100
14 Sauvegarde de fichiers et automatisation
Archiver et compresser : ZIP
o zip -r archive.zip test_compression/
Explication :
o zip : commande pour créer une archive .zip
o -r : inclut les sous-dossiers récursivement
o archive.zip : nom du fichier compressé
o test_compression/ : dossier à compresser
o unzip archive.zip #pour décompresser
Archiver et compresser : TAR.GZ
o tar -czvf archive.tar.gz test_compression/
Explication :
o tar : commande pour créer des archives
o -c : créer une nouvelle archive
o -z : compresse avec gzip
o -v : mode verbeux (affiche ce qui est ajouté)
o -f : spécifie le nom du fichier
o archive.tar.gz : nom de l’archive compressée
o tar -xzvf archive.tar.gz #pour décompresser