Qu'est-ce que ces « droits d'accès » ? C'est un modèle qui décrit, pour chaque fichier ou chaque répertoire, qui a le droit de lire, exécuter (ou traverser dans le cas d'un répertoire) ou modifier. Sur votre Mac ou PC Windows personnel, ces considérations ne sont peut-être pas très importantes si vous êtes le seul utilisateur. Mais c'est particulièrement important sous Unix, qui est un système conçu pour être multi-utilisateurs.
Chaque fichier a plusieurs propriétés associées : le
propriétaire, le groupe propriétaire, la date de
dernière modification, et les droits d'accès. On peut
examiner ces propriétés grâce à l'option -l
de
ls
. Dans cet exemple, nous voyons les permissions
standard d'un répertoire et de deux fichiers :
clipper ~/DEA $ ls -l
total 205
drwxr-xr-x 2 toto phy03 512 Jan 16 10:02 fiches/
-rw-r--r-- 1 toto phy03 72008 Oct 2 2003 article.dvi
-rw-r--r-- 1 toto phy03 145905 Oct 2 2003 article.pdf
Les permissions sont indiquées dans la colonne de gauche, suivant un format bien particulier :
Comme nous le voyons sur l'image ci-dessus, le bloc de permissions se divise en quatre éléments.
Le premier caractère du bloc de permissions indique le type du
fichier : -
pour un fichier normal, d
pour
un répertoire. On trouve également parfois l
pour les
liens symboliques, et d'autres choses plus exotiques.
-
: droit de lire (r pour read) le fichier (r
pour oui,
-
pour non)-
: droit d'écrire (w pour write) dans le fichier-
: droit d'exécuter (x pour execute) le fichier.
Pour un répertoire, les choses sont un peu différentes. Le couple
rx
donne le droit d'examiner le répertoire et son
contenu. Le bit w
donne le droit d'ajouter ou de
supprimer des fichiers dans le répertoire.
Il existe d'autres types de droits plus exotiques, comme le bit setuid
(s) ou encore le « sticky bit » (t). Si ça vous intéresse, lisez la page de man de
chmod
.
Comme les droits du propriétaire, mais s'applique aux gens qui sont dans le groupe propriétaire (voir ci-dessous sur les groupes).
Comme les droits du propriétaire, mais s'applique aux gens qui sont ni le propriétaire, ni dans le groupe propriétaire.
Nombre de liens du fichier; un répertoire en a au moins deux (.
et
..
). Un répertoire qui contient 5 sous-répertoires en a 7, etc.
Le nom de login de la personne à qui appartient ce fichier. Seul le propriétaire peut changer les droits ou le groupe d'un fichier.
Les groupes sont des ensembles d'utilisateurs qui sont fixés par
l'administrateur du système. Ils sont un moyen pour gérer un peu
finement les droits d'accès. En l'espèce, à l'ENS, les groupes n'ont
pas une très grande importance. Votre groupe porte le nom de votre
spécialité (litt
pour les littéraires, bio
pour les biologistes, etc.) assorti de votre promo. C'est la commande
id
qui vous révèle le(s) groupe(s) auquel vous
appartenez :
clipper ~ $ id
uid=4242(toto) gid=276(phy03) groups=276(phy03)
La commande vous indique d'abord votre identifiant d'utilisateur (UID) et votre login, puis votre identifiant de groupe principal (GID) et enfin tous les groupes dans lesquels vous vous trouvez.
Elle est indiquée en octets.
Il existe 4 commandes liées aux droits d'accès :
chmod
(change mode), la plus utile,
qui modifie les permissionschgrp
(change group) qui modifie le
groupe d'un fichier ou répertoirechown
(change owner) qui modifie le
propriétaire d'un fichier ou répertoireumask
, qui définit les protections par défaut
Les commandes chgrp
et chown
servent surtout
à l'administrateur du système, donc nous ne les examinerons pas ici
(lisez leur page de man pour
en savoir plus). En revanche, chmod
est une commande très
pratique dans une utiisation courante.
Cette notation consiste à associer un ou plusieurs degrés de
propriété, une action et un ou plusieurs types d'accès. On l'utilise
généralement pour ajouter ou retirer des permissions par rapport à la
normale (-rw-r--r--
pour un fichier,
drwxr-xr-x
pour un répertoire).
Degré de propriété | Action | Type d'accès | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
Ici, vous interdisez à tout autre que vous l'accès à votre fichier (c'est ce qu'à l'ENS on appelle couramment le « mode parano »).
clipper ~ $ ls -l fichier.txt -rw-r--r-- 1 toto phy03 42 Jan 5 12:08 fichier.txt clipper ~ $ chmod og-r fichier.txt clipper ~ $ ls -l fichier.txt -rw------- 1 toto phy03 42 Feb 5 12:08 fichier.txt
Même chose pour un répertoire...
clipper ~ $ ls -l | grep repertoire drwxr-xr-x 2 toto phy03 512 Feb 5 12:19 repertoire/ clipper ~ $ chmod go-rx repertoire clipper ~ $ ls -l | grep repertoire drwx------ 2 toto phy03 512 Feb 5 12:19 repertoire/
Certains fichiers sont par défaut en mode parano. C'est le cas par exemple de votre mail : quand vous sauvegardez un fichier en provenance de votre boîte aux lettres, il est protégé. Pour permettre aux autres l'accès au fichier :
clipper ~ $ chmod og+r fichier.txt
clipper ~ $ chmod go+rx repertoire
Par défaut un fichier n'est pas un exécutable. Pour rendre exécutable par tout le monde le joli script que vous venez d'écrire, faites simplement :
clipper ~ $ chmod +x script
Cette notation est un peu plus complexe. Elle se fonde sur le principe
suivant : considérons un bloc de permissions,
rw-r--r--
. Quand une lettre est présente, ça veut dire
que l'accès est autorisé, quand elle est absente (-), il est
refusé. On peut traduire ceci de façon binaire :
r | w | - | r | - | - | r | - | - |
1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
Ce qui donne 110-100-100. 110 vaut 6 en décimal, 100 vaut 4 (voir le
teableau ci-dessous), donc la représentation numérique de
rw-r--r--
est 644. Cette valeur peut être indiquée
exactement à chmod
:
clipper ~ $ ls -l fichier.txt -rw------- 1 toto phy03 42 Feb 5 12:08 fichier.txt clipper ~ $ chmod 644 fichier.txt clipper ~ $ ls -l fichier.txt -rw-r--r-- 1 toto phy03 42 Jan 5 12:08 fichier.txt
Accès | --- | --x | -w- | -wx | r-- | r-x | rw- | rwx |
---|---|---|---|---|---|---|---|---|
Binaire | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
Décimal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Permission | Valeur numérique | Type de fichier | Signification |
---|---|---|---|
--------- | 000 | N'importe quel type. | Aucun accès à qui que ce soit |
rw------- | 600 | Fichiers | Fichier parano : lecture et écriture réservées au propriétaire. |
rw-r--r-- | 644 | Fichiers | Standard : tout le monde peut lire le fichier mais vous êtes le seul à pouvoir le modifier. |
rw-rw-rw | 666 | Fichiers | Fichier public : tout le monde peut lire et écrire. |
rwx------ | 700 | Répertoires | Répertoire parano : lecture, accès et écriture réservés au propriétaire. |
rwxr-xr-x | 755 | Fichiers | Fichier lisible et exécutable par tous, vous seul pouvez le modifier. |
Répertoires | Standard : tout le monde peut accéder au répertoire et lire son contenu, vous seul pouvez modifier le contenu. | ||
rwxrwxrwx | 777 | Répertoires | Répertoire public : tout le monde peut y accéder, lire le contenu et modifier celui-ci. |
Fichiers | Exécutable public : tout le monde peut le lire, l'exécuter et le modifier. |