3.8 Les droits
Chaque fichier, répertoire ou fichier spécial est représenté par un
descripteur.
Entre autres choses, on y trouve
un propriétaire,
une date de dernière modification,
une liste de droits d'accès.
Le propriétaire d'un fichier est un utilisateur.
L'ensemble des utilisateurs est scindé en groupes : ensemble
d'utilisateurs travaillant, par exemple, sur un même projet.
Un descripteur répartit cette masse de personnes en trois classes :
le propriétaire (unique),
le groupe (non moins unique) du propriétaire,
tous les autres utilisateurs.
Lecture et écriture sont les opérations fondamentales que l'on peut
appliquer à un fichier.
Créer ou supprimer un fichier est assimilé à une écriture dans son
répertoire père.
sh ne peut exécuter un fichier que si celui-ci possède le droit d'être
exécuté,
c'est-à-dire si c'est un programme issu d'une édition de liens sans
faute ou encore si c'est un fichier contenant un texte compréhensible par
sh.
Pour un répertoire le sens de ces droits est un peu plus complexe.
Le droit de lecture permet de consulter ce que contient un répertoire
(par
ls,
par exemple).
Le droit d'écriture permet de créer ou supprimer des entrées du
répertoire ; enfin le droit d'exécution permet d'accéder aux entrées
dont on connait les noms (surtout utile quand on ne dispose pas des
deux autres droits).
Par défaut, les fichiers ou répertoires que créent un utilisateur sont
dans les modes
-rw-rw-r-- et
drwxr-xr-x.
Les membres de son propre groupe ont les mêmes droits que le créateur mais
les étrangers ne peuvent qu'au plus lire et fouiller mais au grand
jamais détruire.
Tous les attributs d'un descripteur sont modifiables.
chown (pour CHange OWNer) change le propriétaire.
chown nemo *.f
donne à
nemo tous les fichiers FORTRAN du répertoire courant.
chgrp (pour CHange GRouP) change le groupe.
chgrp daemon *.c
donne au groupe démoniaque les fichiers en C.
Ce groupe est un groupe système comme
sys et
bin.
daemon est le groupe du super-utilisateur
root.
Les utilisateurs sont souvent dans le groupe
users.
chmod (pour CHange MODes) change les droits d'accès.
chmod u+xa-w * */* */*/*
(+x)
rend exécutable pour le propriétaire (user) et interdit (-)
pour tout le monde (all)
le doit de modification (w).
On peut consulter les droits grâce à l'option
-l de
ls.
ls -l liste le type, les droits, le nombre de liens, le propriétaire, la taille,
la date de dernière modification de toutes les entrées du répertoire
courant.
Par exemple
$ ls -l
-rw-r--r-- 1 queinnec 2205 Feb 10 20:52 u00
-rw-r--r-- 1 queinnec 25932 Feb 11 22:04 u2
-rw-r--r-- 1 queinnec 12699 Feb 19 21:21 u3
-rw------- 1 queinnec 12651 Feb 19 21:20 u3.CKP
drw-r--r-- 1 queinnec 64 Feb 7 21:36 ufinal
-rw-r--r-- 1 queinnec 2125 Feb 7 21:36 umc
-rw-r--r-- 1 queinnec 988 Jan 31 21:11 unp
-rw-r--r-- 1 queinnec 2398 Jan 29 22:05 unx1
Le type est
- pour un fichier normal et
d pour un répertoire.
Les droits sont représentés par les neuf caractères qui suivent :
r (pour Read) est la lecture,
w (pour Write) est l'écriture,
x (pour eXecute) est l'« exécutabilité ».
Un tiret signale un droit non octroyé.