site sans réclame GNU/LinuxDebianÉcrireS'abonner

Les droits sur les fichiers et répertoires sur GNU/Linux

U

N des grands intérêts d'Unix est d'avoir été conçu dès le départ avec la notion de droits: les personnes utilisant le même poste de travail peuvent très bien (et c'est recommandé) avoir leurs espaces séparés pour ne pas risquer d'abîmer le travail des autres, voire de rendre le système inutilisable.

1. Root: le superutilisateur

2. Les droits sur un fichier

3. Modifier les droits d'un fichier

4. Changer de propriétaire

1. Root: le superutilisateur

La personne qui installe le système détient les droits de superutilisateur, qui lui permettent d'administrer le système, c'est-à-dire installer ou désinstaller des logiciels, des périphériques, d'interdire ou de permettre de nouveaux utilisateurs... le mot de passe root est donc une question de survie pour un système Unix. Par ailleurs, l'administrateur ne devrait jamais utiliser les droits de superutilisateur pour son travail personnel, au risque d'abîmer le système ou les fichiers des autres utilisateurs. En utilisant des droits plus limités, on fait moins de bêtises...

En console, on utilise la commande su [Enter] puis on saisit le mot de passe super-utilisateur. De $ (par défaut), l'invite devient #, qui est la signature d'une console disposant des droits de superutilisateur. On peut alors utiliser les éditeurs vim (obsolète), emacs (compliqué) ou nano (intermédiaire) pour éditer les fichiers sensibles, et certaines commandes qui requièrent les droits les plus élevés. mc permet la navigation et l'édition intuitive des fichiers de configuration.

On quitte le mode super-utilisateur en saisissant exit (attention: su toto revient à l'utilisateur toto, mais un exit à ce stade revient au mode superutilisateur).

Les distributions sérieuses actuelles ne permettent pas de lancer une application graphique à partir d'une console "super-utilisateur". On contourne cette interdiction (dans les cas rarissimes nécessitant une mise au point ou pour les applications nécessitant ces droits, comme un installateur d'applications ou l'administration du système) en installant gksu:

suEn mode super-utilisateur: su [Enter] apt-get install gksu

Il suffit de lancer, d'une console "simple utilisateur" la commande gksu votre_application.

2. Les droits sur un fichier

En Unix, il est possible de décider qui peut lire ou modifier vos fichiers, ou encore lancer vos scripts.

La commande ls -l dans n'importe quel répertoire non vide retourne des informations de ce genre:

-rwxr-----  1 toto toto   46284 2011-07-03 19:54 LTR.py
drwxr-x--- 12 toto nini    4096 2013-07-04 15:00 musique
-rw-r--r--  1 toto toto   46284 2014-07-03 19:54 nature.txt

La première colonne a une largeur de 10 caractères. Le premier donne la nature du fichier: d pour directory (répertoire), un trait pour un fichier simple, l pour un lien...

Les trois caractères suivants concernent le propriétaire du fichier (le premier nom qui suit, à savoir, toto). Le r (read) signifie que toto a le droit de lire le fichier; le w (write) que toto a le droit d'écrire (modifier ou effacer) et x (execute pour les fichiers et ouverture pour les répertoires). Viennent ensuite trois caractères concernant les permissions octroyées aux personnes inscrites à un groupe (dont le nom est désigné dans la deuxième colonne de noms). Les trois derniers caractères concernent les permissions conférées à tout le monde.

Pour affilier nini au groupe toto, il faut l'y inscrire:

suEn mode super-utilisateur: su [Enter] addgroup nini toto

ou l'ajouter (également en mode superutilisateur) dans le fichier /etc/group en regard de toto:

lp:x:7:peps,nini,toto
audio:x:29:peps,nini,toto
video:x:44:peps,nini,toto
games:x:60:
toto:x:1000:nini
nini:x:501:
peps:x:502:
 etc.

On voit dans ce fichier toto, peps et nini ont accès à l'imprimante, au son et à la vidéo. nini a les droits de groupe de toto. La ligne:

-rwxr-----  1 toto toto   46284 2011-07-03 19:54 LTR.py

... permet à nini de lire le fichier LTR.py (mais pas de l'exécuter) car elle appartient au groupe toto qui y a le droit de le lire mais pas de l'exécuter (r--) ; le propriétaire toto a tous les droits sur ce fichier (rwx).

Les trois derniers caractères concernent tous les utilisateurs. Le 3e r permet à quiconque de lire un fichier, dont peps bien qu'il ne soit pas toto et ne fasse pas partie du groupe toto:

-rw-r--r--  1 toto toto   46284 2014-07-03 19:54 nature.txt

Par contre, peps ne peut pénétrer dans le répertoire musique, n'étant pas le propriétaire, n'appartenant pas au groupe nini et le troisième r n'existant pas:

drwxr-x--- 12 toto nini  4096 2013-07-04 15:00 musique

Pour les répertoires, x permet leur ouverture.

3. Modifier les droits d'un fichier

Seul le propriétaire d'un fichier ou d'un répertoire peut en modifier les droits. Toto peut changer les droits du fichier nature.txt, puisqu'il lui appartient:

drwxr-x--- 12 toto nini    4096 2013-07-04 15:00 musique

... avec chmod:

toto@villon:~$ chmod 754 nature.txt

Les chiffres représentent respectivement les droits du propriétaire (user), du groupe (group) et de tout le monde (other). Chaque chiffre se décompose ensuite:

7 = 4 (r) + 2 (w) + 1 (x)  = rwx (tous les droits)
6 = 4 (r) + 2 (w)          = rw- (droits de lecture et d'écriture)
5 = 4 (r)         + 1 (x)  = r-x (droits de lecture et d'exécution)
4 = 4 (r)                  = r-- (droits de lecture seule; s'utilise surtout pour le groupe et pour "tout le monde")
3 =         2 (w) + 1 (x)  = -wx (écriture et exécution: très rare)
2 =         2 (w)          = -w- (écriture seule: très rare)
1 =               + 1 (x)  = --x (exécution seule: très rare)
0 =                        = --- (aucun droit; s'utilise surtout pour "tout le monde")

Il existe une autre manière de changer les droits, utilisant les lettres u (user), g (group), o (other), a (all: les trois catégories), en plus des r, w et x:

chmod g=rwx accorde tous les droits au groupe
chmod o= retire tous les droits aux autres, ni utilisateur ni groupe
chmod g+rx ajoute les droits de lecture et d'exécution au groupe
chmod a-x retire le droit d'exécution à tout le monde (y compris au propriétaire)
chmod a=r,u=wx (pas d'espace après la virgule) accorde le droit de lecture à tout le monde, celui d'édition et d'exécution au propriétaire seulement

Notes

4. Changer de propriétaire et de groupe

Pour modifier la propriété d'un fichier ou d'un répertoire, on utilise chown:

chown toto:nini LTR.py fixe le propriétaire toto et le groupe nini au fichier LTR.py

À part le superutilisateur, seul le propriétaire d'un fichier peut en changer la propriété.