par Jean-Christophe
Dis Papa, c'est quoi rwxr-xr-x ? Tais-toi et nage !
Dans ce chapitre, nous allons étudier les permissions sur les fichiers. Nous allons voir rapidement sur quoi la gestion des permissions se base.
Les fichiers appartiennent à un utilisateur à l'intérieur d'un groupe d'utilisateurs.
Les droits que l'on peut attribuer à un fichier concernent :
On peut attribuer ces droits pour :
En ligne de commande (voir la rubrique [shell.php3 Shell]), tapez :
Pour une explication détaillée des différentes colonnes, voir la rubrique [shell.php3#ls Shell]. Nous n'allons ici nous intéresser qu'aux éléments relatifs aux permissions.
1. La première colonne -rw-r--r-- représente les permissions associées au fichier.
(le premier caractère est le type du fichier fichier : un d pour un répertoire, un l pour un lien, etc.)
Ensuite, on a trois groupes de trois caractères : rwx. La présence de la lettre r w ou x accorde la permission, un tiret '-' la dénie.
r signifie : possibilité de lire ce fichier / dans ce répertoire,
w signifie : possibilité d'écrire dans ce fichier / répertoire,
x signifie : possibilité d'exécuter ce fichier / d'aller dans ce répertoire.
Les trois groupes de caractère s'appliquent, dans l'ordre, à :
- | r w x | r - x | r - x |
utili- sateur |
groupe | autres |
2. La 3ème colonne est l'utilisateur à qui appartient le fichier. À cet utilisateur s'appliquent les permissions représentées par les trois premiers caractères de permissions de la première colonne (-'rwx'r-xr-x).
3. La 4ème colonne est le groupe d'utilisateurs auquel appartient le fichier. A ce groupe s'appliquent les permissions représentées par le deuxième groupe de trois caractères de permissions de la première colonne (-rwx'r-x'r-x).
Exemples :
1. La ligne suivante :
drwxr-xr-x 18 username users 2048 jan 7 19:22 .
signifie pour le répertoire '.' (le répertoire HOME de l'utilisateur username) que tout le monde a le droit de lire le contenu du répertoire (le dernier 'r'), et que tout le monde peut y accéder (le dernier 'x'). Par contre, seul l'utilisateur username peut y écrire (caractère 'w'), c'est à dire y créer des fichiers, les modifier ou les supprimer.
2. La ligne :
-rw-r----- 1 username wwwadm 1728 jan 7 19:22 projet-www
signifie que seul 'username' et les utilisateurs du groupe 'wwwadm' peuvent lire ce fichier, que seule username peut le modifier, et que les autres utilisateurs n'ont aucun droit dessus (le dernier groupe de caractères '---').
Il existe deux façon de changer les droits d'un fichier ou répertoire.
Donc, pour préciser les droits en exécution et lecture, le chiffre octal est : 1 + 4 = 5. Pour préciser les droits en éxécution, écriture et lecture, le chiffre octal est : 1 + 2 + 4 = 7. Ensuite, il faut savoir que le chiffre des unités (en octal) correspond 'au reste du monde' que le chiffre des 'huitaines' (deuxième chiffre en octal) correspond 'au groupe' et que le chiffre des 'soixante-quatraines' (troisième chiffre en octal) correspond 'à l'utilisateur'. Ainsi, si on veut que l'utilisateur ait les 3 droits (rwx), que le groupe ait les 2 droits (r-x) et que le reste du monde n'ai aucun droit (---), le nombre octal est : 750 (7 = 1 + 2 + 4 ; 5 = 1 + 4 ; 0 = 0). Pour donner ces droits à un fichier on tape alors :
Le premier 0 dans 0750 signifie qu'on donne le nombre en octal (son absence ne modifie pas le comportement de chmod).
Et :
Pour retirer tous les droits (rwx) au groupe (g) et aux autres (a).
Il faut savoir que la commande peut s'appliquer de manière récursive (c'est bien pratique pour les répertoires), en lui passant l'argument '-R' et qu'à la place du droit 'x', on peut présiser 'X' (majuscule) ce qui signifie que parmi les fichiers et répertoires dont on modifiera les droits d'exécution, seuls les répertoires sont concernés. Ainsi :
rendra tous les fichiers contenus dans ce répertoire (ainsi que dans tous les sous-répertoires de celui-ci) lisibles et écrivables et que tous les sous-répertoires (et leurs sous-répertoires) seront 'navigables' (le droit d'exécution pour un répertoire autorise à se rendre dans le dit répertoire).
Enfin, si vous voulez automatiser l'attribution de droits par défaut lors de la création d'un nouveau fichier ou d'un nouveau répertoire, il faut utiliser la commande shell umask. Par exemple, vous désirez que tout nouveau fichier que vous créez soit ouvert en lecture, écriture (et éventuellement en exécution) seulement pour vous, pas pour votre groupe, et encore moins pour tous. Il vous suffit d'ajouter dans votre fichier ~/.bash_profile la commande umask 077.
Les droits de propriétés sont très simples à modifier. Il suffit de donner le nom du nouveau possesseur (et éventuellement le nom du nouveau groupe) et le nom du fichier. Ainsi :
donne le fichier /chemin/vers/fichier à l'utilisateur 'username'. Et :
donne le fichier /chemin/vers/fichier à l'utilisateur 'username' et au groupe 'groupe'. Comme pour chmod le paramétre '-R' permet de rendre récursive l'application de la nouvelle propriété (i.e. répertoires et sous-répertoires).
Le changement de groupe uniquement peut être obtenu par :
qui donne /chemin/vers/fichier au groupe 'groupe'. L'argument '-R' rend cette application récursive.
Dans votre gestionnaire de fichiers préféré, sous KDE ou GNOME par exemple, vous pouvez consulter et modifier les permissions sur un fichier en affichant la boîte de dialogue "Propriétés" du fichier/répertoire (en général par un clic droit).
Il existe encore deux types de droits (en fait 3 mais le troisième est devenu obsolète) : 's' (SUID bit) et 'g' (SGID bit). Si l'on active le SUID bit d'un programme, il s'exécute sur le compte du possesseur du fichier (si c'est root, sur le compte de root, d'où un danger potentiel de sécurité). Si l'on active le SGID bit, c'est sur le compte de l'utilisateur normal, mais en tant que membre du groupe du fichier. Cela rend un fichier exécutable.
À ce propos consultez l'article SUID Scripts par Xavier GARREAU sur Léa.
Ces droits s'octroient de la même manière que les autres. Par exemple :
fera en sorte que executable puisse obtenir les privilèges de root (le fichier appartenant à root). Un ls -l sur le fichier donnera ensuite :
Attrntion, il est potentiellement très dangereux d'activer le bit SUID root, parce qu'il permet à n'importe quel utilisateur d'exécuter le fichier avec les droits root. Si cet exécutable permet de modifier des fichiers l'utilisateur pourra modifier les fichiers protégés du système. Pour exécuter des commandes avec les droits root il est conseillé d'utiliser sudo, ce qui permet de limiter à un seul utilisateur le droit d'exécuter le fichier en tant que root.
Utilisé judicieusement, le bit SUID root ne présente pas de risque, c'est par exemple le cas:
De la commande mount, parce que normalement seul root a le droit de monter un système de fichiers (voir man 2 mount). La commande mount permet à un utilisateur normal de monter un système de fichier si le fichier /etc/fstab le lui permet. (voir man 8 mount)
Les permissions peuvent se montrer limitées et ne permettent pas une gestion fine de certaines situations dans lesquelles un même fichier doit présenter des permissions différentes pour plusieurs utilisateurs. En effet, on ne peut définir normalement qu'un seul propriétaire et un seul groupe, opposés à un unique « tout le monde ».
Les ACL permettent de dépasser cette limitation en attribuant à un fichier des permissions différentes selon l'utilisateur (rw pour utilisateur1, rwx pour utilisateur2, r pour utilisateur3, etc.).
Consulter l'article requis pour plus de détails.
Les systèmes de fichiers ext2 et ext3 permettent l'ajout d'attributs étendus s'apparentant aux permissions.
Consulter l'article requis pour plus de détails.
@ Retour à la rubrique Administration système
© 10/01/2000 Jean-Christophe Cardot
![]() ![]() ![]() |
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique 3.0 : http://creativecommons.org/licenses/by-sa/3.0/ |