chmod - Permissions de fichiers et répertoires

Permissions

Cette commande permet de modifier les permissions sur un fichier/répertoire. Il y a trois types de permission :

  • r permission de lecture.

  • w permission d'écriture.

  • x permission d'exécution pour un fichier, d'explorer pour un répertoire.

Elles sont modifiables à trois niveaux :

  • u au niveau de l'utilisateur.

  • g au niveau du groupe de l'utilisateur.

  • o tous les autres utilisateurs.

Ces permissions sont visibles lorsqu'on ls -l un dossier. Pour un fichier ça ressemble en général à ça :

-rw-r--r-- 2 user user 4,0K sept. 20  2018

Décortiquons : -rw-r--r--.

  • Le premier caractère indique si l'entrée est un fichier (-) ou un dossier (d).

  • Les trois suivants indiquent les permissions de l'utilisateur propriétaire (user).

    Si la permission est accordée, elle apparaît, sinon il y a un - à la place. Elles sont

    toujours dans l'ordre rwx.

  • Les trois suivants indiquent les permissions des utilisateurs de son groupe.

  • Les trois derniers indiquent les permissions de tous les autres utilisateurs.

Notation numérique

Il est possible d'utilisation numérique. Les trois types de permissions peuvent être représentées par leur somme :

  • la permission de lecture vaut 4

  • la permission d'écriture vaut 2

  • la permission d'exécution vaut 1

En juxtaposant ce chiffre pour l'utilisateur, le groupe et les autres on obtient un nombre à trois chiffres (ex : 777 pour tous les droits).

Pour un fichier, on applique en général 644 (équivalent de rw-r--r--) : on ne veut pas qu'on puisse l'exécuter par défaut par sécurité.

Pour un répertoire, on applique en général 755 (équivalent de rwxr-xr-x) : on veut pouvoir explorer un répertoire !

Changer les permissions

Notation classique

On indique les permissions que l'on veut ajouter/enlever.

  • Pour ajouter le droit d'exécution à l'utilisateur : chmod u+x fichier.

  • Pour enlever le droit d'écriture au groupe : chmod g-w fichier.

  • Si on veut affecter tous les objets d'un répertoire, il faut ajouter l'option de récursivité : chmod -R o-w rep.

  • Pour enlever le droit d'exécution pour tout le monde : chmod a-w fichier (a pour tout le monde).

Notation numérique

On indique le code à appliquer.

  • Pour n'affecter que les dossiers : find /path/to/base/dir -type d -exec chmod 755 {} +.

  • Pour n'affecter que les fichiers : find /path/to/base/dir -type f -exec chmod 644 {} +.

Dernière mise à jour