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.
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.
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.
| Dossier | Rôle |
|---|---|
| /home | Dossiers personnels des utilisateurs (ex. /home/pixelbaobab) |
| /etc | Fichiers de configuration système (SSH, Caddy, fail2ban...) |
| /var | Données variables : logs (/var/log), bases de données |
| /usr | Programmes et bibliothèques installés |
| /opt | Logiciels tiers (ex. ton install de neovim) |
| /tmp | Fichiers temporaires, effacés au redémarrage |
| /root | Dossier personnel de l'utilisateur root |
Se repérer
$ 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é)
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
Navigation, fichiers & permissions
Manipuler fichiers et dossiers
$ 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)
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
$ 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).
$ 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
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.
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.
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.
$ 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
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.
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
$ 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
$ 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
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.
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