Practical activity
Duration2h30Présentation & objectifs
Dans cette activité pratique, vous apprendrez comment les fichiers sont organisés dans votre ordinateur. Vous découvrirez également les permissions des fichiers, un élément essentiel de la sécurité.
Contenu de l’activité
1 — Systèmes de fichiers
1.1 — Introduction
Quelques points :
- Un fichier est un ensemble (éventuellement vide) d’octets, associé à un nom et éventuellement à des métadonnées (comme la date, le propriétaire, etc.)
- Un répertoire est un ensemble (éventuellement vide) de fichiers ou de sous-répertoires. Il est lui-même associé à un nom et à des métadonnées. Les fichiers peuvent alors être organisés hiérarchiquement dans des répertoires et sous-répertoires.
- Les systèmes d’exploitation adoptent généralement certaines stratégies dans la manière dont ils choisissent d’organiser leur hiérarchie de fichiers. (Où stocker les ressources système, les fichiers de configuration, les applications, les bibliothèques, les données utilisateur, etc.)
- Les fichiers sont enregistrés sur un dispositif de stockage, tel qu’un disque dur, un disque SSD, une clé USB, un DVD, une disquette, une bande magnétique, etc. (Selon la technologie sous-jacente, un dispositif de stockage peut être divisé en parties appelées partitions ou volumes.)
- Certains de ces dispositifs de stockage sont locaux (physiquement à l’intérieur ou branchés sur votre ordinateur), ou sur un ordinateur distant accessible via le réseau.
- La manière dont les octets sont organisés sur le stockage s’appelle un système de gestion de fichiers (décide quels octets sont pour le nom, les données, les métadonnées, etc.)
- Certains systèmes d’exploitation étendent le concept de fichiers dans plusieurs directions :
- liens ou raccourcis : la possibilité pour un fichier d’avoir plusieurs noms. Lorsque certains nœuds d’une hiérarchie peuvent être atteints par plusieurs chemins, on obtient un graphe. Cela étend la manière dont les fichiers peuvent être organisés.
- fichiers spéciaux : Linux, Mac et Unix en général aiment utiliser les noms de fichiers comme points d’entrée vers les services du noyau. Ces noms de fichiers ne sont pas associés à des données stockées, mais à des attributs ou métadonnées spécifiques. Ainsi, lorsqu’une application effectue des opérations de lecture-écriture, les données sont transmises au pilote de périphérique correspondant dans le noyau, qui active alors le périphérique. Dans d’autres cas, cela permet l’utilisation de services de sockets, de pipelines, de mémoire partagée, etc. Dans d’autres cas encore, cela permet de configurer ou d’inspecter dynamiquement le noyau. Bon, c’est spécial. Pour l’instant, il suffit de savoir que cela existe.
1.2 — Explorer la documentation
Alors, selon la documentation et les pages Wikipédia mentionnées ci-dessus, quel devrait être le nom du système de fichiers utilisé sur votre propre ordinateur ? (FAT32, NTFS, Ext4, APFS, etc.)
1.3 — Explorer votre disque
C’est votre propre ordinateur. Regardez une application nommée “Explorateur de fichiers”, “Gestionnaire de fichiers”, “Fichiers”, “Poste de travail”, “Finder” ou similaire. (Typiquement, l’icône ressemble à un dossier ou un classeur.) Sachez comment lancer cette application. Gardez à l’esprit que ce n’est qu’une application. (Vous pouvez en installer d’autres qui font la même chose.) Elle vous donne une belle vue des fichiers stockés sur votre ordinateur ; elle utilise les services du système de fichiers fournis par le système d’exploitation, mais cette application n’est pas le système d’exploitation.
Ainsi, cette application vous permet de naviguer dans la hiérarchie des fichiers de votre ordinateur. Veuillez la lancer.
- Vérifiez d’abord votre position actuelle, comment afficher cette information.
- Puis essayez de naviguer vers le haut, vers le bas, latéralement. Pensez à un arbre, avec des branches, des racines et des feuilles.
- Essayez de revenir à votre tout premier emplacement.
- Vous pouvez aussi jeter un œil aux options de configuration de cette application, cela peut vous donner des idées. Soyez curieux.
Au cours de votre exploration de vos fichiers, vous avez rencontré différentes catégories : ressources système, applications, bibliothèques et données utilisateur. Avez-vous identifié qui est qui ?
1.4 — Soyez à l’aise avec votre hiérarchie de fichiers
Microsoft ne fournit pas de documentation officielle spécifiant l’organisation de son système Windows. (Si vous savez, merci de me le faire savoir.) Cependant, il est possible de trouver de bons tutoriels tiers.
Le système est organisé en plusieurs arbres de fichiers, chacun commençant par une lettre majuscule.
(“Plusieurs” peut se réduire à un seul sur un système simple.)
La lettre majuscule est probablement C:
sur votre système.
Cela est dû à des raisons historiques. Les premiers PC IBM vendus étaient équipés d’un ou deux lecteurs de disquettes, auxquels les lettres A et B étaient attribuées,
puis le disque dur a reçu la lettre C. Cela est resté ainsi (sauf pour les disquettes, qui ne sont plus utilisées).
Les disques durs supplémentaires, partitions ou lecteurs réseau reçoivent les lettres suivantes.
Dossiers clés :
C:\Windows
: Ressources pour le système Windows lui-même.
Il inclut ‘C:\Windows\System’ (ressources globales), ‘C:\Windows\System32’ (bibliothèques pour systèmes 32 bits), ‘C:\Windows\SysWOW64’ (pour systèmes 64 bits).
Ceci est parfois caché par les applications, pour “améliorer l’expérience utilisateur”… Si vous insistez, vous pouvez y aller, après avoir cliqué plusieurs fois sur Ok.C:\Program Files
C:\Program Files (x86)
: Emplacement par défaut pour les applications installées (pour systèmes 64 bits et pour les 32 bits classiques)C:\Users\username
: Emplacements dédiés aux fichiers de chaque utilisateur
Donc, utilisez votre Explorateur de fichiers pour y aller et vérifier par vous-même.
Le système est organisé en une seule hiérarchie globale (contrairement à Windows). La racine de cet arbre s’appelle “/”. La hiérarchie suit une spécification : la Filesystem Hierarchy Standard. La plupart des variantes Linux, comme tous les autres systèmes Unix, respectent (plus ou moins) cette spécification.
Dossiers clés :
/boot
: Ressources pour démarrer le système (le chargeur de démarrage, le noyau, etc.)/etc
: Fichiers de configuration système spécifiques à l’hôte. (Ce nom surprenant est celui de “etc.”, la locution latine “et cetera”.)/bin
: Binaries essentiels pour l’utilisateur en ligne de commande./sbin
: Binaries essentiels pour le système./lib
: Bibliothèques pour les binaries dans ‘/bin’ et ‘/sbin’./usr
: Hiérarchie secondaire, pour les ressources non essentielles. Elle inclut ‘/usr/bin’, ‘/usr/sbin’, ‘/usr/lib’.
(La séparation entre essentiel et non essentiel est le résultat d’une longue histoire commencée dans les années 70. Mais gardez en tête que “usr” n’est pas l’abréviation de “users” ; les utilisateurs vont ailleurs…)/dev
: Fichiers spéciaux relatifs aux périphériques./proc
/sys
: Fichiers spéciaux relatifs au noyau./home/username
: Emplacements dédiés aux fichiers de chaque utilisateur.
Donc, utilisez votre Explorateur de fichiers pour y aller et vérifier par vous-même.
Le système est organisé en une seule hiérarchie globale (contrairement à Windows). La racine de cet arbre s’appelle “/”. Comme les autres systèmes Unix, il suit plus ou moins la Filesystem Hierarchy Standard (en fait, plutôt moins). Mais il a ses propres spécificités. Les ressources Unix traditionnelles sont généralement cachées par les applications Mac, pour “améliorer l’expérience utilisateur”… D’autres sont renommées pour être plus explicites.
Dossiers clés :
/System
: Ressources pour le système/Applications
: Emplacement par défaut pour les applications destinées à tous les utilisateurs/Library
: Bibliothèques pour les applications dans ‘/Applications’/Users/username
: Emplacements dédiés aux fichiers de chaque utilisateur (avec des sous-répertoires pour leurs propres ‘Applications’ et ‘Library’ installées)
Donc, utilisez Finder (ou votre explorateur de fichiers préféré) pour y aller et vérifier par vous-même.
1.5 — Essayez la ligne de commande
La ligne de commande n’est pas réservée aux scènes de films avec des stéréotypes de geeks, c’est en réalité une manière pratique d’utiliser votre ordinateur.
En résumé, une interface en ligne de commande (CLI) est une application (ou une partie d’une application) offrant une interaction textuelle entre l’humain et la machine. L’humain est invité à taper une phrase, la machine la comprend (ou pas) et fournit sa réponse. Pour que cela fonctionne, la phrase doit être simple et stricte, essentiellement un mot de commande suivi de quelques paramètres ou options. L’humain doit connaître les mots que la machine peut comprendre, et les taper avec ses doigts sur le clavier sans cliquer la souris. (Cette compétence extraordinaire est probablement à l’origine de ces stéréotypes cinématographiques.)
Autrefois, l’interface en ligne de commande était une console physique, nommée terminal, un dispositif composé d’un écran cathodique et d’un clavier, connecté à un ordinateur de la taille d’une armoire. (Un grand succès commercial de Teletype Corp. dans les années 70, qui a laissé le mot courant TTY pour ces dispositifs.) Maintenant, c’est juste une application sur votre PC. Ainsi, “ligne de commande”, “cli”, “shell”, “console”, “rollover”, “terminal”, “tty” sont plus ou moins synonymes avec quelques particularités mineures.
Essayons.
Explorez les menus et cherchez une application appelée “Invite de commandes” ou similaire. Vous pouvez aussi utiliser la barre de recherche pour “Command”, “Prompt”, “cmd.” ou une combinaison. Cliquez dessus. Et gardez en tête comment la lancer.
Cela lance une application textuelle. C’est soit le traditionnel “cmd”, soit le nouveau “powershell” de Windows. Les deux conviennent pour nos besoins aujourd’hui. (Ce dernier fait plus dans le sens où son langage de script étend celui de l’ancien, plus des commandes supplémentaires. Oubliez cela pour l’instant.)
Les commandes de base que vous devriez connaître sont :
help
: Oui, c’est une commande. Elle fournit soit la liste des commandes supportées, soit des détails sur une commande donnée (ex. demandez “help cd”).
De plus, chacune des commandes suivantes affiche un bref texte d’aide lorsqu’elle est suivie de l’option “/?” (ex. tapez “dir /?”).dir
: Liste le contenu d’un répertoire.cd
: Change Directory. Allez dans le répertoire indiqué (ex. “cd C:\Users", ou “cd ..” où le nom spécial de répertoire “..” signifie un pas en arrière dans la hiérarchie.)c:
d:
a:
Passe à la hiérarchie du disque attaché à la lettre, si actif.mkdir
rmdir
: Crée ou supprime un répertoire.copy
: Copie un fichier ou un répertoire. (Notez aussi “xcopy”, et sa version étendue.)del
: Supprime des fichiers.ren
: Renomme un fichier ou un répertoire.tree
: Affiche l’arborescence depuis votre position actuelle dans la hiérarchie.app_name
: Lance une application, tapez simplement le nom du fichier exécutable. (Ex. tapez “notepad” ou “explorer”, etc.)exit
: Pour sortir.
Utilisez donc l’interface en ligne de commande pour parcourir votre hiérarchie de fichiers.
Notez l’usage particulier du caractère “\” (antislash). C’est le séparateur de fichiers. Il ne fait pas partie du nom, il est utilisé pour séparer les noms dans la chaîne de caractères. Une série de noms de répertoires et sous-répertoires séparés par ce séparateur s’appelle un chemin.
On peut distinguer :
- chemin absolu : Le chemin commence par une lettre de lecteur.
- chemin relatif : Le chemin commence par le nom d’un sous-répertoire du répertoire courant. Il est relatif à ‘ici’. Il n’est donc valide que si vous partez du bon endroit.
Notez l’intérêt des noms de sous-répertoires spéciaux “.” (ici) et “..” (un pas en arrière).
Questions (absolues ou relatives) :
- Qu’est-ce que “C:\Users” ?
- Qu’est-ce que “C:\Windows” ?
- Qu’est-ce que “Windows\System” ?
- Qu’est-ce que “..\..\Users” ?
- Qu’est-ce que “C:\Windows\.\System” ?
Réponse :
- Demandez à votre ordinateur ! (Essayez avec la commande “cd”)
Question :
- Existe-t-il un endroit où “.” = “..” ?
Notez que Windows n’est pas sensible à la casse. (Contrairement à Unix.)
Astuce : Si un nom de répertoire ou de fichier contient des espaces, utilisez des guillemets.
Pour aller plus loin
Si vous avez installé WSL (Windows Subsystem for Linux), vous pouvez le lancer, et passer à l’onglet Linux suivant.
Linux et Mac sont tous deux des variantes appartenant à la famille Unix. Ce sont des cousins assez éloignés, mais dans ce cas, on peut les considérer de la même manière.
Explorez les menus et cherchez une application appelée “Terminal”, “Command”, “Shell” ou similaire. C’est probablement une icône représentant un écran rectangulaire noir et blanc affichant le texte “>_” (l’invite historique Unix). Juste au cas où, quelques indications pour Linux Ubuntu et Mac.
Les commandes de base que vous devriez connaître sont :
help
: Oui, c’est une commande. Elle fournit soit la liste des commandes supportées, soit des détails sur une commande donnée (ex. demandez “help cd”).ls
: Liste le contenu d’un répertoire.cd
: Change Directory. Allez dans le répertoire indiqué (ex. “cd /home”, ou “cd ..” où le nom spécial de répertoire “..” signifie un pas en arrière dans la hiérarchie ; notez aussi le nom spécial de répertoire “~” comme alias pour votre propre répertoire personnel.)pwd
: Print working directory, votre position actuelle dans la hiérarchie.mkdir
rmdir
: Crée ou supprime un répertoire.cp
: Copie un fichier ou un répertoire.rm
: Supprime des fichiers.mv
: Déplace un fichier ou un répertoire.tree
: Affiche l’arborescence depuis votre position actuelle dans la hiérarchie.app_name
: Lance une application, tapez simplement le nom du fichier exécutable. (Ex. tapez “gedit” ou “firefox”, etc.)man
: Affiche une page de manuel relative à une application ou au système.
Unix a la bonne idée de fournir sa propre documentation officielle. (Ex. tapez “man gedit” ; appuyez sur ‘Q’ pour quitter)
Tapez “man hier” pour une explication de la hiérarchie des fichiers de votre système.exit
: Pour sortir.
Utilisez donc l’interface en ligne de commande pour parcourir votre hiérarchie de fichiers.
Notez l’usage particulier du caractère “/” (slash). C’est le séparateur de fichiers. Il ne fait pas partie du nom, il est utilisé pour séparer les noms dans la chaîne de caractères. Une série de noms de répertoires et sous-répertoires séparés par ce séparateur s’appelle un chemin.
On peut distinguer :
- chemin absolu : Le chemin commence par la racine de la hiérarchie, nommée “/”.
- chemin relatif : Le chemin commence par le nom d’un sous-répertoire du répertoire courant. Il est relatif à ‘ici’. Il n’est donc valide que si vous partez du bon endroit.
Notez l’intérêt des noms de sous-répertoires spéciaux “.” (ici) et “..” (un pas en arrière).
Questions (absolues ou relatives) :
- Qu’est-ce que “/home” ?
- Qu’est-ce que “/sbin” ?
- Qu’est-ce que “usr/bin” ?
- Qu’est-ce que “../../sbin” ?
- Qu’est-ce que “/usr/./bin” ?
Réponse :
- Demandez à votre ordinateur ! (Essayez avec la commande “cd”)
Question :
- Existe-t-il un endroit où “.” = “..” ?
Notez que Linux & Mac (et autres Unixes) sont sensibles à la casse. (Contrairement à Windows.)
Astuce : Si un nom de répertoire ou de fichier contient des espaces, utilisez des guillemets.
“Oh, dommage, j’ai oublié mon PC à la maison…”
Ne vous inquiétez pas, vous pouvez installer une application terminal sur votre smartphone ! Par exemple, regardez “termux” (Android) ou “iSH” (iPhone).
Ces systèmes sont basés sur Unix, vous pouvez donc passer à l’onglet Linux & MacOS et expérimenter les activités proposées et explorer l’intérieur de votre smartphone.
2 — Permissions
Votre ordinateur est certainement un système multi-utilisateur. Cela signifie que plusieurs utilisateurs peuvent l’utiliser (simultanément ou alternativement), et que le système fait de son mieux pour préserver l’intégrité des données de chacun. Les utilisateurs ici peuvent être une personne physique, ou non : sur votre ordinateur vous jouez deux rôles, le rôle d’administrateur système (installer, désinstaller, configurer le système et les applications), et le rôle d’un simple utilisateur (utilisateur heureux qui clique, profite et code). Les systèmes modernes mettent donc en œuvre des moyens d’isoler et de séparer les choses. D’abord à la connexion : avant de démarrer votre session, l’ordinateur vous demande qui vous êtes et de le prouver (ex. nom d’utilisateur + mot de passe). Puis, pendant votre session, le système vous empêche d’endommager les fichiers des autres (accidentellement ou délibérément), sauf autorisation explicite. De plus, il est généralement considéré comme une mauvaise idée d’ouvrir sa session en tant qu’administrateur, ou de lancer des applications utilisateur en tant qu’administrateur. (Même si vous êtes l’administrateur de votre ordinateur, créez un compte utilisateur normal et utilisez-le pour vous connecter pour un usage normal. Limitez votre rôle d’administrateur à un temps très limité.)
De manière générale, le système d’exploitation s’en occupe via son système de gestion de fichiers ; chaque fichier est stocké avec des métadonnées indiquant d’une manière ou d’une autre quel utilisateur est autorisé à lire, écrire ou exécuter le fichier. Les détails dépendent du système en question.
Notez aussi que les permissions sur les répertoires doivent être comprises avec soin.
Être autorisé à lire un répertoire signifie être autorisé à obtenir la liste des noms de fichiers et sous-répertoires qu’il contient.
Être autorisé à écrire dans un répertoire signifie être autorisé à ajouter ou supprimer un fichier dans ce répertoire, indépendamment d’être autorisé à accéder au contenu du fichier.
Être autorisé à exécuter un répertoire n’a pas de sens (contrairement à un fichier, qui peut être une application).
Cela est remplacé par l’idée d’être autorisé à le traverser, c’est-à-dire à accéder à son contenu sans l’autorisation de le lire.
Windows utilise généralement NTFS comme système de gestion de fichiers. (Donc c’est la réponse à la première question de cette session, vous l’avez trouvée ?)
Les autorisations sont mises en œuvre à l’aide de listes d’accès (ACL) attachées aux fichiers : une liste explicite de qui est autorisé à faire quoi.
À faire : Lancez votre gestionnaire de fichiers. Sélectionnez un fichier quelque part et faites un clic droit. Sélectionnez l’onglet “Sécurité”. Vous obtenez une liste d’utilisateurs et, pour chacun d’eux, les actions autorisées ou refusées. Vous pouvez supprimer un utilisateur, ou en ajouter un nouveau parmi ceux existant sur votre système. (Cela peut aussi être le nom d’un “groupe” d’utilisateurs.) Pour chacun d’eux, vous pouvez modifier les permissions dites “Basique” ou “Avancée” (ou “Spéciale”). Les autorisations basiques sont assez évidentes : lire, écrire, exécuter, modifier les propriétés. Les plus avancées reposent sur le fait que cela peut être hérité du répertoire parent ou non, ou permettre la création/suppression de fichiers ou sous-répertoires, etc.
Pour vos tests, vous pouvez créer des fichiers ou répertoires factices et modifier leurs permissions, sans toucher à vos fichiers précieux habituels.
Vous pouvez aussi vérifier ou modifier les permissions avec l’outil en ligne de commande “icacls”.
Pour aller plus loin
Si vous avez installé WSL (Windows Subsystem for Linux), vous pouvez le lancer, et passer à l’onglet Linux suivant.
Encore une fois, nous allons traiter Linux et Mac ensemble.
Linux utilise généralement Ext3 ou Ext4 comme système de gestion de fichiers, tandis que Mac utilise maintenant APFS. (Donc c’est la réponse à la première question de cette session, vous l’avez trouvée ?)
Les permissions sont mises en œuvre à l’aide des permissions Unix : un ensemble de 3x3 bits, indiquant les permissions lecture/écriture/exécution pour le propriétaire du fichier, pour les utilisateurs du groupe auquel appartient le fichier et pour les autres utilisateurs.
(Il existe de nombreux systèmes de gestion de fichiers pour Unix, mais ils implémentent tous ce principe. Certains offrent aussi des listes d’accès ou des attributs étendus. Mais cela dépasse le cadre ici.)
À faire : Lancez votre gestionnaire de fichiers. Sélectionnez un fichier quelque part et faites un clic droit. Sélectionnez l’onglet “Permission”. Vous obtenez les permissions lecture/écriture/exécution mentionnées ci-dessus pour utilisateurs/groupes/autres.
Ouvrez maintenant votre interface en ligne de commande préférée.
Tapez ls -l
. (L’option “-l” demande la description longue des fichiers listés. Lisez la page de manuel avec “man ls”.)
$ ls -l
total 8
-rwx--x--x 1 clohr info-perm 92 juil. 15 17:33 helloworld.py*
-rw-r--r-- 1 clohr info-perm 33 juil. 15 17:34 readme.txt
drwx------ 2 clohr info-perm 4096 juil. 15 17:35 session1/
- Vous pouvez deviner des informations classiques : un nom de fichier, une date, une taille.
La taille du fichier est exprimée en octets. Le total est exprimé en blocs occupés ; oubliez cela.
La date affichée est la date à laquelle le contenu a été modifié pour la dernière fois. Unix enregistre aussi la dernière date de lecture et la dernière fois où les attributs ont été modifiés. (Chacune des trois dates enregistrées peut être obtenue avec certaines options de “ls”.) - Vous pouvez voir un nom d’utilisateur (“clohr” dans cet exemple), et un nom de groupe (“info-perm” dans cet exemple).
- La deuxième colonne contient un petit nombre (1 ou 2 dans cet exemple). C’est le nombre de liens directs vers le fichier, c’est-à-dire le nombre de noms dans la hiérarchie des fichiers pour atteindre les données.
- Mais la partie la plus intéressante pour nous est la première colonne : l’ensemble mystérieux de lettres et tirets. Ce sont les permissions Unix sur les fichiers. (Affichées ici symboliquement ; les valeurs binaires correspondantes sont parfois affichées en octal, et rarement en hexadécimal).
Explication des symboles d’autorisation :
- La première lettre indique si le fichier est un fichier régulier (le tiret ‘-’), ou un répertoire (un ’d’).
(Pour les fichiers spéciaux, cela peut aussi être ‘c’ (périphérique caractère), ‘b’ (périphérique bloc), ‘p’ (pipe) ou ’s’ (socket unix). Oubliez cela.) - Ensuite, trois groupes de trois lettres : ‘rwx’ (lecture, écriture, exécution, ou un tiret si non autorisé), pour l’utilisateur, pour le groupe et pour les autres.
(De plus, Unix a les set user-id et sticky bits, avec des lettres ’s’ ou ’t’ à la place du ‘x’. Oubliez cela.)
Points clés à retenir :
- (r)ead (w)rite e(x)ecute, pour (u)ser (g)roup (o)thers
- signification pour les répertoires : r = obtenir la liste des fichiers qu’il contient, w = écrire cette liste en ajoutant ou supprimant des fichiers, x = traverser pour atteindre les fichiers sans les lister
Les permissions Unix (ou modes) peuvent être modifiées avec la commande chmod
.
Jetez un œil à la page de manuel (“man chmod”).
En gros, la syntaxe est “chmod [ugo+=-rwx] [filename]”, où “ugo” et “rwx” sont comme ci-dessus, et “+=-” est l’action pour ajouter, définir ou retirer ces permissions pour ces personnes.
Pour tester, créez un fichier factice et changez ses permissions :
$ echo "Hello world" > dummy.txt
$ ls -l ./dummy.txt
-rw-rw-r-- 1 clohr info-perm 12 16 juil. 09:22 ./dummy.txt
$ chmod go-r ./dummy.txt
$ ls -l ./dummy.txt
-rw--w---- 1 clohr info-perm 12 16 juil. 09:22 ./dummy.txt
$ chmod a+x ./dummy.txt
$ ls -l ./dummy.txt
-rwx-wx--x 1 clohr info-perm 12 16 juil. 09:22 ./dummy.txt
...
Avez-vous vraiment lu la page de manuel ? Quelle est la signification de ‘a’ dans la dernière commande “chmod” ?
Notez aussi qu’il existe une syntaxe octale classique. Mais vous devriez au moins connaître la syntaxe symbolique.
Fichiers cachés : Les fichiers peuvent être cachés. Mais ce n’est pas dû à un type d’attribut spécial ou à une propriété de permission, c’est juste une convention de la part des applications. Les fichiers ou répertoires dont le nom commence par un point ne sont généralement pas affichés à l’utilisateur, sauf demande explicite. Par exemple, vos fichiers de configuration de session sont généralement cachés (pour votre confort). Pour les voir, passez l’option “-a” (all) à “ls” :
$ cd
$ ls -la
...
De même, regardez comment configurer votre gestionnaire de fichiers pour afficher les fichiers cachés.
2.1 — Sachez où trouver les fichiers téléchargés et divers fichiers d’applications
Les applications utilisent et produisent des fichiers, mais où sont-ils ?
2.1.1 — Considérez un premier scénario
Vous visitez une page web. Vous avez lu la documentation attentivement. Vous êtes maintenant convaincu que c’est le truc dont vous avez besoin. Vous cliquez sur télécharger.
Que se passe-t-il ?
Votre navigateur web (qui n’est qu’une autre application) télécharge le fichier demandé et le stocke quelque part sur votre ordinateur. Où ce nouveau fichier a-t-il été placé dans votre hiérarchie de fichiers ?
-
Ouvrez votre gestionnaire de fichiers. Sur l’espace de fichiers affiché, vous trouvez quelque chose appelé “Téléchargements” (ou similaire). C’est probablement là que votre navigateur web a enregistré le fichier téléchargé. (Vérifiez.) Mais est-ce vraiment la bonne réponse à la question ? Où se trouve ce sous-répertoire “Téléchargements” dans votre hiérarchie de fichiers ? En fait, vous le voyez dans un dossier nommé “Homes” (ou similaire, comme un raccourci, pour “améliorer l’expérience utilisateur”). Mais un raccourci vers où ? Comment ou quoi a créé ce raccourci ?
Votre explorateur de fichiers propose certainement aussi un élément appelé “Ce PC” ou “Système” (ou similaire), un point d’entrée dans la hiérarchie des fichiers de votre ordinateur, offrant une vue concrète des fichiers et de leur emplacement (sans stratégies de masquage pour améliorer l’expérience utilisateur). Parcourez-le donc pour trouver votre fichier téléchargé. Trouvé ? Gardez en tête la vraie localisation. Notez aussi que le raccourci mentionné ci-dessus n’est qu’une astuce réalisée par votre gestionnaire de fichiers, à des fins d’affichage. -
Ouvrez votre terminal de commande (ou le nom utilisé sur votre système). Répétez l’exploration, mais en utilisant l’interface en ligne de commande. Utilisez les commandes décrites ci-dessus pour parcourir les répertoires, et trouver le fichier téléchargé. Gardez en tête la localisation actuelle.
-
Considérations de sécurité.
Les éléments que vous avez téléchargés peuvent contenir des exécutables. Si vous cliquez dessus, vous demandez à votre ordinateur de suivre des instructions décidées (codées) par quelqu’un d’autre. (D’accord, tout le reste sur votre ordinateur l’est déjà.) Mais, êtes-vous sûr que cet exécutable est bon pour vous ? Qu’il n’y a pas d’action cachée ? Votre système peut (ou non) incorporer un “antivirus”, c’est-à-dire une application qui examine les instructions exécutables et détecte (ou non) un code inapproprié. Cela augmente la confiance, mais ce n’est pas magique. La première ligne de défense, c’est vous. Avez-vous lu la documentation attentivement ? L’avez-vous téléchargé depuis une source fiable ? Est-ce la source originale et non un site tiers (qui pourrait injecter du code supplémentaire) ? Gardez ces questions en tête lorsque vous cliquez sur ok. Il n’y a probablement pas de réponse définitive, juste des moyens d’élever la confiance.
2.1.2 — Considérez un second scénario
Vous commencez maintenant à devenir un codeur (et bientôt un développeur), avec Python, Java, etc. et un IDE (ex. VS Code). Donc, vous avez joué avec un IDE. C’est une application, qui stocke des fichiers. Mais où ?
Les mêmes questions que pour le premier scénario :
- Utilisez votre gestionnaire de fichiers pour trouver l’emplacement réel de vos fichiers de code dans la hiérarchie des fichiers.
- Utilisez votre interface en ligne de commande pour trouver l’emplacement réel de vos fichiers de code dans la hiérarchie des fichiers.
2.2 — Organisez votre propre espace utilisateur par leçons/sessions/etc.
Vous ne mettez probablement pas vos pantalons, chaussettes, maillots de bain et manteaux dans le même tiroir. Vous essayez probablement d’organiser vos affaires pour regrouper les éléments qui vont ensemble.
Faites de même avec vos biens numériques.
Votre session propose peut-être déjà une organisation : “Ma musique”, “Mes vidéos”, “Mes images”, “Mes téléchargements”, “Mon bureau”, “Mes documents”, … C’est une organisation par type de fichiers. (Bon, Documents est plutôt flou, et il n’y a pas de “Mes codes”.) Vous pouvez donc préférer une autre stratégie pour organiser les fichiers que vous aurez à gérer pendant votre formation. Pourquoi ne pas organiser cela par sous-répertoires correspondant aux disciplines / leçons / sessions / activités. Ce n’est certainement pas une bonne idée d’avoir tous vos fichiers de travail dans le même dossier, de manière plate, et d’avoir beaucoup de choses simplement nommées “exercice” “projet” “rapport” (de quoi ??). Essayez de trouver votre propre stratégie pour organiser vos fichiers et suivez-la.
Faites-le maintenant. Vous avez déjà créé des fichiers dans les sessions précédentes. Créez donc des sous-répertoires, maintenant, avec des noms qui ont du sens pour vous, et déplacez-y les fichiers. Ne vous inquiétez pas si vous changez d’avis et optez pour une autre stratégie plus tard, vous pouvez toujours réorganiser et déplacer vos fichiers en conséquence. Soyez juste cohérent.
3 — Gérer les archives
Une archive est un gros fichier contenant plusieurs fichiers. Elle est utile pour gérer des sauvegardes, ou pour distribuer un projet.
En plus de la collection de fichiers, certaines solutions offrent aussi la compression. Cela peut être fait séparément ou en combinaison. La protection par mot de passe peut aussi être proposée. Il est traditionnel dans le monde Unix d’utiliser le format “tar” (Tape ARchiver, historiquement utilisé pour les sauvegardes sur bande), suivi d’une compression (gzip, bzip2, xz, …) On obtient des extensions de fichiers telles que “.tar.gz” “.tgz” “.tar.bz2” “.tar.xz” etc. Il est traditionnel dans le monde Windows d’utiliser le format “.zip” ou “.7z” (ou d’autres formats propriétaires tels que “.arj” ou “.rar”). Mais de nombreux formats existent, avec des différences en termes de latence d’accès, taux de compression et licence. La plupart des formats différents sont disponibles sur toutes les plateformes.
Les opérations de base sont : créer, lister, extraire. La plupart permettent aussi d’ajouter un fichier à une archive existante, de remplacer un fichier par un nouveau contenu ou d’extraire un fichier sans extraire l’ensemble.
-
Ouvrir une archive de fichiers.
C’est typiquement l’opération que vous effectuez pour obtenir les fichiers fournis par les enseignants pour un cours pratique.
Téléchargez
archive_tuto.zip
ouarchive_tuto.tar.bz2
proposés ici (ou les deux), et enregistrez-les dans votre espace de travail. Si votre système propose de l’ouvrir directement avec un gestionnaire d’archives (ou similaire), refusez et choisissez de l’enregistrer. Maintenant, vous savez où vos fichiers téléchargés sont stockés et comment y accéder avec votre gestionnaire de fichiers. Allez-y et cliquez dessus. Si votre système ne propose pas de gestionnaire d’archives, vous pouvez installer 7-zip ou peazip.Le gestionnaire d’archives vous permet de lister le contenu de cette archive. Notez qu’il y a deux écoles concernant la construction des archives : faut-il placer tout le contenu dans un sous-répertoire à l’intérieur de l’archive, ou faut-il le placer directement à la racine de l’archive ? Cela aura un impact pratique au moment de l’extraction. Dans le premier cas, tout le contenu extrait sera stocké et regroupé dans un sous-répertoire approprié. Tandis que dans le second cas, les fichiers seront mélangés avec ceux déjà existants dans le répertoire de travail. Dans ce cas, il est conseillé de préparer en créant un sous-répertoire pour l’extraction de l’archive. Donc, la première chose à faire est de regarder la liste du contenu de l’archive et vérifier son organisation interne.
Vous pouvez maintenant procéder à l’extraction des fichiers. Décidez où extraire les fichiers, et souvenez-vous-en.
Les utilisateurs Unix peuvent préférer les outils en ligne de commande :
tar
etunzip
sont vos amis. (Lisez les pages de manuel ! pour lister : “tar tvf <archive.tar.bz2>” “unzip -l <archive.zip>” ; pour extraire : “tar xvf <archive.tar.bz2>” “unzip <archive.zip>”) Puis, regardez les nouveaux fichiers. -
Créer une archive de fichiers.
C’est typiquement l’opération que vous effectuez lorsque vous remettez votre travail aux enseignants.
Créez un sous-répertoire (ex. “my_homework”). Créez quelques fichiers dedans (ex. “foo.py” “bar.txt” …) Revenez au répertoire précédent, c’est-à-dire celui contenant “my_homework”. Votre gestionnaire d’archives préféré peut être intégré à votre gestionnaire de fichiers. Dans ce cas, en cliquant sur un élément (ex. “my_homework”), il propose une nouvelle action telle que “archiver”. Sinon, vous devez le lancer depuis le menu de vos applications. En gros, ces gestionnaires d’archives proposent de sélectionner des fichiers ou répertoires sur votre disque, puis vous demandent un nom d’archive et un emplacement pour créer l’archive.
Les utilisateurs Unix peuvent préférer les outils en ligne de commande :
tar
etzip
sont vos amis. (Lisez les pages de manuel ! pour archiver : “tar cvfj <archive.tar.bz2> <my_homework/>” “zip -r <archive.zip> <my_homework/>”)Regardez d’abord le contenu de l’archive que vous avez créée, à la liste, pour vous assurer que vous n’avez oublié aucun fichier. Ensuite, envoyez votre fichier d’archive à votre camarade de classe et demandez-lui de le regarder.
4 — Gestion des versions de fichiers
La gestion des versions de fichiers consiste à conserver différentes itérations du même fichier. Nous faisons parfois cela manuellement, en faisant des copies du même fichier et en ajoutant un numéro de version ou une date au nom des copies. Ainsi, on peut revenir à une version antérieure si nécessaire, ou retracer l’historique des modifications pour comprendre comment on en est arrivé là. Cela peut être crucial lorsqu’on travaille sur quelque chose qui prend beaucoup de temps à atteindre un état parfait (ex. rapports ou code logiciel). Cela peut aussi aider plusieurs personnes à travailler sur le même fichier, en gérant différentes versions pour chaque contributeur. Eh bien, la gestion des versions de fichiers est une fonctionnalité intéressante. C’est encore mieux d’avoir un outil pour cela, et de ne pas le faire à la main.
Il existe de nombreux outils, mais nous allons nous concentrer sur “git”, qui est aujourd’hui largement utilisé par les développeurs.
-
Installation
Suivez les instructions officielles correspondant à votre ordinateur. Les options de configuration par défaut conviennent pour nous. -
Utilisation locale
Ouvrez votre interface en ligne de commande préférée et dites à “git” qui vous êtes (cela apparaîtra dans le journal des contributeurs lors de l’édition des fichiers).$ git config --global user.name "Your Name" $ git config --global user.email "you@imt-atlantique.net"
Veuillez remplacer par votre vrai nom et email, ne copiez-collez pas aveuglément…
Créez maintenant un répertoire pour un projet factice, initialisez-le pour git (cela crée des fichiers de configuration cachés), produisez des fichiers dedans, demandez à git de les gérer, puis produisez un premier “commit” (une version), et vérifiez que tout va bien à chaque étape.$ mkdir git_trial_1 $ cd git_trial_1 $ git init $ echo "Hello" > readme.txt $ echo "print('hello world')" > hello.py $ dir $ git status $ git add * $ git status $ git commit -m "My first steps with git" $ git status
Puis, faites un changement et produisez une nouvelle version.
$ echo "world" >> readme.txt $ git status $ git commit -a -m "Improved documentation" $ git status $ git log --stat
La commande “git log” affiche les différentes versions de votre projet. Notez que les commits sont identifiés par un nom unique aléatoire, pas un simple numéro. (Contribuer à un projet n’est pas quelque chose de strictement linéaire, mais ressemble plutôt à un graphe de tâches. C’est pourquoi utiliser des numéros n’aurait pas de sens.) Notez que le tout dernier commit a pour surnom “HEAD” (“HEAD~” est le commit précédent, et “HEAD~~” ou “HEAD~2” est le commit encore plus ancien, et ainsi de suite).
Pour savoir ce qui s’est passé sur un fichier :
$ git blame readme.txt
Disons que vous avez des doutes sur les modifications de ce fichier et voulez voir une version précédente :
$ git show HEAD~ readme.txt
Ce n’est probablement pas évident au premier coup d’œil en regardant le résultat, mais en réalité git fait tout cela en appliquant des diffs. Le cœur du processus est le calcul et l’application des diffs sur les fichiers.
-
GitLab
Vous pourriez être intéressé par pousser votre travail vers un serveur. (Pour travailler avec d’autres, ou avec vous-même mais depuis différents ordinateurs. Le serveur agit comme un point de synchronisation.) Vous avez peut-être déjà entendu parler de GitHub. Notez que git n’est pas GitHub. GitHub est un serveur pour projets git de la société GitHub Inc., acquise par Microsoft en 2018. Mais d’autres serveurs git sont possibles. Il est important de savoir vers qui vous poussez votre travail.
IMT Atlantique offre un serveur GitLab à des fins pédagogiques. Connectez-vous et créez un projet, avec un nom comme “git_trial_2”. Vous pouvez utiliser un modèle prédéfini, ex. “Sample GitLab Project” L’initialisation peut prendre une minute ou deux. Soyez patient. Le serveur, en plus de git, offre plusieurs fonctionnalités telles qu’un wiki, un espace web, des tickets, etc.
En haut à droite de la page de votre projet, il y a un bouton bleu nommé “Code”. Déployez le menu associé. Plusieurs façons de cloner/ouvrir/télécharger votre projet sont proposées. Choisissons “Clone with HTTPS”. Gardez l’URL fournie dans votre presse-papiers.
Ouvrez votre interface en ligne de commande préférée et clonez ce projet GitLab sur votre ordinateur.
$ git clone https://gitlab-df.imt-atlantique.fr/xxxx
Utilisez l’URL fournie depuis votre presse-papiers (et non le ‘xxxx’ ci-dessus).
Vous pouvez maintenant aller dans ce répertoire de projet, faire les changements nécessaires, localement sur votre ordinateur, faire des commits et autres tâches git sophistiquées, et occasionnellement pousser cela vers le serveur. La commande correspondante est “git push”, et son ami “git pull”. Vous pouvez faire cela depuis plusieurs ordinateurs. (Notez que nous n’avons pas l’intention de détailler ici comment résoudre des conflits de fusion complexes. Mais si vous travaillez sur des fichiers séparés, sur des parties séparées des fichiers, ou si vous suivez la séquence stricte pull-commit-push, il n’y aura probablement pas de problème.)
$ cd git_trial_2 $ git pull $ echo "foo bar" >> doc.txt $ git add doc.txt $ git commit -m "add documentation" $ git push
Notez que les commandes push et pull fonctionnent car ce projet git a été configuré avec une URL.
$ git remote get-url origin
Votre “git_trial_1” n’a pas d’URL distante. Associiez-le à un projet GitLab. Connectez-vous au serveur GitLab. Créez un autre projet, avec un nom comme “git_trial_1”. Mais cette fois, il est très important de choisir “Create a blank project”.
Ensuite, GitLab fournit des instructions sur comment connecter votre projet local à celui de GitLab. Ouvrez votre interface en ligne de commande préférée et suivez-les.$ cd git_trial_1 $ git remote add origin https://gitlab-df.imt-atlantique.fr/yyyy $ git branch -M main $ git push -uf origin main
Vous pouvez maintenant aller dans ce répertoire de projet, faire les changements nécessaires, localement, faire des commits et autres tâches git sophistiquées, et occasionnellement pousser cela vers le serveur…
Ces premiers pas avec git sont une introduction très minimaliste. Cela suffit pour un contexte mono-utilisateur, pour de petits projets, sans conflits complexes d’édition de fichiers. Mais cela peut couvrir la plupart de nos besoins pour l’instant. Plus de documentation depuis le tutoriel officiel ou depuis des tiers. Vous pourriez apprendre à créer des branches, tags, merges et beaucoup d’autres choses fabuleuses.
Pour aller plus loin
5 — GameShell
-
Installer & jouer à GameShell.
C’est un petit jeu pour apprendre à utiliser le terminal de manière interactive. C’est amusant !
Les utilisateurs Windows peuvent l’installer dans WSL.
-
Lecture supplémentaire : “19 Absolute Simple Things About Linux Terminal”
Pour aller encore plus loin
On dirait que cette section est vide !
Y a-t-il quelque chose que vous auriez aimé voir ici ? Faites-le nous savoir sur le serveur Discord ! Peut-être pouvons-nous l’ajouter rapidement. Sinon, cela nous aidera à améliorer le cours pour l’année prochaine !