Les droits d'accès sous Unix

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.

Lire les droits

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 :

sas ~/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 :

[Structure des permissions d'un fichier et d'un répertoire]

Permissions

Comme nous le voyons sur l'image ci-dessus, le bloc de permissions se divise en quatre éléments.

Type

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.

Droits du propriétaire

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.

Droits du groupe

Comme les droits du propriétaire, mais s'applique aux gens qui sont dans le groupe propriétaire (voir ci-dessous sur les groupes).

Droits des autres

Comme les droits du propriétaire, mais s'applique aux gens qui sont ni le propriétaire, ni dans le groupe propriétaire.

Liens

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.

Propriétaire

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.

Groupe propriétaire

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 :

sas ~ $ 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.

Taille

Elle est indiquée en octets.

Modifier les droits d'accès

Il existe 4 commandes liées aux droits d'accès :

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.

Notation symbolique

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
u (utilisateur)
g (groupe)
o (autres)
a (tout le monde)
+ (ajoute le droit)
- (enlève le droit)
= (définit le droit)
r (lecture)
w (écriture)
x (exécution

Quelques exemples

Protéger un fichier

Ici, vous interdisez à tout autre que vous l'accès à votre fichier (c'est ce qu'à l'ENS on appelle couramment le « mode parano »).

sas ~ $ ls -l fichier.txt 
-rw-r--r--    1 toto phy03          42 Jan  5 12:08 fichier.txt
sas ~ $ chmod og-r fichier.txt 
sas ~ $ ls -l fichier.txt     
-rw-------    1 toto phy03          42 Feb  5 12:08 fichier.txt

Protéger un répertoire

Même chose pour un répertoire...

sas ~ $ ls -l | grep repertoire
drwxr-xr-x    2 toto phy03        512 Feb  5 12:19 repertoire/
sas ~ $ chmod go-rx repertoire
sas ~ $ ls -l | grep repertoire
drwx------    2 toto phy03        512 Feb  5 12:19 repertoire/

Rétablir des droits normaux pour un fichier

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 :

sas ~ $ chmod og+r fichier.txt

Rétablir des droits normaux pour un répertoire

sas ~ $ chmod go+rx repertoire

Rendre un script exécutable

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 :

sas ~ $ chmod +x script

Notation numérique

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 :

sas ~ $ ls -l fichier.txt
-rw-------    1 toto phy03          42 Feb  5 12:08 fichier.txt
sas ~ $ chmod 644 fichier.txt
sas ~ $ 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

Quelques permissions habituelles

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.
Auteurs : Émilia Robin, Nicolas George, Marie-Lan Nguyen. Dernière modification : Sun Oct 20 00:04:58 2013 +0200 par Antoine Amarilli.