// Module 01

Fondations Linux & ligne de commandeDÉBUTANT

Avant de gérer un serveur, il faut parler sa langue. Ton VPS Contabo tourne sous Debian 12, sans interface graphique : tout passe par le terminal. Ce module pose les bases que tu utiliseras dans tous les autres.

// 1.1

Le système de fichiers Linux

Sous Linux, tout est organisé en arborescence à partir d'une racine unique : /. Il n'y a pas de « disque C: » comme sous Windows. Chaque dossier a un rôle précis.

◆ CONCEPT

Tout est fichier sous Linux — un fichier texte, un dossier, un périphérique, et même une connexion réseau sont représentés comme des fichiers. C'est une philosophie fondatrice qui rend le système cohérent.

DossierRôle
/homeDossiers personnels des utilisateurs (ex. /home/pixelbaobab)
/etcFichiers de configuration système (SSH, Caddy, fail2ban...)
/varDonnées variables : logs (/var/log), bases de données
/usrProgrammes et bibliothèques installés
/optLogiciels tiers (ex. ton install de neovim)
/tmpFichiers temporaires, effacés au redémarrage
/rootDossier personnel de l'utilisateur root

Se repérer

terminal
$ pwd                # où suis-je ? (print working directory)
$ ls                 # lister le contenu du dossier
$ ls -la             # tout afficher : cachés, permissions, tailles
$ cd /etc            # se déplacer vers /etc
$ cd ~               # revenir à son home
$ cd ..              # remonter d'un niveau
$ tree -L 2          # arborescence sur 2 niveaux (si installé)
⚡ Exercice sur ton VPS

Explore ton serveur

Connecte-toi en SSH et explore : va dans /etc et liste son contenu, trouve le dossier caddy de ton install, regarde ce qu'il y a dans /var/log. Note la structure de ~/projects.

$ cd /var/log && ls -la
$ cd ~/projects && ls -la
$ du -sh ~/projects/*    # taille de chaque projet
// 1.2

Navigation, fichiers & permissions

Manipuler fichiers et dossiers

terminal
$ mkdir mon-dossier           # créer un dossier
$ mkdir -p a/b/c             # créer une arborescence complète
$ touch fichier.txt          # créer un fichier vide
$ cp source.txt dest.txt     # copier
$ cp -r dossier/ copie/      # copier un dossier (récursif)
$ mv ancien.txt nouveau.txt  # renommer / déplacer
$ rm fichier.txt             # supprimer un fichier
$ rm -rf dossier/            # supprimer un dossier (DANGER)
⚠ ATTENTION

rm -rf supprime définitivement et sans confirmation. Pas de corbeille sous Linux. Vérifie toujours TROIS fois le chemin avant de lancer la commande, surtout en root. rm -rf / détruirait tout le système.

Lire le contenu d'un fichier

terminal
$ cat fichier.txt            # afficher tout le contenu
$ less fichier.txt           # lire page par page (q pour quitter)
$ head -n 20 fichier.txt     # les 20 premières lignes
$ tail -n 20 fichier.txt     # les 20 dernières lignes
$ tail -f /var/log/syslog    # suivre en temps réel
$ grep "erreur" fichier.txt  # chercher un mot dans un fichier

Comprendre les permissions

Chaque fichier a des permissions pour trois catégories : le propriétaire (u), le groupe (g), et les autres (o). Trois droits possibles : lecture (r=4), écriture (w=2), exécution (x=1).

terminal — modifier les permissions
$ chmod 600 .env             # rw pour le proprio seulement (secrets !)
$ chmod 700 ~/.ssh           # rwx proprio seulement (dossier SSH)
$ chmod 755 script.sh        # rwx proprio, rx pour les autres
$ chmod +x deploy.sh         # rendre exécutable
$ chown pixelbaobab:pixelbaobab fichier   # changer le propriétaire
ℹ NOTE

Les permissions 600 et 700 reviennent souvent pour la sécurité : un fichier .env contenant des secrets, ou ton dossier ~/.ssh, ne doivent JAMAIS être lisibles par d'autres. SSH refuse même de fonctionner si les permissions de tes clés sont trop ouvertes.

// 1.3

Utilisateurs, groupes & sudo

Linux est multi-utilisateurs. Le compte root est tout-puissant : il peut tout faire, y compris casser le système. La bonne pratique — celle qu'on a appliquée en installant ton VPS — est de ne jamais travailler en root, mais d'utiliser un compte normal qui peut élever ses droits avec sudo quand nécessaire.

◆ CONCEPT

sudo (superuser do) exécute une commande avec les droits root, temporairement, pour une seule commande. Ça crée une trace dans les logs et évite les catastrophes d'un shell root permanent.

terminal
$ whoami                    # quel utilisateur suis-je ?
$ id                        # mes groupes et identifiants
$ sudo apt update           # exécuter en tant que root
$ adduser nouveau           # créer un utilisateur
$ usermod -aG docker pixelbaobab   # ajouter à un groupe
$ groups pixelbaobab        # voir les groupes d'un utilisateur
✓ ASTUCE

Quand tu ajoutes un utilisateur à un groupe (comme docker ou systemd-journal), le changement ne prend effet qu'à la prochaine connexion. Déconnecte-toi et reconnecte-toi, sinon groups ne montrera pas le nouveau groupe.

// 1.4

Processus & services systemd

Un processus est un programme en cours d'exécution. Un service (ou daemon) est un processus qui tourne en arrière-plan en permanence — comme SSH, fail2ban, ou Docker. Sur Debian, c'est systemd qui gère les services.

Voir les processus

terminal
$ top                       # processus en temps réel (q pour quitter)
$ btop                      # version moderne et lisible
$ ps aux                    # liste de tous les processus
$ ps aux | grep caddy       # filtrer un processus précis
$ kill 1234                 # arrêter un processus par son PID
$ kill -9 1234              # forcer l'arrêt (dernier recours)

Gérer les services systemd

terminal
$ sudo systemctl status fail2ban    # état d'un service
$ sudo systemctl start NOM          # démarrer
$ sudo systemctl stop NOM           # arrêter
$ sudo systemctl restart NOM        # redémarrer
$ sudo systemctl enable NOM         # démarrage automatique au boot
$ sudo systemctl disable NOM        # désactiver le démarrage auto
◆ CONCEPT

enable ≠ start. start lance le service maintenant. enable fait qu'il se relancera automatiquement à chaque redémarrage du serveur. On veut généralement les deux — c'est pourquoi on a fait enable puis start pour fail2ban.

⚡ Exercice sur ton VPS

Inspecte tes services

Vérifie l'état de tes services clés et identifie ceux qui démarrent automatiquement.

$ sudo systemctl status ssh
$ sudo systemctl status fail2ban
$ sudo systemctl status docker