Module 1
Chapitre 06 - Gestion des permissions
1. Les permissions
Comme vu précedement, la commande ls -l nous donne beaucoup d'informations sur un fichier.
root@localhost # ls -l
-r-xr-xr-x 1 root wheel 32464 27 May 09:35 /bin/ls
Nous allons nous interesser aux parties : droits et propriétaire du fichier.
1.1 Propriétaire
Un fichier appartient à un utilisateur et un à un groupe. Généralement le groupe dans lequel est l'utilisateur. Dans l'exemple ci-dessus, root est l'utilisateur propriétaire et wheel le groupe propriétaire.
1.1.1 Changer l'utilisateur propriétaire
Nous allons pouvoir changer l'utilisateur propriétaire grâce à la commande : chown
La commande chown n'est utilisable que par root.
| Note: | |
les options entre crochets [ ] sont des options facultatives |
Syntaxe :
chown [-R] user[:group] fichier
L'option -R est utilisée pour changer le propriétaire de façon recursive pour les dossiers.
Exemple :
root@localhost # ls -l fichier
-rw-r--r-- 1 andrew kernel 0 7 Sep 10:52 fichier
root@localhost # chown linus
-rw-r--r-- 1 linus kenrel 0 7 Sep 10:52 fichier
root@localhost # chown richard:gpl
-rw-r--r-- 1 richard gpl 0 7 Sep 10:52 fichier
1.1.2 changer le groupe propiétaire
La commande chown n'étant utilisable que par root, les utilisateurs disposent de la commande chgrp pour changer le groupe propriétaire. L'utilisateur doit appartenir au nouveau groupe.
Syntaxe :
chgrp [-R] group fichier
Exemple :
richard@localhost # ls -l fichier
-rw-r--r-- 1 richard gpl 0 7 Sep 10:52 fichier
richard@localhost # chgrp gnu fichier
-rw-r--r-- 1 richard gnu 0 7 Sep 10:52 fichier
1.2 Les droits
Sous linux il y a trois actions que l'on va autoriser ou non :
lire : Read
ecrire : Write
exécuter : eXecute
Ces trois actions vont être définies pour trois types de personnes :
l'utilisateur propriétaire : User
le groupe propriétaire : Group
les autres : Others
1.2.1 Les fichiers
Read : lire le contenu du fichier
Write : modifier le contenu du fichier
eXecute : exécuter le fichier
1.2.2 Les dossiers
Read : lister le contenu du dossier
Write : modifier le contenu (supprimer un fichier, renommer un fichier)
eXecute : exécuter des commandes à l'interieur du dossier.
1.2.3 Modifier les droits
Nous allons pouvoir modifier les droits avec la commande chmod. Cette commande peut etre utilisée de deux façons différentes : avec des lettres ou avec des chiffres.
Syntaxe :
chmod [–R] droits fichier
1.2.3.1 Mode lettré
Dans ce mode, nous allons utiliser des lettres et des opérateurs pour ajouter ou supprimer des droits.
lettre | signification | lettre | signification |
u | utilisateur | r | read |
g | groupe | w | write |
o | others | x | execute |
a | tous |
Les opérateurs disponibles sont :
+ | ajoute un droit |
- | supprime un droit |
= | ajoute un droit et supprime les autres |
Exemple :
root@localhost # ls -l fichier
-rw-r--r-- 1 root wheel 0 7 Sep 10:52 fichier
root@localhost # chmod u+x fichier
-rwxr--r-- 1 root wheel 0 7 Sep 10:52 fichier
root@localhost # chmod g+wx,o-r fichier
-rwxrwx--- 1 root wheel 0 7 Sep 10:52 fichier
root@lab# chmod a=r fichier
-r--r--r-- 1 root wheel 0 7 Sep 10:52 fichier
1.2.3.2 Mode chiffré
Dans ce mode, nous allons transformer les droits en valeurs octales :
chiffre | signification |
4 | read |
2 | write |
1 | execute |
En additionant ces chiffres, on arrive à un nombre à trois chiffres. Les centaines pour l'utilisateur, les dizaines pour le groupe et les unités pour les autres.
Exemple :
Nous allons donner les droits de lecture, écriture et exécution à l'utilisateur. Les droits de lecture et exécution au groupe et aux autres.
4+2+1 = 7
4+1 = 5
root@localhost # ls -l fichier
-rw-r--r-- 1 root wheel 0 7 Sep 10:52 fichier
root@localhost # chmod 755 fichier
-rwxr-xr-x 1 root wheel 0 7 Sep 10:52 fichier
1.3 Umask
Par défaut, tous les fichiers créés ont comme droit 666 et les dossiers 777. L'umask est un masque qui va réduire ces droits. Lors de la création d'un fichier, le système va soustraitre l'umask aux droits par défaut. Par l'umask est à 0022.
On a donc 666 - 022 = 644.
Vérifions en créant un fichier.
root@localhost # touch document
root@localhost # ls -l document
-rw-r--r-- 1 root wheel 0 7 Sep 11:02 document
On peut définir le umask grâce à la commande umask.
root@localhost # umask 077
1.4 Les droits spéciaux
Il existe trois droits spéciaux : suid, sgid et sticky bit. Il sont ajoutés grâce à la commande chmod.
droit | lettre | chiffre |
suid | s | 4 |
sgid | s | 2 |
sticky | t | 1 |
1.4.1 SUID
Lorsque vous exécutez une commande, celle-ci se lance avec votre uid. Cette commande aura donc accès seulement aux fichiers où vous possedez des droits.
Si le suid est placé sur un exécutable, ce dernier se lancera avec l'uid de son propriétaire.
1.4.2 SGID
Le droit sgid fonctionne de la même façon que le suid en ce qui concerne les exécutables.
Mais le sgid peut aussi être attribué à un dossier. Tout fichier créé dans un dossier portant le sgid aura comme groupe propriétaire le groupe du dossier.
1.4.3 Sticky
Si vous possedez le droit d'écriture sur un dossier, vous pouvez renommer ou supprimer tous les fichiers qu'il contient. Ce fonctionnement n'est pas adéquat pour un dossier public, où tout le monde à accès en écriture comme "/tmp". Si le sticky bit est placé sur un dossier, seul le possesseur d'un fichier pourra le renommer ou le supprimer.