Puce et Média

Recherche et développement en multimédia

  • Augmenter la taille
  • Taille par défaut
  • Diminuer la taille
Puce et Média > Gestion Client - Serveur > Modifier le chmod... vous avez dit chmod ?

Modifier le chmod... vous avez dit chmod ?

Envoyer Imprimer PDF

chmod-teaserLorsque 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 emmené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. Coté 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 en fait à 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 doits, 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.

Tableau de correspondances du chmod en binaire, octal et droits
Binaire Octal Droits Observations
000 0 --- Aucun droits
001 1 --x Exécution
010 2 -w- Ecriture
011 3 -wx Ecriture 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'instruction 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 passer un paramètre suplé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

chmod-ftp-thumbUne autre solution, simple et pratique, reste d'avoir recour à 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érallement depuis cette même boite de dialogue il est possible d'entrer les valeurs octales dans un champs, 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, 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 à nouveau 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 chaine 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

 


Puce et Média > Gestion Client - Serveur > Modifier le chmod... vous avez dit chmod ?