Prise en main des systèmes Linux et Windows
Prise en main des systèmes Linux et Windows
Page 1 sur 40
Table des matières
Chapitre 4 : Prise en main des systèmes d’exploitation Linux et Windows ............................ 2
I. Protection .............................................................................................................................. 36
Page 2 sur 40
1) Commandes de bases
Objectifs
Après l’étude de cette partie, l’étudiant sera capable de connaîttre les principales commandes en
mode texte du système d’exploitation Linux. Ce qui lui permet de copier, lister, détruire des
fichiers, etc. Il connaitra aussi d’éditer un fichier avec l’éditeur standard vi.
Page 3 sur 40
/var/log/ Répertoire contenant les journaux de bord
Les chemins
Un chemin indique, pour une application, l’emplacement d’un fichier dans 1’arborescence.
Il existe 2 méthodes : indiquer un chemin absolu ou indiquer un chemin relatif.
− Chemin absolu : un chemin absolu part de la racine « / » et commence par « / ». Par
exemple : /var/log/messages. Le fichier messages est dans le répertoire log, qui lui-même
est dans le répertoire var, qui lui-même est directement sous la racine.
− Chemin relatif : un chemin relatif indique l’emplacement d’un fichier à partir du
répertoire courant.
Les commandes
tree Affiche une arborescence de fichiers sous forme d’arbre. find
Recherche des fichiers dans une arborescence.
Page 4 sur 40
ls -R Affiche le contenu d’une arborescence de fichiers.
Les commandes
Les commandes de gestion de fichiers et de répertoires sont les suivantes :
ls Liste les fichiers d’un répertoire, affiche les attributs d’un fichier.
Page 5 sur 40
Cp Copie de fichier.
rm Supprime un fichier.
mv Déplace ou renomme un fichier.
ln Crée un lien.
pwd Affiche le répertoire courant.
cd Change de répertoire.
mkdir Crée un répertoire.
find Recherche un fichier.
cat, more, less Affichent le contenu d’un fichier.
file Affiche le type d’un fichier.
Utilitaires
grep Recherche de chaînes dans un fichier.
sort Tri d’un fichier.
tail Affiche la fin d’un fichier.
head Affiche le début d’un fichier.
wc Affiche le nombre de lignes, de mots et de caractères d’un fichier.
L’éditeur vi
Les commandes fondamentales de l’éditeur vi sont les suivantes :
ou h, j, k, 1 Déplacement dans les quatre
directions. i Insertion avant le curseur. a
Insertion après le curseur.
J Jointure de la ligne courante et de la ligne suivante.
X Suppression du caractère courant.
dd Suppression de la ligne courante.
u Annule la dernière modification.
:q! Abandon.
:wq Sauvegarde et sortie de l’éditeur.
Remarques :
o Les commandes d’insertion (a, i) basculent l’utilisateur dans le mode insertion. On sort
de ce mode par la touche d’échappement (Escape).
o Les commandes :wq et :q! apparaissent en bas de l’écran. Il faut les valider.
Page 6 sur 40
2) Structure du système d’exploitation Linux
Cette partie est une introduction générale à Linux et à son utilisation. Pour l’essentiel, ces
informations s’appliquent à toutes les variantes d’UNIX, à quelques légères différences près.
UNIX a toujours été un système interactif conçu pour gérer plusieurs processus et plusieurs
utilisateurs simultanément. Dans ce cadre, il est fréquent de voir un grand nombre de
programmeurs collaborer à la réalisation d’un système complexe. UNIX possède ainsi un grand
nombre de caractéristiques permettant le travail collaboratif et le partage d’informations de
manière contrôlée. Cette différence se retrouve à travers tous les aspects d’UNIX. Il est
parfaitement naturel que Linux ait hérité de bon nombre de ces objectifs, même si la première
version était destinée aux ordinateurs personnels.
2.2. Le shell
Bien que les systèmes Linux possèdent une interface utilisateur graphique, la plupart des
programmeurs et des utilisateurs avancés préfèrent encore une interface en ligne de commande,
appelée shell. Ils lancent souvent une ou plusieurs fenêtres de shell à partir de l’interface
utilisateur graphique et travaillent directement dedans. L’interface shell en ligne de commande
est plus performante, puissante et facilement extensible et n’oblige pas l’utilisateur à recourir
incessamment à sa souris. Nous décrivons brièvement ci-dessous le shell Bash (bash). Il est en
grande partie élaboré à partir du shell UNIX original, appelé shell de Bourne. Son nom est
d’ailleurs un acronyme de Bourne Again SHell. De nombreux autres shells sont également
utilisés (csh, ksh, bash, etc.), mais bash est le shell par défaut dans la plupart des systèmes Linux.
Quand le shell démarre, après une phase d’initialisation, il affiche un signe d’invite (le prompt),
souvent un « $ » ou un « % », puis attend l’entrée d’une commande.
Quand l’utilisateur entre sa commande, le shell en extrait le premier mot et le considère comme
le nom d’une commande. Il recherche donc le programme associé et, s’il le trouve, l’exécute. Il
s’interrompt alors jusqu’à ce que le programme se termine. Il attend ensuite l’entrée d’une
nouvelle commande. Ce qu’il faut retenir ici, c’est que le shell est en fait un programme
utilisateur ordinaire. Tout ce qu’il requiert est la possibilité de lire depuis le clavier et d’écrire
sur l’écran, ainsi que d’exécuter d’autres programmes.
Page 7 sur 40
[Link] structure du noyau
On peut voir un système Linux comme une pyramide. La base est constituée du matériel (UC,
mémoire, disques, moniteur et clavier, etc.). Juste au-dessus, on trouve le système d’exploitation.
Son rôle est de gérer le matériel et de fournir une interface d’appels système aux programmes.
Ces appels système permettent aux programmes utilisateur de créer et de gérer les processus, les
fichiers et autres ressources.
Examinons maintenant plus en détail le noyau comme ensemble avant d’en étudier les
différentes parties, tels l’ordonnancement des processus et le système de fichiers.
Le noyau se trouve directement au-dessus du matériel ; il permet des interactions avec les
périphériques d’E/S et l’unité de gestion de la mémoire, et contrôle l’accès à l’UC de ces entités.
Comme le montre la figure 4.5, il contient au plus bas niveau des gestionnaires d’interruption,
qui constituent le moyen principal d’interaction avec les périphériques et le mécanisme de
répartition de bas niveau. Cette répartition intervient lorsqu’une interruption se produit. Le code
de bas niveau à cet endroit arrête le processus actif, enregistre son état dans les structures du
processus noyau et démarre le pilote approprié.
Ensuite, nous divisons les différents sous-systèmes noyau en trois composants principaux. Le
composant d’E/S à la figure 4.5 contient tous les éléments noyau chargés d’interagir avec les
périphériques et de réaliser des opérations d’E/S de stockage ou en réseau. Au niveau supérieur,
les opérations d’E/S sont toutes intégrées dans une couche de système de fichiers virtuel.
Page 8 sur 40
Autrement dit, au niveau supérieur, la réalisation d’une opération de lecture d’un fichier, qu’elle
soit en mémoire ou sur disque, équivaut à réaliser une opération de lecture pour récupérer un
caractère d’une entrée terminal. Au niveau le plus bas, toutes les opérations d’E/S passent par un
pilote de périphérique. Tout périphérique UNIX est soit en mode caractère, soit en mode bloc, la
différence principale étant que l’accès direct et les accès aléatoires n’existent que pour les
seconds. Techniquement, les périphériques réseau sont de type caractère, mais leur gestion est si
particulière qu’il est plus judicieux de les mettre à part, comme l’indique la figure 4.5.
Au-dessus du niveau des pilotes de périphérique, le code noyau est différent pour chaque type de
périphérique. Des périphériques en mode caractère peuvent être utilisés de deux façons. Certains
programmes comme les éditeurs (vi ou emacs, par exemple) ont besoin de chaque frappe de
touche dès qu’elle est effectuée. Les E/S qui rendent ceci possible sont dites en mode « raw »
(cru).
D’autres, comme le shell, sont orientés ligne : ils permettent à l’utilisateur d’éditer la ligne de
commande avant de l’envoyer au programme en frappant ENTER. Dans ce cas, le flux de
caractères du périphérique de terminal est passé dans ce que l’on appelle une « discipline de
ligne », et une mise en forme appropriée est appliquée. Le logiciel réseau est en général
modulaire et supporte de multiples périphériques et protocoles. La couche au-dessus des pilotes
réseau gère une sorte de routage, s’assurant que le bon paquet est acheminé au bon périphérique
ou gestionnaire de protocole. La plupart des systèmes Linux possèdent la totalité des
fonctionnalités d’un routeur matériel dans le noyau, même si les performances sont inférieures à
celles des routeurs matériels.
Au-dessus du code de routage, on trouve la pile de protocoles
Page 9 sur 40
Figure 4.5 Structure du noyau Linux
elle-même, qui contient toujours IP et TCP, mais aussi de nombreux autres protocoles.
Tout en haut du bloc de la colonne des périphériques de blocs se trouvent les systèmes de
fichiers. Linux peut avoir et possède de fait plusieurs systèmes de fichiers qui opèrent en même
temps. Afin de masquer les épouvantables différences architecturales des différents
périphériques matériels de l’implémentation des systèmes de fichiers, une couche de
périphérique de blocs générique fournit une abstraction utilisée par tous les systèmes de fichiers.
Les deux autres composants clés du noyau Linux apparaissent à droite à la figure 4.5. Ils sont
chargés des tâches de gestion de la mémoire et des processus.
En plus des composants noyau statiques, Linux supporte des modules qui peuvent être chargés
dynamiquement. On peut utiliser ces modules pour ajouter ou remplacer les pilotes de
périphérique, systèmes de fichiers, composants réseau et aux codes noyau par défaut. Les
modules ne sont pas présentés à la figure 4.5.
Page 10 sur 40
Enfin, tout en haut se trouve l’interface d’appels système noyau. Tous les appels système
conduisent à cet endroit, où un déroutement bascule l’exécution du mode utilisateur vers le mode
noyau protégé et passe le contrôle à l’un des composants noyau décrits précédemment.
Un processus Linux ressemble à un iceberg : ce qu’on voit est la partie émergée, mais il existe
une plus grande partie sous le niveau de l’eau. Chaque processus a une composante utilisateur
qui exécute le programme. Cependant, quand l’un des threads fait un appel système, il bascule en
mode noyau, avec une image mémoire différente et un accès complet à l’ensemble des
ressources de la machine. Il s’agit bien du même thread, mais avec davantage de droits et une
pile noyau (et un compteur ordinal associé) dédiée. C’est important car un appel système peut se
bloquer en cours de route, par exemple sur l’attente d’une opération sur disque. Le compteur et
les registres doivent alors être sauvegardés pour que le thread puisse être plus tard redémarré en
mode noyau.
Le noyau Linux représente de manière interne les processus sous forme de tâches à l’aide de la
structure task_struct. Contrairement aux autres systèmes d’exploitation qui opèrent une
distinction entre processus, processus léger et thread, Linux utilise la structure de tâche pour
représenter tout contexte d’exécution.
Pour chaque processus réside en mémoire, à tout moment, un descripteur de processus de type
task_struct. Il contient les informations vitales requises pour la gestion noyau de tous les
processus, dont les paramètres d’ordonnancement, la liste des descripteurs de fichiers ouverts,
etc. Le descripteur de processus ainsi que la mémoire pour la pile de mode noyau pour le
processus sont créés au moment de la création du processus.
Pour la compatibilité avec les autres systèmes UNIX, Linux identifie les processus à l’aide du
PID (Process Identifier, identifiant de processus). Le noyau organise tous les processus dans une
liste doublement chaînée. En plus de l’accès aux descripteurs de processus par le biais des listes
chaînées, il est possible de mapper le PID sur l’adresse de la structure de tâche de sorte que les
informations de processus deviennent immédiatement accessibles.
Les informations contenues dans le descripteur de processus se rangent dans les catégories
générales suivantes :
Page 11 sur 40
1. Les paramètres d’ordonnancement. Priorité du processus, temps UC récemment
consommé, temps récemment passé à dormir. Ils servent à déterminer le prochain
processus à exécuter.
2. L’image mémoire. Pointeurs sur les segments de code (text), de données et de pile du
programme et, si la pagination existe, sur les tables des pages. Si le segment de code est
partagé, le pointeur adresse la table partagée. Quand le processus n’est pas en mémoire,
on trouve également des informations permettant d’en retrouver les éléments sur le
disque.
3. Les signaux. Des masques indiquent quels signaux sont ignorés, attrapés,
temporairement bloqués et en instance d’émission par le processus.
4. Les registres. Quand un déroutement provoque un basculement en mode noyau, les
valeurs des registres y sont stockées.
5. L’état de l’appel système. L’information concernant l’appel système en cours, y
compris ses paramètres et le résultat.
6. La table des descripteurs de fichiers. Quand un appel système utilisant un descripteur
de fichier survient, ce descripteur sert d’indice dans cette table pour trouver la structure
de données mémoire (i-nodé) relative au fichier concerné.
7. L’accounting. Un pointeur sur une table contenant les temps UC en mode utilisateur et
en mode noyau consommés par le processus. Certains systèmes définissent également ici
une limite pour le temps UC consommable par un processus, la taille maximale de sa
pile, le nombre de cadres de pages qu’il peut utiliser, etc.
8. La pile noyau. La pile utilisée par le processus lorsqu’il s’exécute en mode noyau.
9. Le reste. L’état courant du processus, l’événement éventuel sur lequel il attend, le temps
au bout duquel l’horloge d’alarme aura terminé, le PID du processus, celui de son parent
et l’identification du propriétaire et du groupe.
Si on garde à l’esprit l’utilisation de ces tables, il est facile d’expliquer la création de processus
sous Linux.
Le mécanisme de création d’un nouveau processus est ainsi relativement simple. Un nouveau
descripteur de processus et un contexte mémoire sont créés pour le fils et renseignés
principalement par le parent. Le fils se voit attribuer un PID, sa mémoire est initialisée et il
Page 12 sur 40
partage l’accès aux fichiers de son parent. Ses registres sont enfin initialisés, il est alors prêt à
s’exécuter.
Quand un fork 1 est exécuté, le processus appelant est basculé en mode noyau et crée une
structure de tâche et quelques autres structures de données associées, comme la pile de mode
noyau et une structure threadjnfo. Cette structure est allouée à un décalage fixe à partir de la fin
de pile du processus et contient quelques paramètres de processus, ainsi que l’adresse du
descripteur de processus. En stockant l’adresse du descripteur de processus à un emplacement
fixe, Linux n’a besoin que de quelques opérations efficaces pour localiser la structure de tâche
d’un processus en cours d’exécution.
Linux définit aussi les champs dans la structure ta$k_struct de manière à pointer sur le processus
précédent/suivant correspondant dans le tableau des tâches.
En principe, il doit maintenant allouer de la mémoire pour les données et segments de pile de
l’enfant et créer des copies exactes des segments du parent, car la sémantique de fork précise que
le parent et le fils ne partagent pas de mémoire commune. Le segment suivant peut être soit
copié, soit partagé parce qu’il est en lecture seule. À ce stade, l’enfant est prêt à être exécuté.
Cependant, la copie en mémoire est une opération coûteuse, et tous les systèmes Linux modernes
trichent. Ils donnent au fils ses propres tables des pages, mais les font pointer sur les pages du
parent après les avoir mises en lecture seule. Lors d’une tentative d’écriture sur une page, une
faute de protection se déclenche. Le noyau alloue alors une copie (en lecture/écriture) de la page
pour le fils. Ainsi, seules les pages modifiées par le processus enfant sont réellement dupliquées.
Ce mécanisme est connu sous le nom de copy-on-write (copie à l’écriture seulement). Il présente
l’avantage supplémentaire de ne pas nécessiter deux exemplaires du programme en mémoire et
d’économiser ainsi de la RAM.
1
La fonction fork fait partie des appels système standard d'UNIX. Cette fonction permet à un processus de
donner naissance à un nouveau processus qui est sa copie conforme, par exemple en vue de réaliser un second
traitement parallèlement au premier.
Page 13 sur 40
Après le démarrage du processus enfant, le code (une copie du shell) lance un exec avec le nom
de la commande comme paramètre. Le noyau trouve alors et vérifie le fichier exécutable, copie
les paramètres et l’environnement, et libère l’espace d’adressage antérieur ainsi que sa table des
pages.
Le nouvel espace d’adressage doit alors être créé et initialisé. Si le système supporte les fichiers
mappés, comme Linux et d’autres systèmes UNIX, les nouvelles tables des pages sont
initialisées pour indiquer qu’aucune page n’est en mémoire, à l’exception possible d’une page de
pile, mais que l’espace d’adressage est une copie du fichier exécutable sur disque.
Quand le nouveau processus démarre, il déclenche immédiatement un défaut de page, qui charge
en mémoire la première page de code. Ainsi, nul besoin de charger des pages à l’avance, les
programmes peuvent démarrer plus rapidement et ne charger (par défaut de
page) que les pages dont ils ont effectivement besoin (cette stratégie correspond à la pagination à
la demande sous sa forme la plus pure, telle qu’elle est expliquée au chapitre 3). Enfin, les
paramètres et l’environnement sont transmis à la nouvelle pile, les signaux et les registres
réinitialisés. La nouvelle commande peut alors s’exécuter.
La figure 4.3 illustre les étapes décrites précédemment par le biais de l’exemple suivant : un
utilisateur tape une commande 1s sur le terminal, le shell crée un nouveau processus en
produisant un clone de lui-même avec fork. Le nouveau shell appelle ensuite exec pour recouvrir
sa mémoire avec le contenu du fichier exécutable 1s.
Page 14 sur 40
4) Gestion des fichiers
4.1. L’Arborescence
Le système de fichiers constitue un élément clé du système Linux. C’est encore à maints
égards une des grandes forces de Linux. Vu par l’utilisateur, le système de fichiers est organisé
en une structure arborescente dont les nœuds sont des répertoires et les feuilles des fichiers
ordinaires.
Les fichiers sont des récipients contenant des données. Pour le noyau du système, ils ne
contiennent qu’une suite d’octets plus ou moins longue. Linux en lui–même ne connaît ni
enregistrement ni structure de fichier. C’est aux programmes d’application de les implanter et
de les gérer. Le système Linux ne connaît que trois types de fichiers :
● Les fichiers ordinaires (regular files). Ils servent à mémoriser les programmes et les
données des utilisateurs et du système.
● Les fichiers répertoires ou répertoires (directories). Chaque répertoire contient la liste
et la référence des fichiers placés sous son contrôle et la référence du répertoire dont il
dépend (répertoire père).
● Les fichiers spéciaux. Ils désignent les périphériques, les tubes ou autres supports de
communication interprocessus. Les fichiers spéciaux associés aux périphériques peuvent
être caractères (terminaux) ou blocs (disque) ; les entrées/sorties (E/S) se font soit
caractère par caractère, soit bloc par bloc, un bloc étant composé de n caractères (512,
1024 ou 2048).
L’extension du système de fichiers aux périphériques constitue une des grandes
particularités de Linux. Cela permet à un utilisateur de diriger les données produites par son
application vers un fichier ou un périphérique. Autre conséquence, les noms des fichiers et des
périphériques obéissent à la même syntaxe et l’accès aux périphériques est contrôlé par le
mécanisme de protection des fichiers.
Le système de fichiers est organisé en une seule arborescence logique. Cet arbre est composé
de répertoires qui contiennent eux–mêmes d’autres répertoires, ou des fichiers.
Page 15 sur 40
caractères (le point ., le tiret –, le souligné ). Linux autorise jusqu’à 255 caractères pour le
nom du fichier. La longueur minimum est de un caractère.
Les caractères spéciaux suivants sont à proscrire absolument :
Page 16 sur 40
Il permet d’accéder à un fichier quelconque dans l’arborescence du système de fichiers. Il est
composé d’une suite de noms de répertoires séparés par le caractère /. Il commence toujours
par le caractère / qui désigne le répertoire racine et se termine par le nom du fichier que l’on
veut atteindre.
La longueur du chemin d’accès absolu d’un fichier est limitée à 1024 caractères.
Exemples
/var/spool/mail/xstra1
/home/xstra/essai
Remarque
Tout répertoire contient au moins deux entrées :
. § représente le répertoire lui–même.
.. § représente le répertoire père.
Page 17 sur 40
4.4. La manipulation des répertoires
Après l’ouverture de sa session, l’utilisateur se trouve sous le contrôle d’un interpréteur de commandes.
Celui–ci est prêt à lire, analyser et éventuellement exécuter les commandes qui lui sont soumises.
Chaque commande se compose d’un ensemble de champs séparés par un ou plusieurs blancs et se
termine par une fin de ligne (<return> ou “ line feed ”). Le premier de ces champs est obligatoirement un
nom de commande. Les autres champs définissent des paramètres dont l’interprétation dépend de la
commande considérée. Nous reviendrons ultérieurement sur cette syntaxe.
Pour bien organiser son espace de travail, il est souvent utile de grouper ses fichiers par centre d’intérêt
en créant des sous–répertoires. Les principales commandes pour gérer les répertoires sont :
Page 18 sur 40
[Link] manipulation des fichiers
Quel que soit le travail que vous allez faire sur la machine, vous aurez à effectuer certaines
tâches élémentaires telles que lister le contenu d’un répertoire, copier, effacer, ou afficher des
fichiers. Nous présentons ci–dessous brièvement les commandes qui les réalisent :
Page 19 sur 40
5) Gestion de la mémoire
Le modèle mémoire de Linux est simple, ce qui permet des programmes portables et
l’implémentation de Linux sur des plates-formes possédant des MMU (Memory Management
Unit) fort différentes, allant de presque rien (le PC IBM originel) à du matériel de pagination
sophistiqué. C’est l’un des aspects de conception qui a le moins changé depuis l’origine. Il a bien
fonctionné et donc nécessité peu de modifications.
Chaque processus Linux sur une machine à 32 bits possède généralement un espace d’adressage
virtuel de 3 Go pour lui-même, le gigaoctet restant étant réservé pour ses tables des pages et
autres données noyau. Ce gigaoctet est caché lors du fonctionnement en mode utilisateur ; il ne
devient utilisable que lors d’un basculement en mode noyau. La mémoire noyau réside
généralement dans la mémoire physique du bas mais est mappée dans le gigaoctet du haut de
Page 20 sur 40
chaque espace d’adressage virtuel, entre les adresses OxCOOOOOOO et OxFFFFFFFF (3-4
Go). L’espace d’adressage est créé lors de la création du processus et recouvert lors d’un appel à
exec. Pour permettre à plusieurs processus de partager la mémoire physique sous-jacente, Linux
surveille l’utilisation de la mémoire physique, alloue plus de mémoire que n’en demandent les
processus utilisateur ou les composants noyau, mappe de manière dynamique des portions de la
mémoire physique dans l’espace d’adressage d’autres processus et importe ou exporte de la
mémoire des exécutables, des fichiers et d’autres informations d’état de programmes en fonction
des besoins, afin d’utiliser efficacement les ressources de la plateforme et de garantir le progrès
de l’exécution.
À cause des limitations propres au matériel sur de nombreux systèmes, il n’est pas possible de
traiter toute la mémoire physique de la même manière, notamment en ce qui concerne les E/S et
la mémoire virtuelle. Linux distingue trois zones mémoire :
1. ZONE„DMA - des pages qui peuvent être utilisées pour les opérations de DMA.2
2. ZONE„NORMAL - des pages normales, mappées normalement.
3. ZONE_HIGHMEM - des pages avec des adresses en mémoire haute, qui ne sont
pas mappées de manière permanente.
Les limites exactes et la disposition des zones mémoire dépendent de l’architecture. Sur le
matériel de type x86, certains périphériques ne peuvent réaliser d’opération de DMA que dans
les 16 premiers mégaoctets d’espace d’adressage, en raison de quoi ZONE-DMA se trouve dans
la plage allant de 0 à 16 Mo. En outre, le matériel ne peut directement mapper des adresses
mémoire audessus de 896 Mo : ZONE H1GHMEM correspond alors à tout ce qui dépasse ce
seuil. ZONE_NORMAL correspond à la zone intermédiaire. En conséquence, sur les plates-
formes x86, les 896 premiers mégaoctets d’espace d’adressage Linux sont mappés directement,
alors que les 128 mégaoctets d’espace d’adressage noyau sont utilisés pour accéder aux zones de
mémoire haute. Le noyau conserve une structure zone pour chacune de ces trois zones et peut
réaliser des allocations mémoire séparément pour les trois zones.
2
L'accès direct à la mémoire (DMA, Direct Memory Access) est une fonctionnalité de certaines architectures
de bus informatiques qui permet l'envoi direct de données d'un périphérique connecté (par exemple un lecteur de
disque) vers la mémoire de la carte mère de l'ordinateur.
Page 21 sur 40
Il existe deux types d'utilisateurs sur le système :
• root : Login name du compte administrateur du système. L'utilisateur root à tous les
droits sur le système.
• tous les autres utilisateurs du système : utilisateurs créés par l'administrateur.
Il est possible de réunir des utilisateurs au sein d'un groupe ce qui simplifie la gestion des
utilisateurs en permettant l'attribution simultanée de droits à plusieurs utilisateurs.
Il faut ensuite créer le répertoire de connexion personnel de l'utilisateur (home directory dont
la spécification est ensuite inscrite par le système, lors de la connexion, dans la variable
#HOME), l'en rendre propriétaire (chown), attribuer le répertoire à un groupe, en général
celui auquel appartient l'utilisateur (chgrp) et le protéger (chmod 700).
La dernière étape consiste en la création des fichiers de configuration de l'environnement de
l'utilisateur. Les prototypes de ces fichiers pour un utilisateur travaillant sous Bourne Again
Shell (bash) se trouvent dans le répertoire /etc/skel. Il faut en faire une copie dans le
répertoire de connexion de l'utilisateur et effectuer les mêmes actions d'attribution et de
protection que pour le répertoire.
Page 22 sur 40
II. Prise en main des systèmes d’exploitation Windows
1) Commandes de bases
Il arrive cependant qu’on doive demander directement des services au système, sans passer par
un logiciel d’application : deux modes de communication existent alors :
• le mode graphique : il permet, grâce à une interface conviviale (fenêtres et autres objets
graphiques) , de faire appel aux principaux services du système et de répondre aux
besoins usuels (création de dossiers…), de la même manière que lorsque nous travaillons
avec les logiciels d’applications.
• le mode texte (console) : historiquement le premier, il permet d’appeler des services par
l’intermédiaire de commandes : une commande correspond au code d’appel d’un
programme du système qui fournit un service déterminé.
Chaque unité de stockage dispose d'un répertoire racine représenté par \ (a:\, c:\, ...).
L’utilisateur peut ensuite organiser, à partir de la racine, l’arborescence de ses répertoires pour
classer ses documents.
Le répertoire courant est celui dans lequel on se trouve (il est en général affiché dans le prompt
de l’invite de commande).
Un chemin représente la liste des répertoires qui faut parcourir, traverser, pour
atteindre un objet (fichier ou répertoire).
Page 23 sur 40
• relatif, dans ce cas, la description ne commence que depuis le répertoire courant,
relativement au répertoire courant ; par exemple, 2005\[Link] si le répertoire
courant est mes rapports.
Les commandes
Les arguments de la ligne de commandes sont des PARAMETRES variables fournis par
l’utilisateur et des OPTIONS (appelés également COMMUTATEURS) définies pour la
commande (se rapprocher de l’aide fournie par le système d’exploitation).
Par exemple, pour copier le fichier [Link] sur la disquette en vérifiant après la copie :
COPY [Link] a:
/V
Pour avoir plus d'informations sur une commande spécifique, et notamment ses paramètres,
entrez l’une des 2 commandes ci-dessous :
HELP nom_de_la_commande
ou bien :
Nom_de_la_commande /?
C:\>DIR /?
ou bien :
C:\>HELP DIR
Page 24 sur 40
La liste des noms des commandes est donnée par la commande : HELP.
ASSOC Affiche ou modifie les applications associées aux extensions de fichiers.
ASSOC .htm affiche le type d’application lancée quand on doubleclique sur un fichier ayant l’extension
htm (par exemple MozillaHTML)
Page 25 sur 40
COMP Compare les contenus de deux fichiers ou groupes de fichiers.
COMPACT Modifie ou affiche la compression des fichiers sur une partition NTFS.
CONVERT Convertit des volumes FAT en volumes NTFS. Vous ne pouvez pas convertir le lecteur en cours
d'utilisation.
COPY c:\temp\*.* c:\temp1 copie tous les fichiers de c:\temp vers temp1
COPY [Link] + [Link] + [Link] [Link] fusionne (concatène) les fichiers [Link], [Link]
[Link] dans le fichier [Link] COPY fic*.txt [Link] concatène les fichiers d’extension txt
commençant par fic dans un fichier [Link]
DIR /P affiche le contenu du répertoire courant page par page DIR *.doc affiche les fichiers du répertoire
courant ayant l’extension doc
DIR *.doc /S /P recherche et affiche page par page tous les fichiers ayant l’extension doc dans le répertoire
courant et ses sous-répertoires
DISKCOMP Compare les contenus de deux disquettes.
DOSKEY Modifie les lignes de commande ; rappelle des commandes Windows et permet de créer des macros.
FC Compare deux fichiers ou groupes de fichiers et affiche les différences entre eux.
FIND ‘’important’’ c:\temp\*[Link] recherche la chaîne de caractères ‘important’ dans les fichiers du
répertoire temp, dont l’extension est htm et dont le nom se termine par ‘1’ et affiche leur nom
Page 26 sur 40
FINDSTR Cherche des chaînes de caractères dans un ou plusieurs fichiers. (beaucoup plus puissant que FIND)
FOR Exécute une commande sur chaque fichier d'un groupe de fichiers.
FORMAT a: /V:volume1 formate une disquette et lui affecte le nom de volume volume1
FTYPE Affiche ou modifie les types de fichiers utilisés dans les associations d'extensions. Complémentaire de
ASSOC
FTYPE MozillaHTML affiche le nom du programme (le fichier .exe) lancé quand on double-clique
sur un fichier associé à MozillaHTML (cf ASSOC)
GOTO Poursuit l'exécution d'un fichier de commandes à une ligne identifiée par une étiquette.
HELP > [Link] affiche le contenu de l’aide, mais la redirection envoi ce texte dans le fichier [Link]
(efface les données éventuellement stockées dans [Link])
HELP DIR affiche le contenu de l’aide relative à la commande DIR
IF Effectue un traitement conditionnel dans un fichier de commandes.
MD Crée un répertoire.
TYPE [Link] | MORE affiche le contenu du fichier [Link] (résultat de la comme TYPE) écran
par écran
MOVE c:\temp\*.ppt c:\mesdoc\presentations déplace les fichiers dont l’extension est .PPT du
répertoire c:\temp vers le répertoire c:\mesdoc\presentations
Page 27 sur 40
PATH Affiche ou définit le chemin de recherche des fichiers exécutables.
PROMPT $P $G affiche le nom du répertoire courant suivi du caractère > comme invite de commande
(par défaut)
PROMPT $T $$ $G affiche l’heure, le caractère $ et le caractère > comme invite de commande
RD Supprime un répertoire.
RD nomrep supprime le répertoire nommé nomrep si celui-ci est vide RD nomrep /S supprime le
répertoire nommé nomrep après avoir supprimé son contenu
REM ceci est l’explication de type [Link] c’est simplement une remarque dans un fichier de
commande batch par exemple ; cela n’est pas du tout interprété par le système
REN Renomme un ou plusieurs fichiers. Le nouveau nom ne doit pas déjà exister dans le répertoire courant.
REN [Link] [Link] renomme le fichier [Link] en [Link] REN *.htm *.txt renomme tous
les fichiers ayant l’extension htm en positionnant changeant simplement l’extension : .htm devient .txt
RENAME Renomme un ou plusieurs fichiers. ( = REN )
REPLACE temp\[Link] temp1 prend les fichiers du répertoire temp qui sont aussi dans le
répertoire temp1 et les recopient dans temp1
RMDIR Supprime un répertoire. ( = RD)
SET affiche les variables systèmes ; celles-ci sont utilisables dans les fichiers de commande ; par
exemple, la variable nommée OS contient le nom du système d’exploitation ; la commande ECHO
%OS% affichera son contenu
SET maVariable=valeur déclare une variable nommée maVariable est lui affecte la valeur ‘valeur’
(dans les .BAT)
SETLOCAL Commence la localisation des changements de l'environnement dans un fichier de commandes.
SHIFT Modifie la position des paramètres remplaçables dans un fichier de commandes ; décale les paramètre
Page 28 sur 40
START Lance une fenêtre pour l'exécution du programme ou de la commande.
TITLE mon systeme affiche comme titre ‘mon systeme’ dans la fenêtre de l’invite de commande
XCOPY temp recup copie tous les fichiers du répertoire temp vers le répertoire recup ; (attention : si
recup n’existe pas, le système va vous demander si recup est un fichier ; si vous répondez oui, recup va
contenir le dernier des fichiers de temp)
XCOPY temp a : copie le contenu du répertoire temp sur la disquette, y compris les sous répertoires
Un processus est une application en cours d’exécution, quand on parle d’application, vous pensez
probablement aux programmes installés.
Windows étant un logiciel complexe, modulé, le système d’exploitation embarque ses propres
applications.
Il peut s’agit de fichiers systèmes qui sont là pour effectuer les opérations courantes de Windows,
comme gérer l’ouverture de session, gérer les fenêtres, le bureau etc.
Mais aussi parfois de tâche plus spécifique, comme les mises à jour Windows Update.
Ainsi Windows possède des dizaines et dizaines de processus systèmes.
Dans ce vaste monde qu’est Windows, il est parfois complexe pour les internautes de savoir si un
fichier est légitime ou malveillant. Parfois, sur les forums, les indications données sont
incorrectes.
Page 29 sur 40
Voici quelques explications, conseils et liste des principaux fichiers systèmes de Windows.
Emplacements des fichiers systèmes de Windows
Afin de semer le trouble, les noms de fichiers utilisés par les logiciels malveillants peuvent
reprendre celles d’applications connues ou de fichiers systèmes Windows.
3
Un cheval de Troie (ou Trojan Horse) est un type de logiciel malveillant qui est souvent masqué
comme un logiciel authentique.
Page 30 sur 40
Par exemple, par un clic droit / Propriétés ou un clic droit / Ouvrir l’emplacement du fichier.
Sinon vous pouvez utiliser un gestionnaire de tâche avancé comme Process Explorer, en
doublecliquant dessus, le chemin se trouve dans PATH.
Connaître les emplacements des fichiers systèmes Windows aide donc à ne pas faire d’erreurs et
dissocier les vrais processus légitimes Windows, des processus malveillants.
L’emplacement générique étant C:\Windows\system32
Les messages d’erreur au démarrage de Windows liés à des logiciels malveillants peuvent aussi
semer la confusion si mal interprétée.
Ces erreurs “Le module spécifié est introuvable” peuvent faire penser que certains processus
systèmes sont malicieux.
Ainsi dans le message d’erreur RegSvr32 suivant qui indique que
C:\Users\Ender\AppData\Local\lcsoft\[Link] est manquant.
Si mal compris, on peut penser que RegSvr32 en titre de fenêtre est malicieux alors qu’il s’agit
d’un processus système.
Même chose, si dessous avec une erreur RunDLL et une erreur d’entrée manquante.
Page 31 sur 40
Liste des processus Windows
Suivez la liste de la page suivante : Liste des processus système Windows ou encore Liste des
processus Windows
Dans cette page, vous trouverez la liste des processus système accompagné d’une description
brève de ces derniers.
Les principaux processus systèmes de Windows 10.
La plupart des fichiers systèmes se trouvent dans C:\Windows\system32 :
− [Link] – Isolation graphique de périphérique audio Windows
− browser_broker.exe – Browser_Broker
− [Link] – invite de commandes
− [Link]
− [Link]
− [Link] – Component Package Support Server
− [Link] – Device Association Framework Provider Host
− [Link] – COM Surrogate
− [Link]
− [Link]
− [Link] – Usermode Font Driver Host
− [Link] (dans C:\Windows)
− [Link] – Credential Guard & Key Guard
− [Link]
− [Link]
− Hôte de services
− [Link]
− [Link] – Microsoft Network Realtime Inspection Service
− [Link] – MoUSO Core Worker Process
− [Link] – Widget Edge
− [Link] – Antimalware Service Executable
− [Link] – Antimalware Service Executable Content Process
− [Link]
− [Link], [Link], [Link], [Link] sur Windows 10
− [Link]
Page 32 sur 40
− [Link]
− [Link]
− [Link]
− [Link]
− [Link]
− [Link]
− [Link]
− [Link]
− [Link]
− [Link]
− [Link]
− [Link]
− [Link] et [Link] sur Windows 10
− [Link] – Host Process for Setting Synchronization
− [Link] – Service Broker du moniteur d’exécution System Guard
− [Link] – Shell Infrastructure Host
− [Link]
− [Link] – Windows Defender SmartScreen
− [Link]
− [Link] (dans C:\Windows\System32\Speech_OneCore\Common)
− [Link]
− [Link] – Application sous-système spouleur
− [Link]
− [Link] (dans C:\Windows\ImmersiveControlPanel)
− [Link]
− [Link] (Windows 7)
− [Link] – Processus hôte pour Tâches Windows
− [Link]
− [Link] ou Windows Module Installer Worker
− [Link]
− [Link] – User OOBE Broker
− [Link]
Page 33 sur 40
− [Link]
− [Link] (Windows Problem Reporting)
− [Link] -Application de démarrage de Windows
− [Link]
− [Link] (WMI Provider Host)
− [Link]
− [Link] – Windows Driver Foundation – Processus hôte de l’infrastructure de
pilotes en mode utilisateur
− [Link]
Non listé dans le gestionnaire de tâches mais que vous pouvez rencontrer :
Page 34 sur 40
Les processus systèmes liés à Windows Defender, l’emplacement est C:\Program Files\Windows
Defender :
• [Link]
• [Link]
• [Link]
Page 35 sur 40
Chapitre 2 : Sécurité et Protection
I. Protection
1) Introduction
Un système d'exploitation doit comporter des moyens et des procédures de protection des objets qu'il
permet de manipuler. Les objets à protéger appartiennent à deux grandes catégories :
- les objets persistants tels que les fichiers, les périphériques, ..etc.
- les objets temporaires, comme les processus, les espaces de mémoire crée créés, ..etc. La
protection consiste à empêcher qu'un utilisateur puisse altérer un fichier qui ne lui
appartient pas et dont le propriétaire ne lui en a pas donné l'autorisation, ou encore à
empêcher qu'un processus en cours d'exécution ne modifie une zone mémoire attribuée à
un autre processus sans l'autorisation de celui-ci, par exemple.
Sommairement, on peut dire que la protection d'un objet informatique se pose dans les termes
suivants, inspirés des concepts mis en œuvre par certains systèmes d’exploitation, comme
Multics et Linux :
- Le propriétaire d'un objet peut avoir conféré à lui-même et à d'autres utilisateurs des
droits d'accès à cet objet. Les types de droits possibles sont notamment : o droit d'accès
en consultation (lecture) ;
o droit d'accès en modification (écriture, destruction, création) ; o
droit d'accès en exécution ;
- À chaque objet est donc associée une liste de contrôle d'accès (access control list) qui
énumère les utilisateurs autorisés et leurs droits.
- Avant toute tentative d'accès à un objet par un utilisateur, l'identité de cet utilisateur doit
être authentifiée.
- Pour qu'un utilisateur ait le droit d'exécuter une action sur un objet, et dans un système
informatique cette action est perpétrée par l'intermédiaire d'un processus, il faut en outre
que le processus en question possède le pouvoir voulu. Le pouvoir est un attribut d'un
Page 36 sur 40
processus, il peut prendre des valeurs qui confèrent à ce processus des privilèges plus ou moins
étendus (mode user, mode superuser).
- La valeur du pouvoir d'un processus peut changer au cours de son exécution. Ainsi un
processus qui se déroule dans un mode utilisateur peut faire une demande d'entrée-sortie,
ce qui nécessite le mode superviseur. Ceci sera résolu, sous Unix par exemple, par le
mécanisme de l'appel système, qui transfère le contrôle, pour le compte du processus
utilisateur, à une procédure du noyau qui va travailler en mode superviseur.
2) Domaines de protection :
On définit un droit d’accès comme une paire : (objet / ensemble de droits). Exemple (01, Read)
On définit un domaine de protection comme un ensemble de droits d’accès {DA1, DA2, … DAn}
Les domaines de protection ne sont pas forcément disjoints :
Page 37 sur 40
Les objets auxquels on peut accéder dépendent de l’utilisateur qui y accède. La commutation
de domaine est liée au changement d’utilisateur.
• Domaine = processus
Les objets auxquels on peut accéder dépendent du processus qui y accède. La commutation
de domaine est liée à la commutation de contexte.
• Domaine = utilisateur
Les objets auxquels on peut accéder correspondent aux variables utilisées par la procédure.
La commutation de domaine est liée à chaque appel de procédure.
Les matrices des droits d’accès permettent de formaliser le domaine de protection de chaque
processus.
Les lignes de la matrice représentent les domaines, et les colonnes représentent les objets.
Exemple
L’implémentation des matrices de droits d’accès, peut se faire selon plusieurs méthodes :
La table globale : consiste à représenter la matrice par une table constituée d’un ensemble de
triplets « domaine, objet, ensemble de droits ». Ainsi, à chaque fois que l’on exécute une
opération A sur un objet, il faut rechercher dans la table des triplets si A y figure bien.
Dans l’affirmative, l’opération est autorisée, sinon elle est refusée.
Liste d’accès aux objets : on implémente chaque colonne de la matrice par une liste chainée.
Liste des domaines : on implémente chaque ligne de la matrice par une liste chainée.
Page 38 sur 40
II. Sécurité
1) Introduction :
Les problèmes techniques actuels de sécurité informatique découlent directement ou
indirectement de l'essor des réseaux, qui multiplie la quantité et la gravité des menaces
potentielles. Ces menaces peuvent être : atteinte à la disponibilité des systèmes et des données,
destruction de données, corruption ou falsification de données, vol ou espionnage de données,
usage illicite d'un système ou d'un réseau, usage d'un système compromis pour attaquer d'autres
cibles.
Les personnes qui accèdent à une ressource non publique doivent être identifiées ; leur identité doit
être authentifiée ; leurs droits d'accès doivent être vérifiés.
La sécurité des accès par le réseau à une ressource protégée n'est pas suffisamment garantie par
la seule identification de leurs auteurs. Sur un réseau local de type Ethernet ou sur Internet, il est
possible à un tiers de capter la transmission de données. Les données doivent donc être
protégées, grâce aux techniques de chiffrement ou cryptage.
2) Authentification
L'authentification est la procédure qui consiste, pour un système informatique, à vérifier l'identité
d'une entité (personne, ordinateur...), afin d'autoriser l'accès de cette entité à des ressources
(systèmes, réseaux, applications...).
Page 39 sur 40
3) Chiffrement
Le chiffrement, ou cryptage est le procédé grâce auquel on souhaite rendre la compréhension d'un
document impossible à toute personne qui n'a pas la clé de déchiffrement.
La sécurité d'un système de chiffrement repose plus sur le secret de la clé de chiffrement que sur
l'algorithme lui-même.
Un système de chiffrement est dit :
• symétrique quand il utilise la même clé pour chiffrer et déchiffrer.
• asymétrique quand il utilise des clés différentes : une paire composée d'une clé publique,
servant au chiffrement, et d'une clé privée, servant à déchiffrer. Le point fondamental
soutenant cette décomposition publique/privée est l'impossibilité calculatoire de déduire la
clé privée de la clé publique.
Les méthodes les plus connues sont le DES, le Triple DES et l'AES pour la cryptographie
symétrique, et le RSA pour la cryptographie asymétrique, aussi appelée cryptographie à clé
publique.
L'utilisation d'un système symétrique ou asymétrique dépend des tâches à accomplir. La
cryptographie asymétrique présente deux intérêts majeurs : elle supprime le problème de
transmission sécurisée de la clé, et elle permet la signature électronique. Elle ne remplace
cependant pas les systèmes symétriques car ses temps de calcul sont nettement plus longs.
Page 40 sur 40