Groupes d'utilisateurs

Testez la commande whoami qui indique sous quel nom de login vous êtes connecté. La commande id vous indique en plus vos numéro d'utilisateur, nom et numéro de groupe principal ainsi que la liste des groupes auxquels vous appartenez.

Exercice 1 :

Déterminez votre ou vos groupes d'appartenance.

Tout n'est pas permis

Dans tout système d'exploitation, il est nécessaire de protéger le fonctionnement du système en interdisant certaines actions à l'utilisateur. Pour cela, il existe une notion de droits (ou permissions).

Téléchargez le fichier frozen-bubble-2.2.0.tgz sur la plateforme e-Learning du cours et décompressez-le dans le répertoire ~/L1/ISI/TP5 que vous aurez créé pour ce TP.

(Note: il s'agit d'une version modifiée pour ce TP de l'archive que vous pouvez télécharger librement sur www.frozen-bubble.org.)

Exercice 2 :

  1. Placez-vous dans le répertoire frozen-bubble-2.2.0 et tapez la commande ./first.sh 1.

    Listez les fichiers et répertoires contenus dans le dossier courant.

  2. Essayez d'afficher le contenu du répertoire tools.

  3. Essayez de vous placer dans le répertoire icons. Pouvez-vous lister son contenu ?

  4. Essayez de créer un fichier i_was_here.txt dans le répertoire server. Avez-vous essayé de vous placer dans le dossier server ?

  5. Essayez d'afficher le contenu du fichier README avec la commande cat.

  6. Ouvrez le fichier settings.mk, et tentez de le modifier.

Informations détaillées sur les fichiers

Pour savoir quels fichiers ou répertoires on a le droit de voir ou de modifier, il est indispensable de pouvoir consulter les droits associés à un fichier ou répertoire donné. C'est ce que nous allons faire dans cet exercice.

Exercice 3 : Comprendre les droits d'accès

Tapez vos réponses dans un fichier texte exo3.txt que vous déposerez sur la plateforme e-Learning dans la section « TP5 - Rendu ».

  1. En utilisant ls -l, comment distinguer les fichiers des répertoires à l'intérieur du dossier frozen-bubble-2.2.0 ?

  2. Que signifie le total indiqué en haut du listing affiché par ls -l ?

  3. Quel utilisateur est propriétaire des fichiers de ce répertoire ? Quel groupe ?

  4. Quelle est la taille en Ko du fichier frozen-bubble ?

  5. Déterminez quel fichier du répertoire gfx/pinguins/ a été modifié le plus récemment (vous pouvez trier l'affichage).

  6. Quels sont les droits sur les fichiers du répertoire gfx contenant le mot attack dans leur nom ?

  7. Quel est le fichier présent dans frozen-bubble-2.2.0 pour lequel tout le monde a tous les droits?

  8. Quels sont les fichiers présents dans frozen-bubble-2.2.0 pour lesquels l'utilisateur (vous) n'a pas tous les droits?

  9. Pour chacun des fichiers de la question précédente, dire ce que signifient les droits pour les trois groupes (utilisateur, groupe et autres).

  10. ★ (Bonus) Écrire les droits des fichiers de la question précédente sous forme de masques.

Modifier les droits des fichiers et répertoires

Droits des fichiers

La commande chmod liste_droits fichier(s) permet d'accorder ou de retirer au(x) fichier(s) passé(s) en arguments les permissions correspondant à liste_droits. Cette liste est de la forme droit_1, ..., droit_n où chaque droit_i peut être par exemple :

  • u+r pour rajouter au propriétaire le droit en lecture,
  • g-w pour retirer aux membres du groupe le droit en écriture,
  • o+x pour donner aux autres utilisateurs le droit en exécution,
  • ou une combinaison de ces possibilités (ex: u-wx, ug-w, ug-wx).

Exercice 4 : Votre répertoire personnel

L'option -d de la commande ls permet d'afficher les informations d'un répertoire et non de son contenu. Servez-vous de cette option (combinée avec l'option -l) pour afficher les droits de votre répertoire personnel. Que constatez-vous ?

Exercice 5 : Exécuter un fichier.

  1. Créez un répertoire Essai (si vous n'en possédez pas déjà un), et un fichier mon_ls dans ce répertoire, et écrivez-y quelques mots de votre choix.

  2. Notez à l'aide de ls -l les permissions actuelles du répertoire Essai et du fichier mon_ls.

  3. En utilisant la commande chmod, retirez-vous le droit en lecture et en écriture sur le fichier mon_ls. Vérifiez l'effet obtenu en essayant d'afficher le contenu du fichier sur la fenêtre du terminal avec la commande cat, puis de remplacer ce contenu par une phrase différente.

  4. Un fichier exécutable est simplement un fichier dont vous possédez le droit en exécution. Rétablissez le droit en écriture puis remplacez le contenu du fichier mon_ls par le texte "echo Contenu du dossier; ls". Ajoutez-vous le droit en exécution, et exécutez le fichier mon_ls en tapant ./mon_ls dans le terminal (depuis le répertoire qui le contient). Quel est le problème ?

  5. Rétablissez enfin le droit en lecture et tentez à nouveau d'exécuter le fichier. Que se passe-t-il?

Droits des répertoires

Si le sens de chaque droit pour un fichier ordinaire est assez clair, il est parfois moins intuitif pour un répertoire, comme vous le verrez dans l'exercice suivant.

Exercice 6 : Un test.

  1. Placez-vous dans le répertoire Essai, et retirez-vous le droit en lecture pour ce répertoire. Listez le contenu du répertoire avec ls, puis exécutez ou affichez le contenu du fichier mon_ls. Qu'en déduisez-vous ? Rétablissez le droit en lecture sur mon_ls et sur Essai.

  2. Créez dans Essai un fichier nouveau ainsi qu'un répertoire Test. Retirez au fichier nouveau et au répertoire Essai le droit en écriture. Tentez de modifier le fichier nouveau, de le déplacer, de le supprimer. Rétablissez ensuite le droit en écriture au répertoire Essai. Tentez de modifier le fichier nouveau, puis de le déplacer ou de le supprimer. Que constatez-vous ?

  3. Positionnez-vous dans votre répertoire personnel, puis retirez le droit en exécution du répertoire Essai. Tentez de créer, supprimer, ou modifier un fichier dans le répertoire Essai, de vous y déplacer, d'en faire la liste, etc. Qu'en déduisez-vous quant au sens du droit en exécution pour les répertoires ?

  4. Rétablissez le droit en exécution du répertoire Essai. Positionnez-vous dans ce répertoire et retirez-lui à nouveau le droit en exécution. Essayez de créer, supprimer, ou modifier un fichier dans le répertoire Essai, de vous déplacer dans un de ses sous-répertoires, de lister un de ses sous- répertoires. Qu'en concluez-vous quant à l'influence du répertoire courant sur la possibilité d'effectuer ces opérations?

Partager ses fichiers et répertoires

Dans certains cas, par exemple dans le cadre d'un projet à plusieurs ou de la fabrication d'une page web, il peut être intéressant de donner accès à certains de ses fichiers ou répertoires à d'autres utilisateurs. Les exercices suivants explorent deux cas d'utilisation possibles.

Exercice 7 : Donner accès à ses fichiers.

  1. Attribuez au fichier mon_ls les droits suffisants pour qu'une autre personne de votre groupe UNIX puisse y accéder en lecture (mais pas en écriture).

  2. Les fichiers des utilisateurs, et en particulier vos fichiers, sont visibles depuis tous les ordinateurs de la salle. Demandez à votre voisin(e) de tenter de lire votre fichier mon_ls depuis sa machine.

  3. Essayez d'accéder aux répertoires personnels d'autres étudiants et de consulter leurs fichiers.

Si vous avez fini : partage nominatif

Exercice 8 : Ouvrir un répertoire d'accueil.

Alice et Bob sont en TP ensemble, ils se donnent le but commun de créer, dans le répertoire Essai de Bob, un fichier exclu tel que :

  • seule Alice puisse écrire dans exclu et seul Bob puisse l'effacer,
  • toute personne du groupe, y compris Alice et hormis Bob, puisse lire exclu, et
  • seul Bob puisse créer de nouveaux fichiers dans Essai.

Répartissez vous les rôles d'Alice et Bob avec votre voisin(e) et essayez d'atteindre le but qu'ils se sont fixé.


  1. Les commandes et autres programmes sont des fichiers comme les autres. Par exemple, /bin/ls est le fichier correspondant à la commande que vous connaissez bien. Pour exécuter un programme, il suffit de taper son nom. C'est ce que vous avez fait avec le fichier first.sh au début de l'exercice.