Ceci est une ancienne révision du document !
Permissions (ou droits d'accès)
Ubuntu vous permet, pour chaque fichier ou dossier1), d'autoriser ou restreindre l'accès à ce fichier en lecture, écriture et exécution, et ce, pour son propriétaire, son groupe et les autres (le reste du monde).
Les 3 types de permissions
- lecture : read
- écriture : write
- exécution : execute
Le droit de lecture autorise à lire le contenu d'un fichier, ou pour un dossier, à lister son contenu.
Le droit d'écriture autorise à écrire dans le fichier ou le dossier.
Le droit d'exécution permet de lancer un fichier en tant que programme exécutable, ou dans le cas d'un dossier, permet d'entrer dans le répertoire.
Qui est affecté ?
- l'utilisateur qui en est propriétaire : user
- le groupe auquel il appartient : group
- le reste du monde : other
- tout le monde : all
Voir les permissions
Graphiquement
Sous Nautilus (Ubuntu), faites un clic droit sur un fichier ou dossier puis choisissez propriétés. Rendez-vous dans l'onglet permissions.
Pour le Propriétaire et le Groupe, vous pouvez choisir dans le menu déroulant correspondant de donner les droits en lecture et écriture ou lecture seule.
Pour les Autres, vous pouvez choisir entre lecture et écriture, lecture seule et aucun.
Vous pouvez choisir le groupe auquel appartient le fichier (par défaut, le groupe du propriétaire, sauf cas particulier).
Lorsqu'il s'agit d'un dossier, pour le Propriétaire et Groupe vous pouvez choisir entre Création et suppression des fichiers, Accès aux fichiers, et Lister seulement les fichiers.
Pour les Autres, vous pouvez choisir entre Création et suppression des fichiers, Accès aux fichiers, Lister seulement les fichiers et Aucun
En ligne de commande
Vous remarquez dans l'introduction des lettres en gras dans les termes anglais. Ces lettres sont utilisées pour gérer les permissions en ligne de commande.
Si l'on reprend les lettres données pour lecture/écriture/exécution (read/write/execute), nous obtenons : rwx
et pour propriétaire/groupe/autres (user/group/other), nous obtenons : ugo
Explication par l'exemple
Dans un terminal, exécutez la commande
ls -l
Ceci listera le contenu du répertoire courant :
drwxr-xr-x 6 cyrille cyrille 4096 2008-10-29 23:09 Bureau drwxr-x--- 2 cyrille cyrille 4096 2008-10-22 22:46 Documents lrwxrwxrwx 1 cyrille cyrille 26 2008-09-22 22:30 Examples -> /usr/share/example-content -rw-r--r-- 1 cyrille cyrille 1544881 2008-10-18 15:37 forum.xcf drwxr-xr-x 7 cyrille cyrille 4096 2008-09-23 18:16 Images drwxr-xr-x 2 cyrille cyrille 4096 2008-09-22 22:45 Modèles drwxr-xr-x 267 cyrille cyrille 20480 2008-10-27 22:17 Musique drwxr-xr-x 2 cyrille cyrille 4096 2008-09-22 22:45 Public drwxr-xr-x 2 cyrille cyrille 4096 2008-10-26 13:14 Vidéos
Ce qui nous intéresse est la première colonne composé de 10 caractères.
Le premier caractère nous indique la nature du fichier :
- - : fichier
- d : dossier
- l : lien
Les 9 suivants sont les 3 droits rwx répétés pour user group et other. Pour chaque droit, on peut avoir le r, w ou x ou un tiret - qui veut dire que ce droit est restreint.
Pour le fichier forum.xcf
, par exemple, on a :
-rw-r--r--
- Le 1er caractère est - ⇒ c'est un fichier.
- Le premier groupe de 3 caractères est rw- ⇒ le propriétaire a le droit de lecture et écriture (mais pas d'exécution) sur le fichier.
- Les 2 groupes suivants sont r-- ⇒ Les utilisateurs du groupe et les autres n'ont que le droit de lecture (pas d'écriture, ni d'exécution)
Modifier les permissions
Graphiquement
Dans Nautilus, il vous suffit de changer les valeurs des menus déroulants dans l'onglet permissions (cf. ci-dessus).
En ligne de commande
Un fichier a un propriétaire et un groupe. Nous pouvons les changer.
chown
La commande chown
(change owner, changer le propriétaire) permet de changer le propriétaire du fichier. Seuls le super-utilisateur ou le propriétaire actuel d'un fichier peut utiliser chown
. La commande s'utilise de la façon suivante :
sudo chown toto fichier1
Le fichier fichier1
appartient maintenant à l'utilisateur toto
.
chown permet aussi de changer en une seule commande le propriétaire et le groupe du fichier :
sudo chown toto:lesPotes fichier1
Le fichier fichier1
appartient alors à l'utilisateur toto
et au groupe lesPotes
.
chgrp
La commande chgrp (pour change group) permet de changer le groupe auquel appartient le fichier. Tous les membres de ce groupe seront concernés par les permissions du groupe de la 2ème série de rwx. Encore une fois, seuls le super-utilisateur ou le propriétaire actuel d'un fichier peut utiliser chgrp
(un membre du groupe ne peut pas changer le groupe propriétaire). La commande s'utilise de la façon suivante :
sudo chgrp mesPotes fichier2
Le fichier fichier2
appartient maintenant au groupe mesPotes
. Tous les membres du groupe mesPotes
auront accès à ce fichier selon les permissions du groupe.
Quand l'utilisateur actuel n'est pas le propriétaire actuel du fichier, il sera nécessaire de faire précéder la commande par sudo
, puisqu'elle devra être effectuée avec les droits d'administration.
chown, pour changer simultanément le propriétaire et le groupe propriétaire
Pour changer à la fois le propriétaire et le groupe propriétaire, une syntaxe particulière de la commande chown
peut être utilisée. Encore une fois, seuls le super-utilisateur ou le propriétaire actuel d'un fichier peut utiliser chown
(un membre du groupe ne peut pas effectuer de changement de propriété). La commande s'utilise de la façon suivante :
chown nouveau_propriétaire:nouveau_groupe_propriétaire nom_du.fichier
Quand l'utilisateur actuel n'est pas le propriétaire actuel du fichier, il sera nécessaire de faire précéder la commande par sudo
, puisqu'elle devra être effectuée avec les droits d'administration.
Imaginons le même fichier foo.txt
possédé par utilisateur1 et appartenant au groupe propriétaire groupe1. Le propriétaire doit devenir utilisateur2 et la propriété de groupe de ce fichier doit passer au groupe groupe2. En étant connecté au compte utilisateur1, l'exécution de cette commande effectuera l'opération demandée :
chown utilisateur2:groupe2 foo.txt
chmod
L'outil chmod
(change mode, changer les permissions) permet de modifier les permissions sur un fichier. Il peut s'employer de deux façons : soit en précisant les permissions de manière octale, à l'aide de chiffres2) ; soit en ajoutant ou en retirant des permissions à une ou plusieurs catégories d'utilisateurs à l'aide des symboles r w et x
, que nous avons présenté plus haut. Nous préférerons présenter cette seconde façon ("ajout ou retrait de permissions à l'aide des symboles"), car elle est probablement plus intuitive pour les néophytes. Sachez seulement que les deux méthodes sont équivalentes, c'est-à-dire qu'elles affectent toutes deux les permissions de la même manière.
En gérant chaque droit séparément
De cette façon, on va choisir :
- À qui s'applique le changement
- u (user, utilisateur) représente la catégorie "propriétaire" ;
- g (group, groupe) représente la catégorie "groupe propriétaire" ;
- o (others, autres) représente la catégorie "reste du monde" ;
- a (all, tous) représente l'ensemble des trois catégories.
- La modification que l'on veut faire
- + : ajouter
- - : supprimer
- = : ne rien changer
- Le droit que l'on veut modifier
- r : read ⇒ lecture
- w : write ⇒ écriture
- x : execute ⇒ exécution
Par exemple :
chmod o-w fichier3
enlèvera le droit d'écriture pour les autres.
chmod a+x
ajoutera le droit d'exécution à tout le monde.
On peut aussi combiner plusieurs actions en même temps : on ajoute la permission de lecture, d'écriture et d'exécution sur le fichier fichier3
pour le propriétaire, on ajoute la permission de lecture et d'exécution au groupe propriétaire, on retire la permission d'écriture au groupe propriétaire, on ajoute la permission de lecture aux autres et on retire la permission d'écriture et d'exécution aux autres :
chmod u+rwx,g+rx-w,o+r-wx fichier3
etc.
En octal
En octal, chaque « groupement » de droits (pour user, group et other) sera représenté par un chiffre et à chaque droit correspond une valeur :
- r = 4
- w = 2
- x = 1
- - = 0
Par exemple,
- Pour rwx, on aura : 4+2+1 = 7
- Pour rw-, on aura : 4+2+0 = 6
- Pour r--, on aura : 4+0+0 = 4
Reprenons le dossier Documents
. Ses permissions sont :
drwxr-x---
En octal, on aura 750 :
rwx r-x --- 7(4+2+1) 5(4+0+1) 0(0+0+0)
Pour mettre ces permissions sur le dossier on taperait donc la commande :
chmod 750 Documents
Récursivement
Pour chacune de ces commandes, on peut les lancer récursivement sur un répertoire. C'est à dire que l'action sera effectuée sur le répertoire désigné et sur tous les fichiers ou répertoires qu'il contient. Ceci ce fait en ajoutant l'option -R
Par exemple :
chmod -R 750 monDossier/
donnera tous les droits au propriétaire, les droits de lecture et exécution au groupe et aucuns droits aux autres…
sudo
, puisqu'elle devra être effectuée avec les droits d'administration.
- Pour afficher un message si et seulement si les permissions ont changé :
chmod -c <option> <fichier>
- Pour travailler récursivement sur tous les fichiers d'un répertoire et de ses sous-répertoires :
chmod -R repertoire
Liens
chmod 777
sur un fichier, cette représentation des permissions est la manière octale. Chaque chiffre correspond à l'ensemble des permissions attribuées à chacune des catégories d'utilisateurs. Cette manière chiffrée est sans doute moins intuitive pour les néophytes. Pour plus d'informations sur la manière octale d'affecter des permissions, rapportez-vous à l'excellent Léa-Linux.