Grummfy

Ou mon grand bazard présenté au public!

Rechercher

Divers

Site et domaine hébergé par OVH


Tutoriaux

Chmod

But

Comprendre ce qu’est un chmod, le traduire dans le sens utilisateurs vers un code chiffré (avec des valeurs octals) ou des lettres et inversement.

Qu’est-ce-que le chmod ?

Le chmod est un code de permission, une manière de géré les droit d’écriture, de lecture et d’exécution d’un fichier, dossier ou d’un programme.

Utilisation

Voici une liste de correspondance :

1 soit 0001 en binnaire x exécuter (eXecute)
2 soit 0010 en binnaire w écrire (Write)
4 soit 0100 en binnaire r lire (Read)

Et ceci à trois niveaux de correspondance :

  • Propriétaire (User => u) du fichier : centaine
  • Groupe (Group => g) propriétaire du fichier : dizaine
  • Autres (Other => o) : unité

Mais comme on le dit souvent, un bon dessin est mieux qu'un long discourt :
Explication en image du chmodExplication en image du chmod
Ses deux images sont équivalentes à 655 = -rw-r-xr-x
Le paramètre "spécial"  est réservé au dossier(d), lien (l), ...
On remarque que les paramètre sont regroupé ensemble pour le chmod en lettre et dans le cas d'un chmod ciffré il sont additionné.

Exemple

Voici quelques exemples :
655 = -rw-r-xr-x : le propriétaire peux lire et écrire dans le fichier, le groupe peux lire et exécuter le fichier et les autres peuvent lire et exécuter le fichier
666 = -rw-rw-rw- : tout le monde peux lire et écrire dans le fichier
421 = dr---w---x : un dossier dans lequel le propriétaire peux lire, le groupe écrire (et donc supprimer des fichiers) et les autres exécuter
421 = -r---w---x : un fichier que le propriétaire peux lire, le groupe écrire et les autres exécuter
700 = -rwx------ : Le propriétaire peux lire, écrire et exécuter le fichier

Allons plus loin : sticky bit et autres merveilles

Heureusement, ou malheureusement ce n'est pas aussi simple! Il y a un droit en plus : SUID, SGID, "sticky bit".
Suivant sont application, ce droit change complètement la donne. Reprenons nos trois niveau d'application : propriétaire (utilisateur), groupe et autres. Si ce droit s'applique sur le :

  • Propriétaire : On parle alors de SUID, la valeur octal de 4000. Lorsque qu'ile st appliqué sur un fichier exécutable, cela permet d'exécuter ce fichier en mode propriétaire. Cela permet donc d'exécuter un programme avec les droits du propriétaire et non les siens. Par exemple le programme passwd, qui permet de modifier son mot de passe, possède ce droit, du coup lorsque l'on l'exécute se programme dont le propriétaire est root, va pouvoir modifier le fichier /etc/shadow qui n'est écrivable que par root.
  • Groupe : On parle de SGID, la valeur octal est de 2000. Sur un répertoire, ce droit modifie le groupe propriétaire d'un fichier créé à l'intérieur de celui-ci. En gros c'est un système d'héritage de groupe à la création de fichier. Tout comme le SUID si le programme est exécutable, il s'exécutera avec les droits du groupe propriétaire.
  • Autres : On parle de Sticky bit, la valeur octal est de 1000. Ce droit interdit à un utilisateur de supprimer les fichiers, dont l'utilisateur n'est pas propriétaire, contenu dans le répertoire présentant ce droit. Pour les fichiers, cela indique que le fichier exécuter restera en mémoire, afin d'améliorer les performances, une fois sont exécution terminé.
Côté symbole, une minuscule sera utilisé si le droit x (droit d'exécution) est pas présent sinon cela sera une majuscule. Pour le SUID et le SGID cela sera la lettre 's' pour le sticky bit cela sera la lettre t.
Concrètement, voici des exemples, repris de plus haut :
0666 = -rw-rw-rw- : tout le monde peux lire et écrire dans le fichier
1421 = dr---w---t : un répertoire dans lequel le propriétaire peux lire, le groupe écrire et les autres exécuter. Cependant les utilisateurs ne pourront supprimer que leurs fichiers à eux.
2421 = -r---wS--x : un fichier que le propriétaire peux lire, le groupe écrire et les autres exécuter. Lorsque, il s'exécutera il s'exécutera avec les droits du groupe propriétaire.

Remarque

Pour changer de propriétaire il faut utiliser chown
Pour changer de groupe chgrp