Permissions et droits d'accès
Table des matières
- Comprendre rwx
- Notation symbolique vs octale
- chmod : modifier les permissions
- chown et chgrp : changer propriétaire
- Permissions spéciales
- Exercices pratiques
1 - Comprendre rwx
Les trois permissions de base
| Permission | Lettre | Sur fichier | Sur répertoire |
|---|---|---|---|
| Read | r | Lire le contenu | Lister le contenu |
| Write | w | Modifier le contenu | Créer/supprimer des fichiers |
| Execute | x | Exécuter (script/programme) | Entrer dans le répertoire |
Les trois catégories
Lecture de ls -l
-rwxr-xr-- 1 john developers 4096 Jan 15 10:30 script.sh
│├─┤├─┤├─┤
││ │ │
││ │ └── Others : r-- (lecture seule)
││ └── Group : r-x (lecture + exécution)
│└── User : rwx (lecture + écriture + exécution)
└── Type (- = fichier, d = dossier)
Exemples de permissions
| Permission | Signification |
|---|---|
rwxrwxrwx | Tout le monde peut tout faire |
rwxr-xr-x | Propriétaire tout, autres lecture+exécution |
rw-r--r-- | Propriétaire lecture+écriture, autres lecture |
rwx------ | Seulement le propriétaire |
r-------- | Lecture propriétaire uniquement |
attention
Un fichier avec les permissions rwxrwxrwx (777) est une faille de sécurité ! N'importe qui peut le modifier.
🔝 Retour à la table des matières
2 - Notation symbolique vs octale
Notation symbolique
Utilise les lettres pour représenter les permissions.
rwxr-xr--
│││││││││
│││││││└┴── Others : r-- = 4
│││││└┴──── Group : r-x = 5
│││└┴────── User : rwx = 7
└┴┴──────── Propriétaire, Groupe, Autres
Notation octale (numérique)
Chaque permission a une valeur :
| Permission | Valeur |
|---|---|
| Read (r) | 4 |
| Write (w) | 2 |
| Execute (x) | 1 |
| Aucune (-) | 0 |
Calcul : On additionne les valeurs pour chaque catégorie.
| Permissions | Calcul | Octal |
|---|---|---|
rwx | 4+2+1 | 7 |
rw- | 4+2+0 | 6 |
r-x | 4+0+1 | 5 |
r-- | 4+0+0 | 4 |
--- | 0+0+0 | 0 |
Exemples de conversion
| Symbolique | Octale | Usage |
|---|---|---|
rwxr-xr-x | 755 | Scripts, répertoires |
rw-r--r-- | 644 | Fichiers normaux |
rw------- | 600 | Fichiers sensibles |
rwx------ | 700 | Scripts privés |
rwxrwxrwx | 777 | ⚠️ Dangereux ! |
Tableau de référence rapide
Octal Symbolique Description
────────────────────────────────
0 --- Aucun droit
1 --x Exécution
2 -w- Écriture
3 -wx Écriture + Exécution
4 r-- Lecture
5 r-x Lecture + Exécution
6 rw- Lecture + Écriture
7 rwx Tous les droits
🔝 Retour à la table des matières
3 - chmod : modifier les permissions
chmod = change mode
Syntaxe
chmod [options] MODE fichier
Mode symbolique
# Ajouter une permission (+)
chmod u+x script.sh # Ajoute exécution au propriétaire
chmod g+w fichier.txt # Ajoute écriture au groupe
chmod o+r fichier.txt # Ajoute lecture aux autres
chmod a+x script.sh # Ajoute exécution à tous (a = all)
# Retirer une permission (-)
chmod o-w fichier.txt # Retire écriture aux autres
chmod g-x script.sh # Retire exécution au groupe
# Définir exactement (=)
chmod u=rwx,g=rx,o=r fichier.txt
chmod a=r fichier.txt # Lecture seule pour tous
Mode octal
chmod 755 script.sh # rwxr-xr-x
chmod 644 fichier.txt # rw-r--r--
chmod 600 secret.txt # rw-------
chmod 700 dossier/ # rwx------
Options utiles
| Option | Effet |
|---|---|
-R | Récursif (dossiers) |
-v | Verbeux |
--reference | Copier les permissions d'un autre fichier |
# Appliquer récursivement
chmod -R 755 dossier/
# Mode verbeux
chmod -v 644 fichier.txt
# mode of 'fichier.txt' changed from 0755 (rwxr-xr-x) to 0644 (rw-r--r--)
# Copier les permissions
chmod --reference=modele.txt cible.txt
Cas d'usage courants
# Rendre un script exécutable
chmod +x script.sh
# Protéger une clé SSH
chmod 600 ~/.ssh/id_rsa
# Répertoire web
chmod 755 /var/www/html/
chmod 644 /var/www/html/*.html
# Fichier de configuration sensible
chmod 600 config.ini
🔝 Retour à la table des matières
4 - chown et chgrp : changer propriétaire
chown - Changer le propriétaire
# Changer le propriétaire
sudo chown alice fichier.txt
# Changer propriétaire et groupe
sudo chown alice:developers fichier.txt
# Changer seulement le groupe (avec :)
sudo chown :developers fichier.txt
# Récursif
sudo chown -R alice:developers dossier/
chgrp - Changer le groupe
# Changer le groupe
sudo chgrp developers fichier.txt
# Récursif
sudo chgrp -R www-data /var/www/
Cas d'usage DevOps
# Fichiers web appartenant à www-data
sudo chown -R www-data:www-data /var/www/html/
# Répertoire de déploiement
sudo chown -R deploy:deploy /app/
# Fichiers de log
sudo chown syslog:adm /var/log/app.log
astuce
La syntaxe chown user:group est plus pratique que d'utiliser chown puis chgrp séparément.
🔝 Retour à la table des matières
5 - Permissions spéciales
Au-delà de rwx, il existe trois permissions spéciales.
SUID (Set User ID)
Quand un fichier avec SUID est exécuté, il s'exécute avec les droits du propriétaire (pas de l'utilisateur qui le lance).
# Exemple : /usr/bin/passwd
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root ... /usr/bin/passwd
# ^
# s = SUID (exécution avec droits root)
# Définir SUID
chmod u+s fichier
chmod 4755 fichier
SGID (Set Group ID)
- Sur un fichier : s'exécute avec les droits du groupe
- Sur un répertoire : les fichiers créés héritent du groupe du répertoire
# Sur un répertoire partagé
chmod g+s /shared/
chmod 2775 /shared/
ls -ld /shared/
drwxrwsr-x 2 root developers ... /shared/
# ^
# s = SGID
Sticky bit
Sur un répertoire, seul le propriétaire d'un fichier peut le supprimer (même si d'autres ont le droit d'écriture).
# Exemple : /tmp
ls -ld /tmp
drwxrwxrwt 10 root root ... /tmp
# ^
# t = Sticky bit
# Définir le sticky bit
chmod +t dossier/
chmod 1777 dossier/
Tableau récapitulatif
| Permission | Octal | Symbole | Effet |
|---|---|---|---|
| SUID | 4000 | s (user) | Exécute comme le propriétaire |
| SGID | 2000 | s (group) | Exécute comme le groupe / Héritage |
| Sticky | 1000 | t | Suppression restreinte au propriétaire |
Calcul octal avec permissions spéciales
chmod 4755 = SUID + rwxr-xr-x
chmod 2755 = SGID + rwxr-xr-x
chmod 1777 = Sticky + rwxrwxrwx
chmod 6755 = SUID + SGID + rwxr-xr-x
🔝 Retour à la table des matières
6 - Exercices pratiques
Exercice 1 : Lecture de permissions
Déchiffrez ces permissions :
| ls -l | User | Group | Others | Octal |
|---|---|---|---|---|
-rw-r--r-- | ? | ? | ? | ? |
-rwxr-x--- | ? | ? | ? | ? |
drwxrwxr-x | ? | ? | ? | ? |
Voir les réponses
| ls -l | User | Group | Others | Octal |
|---|---|---|---|---|
-rw-r--r-- | rw- (6) | r-- (4) | r-- (4) | 644 |
-rwxr-x--- | rwx (7) | r-x (5) | --- (0) | 750 |
drwxrwxr-x | rwx (7) | rwx (7) | r-x (5) | 775 |
Exercice 2 : Définir des permissions
# Créez ces fichiers et définissez les permissions :
# 1. Script exécutable par tous
touch script.sh
chmod 755 script.sh
# 2. Fichier de config lisible par propriétaire seulement
touch config.ini
chmod 600 config.ini
# 3. Répertoire partagé (groupe peut écrire)
mkdir shared
chmod 775 shared
# Vérifiez
ls -la script.sh config.ini shared
Exercice 3 : Changer les propriétaires
# En tant que root (sudo)
# 1. Créez un utilisateur test
sudo useradd -m testuser
# 2. Créez un fichier
touch testfile.txt
# 3. Donnez-le à testuser
sudo chown testuser:testuser testfile.txt
# 4. Vérifiez
ls -l testfile.txt
# 5. Nettoyez
sudo userdel -r testuser
rm testfile.txt
🔝 Retour à la table des matières
Points clés à retenir
- r=4, w=2, x=1 → additionnez pour obtenir l'octal
- chmod 755 = rwxr-xr-x (scripts, répertoires)
- chmod 644 = rw-r--r-- (fichiers normaux)
- chmod 600 = rw------- (fichiers sensibles)
chown user:groupchange propriétaire ET groupe- SUID/SGID/Sticky = permissions spéciales avancées
- Toujours vérifier avec
ls -laprès modification
🔝 Retour à la table des matières
← Chapitre précédent | Chapitre suivant : sudo et privilèges →