Systèmes d’exploitation Unix : Bases, ligne de commande et outils pour Linux, macOS et BSD
Si Unix peut être qualifié de dinosaure dans le monde de l’IT – il reste à la pointe de la modernité. Ce qui avait commencé dans les années 70 comme un système multi-utilisateur et multitâche répond aujourd’hui encore aux exigences les plus élevées en matière de cloud, d’IA et d’IoT. Grâce à un développement continu, les concepts éprouvés restent actuels et performants. Dans cet article, vous découvrirez les bases, le travail avec la ligne de commande et les outils essentiels de Linux, macOS et BSD.
Ouverture, interfaces transparentes et code source bien documenté font d’Unix une base fiable pour des soutions informatiques innovantes, malgré son âge avancé de plus de 50 ans. Les systèmes Unix suivent tous le même principe : afin de travailler efficacement sur des systèmes Linux, BSD ou macOS, il faut utiliser les commandes et les Shells.
Le principe Unix
La communauté Unix
Les systèmes Unix – en particulier Linux, BSD et OpenSolaris – sont développés par une communauté soudée qui entretient une culture. D’un côté, il est question de la manière dont le logiciel est développé et exploité, et de l’autre côté de la manière de communiquer et de collaborer. Les spécialistes Unix ne connaissent pas le concept de cloisonnement propriétaire.
Le design Unix
Unix a été développé comme système purement multi-utilisateur et multitâche. Ainsi, la sécurité et l’exclusion mutuelle sont intégrées depuis de début. L’utilisateur A ne peut par définition pas avoir accès aux données de l’utilisateur B. Un processus A ne peut pas avoir accès aux ressources du processus B ou du système. Ce principe a été constamment développé depuis plus de 50 ans.
Transparence grâce à l’open source
La plupart des systèmes Unix sont totalement disponibles en code source. Tout peut être facilement reproduit afin de minimiser les risques d’erreurs, même les programmes binaires peuvent être débogués sans encombre. Les fichiers journaux ou de configuration sont des fichiers texte qui peuvent être parcourus et traités avec des outils courants. Les connexions réseau peuvent être analysées avec des outils comme tcpdump ou wireshark.
Les ingrédients du noyau Unix
Lors du démarrage d’un système Unix, un bootloader charge le noyau, c’est-à-dire le nœud central du système d’exploitation. Le noyau reconnait le matériel à disposition (par exemple le processeur, la mémoire, les disques durs) et charge les modules nécessaires afin que ces composants puissent être utilisés.
Le noyau fonctionne selon deux modes :
- Le mode noyau : les opérations sont exécutées de manière privilégiée, par exemple l’accès à un fichier ou un sous-système
- Le mode utilisateur : Les données sont préparées, calculées ou formatées, mais sans accès direct aux zones critiques du système.
Ce principe assure la stabilité et la sécurité du système.
Alors que le noyau GNU/Linux intègre presque tout dans des modules (Kernelspace), macOS et BSD fonctionnent différemment avec un noyau allégé comportant moins de modules. Pour cela, différents composants sont traités dans l’espace utilisateur.
À la fin, le noyau lance un service qui continue à « démarrer » ou à initialiser le système.
Le système INIT
Étant donné que l’accès aux composants est maintenant disponible, des services sont lancés pour :
- Accéder aux données – systèmes de fichiers, bases de données, sécurité des données
- Utiliser des services réseau comme le web, les e-mails, internet …
- Utiliser des services locaux pour garantir l’intégrité du système
- Afficher une interface utilisateur pour accéder (localement ou à distance) au système
Ici, différents systèmes INIT entrent en jeu :
- Systemd -> Linux
- Launchd -> macOS
- Init -> BSD
Interface utilisateur
En tant que poste de travail, l’interface utilisateur peut être graphique, mais pour les serveurs, l’IoT, les systèmes embarqués, les conteneurs ou les machines virtuelles, celui-ci est basé sur du texte. Un système Unix peut toujours être atteint au moins par la console. Si on le souhaite, les systèmes peuvent également proposer cette interface utilisateur via une connexion réseau ou d’autres interfaces et toujours avec une authentification.
Le Shell : le centre de contrôle d’un système Unix
En ce qui concerne les accès basés sur du texte, un Shell est lancé après une authentification réussie. Le Shell est un interpréteur de commande puissant qui dispose d’une multitude de commandes très efficaces.
Le pouvoir des commandes Unix
En combinaison avec le Shell, les commandes peuvent faire à peu près tout ce qu’il faut pour configurer, installer, administrer, surveiller, mettre à jour, automatiser et dépanner le système Unix.
Invite de commande
rat@khamsin <Concept-UX> $ ls -l /tmp
- « rat@khamsin <Concept-UX> $ » ->
Une invite de commande (Shell). On y trouve des informations telles que :
User@Host <Act. Répertoire> $
Le « $ » indique qu’il s’agit d’un utilisateur normal. Les utilisateurs privilégiés sont indiqués par un « # ».
- « ls » -> la commande qui doit être exécutée
- « -l » -> une option. « ls » doit générer un long listing (avec de nombreux détails)
- « /tmp » -> « ls » doit afficher le contenu du répertoire « /tmp/ »
Ce principe fonctionne avec toutes les commandes sur tous les systèmes Unix.
Le principe des commandes Unix
Les commandes sont de petits programmes (le plus souvent programmé en C), qui font exactement une chose. Ils écrivent des outputs sur STDOUT (termina par défaut), les messages d’erreur sur STDERR (terminal par défaut) et lisent depuis STDINPUT (clavier par défaut). Si les commandes respectent ces règles, elles peuvent être combinées à volonté dans le Shell.
Combiner des commandes Unix
Si on combine des commandes dans le Shell avec l’opérateur pipe (caractère |), le Shell relie le STDOUT de la commande de gauche avec le STDIN de la commande de droite :
rat@khamsin <Concept-UX> $ ls -a /tmp | wc -l
L’output de « ls -a /tmp » est utilisé comme input pour « wc -l ». «wc -l » compte le nombre de lignes dans le fichier « ls -a /tmp». Le nombre qui est retourné est le nombre de fichiers dans le répertoire « /tmp ».
Les bons outils
Outre les commandes, les utilisateurs ont à leur disposition un très grand nombre d’outils puissants. Ces outils utilisent les mêmes canaux standards (STDIN, STDOUT et STDERR) que les commandes.
Nombre de ces outils trouvent leur racine dans les années 70 et les premières versions d’UNIX.
Une boîte à outils complète
Les outils permettent de traiter des streams et des flux de données. Un stream peut être un fichier ou l’output d’une commande.
Exemple :
rat@khamsin <Concept-UX> $ grep '^rat:' /etc/passwd
rat:x:1000:1000:Renato Testa:/home/rat:/bin/bash
Dans cet exemple, « grep » recherche dans le fichier « /etc/passwd » les lignes qui commencent par « rat: ».
rat@khamsin <Concept-UX> $ ps aux | grep 'bash$'
rat 261791 0.0 0.0 224376 5600 pts/2 Ss+ Jan07 0:00 bash
rat 262430 0.0 0.0 224376 5280 pts/4 Ss Jan07 0:00 bash
rat 1721126 0.0 0.0 224228 5440 pts/1 Ss 10:47 0:00 -bash
Dans cet exemple, « grep » recherche dans le stream créé par « ps aux » les lignes qui se terminent par « bash ».
Avec « grep » nous n’avons vu qu’un outil parmi d’autres, mais un outil qui est toutefois très fréquemment utilisé.
Créer ses propres outils
Grâce à des scripts Shell, il est possible de créer ses propres outils sans trop d’efforts pour effectuer des tâches spécifiques ou répétitives de manière efficace et fiable.
Fun et créativité grâce aux outils Unix
Un principe également important est d’avoir du plaisir à travailler. Et si nous voulons que notre travail soit un plaisir, nous avons besoin d’outils adéquats. Avec un système Unix, nous avons à notre disposition un atelier entièrement équipé et pouvons laisser libre cours à notre créativité.