[Webserver] Limit-Direktive greift bei WebDav auf Apache2 nicht

x45

chronische Wohlfühlitis
Limit-Direktive greift bei WebDav auf Apache2 nicht

Hallo Leute!

Nach einigem hin und her habe ich endlich den WebDav Zugriff auf meinem Webserver hinbekommen. Die Anmeldung erfolgt über das User/Gruppen-File. Das funktioniert auch so wie es soll. Jedoch will ich bestimmten Benutzern nur erlauben, Dateien zu lesen. Also habe ich versucht, die LIMIT-Restriktive im <Location>-Block anzuwenden, aber das funktioniert überhaupt nicht. Alle Benutzer haben weiterhin Löschrechte.

Hier erst mal die Config von dem vHost:

Code:
<VirtualHost 111.111.111.111:80>
        ServerName mein.hostname.in.de:80
        ServerAlias mein.hostname.in.de

        UseCanonicalName Off
        DocumentRoot /data/httpdocs/mein.hostname.in.de
        CustomLog /data/logs/mein.hostname.in.de_access.log combined
        ErrorLog   /data/logs/mein.hostname.in.de_error.log

        <Directory /data/httpdocs/mein.hostname.in.de>
                Allow from All
                AllowOverride All
                Order deny,allow

                <IfModule mod_php5.c>
                        php_admin_flag engine on
                </IfModule>
        </Directory>

        <Location /files>
                Dav on
                Options Indexes SymLinksIfOwnerMatch
                IndexOptions FancyIndexing
                DavDepthInfinity on

                AuthUserFile /data/webdav.users
                AuthGroupFile /data/webdav.groups
                AuthName "WebDav on mein.hostname.in.de"
                AuthType Basic
                require valid-user

               <Limit POST PUT DELETE>
                        require group admins
                </Limit>
        </Location>
</VirtualHost>

An und für sich funktioniert die Gruppen-File, da wenn ich statt

AuthType Basic
require valid-user


ein

AuthType Basic
require group admins


verwende, kann ich mich auch nur mit Konten aus der Gruppe admins anmelden.

Im Logfile tauchen Einträge mit den (eigentlich verbotenen) Kommandos mit Erfolgsmeldungen auf.

Momentan habe ich echt keinen Schimmer mehr was ich falsch mache. Ich hoffe einer von euch kann mir da weiterhelfen.


lg,
Johann
 
Supernature schrieb:
Gehört das in den "Location"-Abschnitt oder sollte das nicht besser alleine stehen?

Was denn? Der Auth*-Block? Der kann imho überall stehe, aber ich will ja nur den files-Ordner limitieren?
 
Supernature schrieb:
Nein, das <limit>


Den Limit-Block darf man überall einsetzen. Jedoch möchte ich ja nur die WebDav-Funktionen im files-Ordner limitieren, deshalb denke ich, das der da schon richtig aufgehoben ist.
 
Den Eintrag:
Code:
AuthType Basic
          require valid-user
stehenlassen.

Benutze dann, statt <Limit faselsülzlaber>, besser:
Code:
<LimitExcept GET>
  require valid-user
</LimitExcept>
Wenn du deinen webdav - User/Gruppen nicht mehr als Leserecht gegeben hast, dann sollte es, nach ServerNeustart, funktionieren.
Obiger Befehl ist das Gegenteil dessen, was du versuchst. Er verbietet generell, erlaubt aber Lesen. Admins erlauben, was sie eh' dürfen, hat wenig Erfolg.
Dein Eintrag
Code:
<Limit POST PUT DELETE>
   require group admins
</Limit>
bezieht sich ausschließlich auf die Admins, nicht auf die Benutzer (dann sollte dort "require valid-user" stehen).
Also kannst du den komplett kicken.

Und/oder, was mir auch gerade kommt, du trägst die webdav.users in die require - Anweisung ein (statt valid-user).
So haben nur webdav Benutzer Zugriff.
 
Zuletzt bearbeitet:
Hallo Leute!

Ich hätte vielleicht sagen soll, das ich sowohl <Limit> als auch <LimitExcept> schon ausprobiert habe. Ich habe auch schon PROPFIND auf die Gruppe admins beschränkt, was ja dazu führen sollte, das ich als normaler User noch nicht mal browsen dürfte, da POPFIND ja dann ausgeführt wird.

Irgendwie ist da ein großer Wurm drin..


lg,
x45
 
Wenn du Lust hast, zeig mal deine httpd.conf + dem Logfile als Anhang.
Bevor wir uns noch mehr verfusseln.
 
Also hier erst mal die config des vHosts:

Code:
<VirtualHost 123.123.123.123:80>
        ServerName   meinHost.de:80
        ServerAlias  meinHost.de
        UseCanonicalName Off
        DocumentRoot /var/www/vhosts/meinHost.de/httpdocs
        CustomLog  /var/www/vhosts/meinHost.de/statistics/logs/access_log plesklog
        ErrorLog   /var/www/vhosts/meinHost.de/statistics/logs/error_log

        # This directive is always needed, if you use WebDAV.
        # see http://httpd.apache.org/docs-2.0/mod/mod_dav_fs.html#davlockdb
        <IfModule mod_dav_fs.c>
                DavLockDB /var/lib/apache2/DAVLock
        </IfModule>

        <Location /files>
                DAV On

                AuthType Basic
                AuthName "This is a private repository - resistance is futile"
                AuthUserFile /work/.users
                AuthGroupFile /work/.groups
                Require group admins webdav

                <LimitExcept DELETE>
                        require user irgendeinUser
                </LimitExcept>

        </Location>

        <Directory /var/www/vhosts/meinHost.de/httpdocs>
        <IfModule mod_php5.c>
                AddType text/plain .php .php5 .php4 .php3 .phtml
                php_admin_flag engine off
        </IfModule>
        </Directory>

        IndexOptions FancyIndexing FoldersFirst
</VirtualHost>

Die Config habe ich jetzt mal durch Plesk anlegen lassen.


Hier ein Stück aus dem AccessLog:

Code:
80.132.253.120 - - [10/Nov/2006:13:29:25 +0100] "PROPFIND /files HTTP/1.1" 401 1427 "-" "Microsoft Data Access Internet Publishing Provider DAV"
80.132.253.120 - johann [10/Nov/2006:13:29:26 +0100] "PROPFIND /files HTTP/1.1" 207 891 "-" "Microsoft Data Access Internet Publishing Provider DAV"
80.132.253.120 - johann [10/Nov/2006:13:29:26 +0100] "PROPFIND /files HTTP/1.1" 207 5839 "-" "Microsoft Data Access Internet Publishing Provider DAV"
80.132.253.120 - - [10/Nov/2006:13:29:54 +0100] "HEAD /files/stylesheet.txt HTTP/1.1" 404 - "-" "Microsoft Data Access Internet Publishing Provider DAV"
80.132.253.120 - johann [10/Nov/2006:13:29:54 +0100] "PUT /files/stylesheet.txt HTTP/1.1" 201 285 "-" "Microsoft Data Access Internet Publishing Provider DAV"
80.132.253.120 - johann [10/Nov/2006:13:30:01 +0100] "DELETE /files/stylesheet.txt HTTP/1.1" 204 - "-" "Microsoft Data Access Internet Publishing Provider DAV"

Eigentlich dürfte ich mit dem Benutzer die Aktionen gar nicht durchführen dürfen...

lg,
Johann
 
Setze doch die Rechte der web.dav User- und Gruppe auf read only, wenn
du bisher keine Lösung gefunden hast.
Persönlich komme ich mit deinen Angaben auch nicht groß weiter,
vorausgesetzt, alle anderen, hier nicht sichtbaren, Einträge in der httpd.conf sind richtig erstellt.
 
Oben