Comment chmoder

Les Chmods sont un peu déstabilisants au début et ont la réputation d’être difficiles à appréhender. Voici néanmoins quelques explications qui devraient vous permettre de comprendre la raison de leur importance et d’apprendre à les installer pour que votre site GuppY fonctionne bien.
 

* Définition


Les Chmods sont les permissions que vous installez sur les fichiers et répertoires qui constituent l’ensemble de votre site GuppY. Les Chmods indiquent quelles taches sont autorisées et pour qui elles le sont, et ce pour chaque fichier de votre site. Si les Chmods sont mal mis en place, votre GuppY en ligne dysfonctionnera et vous renverra des messages d’erreurs du type :

Warning: fopen("data/logh.dtb","w") - Permission denied in http://www.mysite.com/inc/functions.php on line xxx suivant les versions

Warning: Supplied argument is not a valid File-Handle resource in http://www.mysite.com/inc/ functions.php on line xxx suivant les versions

Warning: fopen("../data/logh.dtb", "w") - Read-only file system in functions.php on line xxx suivant les versions

Warning: fputs(): supplied argument is not a valid File-Handle resource in functions.php on line xxx suivant les versions

* A l'origine des chmods : le système Unix


Pour comprendre la raison des Chmods, il faut faire un petit détour par Unix. Unix étant le système utilisé par la plupart des Fournisseurs d’Accès Internet (FAI), ces derniers sont tributaires de ses spécificités. L’une d’entre elles, qui le rend si populaire, est d’être un système multi-utilisateurs. Cette gestion multi-utilisateurs présente de nombreux avantages : par exemple, elle facilite grandement le partage de fichiers. Mais c’est précisément parce qu’il est multi-utilisateurs, que ce système doit nécessairement inclure une protection des données. Chaque utilisateur de ce système partagé peut ainsi décider qui, parmi les autres utilisateurs, pourra voir, utiliser et manipuler les fichiers qui lui appartiennent.

La protection des données sous Unix se régule ainsi : tout fichier créé par un utilisateur lui appartient et ne peut être lu, utilisé ou modifié sans son autorisation. C’est lui, le propriétaire du fichier, qui définit les tâches que les autres utilisateurs pourront effectuer sur ses fichiers. Pour ce faire, il va écrire des permissions détaillées : ce sont les Chmods. Les chmods définissent donc quelles actions pourront être opérées sur le fichier et par quels utilisateurs.

• quelles actions ?
Basiques, elles sont au nombre de trois et correspondent aux trois niveaux de permissions :
- lire le fichier -> abrégé R pour Read (lire)
- écrire sur le fichier -> abrégé W pour Write (écrire)
- exécuter le fichier -> abrégé X pour eXecute (exécuter)

• quels utilisateurs ?
Une hiérarchie à trois niveaux régule l’ensemble :
- l’utilisateur propriétaire du fichier -> abrégé U pour User (utilisateur)
- le groupe auquel il appartient -> abrégé G pour Group (groupe)
- tous les autres -> abrégé A pour Anybody (les autres)

* Pourquoi chmoder les fichiers de GuppY ?


Lorsque vous mettez vos fichiers GuppY en ligne chez votre hébergeur, vous devez installer les diverses permissions sur les fichiers que vous placez dans votre espace Web au même titre qu’un utilisateur Unix. On dit que vous devez « chmoder » fichiers et répertoires. Pourquoi ? Parce que GuppY est écrit en Php et qu’il offre un contenu interactif, permettant aux visiteurs de votre site de participer activement à la vie du site, en postant dans son forum, sur son livre d’or, etc. Lorsque vous mettez en place un forum, par exemple, vous allez chmoder les fichiers liés au forum de telle sorte que les visiteurs puissent y poster des messages. Vous allez donc installer une permission RWX, ce qui signifie que le visiteur pourra lire (R), exécuter (X) et écrire (W) sur le fichier lié au forum. Si vous n’installez pas ces permissions, vous serez le seul à pouvoir poster sur votre forum… ce qui n’est pas le but recherché...

On peut Chmoder un fichier (installer les permissions sur ce fichier) de deux façons :

* Chmoder avec des lettres


C’est la méthode que préfèrent les utilisateurs avancés apparemment, car elle permet de faire des tâches plus sophistiquées. Le propriétaire d’un fichier sous Unix pourra régler les permissions pour un de ses fichiers avec la ligne de commande suivante :

-rwxr-xr-x 1 toto ppp-user 2454 Feb 05 09:58 guestbook.pl


Cette ligne spécifie que :
- guestbook.pl est un fichier : le premier signe, le tiret -, indique qu’il s’agit d’un fichier. S’il s’était agi d’un répertoire, le premier signe aurait marqué d pour directory (répertoire)
- toto est le propriétaire du fichier nommé guestbook.pl
- il se réserve le droit de tout faire sur le fichier qui lui appartient, à savoir de lire, écrire et exécuter le fichier : c’est ce qu’indique le premier groupe de lettres rwx, qui règle les permissions de l’Utilisateur propriétaire du fichier
- les autres membres du groupe auquel il appartient (le groupe ppp) n’ont le droit que de lire et d’exécuter le fichier : c’est ce qu’indique le second groupe de signes r-x qui règle les permissions du Groupe
- tous les autres ont le droit de lire et d’exécuter ce fichier : c’est ce que signifie le troisième groupe de signes r-x, qui règle les permissions pour tous les Autres.

La syntaxe conserve toujours l’ordre UGA et rwx. Ainsi le chmod -rwx-wxr-x indique-t-il :
- que c’est un fichier qui est chmodé (cf. le tiret initial -)
- que l’Utilisateur propriétaire du fichier a tous les droits (rwx)
- que les utilisateurs du même Groupe ont le droit d’écrire et d’exécuter le fichier, mais pas de le lire (-wx)
- que tous les Autres ont le droit de lire et d’exécuter le fichier, mais pas de l’écrire (r-x)Note : le tiret – indique que la permission est refusée. Dans r-x, le tiret à la place de w indique que le droit d’écrire le fichier est refusé.

* Chmoder avec des chiffres


C’est la méthode la plus répandue, plus facile à mettre en œuvre, quand on l’a bien intégrée. Le format de base d’un chmod est xyz fichier.ext. X, y et z seront remplacés par un chiffre, chaque chiffre représentant les permissions accordées à un groupe :
• x pour U (l’utilisateur propriétaire du fichier)
• y pour G (le groupe auquel appartient l’utilisateur)
• z pour A (toutes les autres personnes)

Chaque permission correspond à une valeur :
0 : aucune permission
1 : permission (X) d’exécuter le fichier
2 : permission (W) d’écrire sur le fichier
4 : permission (R) de lire le fichier

Ex : pour chmoder un fichier de sorte qu’il soit
- seulement exécutable, on chiffrera 1
- seulement lisible, on chiffrera 4
- lisible et exécutable, on chiffrera 5
- lisible et scriptible, on chiffrera 6

Voici donc tous les chiffres possibles, en fonction des combinaisons de permissions :

0 aucune permission : on ne peut ni lire, ni écrire, ni exécuter le fichier
1 on peut seulement exécuter le fichier
2 on peut seulement écrire le fichier
3 on peut écrire et exécuter le fichier
4 on peut seulement lire le fichier
5 on peut lire le fichier et l’exécuter, mais pas l’écrire
6 on peut lire le fichier, l’écrire, mais pas l’exécuter (cas des fichiers textes
7 permission totale : on peut lire, écrire et exécuter le fichier


L’ordre est le même que dans le cas du chmod par lettres : UGA et rwx. Un fichier chmodé 756 signifiera donc :
- que l’Utilisateur propriétaire du fichier s’autorise à lire le fichier (4), à l’écrire (2) et à l’exécuter (1), car 4 + 2 + 1 = 7
- que le Groupe auquel il appartient a le droit de lire le fichier (4) et de l’exécuter (1), car 4 + 1 = 5
- que tous les Autres ont le droit de lire le fichier (4) et de l’écrire (2), car 4 + 2 = 6

On peut aussi voir les choses sous cet angle :

400 fichier lisible par le propriétaire
040 fichier lisible par le groupe
004 fichier lisible par les autres
200 fichier scriptible par le propriétaire
020 fichier scriptible par le groupe
002 fichier scriptible par les autres
100 fichier exécutable par le propriétaire
010 fichier exécutable par le groupe
001 fichier exécutable par les autres


Pour déterminer les droits, on n’a plus qu’à additionner les combinaisons. Par exemple, si je souhaite que tel fichier soit
- lisible par le propriétaire : 400
- lisible par les autres : 004
- scriptible par le groupe : 020
- exécutable par le groupe : 010
- exécutable par le propriétaire : 100
- exécutable par les autres : 001,
je vais donc le chmoder en : 400 + 004 + 020 + 010 + 100 + 001 = 535

* Chmoder des répertoires


Sous Unix, un répertoire est un simple nom de fichier et on peut le chmoder de la même façon que les fichiers. Ce qui le différencie et le caractérise est le caractère initial : un d au lieu d’un tiret. Si elles restent syntaxiquement les mêmes, les permissions changent légèrement de sens quand elles s’appliquent aux répertoires :
• lire (R) donne la permission de lister les fichiers contenus dans le répertoire
• écrire (W) accorde la permission de créer, renommer ou effacer les fichiers contenus dans le répertoire
• exécuter (X) accorde le droit d’utiliser les fichiers du répertoire

* Concrètement, comment chmoder des fichiers ?


D’abord, envoyez vos fichiers GuppY sur votre espace web. Encodez l’adresse de votre site dans la barre d’adresse. Si votre site s’affiche sans problème, vous n’avez pas à vous occuper des Chmods => ce fut mon cas avec Free. D'ailleurs, on ne peut pas chmoder chez Free, comme souvent chez les hébergeurs gratuits. En revanche, vous devrez chmoder vos fichiers si vous avez des messages d’erreur en série du type :

     Warning: fopen("data/logh.dtb","w") - Permission denied in http://www.mysite.com/inc/functions.php on line xxx suivant les versions

     Warning: Supplied argument is not a valid File-Handle resource in http://www.mysite.com/inc/ functions.php on line xxx suivant les versions

     Warning: fopen("../data/logh.dtb", "w") - Read-only file system in functions.php on line xxx suivant les versions

     Warning: fputs(): supplied argument is not a valid File-Handle resource in functions.php on line xxx suivant les versions

Pour ce faire, utilisez votre client FTP (CuteFP, Leech-FTP par exemple). Sélectionnez avec la souris, dans la colonne de droite, le fichier dont vous voulez installer les permissions (ou double-cliquez sur le nom du fichier) et choisissez la ligne Chmod ou avec LeechFTP « set attributes » dans le menu contextuel qui s’affiche. Cochez ou décochez les cases en fonction des permissions à installer.

A la base, ne serait-ce que pour que le serveur affiche vos pages, elles doivent au moins être « lisibles » (R), donc chmodées 4 au bas mot. Mais GuppY réclame spécifiquement les Chmods suivants :

  • Fichiers dossier racine /* 644 (.htaccess 444 possible)
  •     Dossier et sous-dossiers admin 755
  •     Fichiers admin/* 644 (.htaccess 444 possible)
  •     Dossier et sous-dossiers data 755
  •     Fichiers data/* 644 (config/.htaccess 444 possible)
  •     Dossier et sous-dossiers documentation 755
  •     Fichiers documentation/* 644
  •     Dossier et sous-dossiers file 755
  •     Fichiers file/* 644
  •     Dossier et sous-dossiers flash 755
  •     Fichiers flash/* 644
  •     Dossier et sous-dossiers img 755
  •     Fichiers img/* 644
  •     Dossier et sous-dossiers inc 755
  •     Fichiers inc/* 644
  •     Dossier et sous-dossiers mobile 755
  •     Fichiers mobile/* 644
  •     Dossier et sous-dossiers pages 755
  •     Fichiers pages/* 644
  •     Dossier et sous-dossiers photo 755
  •     Fichiers photo/* 644
  •     Dossier et sous-dossiers plugins 755
  •     Fichiers plugins/* 644
  •     Dossier et sous-dossiers save 755
  •     Fichiers save/* 644
  •     Dossier et sous-dossiers skins 755
  •     Fichiers skins/* 644


La petite astérisque indique qu'il faut chmoder les fichiers contenus dans le répertoire et non le répertoire lui-même. Ainsi CHMOD data/cache/* 644 signifie qu'il faut chmoder en 644 tous les fichiers contenus dans data/cache/.

Ces chmods sont susceptibles de varier, selon les hébergeurs. Voir les FAQ de ceux-ci

(Rédaction : Isa) mis à jour par JeandePeyrat


Date de création : 28/01/2014 @ 09:48
Catégorie : - I. Aide technique
Page lue 16561 fois