webDAV - Problem

W

watzlav

Aktives Mitglied
Thread Starter
Dabei seit
02.11.2006
Beiträge
315
Reaktionspunkte
5
Hallo,
ich möchte meinen MacMini als webDAV Server verwenden. Ich habe bereits folgendes getan:

in der httpd.config habe ich folgende Zeile entkommentiert:
Code:
Include /private/etc/apache2/extra/httpd-dav.conf

und in httpd-dav.conf folgendes eingetragen:
Code:
Alias /wenzel "/Volumes/Daten/wenzel"
<Directory "/Volumes/Daten/wenzel">
    Dav On

    AuthType Basic
    AuthName wenzel
    AuthUserFile "/Volumes/Daten/htdaten/wenzel.passwd"

    <LimitExcept GET OPTIONS>
        require valid-user
    </LimitExcept>
</Directory>

Wenn ich jetzt versuche auf die Adresse http://[I][macmini][/I]/wenzel zuzugreifen meldet Finder, es sei nicht möglich und im Serverprotokoll steht, dass der Server das anmelden verhindert habe:
[Fri Apr 25 23:07:28 2008] [error] [client ::1] client denied by server configuration: /Volumes/Daten/wenzel/

Wenn ich mit einem Browser zugreife bekomme ich folgendes:
Forbidden

You don't have permission to access /wenzel on this server.

Was kann ich tun?
 
Das sieht ein wenig so aus als würdest Du WebDAV und die Zugriffssteuerung mit .htaccess vermischen.
Ich verwende WebDAV nur mit 'AuthType Digest' (was nicht heißen muss, dass es anders nicht funktioniert).

[Edit] Kommando zurück.
Basic muss man verwenden, wenn man auch Windows Clients hat, die über den IE zugreifen können müssen - Andernfalls ist Digest IMO zu bevorzugen, da hier die Passwörter nicht im Klartext übers Netz gehen. Man kann auch die Windows Benutzer dazu zwingen, vernünftige Clients zu verwenden.[/Edit]

Wie hast Du die Datei "/Volumes/Daten/htdaten/wenzel.passwd" erzeugt?
Kannst Du mal exemplarisch den Inhalt posten?
Warum verwendest Du nicht die Vorgaben aus der Standarkonfiguration?
Ist "/Volumes/Daten/htdaten/wenzel.passwd" für den Server lesbar?
Was sagt "apachectl configtest"?
Hast Du den Apachen nach der Änderung der Konfiguration neu gestartet?
 
Zuletzt bearbeitet:
Die Fehlermeldung in deiner error_log in Verbindung mit der Forbidden Meldung im Browser kann auch erscheinen, wenn du irgendwo in deiner httpd.conf für <Directory "/Volumes/Daten/wenzel"> eine
Deny from all
Direktive gesetzt hast.
 
Hi!
die htpasswd Datei habe ich so erzeugt:

Code:
htpasswd -cb "/Volumes/Daten/htdaten/wenzel.htpasswd" Wenzel [Kennwort]

Sowohl der Ordner /htdaten als auch der Ordner /Wenzel sind mit dem Befehl "chown" auf www:www geschrieben.
Laut Configtest ist alles in Ordnung ("Syntax OK") und ich habe den Server selbstverständlich neugestartet. Über:
Code:
apachectl restart

Das Problem ist hier also, dass ich einfach keinen Fehler finden kann...
P.S.: Die Directory "Volumes/Daten/Wenzel" wird nirgends anders in irgend einer config behandelt.
 
Wenn deine in Gänsefüsschen geschriebenen Pfade per Copy and Paste in deine Posts gelangt sind dann achte mal auf die GROSS und kleinschreibung der Verzeichnisse in deiner Config und auf Dateisystemebene ;)
 
Was sagen
Code:
ls -la /Volumes/Daten/htdaten/
und
Code:
ls -ld /Volumes/Daten
Wenn der Server da schon nicht reinkommt, kannst Du unten die Rechte einstellen, wie Du möchtest und es wir trotzdem nix.

@bequiet
Wenn das Dateisystem nicht mit Groß-/Kleinschreibung formatiert ist, dürfte das eigentlich nichts ausmachen.
Aber Du hast natürlich recht. Sauber ist das nicht und Sorgfalt ist das A und O bei solchen Dingen.
 
Hallo,
Code:
wenzel-massags-mac-mini:/ watzlav$ ls -la /Volumes/Daten/htdaten/
total 8
drwxr-xr-x   3 _www  _www   102 25 Apr 22:16 .
drwxrwxr-x+ 11 root  admin  442 25 Apr 21:30 ..
-rw-r--r--   1 root  _www    21 25 Apr 22:16 wenzel.passwd
(Via Copy->Paste in's Forum gelangt)

Code:
wenzel-massags-mac-mini:/ watzlav$ ls -ld /Volumes/Daten
drwxrwxr-x+ 11 root  admin  442 25 Apr 21:30 /Volumes/Daten
(Via Copy->Paste in's Forum gelangt)

Wenn der Server da schon nicht reinkommt, kannst Du unten die Rechte einstellen, wie Du möchtest und es wir trotzdem nix.
Heißt das, dass der Benutzer www lese-&schreibrecht auf übergeordnete Ordner braucht?

Eine Sache noch:
Die Groß- und Kleinschreibung möchte ich einmal klarstellen indem ich alle Ordnernamen hier aufliste. Ich habe nicht alles per Copy und Past geschrieben, was bis jetzt da war. Also, so sollte es sein:
  • "Daten"
  • "htdaten"
  • "wenzel"
Die Groß- und Kleinschreibung stimmt in der httpd-dav.config
 
Zuletzt bearbeitet:
Zum Thema Rechte:
Der Benutzer www braucht zumindest auf uebergeordnete Verzeichnisse ein Lese und Ausfuehren Recht: also ein "r-x".
 
Hallo,
Code:
wenzel-massags-mac-mini:/ watzlav$ ls -la /Volumes/Daten/htdaten/
total 8
drwxr-xr-x   3 _www  _www   102 25 Apr 22:16 .
drwxrwxr-x+ 11 root  admin  442 25 Apr 21:30 ..
-rw-r--r--   1 root  _www    21 25 Apr 22:16 wenzel.passwd
(Via Copy->Paste in's Forum gelangt)

Wer soll denn _www sein?
Liegt's vielleicht daran?
 
P.S.: Die Directory "Volumes/Daten/Wenzel" wird nirgends anders in irgend einer config behandelt.

ok, aber die .htpasswd liegt in /Volumes/Daten/htdaten.
Hast du für diese Directory ein entsprechendes Allow gesetzt?

Entweder in der Directory Direktive eines übergeordneten Verzeichnisses oder explizit:
Code:
<Directory "/Volumes/Daten/htdaten">
    ...
    Allow from all
    ....
</Directory>
 
Hi!
Jetzt habe ich selbstverständlich folgendes eingefügt und der Server fährt nicht mehr hoch...
Code:
<Directory ...........>
    Allow from all
</Directory>
 
Zum Thema Rechte:
Der Benutzer www braucht zumindest auf uebergeordnete Verzeichnisse ein Lese und Ausfuehren Recht: also ein "r-x".

der Server ist doch bei "Everyone" inbegriffen, oder?
 
Hi!
Jetzt habe ich selbstverständlich folgendes eingefügt und der Server fährt nicht mehr hoch...

Dürfte eigentlich nicht sein. Lässt sich auch ohne weitere Angaben von dir nicht nachvollziehen.

Gut, anderer Ansatz:

Schau doch mal, welches Verzeichnis als DocumentRoot in der httpd.conf eingetragen ist. Es sollte nur eine DocumentRoot Direktive in deiner httpd.conf auftauchen, da du keine virtual hosts verwendest.

Für das gleiche Verzeichnis, das hinter DocumentRoot steht, sollte es auch eine Directory Direktive geben. Innerhalb dieser Direktive muss ein Allow from all stehen, sonst erhältst du beim Zugriff auf Unterverzeichnisse wie /wenzel genau die von dir beschriebenen Fehler.
 
Ich selber mag keine langen Posts, aber ich produziere hier einen. Er ist aber sehr schnell gelesen.

Ich habe alles von vorne angefangen, also von null an:
Verwendete Verzeichnisse sind:
  • /Volumes/Webdaten/htusers - Verzeichnis in dem die .ht-Dateien untergebracht werden
  • /Volumes/Webdaten/users/wenzel - Verzeichnis für die DAV-Daten
Die folgenden Zeilen sind in der httpd.conf geändert:
Code:
<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
</Directory>
(Dadurch ermögliche ich .htaccess als Standard

Code:
Include /private/etc/apache2/extra/httpd-dav.conf
(Zeile war aus-kommentiert)

Folgende Zeilen habe ich in der httpd-dav.config eingrtragen:
Code:
#Manuell Anfang
<Directory "/Volumes/Webdaten/htusers">
    Allow from all
</Directory>
Alias /wenzel "/Volumes/Webdaten/users/wenzel"
<Directory "/Volumes/Webdaten/users/wenzel">
    DAV ON

    Order Allow,Deny
    Allow from all

    AuthType Basic
    AuthName wenzel
    AuthUserFile "/Volumes/Webdaten/htusers/wenzel.passwd"

    <LimitExcept OPTIONS>
        require valid-user
    </LimitExcept>
</Directory>
#Manuell Ende

Das Resultat:
Es ist jetzt möglich via webDAV eine Verbindung herzustellen, jedoch kann ich nicht schreiben, löschen etc. Im Browser bekomme ich 403 Forbidden. Das Serverprotokoll sagt "client denied by server".
Deshalb zu gute letzt noch die Zugriffsrechte:
macmini:~ wmassag$ ls -la /Volumes/Webdaten/users/wenzel
total 0
drwxr-xr-x+ 2 _www _www 68 1 Mai 19:14 .
drwxr-xr-x 4 wmassag admin 136 1 Mai 19:14 ..
macmini:~ wmassag$ ls -la /Volumes/Webdaten/htusers
total 8
drwxr-xr-x 3 _www _www 102 1 Mai 22:05 .
drwxrwxr-x 8 root admin 340 1 Mai 19:11 ..
-rw-r--r-- 1 _www _www 21 1 Mai 22:05 wenzel.passwd
P.S.: Der Benutzer und die Gruppe "_www" waren früher "www"
 
Erfolgt der 403 beim Zugriff auf /wenzel ?
Du hast in /Volumes/Webdaten/users/wenzel keine index.html
 
Code:
<Directory "/Volumes/Webdaten/htusers">
    Allow from all
</Directory>
Ist schon mal Unsinn wenn da die Passwortdatei ist.
Die gehört in einen Bereich der NICHT unterhalb des Documentroots ist.
Wie ist eigentlich DocumentRoot gesetzt und wo liegt die .htaccess?
index.html wird selbstverständlich NICHT benötigt! Hier gehts schliessslich um webdav.

Und wenn dem webserver die lese- und schreibrechte genommen werden, dann kann er in den webdavverzeichnisssen nicht mehr lesen und schreiben. Das sollte doch klar sein. Wozu also _www?
 
Code:
<Directory "/Volumes/Webdaten/htusers">
    Allow from all
</Directory>
Ist schon mal Unsinn wenn da die Passwortdatei ist.
OK, da wiedersprechen sich Macmännchen und Magheinz. Was ist hier also korrekt?
Die gehört in einen Bereich der NICHT unterhalb des Documentroots ist.
Wie ist eigentlich DocumentRoot gesetzt und wo liegt die .htaccess?
Gut, öhm wenn man nicht weiß wo DocumentRoot ist vielleicht nicht den ersten Satz von Zitat schreiben?
Code:
DocumentRoot "/Library/WebServer/Documents"

index.html wird selbstverständlich NICHT benötigt! Hier gehts schliessslich um webdav.
Ich ermahne Menschen die mir helfen wollen sehr ungerne, aber bitte bleiben wir doch alle mal sachlich.

Und wenn dem webserver die lese- und schreibrechte genommen werden, dann kann er in den webdavverzeichnisssen nicht mehr lesen und schreiben. Das sollte doch klar sein. Wozu also _www?
Offenbar wurde mein Post nicht vollständig gelsen. Der Benutzer und die Gruppe "www" werden als "_www" angezeigt. Zugewiesen ist das alles über
Code:
sudo chown -R www:www [Datei]
 
OK, da wiedersprechen sich Macmännchen und Magheinz. Was ist hier also korrekt?
lies doch bitte endlich die apache-doku. Da wird dir das alles genau erklärt.
http://httpd.apache.org/docs/2.2/mod/core.html#directory
Das ist der entsprechnede Abschnitt.
Wenn du dann verstnaden hast was man mit der Directory-Direktive macht, dann darfst du noch mal darüber nachdenken warum deine Anweisung Unfug ist.
Aber einfach kurz für dich, da du es ja eh nicht liest:
"Allow from all" für das Verzeichnis in dem die Passwortdatei liegt. du möchtest das jeder die Passwortdatei lesen kann?
Abgesehen davon dass die Directive natürlich nur was bringt wenn das Verzeichnis überhaupt per web erreichbar ist. Das steht aber in der Doku...

Gut, öhm wenn man nicht weiß wo DocumentRoot ist vielleicht nicht den ersten Satz von Zitat schreiben?
Code:
DocumentRoot "/Library/WebServer/Documents"
Wenn es nicht unterhalb der Documentroot liegt könnte immer noch ein alias eine Rolle spielen. Wenn du die Doku gelesen hättest wüsstest du das.
Wenn allerdings das Verzeichnis nicht unterhalb das Docuemntroot oder eines durch einen Alias erreichbaren Verzeichnisses liegt, dann ist nunmal die Directory-Directive ohne Sinn.

Ich ermahne Menschen die mir helfen wollen sehr ungerne, aber bitte bleiben wir doch alle mal sachlich.
Und mich nerven Leute die offensichtlich zu faul sind die Doku zu der Software zu lesen welche sie einsetzen wollen.
Ansonsten, was war an meinen Satz bitte unsachlich?

Offenbar wurde mein Post nicht vollständig gelsen. Der Benutzer und die Gruppe "www" werden als "_www" angezeigt. Zugewiesen ist das alles über
Code:
sudo chown -R www:www [Datei]
Code:
Der Benutzer und die Gruppe "_www" waren früher "www"
Gewöhn die eindeutige Fehlerbeschreibungen an. Das kann auch bedeuten dass du die Rechte geändert hast.

Bevor du allerdings nicht http://httpd.apache.org/docs/ gelesen hast wirst du von mir eh keine Antworten bekommen. Es ist mir einfach zu doof. Wenn ich vorlesen soll kannst du mich tageweise oder stundenweise buchen.

Ansonsten halte ich es für nicht verantwortbar dass du einen öffentlich erreichbaren Apache mit deinem jetzigen Wissensstand betreiben möchtest oder sogar schon betreibst. Das Teil wird die schneller geknackt als du schauen kannst und das schlimme ist, du würdest es noch nicht einmal merken.
 
ok, aber die .htpasswd liegt in /Volumes/Daten/htdaten.
Hast du für diese Directory ein entsprechendes Allow gesetzt?
Es genügt wenn der apache-user die passwortdatei lesen kann. Sie sollte auf KEINEN Fall vom web aus erreichbar sein! Von daher macht auch keine Directory-Directive Sinn.
 
als erstes mal ganz kurz an magheinz: niemand zwingt dich dazu hier zu antworten. Schade dass du dich derart aufblasen musst um dich wohl zu fühlen, oder vielleicht bist du einfach nur zu empfindlich. Ich betreibe den Server noch nicht. Ich werde ihn auch erst online schalten, wenn ich weiß was ich tue. Der Server soll ausschließlich zum Austausch von Daten verwendet werden und eine einzige Webseite (meine) hosten. Über die Directory habe ich inzwischen den entsprechenden (den verlinkten) Abschnitt mehrmals gelesen. Auch schon vor deiner unmissverständlich direkten Aufforderung. Ich lese daraus, dass ich innerhalb des Directory-Tags Eigenschaften zur Sicherheit - sprich Zugriffsrechte etc. - und Eigenschaften zur Funktion einstellen kann. Aber nicht was ich einstellen muss um einen Ordner sicher mit DAV zu nutzen.

Für Alle:
Mein Ziel ist es unter meiner IP/dyndns Adresse meinen "Server" zu erreichen, der für alle aussieht wie ein stink normaler Webserver. Meinen "Server" sollen also nur HTTP-Zugriffe erreichen. Das erreiche ich durch die Konfiguration meines Routers. Und dadurch, dass der Server nur am Port 80 und 8080 lauscht.
Als zweites soll der "Server" als webDAV-Ziel Kennwort-geschützt herhalten um Daten zu verwalten auf die ich Zugriff haben möchte um sie von überall zu verwenden. Dazu möchte ich die "Server"-Konfiguration so einstellen, dass ein Ordner, der auf einer anderen Festplatte ist, als DAV Ordner herhält. Um ungewünschte Zugriffe zu verhindern möchte ich .htaccess verwenden, da Windows auch zugreifen können soll .htaccess. Was soll ich also tun? Schlichte sachliche Antworten die mir sagen was ich tun soll, oder wo ich eine konkrete Antwort auf diese Frage erhalte reichen vollkommen.

Wenn das oben beschriebene geschafft ist werde ich mich darum kümmern durch entsprechende Zertifikate die Verbindung zu sichern.
 
Zurück
Oben Unten