J'ai besoin de faire une opération un peu étrange.
Tout d'abord, je tourne sur Debian, apache2 (qui 'tourne' en tant qu'utilisateur www-data)
Donc, j'ai un simple fichier texte avec .txt ou .ini, ou n'importe quelle extension, n'a pas d'importance.
Ces fichiers sont situés dans des sous-dossiers avec une structure comme celle-ci:
www.example.com/folder1/car/foobar.txt www.example.com/folder1/cycle/foobar.txt www.example.com/folder1/fish/foobar.txt www.example.com/folder1/fruit/foobar .SMS
par conséquent, le nom du fichier est toujours le même, idem pour la 'hiérarchie', il suffit de changer le nom du dossier: /folder-name-static/folder-name-dinamyc/file-name-static.txt
Ce que je devrais faire est (je pense) relativement simple: je dois être capable de lire ce fichier par des programmes sur le serveur (python, php par exemple), mais si j'essaie de récupérer le contenu du fichier par broswer (en digérant l'url www. example.com/folder1/car/foobar.txt, ou via cUrl, etc.) Je dois obtenir une erreur interdite, ou autre chose, mais pas accéder au fichier .
Il serait également agréable que même l'accès à ces fichiers via FTP soit «caché», ou de toute façon ne puisse pas être téléchargé (au moins que j'utilise avec la racine ftp et les données utilisateur)
Comment puis-je faire?
Je l'ai trouvé en ligne, mettez-le dans le fichier .htaccess:
<Files File.txt>
Order allow, deny
Deny from all
</ Files>
Il semble fonctionner, mais uniquement si le fichier se trouve à la racine Web (www.example.com / monfichier.txt), et non dans des sous-dossiers. De plus, les dossiers du deuxième niveau (www.example.com/folder1/ fruit /foobar.txt) seront créés de manière dinamyque. Je voudrais éviter d'avoir à changer de temps en temps le fichier .htaccess.
Il est possible de créer une règle, quelque chose comme ça, qui va pour tous les fichiers avec un nom donné, qui est sur * www.example.com / nom-dossier-statique / * nom-dossier-dinamyc / *** nom-fichier -static.txt *, où ces parties sont toujours les mêmes , juste ** que l'on change ?
MODIFIER :
Comme l'a dit Dave Drager, je pourrais illustrer cela en gardant ces fichiers en dehors du répertoire accessible sur le Web. Mais ces répertoires contiendront également d'autres fichiers, des images et des trucs utilisés par mes utilisateurs, donc j'essaie simplement de ne pas avoir de système de dossiers en double, comme:
/var/www/vhosts/example.com/httpdocs/folder1/car/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/cycle/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/fish/[other folders and files here]
//and, then for the 'secrets' files:
/folder1/data/car/foobar.txt
/folder1/data/cycle/foobar.txt
/folder1/data/fish/foobar.txt
la source
Oui, tout cela est possible. Cependant, si vous avez sur le serveur des programmes qui doivent accéder à des fichiers texte, ils doivent résider hors de la racine Web. Par exemple, si vos fichiers Web se trouvent dans ~ / public_html /, vous devez les stocker dans ~ / data. Il n'y a aucune raison de les placer dans le dossier html public.
En plus de les supprimer du dossier Web, assurez-vous que les autorisations Unix sont correctement définies sur eux. L'utilisateur des scripts devrait avoir un accès en lecture (écriture?) Mais personne d'autre ne doit avoir cet accès.
Si vous avez besoin d'avoir ces fichiers dans un dossier accessible sur le Web, il existe des moyens de faire ce que vous demandez via mod_rewrite. Voir le site suivant pour de nombreux exemples, dont l'un devrait convenir à la facture.
http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/
la source
Pourquoi ne pas utiliser les autorisations de fichier Unix standard pour refuser l'accès au fichier?
Il y a une explication décente sur wikipedia sur les autorisations de fichiers unix
la source
Placez le fichier .htaccess dans le sous-répertoire et dans l'instruction, définissez AllowOverride All
la source
Vous pouvez utiliser des ACL Linux .
la source
Après vous avoir tous lu, j'ai remarqué que le fichier .htaccess peut être le chemin pour moi: n'affecte que les fichiers du dossier où il se trouve.
Mais mes dossiers sont générés dynamiquement. Je ne pense pas que copier le fichier .htaccess ou le recréer chaque fois que je crée un nouveau dossier soit un moyen fiable.
Comme l'a dit Dave, la manière logique devrait être de stocker les fichiers texte de configuration en dehors du dossier accessible sur le Web.
Mais dans chaque dossier, je dois stocker d'autres fichiers, des images par exemple, qui doivent être accessibles sur le Web ... et je ne pense toujours pas que la réplication de la structure des dossiers, dans et hors du répertoire racine Web, soit également un moyen fiable. . Par conséquent, je devrai même changer la configuration d'apache pour inclure le dossier config dans le chemin php autorisé .. cela ne devrait pas être un problème, de toute façon.
Donc, si je n'ai pas le meilleur , je dois choisir le moins pire .
Je vais utiliser la solution des fichiers .htaccess multiples, pour l'instant, en espérant ne pas avoir de regrets à l'avenir.
Toute autre solution est appréciée.
la source
Dans la section Documentation de la commande :
Donc, ce qui suit est incorrect:
Ce qui suit est (plus) correct
la source