UNIXwork

dav secret store

16. Dezember 2019

Eines der neuen Features in dav 1.3 ist der Secret-Store. Dieser bietet eine alternative Methode um Authentifizierungsdaten zu speichern. Bisher war es nur möglich, in der config.xml optional Benutzer und Passwort abzulegen. Dies hat natürlich den Nachteil, dass das Passwort damit im Klartext abgespeichert ist.

Der Secret-Store ist eine passwortgeschützte Ablage für Credentials, die durch eine eindeutige ID identifiziert werden. Credentials enthalten dann einen Benutzernamen, ein Passwort und optional zugehörige URLs. Die Credential-IDs und URLs werden unverschlüsselt gespeichert. Damit kann dav überprüfen, ob für eine angefragte URL Zugangadaten im Secret Store vorhanden sind. Wenn dies der Fall ist, wird nach dem Master-Passwort gefragt. Mit diesem wird der Secret-Store dann entschlüsselt und die gespeicherten Zugangsdaten passend zur URL verwendet.

Für die Verwaltung des Secret Store gibt es mehrere Befehle. Neue Credentials können mit dav add-user angelegt werden. Dies fragt zunächst das Master-Passwort ab, um entweder einen bestehenden Secret Store zu entschlüsseln oder um einen neuen anzulegen. Danach muss ein Credentials Identifier angegeben werden, der eindeutig sein muss. Es folgen die eigentlichen Authentifizierungsinformationen, nämlich Benutzername und Passwort. Optional können dazu noch mehrere Locations gespeichert werden.

$ dav add-user
Master password: 
Credentials identifier: user1
User: myuser
Password: 
Location (optional): http://example.com/
Location (optional):

Wenn danach nun eine der angegebenen URLs aufgerufen wird, werden die im Secret Store gespeicherten Authentifizierungsinformationen genutzt. Hierfür fragt dav nach dem Secret Store Passwort:

dav list http://example.com/
Master password:
...

Dies funktioniert auch, wenn man nicht direkt über eine URL, sondern einen Repository-Namen zugreift. Wenn für die Repository-URL im Secret-Store Credentials hinterlegt sind, werden diese genutzt. Es kann auch im Secret-Store als Location ein Repository-Name oder ein Repository-Name mit zugehörigen Pfad gespeichert werden.

Location (optional): myrepo/path/

Eine weitere Möglichkeit um Repositories mit Credentials zu verknüpfen ist, in der config.xml die Credentials-ID anzugeben. Hierfür gibt es das Element <stored-user>.

<repository>
	<name>myrepo</name>
	<url>http://example.com/webdav/</url>
	<stored-user>user1</stored-user>
</repository>

Weitere Befehle Administrations-Befehle für den Secret-Store sind remove-user, edit-user und list-users. Diese sind interaktive Befehle (bis auf list-users) und dürften einfach zu benutzen sein, wenn man das Konzept des Secret-Stores verstanden hat.

Autor: Olaf | 0 Kommentare | Tags: dav

dav 1.3 veröffentlicht

15. Dezember 2019

Bestimmt über ein Jahr später als geplant kann ich nun endlich eine neue Version von dav veröffentlichen. Dabei handelt es sich um einen WebDAV-Client für die Kommandozeile. Ebenfalls dabei ist das Programm dav-sync, welches Dateien per WebDAV synchronisieren kann.

Die Ursache der Verzögerung ist eine Geschichte für sich, die Kurzfassung ist, dass ich versucht habe, zu viele Features in das Release zu packen. Diese alle zu stabilisieren hat eine Ewigkeit gedauert.

Doch die positive Folge ist, dass vor allem dav-sync jetzt vermutlich eine der featurereichsten Dateisynchronisierungslösungen ist. War bisher vermutlich das einzige Killerfeature die integrierte Dateiverschlüsselung, hat dav-sync jetzt eine ganze Reihe an Alleinstellungsmerkmalen und dürfte vor allem das Nextcloud-Synctool deutlich in den Schatten stellen.

Die Highlights des neuen Releases sind:

Datei-Versionierung in dav-sync

Ich hatte in dav-sync schon immer Wert auf Datensicherheit gelegt. So gab es schon immer die Möglichkeit, lokale Sicherheitskopien von Dateien automatisch anlegen zu lassen, bevor diese durch einen Synchronisationsvorgang gelöscht oder überschrieben werden. Jetzt gibt es das ganze auch auf Serverseite, denn dav-sync kann nun automatisch auf dem Server alte Datei-Versionen speichern. Dazu gibt es auch einen einfach zu benutzenden Befehl, der lokale Dateien wiederherstellen kann. Versehentlich Dateien löschen oder überschreiben, und dies erst nach diversen Synchronisationsvorgängen merken, ist somit kein Problem mehr.

Datei-Aufteilung in Blöcke für eine partielle Dateisynchronisation

Mir ist aufgefallen, dass praktisch zu jedem Artikel zu Dateisynchronisierungslösungen bei heise jemand im Forum nachfragte, ob auch nur einzelne Dateibestandteile synchronisiert werden können. Bei mehreren Gigabyte großen Dateien möchte man schließlich nicht immer die vollständige Datei uploaden müssen. Dies wird nun von dav-sync unterstützt, in dem Dateien in mehrere Blöcke mit fester Blockgröße aufgeteilt werden können. Synchronisiert werden dann nur die Blöcke, die geändert wurden.

Metadaten- und Symlink-Synchronisation

Neu ist die Möglichkeit, das Dateiänderungsdatum oder Dateiberechtigungen zu synchronisieren. Dies ist vermutlich nicht so ungewöhnlich. Darüber hinaus kann dav-sync jedoch auch Extended Attributes synchronisieren, was vermutlich die wenigsten Tools können. Ebenfalls neu ist die Möglichkeit, Symlinks zu synchronisieren. Bisher wurden sie als normale Dateien behandelt, jetzt können sie von dav-sync selber angelegt werden. Das besondere daran ist auch der Windows-Support, denn Windows hat praktisch keine brauchbaren Symlinks, zumindestens nicht für normale Benutzer. Verbreiteter sind dort Verknüpfungen (.lnk-Dateien), die von dav-sync zu Symlinks übersetzt werden können.

Copy/Move in dav-sync

In dieser Hinsicht hinkte dav-sync etwas hinterher, denn andere Tools konnten schon länger erkennen, wenn Dateien nur umbenannt oder verschoben wurden.

Neue dav-Features

Auch das Tool dav hat ein paar Verbesserungen erhalten. So gibt es jetzt einen Secret-Store, in dem passwortgeschützt Zugangsdaten gespeichert werden können. Neu sind auch ein paar Befehle für WebDAV-Server, die die Versionierungserweiterung DeltaV unterstützen.

Den Quellcode kann man hier downloaden. Auf SourceForge stehen auch Windows-Binaries bereit.

dav Projektseite SourceForge Projektseite

Autor: Olaf | 0 Kommentare | Tags: dav, webdav

dav update 1.2.4

02. Juni 2019

Libcurl 7.62 hat leider eine kleine Änderung, die dazu führt, dass dav sich nicht mehr kompilieren lässt. Daher gibt es jetzt ein kleines Update dafür.

dav Projektseite SourceForge Projektseite

Autor: Olaf | 0 Kommentare | Tags: dav, curl

dav update 1.2.3

20. Oktober 2018

Ein kleines Update für dav, welches 3 Probleme behebt.

HTTP-Redirects wurden nur unzureichend unterstützt, denn sie funktionierten nur mit einfachen GET-Requests richtig. Jetzt werden bei allen Methoden Redirects richtig behandelt.

Des Weiteren wurde die Kompatiblität mit älteren libcurl-Versionen verbessert. Statt libcurl 7.32 reicht jetzt auch die Version 7.18. Somit lässt sich dav problemlos auch auf älteren Distributionen kompilieren.

Aus Kompatiblitätsgründen werden von dav-sync jetzt Dateien nicht mehr mit Chunked Transfer-Encoding geuploadet, sondern die PUT-Requests enthalten einen Content-Lengh Header. Mit schlecht konfigurierten oder verbuggten Webservern im Zusammenspiel mit php gab es da bisher ein paar Probleme.

dav Projektseite SourceForge Projektseite

Autor: Olaf | 0 Kommentare | Tags: dav

dav update 1.2.2

07. September 2018

Ein weiteres Update für dav, diesmal mit zwei Bugfixes.

Durch einen Fehler im Code für den AES-Encryption-Stream konnte es unter ganz seltenen Fällen vorkommen, dass die letzten paar Bytes des Streams nicht geuploadet wurden. Beim Entschlüsseln machte sich dies dadurch bemerkbar, dass der Hash des Dateiinhalts nicht verifiziert werden konnte. Betroffen sind sowohl dav als auch dav-sync.

Der zweite Bug betrifft dav-sync. Der Befehl push hat beim Löschen von Collections auf dem Server nicht überprüft, ob diese Collections irgendwelche neuen oder modifizierten Kind-Ressourcen enthalten. Dies wurde behoben, was jedoch auf Kosten der Performance beim Löschen geht.

dav Projektseite SourceForge Projektseite

Autor: Olaf | 0 Kommentare | Tags: dav
Zurück Weiter