2017-08-18 2 views
0

J'ai cherché partout stackoverflow et vu divers messages mais pas de chance jusqu'à présent. Permettez-moi de peindre l'image: Im hébergeant un serveur de jeu pour moi et quelques copains et im symlinking le répertoire avec des cartes et mod à Apache2. Je veux seulement que le monde extérieur puisse télécharger les fichiers "pk3", mais pas "cfg", "log" ou tout autre type de fichier.Refuser tous les types de fichiers mais 1 et autoriser l'auto-indexation

Cette partie j'ai travaillé. Je veux aussi que l'autoindex fonctionne mais pas de chance jusqu'ici. Je reçois une erreur 403.

état actuel:

<Directory /var/www/redirect/*> 
    allow from all 
    Options +Indexes 
    IndexIgnore .. *cfg* *dat *dll *txt URL *log *backup* database 
    IndexOptions FancyIndexing FoldersFirst 
    AllowOverride None 
    Require all granted 
</Directory> 

<Files *> 
    Order deny,allow 
    deny from all 
</Files> 

<Files *.pk3> 
    Order deny,allow 
    allow from all 
</Files> 

<FilesMatch "^(index\.*)?$"> 
    Order allow,deny 
    allow from all 
</FilesMatch> 

Le doesnt FilesMatch semble fonctionner correctement (d'où le [access_compat: erreur] dans mes journaux et 403 dans mon navigateur).

J'espère que quelqu'un peut m'aider avec cela, je cherche depuis des heures.

Répondre

0

Voir ici: https://serverfault.com/questions/634996/apache2-allow-directory-indexing-but-restrict-file-access-by-type

Vous devez également autoriser les fichiers d'index:

<FilesMatch "index\."> 
    Order allow,deny 
    allow from all 
</FilesMatch> 

car Apache va chercher pour eux (comme index.html, index.cgi, ...), mais ils sont tous interdits. Je ne sais pas exactement pourquoi, mais je suppose qu'Apache ne peut même pas vérifier l'existence de ces fichiers, puis envoie un 403. Si Apache peut vérifier l'inexistence de ces fichiers d'index, il créera l'index du répertoire, et cela nécessite <FilesMatch ""> Directive, car le nom du fichier d'index est "".

Vous pouvez trouver les informations contenues dans le fichier journal d'erreur, certaines lignes comme:

client denied by server configuration: /var/www/index.html 

Et parce que vous voulez que les fichiers interdits sont répertoriés aussi, vous devez ajouter

IndexOptions ShowForbidden 

par exemple après Options Indexes FollowSymLinks. Il existe de nombreuses options pour les index de répertoire que vous pouvez trouver dans le apache doc.

Espérons que cela aide.

Mise à jour: FilesMatch doit saisir toutes les entrées possibles de la directive DirectoryIndex et la chaîne vide. Si vous avez ceci: DirectoryIndex index.html index.html.var index.php alors c'est votre match: <Files ~ ^index\.(html|php|html.var)$|^$>

Il est peut-être plus facile à mettre DirectoryIndex puis correspondre:

DirectoryIndex index.html 
<Files ~ ^index\.html$|^$> 
    <Limit GET HEAD> 
     Order Allow,Deny 
     Allow from all 
    </Limit> 
</Files>