WebDav mit Apache 2 unter SuSE 9.1
WebDav mit Apache 2 unter SuSE 9.1
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
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
Re: WebDav mit Apache 2 unter SuSE 9.1
Damit hast Du nicht gesagt, wie weit Du jetzt bist - kannst Du per http in den Ordner schreiben?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?
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.
Re: WebDav mit Apache 2 unter SuSE 9.1
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:Damit hast Du nicht gesagt, wie weit Du jetzt bist - kannst Du per http in den Ordner schreiben?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?
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.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.
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
Re: WebDav mit Apache 2 unter SuSE 9.1
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:
Weiterhin habe ich gleich noch die Digest Authentifizierung aktiviert.
Danach habe ich in /etc/apache2/vhosts.d/ einen VirtualHost definiert:
WebDav benötigt noch Schreibrechte in /usr/local/apache2/var, um die LockDB schreiben zu können.
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:
Zum erweitern:
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:
Nun wurden die benötigten Verzeichnisse angelegt.
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 :-)
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
Code: Select all
LoadModule auth_digest_module /usr/lib/apache2/mod_auth_digest.so
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>
Code: Select all
md /usr/local/apache2
chmod -R 755 var/
chown -R wwwrun var/
chgrp -R www var/
Zum anlegen:
Code: Select all
/path_to_htdigest2/htdigest2 -c /home/www/passwd/digest-passwords webdav new_username
Code: Select all
/path_to_htdigest2/htdigest2 /home/www/passwd/digest-passwords webdav new_username
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/
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/
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 :-)
Re: WebDav mit Apache 2 unter SuSE 9.1
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.
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.
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.
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>
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>
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.
Re: WebDav mit Apache 2 unter SuSE 9.1
Hallo Flo,
danke für Deine Hinweise. Werde sie unterbringen. :-)
Viele Grüße,
Tobias
danke für Deine Hinweise. Werde sie unterbringen. :-)
Viele Grüße,
Tobias
Re: WebDav mit Apache 2 unter SuSE 9.1
Hallo Flo,
wenn ich das richtig sehe, hast Du die Directory-Einträge verschachtelt. Das sieht adaptiert bei mir nun so aus:
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 :-)
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>
Sieht jemand den Fehler, den ich gemacht habe und kann mir helfen? Darf man evtl. garnicht verschachteln?
Viele Grüße,
Tobias :-)
Re: WebDav mit Apache 2 unter SuSE 9.1
hmm ... steht das noch innerhlab eines virtuellen Hosts?
Ich hab bloß einen Ausschnitt gepostet. - das erste Verzeichnis ist auch meine Document-Root.
flo.
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>
Re: WebDav mit Apache 2 unter SuSE 9.1
Ja, es steht innerhalb eines virtuellen Hosts. Dann muss es wohl so aussehen:flo wrote:hmm ... steht das noch innerhlab eines virtuellen Hosts?
Ich hab bloß einen Ausschnitt gepostet. - das erste Verzeichnis ist auch meine Document-Root.
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>
Tobias :-)
Re: WebDav mit Apache 2 unter SuSE 9.1
http://ulihansen.kicks-ass.net/aero/webdav/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.
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
Re: WebDav mit Apache 2 unter SuSE 9.1
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.
Trotzdem - es hat viele Vorteile, die DAV halt auch sehr interessant machen.
flo.