Linux étant un système multi-utilisateurs, il peut être nécessaire de donner des droits différents sur les fichiers pour les protéger:
Confidentialité
Protection contre les erreurs
…
Sur Linux, il existe deux types de droits: les droits standards et les ACL. Nous verrons uniquement les droits standards qui sont les plus utilisés.
De plus, c’est avec les droits que l’on peut rendre un fichier exécutable.
La commande suivante permet d’afficher les permissions sur les fichiers:
$ ls -l total 40 -rwxr-xr-x. 1 axel axel 1767 10 déc 16:52 1895560_2018-12-08_18h59m02s.py drwxr-xr-x. 3 axel axel 18 21 mar 14:22 Bureau drwxrwxr-x. 3 axel axel 22 7 mar 17:08 config drwxrwxr-x. 2 axel axel 4096 10 avr 13:16 correction drwxrwxr-x. 2 axel axel 69 7 fév 17:10 cours drwxr-xr-x. 2 axel axel 6 18 nov 21:08 Documents -rw-rw-r--. 1 axel axel 343 27 mar 11:14 expr.txt drwxrwxr-x. 3 axel axel 93 7 mar 15:22 hugo drwxr-xr-x. 2 axel axel 6 18 nov 21:08 Images drwxr-xr-x. 2 axel axel 6 18 nov 21:08 Modèles drwxr-xr-x. 2 axel axel 6 18 nov 21:08 Musique drwxr-xr-x. 2 axel axel 6 18 nov 21:08 Public drwxrwxr-x. 13 axel axel 4096 11 avr 18:06 quickstart -rw-r--r--. 1 axel axel 11459 31 mar 12:53 README.md drwxrwxr-x. 3 axel axel 4096 17 mar 15:24 scripts -rwxrw-r--. 1 axel axel 52 25 fév 14:14 script.sh drwxr-xr-x. 2 axel axel 6 18 nov 21:08 Téléchargements -rw-rw-r--. 1 axel axel 9 3 avr 13:53 total.txt drwxr-xr-x. 7 axel axel 162 13 mar 21:27 tp01 drwxr-xr-x. 2 axel axel 6 18 nov 21:08 Vidéos
Les permissions s’affichent sous la forme de 3 colonnes de 3 lettres chacune.
La première colonne représente les droits pour le propriétaire du fichier (u pour user).
La deuxième colonne représente les droits pour le groupe propriétaire du fichier (g pour groupe).
La troisième colonne représente les droits pour tous les autres utilisateurs (o pour other).
Les 3 lettres représentent les droits:
r
: pour la lecture (Read)
w
: pour l’écriture (Write)
x
: pour l’exécution (eXecute). Est l’exécution pour un fichier, le droit de parcourir pour un répertoire (sans possibilité de voir le contenu si le droit Read n’a pas été donné.
Les permissions s’appliquent à une personne et un groupe:
La première colonne représente la personne qui est propriétaire du fichier ou du répertoire.
La deuxième colonne représente le groupe qui est propriétaire du fichier ou du répertoire.
Deux personnes peuvent modifier les permissions:
Le propriétaire du fichier ou du répertoire
root
La commande pour modifier les droits est chmod
.
Il existe 2 méthodes pour modifier les droits:
La méthode symbolique
La méthode octale
Elle utilise les symboles des droits:
r
: lecture
w
: écriture
x
: exécution
Elle utilise les symboles des utilisateurs:
u
: l’utilisateur propriétaire
g
: le groupe propriétaire
o
: les autres
a
: tous (utilisateur, groupe et autres)
Elle utilise les symboles d’ajout, de suppression ou de définition pour spécifier les droits:
+
: pour ajouter un ou plusieurs droits à une catégorie
-
: pour retirer un ou plusieurs droits à une catégorie
=
: pour définir les droits d’une ou plusieurs ctégories.
Voici des exemples:
$ chmod a+rwx fichier $ chmod ugo=rwx fichier
$ chmod o-w fichier
$ chmod go-w fichier
$ chmod -R u-x directory
En binaire, les droits sont les suivants:
r | w | x |
---|---|---|
1 | 1 | 1 |
4 | 2 | 1 |
Pour connaître la valeur des droits que l’on souhaite attribuer, il suffit d’additionner la valeur des droits individuels.
Ainsi, si on veut donner les droits de lecture seulement, ce sera 4, écriture seulement ce sera 2 et exécution seulement ce sera 1.
Si on veut donner les droits de lecture et écriture ce sera 6, lecture et exécutionce sera 5…
Avec la méthode octale, il faut obligatoirement définir les droits pour les trois catégories : le propriétaire, le groupe propriétaire et les autres.
Voici des exemples:
$ chmod 777 fichier
$ chmod 775 fichier
$ chmod 755 fichier
$ chmod -R 644 directory
Il est possible de modifier le propriétaire d’un fichier ou d’un répertoire.
Seul root peut effectuer cette action.
La commande est chown
.
$ chown user fichier
Pour changer à la fois le groupe propriétaire et l’utilisateur:
$ chown user:group fichier
Pour changer toute l’arborescence:
$ chown -R user directory
De même qu’il est possible de changer le propriétaire, il est possible de changer le groupe propriétaire.
Deux utilisateurs ont le droit de modifier le groupe propriétaire:
root
Le propriétaire actuel s’il appartient au groupe auquel on va donner le fichier.
$ chgrp group fichier
Pour changer le groupe pour toute une arborescence:
$ chgrp -R group directory
Il est possible de modifier d’un seul coup l’utilisteur propriétaire et le groupe propriétaire:
$ chown user:group fichier
Pour un répertoire elle donne le droit de parcourir le répertoire mais pas d’afficher son contenu.
Pour un fichier c’est elle qui lui permettra de s’exécuter (programmes, scripts).
La permission exécuter sur les fichiers, joue un peu le même rôle l’extension .exe sous Windows.
Un script ou un programme ne pourra pas s’exécuter sans la permission d’exécution.
Pour que vos script puissent s’exécuter sans les précéder de la commande bash, il faut leur donner la permission d’exécution.
On pourra alors exécuter le script:
$ ./script.sh
Le ./
permet de dire où se trouve le fichier à exécuter.
Le système cherche les exécutables dans les répertoires contenus dans la variable d’environnement $PATH
.
Si l’exécutable n’est pas dans un de ces répertoires, il faudra spécifier son chemin (soit absolu, soit relatif).
Pour voir le contenu de la variable $PATH
:
$ echo $PATH
Pour la modifier, la variable, deux possibilités:
$ export PATH=$PATH:<nouveau chemin>
Ou en mettant cette ligne dans .bashrc
ou .bash_profile
pour que ce soit permanent.
La dernière chose à faire pour pouvoir exécuter un script est de spécifier l’interprèteur à utiliser lors de lexécution. Pour ceci, il faudra ajouter la ligne suivante tout en haut du fichier:
#!/bin/bash
Quelles sont les permissions octales pour -w-r—–?
Quelles sont les permissions octales pour rw-r—w-?
Quelles sont les permissions symboliques pour 755?
Quelles sont les autorisations symboliques pour 426?
Quelle est la commande pour ajouter la permission exécution à l’utilisateur (mode symbolique)?
Quelle est la commande pour supprimer la lecture aux autres sur toute une arborescence?
Créer une arborescence telle que celle ci-dessous:
Cours11 ├── fic1.txt └── rep1 └── fic2.txt
En faisant varier les droits (pour l’utilisateur propriétaire) sur le répertoire rep1 et sur le fichier fic1.txt, essayez les commandes comme touch, cd, ls sur le répertoire rep1 et cat ou ajout de texte sur les fichiers à l’intérieur (fic1.txt et fic2.txt).
Remplissez les tableaux suivant avec les résultats.
Concernant le répertoire rep1 et ses permissions
r | w | x | rw | wx | rx | |
---|---|---|---|---|---|---|
Je peux afficher le contenu avec ls |
||||||
Je peux créer un fichier avec touch |
||||||
Je peux traverser le répertoire avec cd |
Concernant le fichier fic1.txt ses permisssions
r | w | x | rw | wx | rx | |
---|---|---|---|---|---|---|
Je peux afficher le contenu avec cat |
||||||
Je peux ajouter du texte |
Concernant le fichier fic2.txt et les permissions du répertoire rep1
r | w | x | rw | wx | rx | |
---|---|---|---|---|---|---|
Je peux voir le fichier | ||||||
Je peux afficher le contenu avec cat |
||||||
Je peux ajouter du texte |