2009-04-02 6 views
0

Est-il possible de définir des autorisations précises en utilisant Apache ou nginx? Étant donné un grand nombre de fichiers et un grand nombre d'utilisateurs, quel est le bon moyen de spécifier que chaque utilisateur authentifié n'a accès qu'à ses propres fichiers?Autorisations Apache/nginx à grain fin (par fichier)?

user_a can access file_a_1, file_a_2 
user_b can access file_b_1 
user_c can access file_c_1, file_c2, file_c3, file_a_2 

Ce sont des fichiers statiques, en lecture seule (pour la plupart). Imaginez un système de fichiers comme le contrôle d'accès mais avec http. Pas de web-dav; cela fait partie d'une application web; les images seront affichées dans la page de l'utilisateur dans un navigateur. Je veux m'assurer que personne d'autre ne peut voir l'image, même s'ils peuvent trouver l'URL.

Répondre

0

Vous ne savez pas exactement ce que vous cherchez à faire. Ces utilisateurs ont-ils besoin d'autorisations en écriture ou les fichiers sont-ils en lecture seule? Sont ces fichiers statiques?

+0

Mise à jour de la question avec clarification. – Parand

1

Pouce. À moins d'écrire votre propre gestionnaire d'authentification, je doute qu'il existe un moyen facile d'y parvenir, du moins avec Apache.

Si lighttpd était une option, j'implémenterais probablement le contrôle de sécurité dans un script PHP et si tout vérifie, ajouter un en-tête X-LIGHTTPD-send-file à la réponse. Cela signifie que Lighty fera tout le transfert de fichiers sans passer par PHP.

(A googler rapide a révélé que apache devrait soutien quelque chose comme ça avec X-sendfile, mais je ne pouvais pas obtenir quoi que ce soit à ce sujet dans la documentation Apache.)

edit: Apparemment, vous pouvez faire une chose similaire avec Apache et mod proxy scgi.

+0

andri, merci, cela semble être un bon chemin. Je me souviens avoir lu quelque chose de similaire pour nginx; Je crois que vous pouvez exécuter un script et basé sur le résultat servir un fichier. Laissez-moi creuser un peu là-dedans. – Parand