9 - Système d'exploitation
Vous savez maintenant qu'un ordinateur est composé
- D'une CPU (central processing unit) comportant notamment
- UAL (unité arithmétique et logique),
- UC (unité de contrôle),
- de registres (de petites mais très rapides mémoires),
- et d'autres choses encore...
- D'une mémoire rapide volatile (qui s'efface à l'arrêt, on parle de mémoire vive ou de RAM)
- D'une mémoire rapide non volatile (rapide) (qui ne s'efface pas à l'arrêt, on parle de mémoire morte ou de ROM)
- De mémoires lentes de stockage gros volume (dique dur, clé USB...)
- De périphériques divers et variés (écran, clavier, souris, écran tactile...)
Et le système d'exploitation dans tout ça ?
Evaluation ✎ : questions 03-04-07-12-15-21
Documents de cours :
1 - Démarrage
Que se passe-t-il au démarrage de votre ordinateur ?
L'ordinateur commence par charger un petit programme qui se nomme le chargeur d'amorçage en français ou bootloader en anglais.
Ce programme se charge simplement de charger en mémoire vive un autre programme, qui se trouve être ... le système d'exploitation. En anglais, on parle d'operating system et l'acronyme est donc OS.
Ce système du bootloader permet notamment d'installer plusieurs systèmes d'exploitation sur un ordinateur et de faire ainsi ce qu'on nomme du dual-boot.
Le bootloader va donc aller chercher les parties fondamentales du système d'exploitation dans une mémoire non volatile et va placer le tout dans la mémoire vive de l'ordinateur. Cette partie fondamentale de l'OS se nomme le noyau en français et kernell en anglais.

Bien. La RAM contient maintenant ce programme (ou plutôt cet ensemble de programmes). Mais à quoi servent-ils ?
2 - Rôles du système d'exploitation
Les systèmes d'exploitation font office de tampon entre les programmes et le matériel technologique physique. Ils permettent :
- de garantir l'intégrité du système en vérifiant qu'un programme ne puisse pas provoquer d'erreur fatal pour le système dans son ensemble
- de faire communiquer logiciels et périphériques sans que le logiciel n'ai besoin de connaitre exactement le matériel sur lequel il agit
- de gérer l'organisation des ressources disponibles sur l'ordinateur
En réalité, les trois sont intimement liés comme nous allons le voir.
Il faut voir le système d'exploitation comme le garant du bon fonctionnement du matériel. Comme il ne peut pas savoir de lui-même comment fonctionne chacun de ses périphériques, certains des programmes qui le compose sont ce qu'on nomme des pilotes / drivers. Comme leur nom l'indique, les programmes-pilotes permettent de piloter (commander et surveiller) les périphériques.
Avec la généralisation du plug-and-play qui se charge de l'installation du pilote ou des OS comme Linux qui embarque la plupart des pilotes libres, pas trop besoin de ce soucier des pilotes du système d'exploitation. Mais ils sont là et font le job.
Et comment fait le système d'exploitation pour permettre d'interagir avec le matériel ?
Il permet d'interagir avec le matériel à l'aide d'appels systèmes, des commandes qu'il reçoit et qu'il exécute lui-même. De cette façon, le système d'exploitation est le seul à interagir réellement avec le matériel.
Imaginons l'une des fonction que vous avez utilisé de nombreuses fois : vous voulez supprimer un fichier présent sur votre clé USB. Un programme va alors envoyer une commande (peut-être nommée remove
, delete
, del
ou encore rm
...) au système d'exploitation :
- Si le programme est une interface graphique : clic-droit sur l'icone, sélection de supprimer
- Si le programme est une invite de commande : en tapant juste l'instruction (en fonction de l'OS) suivi du nom du fichier
- Si le programme est un programme réalisé par vos soins : en utilisant une instruction dans un programme Python, C ou autre

En réalité, dans les trois cas, le système d'exploitation va réagir de la même manière :
- Il reçoit la demande
- Il vérifie la validité : le programme a-t-il des droits suffisants pour détruire ce fichier ? Ce fichier est-il encore utilisé par un autre programme ? ...
- Il utilise les pilotes qui vont bien pour réaliser l'ordre, si celui-ci est bien valide.
On notera que les programmes de gauche n'ont pas besoin de connaître quoi que ce soit sur la clé USB, à part son identifiant. C'est l'OS qui va utiliser le driver de la clé pour savoir comment la commander.
Les systèmes d'exploitation dispose donc d'un ensemble d'appels systèmes basiques permettant de gérer correctement les périphériques.
Mais, ils ne font pas que ça. Ils gèrent également les CPU, la mémoire... Bref, les ressources.
Imaginons que votre carte mère soit 4 coeurs. 4 coeurs donc 4 processeurs. On peut donc faire tourner 4 programmes en même temps.

Et encore, je n'ai mis que les programmes que j'ai lancé volontairement. Il y a aussi les programmes liés à mon interface graphique, ceux de mon système d'exploitation, et une multitude multiple de programmes qui tournent en tâche de fond.
Quel est le rôle de l'OS là dedans ? Repartir la ressource CPU entre les programmes, et faire de même avec la mémoire vive !
Et oui, en plus des CPU, il faut aussi partager la mémoire vive, qui n'est pas illimitée non plus.
Du coup, l'OS passe son temps à donner la main à un programme, à transférer les données du programme de la mémoire vers la mémoire vive, à vider une partie de la mémoire vive en mémoire s'il faut faire un peu de place pour le nouvel arrivant, à accéder aux demandes d'appels système ect...
OS c'est pas un métier, c'est une vocation. Jamais un instant de calme. Il s'agit du chef d'orchestre de votre ordinateur. Un programme complexe composé de plusieurs autres programmes et en interaction avec tous les autres programmes tournant sur la machine (et sur le réseau, si on tient compte de la gestion de TCP/IP !)
Voilà pour les idées principales d'introduction.
Rôles du système d'exploitation
L'OS (operating system, système d'exploitation)
- Fait interface entre le matériel et les autres programmes : l'OS commande les périphériques via les pilotes et accepte (ou pas) d'exécuter les appels systèmes que les programmes lui demandent d'effectuer.
- Fait interface entre l'ordinateur et les réseaux extérieurs, il gère donc les cartes réseaux.
- Partage les ressources de l'ordinateurs entre les différents programmes :
- Puissance de calculs : il gère la répartition d'utilisation des processeurs entre les différents programmes qui tournent sur l'ordinateur
- Mémoire vive : il s'occupe de fournir des espaces de mémoire réservée aux applications (on parle de mémoire virtuelle) : cela évite aux applications d'écraser la mémoire des autres

Les premiers systèmes d'exploitation ne comportaient pas d'interface graphique. On passait donc nécessairement par des commandes textuelles via une console d'interfacage.
Nous allons voir aujourd'hui des commandes qui provoquent quelques appels-systèmes de ce type.
3 - Accès à un terminal Linux
Comme vous n'avez pas nécessairement une version de Linux sous la main, vous allez travailler avec votre OS et avec une serveur distant permettant d'accèder à un terminal Linux.
Trois solutions donc :
- Option A : Vous avez déjà une version exploitable de Linux. Bravo. + 12 points.
- Option B : Vous voulez bien vous créer un compte chez un hébergeur Web et je vais alors vous montrer comment contrôler votre configuration.
- Option C : Vous ne voulez pas créer de compte (et c'est votre droit), vous vous propose un site permettant néanmoins de taper quelques commandes dans un terminal. Mais c'est lent.
Les trois sections sont à lire. La fiche de connexion à Alwaysdata vous permettra de vous créer un compte chez un hébereur pour réaliser votre première page réellement accessible sur Internet. L'option C vous permettra d'un peu travailler si vous n'avez pas accès à vos mails. Mais vous ne pourrez pas réellement faire tourner les scripts ou autres. Trop lent.
Option a - Votre installation Linux
Bon, si vous avez accès à votre propre installation Linux, il est probable que vous sachiez déjà où se trouve votre terminal.
Sous Linux-Ubuntu, vous le trouverez dans les applications. Son icône est un petit écran noir.

Sinon, le raccourci clavier est CTRL+ALT+T
.
Si vous avez une version plus purement Linux-Debian, vous pouvez accéder à l'un des terminaux avec par exemple CTRL+ALT+F3
, CTRL+ALT+F4
... Ca fonctionne bien entendu aussi sur Ubuntu puisqu'il est basé sur la Debian.
Bref, en fonction de votre variation de Linux, vous devriez être capable de trouver un vrai terminal ou une émulation graphique d'un terminal : ce qu'on nomme une console.
Résultat :

Cette console est donc bien une application graphique (il y a des icônes cliquables et une fenêtre aux dimensions visibles) qui émule un terminal.
rv@rv-HP2:~$ _
On voit que l'utilisateur se nomme rv et qu'il est connecté (@) sur un ordinateur qui se nomme rv-HP2.
Le caractère tilde ~ veut dire que la console pointe pour l'instant à la racine du répertoire personnel de l'utilisateur.
Enfin le signe dollar $ est l'invite de commande. Avec Windows, c'est le signe mathématique supérieur >.
01° Sur l'exemple ci-dessous :
totolasticot@monordi:/bin$ _
Comment se nomme l'utilisateur ?
Sur quel poste est-il connecté ?
Sur quel répertoire pointe le terminal pour l'instant ?
...CORRECTION...
Il s'agit de l'utilisateur totolasticot.
Il est connecté sur la machine monordi.
Et le terminal pointe à ce moment sur le répertoire /div.
02° Voici un apercu de deux appels systèmes :
- La commande whoami (qui suis-je en français) affiche le nom de l'utilisateur ayant lancé cette commande.
- La commande pwd (print working directory, affiche le répertoire courant en français) provoque l'affichage du répertoire sur lequel pointe actuellement ce terminal.
rv@rv-HP2:~$ whoami
rv
rv@rv-HP2:~$ pwd
/home/rv
Question 1 : les réponses fournies sont-elles bien compatibles avec l'étude de la ligne décrivant l'utilisateur ?
Question 2 : à quel endroit se trouve le répertoire personnel de l'utilisateur, celui symbolisé par le tilde ?
...CORRECTION...
Oui, il s'agit de bien l'utilisateur rv.
Et le terminal pointe bien à ce moment sur le répertoire /home/rv qui est le répertoire personnel de l'utilisateur. Répertoire qu'on représente plus simplement par ~
.
Option B - Passer par un hébergeur
Passer par un hébergeur peut être un bon choix puisqu'à partir de là, vous aurez un compte actif gratuit et vous pourrez commencer à y placer des pages et applications Web qui seront vraiment accessibles depuis un accès Internet. Pour l'instant, vous n'avez créer que des pages Web locales à votre ordinateur.
Je vous présente ici une manière d'accéder à une telle console en passant par l'hébergeur alwaysdata qui provoque des interfaces très configurables et qui permet surtout d'installer plein de choses basées sur Python.
Si vous choississez cette solution (ce n'est pas long, il vous faut juste un e-mail valide), directement la fiche qui va bien.
ACCESS SSH VIA LE WEB CHEZ ALWAYSDATA
✎ 03° Vous avez le résultat d'une connexion réussi en SSH avec alwaysdata ci-dessous
testprofad@ssh1:~$ _
Comment se nomme l'utilisateur ?
Sur quel poste est-il connecté ?
Sur quel répertoire pointe le terminal pour l'instant ?
✎ 04° Observer les réponses fournies lors de l'utilisation du terminal. Répondre ensuite aux questions (les explications se trouvent question 2 si vous les avez zappé...)
testprofad@ssh1:~$ whoami
testprofad
testprofad@ssh1:~$ pwd
/home/testprofad
Question 1 : les réponses fournies sont-elles bien compatibles avec l'étude de la ligne décrivant l'utilisateur ?
Question 2 : à quel endroit se trouve le répertoire personnel de l'utilisateur, celui symbolisé par le tilde ?
Option C - Passer par un site proposant ce service
Certains sites proposent de simuler un compte sur leur propre machine.
On en trouve plusieurs. Par exemple, ce site https://www.offidocs.com/index.php/, qui propose cet accès, en installant quelques cookies sur votre ordinateur en lien avec google...
Si vous cliquez sur le lien, vous allez aboutir à une page vous montrant la mise en place d'une machine virtuelle Linux.
Il faut suffit d'appuyer sur le bouton ENTER et de fournir un nom d'utilisateur.
Après la multitude de lignes descriptives, on arrive enfin à ceci :
~ $ whoami
user
~ $ pwd
/home/user
~ $ _
05° comment se nomme ici l'utilisateur ? A quel endroit se trouve le répertoire personnel de l'utilisateur, celui symbolisé par le tilde ?
...CORRECTION...
Il s'agit juste de user.
Le terminal pointe bien à ce moment sur le répertoire /home/user qui est le répertoire personnel de l'utilisateur. Répertoire qu'on représente plus simplement par ~
.
Où se situe votre terminal dans la structure de l'ordinateur ? Ce n'est pas le noyau (kernell), c'est un programme juste au dessus. Comme une coquille autour du noyau. Et comment dit-on coquille en anglais ? Shell.
Le Shell constitue donc un programme d'interface qui permet à l'utilisateur de communiquer avec le noyau.

Et il existe plusieurs types de programmes jouant ce rôle d'interface textuelle entre l'utilisateur et le noyau : CSH, ZSH, sh, bash, dash, ash ...
4 - Inspection de contenu
Le programme de NSI vous demande de connaître les commandes de base. Il ne reste plus qu'à les voir à travers différents exemples d'utilisation.
Dans cette partie, nous allons voir comment naviguer dans les OS Linux, dérivés des systèmes Unix. La plupart des commandes vont donc fonctionner également si vous avez un Mac puisque le MacOS dérive également des Unix.
A - Voir le contenu d'un répertoire
Commençons par voir comment on peut regarder le contenu du répertoire courant, le répertoire sur lequel le terminal pointe.
Il faut utiliser la commande ls
qui veut dire list. Cela permet d'obtenir la liste des choses contenues dans le répertoire.
Que peut contenir un répertoire ? des fichiers et d'autres répertoires.
Exemple chez alwaysdata :
06° Suivre les exemples ci-dessous en utilisant les commandes sur votre propre système au fur et à mesure. Bien entendu, les réponses ne seront pas les mêmes.
- Commençons par juste voir ce que contient le répertoire courant avec la commande
ls
. On voit qu'il contient deux répertoires nommés admin et www : - On peut rajouter des options courtes à une commande en utilisant un tiret et une lettre représentant l'option. Ici
ls -a
veut dire d'afficher le contenu du répertoire, Pourquoi a ? Pour all. On affiche donc également les fichiers ou répertoires cachés : - Un simple fichier nommé .bash_history
- Un répertoire nommé .
- Un répertoire nommé ..
- Il existe également des options plus longues qu'une simple lettre à taper. Dans ce cas, on doit placer deux tirets devant le nom de l'option. A titre d'exemple, voici la version longue de la commande all.
- Et comment est-ce que je sais que ce sont des fichiers ou des répertoires ? C'est facile, il y a la couleur. Sinon, il suffit de lui demander avec l'option
-l
qui fournit un plus long descriptif du contenu. - C'est un
d
s'il s'agit d'un répertoire - C'est un
-
s'il s'agit d'un fichier - Pour observer le type des objets cachés, il suffit donc d'utiliser les deux options courtes à la fois en les plaçant derrière le même tiret :
- Nous n'allons pas faire le tour de toutes les options de la commande ls. Mais comment obtenir de l'aide si l'accès Internet est en rade ? En utilisant l'option longue
--help
.
testprofad@ssh1:~$ ls
admin www
testprofad@ssh1:~$ ls -a
. .. admin .bash_history www
On observe donc qu'il existe plusieurs choses cachées dans ce répertoire :
testprofad@ssh1:~$ ls --all
. .. admin .bash_history www
testprofad@ssh1:~$ ls -l
total 0
drwxr-xr-x 5 root root 69 May 31 12:46 admin
drwxr-xr-x 2 testprofad testprofad 24 May 31 12:46 www
Chaque objet présent est décrit par une ligne que nous détaillerons dans l'activité suivante. Aujourd'hui, je ne m'intéresse qu'au premier caractére :
La première ligne, total, fournit le nombre de blocs-mémoires utilisés par le contenu visible du répertoire. Chaque bloc-mémoire représente un nombre précis d'octets en fonction du système : 512, 1024 ou plus... Ne rentrons pas dans les détails pour l'instant.
testprofad@ssh1:~$ ls -la
total 4
drwxrwx--- 4 root testprofad 51 May 31 18:29 .
drwxr-x--x 826 root root 0 May 31 22:06 ..
drwxr-xr-x 5 root root 69 May 31 12:46 admin
-rw------- 1 testprofad testprofad 18 May 31 18:29 .bash_history
drwxr-xr-x 2 testprofad testprofad 24 May 31 12:46 www
C'est l'avantage des options courtes. On peut les regrouper pour obtenir un effet global. Par exemple, si on veut la taille mémoire en octets plutôt qu'en blocs, il suffit de rajouter l'option h
. Ci-dessous, vous pourrez constater que le contenu affiché occupe 4 ko.
testprofad@ssh1:~$ ls -lah
total 4.0K
drwxrwx--- 4 root testprofad 51 May 31 18:29 .
drwxr-x--x 823 root root 0 May 31 22:27 ..
drwxr-xr-x 5 root root 69 May 31 12:46 admin
-rw------- 1 testprofad testprofad 18 May 31 18:29 .bash_history
drwxr-xr-x 2 testprofad testprofad 24 May 31 12:46 www
testprofad@ssh1:~$ ls --help
B - Voir le contenu d'un fichier
Comme nous sommes en mode texte, on ne peut pas faire ce que vous avez l'habitude de faire : un double-clic sur le fichier.
- Pour afficher sur votre terminal le contenu d'un fichier, on peut utiliser la commande cat, pour concaténation. Comme la concaténation des strings : on rajoute l'entrée fournie dans une sortie (un fichier, un terminal, une connexion réseau...) Regardons par exemple ce que contient le fichier caché .bash_history ou .ash_history en fonction de votre système.
- L'argument fourni juste après la commande correspond à l'entrée (ce que nous voulons lire). Par défaut, le contenu lu va être envoyé sur la sortie par défaut, le terminal.

testprofad@ssh1:~$ cat .bash_history
ls
ls -a
ls --all
ls -l
ls -la
ls -lah
ls --help
Comme vous pouvez le voir, ce fichier contient donc l'historique de toutes les commandes qui ont été utilisé sur le terminal. C'est très pratique dans le cadre d'un service en ligne : vous avez installé quelque chose et plusieurs mois plus tard, vous voulez faire pareil sans vous souvenir de la démarche à suivre. Il suffit d'aller voir l'historique.
Comme vous pouvez le voir, le print de Python provoquait sans que vous le sachiez un appel système.
C - Création rapide d'un fichier
On peut créer très facilement un fichier depuis le terminal en utilisant encore une fois la commande cat. Cette fois, nous allons indiquer une sortie : le fichier de destination !
- On l'indique avec le signe
>
. Par contre, l'entrée va provenir de la console : c'est vous qui allez taper le texte. On ne donnera donc rien en indication d'entrée et il choisira l'entrée par défaut, à savoir le terminal. - Voici un exemple de commandes où on crée un fichier et on le lit juste après. On notera que si le fichier n'existe pas au préalable, il va être créé. Si le fichier existe déjà, son contenu va être remplacé, attention. Pour passer à la ligne, on appuie sur ENTREE et pour sortir du mode "saisie", on appuie simultanément sur CTRL + C .
- On retrouve donc un effet proche de la fonction input de Python.
- Le plus beau dans l'histoire, c'est qu'on peut rajouter des choses à la suite, puisque c'est le principe de la concaténation. Par contre, il faut lui dire de ne pas écraser le contenu initialement présent en utilisant On l'indique avec deux fois signes
>>
. Sinon, on remplace, point barre.

testprofad@ssh1:~$ cat > fichier_magique
Bonjour.
Je viens de créer mon premier fichier texte
^C <-- Ceci n'est pas à taper : c'est CTRL+C pour sortir
testprofad@ssh1:~$ cat fichier_magique
Bonjour.
Je viens de créer mon premier fichier texte
Attention à bien vous placer dans un répertoire où vous avez les droits : ne restez pas à la racine du serveur !
Votre répertoire personnel ~
semble un bon choix
testprofad@ssh1:~$ cat >> fichier_magique
Et encore une ligne de plus, rajouté bien après les premières !
^C
testprofad@ssh1:~$ cat fichier_magique
Bonjour.
Je viens de créer mon premier fichier texte
Et encore une ligne de plus, rajouté bien après les premières !
✎ 07° Créer deux fichiers comportant deux lignes, nommées fichier1 et fichier2.
Placer dans la copie numérique les codes nécessairement à cette création.
Il ne s'agit pas de Python mais bien d'un code Bash : le code sur votre copie markdown devra donc commencer par cela :
#!bash
08° A votre avis, que va contenri fichier3 après les commandes suivantes ?
testprofad@ssh1:~$ cat fichier1
Je suis le contenu du fichier 1
Pas grand chose à dire...
testprofad@ssh1:~$ cat fichier2
Moi, je suis le deuxième.
Je n'ai pas pour autant plus de choses à dire.
testprofad@ssh1:~$ cat fichier1 > fichier3
testprofad@ssh1:~$ cat fichier2 >> fichier3
testprofad@ssh1:~$ cat fichier3
??? on obtient quoi ???
...CORRECTION...
La première commande cat fichier1 > fichier3
place le contenu du fichier1 dans un nouveau fichier3 en écrasant l'éventuel contenu précédent puisqu'il n'y a qu'un seul signe supérieur.
Par contre, dans la deuxième concaténation, cat fichier2 >> fichier3
, on précise bien qu'on ne veut pas écraser le contenu. On va donc placer le contenu de fichier2 à la suite du contenu déjà présent.
On obtient donc cela :
testprofad@ssh1:~$ cat fichier3
Je suis le contenu du fichier 1
Pas grand chose à dire...
Moi, je suis le deuxième.
Je n'ai pas pour autant plus de choses à dire.
Avec Linux (et Unix), les répertoires et fichiers cachés sont simplement ceux dont le nom commence par un point.
Nous verrons par contre dans la prochaine activité qu'on peut réellement totalement rendre invisible et innaccessible certains répertoires et fichiers pour certains utilisateurs. C'est l'une des puissances d'Unix par rapport à MS-DOS.
5 - Se déplacer dans l'arborescence
S'il y a des répertoires, c'est bien qu'on doit pouvoir s'y "rendre". C'est ce que nous allons voir.
Voici l'arborescence visible que nous avions lorsqu'on avait fait une liste de contenu lorsque le terminal pointait sur le répertoire personnel chez alwaysdata :
testprofad@ssh1:~$ ls
admin www
Pour rappel, ce répertoire personnel, noté par un tilde ~
possède lui même une adresse dans la structure globale du serveur :
testprofad@ssh1:~$ pwd
/home/testprofad
Cela veut dire que les codeurs du terminal aurait pu les demander d'afficher la ligne suivante plutôt :
testprofad@ssh1:/home/testprofad$ _
Comme nous passons souvent beaucoup de temps dans ce répertoire spécifique à l'utilisateur, une version plus courte ~
a été adoptée.
Si on devait représenter cela sous la forme d'une vraie structure de type dossiers imbriqués les uns dans les autres, ça donnerait donc ceci :
📁 / (la racine de l'ordinateur)
📁 home
📁 testprofad
📁 admin
📄 fichier_magique
📄 fichier1
📄 fichier2
📄 fichier3
📁 www
D - Changer de répertoire (adresse relative)
- Pour changer de répertoire, il faut utiliser la commande cd pour change directory en anglais. Si vraiment j'ai besoin de traduire ça, ben...
- Il y a deux façons d'utiliser la commande : on peut lui fournir une adresse relative au répertoire courant (celui sur lequel pointe le terminal) ou on peut lui fournir une adresse absolue sur l'ordinateur.
- Pour "rentrer" dans l'un des répertoires visibles depuis le répertoire courant, il suffit de taper son nom derrière cd !
- On remarque immédiatement que le terminal pointe maintenant sur ~/admin. On peut donc regarder ce qui s'y trouve.
- Vous y trouverez donc les sauvegardes de vos projets, les fichiers de configuration, les fichiers de logs qui stockent tout ce qui se passe sur vos sites... Imaginons que nous voulions voir les connexions effectuées en http sur votre site, il faudra aller dans le répertoire log jusqu'à trouver un fichier texte d'extension .log qui contiendra toutes ses informations. Voici une simulation de ce cheminement.
- C'est malin, nous sommes maintenant au plus bas de l'arborescence... Comment remonter dans le répertoire situé juste au dessus ? C'est là qu'intervient le fameux répertoire caché qui portait un nom bizarre
..
. Cet alias désigne simplement le répertoire parent. Voici donc un exemple pour voir comment on peut remonter :
testprofad@ssh1:~$ ls
admin www
testprofad@ssh1:~$ cd admin
testprofad@ssh1:~/admin$ _
testprofad@ssh1:~/admin$ ls
backup config logs mail tmp
testprofad@ssh1:~/admin$ cd logs
testprofad@ssh1:~/admin/logs$ ls
apache http sites
testprofad@ssh1:~/admin/logs$ cd http
testprofad@ssh1:~/admin/logs/http$ ls
2020
testprofad@ssh1:~/admin/logs/http/2020$ cd 2020
testprofad@ssh1:~/admin/logs/http/2020$ ls
http-2020-06-01.log
testprofad@ssh1:~/admin/logs/http/2020$ cat http-2020-06-01.log
testprofad.alwaysdata.net 2a01:cb0c:96c:d400:2123:f77f:eff6:f1fab - - [01/Jun/2020:21:01:21 +0200] "GET / HTTP/1.1" 200 82 "-" "Mozil
la/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0"
testprofad@ssh1:~/admin/logs/http/2020$ cd ..
testprofad@ssh1:~/admin/logs/http$ cd ..
testprofad@ssh1:~/admin/logs$ cd ..
testprofad@ssh1:~/admin$ cd ..
testprofad@ssh1:~$
Nous allons remplir le répertoire www dans la partie finale de cette activité : c'est là qu'il faut placer vos fichiers statiques html, css, javascript et autres fichiers images.
Nous y revenons donc bientôt.
Nous voici donc revenus dans notre répertoire personnel qu'on note ~
mais dont l'adresse absolue est en réalité /home/testprofad
sur notre exemple.
📁 / (la racine de l'ordinateur)
📁 home
📁 testprofad
📁 admin
📄 fichier_magique
📄 fichier1
📄 fichier2
📄 fichier3
📁 www
09° Avec une commande, remonter dans le dossier parent de votre répertoire personnel quelque soit votre configuration de connexion (personnel, chez alwaysdata ou sur le terminal virtuel de www.offidocs.com). Examiner alors son contenu. Il devrait vous paraître vide. Tenter avec un affichage des fichiers cachés.
Quelque chose devrait vous surprendre chez alwaysdata...
...CORRECTION...
Pour remonter, un simple cd ..
suffit.
Pour observer le contenu, on utilisera un ls
.
Pour observer même les contenus cachés, on utilisera ls -a
.
Voici ce qu'on obtient sur mon système
rv@rv-HP2:~$ cd ..
rv@rv-HP2:/home$ ls
rv totolasticot
rv@rv-HP2:/home$ ls -a
. .. rv totolasticot
Rien de particulier donc. Visiblement, il y a deux utilisateurs sur cette machine.
Vous devriez obtenir quelque chose de similaire sur le site www.offidocs.com, si ce n'est que vous ne devriez avoir qu'un seul utilisateur qui se nomme user.
Voici ce qu'on obtient chez alwaysdata
testprofad@ssh1:~$ cd ..
testprofad@ssh1:/home$ ls
ls: cannot open directory '.': Permission denied
testprofad@ssh1:/home$ ls -a
ls: cannot open directory '.': Permission denied
Comme vous le voyez, vous n'avez pas le droit en tant que simple utilisateur de pouvoir visualiser les noms des autres utilisateurs. D'ailleurs, même votre compte n'est pas visualisable. Par contre, vous avez le droit de l'ouvrir... C'est ce qui fait la force en terme de sécurité de Linux et l'une des raisons qui ont propulsé cet OS en tête des OS placés sur les ordinateurs-serveurs.
10° Regarder le message d'interdiction. Nous avons vu que le code ..
signifiait le répertoire-parent. Que semble signifier le simple point .
?
Vous pouvez tenter des commandes comme ls .
ou cd .
...
...CORRECTION...
Il s'agit du nom du répertoire courant. Celui dans lequel le terminal pointe.
Actuellement, vous êtes dans /home
. Il s'agit donc du nom de répertoire qui sera fourni par la commande pwd
.
11° Remonter encore dans le dossier parent qui se trouve être la racine du système.
Questions
- Quels sont les éléments présents dans ce répertoire ?
- Lancer une commande de type
ls .
pour vous convaincre que le point symbolise bien le répertoire courant. - Peut-on encore remonter plus haut avec un
cd ..
ou est-on bien à la racine de l'arborescence de la machine ?
Résultats chez alwaysdata
testprofad@ssh1:/home$ cd ..
testprofad@ssh1:/$ ls
alwaysdata boot etc lib lib64 media nfs proc run srv tmp var
bin dev home lib32 libx32 mnt opt root sbin sys usr
testprofad@ssh1:/$ ls -a
. alwaysdata boot etc lib lib64 .local mnt opt root sbin sys usr
.. bin dev home lib32 libx32 media nfs proc run srv tmp var
testprofad@ssh1:/$ ls -al
total 60
drwxr-xr-x 20 root root 4096 May 19 09:29 .
drwxr-xr-x 20 root root 4096 May 19 09:29 ..
drwxr-xr-x 7 root root 4096 May 29 09:12 alwaysdata
lrwxrwxrwx 1 root root 7 Mar 23 14:16 bin -> usr/bin
drwx------ 3 root root 4096 Apr 16 08:41 boot
drwxr-xr-x 13 root root 13160 May 19 09:29 dev
drwxr-xr-x 128 root root 12288 May 29 09:12 etc
drwxr-x--x 979 root root 0 Jun 1 22:57 home
lrwxrwxrwx 1 root root 7 Mar 23 14:16 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Mar 23 14:16 lib32 -> usr/lib32
lrwxrwxrwx 1 root root 9 Mar 23 14:16 lib64 -> usr/lib64
lrwxrwxrwx 1 root root 10 Mar 23 14:16 libx32 -> usr/libx32
drwxr-xr-x 3 root root 4096 Mar 23 14:24 .local
drwxr-xr-x 2 root root 4096 Mar 23 14:16 media
drwxr-xr-x 2 root root 4096 Mar 23 14:16 mnt
drwxr-xr-x 2 root root 0 Jun 1 21:53 nfs
drwxr-xr-x 2 root root 4096 Mar 23 14:16 opt
dr-xr-xr-x 177 root root 0 May 19 09:29 proc
drwx------ 5 root root 4096 Jun 1 12:03 root
drwxr-xr-x 25 root root 900 Jun 1 22:12 run
lrwxrwxrwx 1 root root 8 Mar 23 14:16 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 Mar 23 14:16 srv
dr-xr-xr-x 12 root root 0 May 19 09:29 sys
drwxrwxrwt 98 root root 2500 Jun 1 22:17 tmp
drwxr-xr-x 15 root root 4096 Apr 16 08:39 usr
drwxr-xr-x 12 root root 4096 Apr 13 2016 var
Nous remarquerons qu'il y a un nouveau type de fichiers.
Nous avions les fichiers, codifiés par un tiret -
.
Nous avions les répertoires, codifiés par un D minisucule d
.
Vous avez maintenant sous les yeux, des liens, codifiés par un L minuscule l
.
Vous pouvez les voir comme des sortes d'alias.
Je prends le premier qui apparaît :
lrwxrwxrwx 1 root root 7 Mar 23 14:16 bin -> usr/bin
Cela veut dire que même si je demande cd bin
, la machine va en réalité aller physiquement pointer sur le répertoire /usr/bin
.
Deux noms mais une même entité.
Comme vous pouvez le voir, il y a une multitude de répertoires différents, chacun ayant son rôle en terme de classificiation.
Inutile d'appendre par coeur ce qui suit. C'est juste pour vous donner une idée de la structure sous-jacente. Et c'est pratique lorsqu'on tente de localiser un fichier.
Signification et rôles des différents répertoires
Ceci est à savoir :
Racine du système : /
Répertoire personnel des utilisateurs : /home/NOM
avec comme raccourci le fameux tilde ~
Répertoire personnel du super-administrateur : /root
. Il s'agit de l'administrateur de la machine, celui qui a tous les droits sur celle-ci. On le place dans un répertoire séparé des autres et pas dans /home/root
pour des raisons de sécurité.
Répertoire courant : .
Répertoire parent du répertoire courant : ..
Ceci est pour votre culture générale, rien à apprendre :
Le répertoire /bin
contient les exécutables binaires de base.
Le répertoire /sbin
contient un peu la même chose, si ce n'est que ce sont des binaires vraiment fondamentaux (liés au partitionnement ou au réseau).
Les répertoires /lib
, /lib32
et /lib64
contiennent les bibliothèques regroupant des fonctions utilisées par plusieurs des binaires présents dans /bin
ou /sbin
. Cela permet d'alléger la taille des fichiers exécutables présents dans ces deux répertoires.
Pour ceux qui ont un système Windows, ces répertoires correspondent en gros au répertoire C:\windows
avec les bibliothèques .dll se trouvant dans C:\windows\system.32
ou C:\windows\SysWOW64
.
Le répertoire /usr
contient les exécutables des utilisateurs (ceux qui ne vont pas nécessairement partis du noyau ou des fichiers critiques), ainsi que les programmes que l'utilisateur installe lui-même. Comme les jeux par exemple. Son équivalent Windows est un peu C:\program files
.
Le répertoire /boot
contient le noyau Linux, les fonctionnalités basiques qui forment le coeur du système, ainsi que quelques autres fichiers lancés à l'amorçage du système.
Le répertoire /dev
est le répertoire-racine de tous les périphériques comme les CD-ROm, les clés USB...
Avec Windows, on a des noms de disques différents (comme C:
, G:
...). Avec Linux, tout est regroupé dans la même arborescence commençant par /
. Lorsqu'on branche un périphérique, il faut donc le monter (mount en anglais) sur votre arborescence et le début de son adresse absolue sera donc une variante de ce type /dev/NOM_PERIPHERIQUE
.
Plus plein d'autres comme vous l'avez vu. Si vous voulez vous renseigner plus avant, vous devriez trouver votre bonheur sur le Web.
E - Localiser un programme
- Avec une telle arborescence, tout est bien rangé. Mais parfois, on ne sait pas où ! Et parfois, en débutant, on finit même par installer plusieurs fois le même programme sans savoir exactement quelle version on utilise...
- Pour connaître la localisation d'une commande ou d'un programme qui pourrait être présent en plusieurs exemplaires, il existe la commande
which
, lequel ou laquelle en français. - Exemple avec which qui s'avère être une commande externe au Shell.
- Exemple avec cd qui s'avère être une commande interne au Shell.
testprofad@ssh1:/$ which python
/usr/bin/python
testprofad@ssh1:/$ which python3
/usr/bin/python3
testprofad@ssh1:/$ which pwd
/usr/bin/pwd
Cette commande which vous donne la version vers lequel le système se tourne lorsqu'on lui demande d'exécuter le programme.
Nous avions parlé en début d'activité des appels-systèmes et des commandes qui sont donc réellement intégrées de base au noyau, les commandes fondamentales sur lesquelles sont baties les autres fonctionnalités. Mais, comment savoir si un programme est en réalité une commande interne au Shell ou une commande externe ?
Pour cela, il existe la commande type qui vous permet de savoir qui est quoi.
rv@srv-HP2:~$ type which
which est /usr/bin/which
rv@srv-HP2:~$ type cd
cd est une primitive du Shell
✎ 12° Fournir les commandes qui vous permettent de répondre à ces questions ?
- Vers quelle version de fichier pointe le système lorsqu'on lui demande d'exécuter ping (commande qui permet de tester la connectivité entre deux machines) ?
- La commande ping est-elle une commande interne au Shell ?
- La commande exit qui permet d'arrêter la liaison avec le terminal est-elle une commande interne au Shell ou externe au noyau ?
F - Changer de répertoire (adresse absolue)
- Votre terminal pointe donc normalement sur la racine
/
. Comment faire pour atteindre rapidement un répertoire sans avoir à faire tous les cd à la suite ? - Derrière votre commande cd (change directory) vous pouvez fournir
- soit une adresse relative (une adresse qui ne commence pas
/
). Cela peut être le nom d'un sous-répertoire visible depuis le répertoire courant, un..
... C'est que nous avons fait partie D. - soit fournir une adresse absolue partant de la racine
/
. - 1 - Retour à la racine :
- 2 - Déplacement direct dans le répertoire
www
: - 3 - Déplacement direct dans le répertoire
/sbin
: - 4 - Déplacement dans le répertoire
/home/testprofad/admin
en utilisant le tilde :
Quelques exemples d'utilisation : on part de la racine, on atteint le répertoire www
situé dans le répertoire de l'utilisateur puis directement le répertoire /sbin
.
testprofad@ssh1:~$ cd /
testprofad@ssh1:/$ _
testprofad@ssh1:/$ cd /home/testprofad/www
testprofad@ssh1:~/www$ _
On remarquera que le système note encore ~
plutôt que /home/testprofad
.
testprofad@ssh1:~/www$ cd /sbin
testprofad@ssh1:/sbin$ _
testprofad@ssh1:/sbin$ cd ~/admin
testprofad@ssh1:~/admin$ _
13° Déplacer le terminal pour qu'il pointe dans le répertoire /usr/bin
.
...CORRECTION...
On fournit l'adresse absolue, il suffit de taper cd /usr/bin
.
G - Lister le contenu d'un répertoire sans y aller
- Pour voir le contenu d'un répertoire, on peut se déplacer dans ce répertoire et faire un
ls
. Mais on peut faire mieux : on peut faire unls
en fournissant comme argument l'adresse du répertoire à étudier. - Un exemple en étant au départ du dossier personnel (tilde) qui contient deux autres répertoires.
- La commande suivante est possible en adresse relative car admin est bien un sous-répertoire du répertoire courant. On parvient donc à oberserver le contenu du répertoire admin tout en "restant" dans le répertoire ~ :
- Idem avec le répertoire www qui est bien un répertoire contenu dans le répertoire courant.
- Par contre, si on demande à visualiser usr/bin, cela ne fonctionne pas car on fournit une adresse relative au répertoire courant : le système va chercher s'il existe un répertoire usr dans ~. Et la réponse est non.
- Pour que ça fonctione, il suffit de fournir une adresse absolue précisant qu'on cherche à partir de la racine, à partir de
/
. Ne lancez pas cette dernière commande : il y a beaucoup beaucoup de fichiers à cet endroit ! Depuis la version Web, ça peut être long de tout afficher ! - Ca marche aussi avec la commande cat pour afficher le contenu d'un fichier.
testprofad@ssh1:~$ ls
admin www
testprofad@ssh1:~$ ls admin
backup config logs mail tmp
testprofad@ssh1:~$ ls www
index.html <-- nous allons créer ce fichier ensemble, juste après
testprofad@ssh1:~$ ls usr/bin
ls: cannot access 'usr/bin': No such file or directory
testprofad@ssh1:~$ ls /usr/bin
'[' gv2gxl ppmdim
2to3 gvcolor ppmdist
2to32 gvgen ppmdither
2to32.4 gvmap
...
...
...
14° Je vous fournis l'arborescence théorique suivante. Le répertoire courant est testprofad, surligné et cela apparaît bien devant l'invite de commande $.
📁 / (la racine de l'ordinateur)
📁 bin
📄 fichierA
📁 home
📁 testprofad
📁 admin
📄 fichierB
📁 www
📁 repC
Questions
- Comment afficher le contenu du fichier fichierA sans bouger et avec une adresse absolue ?
- Comment lister le contenu de repC sans bouger et avec une adresse absolue ?
- Comment afficher le contenu du fichier fichierA sans bouger et avec une adresse relative ? On rappelle que
..
permet de trouver le dossier parent. - Comment lister le contenu de repC sans bouger et avec une adresse relative ?
...CORRECTION...
- L'adresse absolue est une adresse qui part de la racine (
/
). C'est donc simple : il suffit d'écrirecat /bin/fichierA
. - L'adresse absolue est une adresse qui part de la racine (
/
). Il suffit d'écrirels /home/testprofad/www/repC
. - L'adresse relative demande de partir du répertoire courant, dans notre cas
/home/testprofad
qu'on symbolise par~
. Pour atteindre le fichier fichierA, il faut donc remonter dans le dossier parent (home
), remonter encore dans le dossier parent (/
, la racine). Une fois à la racine, il faut redescendre dans l'arborescence et aller dans bin pour y trouver, enfin, le fichier voulu. - L'adresse relative demande de partir du répertoire courant, dans notre cas
/home/testprofad
qu'on symbolise par~
. Pour atteindre le répertoire repC depuis~
, c'est facile :ls www/repC
.
Du coup, ça donne cat ../../bin/fichierA
.
✎ 15° Je vous fournis l'arborescence théorique suivante. Le répertoire courant est www, surligné et cela apparaît bien devant l'invite de commande $.
📁 / (la racine de l'ordinateur)
📁 bin
📁 fichierA
📁 home
📁 testprofad
📁 admin
📄 fichierB
📁 www
📁 repC
Questions
- Comment afficher le contenu du fichier fichierA sans bouger et avec une adresse absolue ?
- Comment afficher le contenu du fichier fichierA sans bouger et avec une adresse relative ? On rappelle que
..
permet de trouver le dossier parent.
Récapitulatif des notions et commandes
Les notions abordées :
Notion | Explication |
---|---|
Racine / |
La racine est le point de départ de l'arborescence. |
Adresse absolue | Il s'agit d'une adresse dont le point de départ est la racine. L'adresse commence donc par / .
|
Utilisateur root | Le super-administrateur de la machine. Il a tous les droits sur la machine. Son répertoire personnel est situé à l'adresse absolue /root .
|
Répertoire personnel d'un utilisateur | Il s'agit du répertoire qui appartient à un utilisateur. Il est situé à l'adresse absolue /home/NOM_UTILISATEUR . Il peut être adressé plus facilement en utilisant le raccourci Tilde ~ .
|
Adresse relative | Une adresse qui prend comme point de départ le répertoire courant, le répertoire sur lequel pointe actuellement le terminal. |
Répertoire parent .. |
Il s'agit du répertoire "contenant" le répertoire courant. Par définition, seule la racine ne possède pas de parent. |
Les commandes à connaître :
Commande | Explication |
---|---|
ls | Liste le contenu du répertoire dont l'adresse (relative ou absolue) est fournie juste après.ls www : liste le contenu d'un répertoire www contenu dans le répertoire courant.ls /home/utilisateur/www : idem mais avec une adresse absolue.Si on ne fournit rien( ls ), il s'agira du répertoire courant.Quelques options : ls -a pour afficher les objets cachés (ceux qui commencent par un point)ls -l pour afficher des informations plus longues
|
cd | Change directory : permet de changer de repertoire.cd ~ permet d'atteindre son propre répertoire.cd / permet d'atteindre la racine.cd .. permet de remonter d'un cran dans l'arborescence. |
cat | Permet de concaténer une entrée vers une sortie. La forme générale pour écraser l'ancien contenu est cat entree > sortie La forme générale pour rajouter du contenu est cat entree >> sortie Si on omet l'entrée, il s'agit par défaut du terminal. Si on omet la sortie, il s'agit par défaut du terminal. |
Les commandes qui ne sont pas à connaître mais que nous avons vu :
Commande | Explication |
---|---|
which | Permet d'obtenir l'adresse absolue du fichier qui est reconnu comme étant l'exécutable d'une commande. Exemple which python3 |
type | Permet d'obtenir le type d'une commande (interne ou externe au Shell-Noyau) |
whoami | Permet de récupérer le nom de l'utilisateur du terminal |
pwd | Print working directory, permet de récupérer le répertoire sur lequel pointe actuellement le terminal. |
6 - Mise en production d'un site
Nous avons maintenant tous les outils pour parvenir à publier votre première page HTML en production.
Si vous n'avez pas créé de compte chez alwaysdata, vous ne pourrez pas placer votre page en ligne bien entendu. Vous pourrez par contre tester l'utilisation des commandes.
16° Se connecter à votre compte alwaysdata via ssh (comme expliqué sur cette fiche ACCESS SSH VIA LE WEB CHEZ ALWAYSDATA).
Le terminal pointe par défaut sur votre dossier personnel (~
).
📁 / (la racine de l'ordinateur)
📁 home
📁 votrecompte
📁 admin
📁 www
Aller dans le répertoire www
en utilisant la commande suivante :
votrecompte@ssh1:~$ cd www
votrecompte@ssh1:~/www$ _
Votre terminal pointe maintenant sur le dossier www qui est par défaut le dossier devant contenir vos fichiers accessibles par Internet.
📁 / (la racine de l'ordinateur)
📁 home
📁 votrecompte
📁 admin
📁 www
17° Créer un petit fichier HTML en suivant l'exemple des commandes suivantes :
votrecompte@ssh1:~/www$ cat > index.html
<!DOCTYPE html>
<html>
<p>Bonjour ! Voici la page d'accueil</p>
</html>
^C
18° Créer un deuxième petit fichier HTML en suivant l'exemple des commandes suivantes :
votrecompte@ssh1:~/www$ cat > nouveau.html
<!DOCTYPE html>
<html>
<p style="color: red;">Une nouvelle page</p>
</html>
^C
votrecompte@ssh1:~/www$ exit
Maintenant, vous devriez avoir ceci :
📁 / (la racine de l'ordinateur)
📁 home
📁 votrecompte
📁 admin
📁 www
📄 index.html
📄 nouveau.html
Il vous reste à activer l'accès à votre site en vous connectant à votre compte chez Alwaysdata.
19° Se connecter sur https://www.alwaysdata.com/fr/ pour atteindre le menu suivant :

Appuyer sur l'icone Engrenage pour aller dans la configuration de votre site par défaut (vous pouvez en créer d'autres en utilisant AJOUTER UN SITE si vous voulez).
Le site créé pour la démonstration est accessible par testprofad.alwaysdata.net
).
Ici, je tente de rendre le site accessible également via le sous-domaine www : en tapant le nouveau nom : www.testprofad.alwaysdata.net
. Ca ne marchera pas car le nom de domaine alwaysdata.net ne m'appartient pas. Par contre, si vous achetez un nom de domaine un jour (comme infoforall.fr
), vous pourrez rajouter ce que vous voulez à gauche (comme www.infoforall.fr
).
Par contre, vous pouvez rajouter un complément d'accès via l'URL en le plaçant à droite. Par exemple : testprofad.alwaysdata.net/rajout

Il reste à configurer le type de site, en allant un peu plus bas.

Comme vous pouvez le voir, on peut choisir le type de site créé. Pour ajourd'hui, choisir un site statique : de simples pages HTML, CSS et JS à distribuer au client. Les autres possibilités permettent de créer un site dynamique (créant notamment les pages à la volée).
On remarquera également qu'on peut choisir le répertoire qui devra contenir les pages à distribuer. Par défaut, il s'agit de /www. La racine / n'est pas ici la racine du serveur distant mais la racine de votre compte (le tilde ~). Laisser le dossier par défaut, c'est clair au moins.
Appuyer sur Valider pour que vos modifications soient prises en compte.
20° Tapez les adresses voulues dans votre barre d'adresse. Tester le site de test ou vos propres pages.
Quelques exemples :
- Page d'accueil (index.html par défaut) :
http://testprofad.alwaysdata.net/
- Page d'accueil explicitement :
http://testprofad.alwaysdata.net/index.html
- Deuxième page :
http://testprofad.alwaysdata.net/nouvelle.html
Mais on peut aussi passer par la deuxième adresse, celle avec /rajout
.
- Page d'accueil (index.html par défaut) :
http://testprofad.alwaysdata.net/rajout
- Page d'accueil explicitement :
http://testprofad.alwaysdata.net/rajout/index.html
- Deuxième page :
http://testprofad.alwaysdata.net/rajout/nouvelle.html
Comme vous le voyez, les pages sont stockés sur le serveur dans un répertoire bien précis (/home/testprofad/www
mais ça n'apparaît absolument pas dans les URL que tapent l'utilisateur.
Les exemples visuels des requêtes HTTP :





✎ 21° Envoyez moi quelques adresses de votre petit bout de site Internet si vous avez bien voulu vous créer un compte chez un hébergeur.
7 - Commandes Windows
Pour que vous puissiez voir un peu comment marche votre console si vous êtes chez Microsoft avec Windows, voilà quelques commandes équivalentes. Sur MacOS, vous devriez pouvoir utiliser la majorité des commandes présentées pour Linux, puisque MacOS est basé également sur UNIX.
Voici un tableau d'équivalence approximative. Toutes les commandes Linux ne sont pas disponibles avec Windows.
Linux | Windows |
---|---|
Racine / |
Racine C:\ . |
cd (change directory) |
cd aussi. |
ls (list) |
dir |
cat (concaténation) |
edit ou editln pour le créer, type pour lire le contenu d'un fichier texte. |
8 - FAQ
Ca marche comment le transfert FTP ?
Réponse courte : UTILISER FTP FILEZILLA et ALWAYSDATA
Activité publiée le 01 06 2020
Dernière modification : 01 06 2020
Auteur : ows. h.