contenu de la page

Comment dois-je définir les permissions sur mes programmes CGI et autres fichiers?

Si vous n'avez pas accès à un shell via SSH, vous devrez accorder les permissions sur vos fichiers à partir de votre logiciel FTP avec lequel vous vous connectez pour télécharger. Ne changez pas les permissions du répertoire cgi-bin/ ou ceux de votre répertoire racine car vous compromettriez la sécurité de votre site.

Pour manipuler les permissions sur vos répertoires et fichiers vous pouvez également, si vous disposez d'un accès Webmin à votre site, utiliser le module Filemanager intégré dans Webmin.

La plupart des clients FTP offrent une attribution graphique des permissions selon cette matrix :

utilisateur groupe monde
read (lire) X X X
write (écrire) X X
execute (exécuter)

Vous devez juste cliquer pour accorder des droits. Comme vous pouvez constater, le porteur de ces droits devient de moins en moins fiable : l'utilisateur c'est vous-même, le droit du groupe concerne le groupe dont vous êtes membre, et le monde représente les visiteurs de votre site web ou plus précisement les autres utilisateurs sur le serveur.

Comme vous n'êtes pas un membre d'un groupe, considérez le groupe et le monde comme des entités auxquelles vous devrez accorder des permissions d'accès très prudement. Par contre, l'utilisateur www-data avec lequel est executé le serveur web et membre secondaire de votre group. Donc si vous ouvrez les droits d'un répertoire complètement au group, vous donnerez ainsi la possibilité à des scripts PHP de pouvoir céer des fichiers à l'intérieur de ce répertoire. Dans le contexte de votre propore programmation PHP ou des CMS nécessitant d'écrire dans un répertoire, il n'est donc pas toujours nécessaire de créer des répertoires trop permissifs (en représentation octal 775 à la place de 777 dévrait suffir, voir plus bas ... ). En effet, les scripts PHP sont éxecuté via mod_php directement par le serveur web et donc avec le nom d'utilisateur (uid) de ce dernier (www-data).

Pour un très simple programme de CGI, vous devriez par exemple accorder les droits suivants :

utilisateur groupe monde

-rwx --x --x

Dans certains cas, votre CGI pourra nécessiter un accès en lecture aussi pour le monde :

utilisateur groupe monde

-rwx r-x r-x

Une bonne habitude est d'utiliser toujours aussi peu de permission que possible.

L'exemple ci-dessous peut être aussi écrit en valeur octale, comme ceci :

utilisateur groupe monde

-rwx --x --x

ferait en valeur octale 755.

et

utilisateur groupe monde

-rwx --x --x

feraient en ecriture octale 711.

Explication simple : vous choisissez entre 0-7 pour chacun des trois, utilisateur, groupe et monde.

0 signifie pas de permission d'accès du tout

1 signifie permission d'exécution (soyez prudent!)

2 signifie permission d'écriture (soyez prudent!)

4 signifie permission de lecture (c'est la seule permission requise pour des fichiers HTML standard.)

Si vous additionnez les valeurs octales ensemble, vous combinez les permissions, par exemple 1+2=3, 3 signifie une permission en exécution et écriture.

Vous pourriez vous exercer avec ces permissions dans votre repertoire web pour mieux appréhender leur utilisation. N'oubliez jamais de revérifier les permissions que vous avez installées. Une erreur pourraient être fatale à la sécurité de votre contenu.

Pour des fichiers HTML communs, vous devriez accorder seulement des permissions 644. Ce qui signifie que vous, l'utilisateur avez une permission en lecture et écriture (4+2=6) ; le groupe a l'accès en lecture (4) et le monde a l'accès en lecture également (4) ; (le résumé donne: 644). Généralement votre client FTP utilise ces permissions prudentes par défaut.