Public:Honza801/webdav
kratke poznamky o webdav
webdav
apache2
Apache implementuje WebDav rozšíření modulem mod_dav a mod_dav_fs. Tato implementace poskytuje nejrychlejší přenos dat ze všech zmíněných. Autentizace ke službě zajišťuje Apache Basic Auth. Uživatelská jména i hashe hesel jsou uloženy v souboru htpasswd. Pro zabezpečení přístupu do složek uživatelů je nastaven mod_rewrite tak, aby uživateli poskytnul pouze jeho vlastní adresář na základě proměnné REMOTE_USER.
Povolení modulu pro webdav se v systému Debian provede následujícími příkazy.
a2enmod dav a2enmod dav_fs
Konkrétní konfigurace virtual hostu v apache následuje.
<Location /dav>
AuthType Basic
AuthName "DAV area"
AuthBasicProvider file
AuthUserFile /etc/apache2/htpasswd
Require valid-user
</Location>
<Directory /var/www/dav>
DAV On
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/dav/
RewriteRule ^/dav/(.*?)$ /var/www/dav/%{LA-U:REMOTE_USER}/$1 [L]
owncloud
Owncloud implementuje vlastní webdav server v jazyku PHP. Z důvodu rychlosti přenosu dat nebylo toto řešení použito.
zope
Python framework Zope má rozšíření, které poskytuje webdav server. Z důvodu rychlosti přenosu dat nebylo toto řešení použito.
správa uživatelů
Každý uživatel má právo využívat službu. Pro webdav není vhodné použít heslo z kerberosu, protože se v backup klientech ukládá v plain textu. Proto je nutné, aby měl každý uživatel pro zálohovací systém heslo odlišné. Zároveň je vhodné, aby si uživatel mohl heslo sám nastavit a změnit.
Pro správu hesel v htpasswd se používá nástroj pydentity. Jedná se o webovou aplikaci využívající Flask framework. Aplikace je upravena pro potřeby projektu zálohování
- Při nastavení hesla novému uživateli se zároveň vytvoří HOME adresář.
- Uživatelé mohou měnit hesla jen sobě.
- Je přidáno logování změn hesel.
- Kontrola síly hesla byla opravna a rozšířena o znaky.
Tato aplikace běží v rámci apache instance využitím modulu mod_wsgi. Aplikace je autentizována přes webauth a využívá REMOTE_USER jako uživatelského jména. Uživatelská jména pro přístup na webdav jsou tak totožná s principaly v kerberosu.
Zdrojové kódy jsou forkovány na https://github.com/honza801/pydentity.
Konkrétní konfigurace apache následuje.
WSGIDaemonProcess pydentity threads=1 maximum-requests=1 display-name=pydentity
WSGIScriptAlias /pydentity /var/www/pydentity/pydentity.wsgi
<Location /pydentity>
AuthType WebAuth
Require valid-user
</Location>
<Directory /var/www/pydentity/>
WSGIProcessGroup pydentity
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>