Linux & Systèmes PDF Gratuit

Cours GNU/Linux en PDF (Séance 4, Intermédiaire)

Cours d'Administration Linux — administration système GNU/Linux : Ce qu'il faut savoir. Outils de configuration et d'administration locale d'un système GNU/Linux : le shell Bash comme environnement de travail, la gestion des processus, le contrôle des permissions et la compilation depuis les sources. Le contenu précise également les interactions avec le noyau Linux (Kernel) pour la gestion des ressources et les appels système. Support diffusé gratuitement par Philippe Latu (Université Toulouse Paul Sabatier), licence GNU FDL v1.3.

Concepts fondamentaux de l'administration GNU/Linux

L'administration système s'appuie sur le système d'exploitation (OS) qui coordonne l'accès au matériel, la gestion de la mémoire, le planificateur de tâches et les périphériques. Le noyau Linux joue le rôle central en traitant les appels système et en arbitrant les ressources, tandis que la ligne de commande permet d'adresser directement ces mécanismes pour diagnostiquer, automatiser et sécuriser un environnement. Maîtriser ces principes est indispensable pour une administration fiable et reproductible.

Pour télécharger le support de cours PDF, consultez la diffusion officielle du module sur le site de l'établissement ou la plateforme de partage associée au cours. Le document contient l'ensemble des exemples et exercices cités, utiles pour reproduire les démarches en VM ou sur postes locaux.

Origines et philosophie de GNU/Linux

GNU/Linux hérite directement de la philosophie UNIX : simplicité des outils, composition par tuyaux (pipes) et préférence pour des programmes spécialisés et combinables. L'approche du logiciel libre, portée par le projet GNU et la communauté du noyau Linux, favorise la transparence du code, la réutilisabilité et la possibilité d'auditer les composants. La conception Unix influence encore la structure des systèmes modernes (processus, permissions, filesystem), et la philosophie open source guide les pratiques d'administration et de sécurité.

De UNIX à GNU/Linux : Comprendre l'architecture

La séparation entre le noyau (kernel) et l'espace utilisateur est au cœur de l'architecture : le noyau gère le matériel et les appels système, l'espace utilisateur regroupe shells, utilitaires et services. Les distributions assemblent ces éléments avec des gestionnaires de services (systemd, init), des bibliothèques et des gestionnaires de paquets. Comprendre cette architecture facilite les diagnostics, l'optimisation des performances et la sélection des outils adaptés à un serveur ou une VM.

Gestion des paquets (APT/YUM) vs compilation manuelle

Les gestionnaires de paquets (APT pour Debian/Ubuntu, YUM/DNF pour RHEL/CentOS/Fedora) automatisent l'installation, la mise à jour et la résolution des dépendances, ce qui simplifie l'administration serveur et la maintenance de sécurité. La compilation manuelle reste pertinente pour des versions spécifiques ou des optimisations, mais exige de gérer les chemins d'installation, les bibliothèques et les conflits. Dans un contexte d'Administration Linux, privilégier un gestionnaire de paquets garantit reproductibilité et intégration dans les processus de mise à jour, tandis que la compilation sert les cas nécessitant contrôle fin et personnalisation.

Pourquoi privilégier la ligne de commande pour l'administration ?

La ligne de commande permet d'automatiser les tâches, d'écrire des scripts reproductibles et d'accéder à des diagnostics détaillés non accessibles via des interfaces graphiques. Elle s'intègre facilement dans des workflows CI/CD, la gestion d'inventaire et les procédures d'urgence. Pour l'administration de serveurs et de VM, la maîtrise du shell et des utilitaires Unix est un levier d'efficacité et de robustesse opérationnelle.

🎯 Ce que vous allez apprendre

    Le shell Bash et l'environnement POSIX

  • Maîtrise du shell Bash et de son environnement

    Comprendre le rôle de Bash (Bourne-again Shell) et les conventions POSIX pour écrire des commandes robustes et reproductibles. Vous saurez créer des fonctions et alias, utiliser l'historique et l'édition de ligne pour automatiser des tâches et écrire des scripts d'usage courant (ex : en-tête #!/bin/bash et routines de test de programmes).

  • Gestion des processus et signaux système

  • Contrôler et diagnostiquer les processus

    Identifier propriétaires, ressources consommées et contextes d'exécution à l'aide de commandes comme ps, top, pidof, et outils orientés I/O (iotop) ou mémoire (/proc/meminfo, vmstat). Ajuster la priorité d'exécution (nice/renice), arrêter proprement ou forcer l'arrêt d'un processus et estimer l'impact mémoire d'un service.

  • Gérer les permissions et les masques

    Appréhender la notation littérale et octale des permissions, l'usage de chmod, chown, chgrp et la configuration de umask. Appliquer SUID, SGID et le sticky bit sur des objets spécifiques et évaluer les implications en termes de sécurité.

  • Compilation d'applications depuis les sources

    Exécuter la chaîne classique ./configuremakemake install, comprendre comment ./configure détecte les bibliothèques et génère les Makefiles, et distinguer les emplacements système (/usr) des installations locales (/usr/local).

  • Automatisation et scripts d'administration

    Analyser et écrire des scripts Bash (exemples : nettoyage de bases SQLite), gérer des boucles, tests d'existence de programmes et détection de processus pour automatiser la maintenance sur VM et postes locaux.

  • Interaction shell — noyau

    Comprendre comment le shell invoque des appels système gérés par le noyau (fork, exec, open, read, write), comment les signaux et la redirection affectent les processus, et comment utiliser /proc pour diagnostiquer l'état des ressources et des services.

📑 Sommaire du document

  • Configuration du Système GNU/Linux
  • Shell Bash
  • Processus
  • Permissions sur le système de fichiers
  • Compilation d'une application

Différence importante : l'administration système couvre la configuration, la surveillance et la maintenance d'un environnement (utilisateurs, services, sécurité, sauvegardes), tandis que l'installation concerne la mise en place initiale d'un logiciel ou d'un système. Ce document privilégie les gestes professionnels d'administration et les vérifications post-installation pour garantir la stabilité et la sécurité.

💡 Pourquoi choisir ce cours ?

Approche pratique et opérationnelle : extraits de scripts réels, exercices dirigés et commandes système courantes favorisent l'acquisition de gestes professionnels. Rédigé par Philippe Latu (Université Toulouse Paul Sabatier) et publié sous licence GNU FDL v1.3, le support met l'accent sur la manipulation en VM, la comparaison entre paquets distribués et compilations locales, et des exemples concrets pour valider des hypothèses de configuration.

👤 À qui s'adresse ce cours ?

  • Public cible : étudiants en systèmes et réseaux, administrateurs systèmes juniors et développeurs souhaitant gérer des environnements Linux locaux ou sur VM, confrontés à la configuration, la surveillance de processus et l'installation depuis les sources.
  • Prérequis : connaissance de base du terminal (navigation, redirections), notions élémentaires d'administration Unix (utilisateurs/groupes) et familiarité avec l'édition de texte en ligne de commande ; ces acquis permettent d'aborder les concepts intermédiaires présentés.

❓ Foire Aux Questions (FAQ)

Comment activer le bit SUID sur un fichier et quels effets attendus ?

Utilisez chmod u+s fichier ou la notation octale correspondante pour définir le bit SUID : l'exécutable s'exécutera avec l'UID du propriétaire plutôt qu'avec celui de l'appelant. Utile pour des outils nécessitant des privilèges restreints, ce réglage augmente le risque d'élévation de privilèges et doit être évalué au regard des vecteurs d'attaque.

Quel est le rôle précis de ./configure avant make ?

Le script ./configure détecte les caractéristiques de la plate-forme cible, vérifie la présence des bibliothèques et outils nécessaires et génère les Makefiles adaptés au système. En cas de dépendances manquantes, ./configure échouera ou produira des logs utiles pour corriger l'environnement avant de lancer la compilation.