
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 !
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 ?
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.
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 ?
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 !
Vérifiez qu'un autre compte que root peut lister le répertoire /tmp/ExerciceP2 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:~$
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.
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:~$
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.
Sous le compte root, ajouter le droit exécution à tous les autres au répertoire /tmp/ExerciceP2/
root@debServer:~# chmod o+x /tmp/ExerciceP2/ 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/ExerciceP2/lsHOME.txt cecile seb seb@debServer:~$
Le droit Lecture pour tout positionner 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.
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 ?
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
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.
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 !