Protéger par mot de passe un répertoire, mais pas les fichiers de ce répertoire?

8

Je me demandais simplement s'il était possible de protéger un répertoire avec une combinaison nom d'utilisateur / mot de passe en utilisant les fichiers .htaccess et .htpasswd, mais pas de protéger les fichiers à l'intérieur. c'est-à-dire que l'on peut lier, disons, des images de ce répertoire à des amis, mais la navigation dans le répertoire lui-même ne serait pas autorisée sans un nom d'utilisateur / mot de passe. Merci à tous d'avance.

Ivo Flipse
la source

Réponses:

9

Essayez ceci dans votre .htaccess:

Require valid-user

<Files ?*>
    Order allow,deny
    Allow from all
    Satisfy any
</Files>

Ici Require valid-usernécessite une connexion connue. Ensuite, vous modifiez cette restriction pour les fichiers avec au moins un caractère dans leur nom - c'est ce que le modèle glob ?*pour la <Files>section correspondra -, ce qui signifie effectivement que les règles ci-jointes s'appliquent aux fichiers, mais pas aux répertoires.

Dans les règles modifiées pour les fichiers, la clé est Satisfy any. Il permet à l'autorisation d'être satisfaite par les informations d'identification ou l'adresse IP. Ensuite, vous autorisez le passage de n'importe quelle adresse IP, les demandes sont donc toujours autorisées.

Alors maintenant, parcourir ce répertoire ou l'un de ses sous-répertoires nécessitera une connexion, mais la récupération directe d'un fichier ne le sera pas.

C'est ce que tu voulais.

Aristote Pagaltzis
la source
0

Oui, vous pouvez sécuriser des fichiers et des répertoires par nom ou modèle. Vous devriez déjà utiliser ceci pour restreindre l'accès aux fichiers .ht *. Vérifiez votre configuration apache. Le modèle de fichier requis sera probablement «/ $».

BillThor
la source
0

Utilisez LocationMatchpour limiter le contenu d'authentification à l'index du répertoire.

Marian
la source
<LocationMatch "/ pictures"> AuthUserFile /home/asdasd/public_html/user5678/pictures/.htpasswd AuthGroupFile / dev / null AuthName "Répertoire restreint" AuthType Basic </LocationMatch> <Limiter GET POST> nécessite un utilisateur valide </Limit> Ceci est mon fichier .htaccess actuel, situé dans / images. Y a-t-il quelque chose que je fais mal? Cela semble renvoyer une erreur de 500 serveurs internes.
a) lire LocationMatch, il nécessite une expression régulière. b) Vous devez bien sûr mettre l' require valid-userintérieur du LocationMatchbloc (pourquoi la Limitdéclaration quand même?)
Marian
0

Vous voulez simplement désactiver l'affichage d'Apache l'index du dossier. Mettez ceci dans le .htaccess:

Options -Indexes

De cette façon, lorsque les utilisateurs visitent http://www.url.com/folder/, ils obtiennent une erreur de liste d'annuaire refusée . Mais quand ils visitent, http://www.url.com/folder/file.jpgils peuvent voir le dossier.

Pascal
la source
1
Cela n'a pas été demandé, cette désactivation des listes, pas un mot de passe les protège
Krzysztof Bociurko
-1

Si vous voulez que la liste des répertoires ne soit visible que pour les utilisateurs autorisés mais que quiconque puisse télécharger un fichier (afin que vous puissiez envoyer des liens aux personnes), vous avez besoin d'un script d'un certain type (PHP, ASP, etc.) qui demande à l'utilisateur de un mot de passe et s'ils l'obtiennent correctement affiche le contenu du répertoire. Vous mettriez ce script dans le répertoire et le nommeriez index.php afin qu'il soit servi plutôt qu'apache générant un index de répertoire.

Daisetsu
la source
-1

Oui. Ajoutez un fichier index.html qui répertorie le contenu du dossier et restreignez l'accès à ce fichier avec .htaccess. Si vous voulez que l'index soit dynamique, vous devrez utiliser une sorte de script (ou inclure côté serveur) pour générer l'index.

Chris Nava
la source
-2

Faites un chmod 777 sur les fichiers, mais pas sur le dossier principal.

Christoffer Madsen
la source
2
Non, pas ça.
Ignacio Vazquez-Abrams