Zugriffschutz für mehrere Benutzer

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,
    ich verwende für meine Webseiten den Zugriffsschutz von htaccess.
    Das funktioniert so weit ganz gut, nur ich würde gerne den Zugriff auf weiteren User erweitern, der dann wiederum nur auf ein Unterverzeichnis von var/www/html zugreifen soll. Also z.B. /var/www/html/Gaeste

    Es gibt eine tolle Anleitung wie diese:

    http://html-php.de/index.php?seite=s_htaccess

    aber sobald ich die .htaccess den Eintrag

    AuthUserFile ...

    setze, habe ich über Ursprungsuser keinen Zugriff mehr, also nichts geht.
    Hat jemand von Euch sich dem Thema bereits gewidmet?


  • Ein htaccess file pro geschütztes Verzeichnis, ja? Wie sieht denn deine Konfiguration momentan aus? Was heißt Ursprungsuser?

    Zur Zeit sieht die .htaccess Datei so aus:

    Apache Configuration
    AuthType Basic
    AuthName "Ohne Login geht es hier nicht weiter!"
    AuthUserFile /var/www/html/.htpasswd
    Require valid-user

    Aber so bald ich der Anleitung nach den Inhalt um Gruppen ergänze:

    AuthGroupFile /var/www/html/.gruppen
    Require group Techniker

    funktioniert der Zugriff für den user root, der übrigens in der .htpasswd hinterlegt ist nicht mehr.

  • so in etwa

  • adora:

    Wo finde ich diese Konfiguration auf dem raspi? Soll ich sie entsprechend erweitern? Die Aussage ist recht kurz gefasst.

    Generell würde ich gerne für den user root das ganze Verzeichnis html freigeben (Ist Zustand), für einen anderen User oder Gruppe den Unterordner Gaeste zum Beispiel.

  • Das wird schwierig. Normal schützt man sämtliche Unterverzeichnisse mit. Also wenn nur root auf das html Verzeichnis zugreifen darf, dann kann auch kein anderer auf Unterverzeichnisse zugreifen. Vielleicht deine sensiblen Daten in ein Unterverzeichnis packen, in das nur root darf?
    Kann sein, dass es auch anders funktioniert, aber so mach ich es und funktioniert gut.

    Einmal editiert, zuletzt von KrawallKurt (12. Juli 2016 um 11:48)

  • Ich greife auf var/www/html zu, um an die Hausteeurung zu kommen wie z.B.: Garagentor, Rolläden, Alarm, Steckdosen usw.
    Für gewisse Personen, die das Haus in meiner Abwesenheit betreuen würde ich z.B. nur den Zugriff auf die Steckdosen gerne geben, damit sie sich die Wasserpumpe einschalten können.
    Oder ein anderes Beispiel: meinen Eltern falls sie die Schlüssel vergessen nur den Zugriff auf Garagentor geben.

    Lässt sich das nicht Elegant irgendwie lösen von Apache aus?

    Vielleicht wäre es ein Ansatz, dass man sagt:
    root darf auf var/www/html,
    User XY auf var/www/html2 und
    User BlaBlub auf var/www/html3


  • Wo finde ich diese Konfiguration auf dem raspi? Soll ich sie entsprechend erweitern? Die Aussage ist recht kurz gefasst.


    ich nehme mal an du benutzt den apache web-server. den benutze ich auch.
    das oben ist eine "oder" config (require any) eine bedingung muss zutreffen. das kannst du in die .htaccess datei schreiben.
    ich selber verwende keine .htaccess dateien sondern schreibe das in die directory direktive der vhosts config, die ist bei mit (gentoo) unter /etc/apache2/vhosts.d, wenn du raspbian benutzt heisst das unterverzeichnis default-irgendwas.
    die require's hab ich in extra dateien und mach in den vhosts ein include.
    aber mit deinen .htaccess dateien geht das alles auch.


    Generell würde ich gerne für den user root das ganze Verzeichnis html freigeben (Ist Zustand), für einen anderen User oder Gruppe den Unterordner Gaeste zum Beispiel.

    mach das root verzeichnis fuer alle zugaenglich die zugriff auf den webserver, welches verzeichnis auch immer, haben sollen.
    bei den unterverzeichnissen dann wenn noetig den zugriff weiter einschraenken.

  • Ich habe unter /etc/apache2/apache2.conf folgendes konfiguriert:

    <Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    </Directory>

    Aber noch mal:
    Mit welchem Tool könnte ich am besten ein var/www/html für root und ein var/www/html2 für Gast am besten freigeben?
    Beziehungsweise wie müsste ich das Problem angehen?
    Über die oben genannte Konfigdatei?
    Oder doch über .htaccess?

    So wie es aussieht, scheint das nicht so leicht zu sein.

  • las die config datei so, evt. must du AllowOverride All vergeben wenn du mit .htaccess dateien arbeitest,
    und alles weitere mach mit den .htaccess dateien, damit bist du schon angefangen und ist im mom. so einfacher.

    in /var/www/html/.htaccess
    AuthName "root"
    AuthType Basic
    AuthUserFile /etc/apache2/htpasswd
    Require user root

    in /var/www/html2/.htaccess
    AuthName "gast"
    AuthType Basic
    AuthUserFile /etc/apache2/htpasswd
    Require user gast

    falls gast ein user ist, oder soll da jeder schaun koennen?


    ich komm nochmal auf dein beispiel oben zurueck:


    Zur Zeit sieht die .htaccess Datei so aus:

    Apache Configuration
    AuthType Basic
    AuthName "Ohne Login geht es hier nicht weiter!"
    AuthUserFile /var/www/html/.htpasswd
    Require valid-user

    Aber so bald ich der Anleitung nach den Inhalt um Gruppen ergänze:

    AuthGroupFile /var/www/html/.gruppen
    Require group Techniker

    funktioniert der Zugriff für den user root, der übrigens in der .htpasswd hinterlegt ist nicht mehr.

    das problem koenntest du folgender so loesen:

    alles kann in die .htaccess datei.


    noch ein paar anmerkungen:

    Zitat von AndyKL


    AuthUserFile /var/www/html/.htpasswd

    solche dateien speichert man nicht im html verzeichnis, /etc/apache2/.htpasswd waere ein besserer ort.
    eine falsche konfiguration und jeder hat auf as password file im html verzeichnis zugriff.

    Zitat von AndyKL


    ...besten ein var/www/html für root und ein var/www/html2 für Gast am


    /var/www/html sollte das rootverzeichnis sein, das dann weiter unterteilen.
    /var/www/html/verzeichnis fuer root
    /var/www/html/verzeichnis fuer gast

    defaultconfig findest du in /etc/apache2/sites-available, dort kannst du auch weitere directory eintraege machen wenn du das benoetigst.
    der default eintrag dort ist der standard vhost, dann kann man weitere hinzufuegen.


    ich stör mich noch an deinen user namen root und gast, das ist etwas verwirrend.

  • Vielen Dank für die ausführliche Hilfestellung.
    Vielleicht waren es zu viele Punkte für mich zum Umsetzen, aber ich Versuche die Ergebnisse jetzt wiederzugeben.

    Also die Umstellung der Passwortdatei von var/www/html nach etc/apache2 ist sicherheitstechnisch natürlich eine Klasse Sache. Habe ich direkt umgesetzt: danke.

    Jetzt zu dem Hauptproblem.
    "Webuser" root soll auf var/www/html zugreifen,
    "Webuser" gast auf var/www/html2.

    Die erste Hürde die ich nehmen muss ist, dass man überhaupt (ohne htaccess) auf html2 zugreifen kann.
    Hierzu hast du mir den Tipp gegeben, dass ich in
    etc/apache2/sites-available/default-ssl.conf den Ordner html2 hinzufüge.
    Ist es so richtig?

    Code
    <IfModule mod_ssl.c>
            <VirtualHost _default_:443>
                    ServerAdmin webmaster@localhost
    
    
                    DocumentRoot /var/www/html
                    DocumentRoot /var/www/html2

    Ich habe eine test.html in Order html2 gelegt, nur von außen kann ich darauf nicht zugreifen.
    Fehlermeldung: The requested URL /test.html was not found on this server.

  • im verzeichnis sites-available stehn die vhost congfig dateien, die must du aber noch aktiv schalten indem du ein link setzt. standard maessig ist die ssl datei imho nicht aktiv.

    Code
    cd /etc/apache2/sites-enabled
    ln -s ../sites-available/default-ssl.conf default-ssl.conf

    du kannst dir auch neue dateien erstellen und die als vorlage nutzen.

    edit:
    befehle in der console eingeben, evt. ein sudo davor setzen

    Einmal editiert, zuletzt von adora (13. Juli 2016 um 12:00)


  • im verzeichnis sites-available stehn die vhost congfig dateien, die must du aber noch aktiv schalten indem du ein link setzt. standard maessig ist die ssl datei imho nicht aktiv.

    Der Link war bereits gesetzt:

    Code
    die symbolische Verknüpfung „default-ssl.conf“ konnte nicht angelegt werden: Die Datei existiert bereits


    Sobald ich in der Datei 000-default.conf die Einträge um

    Code
    DocumentRoot /var/www/html2
    
    
            <Directory /var/www/htm2l/>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
                    Order allow,deny
                    allow from all
            </Directory>


    ergänze und ein Reboot mache, habe ich zwar auf html2 Zugriff, nicht aber auf html.

    Ein 2tes komisches Phänomän ist, dass der Benutzer, der in html2 htaccess (gast) eingetragen ist, auch auf html zieht.

  • hier nochmal was zu vhosts damit das etwas deutlicher wird.
    (beispiel von mir).
    die default dateien zeigen auf directory /var/www/default/html
    da ist nur 1 html datei die anzeigt it works, (std-apache seite)

    in sites-available stehn fuer jeden weiteren vhost 3 dateien. (beispiel von mir).
    lokaledomain.conf
    lokaledomain.ssl.conf
    lokaledomain.include
    dyndnsname.de.conf
    dyndnsname.de.ssl.conf
    dyndnsname.de.include

    verzeichnisse jeweils:
    /var/www/lokaledomain/html
    /var/www/http://dyndnsname.de/html
    pro vhost ein separates verzeichnis.

    die .conf ist fuer http port 80
    die .ssl.conf ist fuer https port 443
    in der include datei sind die directory eintraege, die wird in die conf dateien mit include eingelesen.
    macht keinen sinn die doppelt zu pflegen.

    wenn http:192.168.0.2 (dein webserver ip) aufgerufen wuerde wird die default seite angezeigt, dort kannst du auch ein redirect machen wenn was anderes angezeigt werden soll.
    ruft jmd mit dyndnsname.de deine webseite auf wird dyndnsname.conf benutzt und inhalt von /var/www/dydnsname angezeigt.
    gesteuert ueber servername und alias

    soll nur port 443 benutzt werden wird in der .conf ein redirect gemacht.
    z.b. http:dyndsnname.de wird aufgerufen redirect permanent / https:/dyndnsname.de

    ich benutze dann noch fuer die berechtigungen include dateien,
    zu anfang sind .htaccess dateien aber einfacher zum testen, da muss auch nicht jedesmal der apache server neugestartet werden.
    Automatisch zusammengefügt:

    Code
    <IfModule mod_ssl.c>
           <VirtualHost _default_:443>
                   ServerAdmin webmaster@localhost
    
    
                   DocumentRoot /var/www/html
                   DocumentRoot /var/www/html2

    was mir grad auffaellt, 2mal DocumentRoot ?
    das geht imho nur 1mal, nur 1 verzeichnis kann root sein.
    deswegen hatte ich auch oben geschrieben
    zitat:
    /var/www/html sollte das rootverzeichnis sein, das dann weiter unterteilen.
    /var/www/html/verzeichnis fuer root
    /var/www/html/verzeichnis fuer gast

    edit:
    und dann muessten 3 dir dingens in der default conf sein
    <Directory /var/www/html>
    </Directory>
    <Directory /var/www/html/root>
    </Directory>
    <Directory /var/www/html/gast>
    </Directory>

    Einmal editiert, zuletzt von adora (13. Juli 2016 um 13:19)

  • OK, ich verstehe es teilweise:
    Zu jedem vhost (z.B. var/www/htlm2) eine Datei in etc/apache2/sites-available erstellen mit dem richtigen Verweis darin.
    Mein Beispiel:
    Die Datei html2.conf soll darin ein Verweis auf html2 haben.

    Lassen wir den Zugriffsschutz (bei mir mit .htaccess) erst mal weg in html2.

    Dann müsste ich von außen wie bisher auch dann auf die Testdatei des Verzeichnisses html2 zugreifen können?
    Vorausgesetzt ich habe in http://www.blablabla/test.html die richtige Endung mit der Datei in html2.

    Doch leider geht der Zugriff auf html2 nicht, auf html jedoch schon.

  • lies das ende meines letzten beitrags nochmal, hast evt. noch nicht gesehen weil ich es eben erst hinzugefuegt habe. documenten root nur einmal!!

    directory eintraege muessen auch nicht unbedingt fuer jedes verzeichnis sein, um nur die zugriffe einzuschraenken reicht eine .htaccess datei in den unterverzeichnissen.
    Automatisch zusammengefügt:


    Doch leider geht der Zugriff auf html2 nicht, auf html jedoch schon.

    las dir mal von jmd sagen der schon solange dabei ist das er seine ersten programme noch auf lochkarte gestanzt hat, solche Namen sind eine grosse Fehlerquelle es fuehrt zu verwechslungen und in ein paar wochen weisst du garnicht mehr was html, html2 etc wear, dann must erst nachschaun.
    Vergib gleich vernuenftige Namen.

    Einmal editiert, zuletzt von adora (13. Juli 2016 um 13:43)

  • Super, mehr wollte ich nicht.
    Ich habe ein Unterverzeichnis von var/www/html mit dem Namen Eltern erstellt.
    In der etc/apache2/sites-available/000-default.conf dann:

    hinzugefügt.
    Restart von Raspberry und dann noch die htaccess im Ordner Eltern angepasst.
    Jetzt ist es so, dass html einen User hat und Eltern einen. Der eine darf in das Verzeichnis vom anderen nicht rein.

    Vielen Danke für die Geduld.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!