Ce post fait suite à la fin de la discussion suivante:
http://fr.piwigo.org/forum/viewtopic.php?id=23652
lighttpd ne gère pas les ".htaccess".
L'utilisateur qui exécute lighttpd est "lighttpd" qui est également le propriétaire des fichiers piwigo. Le problème ne vient pas de l'utilisateur système.
Edit: Ceci dit, mon but n'est pas de protéger uniquement les photos originales du téléchargement direct, mais toutes les images. D'ailleurs il est logique d'avoir la possibilité d'empêcher le téléchargement direct de toutes les images privées, originales ou pas. Je vais continuer de creuser la question.
Dernière modification par Thom1 (2013-03-17 15:02:18)
Hors ligne
J'ai déjà trouvé une solution pour que le téléchargement direct ne soit plus possible depuis le répertoire "upload".
J'ai déplacé ce répertoire en dehors du dossier de piwigo, et j'ai ajouté la ligne de conf suivante à piwigo :
« $conf['upload_dir'] = '/chemin/du/repertoire/upload'; »
J'ai tenté de faire la même chose avec le répertoire "_data" comme ceci :
« *$conf['data_location'] = '/chemin/du/repertoire/_data/'; >
mais cela ne fonctionne pas pour l'instant.
Je continue de chercher.
Hors ligne
Thom1 a écrit:
J'ai déjà trouvé une solution pour que le téléchargement direct ne soit plus possible depuis le répertoire "upload".
J'ai déplacé ce répertoire en dehors du dossier de piwigo, et j'ai ajouté la ligne de conf suivante à piwigo :
« $conf['upload_dir'] = '/chemin/du/repertoire/upload'; »
Je retire ce que j'ai dit, je ne peux pas accéder aux photos originales en modifiant cette option de la sorte.
Hors ligne
Bonsoir,
Si lighttpd ne gère pas le .htaccess, c'est qu'il doit proposer l'équivalent dans son paramètrage interne. Sinon ce serait une passoire !
.htaccess permet de ne pas toucher au paramétrage d'Apache, en particulier pour ceux qui sont hébérgés par un provider.
En ce qui me concerne, je n'utilise pas .htaccess car j'ai paramétré directement les autorisations d'accès dans Apache. La non utilisation généralisée de .htaccess améliore d'ailleurs très sensiblement les performances.
Je pense que vous devriez regarder de ce côté là.
Bonne soirée.
Hors ligne
En complément et pour être plus explicite, dans le paramètrage d'Apache vous pouvez grâce à une commande LocationMatch appliquer des directives à une expression rationnelle, exemple
<LocationMatch ^/galerie/galleries/>
...
Deny from All
...
</locationMatch>
Toutes les navigations directes xxx/galerie/galleries/xxx seront bloquées.
Inconvénient : redémarrer la serveur (mais ce sont des informations très stables !)
Vous avez certainement l'équivalent dans lighttpd (je ne connais pas !)
A vous de retranscrire le contenu de .htaccess proposé par la version 2.5 et de redémarrer votre serveur.
Hors ligne
Mascarille a écrit:
Bonsoir,
Si lighttpd ne gère pas le .htaccess, c'est qu'il doit proposer l'équivalent dans son paramètrage interne. Sinon ce serait une passoire !
.htaccess permet de ne pas toucher au paramétrage d'Apache, en particulier pour ceux qui sont hébérgés par un provider.
En ce qui me concerne, je n'utilise pas .htaccess car j'ai paramétré directement les autorisations d'accès dans Apache. La non utilisation généralisée de .htaccess améliore d'ailleurs très sensiblement les performances.
Je pense que vous devriez regarder de ce côté là.
Bonne soirée.
Bonjour,
Je vais essayer d'expliquer plus clairement la situation.
L'option « $HTTP["url"] =~ "(/upload)" { url.access-deny = ( "" ) } » de lighttpd est l'équivalent du « Deny from all » d'apache. J'utilise cette option, pour protéger les fichiers privées contre le téléchargement direct, avec les applications suivantes :
- owncloud: protection du dossier "data". La protection fonctionne. Les fichiers sont bien entendu accessibles depuis owncloud.
- hyla (que je commence à délaisser): protection du dossier "sys". La protection fonctionne. Les fichiers sont bien entendu accessibles depuis hyla.
- piwigo: protection du dossier "upload". La protection fonctionne. Mais les fichiers ne sont plus visibles depuis piwigo, et ça c'est le problème que je souhaite résoudre.
Si cette option lighttpd ne fonctionnait pas pour aucune de ses applis, je chercherais la solution uniquement du côté de lighttpd. Mais ça c'est juste avec piwigo que ça ne fonctionne pas. Il y a peut-être une subtilité dans piwigo que je n'ai pas encore saisi.
Hors ligne
Bonjour,
Thom1 a écrit:
Je vais essayer d'expliquer plus clairement la situation.
L'option « $HTTP["url"] =~ "(/upload)" { url.access-deny = ( "" ) } » de lighttpd est l'équivalent du « Deny from all » d'apache. J'utilise cette option, pour protéger les fichiers privées contre le téléchargement direct, avec les applications suivantes :
- owncloud: protection du dossier "data". La protection fonctionne. Les fichiers sont bien entendu accessibles depuis owncloud.
- hyla (que je commence à délaisser): protection du dossier "sys". La protection fonctionne. Les fichiers sont bien entendu accessibles depuis hyla.
- piwigo: protection du dossier "upload". La protection fonctionne. Mais les fichiers ne sont plus visibles depuis piwigo, et ça c'est le problème que je souhaite résoudre.
Si cette option lighttpd ne fonctionnait pas pour aucune de ses applis, je chercherais la solution uniquement du côté de lighttpd. Mais ça c'est juste avec piwigo que ça ne fonctionne pas. Il y a peut-être une subtilité dans piwigo que je n'ai pas encore saisi.
J'avais mis de côté ce souci sans trouver de solution mais j'ai compris pourquoi piwigo n'affiche pas les images avec ce «url.access-deny = ( "" )». En fait piwigo utilise l'url complète pour afficher les images (http://example.com/upload/….jpg) alors que les autres applis web n'utilisent que le chemin sans le nom de domaine (/upload/…jpg).
Je suppose que l'équipe de dev de piwigo a une bonne raison pour utiliser l'url complète. Si cela ne casse rien, est-il possible de n'utiliser que le chemin (/upload/…jpg) pour afficher les images ?
Dernière modification par Thom1 (2013-05-23 06:23:33)
Hors ligne
Vous utilisez le paramétrage suivant :
L'option « $HTTP["url"] =~ "(/upload)" { url.access-deny = ( "" ) }
sur la première page de doc de lighttpd pour le deny access que je viens de consulter (je ne connais pas ce produit), le paramétrage proposé est notablement différent :
# deny access to /dir1
$HTTP["url"] =~ "^/dir1/" {url.access-deny = ("")}
essayez donc avec "^/upload/" plutôt que "(/upload)"
Il faudra trouver des solutions dans lighttpd, car je vois mal remettre en cause le noyau de piwigo pour être compatible avec un logiciel serveur web qui représente moins de 0,5% des utilisateurs.
Bonne journée
Hors ligne
Mascarille a écrit:
essayez donc avec "^/upload/" plutôt que "(/upload)"
Déjà essayé, ça ne change rien.
Merci de ta réponse.
Hors ligne
Désolé, mais je ne vois pas la solution.
Question "bête" : vous redémarrez bien le serveur à chaque correction du paramétrage ?
Je ne comprend pas la mécanique et l'utilité de cette fonction si elle bloque les accès depuis le programme applicatif.
Sachez aussi que l'installation d'Apache est désormais d'une grande facilité avec nombre de distributions complètement packagées !
Bonne journée.
Hors ligne
Mascarille a écrit:
Question "bête" : vous redémarrez bien le serveur à chaque correction du paramétrage ?
Oui, bien sûr.
Mascarille a écrit:
Je ne comprend pas la mécanique et l'utilité de cette fonction si elle bloque les accès depuis le programme applicatif.
Pami toutes les applis web que j'ai utilisé, il n'y a que dans piwigo que les accès sont bloqués parce que piwigo utilise une url complète pour afficher les images.
D'ailleurs pour vérifier, j'ai créé une page additionnelle qui affiche une image de la galerie comme ceci : <img src="/upload/…jpg">
Dans ce cas l'image s'affiche bien malgré mon : $HTTP["url"] =~ "^/upload/" {url.access-deny = ("")}
tout simplement parce que je n'utilise pas une url complète comme chemin (pas de <img src=http://example.org/upload/…jpg">
Donc cette fonction fonctionne très bien, sauf dans piwigo.
Mascarille a écrit:
Sachez aussi que l'installation d'Apache est désormais d'une grande facilité avec nombre de distributions complètement packagées !
J'héberge pas mal de sites qui fonctionnent très bien, je me vois mal être obligé de tout migrer juste à cause d'une appli, aussi géniale soit elle :)
Hors ligne
Pas convaincu, mais pas du tout !
J'ai relu les pages consacrées à cette fonction dans lighttpd... rien à ce sujet.
Pourquoi une fonction qui teste un segment d'adresse url aurait-elle une comportement différent si l'adresse url est complète ou partielle ?
Par contre j'ai découvert que vous pouvez conditionner ce blocage (et ça pourrait résoudre votre problème) :
exemple fourni par la documentation :
# Allow only 200.19.1.5 and 210.45.2.7 to have access to www.example.org/admin/
$HTTP["host"] == "www.example.org" {
#!~ is a perl style regular expression not match
$HTTP["remoteip"] !~ "^(200\.19\.1\.5|210\.45\.2\.7)$" {
$HTTP["url"] =~ "^/admin/" {
url.access-deny = ( "" )
}
}
}
De toute façon, je ne peux pas vous aider plus.
Voyez ce problème avec le forum lighttpd
Hors ligne
Mascarille a écrit:
De toute façon, je ne peux pas vous aider plus.
Voyez ce problème avec le forum lighttpd
Pas grave, merci quand même pour toutes ces réponses.
Hors ligne