WebDav mit Apache 2 unter SuSE 9.1

Apache, Lighttpd, nginx, Cherokee
Post Reply
tstening
Posts: 21
Joined: 2002-11-30 17:26
Location: Würzburg
 

WebDav mit Apache 2 unter SuSE 9.1

Post by tstening »

Hallo,

ich versuche gerade WebDav auf meiner Konfiguration SuSE 9.1, Apache 2 (selbstkompiliert) auf 1&1 RootServer einzurichten. Hier im Forum habe ich einen kurzen Artikel gefunden, wie man dabei vorgehen muss, bin da aber noch nicht ganz schlau draus geworden.

Bis jetzt habe ich folgendes in meiner httpd.conf eingetragen:

LoadModule dav_module /usr/lib/apache2/mod_dav.so
LoadModule dav_fs_module /usr/lib/apache2/mod_dav_fs.so

<IfModule mod_dav.c>
<IfModule mod_dav_fs.c>
Include /etc/apache2/sysconfig.d/moddav.conf
</IfModule>
</IfModule>

Was muss aber nun in der Datei moddav.conf stehen? Ist die wichtig, denn auch ohne kann ich aktuell auf den WebDav-Ordner zugreifen.

Weiterhin habe ich einen virtuellen Host eingerichtet (definiert in einer conf-Datei in /etc/apach2/vhost.d/). Das sieht aktuell so aus (natürlich auf dem Server mit korrekten Werten für die Adressen):

<VirtualHost xxx.xxx.xxx.xxx>
ServerName webdav.mydomain.net
ServerAdmin info@mydomain.net
UseCanonicalName On
ServerSignature On
DocumentRoot /home/www/webdav

DAVLockDB /usr/local/apache2/var/DavLock/LockDB

<Directory "/home/www/webdav">
DAV on
Options Indexes FollowSymLinks
AllowOverride All
Allow from all
</Directory>

# Log Settings
ErrorLog /var/log/apache2/net.mydomain.webdav-error_log
CustomLog /var/log/apache2/net.mydomain.webdav-access_log combined
HostnameLookups Off
</VirtualHost>

Jetzt frage ich mich, wie man nun eine Passwortabfrage hinzufügt und am besten mehrere User verwaltet? Reicht da eine .htaccess im WebDav-Ordner?

Sehe ich das richtig, dass jeder User einen eigenen WebDav-Ordner angelegt bekommen muss und ich auch für jeden WebDav-Ordner einen virtual host einrichten muss? Oder kann man das auch anders machen, z.B. dass man über http://www.meinedomain.de die Webseite des Users XY ereicht und über http://www.meinedomain.de/webdav/ dessen WebDav-Ordner? Ideal wäre allerdings etwas in der Art: Zugriff für alle auf http://webdav.meinedomain.net, dann Passwortabfrage und Umleitung auf den WebDav-Ordner des Users. Machbar?

Und nun zur letzten Frage: Per WebDav-Client (z.B. BitKinex) kann ich auf den WebDav-Ordner zugreifen. Einbinden als Netzlaufwerk unter WinXP geht aber z.B. nicht. In diesem Fall bekomme ich keine Dateien angezeigt, obwohl welche im WebDav-Verzeichnis vorhanden sind. Auch ein Upload geht nicht. Woran könnte das liegen?

Fragen über Fragen... ;-) Ich hoffe, Ihr könnt/wollt mir trotzdem helfen? ;-)

Viele Grüße,
Tobias
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin
 

Re: WebDav mit Apache 2 unter SuSE 9.1

Post by flo »

tstening wrote: Jetzt frage ich mich, wie man nun eine Passwortabfrage hinzufügt und am besten mehrere User verwaltet? Reicht da eine .htaccess im WebDav-Ordner?
Damit hast Du nicht gesagt, wie weit Du jetzt bist - kannst Du per http in den Ordner schreiben?

Was Du da noch so fragst, hat weniger mit DAV zu tun als allgemein mit einer Systemplanung. Natürlich kannst Du jedem Benutzer einzeln einen vhost zuweisen und natürlich kannst Du die Benutzerrechte per .htaccess verwalten.

Nur - was ist sinnvoll? Auf einem SMB-Fileserver hast Du z.B. keine Datei, die in der root liegt und das Verhalten dieses Shares beeinflussen könnte. Oder auf Deutsch: Bitte im DAV keinen Override erlauben, htaccess und php abschalten, Rest über Benutzer- und Gruppenauthentifizierung im vhost und Ordnerrechte. Auth nur über digest, clients bei Bedarf anpassen.

Grüße,

flo.
tstening
Posts: 21
Joined: 2002-11-30 17:26
Location: Würzburg
 

Re: WebDav mit Apache 2 unter SuSE 9.1

Post by tstening »

flo wrote:
tstening wrote: Jetzt frage ich mich, wie man nun eine Passwortabfrage hinzufügt und am besten mehrere User verwaltet? Reicht da eine .htaccess im WebDav-Ordner?
Damit hast Du nicht gesagt, wie weit Du jetzt bist - kannst Du per http in den Ordner schreiben?
Ja, per WebDAV-Client kann ich schreiben. Was aktuell nicht funktioniert ist die Freigabe des WebDAV-Verzeichnisses als Netzlaufwerk unter Windows. WinXP verbindet sich zwar augenscheinlich mit dem Verzeichnis, zeigt jedoch keinerlei Inhalte an. Woran kann das liegen? Ein Bekannter hat mir kürzlich gezeigt, dass er z.B. per Windows Explorer auf sein WebDAV-Verzeichnis bei Strato zugreifen kann und dabei gleich eine Ordneransicht angezeigt bekommt.
flo wrote: Nur - was ist sinnvoll? Auf einem SMB-Fileserver hast Du z.B. keine Datei, die in der root liegt und das Verhalten dieses Shares beeinflussen könnte. Oder auf Deutsch: Bitte im DAV keinen Override erlauben, htaccess und php abschalten, Rest über Benutzer- und Gruppenauthentifizierung im vhost und Ordnerrechte. Auth nur über digest, clients bei Bedarf anpassen.
Deine Hinweise werde ich beherzigen. Es ist bei mir je keine wirklich große Installation. Zwei Bekannte möchten gerne über meinen Server WebDAV nutzen, um Kalenderdaten auszutauschen. Das kann ich natürlich alles auch ganz primitiv gestalten.

Wenn mir aber jemand sagt, dass es auch so geht, dass jeder User dieselbe URL verwendet und nach Eingabe seiner Benutzerdaten in "seinem" WebDAV-Verzeichnis landet, würde ich das natürlich gerne so einrichten. Nur weiss ich nicht wie das geht. ;-)

Ich werde es jetzt mal so machen, dass die beiden Benutzer in ihren virtuellen Hosts jeweils WebDAV eingerichtet bekommen. Das sollte für den Anfang genügen.

Danke für Deine Hinweise bzgl. der Konfiguration.

Viele Grüße,
Tobias
tstening
Posts: 21
Joined: 2002-11-30 17:26
Location: Würzburg
 

Re: WebDav mit Apache 2 unter SuSE 9.1

Post by tstening »

So, habe mich jetzt ziemlich weit durchgekämpft. Damit auch andere davon profitieren bzw. jemand evtl. Schwachstellen erkennt, hier mal meine komplette Config (SuSE 9.1).

In der httpd.conf habe ich DAV folgendermaßen freigeschaltet:

Code: Select all

LoadModule dav_module /usr/lib/apache2/mod_dav.so
LoadModule dav_fs_module /usr/lib/apache2/mod_dav_fs.so
Weiterhin habe ich gleich noch die Digest Authentifizierung aktiviert.

Code: Select all

LoadModule auth_digest_module /usr/lib/apache2/mod_auth_digest.so
Danach habe ich in /etc/apache2/vhosts.d/ einen VirtualHost definiert:

Code: Select all

<VirtualHost xxx.xxx.xxx.xxx>
  ServerName webdav.mydomain.net
  ServerAdmin info@mydomain.net
  UseCanonicalName On
  ServerSignature On

  DocumentRoot /home/www/webdav
  DAVLockDB /usr/local/apache2/var/LockDB

  Alias /alias1 /home/www/webdav/alias1
  <Location /alias1>
    DAV On
    AuthType Digest
    AuthName webdav
    AuthDigestFile /home/www/passwd/digest-passwords
    <LimitExcept OPTIONS>
      require user _username_
    </LimitExcept>
  </Location>

  Alias /alias2 /home/www/webdav/alias2
  <Location /alias2>
    DAV On
    AuthType Digest
    AuthName webdav
    AuthDigestFile /home/www/passwd/digest-passwords
    <LimitExcept OPTIONS>
      require user _username_
    </LimitExcept>
  </Location>

  ErrorLog /var/log/apache2/net.swts.webdav-error_log
  CustomLog /var/log/apache2/net.swts.webdav-access_log combined
  HostnameLookups Off
</VirtualHost>
WebDav benötigt noch Schreibrechte in /usr/local/apache2/var, um die LockDB schreiben zu können.

Code: Select all

md /usr/local/apache2
chmod -R 755 var/
chown -R wwwrun var/
chgrp -R www var/
Damit die Digest-Authentifizierung funktioniert, musste natürlich noch die Datei /home/www/passwd/digest-passwords angelegt werden. Das geht z.B. so:

Zum anlegen:

Code: Select all

/path_to_htdigest2/htdigest2 -c /home/www/passwd/digest-passwords webdav new_username
Zum erweitern:

Code: Select all

/path_to_htdigest2/htdigest2 /home/www/passwd/digest-passwords webdav new_username
Wichtig ist, dass der Realm (hier webdav) denselben Wert hat, wie AuthName in der Configdatei des VirtualHosts (siehe oben).

Die Datei digest-passwords sollte für Apache lesbar sein. Deshalb habe ich kurzerhand folgendes gemacht:

Code: Select all

cd /home/www/
chmod -R 755 passwd/
chown -R wwwrun passwd/
chgrp -R www passwd/
Nun wurden die benötigten Verzeichnisse angelegt.

Code: Select all

cd /home/www/
md webdav
md webdav/alias1
md webdav/alias2

chmod -R 755 alias1/
chown -R wwwrun alias1/
chgrp -R www alias1/

chmod -R 755 alias2/
chown -R wwwrun alias2/
chgrp -R www alias2/
Nach einem Neustart von Apache kann man dann z.B. über http://webdav.mydomain.net/alias1 auf den WebDAV-Ordner alias1 zugreifen.

Sollte sich WindowsXP weigern, dieses Verzeichnis als Netzlaufwerk einzubinden, z.B. weil es bei der Ã?bertragung der Anmeldedaten aus dem Usernamen _username_ etwas in der Art webdav.mydomain.net_username_ macht, dann sollte es reichen, die URL des WebDAV-Verzeichnisses mit dem Zielport anzugeben:

http://webdav.mydomain.net:80/alias1

Allerdings versagt WindowsXP bei mir, wenn ich beide oben definierten WebDAV-Verzeichnisse ansprechen will. Je nachdem, welches zuert geöffnet wurde, kann man auf das zweite nicht mehr mit Boardmitteln (z.B. Netzlaufwerk zugreifen).

Ich hoffe, die Infos sind ausreichend und verständlich genug.

Viele Grüße,
Tobias :-)
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin
 

Re: WebDav mit Apache 2 unter SuSE 9.1

Post by flo »

Oh ja, das ist gut und fast vollständig - schon fast ein HowTo :-)

Zum Thema Auth der XP-Clients findest Du im Archiv noch etwas - da ist wohl auch noch der Registry-Hack beschrieben, das weiß ich momentan nciht mehr so genau.

Code: Select all

Alias /alias1 /home/www/webdav/alias1 
  <Location /alias1>
Solche Konstruktionen würde ich mit directories lösen, das ist eine Zeile kürzer.

Die Auth-Sachen kannst Du einmal definieren, diese gelten dann für das ganze Verzeichnis.

Code: Select all

        php_admin_flag engine off # <-- schaltet mod_php aus

        <Directory /home/dav/htdocs>
                AuthName "WebDAV"
                AuthType Basic # <-- Das muß bei mir leider so sein :-(
                AuthUserFile /home/dav/.htpasswd_autogen
                AuthGroupFile /home/dav/.htgroups_autogen
                DAV On
                AllowOverride None 
                Options +Indexes # <-- macht das Listing
                require valid-user
                <Limit PUT POST DELETE>
                        require user florian
                </Limit>
### ... und Unterverzeichnisse
               <Directory "/home/dav/htdocs/test.de">
                     AllowOverride None # <-- das ist bei mir redundante Info :-)
                     <Limit GET POST PUT OPTIONS DELETE MKCOL PROPFIND>
                             require group test.de
                     </Limit>
             </Directory>
###
        </Directory>
In der Group sind jeweils der jeweils zuständige und ich als Admin drin.

Die Rechte für die Ordner würde ich - habe ich - mit 700 gesetzt, das Unix-Zeug ist hier innerhalb des DAV eh außer Kraft gesetzt, weil Du ja eh immer als Webserver-Benutzer zugreifst und der Apache die Rechte anhand des http-users verwaltet, da muß es nicht sein, daß man die Rechte weiter aufmacht.

flo.
tstening
Posts: 21
Joined: 2002-11-30 17:26
Location: Würzburg
 

Re: WebDav mit Apache 2 unter SuSE 9.1

Post by tstening »

Hallo Flo,

danke für Deine Hinweise. Werde sie unterbringen. :-)

Viele Grüße,
Tobias
tstening
Posts: 21
Joined: 2002-11-30 17:26
Location: Würzburg
 

Re: WebDav mit Apache 2 unter SuSE 9.1

Post by tstening »

Hallo Flo,

wenn ich das richtig sehe, hast Du die Directory-Einträge verschachtelt. Das sieht adaptiert bei mir nun so aus:

Code: Select all

<Directory /home/www/webdav>
	DAV On
	Options +Indexes
	AllowOverride None
	AuthType Digest
	AuthName webdav
	AuthDigestFile /home/www/passwd/digest-passwords
	<LimitExcept OPTIONS>
		require user _username1
	</LimitExcept>
	
	<Directory /home/www/webdav/alias1>
		<LimitExcept OPTIONS>
			require user _username2
		</LimitExcept>
	</Directory>
	
	<Directory /home/www/webdav/alias2>
		<LimitExcept OPTIONS>
			require user _username3
		</LimitExcept>
	</Directory>
</Directory>
Problem: Apache meckert, dass ich die Directories nicht so verschachteln darf. Konkret meckert er die Zeile <Directory /home/www/webdav/alias1> an, mit der Meldung: "<Directory not allowed here".

Sieht jemand den Fehler, den ich gemacht habe und kann mir helfen? Darf man evtl. garnicht verschachteln?

Viele Grüße,
Tobias :-)
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin
 

Re: WebDav mit Apache 2 unter SuSE 9.1

Post by flo »

hmm ... steht das noch innerhlab eines virtuellen Hosts?

Ich hab bloß einen Ausschnitt gepostet. - das erste Verzeichnis ist auch meine Document-Root.

flo.

Code: Select all

<VirtualHost 217.0.0.0>
        ServerName webdav.domain.de
        ServerAlias webdav.*
        ErrorLog /var/log/http_fkt/dav_err.log
        CustomLog /var/log/http_fkt/dav_acc.log common
        DocumentRoot /home/dav/htdocs
        DAVLockDB /home/dav/DAVLock/DAVLock
        DAVMinTimeout 600
        
        BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
        BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
        BrowserMatch "Microsoft-WebDAV-MiniRedir/5.1.2600" redirect-carefully
        BrowserMatch "^WebDrive" redirect-carefully
        BrowserMatch "^WebDAVFS" redirect-carefully


        php_admin_flag engine off

        <Directory /home/dav/htdocs>
                AuthName "WebDAV"
                AuthType Basic
                AuthUserFile /home/dav/.htpasswd_autogen
                AuthGroupFile /home/dav/.htgroups_autogen
                DAV On
                AllowOverride None 
                Options +Indexes
                require valid-user
                <Limit PUT POST DELETE>
                        require user 
                </Limit>
        </Directory>

        # <... andere Verzeichnisse ...> #
</VirtualHost>
tstening
Posts: 21
Joined: 2002-11-30 17:26
Location: Würzburg
 

Re: WebDav mit Apache 2 unter SuSE 9.1

Post by tstening »

flo wrote:hmm ... steht das noch innerhlab eines virtuellen Hosts?

Ich hab bloß einen Ausschnitt gepostet. - das erste Verzeichnis ist auch meine Document-Root.
Ja, es steht innerhalb eines virtuellen Hosts. Dann muss es wohl so aussehen:

Code: Select all

<VirtualHost xxx.xxx.xxx.xxx>
	ServerName webdav.mydomain.net
	ServerAdmin info@mydomain.net
	UseCanonicalName On
	ServerSignature On

	DocumentRoot /home/www/webdav
	DAVLockDB /usr/local/apache2/var/LockDB

   # Give Accesss to Document Root
	<Directory /home/www/webdav>
		DAV On
		Options +Indexes
		AllowOverride None
		AuthType Digest
		AuthName webdav
		AuthDigestFile /home/www/passwd/digest-passwords
		<LimitExcept OPTIONS>
			require user _username
		</LimitExcept>
	</Directory>

	<Directory /home/www/webdav/alias1>
		<LimitExcept OPTIONS>
			require user _username1
		</LimitExcept>
	</Directory>
		
	<Directory /home/www/webdav/alias2>
		<LimitExcept OPTIONS>
			require user _username2
		</LimitExcept>
	</Directory>
</VirtualHost>

Viele Grüße,
Tobias :-)
tstening
Posts: 21
Joined: 2002-11-30 17:26
Location: Würzburg
 

Re: WebDav mit Apache 2 unter SuSE 9.1

Post by tstening »

flo wrote: Zum Thema Auth der XP-Clients findest Du im Archiv noch etwas - da ist wohl auch noch der Registry-Hack beschrieben, das weiß ich momentan nciht mehr so genau.
http://ulihansen.kicks-ass.net/aero/webdav/

Eigentlich schade, dass die Einbindung unter XP so schlecht ist bzw. dass sich Apache und Windows XP nicht wirklich vertragen.

Da ich zwar das WebDAV-Verzeichnis als Netzwerkressource einbinden kann, diese aber z.B. im SpeedCommander garnicht auftaucht, werde ich mir wohl ein Tool suchen müssen, welches das WebDAV-Verzeichnis als Laufwerk einbinden kann und möglichst kostenlos ist.

Der WindowsExplorer zeigt übrigens auch nur das DirectoryListing des Apache anstatt einer Ordnerstruktur an, wenn man die Adresse des WebDAV-Verzechnisses direkt eingibt. Damit ist Drag & Drop nur möglich, wenn ich vorher eine Netzwerkressource angelegt habe und diese verwende.

Alles in allem ein nicht gerade befriedigender Zustand, denn leichter ist es so auch nicht, Dateien auf den Server zu schieben, was ich erhofft hatte. Da kann ich auch weiterhin SCP benutzen.

Viele Grüße,
Tobias
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin
 

Re: WebDav mit Apache 2 unter SuSE 9.1

Post by flo »

Das habe ich auch schon feststellen müssen - die Zusammenarbeit klappt nicht so reibungslos wie auf dem Mac, wo ich DAV gerne benutze. Es ist zum Teil auch wirklich unlogisch - auf diesen Auth-Mist bin ich noch nicht mal gekommen, weil ich den DAV bei mir standardmäßig auf 8080 hatte und der Login da immer geklappt hat.

Trotzdem - es hat viele Vorteile, die DAV halt auch sehr interessant machen.

flo.
Post Reply