Par la propriété d'un fichier, on désigne à quel utilisateur appartient le fichier, qui le possède. À partir de cette possession (ou non), il sera ensuite possible de définir des permissions d'accès sur le fichier.
La possession d'un fichier se définit sur trois catégories :
sudo
appartiendra à l'utilisateur root ; vous serez potentiellement amené à devoir changer le propriétaire de ce fichier pour pouvoir vous en servir avec votre propre compte utilisateur.)Faisons une analogie avec les voitures. Le propriétaire serait la personne au nom de laquelle la voiture est immatriculée. Le groupe propriétaire est l'ensemble des personnes qui sont inscrites en tant que conducteurs secondaires de la voiture chez l'assureur. Enfin, les autres correspond à toutes les autres personnes n'étant ni détenteur de l'immatriculation ni inscrites en tant que conducteurs de la voiture chez l'assureur.
Les permissions désignent ce que les diverses catégories d'utilisateurs (propriétaire d'un fichier, membres du groupe propriétaire d'un fichier et le reste du monde) ont l'autorisation d'effectuer sur un fichier donné. Par exemple, une catégorie d'utilisateurs peut avoir accès en lecture et écriture à un fichier, alors qu'une autre catégorie a accès en lecture seulement à ce même fichier.
Les permissions se définissent sur trois niveaux :
r
(pour read, lire).w
(pour write, écrire).x
(pour execute, exécuter). Pour un répertoire, la permission "x" permet d'en faire le répertoire courant (cd).
Par exemple, l'utilisateur toto
dispose des droits de lecture et d'exécution sur le répertoire foo
, mais pas la permission d'écriture sur ce répertoire ; toto
peut donc exécuter les programmes présents dans ce répertoire et ouvrir les fichiers qu'il contient, mais ne peut pas les modifier ni en créer de nouveaux.
Pour chacune des trois catégories d'utilisateurs (propriétaire, membres du groupe propriétaire et reste du monde) sont définies ces trois permissions :
Les droits sont affiché par une série de 9 caractères, associé 3 par 3 (rwx rwx rwx) définissent les droits des 3 identités (u, g et o).
x
) sur ce répertoire. De plus, pour être en mesure de lister le contenu d'un répertoire, l'utilisateur doit avoir la permission de lecture (r
) sur ce répertoire. Pour écrire dans le répertoire, la permission d'écriture (w
) doit être accordée. L'utilisateur peut disposer de ces permissions selon qu'il est propriétaire du répertoire, membre du groupe propriétaire du répertoire ou faire partie du reste du monde.ls
dans une fenêtre de terminal.) Il ne pourra pas accéder au dossier avec son navigateur de fichiers.Lorsqu'un nouveau fichier est créé, celui-ci obtient automatiquement certains paramètres :
toto
, dont le groupe principal est utilisateurs
, crée un nouveau fichier ou dossier, celui-ci appartient à toto:utilisateurs
;rwxr-xr-x
:Le masque utilisateur par défaut peut être modifié pour un autre choix :
umask
. Tout nouveau fichier ou dossier créé durant la session courante recevra les droits tels que définis par le masque utilisateur, mais le masque utilisateur par défaut sera de nouveau utilisé à l'ouverture d'une nouvelle session utilisateur ;chmod
Les systèmes d'exploitation inspirés d'Unix (dont Linux fait partie) possèdent la capacité de définir de façon poussée la gestion de droits d'accès aux divers fichiers de votre OS.
Les droits d'accès paramétrés sur les fichiers et répertoires ne sont pas immuables : ils peuvent être changés, afin d'accommoder des nouveaux besoins apparaissant au fil du temps d'utilisation de votre système Ubuntu. Le présent article explique les différentes manipulations pouvant être appliquées sur des fichiers et répertoires afin d'en changer les propriétaires et les permissions.
Les droits d'accès définissent la possession d'un fichier ou d'un répertoire à un utilisateur et à un groupe d'utilisateurs. Ils gèrent aussi quelles actions les utilisateurs ont le droit d'effectuer sur les fichiers (lecture, écriture et exécution), selon qu'ils sont propriétaire du fichier, membre du groupe propriétaire du fichier ou ni l'un ni l'autre. La possession et la gestion des permissions associées s'effectue individuellement avec chaque fichier.
Les droits des fichiers d'un répertoire peuvent être affichés par la commande
pi@raspberry:~ $ ls -l
Les droits d'accès apparaissent alors comme une liste de 10 symboles. :
drwxr-xr-x
Le premier symbole peut être « - », « d », soit « l », entres autres (toutes les options sur la page permissions Unix sur wikipédia)). Il indique la nature du fichier :
Suivent ensuite 3 groupes de 3 symboles chacun, indiquant si le fichier (ou répertoire) est autorisé en lecture, écriture ou exécution. Les 3 groupes correspondent, dans cet ordre, aux droits du propriétaire, du groupe puis du reste des utilisateurs. Dans le paragraphe introductif, vous aurez remarqué des lettres en gras dans les termes anglais. Ce sont ces lettres qui sont utilisées pour symboliser lesdites permissions. Si la permission n'est pas accordée, la lettre en question est remplacé par « - ». Si l'on reprend les lettres données pour lecture/écriture/exécution (read/write/execute), nous obtenons : rwx.
Reprenons l'exemple théorique précédent :
drwxr-xr-x
Il se traduit de la manière suivante :
En pratique, en exécutant la commande suivante,
pi@raspberry:~ $ ls -l
on obtient la liste du contenu du répertoire courant, par exemple :
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
On retrouve dans la première colonne le groupe de 10 caractères permettant de connaître les droits pour chaque fichier.
Ainsi, pour le fichier forum.xcf
, on a :
-rw-r--r--
Un fichier a un propriétaire et un groupe. Nous pouvons les changer.
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 :
pi@raspberry:~ $ 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 :
pi@raspberry:~ $ sudo chown toto:lesPotes fichier1
Le fichier fichier1
appartient alors à l'utilisateur toto
et au groupe lesPotes
.
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 :
pi@raspberry:~ $ 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.
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 :
pi@raspberry:~ $ 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
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 chiffres1) ; 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.
De cette façon, on va choisir :
Par exemple :
pi@raspberry:~ $ chmod o-w fichier3
enlèvera le droit d'écriture pour les autres.
pi@raspberry:~ $ chmod a+x
ajoutera le droit d'exécution à tout le monde.
On peut aussi combiner plusieurs actions en même temps :
fichier3
pour le propriétaire ;pi@raspberry:~ $ chmod u+rwx,g+rx-w,o+r-wx fichier3
etc.
En octal, chaque « groupement » de droits (pour user, group et other) sera représenté par un chiffre et à chaque droit correspond une valeur :
Par exemple,
Ce qui permet de faire toutes les combinaisons :
- - -
(aucun droit)- - x
(exécution)- w -
(écriture)- w x
(écriture et exécution)r - -
(lecture seule)r - x
(lecture et exécution)r w -
(lecture et écriture)r w x
(lecture, écriture et exécution)
Reprenons le répertoire 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 répertoire on taperait donc la commande :
pi@raspberry:~ $ chmod 750 Documents
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 se fait en ajoutant l'option -R
chmod -R
mal employé peut rendre votre système définitivement inutilisable.
Voir chmod -R /
Par exemple :
pi@raspberry:~ $ chmod -R 750 monRépertoire
donnera tous les droits au propriétaire, les droits de lecture et exécution au groupe et aucuns droits aux autres…
On peut changer les droits et permissions des répertoires et fichiers dans l'interface graphique du SE, avec un clic droit puis aller dans les propriétés