Public:Honza801/webdav
kratke poznamky o webdav
Obsah |
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>