Sbox-Error-Not-World-Executable

L'erreur SBOX : ce qui s'affiche à la place de mon site

Lorsque l'erreur suivante apparait:

Sbox Error

The sbox program encountered an error while processing this request. Please note the time of the error, anything you might have been doing at the time to trigger the problem, and forward the information to this site's Webmaster ([no address given]).

not world executable

Pourquoi ca fait ca?

En fait, c'est une mesure de sécurité. C'est un peu technique, mais essayons quand même.

De très nombreux scripts PHP sont mal écrits, et ne vérifient pas bien quel est le type des fichiers ajoutés via les scripts d'upload. Par exemple, WordPress, qui est très utilisé, a ce problème. Le résultat est qu'un hacker peut très bien envoyer un fichier en attachement qui en fait sera un script PHP. Mais en général, il est impossible pour un hacker de positionner le bit "X" (eg: chmod +x) d'un fichier sans exploiter d'autres failles de sécurité, ce qui est beaucoup plus difficile.

Donc, imposer à tout le monde d'avoir le bit "x" (execute) activé sur tous les scripts PHP qui doivent être exécutés directement est une très bonne mesure de sécurité. Même si des fichiers PHP peuvent être uploader dans votre site par un hacker mal intentionné, SBOX permet d'en limiter les conséquences, ce qui pourrait autrement être grave (envoi de spam depuis votre site web, lecture du mot de passe de votre base de données et éventuellement effacement de celle-ci, que sais-je encore...).

Les droits Unix: c'est quoi?

Si vous avez l'habitude de Windows, vous savez sans-doute qu'un fichier a des attributs particuliers. Par exemple, toujours sous Windows, vous avez un bit unique qui dit qu'un fichier est en lecture seule (en anglais: read-only).

Sous Unix, il y a beaucoup plus de bits qui constitue les attributs d'un fichier. Il y en a en fait 9 (en fait un peu plus, mais simplifions). Voici ce que retourne un "ls -l" sous Unix (fait sur mon laptop... dans le dossier /tmp pour vous montrer):

   zigo@GPLHost:buzig>_ /tmp$ ls -lah example.php 
   rwxr-xr-x 1 zigo zigo 0 Mar 21 14:46 example.php

De gauche à droite, on peut lire: les bits (ici rwxr-xr-x), le propriétaire du fichier (ici zigo, c'est moi!!!), le groupe du fichier (ici c'est moi aussi, et je ne souhaite partager le fichier avec personne, donc c'est mon groupe uniquement), la taille du fichier (ici, zéro octet), la date et l'heure, puis le nom du fichier.

Qu'est-ce que le bit x d'un fichier?

Les bits dont on parle ici c'est la partie de gauche: -rwxr-xr-x. En fait, il faut lire ces bits par partie de 3: rwx, r-x et r-x. Le premier groupe, rwx, c'est les droits pour l'utilisateur en cours (user), le 2nd (du milieu: r-x), c'est les droits pour le groupe (group), et enfin le dernier, c'est les droits pour tout le monde sur l'ordinateur (world). Pour chacune de ces parties, nous avons 3 bits: read (lecture), write (ecriture) et execute (lancement).

Donc en fait, sbox vous informe que le bit x le plus à droite, pour tout le monde (world), doit être positionné. D'ou le message:

   not world executable

Il faut donc activer pour votre script PHP le bit x, pour tout le monde (c'est a dire que le script soit executable).

Comment faire pour les bits via FTP?

En fait, tout logiciel de FTP qui se respecte vous proposera la gestions des droits Unix. Malheureusement, il n'est pas possible de vous indiquer ici comment faire avec tous les clients FTP, donc nous allons nous contenter d'expliquer comment faire avec le client le plus utilise, gratuit, et disponible sur toutes les plateformes (Windows, Mac, et Linux): Filezilla.

Si vous utilisez Filezilla, cela se fait avec un clic droit sur le fichier dans le FTP, puis sur "File attributes" (tout en bas du pop-up). Comme ceci:

Si vous venez d'envoyer votre fichier, alors probablement, il n'a pas le bit "x" active. Vous devez donc cocher le dernier bit "x" (exécutable) qui se trouve sur la colonne de droite (donc le bit en bas a droite: public permission) comme sur l'écran suivant:

Vous pouvez aussi cocher les 2 autres bits executés, cela ne devrait rien changer (sbox a juste besoin du bit "world executable"). Comme vous le voyez, Filezilla appelle les 3 derniers bits "Public permission", ce qui est assez juste (ces 3 bits concernent tout le monde sur le serveur).

Mais alors, tout le monde peut lire et exécuter et les mes fichiers PHP?

Bien sur que non! SBOX justement, permet d’éviter cela, en faisant un "chroot" dans votre dossier web. Donc pas d’inquiétude de ce côté là.

Est-ce que c'est uniquement pour le PHP?

NON! Justement, c'est cool. Avec SBOX, vous pouvez utiliser du PHP, du Perl, du Python, ou même du Ruby. Tous ces langages sont supportés. Par exemple, le forum en perl YaBB (que d'ailleurs nous ne recommandons pas, pour d'autres raisons...) fonctionne parfaitement avec SBOX, du moment que les bits x sont mis.

Page last modified on March 21, 2012, at 07:35 AM EST