Public:Honza801/webdav

Z HelpDesk

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>

zdroje