# Les permissions

> Sur les systèmes d'exploitation de type Unix, un ensemble d'indicateurs associés à chaque fichier détermine qui peut accéder à ce fichier et comment il peut y accéder. Ces indicateurs sont appelés permissions ou modes de fichiers, comme dans "mode d'accès". Le nom de la commande **chmod** signifie "mode de modification". Elle restreint la manière dont on peut accéder à un fichier.

#### Visualisation des permissions dans la liste des fichiers

```shell
user@server:~$  ls -al /mnt/demo/
total 5753224
drwxr-xr-x 4 guest guest           4096 14 août  17:14  .
drwxr-xr-x 4 root  root            4096  3 janv.  2022  ..
-rwxrw-r-- 1 guest friends           56 14 août  16:16  file-demo.txt
drwxr-xr-x 2 guest guest           4096 28 sept. 11:10  film
drwxr-xr-x 2 guest guest           4096 30 déc.   2021  serie
```

```shell
-rwxrw-r-- 1 guest friends  	56 14 août  16:16  file-demo.txt
```

Voici ce que signifie chaque partie de cette information :

<table class="mtable4 tab" id="bkmrk---the-first-characte-0" style="width: 100%; height: 377.118px;"><tbody><tr class="tcw" style="height: 46.6667px;"><td style="width: 13.4768%; height: 46.6667px;">**-**</td><td style="width: 86.5391%; height: 46.6667px;">Le premier caractère représente le type de fichier : "-" pour un fichier ordinaire, "d" pour un répertoire, "l" pour un lien symbolique.</td></tr><tr class="tcw" style="height: 46.6667px;"><td style="width: 13.4768%; height: 46.6667px;">**rwx**</td><td style="width: 86.5391%; height: 46.6667px;">Les trois caractères suivants représentent les permissions du propriétaire du fichier : le propriétaire peut lire, écrire ou exécuter le fichier.</td></tr><tr class="tcw" style="height: 63.4549px;"><td style="width: 13.4768%; height: 63.4549px;">**rw-**</td><td style="width: 86.5391%; height: 63.4549px;">Les trois caractères suivants représentent les autorisations pour les membres du groupe de fichiers. Tout membre du groupe propriétaire du fichier peut lire ou écrire dans le fichier. Le dernier tiret est un caractère de remplacement ; les membres du groupe n'ont pas le droit d'exécuter ce fichier.</td></tr><tr class="tcw" style="height: 29.8785px;"><td style="width: 13.4768%; height: 29.8785px;">**r--**</td><td style="width: 86.5391%; height: 29.8785px;">Les permissions pour "autres" (tout le monde). Les autres peuvent seulement lire ce fichier.</td></tr><tr class="tcw" style="height: 35.4688px;"><td style="width: 13.4768%; height: 35.4688px;">**1**</td><td style="width: 86.5391%; height: 35.4688px;">Le nombre de liens matériels vers ce fichier.</td></tr><tr class="tcw" style="height: 29.8785px;"><td style="width: 13.4768%; height: 29.8785px;">**guest**</td><td style="width: 86.5391%; height: 29.8785px;">Le propriétaire du fichier</td></tr><tr class="tcw" style="height: 29.8785px;"><td style="width: 13.4768%; height: 29.8785px;">**friends**</td><td style="width: 86.5391%; height: 29.8785px;">Le groupe auquel appartient le dossier.</td></tr><tr class="tcw" style="height: 35.4688px;"><td style="width: 13.4768%; height: 35.4688px;">**56**</td><td style="width: 86.5391%; height: 35.4688px;">La taille du fichier en blocs.</td></tr><tr class="tcw" style="height: 29.8785px;"><td style="width: 13.4768%; height: 29.8785px;">**14 août 16:16**</td><td style="width: 86.5391%; height: 29.8785px;">Le mtime du fichier (date et heure de la dernière modification du fichier).</td></tr><tr class="tcw" style="height: 29.8785px;"><td style="width: 13.4768%; height: 29.8785px;">**file-demo.txt**</td><td style="width: 86.5391%; height: 29.8785px;">Le nom du fichier</td></tr></tbody></table>

####   


#### La commande `chmod`

```shell
chmod [OPTION]... MODE[,MODE]... FICHIER
			-v, --verbose          afficher un diagnostic pour chaque fichier traité
            -R, --recursive        modifier récursivement les fichiers et répertoires
                --help     		   afficher l''aide et quitter
```

Les lettres **u**, **g** et **o** signifient **"utilisateur"**, **"groupe"** et **"autre"**.

Le signe égal ("=") signifie "définir les autorisations exactement comme ceci".

Les lettres **"r"**, **"w"** et **"x"** signifient **"lire"**, **"écrire"** et **"exécuter"**, respectivement. Les virgules séparent les différentes classes de permissions et ne sont pas séparées par des espaces.

Exemple :

```shell
chmod u=rwx,g=rx,o=r myfile
```

Cette commande donne les droits suivants sur le fichier :

- Le propriétaire du fichier peux **lire**, **écrire** et **exécuter** le fichier
- Le groupe peux **lire** et **exécuter** le fichier
- Les autre peuvent seulement le **lire**

Il existe une commande équivalente en numérique :

```shell
chmod 754 myfile
```

Ici, les chiffres **7**, **5** et **4** représentent chacun individuellement les autorisations pour **l'utilisateur**, **le groupe** et **les autres**, dans cet ordre.

Pour comprendre la valeur de ces trois chiffres, il faut connaitre la valeur des autorisations :

- 4 signifie "lire"
- 2 signifie "écrire"
- 1 signifie "exécuter"
- 0 signifie "aucune permission"

Donc pour l'utilisateur on combine **lire, écrire** et **exécuter** soit **4 + 2 +1 = 7**

Pour le groupe **lire** et **exécuter** soit **4 + 1 = 5**

Et pour les autres seulement **lire** soit **4 = 4**

**Pour conclure la combinaison des droits a donner au fichier est `754`.**