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

Afficher l'aperçu du document

Consulter le document original →

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/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

    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+Z puis reprendre en arrière-plan avec bg

    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.

    Partager

    Commentaires

    Aucun commentaire pour le moment. Posez la première question.

    Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

    ← Toutes les révisions