chmod - Permissions de fichiers et répertoires
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 sonttoujours dans l'ordrerwx
. - Les trois suivants indiquent les permissions des utilisateurs de son groupe.
- Les trois derniers indiquent les permissions de tous les autres utilisateurs.
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 !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).
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 {} +
.