Ce cours du semestre 3 pose les fondations système indispensables au développement et à l’exploitation d’applications client-serveur et Web : un serveur Web, une base de données ou une API tournent presque toujours sur un système de type UNIX (Linux dans l’immense majorité des hébergeurs, des opérateurs télécoms et des datacenters de la sous-région). L’étudiant apprend à manipuler un système UNIX en ligne de commande, à comprendre et piloter les processus, les signaux et les services (démons), puis à automatiser les tâches d’administration par des scripts shell sûrs et lisibles. Le cours est orienté cybersécurité : droits minimaux, services réduits au strict nécessaire, journaux exploitables et scripts robustes. Il sera prolongé au semestre 4 (ACS2434) par l’étude des architectures client-serveur, du protocole HTTP et de la configuration des serveurs.
Objectifs d’apprentissage
- Décrire l’architecture d’un système UNIX (noyau, shell, système de fichiers, utilisateurs) et naviguer efficacement en ligne de commande.
- Gérer les permissions et les comptes selon le principe du moindre privilège (chmod, chown, umask, sudo).
- Observer et contrôler les processus : identification, états, priorités, envoi de signaux.
- Administrer les services avec systemd : démarrage, arrêt, activation, consultation des journaux, réduction de la surface d’attaque.
- Écrire des scripts Bash structurés (variables, conditions, boucles, fonctions, codes de retour) pour automatiser sauvegardes et analyses de journaux.
Prérequis
Algorithmique et programmation (S1-S2), notions d’architecture des ordinateurs et de systèmes d’exploitation. Disposer d’une machine virtuelle Linux (Debian ou Ubuntu Server) dans son propre laboratoire.
Plan du cours
- Leçon 1 — Introduction au système UNIX : architecture, fichiers et droits
- Leçon 2 — Processus et signaux
- Leçon 3 — Services et démons : administration avec systemd
- Leçon 4 — Scripting shell Bash pour l’administration
Modalités d’évaluation
Volume horaire : 10 h de cours magistral (CM), 0 h de TD, 10 h de travaux pratiques (TP) et 20 h de travail personnel de l’étudiant (TPE) ; 2 crédits. Évaluation : contrôle continu (comptes rendus de TP, quiz en ligne, mini-projet de script, 40 %) et examen terminal écrit et/ou pratique sur machine (60 %).
Bibliographie
- Brian W. Kernighan et Rob Pike, The UNIX Programming Environment, Prentice Hall.
- William E. Shotts, The Linux Command Line, No Starch Press.
- Evi Nemeth, Garth Snyder, Trent R. Hein, Ben Whaley, Dan Mackin, UNIX and Linux System Administration Handbook, Addison-Wesley.
- Christophe Blaess, Scripts shell Linux et Unix, Eyrolles.
- ANSSI, Recommandations de configuration d’un système GNU/Linux (guide en ligne, ssi.gouv.fr).
