Bonjour
Une petite question que je ne m'étais jamais posée: à quoi servent les droits d'accès?
Les droits d'accès aux répertories et aux fichiers UNIX, généralement représentés en octal (700) ou par des chaînes de caracteres de genre rwx------ ne m'ont jamais posé de problème depuis qu'UNIX existe, et même avant, car je les utilisais sur le prédécesseur d'Unix, connu sous le nom de Multics dans les années 1970.
Je viens cependant de découvrir un phénomène intéressant, qui me conduit à réexaminer la question: DANS UN CONTEXTE DE SITE WEB à quoi servent les droits d'accès?
Je participe entre autres activités bénévoles à la maintenance d'un site web hébergé au delà de nos frontières.
Pour aider à cette opération, j'ai écrit un programme PHP qui devait créer un fichier sur ce site. Au moment de l'écriture je constate une erreur PHP "vous n'avez pas les droits d'accès". Après une semaine d'échanges par courriel avec l'hébergeur la réponse est en gros
1) contrairement aux autres hébergeurs, nous n'exécutons pas le PHP en mode "propriétaire" mais en mode "autre"
2) mais c'est pas grave: mettez donc les droits à 777 par CHMOD ça va marcher
J'ai bien essayé de mettre les droits par programme, mais comme je m'y attendais je n'avais pas les droits de faire un CHMOD !
Réponse de l'hébergeur: il faut le faire à la main.
Outre qu'il y a plusieurs centaines de répertoires et éventuellement des milliers de fichiers dont il faudrait manuellement modifier les droits d'accès, cela signifierait que tous ces répertoires et fichiers seraient en fait sans protection.
Mais si on va plus loin, on se demande dans quels cas (sauf pour enquiquiner ces c... de clients) ces droits sont effectivement utilisés.
Bien entendu, si quelqu'un écrit un programme sur le serveur, il peut faire n'importe quoi, c'est déjà le cas quels que soient les droits d'accès. Ces droits n'ont jamais été conçus pour empêcher le piratage par un programme vicieux, mais comme un moyen de limiter les risques de sortir de son territoire par bug dans un programme.
Mais sur un serveur Web, les seuls programmes qui s'exécutent sont ceux de gestion du serveur, nos "programmes PHP" sont en réalité des fichiers de données interprétés par l'interpréter PHP du serveur. C'est lui qui va vérifier qu'on a les droits d'accès et qu'on n'essaie pas de perturber le site du voisin en cas d'hébergement mutualisé.
En gros, il me semble que
1) soit les droits d'accès ne servent à rien, on ne risque rien en mettant les droits à 777, mais alors pourquoi mettre des droits d'accès?
2) soit il est important de les mettre car ils sont utilisés par l'interpréter PHP pour détecter les tentatives -- volontaires ou non -- d'écrire sur les fichiers du voisin
Dans les deux cas l'hébergeur se f... de ses clients, mais avant de lui dire son fait, j'aimerais vos opinions sur cette question.
Une petite question que je ne m'étais jamais posée: à quoi servent les droits d'accès?
Les droits d'accès aux répertories et aux fichiers UNIX, généralement représentés en octal (700) ou par des chaînes de caracteres de genre rwx------ ne m'ont jamais posé de problème depuis qu'UNIX existe, et même avant, car je les utilisais sur le prédécesseur d'Unix, connu sous le nom de Multics dans les années 1970.
Je viens cependant de découvrir un phénomène intéressant, qui me conduit à réexaminer la question: DANS UN CONTEXTE DE SITE WEB à quoi servent les droits d'accès?
Je participe entre autres activités bénévoles à la maintenance d'un site web hébergé au delà de nos frontières.
Pour aider à cette opération, j'ai écrit un programme PHP qui devait créer un fichier sur ce site. Au moment de l'écriture je constate une erreur PHP "vous n'avez pas les droits d'accès". Après une semaine d'échanges par courriel avec l'hébergeur la réponse est en gros
1) contrairement aux autres hébergeurs, nous n'exécutons pas le PHP en mode "propriétaire" mais en mode "autre"
2) mais c'est pas grave: mettez donc les droits à 777 par CHMOD ça va marcher
J'ai bien essayé de mettre les droits par programme, mais comme je m'y attendais je n'avais pas les droits de faire un CHMOD !
Réponse de l'hébergeur: il faut le faire à la main.
Outre qu'il y a plusieurs centaines de répertoires et éventuellement des milliers de fichiers dont il faudrait manuellement modifier les droits d'accès, cela signifierait que tous ces répertoires et fichiers seraient en fait sans protection.
Mais si on va plus loin, on se demande dans quels cas (sauf pour enquiquiner ces c... de clients) ces droits sont effectivement utilisés.
Bien entendu, si quelqu'un écrit un programme sur le serveur, il peut faire n'importe quoi, c'est déjà le cas quels que soient les droits d'accès. Ces droits n'ont jamais été conçus pour empêcher le piratage par un programme vicieux, mais comme un moyen de limiter les risques de sortir de son territoire par bug dans un programme.
Mais sur un serveur Web, les seuls programmes qui s'exécutent sont ceux de gestion du serveur, nos "programmes PHP" sont en réalité des fichiers de données interprétés par l'interpréter PHP du serveur. C'est lui qui va vérifier qu'on a les droits d'accès et qu'on n'essaie pas de perturber le site du voisin en cas d'hébergement mutualisé.
En gros, il me semble que
1) soit les droits d'accès ne servent à rien, on ne risque rien en mettant les droits à 777, mais alors pourquoi mettre des droits d'accès?
2) soit il est important de les mettre car ils sont utilisés par l'interpréter PHP pour détecter les tentatives -- volontaires ou non -- d'écrire sur les fichiers du voisin
Dans les deux cas l'hébergeur se f... de ses clients, mais avant de lui dire son fait, j'aimerais vos opinions sur cette question.