Les données sont sauvegardées sur disque dans un fichier. Un fichier contient un ensemble d’octets organisé selon une structure.
Le fichier possède deux parties :
Un nom : il doit être significatif afin que vous sachiez ce qu’il contient. Utiliser des symboles dans le nom, comme un point d’interrogation, peut causer des problèmes. Il est préférable de s’en abstenir.
Une extension : généralement composé de trois lettres, il permet d’identifier le type du fichier. Ainsi, l’application qui peut le lire et le modifier le reconnaîtra.
Un fichier peut être lisible par un humain, comme un fichier texte.
Exemple de fichier texte
Un fichier peut aussi être dans un format difficilement compréhensible pour un humain. Nous disons qu’il s’agit d’un fichier binaire.
Exemple de fichier binaire
Je vais revenir plus en détail sur certains types de fichiers un peu plus tard. Pour l’instant, l’important est de savoir que les fichiers servent à contenir vos données.
Un fichier possède des permissions. Il est possible à un utilisateur de lire, d’écrire et, pour certains types de fichiers, d’exécuter un fichier.
Permissions d’un fichier
Le système d’exploitation offre une application pour gérer les fichiers. Elle permet par exemple de déplacer le fichier, le renommer, le supprimer. Je vais expliquer celle de chaque système lorsque je couvrirai un système en particulier.
Lorsque vous utilisez votre ordinateur, vous devez avoir un utilisateur. C’est lui qui lance les applications, crée les fichiers, définit les paramètres. Peut-être que vous n’en êtes pas conscient, mais vous avez un utilisateur. Habituellement, il est créé au moment où le système d’exploitation est installé. Possiblement que lorsque vous avez acheté votre ordinateur, vous avez dû l’initialiser et il vous fut demander de créer un utilisateur et un mot de passe.
Écran de connexion
Il est possible d’avoir plusieurs utilisateurs sur un ordinateur. Peut-être que plusieurs personnes utilisent un ordinateur en partageant le même compte. Mais il est préférable que chaque personne ait son utilisateur. Ainsi, il pourra définir ses préférences (couleur, fond d’écran, etc.). Puis, les autres utilisateurs ne pourront accéder à ses données.
Gestionnaire des utilisateurs
Une tablette ou un téléphone est habituellement utilisé par une seule personne. La notion d’utilisateurs a donc été caché. Mais il y en a un malgré tout.
Le menu d’applications affiche le nom d’utilisateur
Sur la majorité des systèmes d’exploitation, il y a un utilisateur différent, un super utilisateur qui a des droits différents des autres utilisateurs. Par exemple, il peut créer d’autres utilisateurs ou accéder à tous les fichiers du système. Un simple utilisateur ne peut pas faire cela.
Déconnexion de l’utilisateur
Écran de connexion avec plusieurs utilisateurs
Plusieurs systèmes offre une session d’invité, une connexion sans utilisateur désigné. C’est une session temporaire, dont l’utilisateur a des accès limités et dont les données seront effacés en fin de session.
En parlant d’autres sujets et de systèmes particuliers, la notion d’utilisateur deviendra plus claire.
Au cours des prochaines semaines, je vais couvrir la base de l’utilisation d’un ordinateur. Puis, je vais présenter écrire des tutoriels sur 3 systèmes d’exploitation :
MacOS
Linux
ChromeOS
Le fonctionnement d’une tablette ou d’un téléphone est différent de celui d’un ordinateur, bien que les principes soient similaires. Je vais tâcher de parler par la suite du système iOS qui se trouve sur les iPhone et les iPad et du système Android qui se trouve sur la plupart des téléphones et tablettes qui ne sont pas fabriqués par Apple.
Ainsi, une base commune sera offerte. Je vais couvrir par la suite des sujets particuliers, comme des formats de fichier, comme mp3, jpeg, mpeg, des logiciels comme LibreOffice et Firefox, et des technologies comme Bluetooth. Le jargon informatique deviendra plus limpide et vous pourrez faire des choix éclairés.
Hier, je suis tombé
sur un truc qui m’a éberlué. Je le partage, même si c’est un truc
un peu avancé.
Introduction
Dans un système de type Unix, comme Linux ou macOS, la commande ls permet de lister les fichiers d’un répertoire.
La commande ls
Auparavant, les terminaux étaient en noir et blanc. Maintenant, les gens aiment bien les couleurs et la commande ls affiche les noms des fichiers en couleur, selon leur type et leur attribut.
Quelqu’un s’en
plaint que l’affichage de plus de 10 000 fichiers prenaient du temps.
Un administrateur système, Joshua Stein, s’est penché sur le
problème et a trouvé une solution plutôt simple.
Trouver le problème
Expliquer le tout
permettra de montrer un processus pour découvrir un problème et le
régler sous un système de type Unix. L’équivalent peut se faire
sous Windows, mais avec d’autres outils.
La première étape
est de créer un environnement de test pour reproduire le problème.
Si nous ne pouvons observer le problème, nous ne pourrons pas le
régler.
Dans le cas qui nous occupe, c’est assez simple : il suffit de créer un répertoire contenant beaucoup de fichiers. Nous n’avons pas besoin de fichiers réels, car seul le listage nous intéresse. Nous allons donc créer des fichiers vides. Dans un terminal, tapez les commandes suivantes :
Créer un environnement de test
mkdir permet de créer un répertoire (make directory).
cd permet de changer
de répertoire courant (change directory).
touch actualise un
fichier. Si le fichier n’existe pas, il est créé. {1…10000} est
une itération de 1 à 10000. Autrement dit, les fichiers
fichier1.txt, fichier2.txt, fichier3.txt jusqu’à fichier10000.txt
sont créés.
Maintenant, mesurons combien de temps il faut pour afficher ces 10 000 fichiers :
Temps nécessaire pour ls 10 000 fichiers
La commande time permet de calculer le temps d’exécution de la commande en paramètre, dans notre cas, la commande ls. Le paramètre –colors=always est utilisé pour forcer l’utilisation des couleurs. Par défaut, ls va lister le nom des 10 000 fichiers. Cela ne nous est pas utile. Nous redirigeons la sortie dans la commande wc (word count), avec le paramètre -l (pour line). Donc, au lieu d’afficher les noms des fichiers, le nombre de fichiers est affiché.
Sur mon ordinateur pas très performant, cela prend 0,154. Joshua Stein avait des résultats pires que cela. Voyons ce qui prend du temps.
strace de ls
La commande strace permet de tracer un programme. Dans le cas qui nous occupe, la commande affiche le nombre de fois que chaque fonction est appelée.
Nous avons 10 000 appels à lstat. Ce qui est étrange et mérite d’être fouillé davantage.
La commande manlstat affiche la documentation de la fonction lstat (man pour manuel).
man lstat
La fonction lstat retourne les informations sur un fichier. Elle est ainsi appelée parce que les fichiers sont colorés en fonction de leur type. Si nous désactivons la couleur en fonction du type, nous allons éliminer ces 10 000 appels à lstat.
Corriger le problème
Les couleurs employées par ls sont définies avec la variable d’environnement LS_COLORS :
echo $LS_COLORS
Il y a beaucoup de
monde. Si nous désactivons le tout, nous aurons de bien meilleures
performances.
Pour définir LS_COLORS :
LS_COLORS=’ex=00:su=00:sg=00:ca=00:’
Vérifions le tout.
strace de ls après la modification à LS_COLORS
Les appels à lstat ont disparu.
time ls avec les modifications à LS_COLORS
Nous sommes passés
de 0,154 seconde à 0,107 secondes.
En terminant
C’est ainsi que nous
optimisons un système, en regardant ce qui se passe, puis en
comprenant pourquoi et enfin en modifiant l’environnement pour gagner
du temps. Il est important de pouvoir mesurer les progrès.
Autrement, nous ne pouvons juger de l’optimisation.
Merci à Joshua Stein d’avoir partagé sa trouvaille. Joshua Stein est entre autres un développeur OpenBSD que je suis depuis des années.
Je voulais connaître
les spécifications d’un processeur d’Intel. En regardant la page
dédiée à ce modèle en particulier sur le site web du fabricant,
j’ai remarqué qu’Intel offrait une mise à jour du microcode. Je
trouvais cela étrange et j’ai fouillé davantage. Ce que j’ai
découvert m’a laissé pantois.
Notes préliminaires
Cet article est plus
technique, mais je m’efforce de le rendre le plus simple possible
tout en faisant comprendre la problématique.
Bien que je sois
informaticien, je ne suis pas expert en sécurité. Je m’y intéresse,
car je ne veux pas être pris les culottes à terre. Mais uniquement
pour ce que j’utilise. Autrement dit, j’en ai rien à foutre qu’une
faille de sécurité soit trouvée dans Windows.
Bien qu’auparavant j’étais abandonné à des listes d’envoi sur le sujet et j’assistais à au moins une conférence par année sur la sécurité, j’ai décroché il y a deux ans. Je ne suis plus au fait de ce qui se passe vraiment.
Introduction
J’ai parlé des
processeurs. C’était une introduction générale que je ne voulais
pas trop technique. Je vais devoir expliquer quelques trucs afin de
faire comprendre le problème.
Au début de
l’informatique, les applications étaient écrites pour un processeur
en particulier. IBM sortait un modèle, les programmeurs écrivaient
des applications qui fonctionnaient sur celui-ci. Si l’année d’après
IBM sortait un nouvel modèle, les programmeurs devaient réécrire
le code pour ce nouvel modèle. C’est un peu comme si chaque
processeur parlait une langue différente.
C’est rapidement devenu invivable et il fallait trouver une meilleure façon de faire les choses. La solution qui fut mise en place fut d’ajouter une couche d’abstraction. Les programmeurs parlent à cette couche d’abstraction, qui elle traduit le tout dans le langage spécifique du processeur. Un peu comme si nous pouvions parler en français à tous les processeurs, mais qu’à l’interne, ils utilisent le mandarin, le coréen, l’arabe, etc. Peu importe, nous n’avons pas à nous en soucier. C’est ainsi qu’une application écrite dans les années 1980 pour un processeur Intel 8086 peut fonctionner sur un Intel Core i7 de l’année. De l’extérieur, ils présentent le même interface, alors qu’à l’intérieur, ce sont des mondes totalement différent. La couche d’abstraction s’appelle Instruction Set Architecture (ISA). La plupart des programmeurs ne savent pas qu’ils ne parlent jamais directement à l’électronique du processeur, même lorsqu’ils emploient un langage de bas niveau comme l’assembleur. L’ISA est toujours un intermédiaire entre eux et le processeur. Ainsi, les fabricants peuvent changer totalement la façon de fonctionner d’un processeur sans tout briser, à condition de respecter l’ISA. Ils peuvent même corriger un processeur déjà mis en marché en changer le code à l’intérieur du processeur, ce que nous appelons le microcode.
Au fil des années, plusieurs techniques ont été mise en place afin d’augmenter la sécurité des applications. L’une d’elles est la gestion de la mémoire. J’ai expliqué que chaque zone de mémoire possédait une adresse. Auparavant, la mémoire était rempli au fur et à la mesure de façon linéaire. Il était donc possible d’aller fouiller dans la mémoire d’une autre application. Si je sais que le système d’exploitation est chargé en premier et qu’il se trouve à l’adresse XYZ, je peux jeter un œil aux données stockées en mémoire. Comme des mots de passe. Deux techniques ont été mise en place pour empêcher cela : seule la zone de mémoire allouée à une application donnée est accessible à celle-ci, et le chargement des données en mémoire se fait de façon aléatoire plutôt que linéaire. Autrement dit, la première page du texte que vous écrivez peut se retrouver à l’adresse 224, la seconde à l’adresse 512 et la troisième à l’adresse 128. Puis, seul le traitement de texte peut accéder à ces adresses. Enfin, dans un système d’exploitation sécuritaire.
Meltdown
Des chercheurs se sont rendus compte qu’il y avait une faille dans les processeurs implantant ces mécanismes. En exploitant cette faille, il devenait possible d’accéder n’importe quelle zone de mémoire. La faille fut baptisée Meltdown. Le problème est d’autant plus grave qu’il se trouve dans le code du processeur. Donc, peu importe le système d’exploitation que vous employez, si le code se trouvant dans votre n’est pas corrigé, la faille peut être exploité. D’où qu’Intel offre un correctif. Intel n’est pas le seul fabricant affecté par le problème : AMD, ARM et d’autres le sont également à des degrés divers. Donc, non seulement votre portable est affecté, mais également votre tablette et votre téléphone. J’ai testé les ordinateurs que j’avais à ma disposition : ils souffraient presque tous du problème. Ce n’est qu’un ordinateur ayant une architecture moins courante qui n’en souffrait pas. Je parlais d’être différent, c’est cela.
Spectre
Un autre problème tout aussi grave fut découvert par ces mêmes chercheurs. La faille fut baptisée Spectre. Cette fois, elle est causée par une erreur de jugement. Afin de gagner en vitesse, plusieurs cœurs ont été intégrés dans un processeur. Ce qui permet d’exécuter des instructions en parallèle. Mais entraîne aussi son lot de problèmes. Par exemple, si l’instruction C dépend du résultat de l’instruction A et B. Afin de gagner en vitesse, les processeurs gagent d’une certaine manière que le résultat d’une instruction se trouvera à une adresse donnée en mémoire et prépare l’instruction suivante en fonction de cette adresse. Et il est possible de berner un processeur dans cette optimisation.
Comment corriger le
problème ?
Les fabricants ont été avertis. Ils ont vérifié le problème et publier des correctifs. Toutefois, il semble que ces mises à jour ne font que diminuer le risque, en autant que les applications soient conçues en ce sens.
Les fabricants de
processeurs ont fait une boulette. Le véritable correctif entraîne
une perte de performance de l’ordre de 25%. Ce ne sera pas avant une
prochaine génération de processeurs, mieux conçus, que le problème
disparaîtra.
Linus Torvald, le créateur de Linux, a fait une montée de lait contre Intel. Mais la compagnie semble s’en ficher. Au point où je me demande si l’erreur n’était pas voulu, offrant une porte aux agences de renseignement sur à peu près tous les systèmes. Cela ne me surprendrait même pas.
Quelqu’un a écrit un script bash permettant de vérifier la présence ou non du problème. C’est ainsi que j’ai pu vérifier mon ordinateur. Le script est disponible sur github. Il s’exécute dans un terminal. La personne a aussi écrit de bons articles, en anglais toutefois, sur la procédure à effectuer pour appliquer le «correctif» d’Intel. Si vous avez un vieux processeur, le problème n’est pas présent. Pour le reste, il à peu près assuré que le problème est présent.
Je vais expliquer
d’abord pourquoi je n’utilise pas Windows ou Android. La chose qui me
rend furieux est que mon ordinateur me traite comme un imbécile. Or,
c’est précisément ce que font Windows et Android. Faire des mises à
jour ou des optimisations à mon insu, non merci. Ne pas savoir ce
que fait le système ou pouvoir l’arranger comme je veux, non merci.
Puis, je suis heureux dans un terminal. Bref, utiliser l’un ou
l’autre me donne des boutons et j’évite le plus possible.
Disons que vous êtes
un virus de la grippe. Si vous ciblez uniquement les roux aux yeux
verts, bien vous n’allez pas faire long feu. Le mieux est de cibler
la population la plus large. Il en va de même avec quelqu’un qui
vise à pirater : il ciblera les systèmes les plus utilisés, soit
Windows et Android. Contrairement à avant, les systèmes d’Apple
deviennent de plus en plus intéressants comme cible également, car
ils sont de plus en plus répandus.
Mais si quelqu’un veut pénétrer un réseau, il va cibler ce qui est répandu et mal sécurisé. Comme les routeurs fournis par les fournisseurs de service internet (Bell, Videotron, etc.). Il y en a des millions et les gens ignorent comment ils fonctionnent. Ils ne sont pas nécessairement à jour ou sécuritaires. Je vais revenir sur le sujet des routeurs plus en profondeur dans un autre article.
Il en va de même
avec les bidules dit «intelligents» comme les trucs qu’Amazon
(Alexa) et d’autres vendent. Ils visent un large public qui ne
comprend pas nécessairement comment ces trucs fonctionnent, ni
qu’ils ouvrent une porte béante dans leur intimité. Une aubaine
pour un esprit malfaisant.
Bref, dans un monde
plutôt homogène, vous gagner à être différent. Ne pas utiliser
la même chose que tout le monde ou de la même manière. Le jour où
il y a un problème, vous risquez moins d’être pris au dépourvu.
Dans notre ère
technologique, soyez un roux aux yeux verts. Vous aurez moins de
chance de tomber malade à la prochaine épidémie.
Le standard USB (pour Universal Serial Bus) a été développé pour remplacer différents ports qui se trouvaient sur les anciens PC et Mac, comme le port série, le port parallèle et l’Apple Desktop Bus. Il est employé pour brancher différents périphériques à un ordinateur, comme une imprimante ou un appareil photo.
Prise USB. Le logo à gauche identifie l’USB.
Un des usages les plus courants est la clef USB, une puce de mémoire non-volatile monté sur un petit circuit électronique doté d’une prise USB et déposé dans un boîtier en plastique. La taille, la forme et la capacité de ces clefs est très variable. La clef doit être formatée afin d’être utilisable par un ordinateur. Outre le transfert de données, le standard prévoit une alimentation électrique. Un des contact transporte 5V à 1A. C’est ce qui a permis la réalisation de clef USB. Elles sont alimentées par la prise USB de l’ordinateur. Il est possible aussi de recharger des périphériques comme un iPod ou un téléphone. Il est même possible d’alimenter un circuit électronique comme un Raspberry Pi. Le voltage et l’ampérage état limités, il faut parfois combiner 2 prises pour alimenter un périphérique plus énergivore, comme un disque dur externe.
Connecteur
Standard
Le connecteur le plus courant ressemble à un bec de canard avec deux trous sur le dessus. Il n’est pas inversible et doit être inséré dans un certain sens. Le logo indique généralement le dessus. Note: certains constructeurs installent les prises la tête en bas. Il faut alors mettre le logo vers le bas.
Connecteur USB standard.
Mini USB
Certains appareils, comme des appareils photos, utilisent des prises plus petites, que l’on appelle mini USB. Le haut est plus large que le bas.
Connecteur mini USBConnecteur mini USB vu de côté
Micro USB
La prise mini USB était encore trop grosse au goût de certains fabricants. Ils ont donc opté pour une prise encore plus petite, la micro USB. Le dessus est plus large que le dessous. Elle possède aussi des encoches pour assurer qu’elle reste bien en place.
Connecteur micro USBConnecteur micro USB vu de côté
Non standard
Certains fabricants utilisent aussi des prises propriétaires, qui ne respectent pas le standard.
Exemple de prise non standard
Version
Comme tout bon
standard, l’USB a évolué dans le temps.
1.1
La première version
vraiment utilisée remonte à 1998. Elle équippait entre autre les
premiers iMac et iBook. La vitesse de transfert était de 12
Mbit/seconde.
2.0
La seconde version a
vu le jour en 2001. Elle permet des vitesses de transfert de 480
Mbit/seconde. C’est la version la plus utilisée.
3.0
La troisième version a vu le jour en . Elle se reconnaît de la version 2.0 par le fait que les prises sont bleues au lieu de noires.
Connecteur bleu USB 3.0
Elle offre des vitesses de transfert de 4 Gbit/seconde.
3.1 (USB-C)
La dernière version est la 3.1 aussi appelée USB-C. Elle emploie un autre type de connecteur, l’USB Type C, qui est inversible. Il n’y a plus de haut et de bas. Puisque c’est une nouvelle version, elle est compatible avec l’ancienne. Il faut toutefois un adaptateur pour pouvoir connecter une clef USB par exemple à un USB-C.
Exemple d’adaptateur USB à USB-C
La version 3.1 offre des vitesses de transfert de 10 Gbit/seconde.
Une carte SD (pour Secure Digital) est une carte en plastique contenant une puce de mémoire non-volatile. Elle est souvent employée dans les appareil photos pour enregistrer les photos prises. Jusqu’à récemment, les ordinateurs possédaient souvent une fente pour insérer une telle carte et faciliter ainsi le transfert de documents. La tendance actuelle est d’éliminer cette fente. Il existe également des adaptateurs USB pour brancher une carte SD à un ordinateur.
Exemple de Carte SD.
Sur la carte, le
chiffre encerclé indique la vitesse. Plus il est haut, plus la
vitesse de lecture et d’écriture en mémoire est rapide. Le prix va
à l’avenant.
Certaine carte
possède un mécanisme pour bloquer l’écriture, généralement un
petit bouton blanc que l’on glisse en position «Lock» pour empêcher
l’écriture.
Avec la
miniaturisation, le format de la carte est devenu trop grand. Une
autre carte fut mise au point, la microSD.
Carte MicroSD (à doite) avec un adaptateur carte SD pleine grandeur
Elle est souvent
vendu avec un adaptateur en plastique correspondant à une carte
pleine grandeur.
Fente lecteur carte SD sur un ordinateur
Outre dans les
appareils photo, la carte SD est employée avec certaines tablettes
et téléphones, des liseuses électroniques, des enregistreuses, des
systèmes comme le Raspberry Pi et toute sorte d’appareils
électroniques.
La carte SD peut
également être employée comme l’est une Clef USB : pour stocker ou
transférer des fichiers.
La vitesse de transfert selon les spécifications est de 12,5 Mio/s pour le standard 1.1 et de 25 Mio/s pour le standard 2.0. Voir l’article octet pour avoir une idée de ce que ces mesures représentent.
Afin de pouvoir
utiliser une mémoire non-volatile, comme un disque dur ou une clef
USB, le système d’exploitation doit lui donner une certaine
structure afin qu’il puisse retrouver les fichiers. C’est un peu
comme si vous aviez une page blanche. Vous pouvez écrire librement,
mais ce sera mieux si le papier est ligné. Et si vous voulez faire
des graphiques, vous risquez de préférer du papier quadrillé.
Le système d’exploitation va donc demander que le disque soit formaté, ou initialisé selon les systèmes. Il existe différents types d’organisations comme :
Lorsque vous formatez un disque ou une clef USB, vous perdez tout ce qu’il ou elle contenait. Certains systèmes d’exploitation sont plus ouverts que d’autres. Par exemple, Linux peut lire une clef USB formaté sous Windows ou Mac OS. Par contre, Windows aura de la difficulté à lire une clef USB formaté pour un Mac ou Linux.
Si une section de mémoire fait défaut, le processus de formatage risque de l’identifier comme problématique et ne l’utilisera pas (ce qui peut être identifié comme un bad sector dans certains outils. Une chose est certaine : un jour ou l’autre le disque ou la clef cessera de fonctionner. D’où l’importance d’avoir des copies de sécurité (j’y reviendrai).
Le firmware
va donc rechercher un système d’exploitation au démarrage et le
lancer. Le système d’exploitation est responsable de gérer des
trucs comme l’écriture de fichiers, l’exécution d’applications,
l’échange sur un réseau, etc. Les applications, comme LibreOffice
ou Chrome, sont écrites pour un système d’exploitation en
particulier. Une application développée pour un Mac ne fonctionnera
pas sous Windows par exemple.
Voici quelques
systèmes d’exploitation sur un ordinateur :
Je vais revenir sur
certains d’entre eux. L’important est de savoir lequel vous utilisez
pour savoir quelles applications vous pouvez utilisez ou si un
périphérique, comme une imprimante, est compatible avec votre
système.