Examen [session principale] - Fondements des Systèmes d’Exploitation
Ce sujet d'examen porte sur les Fondements des Systèmes d’Exploitation. Il s'agit d'une épreuve évaluant les connaissances pratiques et théoriques des étudiants en administration système, gestion des fichiers, droits d’accès, processus, et compilation du noyau Linux. Les questions demandent à la fois des commandes précises et des explications conceptuelles.
D'après le document Examen [session principale] - Fondements des Systèmes d’Exploitation
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
Operating Systems · PDF · 4 pages · 2009
Afficher l'aperçu du document
Ce sujet d'examen porte sur les Fondements des Systèmes d’Exploitation. Il s'agit d'une épreuve évaluant les connaissances pratiques et théoriques des étudiants en administration système, gestion des fichiers, droits d’accès, processus, et compilation du noyau Linux. Les questions demandent à la fois des commandes précises et des explications conceptuelles.
EXERCICE 1
Il s'agit d'exploiter une arborescence de répertoires et de manipuler des fichiers et dossiers via des commandes Linux, en partant du répertoire « bureau » de l’utilisateur1.
1) Afficher le répertoire courant
On demande la commande permettant à l’utilisateur1, situé dans le répertoire « bureau », d’afficher son répertoire courant.
La commande Linux standard pour afficher le répertoire courant est :
pwd
Réponse : pwd
2) Organisation des fichiers source et entêtes
L’utilisateur1 souhaite créer deux répertoires « source » et « include » dans « bureau », puis déplacer les fichiers sources (.c) et les fichiers entêtes (.h) dans ces répertoires respectifs.
a) Créer les répertoires « source » et « include »
Pour créer deux répertoires dans le répertoire courant, on utilise la commande mkdir :
mkdir source include
Réponse : mkdir source include
b) Première solution pour déplacer les fichiers .h et .c
On peut déplacer les fichiers un par un ou en groupe avec la commande mv :
mv *.h include/
mv *.c source/
Cette solution déplace tous les fichiers avec l’extension .h dans « include » et tous ceux avec l’extension .c dans « source ».
Réponse :
mv *.h include/
mv *.c source/
c) Seconde solution pour déplacer les fichiers .h et .c
Une autre méthode consiste à utiliser la commande find combinée avec mv, mais ici, en restant simple, on peut aussi déplacer fichier par fichier :
mv codeur.h huffman.h include/
mv main.c codeur.c huffman.c source/
Réponse :
mv codeur.h huffman.h include/
mv main.c codeur.c huffman.c source/
3) Déplacer les répertoires « include » et « source » vers « work » dans « utilisateur1 »
On est toujours dans « bureau » et on veut créer « work » dans « utilisateur1 », puis déplacer les dossiers.
a) Créer le répertoire « work »
Le répertoire « utilisateur1 » est situé dans /home/utilisateur1 (supposé d’après l’arborescence). Pour créer « work » dans « utilisateur1 » depuis « bureau », on utilise :
mkdir /home/utilisateur1/work
Réponse : mkdir /home/utilisateur1/work
b) Déplacer « include » avec chemin absolu et « source » avec chemin relatif
- Pour déplacer « include » avec chemin absolu :
mv /home/utilisateur1/bureau/include /home/utilisateur1/work/
- Pour déplacer « source » avec chemin relatif (depuis « bureau ») :
mv source ../work/
Réponse :
mv /home/utilisateur1/bureau/include /home/utilisateur1/work/
mv source ../work/
c) Se déplacer vers « source » sous « work »
Deux commandes pour accéder au répertoire « source » sous « work » :
- Avec chemin absolu :
cd /home/utilisateur1/work/sourcecd ../work/source
Réponse :
cd /home/utilisateur1/work/source
cd ../work/source
4) Droits d’accès et masque de création
Le masque (umask) est 022. On étudie les droits sur les fichiers dans « source ».
a) Afficher les droits d’accès des fichiers dans « source »
La commande ls avec l’option -l affiche les droits :
ls -l source
Réponse : ls -l source
b) Droits d’accès pour le fichier « codeur.c »
Avec umask 022, les fichiers créés ont les droits par défaut 666 (rw-rw-rw-) moins 022, soit 644 (rw-r--r--). Donc « codeur.c » a :
Propriétaire : lecture et écriture (rw-)
Groupe : lecture seule (r--)
Autres : lecture seule (r--)
Réponse : rw-r--r--
c) Signification des droits d’accès de « codeur.c »
- Le propriétaire peut lire et modifier le fichier.
- Les membres du groupe peuvent seulement lire le fichier.
- Les autres utilisateurs peuvent aussi seulement lire le fichier.
Réponse : Le fichier peut être lu et modifié par le propriétaire, lu seulement par le groupe et les autres.
d) Représentation en base octale des droits
Les droits rw-r--r-- correspondent à :
- r = 4, w = 2, x = 1
- Propriétaire : rw- = 4 + 2 + 0 = 6
- Groupe : r-- = 4 + 0 + 0 = 4
- Autres : r-- = 4 + 0 + 0 = 4
Donc en octal : 644
Réponse : 644
5) Protection des accès
a) Accès exclusif pour l’utilisateur1 dans « source »
Pour que seul l’utilisateur ait accès aux fichiers dans « source », on enlève tous les droits pour groupe et autres :
chmod -R u=rwx,go= source
Cette commande donne tous les droits à l’utilisateur (u=rwx) et aucun aux autres (go=).
Réponse : chmod -R u=rwx,go= source
b) Accès en lecture seule au groupe dans « include » sans pouvoir lister le contenu
Pour que le groupe ait seulement un accès en lecture aux fichiers mais ne puisse pas lister le répertoire, on enlève le droit d’exécution sur le répertoire pour le groupe (car exécution sur un répertoire permet de le traverser et de lister), mais on donne lecture aux fichiers.
Pour le répertoire « include » :
chmod g=r include
Le droit r sur un répertoire permet de voir les noms, mais sans x on ne peut pas accéder aux fichiers. Pour empêcher la liste, on enlève r et x au groupe :
chmod g=r include
Mais pour que les membres du groupe puissent lire les fichiers, il faut que les fichiers aient les droits en lecture pour le groupe :
chmod g=r include/*.h
Pour empêcher la liste du contenu, on enlève le droit lecture sur le répertoire pour le groupe :
chmod g= include
Donc la commande correcte est :
chmod g= include
chmod g=r include/*.h
Réponse :
chmod g= include
chmod g=r include/*.h
EXERCICE 2
Ce exercice porte sur la compréhension des droits d’accès et les permissions minimales nécessaires pour certaines opérations.
1) Signification des trois droits d’accès pour un fichier et un répertoire
- Lecture (r) : Pour un fichier, permet de lire son contenu. Pour un répertoire, permet de lister les fichiers qu’il contient.
- Écriture (w) : Pour un fichier, permet de modifier son contenu. Pour un répertoire, permet de créer, supprimer ou renommer des fichiers dans ce répertoire.
- Exécution (x) : Pour un fichier, permet d’exécuter le fichier comme un programme. Pour un répertoire, permet d’accéder aux fichiers et sous-répertoires, c’est-à-dire traverser le répertoire.
Réponse : Lecture permet de lire, écriture de modifier, exécution d’exécuter un fichier ou traverser un répertoire.
2) Droits d’accès 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. Le droit d’exécution est nécessaire pour accéder au répertoire.
- b) Créer un répertoire : Même que pour créer un fichier, il faut w et x sur le répertoire parent.
- c) Copier un fichier vers un autre répertoire : Il faut pouvoir lire le fichier source (r) et écrire (w) et exécuter (x) dans le répertoire de destination.
- d) Renommer un fichier : Le renommage est une modification du répertoire contenant le fichier, donc il faut w et x sur ce répertoire.
- e) Lister le contenu d’un répertoire : Il faut les droits r et x sur ce répertoire (r pour voir les noms, x pour accéder au répertoire).
Réponse :
- Créer un fichier : w + x sur le répertoire
- Créer un répertoire : w + x sur le répertoire
- Copier un fichier : r sur le fichier source, w + x sur le répertoire destination
- Renommer un fichier : w + x sur le répertoire contenant
- Lister un répertoire : r + x sur le répertoire
EXERCICE 3
Questions sur le démarrage et les niveaux d’exécution (runlevels) sous Linux.
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 la machine.
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 (runlevel) possibles
En général, il y a 7 runlevels numérotés de 0 à 6.
Réponse : 7 runlevels (0 à 6)
3) Runlevel par défaut
Le runlevel par défaut est généralement le 3, qui correspond à un mode multi-utilisateur avec réseau mais sans interface graphique.
Réponse : Runlevel 3
4) Signification de la commande « ls /etc/rc3.d »
La commande liste les scripts de démarrage et d’arrêt pour le runlevel 3. Les fichiers commençant par K sont des scripts d’arrêt (kill), ceux commençant par S sont des scripts de démarrage (start). Par exemple :
- K15httpd : script pour arrêter le service httpd
- S10network : script pour démarrer le service réseau
Réponse : La commande affiche les scripts d’arrêt (K) et de démarrage (S) pour le runlevel 3, indiquant quels services sont arrêtés ou lancés.
5) Ligne de commande pour arrêter le système après 5 minutes
La commande shutdown avec l’option +5 arrête la machine dans 5 minutes :
shutdown -h +5
Réponse : shutdown -h +5
EXERCICE 4
Questions sur les fichiers utilisateurs, redirections, processus, signaux, et compilation du noyau.
1) Fichier contenant les mots de passe
a) Nom et chemin absolu
Le fichier est /etc/passwd.
Réponse : /etc/passwd
b) Exemples de champs dans une ligne de ce fichier
Les champs sont séparés par « : ». Deux exemples :
- Nom d’utilisateur
- UID (identifiant utilisateur)
Réponse : nom d’utilisateur, UID
2) Différence entre « cat f1.txt > f2.txt » et « cat f1.txt >> f2.txt »
- « cat f1.txt > f2.txt » : redirige le contenu de f1.txt vers f2.txt en écrasant f2.txt s’il existe.
- « cat f1.txt >> f2.txt » : ajoute le contenu de f1.txt à la fin de f2.txt sans effacer son contenu.
Réponse : Le premier écrase f2.txt, le second ajoute à la fin de f2.txt.
3) Deux méthodes pour exécuter un processus en arrière-plan
- Lancer la commande avec « & » à la fin, par exemple :
commande & - Lancer la commande normalement puis suspendre avec
CTRL+Zpuis reprendre en arrière-plan avecbg
Réponse : Utiliser « & » ou suspendre avec CTRL+Z puis « bg ».
4) Signal système équivalent à « CTRL + Z »
Le signal envoyé est SIGTSTP, qui suspend le processus.
Réponse : SIGTSTP
5) Ligne de commande pour compter fichiers et sous-répertoires dans « /usr »
On peut lister tous les fichiers et répertoires, filtrer avec grep et compter avec wc :
ls -lR /usr | grep "^-" | wc -l # compte les fichiers
ls -lR /usr | grep "^d" | wc -l # compte les répertoires
Pour totaliser fichiers et sous-répertoires :
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 des modifications, d’ajouter ou retirer des fonctionnalités, d’optimiser la configuration pour le matériel spécifique, ou de corriger des bugs.
Réponse : Permet d’adapter, optimiser ou corriger le noyau selon les besoins du système.
7) Ligne de commande pour lancer la compilation du noyau en mode texte
La commande classique est :
make
ou pour une compilation complète :
make all
Réponse : make
8) Ligne de commande pour lancer la compilation du noyau en mode graphique
Pour lancer la configuration graphique avant compilation :
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, évitant les interférences entre applications.
- Optimisation des ressources : Elle permet de mieux utiliser les ressources matérielles en partageant CPU, mémoire et stockage entre plusieurs environnements virtuels.
Réponse :
- La virtualisation isole les environnements, améliorant la sécurité et la stabilité.
- Elle optimise l’utilisation des ressources matérielles en multipliant les systèmes sur une seule machine.
Méthode
Ce sujet récompense une bonne maîtrise des commandes Linux de base, la compréhension des droits d’accès et de leur impact sur les opérations, ainsi que la connaissance des concepts liés au démarrage, aux processus et à la compilation du noyau. Il est essentiel de présenter clairement les étapes de raisonnement, d’utiliser les bonnes syntaxes et d’expliquer les effets des commandes. Les erreurs fréquentes punies sont :
- Confusion entre chemins relatifs et absolus.
- Mauvaise interprétation des droits d’accès (par exemple, confondre lecture et exécution sur un répertoire).
- Oublier les options essentielles des commandes (comme -l pour ls).
- Ne pas expliquer la signification des résultats ou des commandes.
- Ne pas distinguer les effets des redirections simples (>) et doubles (>>).
La clarté de la copie, la rigueur dans la présentation des commandes et la précision des explications sont également valorisées.
Commentaires
Aucun commentaire pour le moment. Posez la première question.