Bonsoir,
Le message que tu vois indique un
problème d'accès WEB, pas un problème de fichiers. Il signifie simplement, que même si, au travers de l'interface de configuration de DokuWiki tu penses restreindre l'accès à certaines pages, un(e) petit(e) futé(e) pourrait facilement contourner cette politique et obtenir les documents qui sont censés lui être refusés.
Pour bien comprendre le problème, Il faut comprendre tous les morceaux qui composent DokuWiki.
Premièrement, un programme fonctionne toujours au nom d'un compte système. Sur la majorité des systèmes où on installe DokuWiki, ce compte est le même pour le serveur web et pour DokuWiki (qui peuvent être ou non deux programmes différents). les droits d'accès aux fichiers et aux dossiers sont donc les mêmes pour DokuWiki et pour le serveur web.
Ensuite, quand on parle de droits d'accès, il faut faire la différence entre deux choses.
1) Les droits d'accès du serveur web et de DokuWiki sur les
fichiers qui composent les données du wiki.
il faut que le serveur web (en fait le compte d'utilisateur sous lequel fonctionne le serveur web) et donc DokuWiki ait un droit d'écriture et de lecture dans ce dossier. On peut le comprendre aisément puisque toutes les données de DokuWiki se trouvent dans ce dossier. À ce niveau là, il s'agit des permissions sur les fichiers. Si le wiki fonctionne correctement, pas besoin d'aller changer quoi que ce soit. Par "fonctionne correctement", on entend : pouvoir créer des pages, en modifier et en détruire. On peut facilement vérifier que tout va bien avec un URL du genre
http://ton.serveur.domaine/blabla/doku.php?do=check
2) Les droits d'accès WEB aux
pages.
Dokuwiki gère en interne son propre système de contrôle d'accès aux
pages. Ici je dis bien page et pas fichier. Une page est ce qui s'affiche dans le navigateur; ce que le navigateur obtient quand il fait une requête sur le serveur web. La page est stockée par DokuWiki sous la forme d'un texte source (le texte wiki) dans un fichier, mais la page n'est pas le fichier. Ce sont deux choses bien distinctes. Concernant les droits d'accès aux pages, on peut avoir par exemple les pages de la catégorie "public" accessibles à tout internaute, et les pages de la catégories "privee" uniquement accessibles aux internautes connectés sur le wiki. Les pages de la catégories "public" se retrouveront stockées sous la forme d'un fichier quelque part dans dans un dossier "public" situé dans le dossier data, et les pages de la catégorie "privee" se retrouveront stockées sous la forme d'un fichier dans un dossier "privee" du dossier data. Les permissions des fichiers et dossiers n'
ont aucun rôle dans le contrôle de l'accès à ces pages. Dans les deux cas, en effet, l'utilisateur sous lequel fonctionne DokuWiki doit pouvoir y accéder. C'est la
mécanique de dokuwiki, qui gère ces accès. Ces droits d'accès se configurent par l'interface d'administration du wiki, dans la rubrique ACL (Administrer => "gestion de la liste des contrôles d'accès (ACL)").
Changer les droits au hasard sur le dossier data, n'est donc pas la solution que tu recherches, car ce ne sont pas les permissions qui déterminent qui à accès à quelles pages.
Jusque là, tout va bien, et j'espère que les choses sont claires.
Seulement, il y a un hic. La plupart du temps, le dossier data est lui même dans l'espace des fichiers adressables par le serveur web; le fameux DOCUMENT_ROOT. Le métier d'un serveur web est de servir les fichiers qui se trouvent dans son DOCUMENT_ROOT. Donc un internaute un peu malin peut fabriquer un URL qui demande au serveur web de lui donner le fichier d'une page (ou d'un media d'ailleurs), et ce
sans passer par la mécanique de DokuWiki. Dans ce cas, le contrôle de dokuwiki est totalement inopérant puisque l'internaute s'est débrouillé pour ne pas faire intervenir DokuWiki. Un internaute non connecté au wiki pourrait demander directement au serveur le fichier d'une page de la catégorie "privee". Le serveur web ayant accès au fichier va gentiment servir le fichier, et l'internaute se retrouve avec un document auquel il ne devrait pas avoir accès, ta société se retrouve avec une divulgation non intentionnelle de données et tu es au chômage (puisque ta société vient de couler, abattue par la concurrence qui commercialise le projet schnortzel sur lequel vous avez travaillé pendant trois ans et investi tout ce que les banques ont bien voulu prêter... La bataille juridique qui s'ensuit ne même nulle part de toutes façons car vous n'avez pas de quoi payer les avocats nécessaires à un tel combat, contrairement à la concurrence qui fait de très bonnes affaires en vendant des millions de schnortzels)
Mais revenons un instant à l’informatique. On se retrouve donc avec le problème suivant :
Le serveur web à un accès total aux fichiers qui stockent les pages du wiki
Dokuwiki a un accès total aux fichiers qui stockent les pages du wiki
On veut que seul dokuwiki puisse servir les pages qui correspondant aux fichiers.
La solution à cet épineux problème est de dire au serveur web :
Serveur web, tu peux servir tous les documents qui se trouvent dans ton DOCUMENT_ROOT,
SAUF ceux qui sont dans le dossier data.
Ce "sauf ceux qui se trouvent dans le dossier data" se déclare dans la
configuration du serveur web. Il n'y a pas d'autre solution. Si on utilise apache comme serveur web, il y a des chances pour qu'on puisse faire ce réglage dans un fichier .htaccess du dossier data. Si le serveur web est un autre programme (nginx par exemple) les fichiers .htaccess n'ont aucun effet. Parfois, également, les fichiers .htaccess ne sont pas pris en compte par apache (c'est à la discrétion de l'administrateur du serveur web de décider si son serveur va accepter ou non les fichiers .htaccess, ou seulement quelques directives de configurations dans ces fichiers). Bref, ça devient le bazar; il faut essayer et voir si ça fonctionne...
Pour obtenir le réglage "sauf ceux qui sont dans le dossier data" par .htaccess, il n'y a rien à faire,
le fichier data/.htaccess livré en standard avec DokuWiki contient toutes les instructions nécessaires.
Dans ton cas, visiblement, les fichiers .htaccess n'ont pas d'effet. Te voilà bien embêté...
Il reste néanmoins deux solutions. Souviens toi, au débiut de ce long post, j'ai dit qu'un internaute malin pouvait fabriquer un URL pour obtenir directement les fichiers du wiki. L'internaute n'est pas si malin en vérité. Il suppose juste que par flemme, ignorance, inconscience, ou joyeux mélange des trois, celui qui a installé DokuWiki n'a rien changé à la configuration de DokuWiki et que les fichiers des pages se trouvent dans le dossier appelé
data[/m]. Partant ce ce principe, il va fabriquer un URL du genre: [m]http://ton.serveur.domaine/blabla/[b]data[/b]/pages/privee/secret.txt et obtenir tous les documents qu'il souhaite. Les deux solutions qui s'offrent maintenant à toi sont :
Solution 1) Placer le dossier data en dehors du DOCUMENT_ROOT, mais dans un endroit ou DokuWiki a tout de même accès. Pas facile à faire suivant l'hébergeur... C'est pourtant la parade absolue.
Solution 2) Renommer le dossier data en un truc improbable, comme "schproutz" ou "blorp". Dans ce cas, la parade est moins forte car le serveur web à toujours accès aux fichiers, mais avant qu'un internaute (pas si) malin ne devine que le dossier s'appelle "schproutz" et non pas data, il va se passer pas mal de temps. C'est donc souvent une solution acceptable. D'autant plus que c'est parfois la seule.
Disons que tu vas employer la solution 2 et renommer data en "pouet", car c'est le plus simple il me semble, probablement la seule solution, et de toutes manières la seule que je puisse décrire ici sans connaître l'intégralité de la configuration du serveur que tu utilises .
À l'aide de FTP ou de ssh, renommer le dossier data en pouet :
mv data pouet
Et puis ensuite, déclarer à DokuWiki que le dossier des données a changé de nom. Dans le fichier
conf/local.protected.php[/m], (créer ce fichier au besoin avec un bloc-note quelconque) toujours à partir de de FTP ou ssh, car à ce moment DokuWiki est totalement cassé, impossible de passer par l'interface d'administration, tu ajoutes, sous la ligne [m]<?php[/m] la directive de configuration [m]savedir :
<?php
$conf['savedir'] = './pouet';
Voilà qui devrait résoudre ton problème, enfin j'espère. et en fin de compte c'est pas ma fote si tu casses tout ton wiki à cause de moi, c'est quand même toi qui tapes les commandes ;-)
Schplurtz