Linux : premiers pas
Ce cours ouvre le chapitre Fondations. Il s'adresse aux personnes qui n'ont jamais administré de machine Linux, ou qui s'en servent en recopiant des commandes sans bien savoir ce qu'elles font : développeurs qui découvrent le serveur où tourne leur application, profils venus de Windows, étudiants. Il ne suppose rien, sinon de savoir ce qu'est un fichier et un dossier.
L'approche
Le cours ne présente pas un catalogue de commandes : il suit une situation. Vous arrivez dans l'équipe qui exploite Signalements, une petite API de signalement d'incidents de voirie, et l'on vous confie un accès au serveur Ubuntu où elle tourne. Il faut s'y repérer, lire ses journaux, comprendre pourquoi un fichier est illisible, arrêter un processus qui s'emballe, appliquer une mise à jour de sécurité. Chaque commande arrive au moment où l'on en a besoin, avec ce qu'elle fait réellement sous le capot.
Les exemples visent Ubuntu 24.04 LTS et Debian 13, les deux distributions que l'on rencontre le plus souvent sur les serveurs des clients de Lyneko et chez les hébergeurs français. Presque tout s'applique aux autres distributions ; les différences sont signalées.
Ce qu'il faut
Une machine Linux sur laquelle vous pouvez expérimenter sans risque, avec un compte qui a le droit d'utiliser sudo :
- une machine virtuelle locale (VirtualBox, GNOME Boxes, ou Multipass qui crée une VM Ubuntu en une commande) ;
- ou une petite instance chez un fournisseur de cloud, à supprimer ensuite (voir le cours Le cloud : les fondamentaux) ;
- ou, sous Windows, WSL 2 avec Ubuntu, en sachant que les leçons sur les services (systemd) y demandent une configuration particulière.
N'utilisez pas un serveur de production pour apprendre : plusieurs exercices consistent précisément à casser quelque chose pour voir comment on le répare.
Les leçons
- Linux, le noyau et les distributions
- Le terminal et le shell
- L'arborescence et les chemins
- Manipuler fichiers et répertoires
- Lire et éditer du texte
- Redirections, tubes et codes de sortie
- L'environnement du shell
- Utilisateurs, groupes et sudo
- Les permissions
- Les processus et les signaux
- Services et journaux
- Les paquets et les mises à jour
Pour valider : le quiz (niveau 100) et le lab (niveau 200).
Plan du cours
- Linux, le noyau et les distributions
100 Comprendre
Ce que l'on appelle « Linux » recouvre trois choses : un noyau, des outils de l'espace utilisateur, et une distribution qui assemble le tout et le maintient. Savoir les distinguer, lire la version de chacun, et choisir une distribution de serveur selon son cycle de vie. - Le terminal et le shell
100 Comprendre
Ce qui se passe entre la frappe d'une commande et son exécution : terminal, shell, anatomie d'une commande, commandes internes et externes, aide intégrée, historique, raccourcis et guillemets. Avec la preuve par strace que le shell crée un processus pour chaque programme. - L'arborescence et les chemins
100 Comprendre
Une seule arborescence, une racine, et une place pour chaque chose : la norme FHS, les répertoires d'un serveur, les chemins absolus et relatifs, ls lu colonne par colonne, les types de fichiers, les motifs du shell, et où vivent les fichiers d'une application comme Signalements. - Manipuler fichiers et répertoires
100 Comprendre
Créer, copier, déplacer et supprimer sans rien perdre : ce que font vraiment cp, mv et rm, les inodes et les liens, l'espace disque qui ne revient pas après une suppression, find pour agir en masse, et les archives tar, y compris celles qui veulent sortir de leur répertoire. - Lire et éditer du texte
100 Comprendre
Sous Linux, la configuration et les journaux sont du texte. Les lire sans s'y perdre (cat, less, head, tail -F), les résumer (wc, sort, uniq, cut, grep), comparer deux versions (diff -u), reconnaître un problème d'encodage ou de fin de ligne, et modifier un fichier de configuration avec nano, vim ou sudoedit sans casser le service. - Redirections, tubes et codes de sortie
200 Pratiquer
Ce que font vraiment >, 2>&1 et | : les trois flux standard, les descripteurs de fichiers, l'ordre des redirections, les tubes et leurs processus concurrents, les codes de sortie et leur lecture par &&, || et pipefail, avec une trace des appels système qui montre le shell au travail. - L'environnement du shell
200 Pratiquer
Variables de shell et variables d'environnement, héritage du parent vers l'enfant, la variable PATH et ses pièges, les fichiers de démarrage de Bash, et pourquoi une commande qui marche dans votre terminal échoue dans un service systemd ou sous sudo. - Utilisateurs, groupes et sudo
200 Pratiquer
Ce qu'est un utilisateur pour le noyau (un numéro), où vivent les comptes et les mots de passe, les comptes système, la création d'un compte de service, les groupes et leur piège classique, puis sudo : règles limitées, échappements vers un shell, journalisation et départ d'une personne. - Les permissions
200 Pratiquer
Lire et régler les droits d'un fichier et d'un répertoire sous Linux : propriétaire, groupe et autres, lecture, écriture et exécution, chmod, chown et umask, les bits setuid, setgid et sticky, une introduction aux ACL, et une méthode pour diagnostiquer un « Permission denied » sans jamais recourir à chmod 777. - Les processus et les signaux
200 Pratiquer
Ce qu'est un processus, comment le noyau les organise en arbre, comment les observer avec ps, top et /proc, et comment leur parler avec des signaux : arrêter proprement Signalements, comprendre un zombie, lire la charge moyenne sans contresens, et savoir qui écoute sur le port 8000. - Services et journaux
200 Pratiquer
Confier une application à systemd plutôt que la lancer à la main : unités, systemctl, fichier de service de Signalements, surcharges sans toucher aux fichiers du paquet, journal de systemd et ses filtres, rsyslog et logrotate, et la méthode pour diagnostiquer un service qui ne démarre pas. - Les paquets et les mises à jour
200 Pratiquer
Installer, mettre à jour et retirer des logiciels sur Ubuntu et Debian sans casser le serveur : paquets .deb, dpkg et APT, dépôts et signatures, ajout propre d'un dépôt tiers, mises à jour de sécurité automatiques et redémarrages, snap, et les équivalents sur Red Hat et Alpine.