So konfigurieren Sie den WebDAV-Zugriff mit Apache unter Ubuntu 14.04

Einführung

WebDAV ist eine Erweiterung des HTTP-Protokolls, mit dem Benutzer Dateien auf Servern verwalten können. Es gibt viele Möglichkeiten, einen WebDAV-Server zu verwenden. Sie können beispielsweise Word- oder Excel-Dokumente für Ihre Kollegen freigeben, indem Sie sie auf Ihren WebDAV-Server hochladen. Sie können Ihre Musiksammlung sogar mit Ihrer Familie und Freunden teilen, indem Sie ihnen einfach eine URL geben. All dies kann erreicht werden, ohne dass sie etwas installieren.

Es gibt viele Möglichkeiten, Dateien auf einem Remote-Server zu verwalten. WebDAV bietet mehrere Vorteile gegenüber anderen Lösungen wie FTP oder Samba. In diesem Artikel wird erläutert, wie Sie Ihren Apache-Server so konfigurieren, dass nativer WebDAV-Zugriff von Windows, Mac und Linux mit Authentifizierung möglich ist.

Warum WebDAV?

WebDAV bietet mehrere Vorteile:

  • Native Integration auf allen gängigen Betriebssystemen (Windows, Mac, Linux); Es ist nicht erforderlich, Software von Drittanbietern zu installieren, um WebDAV zu verwenden.

  • Unterstützung für Teiltransfers.

  • Mehr Auswahlmöglichkeiten für die Authentifizierung. Bei HTTP zu sein bedeutet NTLM, Kerberos, https://en.wikipedia.org / wiki / Lightweight_Directory_Access_Protocol [LDAP] usw. sind alle möglich.

Abhängig von Ihrer Situation ist WebDAV möglicherweise die beste Lösung für Ihre Anforderungen.

Warum Apache?

Es gibt viele Webserver, die WebDAV unter Linux unterstützen. Apache bietet jedoch die konformste Implementierung des WebDAV-Protokolls. Zum Zeitpunkt des Schreibens funktioniert WebDAV unter Nginx und Lighttpd, jedoch nur teilweise.

Voraussetzungen

Sie benötigen einen * Ubuntu 14.04 * -Server.

Bevor wir beginnen, legen wir zunächst einen Benutzer mit * sudo * -Zugriff an. Sie können Befehle als * root * ausführen, dies wird jedoch aus Sicherheitsgründen nicht empfohlen. Es gibt einen ausgezeichneten Artikel unter adding users on Ubuntu 14.04 sollten Sie mehr erfahren wollen.

Benutzer anlegen

Wenn Sie zum ersten Mal eine Digital Ocean-Instanz erstellen, erhalten Sie Anmeldeinformationen, mit denen Sie sich als * root * anmelden können. Fügen wir als * root * zunächst einen Benutzer mit dem Namen * alex * hinzu.

adduser alex

Sie werden aufgefordert, ein Passwort für den Benutzer * alex * zu erstellen (siehe unten). Es werden weitere Informationen zum Benutzer * alex * abgefragt. Sie können sie eingeben, wenn Sie möchten.

Adding user `alex' ...
Adding new group `alex' (1000) ...
Adding new user `alex' (1000) with group `alex' ...
Creating home directory `/home/alex' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for alex
Enter the new value, or press ENTER for the default
       Full Name []:
       Room Number []:
       Work Phone []:
       Home Phone []:
       Other []:
Is the information correct? [Y/n] y

Erteilen von sudo-Berechtigungen an den Benutzer

Nachdem Sie einen neuen Benutzer erstellt haben, müssen Sie dem Benutzer * alex * sudo die Berechtigungen erteilen. Angenommen, Sie sind noch als * root * angemeldet, fügen Sie den Benutzer * alex * der Gruppe * sudo * hinzu, indem Sie den folgenden Befehl eingeben.

usermod -aG sudo alex

Benutzern in der Gruppe * sudo * werden * sudo * -Berechtigungen gewährt. Jetzt können Sie sich abmelden und als Benutzer * alex * anmelden.

Erster Schritt - Installation von Apache

Lassen Sie uns Apache installieren.

sudo apt-get update
sudo apt-get install apache2

Der Apache-Webserver sollte installiert sein und ausgeführt werden.

Zweiter Schritt - Einrichten von WebDAV

Es gibt drei Schritte, um WebDAV einzurichten. Wir bestimmen einen Standort, aktivieren die erforderlichen Module und konfigurieren ihn.

Verzeichnis vorbereiten

Wir müssen einen Ordner für die Bereitstellung von WebDAV festlegen. Hierfür erstellen wir das neue Verzeichnis "+ / var / www / webdav ". Sie müssen außerdem den Eigentümer in " www-data +" (Ihren Apache-Benutzer) ändern, damit Apache darauf schreiben kann.

sudo mkdir /var/www/webdav
sudo chown -R www-data:www-data /var/www/

Aktivieren von Modulen

Als nächstes aktivieren wir die WebDAV-Module mit a2enmod

sudo a2enmod dav
sudo a2enmod dav_fs

Die Apache-Module finden Sie unter + / etc / apache2 / mods-available +. Dadurch wird eine symbolische Verknüpfung von "+ / etc / apache2 / mods-available" zu "+ / etc / apache2 / mods-enabled" erstellt.

Aufbau

Öffnen oder erstellen Sie die Konfigurationsdatei unter + / etc / apache2 / sites-available / 000-default.conf + mit Ihrem bevorzugten Texteditor.

nano /etc/apache2/sites-available/000-default.conf

Fügen Sie in der ersten Zeile die Direktivenkonfiguration * DavLockDB * hinzu:

DavLockDB /var/www/DavLock

Und die Anweisungen * Alias ​​* und * Directory * im Abschnitt VirtualHost:

Alias /webdav /var/www/webdav

<Directory /var/www/webdav>
   DAV On
</Directory>

Die Datei sollte nach der Bearbeitung so aussehen.

DavLockDB /var/www/DavLock
<VirtualHost *:80>
       # The ServerName directive sets the request scheme, hostname and port that
       # the server uses to identify itself. This is used when creating
       # redirection URLs. In the context of virtual hosts, the ServerName
       # specifies what hostname must appear in the request's Host: header to
       # match this virtual host. For the default virtual host (this file) this
       # value is not decisive as it is used as a last resort host regardless.
       # However, you must set it for any further virtual host explicitly.
       #ServerName www.example.com

       ServerAdmin webmaster@localhost
       DocumentRoot /var/www/html

       # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
       # error, crit, alert, emerg.
       # It is also possible to configure the loglevel for particular
       # modules, e.g.
       #LogLevel info ssl:warn

       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined

       # For most configuration files from conf-available/, which are
       # enabled or disabled at a global level, it is possible to
       # include a line for only one particular virtual host. For example the
       # following line enables the CGI configuration for this host only
       # after it has been globally disabled with "a2disconf".
       #Include conf-available/serve-cgi-bin.conf

       Alias /webdav /var/www/webdav

       <Directory /var/www/webdav>
           DAV On
       </Directory>
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Die Anweisung DavLockDB gibt den Namen der DAV Lock-Datenbank an. Es sollte ein Pfad zu einer Datei sein. Die Datei muss nicht erstellt werden. Das Verzeichnis sollte vom Apache-Server beschreibbar sein.

Die Direktive Alias ordnet Anforderungen "+ http: // your.server / webdav " dem " / var / www / webdav +" zu Mappe.

Die Anweisung Directory weist Apache an, WebDAV für den Ordner "+ / var / www / webdav +" zu aktivieren. Weitere Informationen zu mod_dav finden Sie in den Apache-Dokumenten.

Wenn Sie den Apache-Server neu starten, verfügen Sie über einen funktionierenden WebDAV-Server ohne Authentifizierung.

Starten Sie den Apache-Server folgendermaßen neu:

sudo service apache2 restart

Testen

WebDAV ohne Authentifizierung erlaubt nur Lesezugriff für die Benutzer. Lassen Sie uns zum Testen eine Beispieldatei erstellen.

echo "this is a sample text file" | sudo tee -a /var/www/webdav/sample.txt

Eine Textdatei mit dem Namen * sample.txt * sollte in * / var / www / webdav * erstellt werden. Es sollte den Text enthalten _dies ist eine Beispieltextdatei.

Jetzt können wir versuchen, uns von einem externen Computer aus anzumelden. Der WebDAV-Server sollte sich unter * http: // <your.server.com> / webdav * befinden. Der Kürze halber zeigen wir nur, wie Sie sich ohne Anmeldeinformationen auf einem Mac anmelden können.

Öffnen Sie auf dem Mac * Finder *. Suchen Sie in der Menüleiste nach * Gehe zu * und wählen Sie die Option * Mit Server verbinden *.

Wählen Sie die Option * Als Gast verbinden *. Klicken Sie anschließend auf * Verbinden *.

Du solltest eingeloggt sein. Wenn Sie eine Verbindung zu diesem freigegebenen Dateisystem herstellen und den Ordner "+ webdav " eingeben, sollte die zuvor erstellte Datei " sample.txt +" angezeigt werden. Die Datei sollte herunterladbar sein.

Dritter Schritt - Hinzufügen der Authentifizierung

Ein WebDAV-Server ohne Authentifizierung ist nicht sicher. In diesem Abschnitt fügen wir Ihrem WebDAV-Server mithilfe des Digest-Authentifizierungsschemas eine Authentifizierung hinzu.

Basis- oder Digestauthentifizierung?

Es stehen viele Authentifizierungsschemata zur Verfügung. Diese Tabelle zeigt die Kompatibilität der verschiedenen Authentifizierungsschemata unter verschiedenen Betriebssystemen. Wenn Sie HTTPS bereitstellen, wird davon ausgegangen, dass Ihr SSL-Zertifikat gültig ist (nicht selbstsigniert).

Wenn Sie * HTTP * verwenden, verwenden Sie Digest authentication, da dies auf allen Betriebssystemen funktioniert. Wenn Sie * HTTPS * verwenden, können Sie Basic authentication verwenden.

Wir werden das * Digest * -Authentifizierungsschema behandeln, da es auf allen Betriebssystemen funktioniert, ohne dass ein SSL-Zertifikat erforderlich ist.

Digest-Authentifizierung

Generieren wir die Datei (mit dem Namen "+ users.password +"), in der die Passwörter für die Benutzer gespeichert sind. In der Digest-Authentifizierung gibt es das Feld * realm *, das als Namespace für die Benutzer fungiert. Wir werden * webdav * als unser * Realm * verwenden. Unser erster Benutzer heißt * alex *.

Um die Digest-Datei zu generieren, müssen die Abhängigkeiten installiert werden.

sudo apt-get install apache2-utils

Wir werden als nächstes Benutzer hinzufügen. Lassen Sie uns die Benutzerpasswortdatei mit dem folgenden Befehl generieren.

sudo htdigest -c /etc/apache2/users.password webdav alex

Dies fügt den Benutzer * alex * zur Passwortdatei hinzu. Es sollte eine Passwortabfrage geben, um das Passwort für * alex * zu erstellen.

Für das spätere Hinzufügen von Benutzern sollten Sie das * c * -Flag entfernen. Hier ist ein weiteres Beispiel für das Hinzufügen eines Benutzers namens * chris *. Erstellen Sie ein Passwort, wenn Sie dazu aufgefordert werden.

sudo htdigest /etc/apache2/users.password webdav chris

Wir müssen Apache auch erlauben, die Passwortdatei zu lesen, damit wir den Besitzer ändern können.

sudo chown www-data:www-data /etc/apache2/users.password

Nachdem die Passwortdatei erstellt wurde, sollten wir Änderungen an der Konfiguration unter + / etc / apache2 / sites-available / 000-default.conf + vornehmen.

Fügen Sie der Direktive * Directory * die folgenden Zeilen hinzu

AuthType Digest
AuthName "webdav"
AuthUserFile /etc/apache2/users.password
Require valid-user

Die endgültige Version sollte so aussehen (ohne Kommentare).

DavLockDB /var/www/DavLock

<VirtualHost *:80>
   ServerAdmin webmaster@localhost
   DocumentRoot /var/www/html

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined

   Alias /webdav /var/www/webdav

   <Directory /var/www/webdav>
       DAV On
       AuthType Digest
       AuthName "webdav"
       AuthUserFile /etc/apache2/users.password
       Require valid-user
   </Directory>
</VirtualHost>

Das Modul mod_authn enthält die Definitionen für die Authentifizierungsanweisungen.

Die Anweisung * AuthType * weist Apache an, dass für das Verzeichnis + / var / www / webdav + eine Authentifizierung nach dem Schema * Digest * erfolgen soll.

Die * Digest * -Authentifizierung erfordert einen Wert für * realm *, den wir als * webdav * festlegen. * Realm * verhält sich wie ein Namespace. Wenn Sie Benutzer mit demselben Namen haben, können Sie diese durch unterschiedliche Werte für * realm * trennen. Wir verwenden die Anweisung * AuthName *, um den Wert für * realm * festzulegen.

Die Anweisung * AuthUserFile * gibt den Speicherort der Kennwortdatei an.

Die Direktive * Require * besagt, dass nur gültige Benutzer, die sich authentifizieren, auf dieses Verzeichnis zugreifen können.

Aktivieren Sie schließlich das Digest-Modul und starten Sie den Server neu, damit die Einstellungen wirksam werden.

sudo a2enmod auth_digest
sudo service apache2 restart

Vierter Schritt - Zugriff auf die Dateien

Wir zeigen, wie Sie mit den nativen Dateibrowsern von Mac, Windows und Linux (Ubuntu) auf Ihren WebDAV-Server zugreifen. Wir werden der Kürze halber Datei- und Ordneroperationen nur auf dem Mac demonstrieren, obwohl Sie Dateien auf dem Server in allen Betriebssystemen hinzufügen, bearbeiten und löschen können.

Sie können mit einem Webbrowser auch über das Internet auf die Dateien zugreifen.

Sie müssen möglicherweise das Laufwerk auswerfen und erneut eine Verbindung herstellen, wenn Sie es zuvor getestet haben, bevor wir die Authentifizierung hinzugefügt haben.

Mac

Öffnen Sie auf einem Mac * Finder *. Suchen Sie in der Menüleiste nach "Gehe zu" und wählen Sie die Option "Mit Server verbinden".

Geben Sie die Serveradresse ein. Es sollte * http: // <your.server> / webdav * sein. Drücken Sie * Verbinden *.

Sie werden aufgefordert, einen Benutzernamen und ein Passwort einzugeben. Geben Sie einen der Benutzer ein, die wir auf dem Server erstellt haben, und drücken Sie * Connect *.

Sobald Sie eine Verbindung hergestellt haben, sollte das Verzeichnis in * Finder * angezeigt werden.

Sie können Dateien in das Verzeichnis "+ webdav +" kopieren und speichern und Unterverzeichnisse erstellen. Hier ist der Anfangszustand des Verzeichnisses auf dem Server:

Sie können mit Finder ganz normal Dateien hinzufügen oder umbenennen und neue Verzeichnisse erstellen. Unten ist das Endergebnis.

Windows

Öffnen Sie unter Windows * File Explorer *. In der linken Seitenleiste sollte sich das Symbol * Netzwerk * ​​befinden.

Klicken Sie mit der rechten Maustaste auf das Symbol * Netzwerk *. Es sollte das Kontextmenü mit der Option * Netzlaufwerk zuordnen * anzeigen. Klicken Sie darauf.

Geben Sie die Serveradresse in das Ordnerfeld ein. Es sollte * http: // <your.server> / webdav * sein. Wählen Sie die Option * Mit anderen Anmeldeinformationen verbinden *, wenn sich Ihre Anmeldung unterscheidet. Drücken Sie * Fertig stellen *.

Sie werden aufgefordert, einen Benutzernamen und ein Passwort einzugeben. Geben Sie sie ein und drücken Sie * OK *.

Sobald Sie eine Verbindung hergestellt haben, sollte sie als Netzwerklaufwerk in der linken Seitenleiste Ihres * Datei-Explorers * angezeigt werden.

Linux (Ubuntu)

Wir verwenden Ubuntu 14.04 als unser Linux-Desktop-Betriebssystem. Öffnen Sie unter Ubuntu * Files *. In der linken Seitenleiste befindet sich die Option * Mit Server verbinden *. Klicken Sie darauf.

Geben Sie die Serveradresse ein. Es sollte * dav: // <your.server> / webdav * sein. Drücken Sie * Verbinden *.

Sie werden aufgefordert, einen Benutzernamen und ein Passwort einzugeben. Geben Sie sie ein und drücken Sie * Verbinden *.

Sobald Sie eine Verbindung hergestellt haben, sollte das Verzeichnis unter der Liste * Netzwerk * ​​angezeigt werden.

Fazit

In diesem Artikel wurde beschrieben, wie Sie einen WebDAV-Server mit Apache unter Ubuntu 14.04 einrichten. Wir haben auch erläutert, wie Sie die Digest-Authentifizierung konfigurieren, um den Server zu sichern. Zuletzt haben wir Ihnen gezeigt, wie Sie von allen drei Hauptbetriebssystemen aus mit ihren nativen Dateibrowsern eine Verbindung zum WebDAV-Server herstellen.