Linux – Droits
Introduction
Après avoir vu les commandes de base nous allons voir la gestion des droits sous Linux. C’est à dire ce qu’un utilisateur est autorisé à effectuer sur un fichier ou un répertoire.
Propriétaires
Sous Linux tous les fichiers et répertoires sont affectés à un utilisateur et un groupe. On dit qu’ils sont les propriétaires du fichier.
Lire les propriétaires
1) Allez dans votre répertoire personnel et effectuez un touch test
pour créer un fichier vide puis un ls -l
.
Vous devriez obtenir une ligne ressemblant à ceci :
-rw-r--r-- 2 login login 0 sept. 10 12:22 test
La partie qui nous intéresse ici est : login login. Ce sont l’utilisateur propriétaire du fichier/répertoire et le groupe propriétaire du fichier/répertoire.
2) Indiquez clairement ci-dessous ou sont indiqués l’utilisateur et le groupe propriétaires du fichier test.
-rw-r--r-- 2 login login 0 sept. 10 12:22 test
Le premier login
indique l'utilisateur, le deuxième login
indique le groupe.
3) Trouvez l’utilisateur et le groupe propriétaires des répertoires à la racine du système /
.
root
4) Quels sont l’utilisateur et le groupe propriétaires de /var/mail
?
root
pour l'utilisateur et mail
pour le groupe
Root est l’administrateur du système, il a tous les droits, il peut faire ce qu’il veut avec tous les fichiers. Nous allons voir dans la suite comment sont établis les droits pour les autres utilisateurs.
Changer les propriétaires
La commande pour changer d’utilisateur propriétaire est chown
(change owner) :
chown momo fichier
ici momo devient le propriétaire du fichier
Pour changer de groupe on utilise la commande chgrp
(change group) :
chgrp groupe1 fichier
ici groupe1 devient le nouveau groupe propriétaire du ficher.
Seul root peut changer le propriétaire d’un fichier. L’utilisateur et le groupe doivent exister lors du changement. Et le propriétaire doit appartenir au groupe pour changer un fichier de groupe. Seul root peut attribuer n’importe quel groupe à un fichier.
Droits
Lire les droits
On peut voir les droits d’un fichier/répertoire avec la commande ls -l
:
-rw-r--r-- 2 login login 0 sept. 10 12:22 test
Ce sont les neuf symboles après le premier au début de la ligne ci-dessus.
Le premier symbole de la ligne ne donne pas d’information sur les droits mais sur le type de fichier :
- d : répertoire ;
- l : lien ;
- - : fichier.
Les neufs symboles suivants représentent donc les droits. Il existe trois droits disponibles :
- lecture : r (read) ;
- écriture : w (write) ;
- exécution : x (execute).
Ces droits n’ont pas la même signification pour un répertoire ou pour un fichier.
Pour les fichiers :
- lecture (r) : on peut lire le fichier avec un éditeur par exemple ;
- écriture (w) : on peut modifier le contenu du fichier ;
- exécution (x) : on peut exécuter le fichier si c’est possible (script, programme…).
Pour les répertoires :
- lecture (r) : on peut afficher le contenu du répertoire ;
- écriture (w) : on peut créer, supprimer, renommer les fichiers de ce répertoire (même si nous n’avons pas le droit d’écrire dans les fichiers) ;
- exécution (x) : on peut accéder ou traverser le répertoire (par exemple avec cd).
Les neufs symboles des droits sont à lire par groupes de trois :
- les trois premiers sont pour l’utilisateur propriétaire ;
- les trois suivants sont pour le groupe propriétaire ;
- les trois derniers sont pour les autres utilisateurs ;
Ainsi dans l’exemple ci-dessus (rwxr-xr-x) qui correspond à un dossier on peut dire :
- le propriétaire peut lire et écrire dans le dossier et le traverser (rwx) ;
- les membres du groupe peuvent lire dans le dossier et le traverser (r-x) ;
- les autres peuvent lire dans le dossier et le traverser (r-x) ;
5) Créez un répertoire et un fichier dans /tmp. Quels sont les droits par défaut d’un répertoire d’une part et d’un fichier d’autre part ?
Pour un fichier : rw-rw-r--
Pour un répertoire : rwxrwxr-x
6) Indiquez clairement ci-dessous ou sont indiqués les droits du propriétaire, du groupe et des autres pour le fichier test.
-rw-r--r-- 2 login login 0 sept. 10 12:22 test
Pour le propriétaire : rw-
Pour le groupe : r--
Pour les autres : r--
Application des droits
Pour savoir quels droits s’appliquent à un utilisateur il faut analyser de gauche à droite :
- s’il est le propriétaire ce sont les droits du propriétaire sinon…
- s’il appartient au groupe propriétaire ce sont les droits du groupe sinon…
- se sont les droits des autres.
7) Quel sont les droits des utilisateurs suivants sur le fichier tutu ?
-rwxr-xr-x 2 jean 1g4 4096 sept. 10 12:22 tutu
- eleve (qui n'appartient pas au groupe 1g4)
- jean (qui n'appartient pas au groupe 1g4)
- thomas qui appartient au groupe 1g4
- eleve : r-x (lecture, exécution)
- jean : rwx (lecture, écriture, exécution)
- thomas : r-x (lecture, exécution)
Changer les droits
Pour changer les droits on utilisera la commande chmod
.
Il est possible de changer les droits récursivement avec l’option -R.
Méthode 1
On indique à qui on veut appliquer le changement avec une lettre :
- u pour l’utilisateur ;
- g pour le groupe propriétaire ;
- o pour les autres utilisateur (other) ;
- a pour tous (all).
On indique si on veut ajouter (+), enlever (-) ou remplacer (=) les droits.
Puis on indique les droits qu’on veut appliquer : r, w ou x.
Enfin on indique le fichier/répertoire à qui s’applique le changement.
Exemple :
Pour ajouter le droit d’écriture pour le groupe au fichier toto :
chmod g+w toto
Pour donner uniquement le droit d’exécution à tout le monde au répertoire rep1 :
chmod a=x rep1
Il est possible de combiner ces commandes :
chmod ug+rw,o+x rep2
ajoute la lecture et l’écriture à l’utilisateur et au groupe et ajoute l’exécution aux autres.
8) Que fait la commande suivante ?
chmod u-x,g+x,o-rwx fichier
Elle enlève les droits d'exécution à l'utilisateur propriétaire sur le fichier fichier
.
Elle donne les droits d'exécution au groupe propriétaire sur le fichier fichier
.
Elle enlève les droits de lecture, d'écriture et d'exécution aux autres sur le fichier fichier
.
9) Quelle commande doit-on utiliser pour passer les droits de ce fichier à rwxr-xr--
?
-r-xrwxr-x 2 eleve eleve 85 oct. 25 02:36 mon_fichier
chmod u+w,g-w,o-x mon_fichier
Méthode 2
On peut de manière plus rapide, donner la valeur octale des droits. Pour cela, il suffit de considérer les droits comme un nombre binaire avec un 1 lorsqu’il y a un droit et 0 sinon. On remplace ensuite les groupes de trois bits par un nombre entre 0 et 7 : c’est l’octal.
Exemple : rwxr-xr-x → rwx r-x r-x → 111 101 101 → 755
Pour donner ces droits au répertoire rep1, on fera
chmod 755 rep1
Cette méthode est plus complexe à appréhender mais elle permet de gagner du temps lorsqu’on connaît les valeurs octales des droits les plus utilisés.
10) Reprendre la question 9 avec cette méthode.
chmod 754 mon_fichier
11) Que fait la commande ci-dessous ?
chmod 544 fichier.txt
Elle attribue les droits r-xr--r--
au fichier fichier.txt
.