xrings

Autorisations Unix

Les droits d’accés aux fichiers sous Mac OS X

La commande chmod

Première publication : 30 mai 2003.
Modifié le : 24 novembre 2006.
Mise en ligne: 28 mai 2004.
Par Frédéric Guerrier

Depuis Mac OS X, il faut bien l’avouer, un des problèmes les plus courant est bien la gestion des droits (1) d’accés aux fichiers. Il arrive en effet assez fréquement de ne pas pouvoir réaliser telle ou telle action car on ne dispose pas des autorisations nécessaires. Nous allons tenter dans cet article d’y voir plus clair.


Vous avez des problèmes d’autorisations sur des fichiers ? Vous n’arrivez pas à lire ou écrire dans un répertoire ? Vous ne pouvez pas modifier un fichier ?

La plupart des problèmes de droits peuvent se régler directement dans l’interface graphique de Mac OS X en effectuant un pomme+i sur le fichier qui pose problème, et en modifiant les réglages disponibles au bas de la fenêtre qui surgit, mais que faire ? À quoi correspondent ces réglages ? Et si l’on doit modifier un grand nombre de fichiers, quelle tâche arrassante que de les modifier un par un ! Il est toutefois possible de le faire avec une grande précision via le Terminal grâce à la commande chmod.

Quelques explications

Les fondations de Mac OS X sont celles d’un système Unix, conçu dès le départ (en 1969) pour être un système multi-tâches et multi-utilisateur, pour être plus précis, il se base sur l’un des plus anciens systèmes Unix, BSD (Berkeley Software Distribution). Sur ce genre de système d’exploitation, les fichiers appartiennent donc tous à un utilisateur à l’intérieur d’un groupe d’utilisateurs.

L’utilisateur, c’est vous par exemple. Vous disposez d’un identifiant et d’un mot de passe, ils sont définis dans le répertoire /etc/passwd.

Le groupe d’utilisateurs, défini dans /etc/group, permet de regrouper des utilisateurs dans des groupes (un même utilisateur peut faire partie de plusieurs groupes) afin par exemple de partager des permissions entre plusieurs utilisateurs. Ces groupes et utilisateurs sont modifiables via le Gestionnaire Netinfo accessible dans le dossier /Applications/Utilities, ou par le Terminal.

Les autorisations sur les fichiers

Les droits d’accès à un fichier sont des modes de ce fichier.

Un fichier comporte 3 niveaux d’autorisations, 3 façons d’accéder à celui-ci :

-  lecture,
-  écriture,
-  exécution.

On les note en Anglais, la langue de l’informatique, read, write, execute :

-  r signifie : possibilité de lire ce fichier ou dans ce répertoire.

-  w signifie : possibilité d’écrire dans ce fichier ou répertoire.

-  x signifie : possibilité d’exécuter ce fichier ou d’aller dans ce répertoire.

Voici les droits d’accès les plus courants :

-  --- Aucun accès
-  r— Accès en lecture seule
-  r-x Accès en lecture et en exécution pour les programmes et les scripts shell
-  rw- Accès en lecture et écriture pour les fichiers
-  rwx Tous les accès

Représenter les modes d’accès aux fichiers par des lettres symboliques est une des méthodes de notation des droits, elle à des équivalents, une notation binaire et une représentation octale :

Format rwxFormat BinaireFormat Décimal
--- 000 0
—x 001 1
-w- 010 2
-wx 011 3
r— 100 4
r-x 101 5
rw- 110 6
rwx 111 7

Pour comprendre la représentation octale il faut se souvenir que chaque chiffre est interprété de la même façon :

-  1 pour l’exécution
-  2 pour l’écriture
-  4 pour la lecture

On peut cummuler les droits en ajoutant ces chiffres. Si le premier chiffre du paramètre est 7 comme dans l’exemple précédent, il correspond alors à 4+2+1 soit la lecture(4), l’écriture(2), l’éxecution(1).

Il est bien entendu possible d’utiliser la notation que l’on désire.

Les groupes d’utilisateurs

Il existe 3 types d’utilisateurs :

-  le propriétaire noté user ou u
-  le groupe d’utilisateurs noté group ou g
-  les autres notés all ou a

Les autorisations de chaque fichier auront donc cette forme :

u-g-a

Avec à la place de u, les autorisations de l’utilisateur, de g celle du groupe, a celles des autres...

Ainsi les autorisations suivantes pour un document :

-  rwx pour l’utilisateur, qui lui donne tous les droits sur ce fichier
-  rw pour le groupe, qui donne le droit de lire et d’écrire dans le fichier
-  r pour les autres, qui leur permet uniquement de lire ce fichier

Se noteront :

C’est notre fichier mais les autres peuvent uniquement le lire :

-  rwx pour l’utilisateur,
-  r donc exécuter pour le group,
-  r donc exécuter pour le reste du monde

Donnera :

Tout pour soi, rien pour les autres, le fichier est privé :

-  rwx pour l’utilisateur,
-  rien pour le reste du monde

Se traduira par :

Gérer les droits

Passons maintenant à la gestion proprement dite des droits :

On peut visualiser ces autorisations par le biais des informations accessibles par le Finder (pomme-i ou dans le Finder, menu fichier, afficher les infos), mais aussi par le Terminal avec la commande ls -l, on rajoute l’option l à ls pour obtenir une liste longue (voir l’article sur ls) et donc voir les droits des fichiers.

Si on tape ls -l à la racine du Disque de démarrage ( soit cd / pour se positionner à cet endroit par le Terminal) :


[Mac_de_gunjin: /] % ls -l
total 10233
drwxrwxr-x  65 root    admin       2210 Nov 12 02:56 Applications
-rw-r--r--   1 root    admin     263168 Nov 12 02:59 Desktop DB
-rw-r--r--   1 root    admin     513346 Nov 11 05:45 Desktop DF
drwxr-xr-x   2 gunjin  unknown       68 Jul 30 10:50 Desktop Folder
drwxrwxr-x  12 root    admin        408 Nov 11 17:23 Developer
drwxrwxr-x  35 root    admin       1190 Nov 12 03:00 Library
drwxr-xr-x   6 root    wheel        204 Jul 28 23:30 Network
drwxr-xr-x   2 gunjin  unknown       68 Sep 30 01:09 Rangement au de??marrage
drwxr-xr-x   6 root    wheel        204 Nov  6 07:56 System
drwxrwxrwx   3 gunjin  staff        102 Sep 16 18:14 Temporary Items
drwxr-xr-x   4 gunjin  unknown      136 Sep  9 21:13 TheVolumeSettingsFolder
drwxr-xr-x   2 gunjin  unknown       68 Sep 19 18:40 Trash
drwxrwxr-t   8 root    wheel        272 Nov  8 11:40 Users
drwxrwxrwt   7 root    wheel        238 Nov 12 02:43 Volumes
dr-xr-xr-x   1 root    wheel        512 Nov 12 03:42 automount
drwxr-xr-x  36 root    wheel       1224 Nov 11 23:47 bin
drwxrwxrwt   2 root    wheel         68 Jul 14 08:20 cores
dr-xr-xr-x   2 root    wheel        512 Nov 11 23:59 dev
lrwxrwxr-t   1 root    admin         11 Nov 11 23:59 etc -> private/etc
lrwxrwxr-t   1 root    admin          9 Nov 11 23:59 mach -> /mach.sym
-r--r--r--   1 root    admin     705904 Nov 11 23:59 mach.sym
-rw-r--r--   1 root    wheel    3728752 Nov  6 07:01 mach_kernel
drwxr-xr-x   6 root    wheel        204 Nov 11 23:59 private
drwxr-xr-x  60 root    wheel       2040 Nov 11 23:48 sbin
lrwxrwxr-t   1 root    admin         11 Nov 11 23:59 tmp -> private/tmp
drwxr-xr-x  11 root    wheel        374 Jul 14 08:21 usr
lrwxrwxr-t   1 root    admin         11 Nov 11 23:59 var -> private/var

La première ligne "total 10233" est l’espace disque utilisé par l’ensemble des fichiers du répertoire.

-  1 ère colonne : Droits
-  2 ème colonne : Liens vers ce fichier
-  3 ème colonne : Possesseur
-  4 ème colonne : Groupe
-  5 ème colonne : Taille
-  6 ème colonne : Date de modification
-  7 ème colonne : Nom du fichier

Le premier caractère des autorisations est un :

-  - pour nous informer qu’il s’agit d’un fichier ordinaire.
-  d pour un répertoire (d pour directory).
-  l pour un lien symbolique (autrement dit un alias).
-  p pour un Pipe-line
-  s pour une prise réseau (socket)

Ne vous inquiétez pas si le contenu de votre dossier racine diffère légèrement, mais les droits doivent être similaires.

On peut donc changer toutes les autorisations d’un fichier d’un seul coup avec chmod, par exemple pour que tout le monde puisse lire et écrire le document (rw-rw-rw-). On tapera :

On peut aussi ajouter des autorisations au groupe, à l’utilisateur ou à tout le monde :

Retire le droit d’éditer le document au groupe, etc...

On utilisera les syntaxes d’arguments u+ ? et a+ ? de chmod pour les droits de l’utilisateur et ceux de tout le monde.

-  Si on remplace le + par un -, on supprimera les droits voulus à l’utilisateur, au groupe.
-  Si on remplace le + par un =, on donnera exactement les droits voulus à l’utilisateur, au groupe.

On peut biensûr combiner les arguments de chmod par exemple :

Pour permettre à l’utilisateur et interdire au groupe de lire le fichier document.

Si on veut changer les droits de tout un répertoire, on utilisera l’option -R (pour récursive). Les droits seront aussi appliqués au contenu du dossier, quel que soit le nombre de fichiers qu’il contient.

Il vous sera souvent nécessaire de vous identifier comme administrateur pour modifier les autorisations des fichiers, en utilisant la commande sudo.

Les modes et les permissions d’accès constituent l’un des aspect les plus complexes d’Unix, et donc de Mac OS X. Il convient donc de passer un peu de temps à étudier ce fonctionnement. Mais si toutefois cette gestion des droits via le Terminal vous semble encore un peu obscure, vous pouvez sans attendre lire l’article d’iBen Mac OS X et privilèges, afin d’éffectuer ces opérations grâce à des outils disposants d’interfaces graphiques...


Ou autorisations, ou privilèges.


En ligne à cette adresse : http://www.xrings.net/xrings/article.php3?id_article=79

::: Copyright 2002-2018 xrings :::