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 !