• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 22/11/2023

TP : La grande traversée des répertoires Linux

L’objectif de ce TP est de mettre en pratique les notions sur les fichiers et les répertoires que l'on a vues ensemble et de comprendre le rôle un peu particulier du droit Exécution sur les répertoires.

Allez suivez-moi, c’est parti !

Étape 1

Consigne

Connecté sous le compte root sur votre machine virtuelle Linux (console physique ou terminal), créez un répertoire ExerciceP2 dans l'arborescence temporaire de Linux /tmp  avec à la commande suivante :

root@debServer:~# mkdir /tmp/ExerciceP2
root@debServer:~#

Ensuite, à l'aide de la commande ls et de son option -l, relevez les droits par défaut associés à ce répertoire en redirigeant la sortie standard de ls vers l'entrée standard d'une commande grep à laquelle vous passerez en argument le nom de ce répertoire tel que :

root@debServer:~# ls -l /tmp/ | grep ExerciceP2
drwxr-xr-x 2 root root 4096 26 oct.  13:43 ExerciceP2
root@debServer:~#

Que pouvez-vous déduire des droits positionnés par défaut sur ce répertoire pour :

  • Le compte propriétaire ?

  • Le groupe propriétaire ?

  • Tous les autres ?

Réponse

  • Le compte propriétaire dispose des droits Lecture/Écriture/Exécution.

  • Le groupe propriétaire dispose des droits Lecture/ Exécution.

  • Tous les autres disposent des droits Lecture et Exécution.

Étape 2

Consigne

Vérifiez que vous ne pouvez pas créer un nouveau fichier avec un compte autre que root dans ce répertoire, utilisant par exemple la commande touch

seb@debServer:~$ touch /tmp/ExerciceP2/fichier1
touch: impossible de faire un touch '/tmp/ExerciceP2/fichier1': Permission non accordée

En tant que root, créez un nouveau fichier nommé lsHome.txt contenant le résultat de la commande ls sur l'arborescence /home par exemple, dans ce répertoire /tmp/ExerciceP2/, visualisez le contenu de ce fichier et relevez les droits par défaut associés à ce nouveau fichier.

Que pouvez-vous déduire des droits positionnés par défaut sur ce fichier…

root@debServer:~# ls /home/ > /tmp/ExerciceP2/lsHOME.txt
root@debServer:~# cat /tmp/ExerciceP2/lsHOME.txt
cecile
seb
root@debServer:~# ls -l /tmp/ExerciceP2/lsHOME.txt
-rw-r--r-- 1 root root 11 26 oct.  16:47 /tmp/ExerciceP2/lsHOME.txt
root@debServer:~#

…pour :

  • Le compte propriétaire ?

  • Le groupe propriétaire ?

  • Tous les autres ?

Réponse

  • Le compte propriétaire dispose des droits Lecture/Écriture.

  • Le groupe propriétaire dispose des droits Lecture.

  • Tous les autres disposent des droits Lecture.

Vous pouvez constater que les droits par défaut sur la création d'un répertoire et d'un fichier diffèrent !

Étape 3

Consigne

Vérifiez qu'un autre compte que root peut lister le répertoire /tmp/Exercice2 et visualiser le contenu du fichier lsHOME.txt

seb@debServer:~$ ls /tmp/ExerciceP2/
lsHOME.txt
seb@debServer:~$ cat /tmp/ExerciceP2/lsHOME.txt
cecile
seb
seb@debServer:~$

En tant que root, utilisez la gestion des droits numériques pour positionner les droits suivants sur le répertoire /tmp/ExerciceP2 :

  • Tous les droits pour le compte propriétaire.

  • Lecture uniquement pour le groupe propriétaire.

  • Lecture uniquement pour tous les autres.

root@debServer:~# chmod 744 /tmp/ExerciceP2/
root@debServer:~#

En tant que root, utilisez la gestion des droits numériques pour positionner les droits suivants sur le fichier /tmp/ExerciceP2/lsHOME.txt :

  • Tous les droits pour le compte propriétaire.

  • Lecture et écriture pour le groupe propriétaire.

  • Lecture uniquement pour tous les autres.

root@debServer:~# chmod 764 /tmp/ExerciceP2/lsHOME.txt
root@debServer:~#

Avec un compte autre que root, essayez désormais de lister le contenu du répertoire /tmp/Exercise2/

Que pouvez-vous déduire du résultat ?

seb@debServer:~$ ls /tmp/ExerciceP2/
ls: impossible d'accéder à '/tmp/ExerciceP2/lsHOME.txt': Permission non accordée
lsHOME.txt
seb@debServer:~$

Réponse

le répertoire /tmp/ExerciseP2/ est accessible à tous les autres en Lecture, donc la commande ls peut renvoyer le contenu du répertoire, mais ce dernier est inaccessible.

Étape 4

Consigne

Toujours sous un autre compte que root, essayez d'afficher le contenu du fichier /tmp/ExerciceP2/lsHOMEtxt

Que pouvez-vous conclure du résultat ?

seb@debServer:~$ cat /tmp/ExerciseP2/lsHOME.txt
cat: /tmp/ExerciseP2/lsHOME.txt: Permission non accordée
seb@debServer:~$

Réponse

Même si les droits sur le fichier sont positionnés à Lecture pour tous les autres, un compte autre que root ne peut pas lire le fichier.

Étape 5

Consigne

Sous le compte root, ajouter le droit exécution à tous les autres au répertoire /tmp/Exercice 2/

root@debServer:~# chmod o+x /tmp/ExerciseP2/
root@debServer:~#

Avec un compte autre que root, essayez à nouveau d'afficher le contenu du fichier lsHOME.txt, que pouvez vous conclure du résultat ?

seb@debServer:~$ cat /tmp/ExerciseP2/lsHOME.txt
cecile
seb
seb@debServer:~$

Réponse

Le droit Lecture pour tous positionné sur le fichier ne suffit pas, il faut également le droit Exécution sur le répertoire qui le contient. On dit que le bit x positionné sur le répertoire donne le droit de “traverser” le répertoire.

BONUS : "le masque de Linux"

Étape 6

Consigne

Sous le compte root, lancez la commande umask

root@debServer:~# umask
0022
root@debServer:~#

Considérez les 3 derniers chiffres du résultat de cette commande et comparez-les aux droits par défaut sur la création d'un fichier avec le compte root, que pouvez-vous déduire ?

Réponse

022  correspond à la valeur soustraite des droits numériques complets pour obtenir les droits numériques par défaut lors de la création de répertoire ou de fichier.

En effet, pour les répertoires 777 - 022 = 755

Pour les fichiers, 666 - 022 = 644

Étape 7

Consigne

Renseignez-vous sur la notion de masque sous Linux, et essayez de trouver où se situe la configuration par défaut des masques des comptes Linux.

Réponse

Dans le fichier /etc/login.defs:

#

# Login configuration initializations:

# ...

#   UMASK       Default "umask" value.

#...

# UMASK is the default umask value for pam_umask and is used by

# useradd and newusers to set the mode of the new home directories.

# 022 is the "historical" value in Debian for UMASK

# 027, or even 077, could be considered better for privacy

# There is no One True Answer here : each sysadmin must make up his/her

# mind.

#

# If USERGROUPS_ENAB is set to "yes", that will modify this UMASK default value

# for private user groups, i. e. the uid is the same as gid, and username is

# the same as the primary group name: for these, the user permissions will be

# used as group permissions, e. g. 022 will become 002.

#

# Prefix these values with "0" to get octal, "0x" to get hexadecimal.

#

ERASECHAR   0177

KILLCHAR    025

UMASK       022

C'est la fin de cette partie, il est temps de passer un quiz ! On se retrouve dans la prochaine partie pour parler du réseau… Allez, à tout de suite !

Exemple de certificat de réussite
Exemple de certificat de réussite