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).

On parle « d'un droit » en particulier mais « des permissions » en général. On retrouvera donc au cours de cette page les 2 termes.
  • 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.

  • l'utilisateur qui en est propriétaire : user
  • le groupe auquel il appartient : group
  • le reste du monde : other
  • tout le monde : all

Graphiquement

Sous Nautilus (Ubuntu), faites un clic droit sur un fichier ou dossier puis choisissez propriétés. Rendez-vous dans l'onglet permissions.

Attention, cette fonctionnalité subit le Bug #371025 et ce depuis 2006 ( si si ), elle touche sur la modification récursive de fichiers d'un dossier ( dont vous éditez les permissions) . Si vous vous y connaissez !
Pour un fichier Pour un dossier

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

La section suivante (en ligne de commande) détaille un peu plus les différentes possibilités de permissions.

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)

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 :

  1. À 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.
  2. La modification que l'on veut faire
    • + : ajouter
    • - : supprimer
    • = : ne rien changer
  3. 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…

Il est à noter que seuls le propriétaire du fichier ainsi que le super-utilisateur ont la possibilité de modifier les permissions sur un fichier. (Un membre du groupe propriétaire ne peut pas changer les permissions sur un 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.
Notez aussi que pour modifier les propriétaires et les permissions sur un fichier qui lui appartient, un utilisateur doit absolument disposer de la permission d'écriture sur ce fichier. S'il ne dispose uniquement que de la permission de lecture, il ne pourra effectuer aucun changement de droits d'accès sur ce fichier.
Deux autres options bien pratiques :
  • 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 
Attention chmod -R mal employé peut rendre votre système définitivement inutilisable. Voir chmod -R /

1)
sous GNU/Linux, un dossier est simplement un fichier qui en contient d'autres
2)
Quand on vous propose d'effectuer un 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.
  • permissions.1249419200.txt.gz
  • Dernière modification: Le 18/04/2011, 14:40
  • (modification externe)