Linux

Tags :
  • COURS
  • système d'exploitation
  • informatique
  • OS
  • Linux
Auteurs :
  • François Brucker
  • Loïck Goupil-Hallay

Liens utiles

Introduction

Linux est un noyau de système d'exploitation, c'est à dire une base logicielle qui permet à un ordinateur de fonctionner. Il est utilisé dans de nombreux systèmes d'exploitation, appelés distributions, qui ajoutent des logiciels et des outils pour en faire un système complet.

Principes et philosophie

Open-source

Linux is a success precisely because it's not a business. Users know that it was written by the community, not for money. The fact that they can use it for free is much more important than the actual cost of the software.
Linus Torvalds

Linux est un système d'exploitation open-source, ce qui signifie que son code source est accessible à tous. Cela permet à chacun de l'étudier, de le modifier et de le redistribuer librement.
C'est ce qui permet à Linux d'être utilisé dans de nombreux systèmes différents, et de s'adapter à de nombreux usages. C'est aussi ce qui a permis à Linux de devenir un système d'exploitation très populaire, notamment dans le monde des serveurs et des supercalculateurs. Entre autre grâce à sa stabilité, sa sécurité et sa fiabilité (bien que cela dépende de la distribution).

Super nouvelle : Linux est gratuit ! (Il ne coûte pas d'argent, mais du temps et de l'énergie pour l'installer et le configurer).

Communauté

The thing with open source is that it tends to come from the ground up. It doesn’t come from a large, bureaucratic hierarchy. It comes from normal people doing work and communicating.
Linus Torvalds

Linux est développé par une communauté de développeurs du monde entier, qui contribuent à son développement et à son amélioration. Cela permet à Linux d'évoluer rapidement, et de s'adapter aux besoins des utilisateurs.
Cela permet surout de corriger rapidement les bugs et les failles de sécurité, et de proposer de nouvelles fonctionnalités. C'est aussi ce qui apporte cette polyvalence à Linux.

Choix

Linux is about giving users and developers the power to have their own choices. It’s not about some kind of One True Path dictated by the needs of the vendor.
Linus Torvalds

Linux est conçu pour offrir aux utilisateurs une grande liberté de choix. Il existe de nombreuses distributions Linux, qui proposent chacune une approche différente du système d'exploitation. Cela permet à chacun de trouver la distribution qui correspond le mieux à ses besoins et à ses préférences.

Par principe, tout est personnalisable et configurable, ce qui permet de créer un système d'exploitation sur-mesure, adapté à ses besoins. C'est ce qui fait la force de Linux et le bonheur des développeurs, mais aussi sa complexité.

Systèmes d'exploitation basés sur Linux

mindmap
  root((Linux))
    Android
    Chrome OS
    RedHat
      Fedora
      CentOS
      RHEL
      AlmaLinux
      Rocky Linux
      ClearOS
    Debian
      Ubuntu
        Linux Mint
        Kubuntu
        Lubuntu
        Xubuntu
        Pop!_OS
        Zorin OS
      Kali Linux
      Raspberry Pi OS
      Devuan
      MX Linux
      Deepin
      Parrot Security OS
    Arch Linux
      Manjaro
      EndeavourOS
      Garuda Linux
      ArcoLinux
      ArchBang
    Slackware
      Slax
      Salix OS
      Zenwalk
    Gentoo
      Sabayon
      Calculate Linux
      Funtoo
    SUSE
      openSUSE
        openSUSE Leap
        openSUSE Tumbleweed
      SLES
    Alpine
    Void Linux
    NixOS
    Solus

Le noyau linux est utilisé dans tous ces systèmes d'exploitation. Chacun de ces systèmes est une distribution Linux, qui ajoute des logiciels et des outils pour en faire un système complet.

Pourquoi autant de distributions ?

Parce que chacune a ses spécificités, ses avantages et ses inconvénients, et qu'il y en a pour tous les goûts.
Certaines distributions sont conçues pour être faciles à utiliser et grand public, d'autres sont conçues pour être légères et rapides, d'autres encore sont conçues pour être sécurisées et stables.
Il y a aussi des distributions spécialisées pour des usages spécifiques, comme le hacking éthique (Kali Linux), le développement (Ubuntu), ou l'éducation (Raspberry Pi OS).
Certaines sont prévues pour tester les dernières technologies (Arch Linux), d'autres pour être utilisées en entreprise (Red Hat, SUSE), faire tourner des serveurs (Debian, CentOS), ou des supercalculateurs (RHEL).
Certaines sont rolling release, c'est à dire qu'elles sont mises à jour en continu, d'autres sont stables, c'est à dire qu'elles proposent des versions figées dans le temps.

Utilisation des distributions Linux

Une fois la distribution Linux installée, vous pouvez l'utiliser comme n'importe quel autre système d'exploitation. Vous pouvez lancer des applications, naviguer sur internet, lire des fichiers, programmer...

Terminal

Logo Bash

Le terminal est un outil essentiel pour utiliser Linux. C'est une interface en ligne de commande (CLI) qui permet de communiquer avec l'ordinateur en tapant des commandes.
Il peut littéralement tout faire, c'est beaucoup plus puissant et rapide (quand on sait s'en servir) qu'une interface graphique. Que ce soit pour installer des logiciels, gérer des fichiers, automatiser des tâches, surveiller le système, débugger, programmer, écrire des scripts, configurer le système, mettre en place des raccourcis,...

Il existe de nombreux terminaux pour Linux, le plus connu étant bash, mais il en existe d'autres comme zsh, fish, ksh...

Package manager

Les distributions Linux utilisent un gestionnaire de paquets pour installer, mettre à jour et supprimer des logiciels.
Il en existe énormément, les plus connus sont dnf (RHEL et ses enfants), apt (Debian et ses enfants), pacman (Arch Linux et ses enfants), apk (Alpine), flatpak et snap (universels en théorie).

Il s'agit souvent d'outils CLI, mais il existe des interfaces graphiques pour les utiliser. Ils permettent de gérer les dépendances des logiciels, de les mettre à jour automatiquement, de les installer en un clic.
Par principe, ils sont plus sécurisés que les installateurs Windows, car ils installent des logiciels provenant de dépôts de confiance. Et surtout ils sont simples à utiliser.

Interface graphique

Certaines distributions Linux (Alpine, Arch Linux,...) sont conçues pour être utilisées uniquement en ligne de commande, ce qui veut dire qu'elles n'ont que le terminal pour interface.
D'autres sont conçues pour être utilisées en interface graphique (GUI). Il existe de nombreuses interfaces graphiques pour Linux, les plus connues étant Gnome et KDE.

Logiciels

Pas de panique, Linux propose une alternative à quasiment tous les logiciels Windows, en plus elle tourne souvent mieux et est plus légère.
Les seuls logiciels qui ne sont pas disponibles sur Linux sont les logiciels propriétaires (Adobe, Microsoft, AutoDesk,...), mais il existe souvent des alternatives libres qui font le travail. Et les jeux vidéos ne sont pas toujours compatibles, mais ça s'améliore de jour en jour (tant que Gabe sera là).

Sécurité

Linux est sécurisé par nature, car il est basé sur des principes de sécurité solides. Il est:

Cependant il n'est pas invulnérable, il faut quand même faire attention à ce qu'on fait sur internet, à ce qu'on installe, à ce qu'on télécharge, à ce qu'on partage. Il faut bien sûr faire les mises à jour de sécurité et éventuellement installer un antivirus (ClamAV, Sophos, Bitdefender, ESET).

Architecture fichiers

Linux a pour principe de tout considérer comme un fichier, ce qui simplifie la gestion des ressources. Ainsi, toutes les interactions avec le système se font via des fichiers, que ce soit pour les périphériques, les processus, les réseaux, les utilisateurs, les logs, les configurations,...

Types de fichiers

Il existe 4 catégories de fichiers sous Linux:

Arborescence

Sur linux, les fichiers sont organisés dans une arborescence qui commence à la racine (UNIQUE) du système de fichiers (/). Voici une vue simplifiée de l'arborescence Linux:



/ : racine du système de fichiers
├── bin : programmes executables essentiels (binaires)
├── boot : fichiers nécessaires au démarrage du système
├── dev : fichiers de périphériques (devices)
├── etc : fichiers de configuration
├── home : répertoires personnels des utilisateurs
├── lib : bibliothèques partagées
├── media : points de montage pour les supports amovibles
├── mnt : points de montage temporaires pour les supports amovibles
├── opt : logiciels installés manuellement
├── proc : informations sur les processus
├── root : répertoire personnel de l'administrateur
├── run : fichiers temporaires
├── sbin : programmes executables essentiels (binaires système)
├── srv : données des services
├── sys : informations sur le système
├── tmp : fichiers temporaires
├── usr : programmes et fichiers partagés
└── var : fichiers variables (logs, spools, etc.)


Permissions

Linux est un système multi-utilisateurs et multi-tâches, ce qui signifie que plusieurs utilisateurs peuvent utiliser le système en même temps, et que plusieurs tâches peuvent s'exécuter simultanément.
Pour garantir la sécurité et la confidentialité des données, Linux utilise un système de permissions qui définit les droits d'accès aux fichiers et aux répertoires.

Chaque fichier et répertoire possède des permissions qui définissent les actions que chaque utilisateur peut effectuer sur ce fichier ou ce répertoire. Il existe trois types de permissions:

Pour définir les permissions d'un fichier, il faut déterminer les droits d'accès pour les trois catégories d'utilisateurs:

Commandes

Voici quelques commandes utiles pour gérer les fichiers et les répertoires sous Linux. Toutes ces commandes s'utilisent dans le terminal. Elles peuvent être suivies d'options pour personnaliser leur comportement. ATTENTION, il n'y a pas de corbeille, les fichiers supprimés le sont définitivement. Il n'y a pas non plus de raccourcis clavier pour annuler une commande.

Processus

Un processus est un programme en cours d'exécution sur un système d'exploitation. Chaque processus possède un identifiant unique appelé PID (Process IDentifier) qui permet de le distinguer des autres processus.
Sur Linux, il est possible d'avoir une multitude de processus en cours d'exécution, chacun effectuant une tâche spécifique.
Les processus peuvent être interactifs (lancés depuis un terminal) ou démon (lancés en arrière-plan).
Vous pouvez consulter les processus dans /proc, chaque processus a un répertoire correspondant à son PID.

Notions de base

Hierarchie

Les processus sous Linux sont organisés en arborescence. Chaque processus a un processus parent qui l'a créé, et peut avoir des processus enfants qu'il a créés.
Le premier processus créé par le noyau est appelé init, et il est le parent de tous les autres processus. Il est responsable du démarrage et de l'arrêt du système. Il est souvent remplacé par systemd sur les distributions récentes.

Lorsqu'un processus se termine, il envoie un signal à son processus parent pour l'informer de sa terminaison. Le processus parent peut alors récupérer le code de sortie du processus enfant pour savoir s'il s'est terminé correctement.

Lorsqu'un processus parent se termine, ses processus enfants meurent également. Cependant, il est possible de détacher un processus de son processus parent pour qu'il continue à s'exécuter de manière autonome. Cela n'est pas automatique.

Priorité

Chaque processus sous Linux possède une priorité qui détermine son ordre d'exécution par rapport aux autres processus.
La priorité d'un processus est définie par son niceness, qui peut prendre des valeurs entre -20 et 19. Plus la valeur est basse, plus la priorité est élevée.
Un processus avec une priorité élevée sera exécuté avant les autres processus, tandis qu'un processus avec une priorité basse sera exécuté après les autres processus. La priorité par défaut est 0. Il est possible de modifier la priorité d'un processus en cours d'exécution.

État

Un processus sous Linux peut se trouver dans différents états en fonction de son activité:

Foreground et Background

Un processus peut s'exécuter en foreground ou en background.
Lorsqu'un processus s'exécute en foreground, il occupe le terminal et attend que l'utilisateur interagisse avec lui. Il bloque l'entrée du terminal et empêche l'exécution d'autres commandes tant qu'il n'est pas terminé.
Lorsqu'un processus s'exécute en background, il ne bloque pas le terminal mais continue à s'exécuter en arrière-plan. Il communique toujours avec la sortie standard du terminal, mais n'attend pas d'entrée de l'utilisateur.

Pour exécuter en background un processus supposé s'exécuter en foreground, il suffit de rajouter & à la fin de la commande.
Pour passer un processus en background, il suffit de taper Ctrl+Z pour le mettre en pause, puis bg pour le passer en background.

Commandes

Voici quelques commandes utiles pour gérer les processus sous Linux. Toutes ces commandes s'utilisent dans le terminal. Elles peuvent être suivies d'options pour personnaliser leur comportement.

Lexique