Aller au contenu principal

Permissions et droits d'accès


Table des matières

  1. Comprendre rwx
  2. Notation symbolique vs octale
  3. chmod : modifier les permissions
  4. chown et chgrp : changer propriétaire
  5. Permissions spéciales
  6. Exercices pratiques


1 - Comprendre rwx

Les trois permissions de base

PermissionLettreSur fichierSur répertoire
ReadrLire le contenuLister le contenu
WritewModifier le contenuCréer/supprimer des fichiers
ExecutexExé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

PermissionSignification
rwxrwxrwxTout le monde peut tout faire
rwxr-xr-xProprié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 :

PermissionValeur
Read (r)4
Write (w)2
Execute (x)1
Aucune (-)0

Calcul : On additionne les valeurs pour chaque catégorie.

PermissionsCalculOctal
rwx4+2+17
rw-4+2+06
r-x4+0+15
r--4+0+04
---0+0+00

Exemples de conversion

SymboliqueOctaleUsage
rwxr-xr-x755Scripts, répertoires
rw-r--r--644Fichiers normaux
rw-------600Fichiers sensibles
rwx------700Scripts privés
rwxrwxrwx777⚠️ 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

OptionEffet
-RRécursif (dossiers)
-vVerbeux
--referenceCopier 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

PermissionOctalSymboleEffet
SUID4000s (user)Exécute comme le propriétaire
SGID2000s (group)Exécute comme le groupe / Héritage
Sticky1000tSuppression 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 -lUserGroupOthersOctal
-rw-r--r--????
-rwxr-x---????
drwxrwxr-x????
Voir les réponses
ls -lUserGroupOthersOctal
-rw-r--r--rw- (6)r-- (4)r-- (4)644
-rwxr-x---rwx (7)r-x (5)--- (0)750
drwxrwxr-xrwx (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:group change propriétaire ET groupe
  • SUID/SGID/Sticky = permissions spéciales avancées
  • Toujours vérifier avec ls -l après modification

🔝 Retour à la table des matières


← Chapitre précédent | Chapitre suivant : sudo et privilèges →