# 4.1 - Comprendre les permissions Linux

Chaque fichier possède un propriétaire, un groupe et des permissions pour trois catégories : **utilisateur** (`u`), **groupe** (`g`) et **autres** (`o`).

## Lire les droits

```bash
ls -l fichier.txt
ls -ld dossier
stat fichier.txt
```

Exemple :

```text
-rw-r----- 1 alex informatique 1250 août 7 10:00 rapport.txt
```

Décomposition :

| Bloc | Signification |
|---|---|
| `-` | fichier ordinaire |
| `rw-` | propriétaire : lecture et écriture |
| `r--` | groupe : lecture |
| `---` | autres : aucun droit |

## Signification sur un fichier

| Droit | Lettre | Effet |
|---|---|---|
| lecture | `r` | lire le contenu |
| écriture | `w` | modifier le contenu |
| exécution | `x` | lancer le fichier comme programme |

## Signification sur un dossier

| Droit | Effet |
|---|---|
| `r` | lister les noms présents |
| `w` | créer, renommer ou supprimer des entrées |
| `x` | traverser le dossier et accéder aux éléments connus |

Les permissions d'un dossier expliquent pourquoi un utilisateur peut parfois supprimer un fichier qu'il ne peut pas modifier : la suppression agit sur l'entrée du dossier parent.

## Tester un accès

```bash
test -r fichier && echo "lisible"
test -w fichier && echo "modifiable"
test -x script.sh && echo "exécutable"
```

## Permissions par défaut et umask

```bash
umask
umask -S
```

La valeur `umask` retire des droits lors de la création. Une valeur courante `022` produit généralement des fichiers `644` et des dossiers `755`. Une valeur `027` limite davantage l'accès des autres utilisateurs.

Modification temporaire dans le shell courant :

```bash
umask 027
```

## Au-delà des droits classiques

Un `+` après les permissions dans `ls -l` peut signaler des ACL :

```bash
getfacl fichier.txt
```

Les systèmes avec SELinux ou AppArmor peuvent aussi refuser une opération malgré des droits Unix apparemment corrects. Avant d'appliquer `chmod 777`, identifier le propriétaire, les droits du dossier parent, les ACL et le contexte de sécurité.

`777` donne lecture, écriture et exécution à tout le monde. Ce n'est presque jamais une bonne correction : cela masque la cause et augmente les risques.