Fondements des Systèmes d’Exploitation - Examen [session principale] 2009/2010
Ce document est un examen de Fondements des Systèmes d’Exploitation, destiné à évaluer les connaissances pratiques et théoriques des étudiants sur la gestion des fichiers, les droits d’accès, les processus, le démarrage du système et la virtualisation dans un environnement GNU/Linux.
D'après le document Fondements des Systèmes d’Exploitation - Examen [session principale] 2009/2010
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
Operating Systems Fundamentals · PDF · 4 pages · 2009
Afficher l'aperçu du document
Ce document est un examen de Fondements des Systèmes d’Exploitation, destiné à évaluer les connaissances pratiques et théoriques des étudiants sur la gestion des fichiers, les droits d’accès, les processus, le démarrage du système et la virtualisation dans un environnement GNU/Linux.
EXERCICE 1
On étudie ici la gestion des répertoires, des fichiers et des droits dans un système Linux, avec des commandes concrètes à écrire et expliquer.
1) Afficher le répertoire courant
L’utilisateur1 est dans le répertoire « bureau » et souhaite afficher le chemin du répertoire courant.
La commande Linux permettant d’afficher le répertoire courant est :
pwd
Réponse : pwd
2) Organisation des fichiers sources et d’en-tête
L’utilisateur1 veut organiser son environnement de travail en créant deux répertoires et en déplaçant les fichiers sources et entêtes dans ces répertoires.
a) Créer les répertoires « source » et « include » dans le répertoire courant (bureau)
La commande pour créer plusieurs répertoires en une seule ligne est :
mkdir source include
Réponse : mkdir source include
b) Première solution pour déplacer les fichiers entêtes (.h) dans « include » et les fichiers sources (.c) dans « source »
On utilise la commande mv avec un motif générique :
mv *.h include/
mv *.c source/
Réponse : mv *.h include/ mv *.c source/
c) Seconde solution pour réaliser le déplacement
On peut utiliser la commande find combinée avec mv pour déplacer les fichiers :
find . -maxdepth 1 -name "*.h" -exec mv {} include/ \;
find . -maxdepth 1 -name "*.c" -exec mv {} source/ \;
Réponse : find . -maxdepth 1 -name "*.h" -exec mv {} include/ \; find . -maxdepth 1 -name "*.c" -exec mv {} source/ \;
3) Déplacement des répertoires « include » et « source » vers « work »
a) Créer le répertoire « work » dans « utilisateur1 » alors qu’on est dans « bureau »
Le répertoire « utilisateur1 » est un répertoire parent de « bureau » (selon l’arborescence). Pour créer « work » dans « utilisateur1 », on utilise :
mkdir ../work
Réponse : mkdir ../work
b) Déplacer « include » et « source » vers « work »
- Pour « include », utiliser le chemin absolu :
Supposons que le chemin absolu vers « utilisateur1 » soit /home/utilisateur1, alors :
mv include /home/utilisateur1/work/
- Pour « source », utiliser le chemin relatif :
mv source ../work/
Réponse : mv include /home/utilisateur1/work/ mv source ../work/
c) Se déplacer vers le répertoire « source » sous « work »
- Avec chemin absolu :
cd /home/utilisateur1/work/source
- Avec chemin relatif (depuis « bureau ») :
cd ../work/source
Réponse : cd /home/utilisateur1/work/source cd ../work/source
4) Droits d’accès et masque de création
a) Afficher les droits d’accès aux fichiers dans « source »
La commande pour afficher les droits est :
ls -l source
Réponse : ls -l source
b) Droits d’accès pour le fichier « codeur.c »
Sans informations supplémentaires, on suppose que les droits sont ceux par défaut avec un masque 022. Par défaut, un fichier est créé avec les droits 666 (rw-rw-rw-), le masque 022 enlève les droits d’écriture pour le groupe et les autres, donc :
Droits effectifs : rw-r--r--
Réponse : rw-r--r--
c) Signification des droits d’accès pour « codeur.c »
- Le propriétaire peut lire et écrire (rw-)
- Le groupe peut lire seulement (r--)
- Les autres utilisateurs peuvent lire seulement (r--)
Réponse : Le propriétaire peut lire et écrire le fichier, les membres du groupe et les autres utilisateurs peuvent seulement le lire.
d) Représentation en base octale des droits
rw- = 4 (lecture) + 2 (écriture) + 0 (exécution) = 6
r-- = 4 (lecture) + 0 + 0 = 4
r-- = 4
Donc les droits sont : 644
Réponse : 644
5) Protection des accès
a) Seul l’utilisateur1 a accès aux fichiers dans « source »
Pour que seul le propriétaire ait accès, on enlève tous les droits pour le groupe et les autres :
chmod 700 source
Cette commande donne tous les droits au propriétaire et aucun aux autres.
Réponse : chmod 700 source
b) Les membres du groupe ont seulement un accès en lecture aux fichiers dans « include », sans pouvoir lister le contenu du répertoire
Pour empêcher la liste du contenu du répertoire, on enlève le droit d’exécution sur le répertoire pour le groupe, car le droit d’exécution sur un répertoire permet d’y accéder et de lister son contenu.
Pour que le groupe ait seulement la lecture des fichiers mais pas la liste du répertoire, on peut :
- Donner les droits 640 aux fichiers (lecture pour groupe, pas d’exécution)
- Donner les droits 600 au répertoire « include » pour le groupe (pas d’exécution, donc pas de liste)
Mais ici, on demande la commande pour le répertoire « include » :
chmod 640 include
Cependant, pour un répertoire, le droit d’exécution est nécessaire pour accéder aux fichiers à l’intérieur. Donc pour empêcher la liste mais permettre l’accès aux fichiers, on donne :
chmod 640 include
Mais cela empêche aussi l’accès aux fichiers. La solution correcte est :
chmod 640 include
chmod g-rx include
chmod g--x include
En fait, pour empêcher la liste mais permettre la lecture des fichiers, on enlève le droit de lecture (r) sur le répertoire pour le groupe, mais on garde le droit d’exécution (x) :
chmod 710 include
Ce droit donne au propriétaire tous les droits, au groupe seulement l’exécution (accès aux fichiers), et aux autres aucun droit.
Réponse : chmod 710 include
EXERCICE 2
On demande ici la signification des droits d’accès et les droits minimum nécessaires pour différentes opérations sur fichiers et répertoires.
1) Signification des trois droits d’accès pour un fichier et pour un répertoire
- Lecture (r) :
- Fichier : permet de lire le contenu du fichier.
- Répertoire : permet de lister les noms des fichiers dans le répertoire.
- Fichier : permet de modifier ou supprimer le contenu du fichier.
- Répertoire : permet de créer, supprimer ou renommer des fichiers dans le répertoire.
- Fichier : permet d’exécuter le fichier s’il est exécutable (programme ou script).
- Répertoire : permet d’accéder aux fichiers dans le répertoire (accès aux inodes), nécessaire pour ouvrir un fichier ou accéder aux sous-répertoires.
Réponse : Les droits lecture, écriture et exécution ont des significations différentes selon qu’ils s’appliquent à un fichier ou à un répertoire, comme expliqué ci-dessus.
2) Droits minimum pour différentes opérations
- a) Créer un fichier :
Il faut le droit d’écriture (w) et d’exécution (x) sur le répertoire où on crée le fichier, car on modifie le contenu du répertoire et on doit pouvoir y accéder.
Réponse : w + x sur le répertoire
- b) Créer un répertoire :
Même que pour créer un fichier, il faut w + x sur le répertoire parent.
Réponse : w + x sur le répertoire parent
- c) Copier un fichier vers un autre répertoire :
Il faut lire le fichier source (r sur le fichier), et écrire + exécuter sur le répertoire de destination (w + x).
Réponse : r sur le fichier source, w + x sur le répertoire destination
- d) Renommer un fichier :
Le renommage modifie le contenu du répertoire parent, donc w + x sur ce répertoire.
Réponse : w + x sur le répertoire contenant le fichier
- e) Lister le contenu d’un répertoire :
Il faut le droit de lecture (r) et d’exécution (x) sur ce répertoire.
Réponse : r + x sur le répertoire
EXERCICE 3
Questions sur le démarrage du système et les niveaux d’exécution (runlevels).
1) Rôle de GRUB
GRUB est un chargeur d’amorçage (bootloader) qui permet de choisir et de lancer un système d’exploitation au démarrage de l’ordinateur.
Réponse : GRUB permet de sélectionner et démarrer un système d’exploitation lors du boot.
2) Nombre de niveaux d’exécution possibles
En général, il existe 7 niveaux d’exécution (runlevels) numérotés de 0 à 6.
Réponse : 7 niveaux d’exécution (0 à 6)
3) Runlevel par défaut
Le runlevel par défaut est généralement le niveau 3 ou 5 selon la configuration, mais le plus courant est le niveau 3 (mode multi-utilisateur avec réseau).
Réponse : runlevel 3
4) Signification du résultat de la commande « ls /etc/rc3.d »
Les fichiers dans /etc/rc3.d commencent par K ou S suivis d’un numéro et d’un nom de service :
- K15httpd : signifie que le service httpd sera arrêté (Kill) avec une priorité 15 lors du passage au runlevel 3.
- S10network : signifie que le service network sera démarré (Start) avec une priorité 10 lors du passage au runlevel 3.
Réponse : Les fichiers K* arrêtent les services, les fichiers S* démarrent les services au runlevel 3, avec un ordre donné par le numéro.
5) Ligne de commande pour arrêter le système après 5 minutes
La commande est :
shutdown -h +5
Réponse : shutdown -h +5
EXERCICE 4
Questions sur les fichiers système, gestion des processus, compilation du noyau et commandes diverses.
1) Fichier des mots de passe
a) Fichier contenant les mots de passe
Le fichier est /etc/passwd
Réponse : /etc/passwd
b) Deux exemples de champs dans une ligne de ce fichier
Une ligne est organisée en champs séparés par « : ». Deux exemples de champs :
- Nom d’utilisateur
- Identifiant utilisateur (UID)
Réponse : nom d’utilisateur et UID
2) Différence entre « cat f1.txt > f2.txt » et « cat f1.txt >> f2.txt »
- « cat f1.txt > f2.txt » : remplace le contenu de f2.txt par celui de f1.txt (écrasement).
- « cat f1.txt >> f2.txt » : ajoute le contenu de f1.txt à la fin de f2.txt (ajout).
Si f2.txt existe, la première commande écrase son contenu, la seconde ajoute à la fin.
Réponse : > écrase le fichier, >> ajoute à la fin.
3) Deux méthodes pour exécuter un processus en arrière-plan
- Ajouter « & » à la fin de la commande, par exemple :
commande & - Exécuter la commande normalement puis suspendre avec
CTRL + Zet reprendre en arrière-plan avecbg
Réponse : lancer avec & ou utiliser CTRL+Z puis bg
4) Signal système équivalent à « CTRL + Z »
Le signal envoyé est SIGTSTP (signal de suspension du terminal).
Réponse : SIGTSTP
5) Ligne de commande pour compter fichiers et sous-répertoires dans « /usr »
On peut utiliser :
ls -lR /usr | grep "^-" | wc -l # compte les fichiers
ls -lR /usr | grep "^d" | wc -l # compte les répertoires
Ou une commande combinée :
ls -lR /usr | grep -E "^-|^d" | wc -l
Réponse : ls -lR /usr | grep -E "^-|^d" | wc -l
6) Intérêt de refaire la compilation du noyau
Recompiler le noyau permet d’intégrer de nouveaux pilotes, d’ajuster la configuration, d’optimiser les performances ou de corriger des bugs.
Réponse : Permet d’adapter, optimiser ou corriger le noyau selon les besoins.
7) Ligne de commande pour lancer la compilation du noyau en mode texte
La commande classique est :
make
Réponse : make
8) Ligne de commande pour lancer la compilation du noyau en mode graphique
On utilise :
make xconfig
Réponse : make xconfig
EXERCICE 5
Avantages de la virtualisation.
1) Deux avantages de la virtualisation
- Isolation : La virtualisation permet d’exécuter plusieurs systèmes d’exploitation indépendants sur une même machine physique, isolant ainsi les environnements et évitant les conflits.
- Optimisation des ressources : Elle permet de mieux utiliser les ressources matérielles en partageant CPU, mémoire et stockage entre plusieurs machines virtuelles, augmentant ainsi l’efficacité.
Réponse : Isolation des environnements et optimisation des ressources matérielles.
Méthode
Ce sujet récompense la maîtrise des commandes Linux de gestion des fichiers et répertoires, la compréhension des droits d’accès et de leur représentation, ainsi que la connaissance des concepts liés au démarrage du système et à la gestion des processus. Il est important de :
- Respecter la syntaxe exacte des commandes et chemins.
- Montrer les étapes de raisonnement, notamment pour les droits d’accès et leur conversion en notation octale.
- Ne pas confondre les droits sur fichiers et répertoires, car leur signification diffère.
- Utiliser les chemins absolus et relatifs selon la consigne.
- Expliquer clairement les concepts théoriques (rôle de GRUB, signification des runlevels, etc.).
- Ne pas inventer d’informations absentes du sujet.
Les erreurs fréquentes punies sont l’oubli des droits d’exécution sur les répertoires, la confusion entre écrasement et ajout dans la redirection, et l’utilisation incorrecte des chemins.
Commentaires
Aucun commentaire pour le moment. Posez la première question.