6.Le langage PHP

6.21.Droits utilisateurs: chmod 777

6.21.1.Introduction

La plupart des hébergeurs ayant optés pour la sécurité et la fiabilité du système d'exploitation Linux (ou Unix) nombre d'entre vous se trouvent confronté, souvent s'en en avoir conscience, à la problématique de la gestion des droits utilisateurs[c'est quoi?].
Concrètement, lorsque vous transférez un fichier chez votre hébergeur via FTP. Les fichiers que vous déposez vous appartiennent ainsi qu'au groupe auquel vous appartenez (qui bien souvent à le même nom que votre identifiant. C'est donc un groupe à un seul utilisateur).
Donc à partir du moment où vous ne modifiez pas les droits par défaut, vous pouvez les manipuler (renommer, effacer) comme vous voulez avec votre client FTP.
Là ou cela se complique, c'est lorque votre script PHP génère un fichier. Car pour générer un fichier votre script PHP doit être executé et c'est le serveur Web qui execute le script. Ce serveur web est généralement lancé par une tierce personne (ou plus exactement, pour raison de sécurité, on lui attribue son propre identifiant d'utilisateur) qui peut-être "nobody" du groupe "nobody", "www-data" du groupe "www-data", "daemon" du groupe "daemon" (peu importe en fait). Et donc le fichier qui est créé dans votre espace appartient à ce "nobody". Et si par défaut, "nobody" n'autorise pas les autres à modifier le fichier généré alors vous (connecté avec votre identifiant habituel) serez dans l'impossibilité de le supprimer de votre espace.
Que faire? La seule solution c'est d'exécuter les commandes de suppression du fichier ou de modification des droits sous le compte "nobody". On pourrait être tenté de se connecter via FTP sous l'identifiant "nobody" mais sans connaître le mot de passe c'est mission impossible. Non, il faut que ce soit un script PHP qui (lancé par le serveur Web) fasse l'opération.
A l'inverse si vous venez de déposer un fichier via votre accès FTP, le serveur Web, lui, ne sera peut-être pas en mesure de le modifier. Dans ce cas, il faut modifier les droits depuis l'accès FTP.

6.21.2.Modifier les droits sur un fichier

Pour modifier les droits sur un fichier, via le serveur Web, il existe la fonction chmod(). Celle-ci prend 2 paramètres, l'un étant le nom du fichier et l'autre les droits à affecter exprimé (généralement) en octal.
Ainsi pour être très permissif sur un fichier il suffit de faire un script qui fasse un chmod("fichier",0777). Ce qui n'est pas nécessairement la bonne solution en terme de sécurité mais qui est rudement efficace.
rem
  • Pour modifier les droits sur un fichier, depuis le compte FTP, il suffit de taper chmod 0777 fichier (si l'on veut libérer tous les droits sur le fichier).
  • Pensez également à consulter les droits sur le dossier hébergeant le fichier.