Nighty: .htaccess - Ordner nur für bestimmte User sichtbar machen

Hallo,

ist es möglich mithilfe von .htaccess einen Ordner nur für einen bestimmten User sichtbar zu machen?

z.b:

/upload -keine Indexierung
/upload/User1
/upload/User2
usw...

Wenn sich User 1 in den /upload Ordner begibt soll er nichts sehen, sondern aufgefordert werden sein Passwort einzugeben und nach Eingabe entweder nur diesen einen Ordner sehen oder direkt in das entsprechende Verzeichnis gelangen

Oder ist das ganze nur möglich wenn ich immer im entsprechenden Verzeichnis eine .htaccess anlege das dann erst die Passwortabfrage kommt?

Danke und Grüße

  1. @@Nighty:

    nuqneH

    ist es möglich mithilfe von .htaccess einen Ordner nur für einen bestimmten User sichtbar zu machen?

    Welche Fragen lässt denn http://de.selfhtml.org/servercgi/server/htaccess.htm#verzeichnisschutz@title=SELFHTML da offen?

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    1. Hello,

      @@Nighty:

      nuqneH

      ist es möglich mithilfe von .htaccess einen Ordner nur für einen bestimmten User sichtbar zu machen?

      Welche Fragen lässt denn http://de.selfhtml.org/servercgi/server/htaccess.htm#verzeichnisschutz@title=SELFHTML da offen?

      Naja, wenn man substantiierte Rechte verwalten will, kommt man mit Auth-Basic bald an seine Grenzen.

      Da ist die Idee mit

      * Datenbank,
      * Useranmeldung,
      * Files außerhalb der Dokument Root lagern,
      * fpassthru() http://de2.php.net/manual/de/function.fpassthru.php
      * sowie einem soliden Uploadsystem für die Files, falls die User auch uploaden dürfen,

      die bessere Variante.

      Und jetzt komm bitte nicht "Auth-Basic geht aber auch mit Datenbank". Bis das einer verstanden hat, ist ein Jahr Lernarbeit vergangen.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bikers-lodge.com
  2. Ich weiss ja nicht, wie viele Benutzer es mal geben soll.

    aber im Prinzip kannst Du mit htaccess wie folgt vorgehen:

    (im Folgenden sei '/var/www/' Dein Document-Root:

    #file /var/www/upload/.htaccess  
    AuthType basic  
    AuthName "upload"  
    AuthUserFile /var/www/noaccess/.htpasswd  
    Require valid-user  
    DirectoryIndex index.php
    

    und:

    <?php  
    # file: /var/www/upload/index.php  
    if (isset($_SERVER['PHP_AUTH_USER']) {  
      header('Location: http://DEINHOST/upload/'.$_SERVER['PHP_AUTH_USER']);  
    }  
    ?>
    
    #file /var/www/upload/User1/.htaccess:  
    AuthType basic  
    AuthName "upload"  
    AuthUserFile /var/www/noaccess/.htpasswd  
    Require user User1  
    
    
    #file /var/www/upload/User2/.htaccess:  
    AuthType basic  
    AuthName "upload"  
    AuthUserFile /var/www/noaccess/.htpasswd  
    Require user User2
    

    Ganz andere Lösung:

    Eine völlig eigene, in php geschriebene Lösung kannst Du mit mod_rewrite einsetzen, wenn Du etwa wie folgt vorgehst:

    #file /var/www/.htaccess  
      RewriteEngine   on  
      # Reihenfolge ist wichtig:  
      RewriteRule     ^/uploads/(.*)/hochladen$ /var/www/hochladen.php?dir=$1 [L]  
      RewriteRule     ^/uploads/(.*)$           /var/www/upload-dirs.php?p=$1 [L]  
    
    

    Jetzt behandelt die upload-dirs.php jeden Request innerhalb von /var/www/uploads.
    Die hochladen.php behandelt jeden Request der zum Upload führen soll.

    HINWEIS:
    Schalte jegliches CGI/PHP ab! Ein hinreichend sicherer Weg wäre, die von den Benutzern hochgeladenen  Dateien prinzipiell mit einer eigenen Endung zu versehen oder den Dateiname z.B. mit md5() zu neutralisieren und den sowie die ursprünglichen Dateinamen in einer eigenen Ressource zu speichern - die dann gleich zum "Verzeichnislisting" dient. Ausliefern beim Downlad mit dem via header('Content-Type: application/unknown') - Das ließe sich auch verfeinern, in dem z.B. für PDF der korrekte Typ gesendet wird.

    Falls das nicht gemacht werden soll:

    * Eine der zahlreichen Möglichkeiten, die Authorisierung vornehmen zu lassen findet sich dann auf php.net
    * Selbstredend gibt es in PHP auch genügend Möglichkeiten Verzeichnis-Listings nach eigenem Gustus zu erzeugen.

    Noch etwas: Wenn Deine Benutzer virulentes Zeug hochladen "haftet" bei Google Deine gesamte Domain... Es wäre insofern also klug, eine eigene Subdomain zu verwenden.

    "haftet" bei Google Deine gesamte Domain

    1. Vielen Dank Jörg, damit kann ich etwas anfangen, werde es später versuchen umzusetzen :)