Modifier le chmod… vous avez dit chmod ?
Lorsque l’on travaille sur un site web et notamment sur la partie serveur en ligne, nous sommes souvent amenés à entendre parler de chmod.
Derrière cette abréviation, qui vaut pour changement de mode, se définissent les droits d’utilisateurs d’un fichier ou d’un dossier, sous forme de commandes Unix.
En fait, tout fichier placé sur un serveur est affecté de droits pour les utilisateurs qui seraient amenés à l’utiliser… Que cela soit pour des raisons de sécurité, de cohérence ou de bon sens, tout le monde n’a pas accès à tout et ne possède pas les mêmes droits.
Description des droits
Pour répartir l’affectation de ces droits, d’une part les utilisateurs sont identifiés sous trois catégories : le propriétaire (u), le groupe du propriétaire (g) et les autres utilisateurs (o).
De même, les droits sont déclinés sous trois types différents qui sont : la lecture (r), l’écriture (w) et l’exécution (x) de l’élément affecté. L’utilisation du mode binaire sur ces trois types est très explicite, en usant de 0 pour ne pas donner le droit et de 1 pour donner le droit.
Ce qui par exemple, présente des triplés de type 111 pour un utilisateur qui aurait tous les droits (à la lecture, à l’écriture et à l’exécution d’un élément), ou de type 000 pour un utilisateur qui n’aurait aucun droit sur l’élément.
Côté serveur, les droits sont exprimés au travers des lettres r pour Read (lecture), w pour Write (écriture) et x pour eXecute (exécution). L’ensemble de ces permissions peut-être affecté soit à un fichier, soit à un dossier.
Passer du binaire à l’octal
Du fait que les droits s’appliquent non pas à un utilisateur, mais à un fichier (ou à un dossier), l’ensemble des trois groupes d’utilisateurs doit être définis… donc, nous avons du coup à faire, à trois triplés…
Par exemple : 111 111 001, signifie que le propriétaire a tous les droits, le groupe du propriétaire également, mais que les autres utilisateurs ne peuvent qu’exécuter l’élément affecté.
Au lieu d’utiliser le mode binaire pour définir les droits, nous pouvons faire appel à une base dans un autre mode comme décimal, ou encore octal. Rappelez-vous, le mode binaire possède deux digits, 0 et 1. Donc, pour compter cela donne 0, 1, 10, 11, 100… comme nous le ferions en base décimale avec 10 digits cela donne 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11…
Dans notre cas, nos valeurs de droits partent de 000 à 111… soit 000, 001, 010, 011, 100, 101, 110, 111 un peu comme si nous comptions en décimal de 0 à 7. Il existe diverses autres modes et bases…
Nous pouvons avoir recours à un mode octal qui use de 8 digits 0, 1, 2, 3, 4, 5, 6, 7 et qui répond complètement à nos besoins. De ce fait, l’exemple en mode binaire cité précédemment, 111 111 001, peut s’écrire 771 en mode octal.
Binaire | Octal | Droits | Observations |
---|---|---|---|
000 | 0 | — | Aucun droit |
001 | 1 | –x | Exécution |
010 | 2 | -w- | Écriture |
011 | 3 | -wx | Écriture et exécution |
100 | 4 | r– | Lecture |
101 | 5 | r-x | Lecture et exécution |
110 | 6 | rw- | Lecture et écriture |
111 | 7 | rwx | Tous les droits |
Modifier ou adapter le chmod
Ligne de commandes
Pour utiliser les chmod, il faut user de commandes et par exemple pour attribuer des droits en écriture et en lecture au propriétaire, cela donne la ligne d’instructions suivante :
chmod u+rw le_fichier_a_affecter
Il est possible d’agir sur plusieurs types d’utilisateurs en séparant par des virgules, ou en ayant recours à l’identifiant a qui vaut pour all. Pour affecter un dossier, il faudrait poser un paramètre supplémentaire, afin de spécifier si la commande doit être récursive à l’ensemble du dossier, ou si elle ne doit affecter que le premier niveau de l’élément.
N’hésitez pas à consulter d’autre sites comme Quelques commandes Shell UNIX sur enseignement.polytechnique.fr si vous souhaitez aller plus loin en utilisant les lignes de commandes.
Utiliser un client FTP
Une autre solution, simple et pratique, reste d’avoir recours à un client FTP type Filezilla, CyberDuck, ou encore Dreamweaver.
Tout client FTP, permet depuis un menu contextuel d’accéder à une boite de dialogue très intuitive pour régler l’ensemble des droits de l’élément sélectionné.
Il suffit donc de sélectionner un élément coté serveur, de faire un clic droit, et de paramétrer la boite de dialogue en cochant ou décochant des cases pour obtenir les permissions d’accès souhaitées.
Généralement, depuis cette même boite de dialogue, il est possible d’entrer les valeurs octales dans un champ, sous formes de valeurs 777 ou 755 par exemple. De même, si l’élément sélectionné est un dossier, il est possible d’autoriser la récursion dans les sous dossiers et d’affiner notre choix en n’affectant que les fichiers, ou que les dossiers ou les deux.
Utiliser PHP
Il est également possible d’avoir recours à des instructions PHP pour définir ces permissions. Attention, si vous usez de PHP, le propriétaire deviendra donc Apache, et il ne sera plus possible d’user d’un client FTP pour modifier, ou du moins intervenir, à nouveau sur les permissions d’accès de ce fichier. Il faudra avoir recours à PHP.
De plus, pour affecter un fichier sur un serveur, le fichier PHP contenant l’instruction devra se situer sur le serveur en question, donc il n’est pas possible d’intervenir à distance, uniquement en local. La ligne d’instruction suivante, donne tous les droits au propriétaire et uniquement lecture, exécution pour les autres :
<?php chmod("/le_fichier_a_affecter", 0755); ?>
Il faut s’assurer que le paramètre de permission passé ne soit pas une chaîne de caractères (afin d’éviter une conversion implicite en Number) et que le paramètre soit également en mode octal. Pour cela, il faut le préfixer par la valeur 0. Vous pouvez en savoir plus et creuser le sujet si vous le souhaitez, en vous rendant sur la page chmod du site php.net
1 réponse
[…] vous que les autorisations (chmod) de fichiers soient placées sur 644 et celle des dossiers […]