les permissions sous Linux
Introduction et explication :
Il existe 3 permissions sous linux pour les fichiers/répertoire :
- Le droit de lecture (read (lecture) = 4) : permet de lire le contenu d’un fichier.
- Le droit d’écriture (write (écriture) = 2) : permet la modification et la suppression d’un fichier.
- Le droit d’exécution (execute (exécution) = 1) : permet de lancer le programme (fichiers binaires ou shell).
Pour un répertoire, le droit de lecture permettra de le lister (avec la commande ls par exemple), le droit d’écriture permettra la création, la modification ou la suppression d’un fichier, et le droit d’exécution permettra d’y « rentrer ».
Il existe 3 types « d’utilisateurs » (sans compter le Root) : le propriétaire (owner ou UID), le groupe (group ou GID) et le reste du monde (other).
La commande « ls -l » permet d’afficher les autorisations d’un fichier et/ou d’un répertoire. pour l’exemple, nous allons prendre le fichier « copy.sh » que j’ai dans mon « home » :
debskhaen:/home/skhaen# ls -l
-rwxr-xr-x 1 skhaen skhaen 544 fév 14 14:27 copy.sh
Le premier signe correspond au type de fichier :
- « - » indique un fichier ordinaire
- « d« indique un répértoire
- « b » indique un pilote de périphérique
- « l » indique un lien symbolique
Découpons donc :
- | rwx | r-x | r-x 1 skhaen | admin
- - > c’est donc un fichier ordinaire
- le premier groupe de lettres corresponds aux droits du propriétaire/utilisateur : read/write/execute
- le deuxième groupe de lettres définit les droits du groupe auquel appartient l’utilisateur : read/pas de permission pour l’écriture/execute
- le dernier groupe de lettres correspond au groupe « other » (utilisateur(s) ne faisant pas partie du groupe) : read / – / execute
- « skhaen » définit l’utilisateur
- « admin » définit le groupe de l’utilisateur
Changer les droits :
La commande « chmod » [détails : #man chmod] (change mode) est faite spécialement pour ça !
Seul le propriétaire du fichier/répertoire (ou le root, bien entendu) peut changer les permissions :
Syntaxe de chmod :
chmod [ a, u, g, o ] [ +, - ] [ r, w, x ] [ non.de.fichier ] argument valeur permissions l'argument donne les droits : a = à tous les utilisateurs "all" u = au propriétaire "owner" g = aux utilisateurs du groupe "group" o = aux autres groupes "other" la valeur + ajoute - enlève les permissions autorisent r = la lecture w = l'écriture x = l'exécution
Si par exemple je veux changer les droits de mon fichier pour rajouter des droits à mon groupe :
debskhaen:/home/skhaen# chmod g+rwx copy.sh
debskhaen:/home/skhaen# ls -l
-rwxrwxr-x 1 skhaen skhaen 544 fév 14 14:27 copy.sh
Il existe une autre manière de le faire plus rapide : en « chiffrant » la commande : les différents droits (r/w/x) sont définit par des chiffres (4/2/1)
- 0 : —
- 1 : –x execute = 1
- 2 : -w- write = 2
- 3 : -wx
- 4 : r– read = 4
- 5 : r-x
- 6 : rw-
- 7 : rwx
donc pour faire la même commande (chmod g+rwx copy.sh), il « suffit » de faire :
debskhaen:/home/skhaen# chmod 775 copy.sh
[> 7 pour le propriétaire, 7 pour le groupe, 5 pour les autres ;-) ]
Et voila …
NB : si vous voulez changer le propriétaire d’un fichier ou d’un dossier, c’est la commande chown ;-)