Úvod
Tento článek se bude zabývat instalací a konfigurací serveru WebDAV na Ubuntu Linux. WebDAV je zkratka pro Web Distributed Authoring and Versioning a umožňuje připojeným uživatelům upravovat a sdílet data online prostřednictvím protokolu HTTP. Díky tomu je WebDAV oblíbenou volbou pro vývojáře v kombinaci, například se Subversion nebo OpenLink Virtuoso. WebDAV je podporován řadou klientů od davfs2, což umožňuje připojit úložiště dat WebDAV a zahrnout je do místního souborového systému. To lze provést pomocí příkazu mount do různých aplikací GUI s nativní podporou WebDAV, jako je Nautilus, konqueror atd. Kromě toho v této příručce zkombinujeme WebDAV se serverem Apache2.
Scénář
V této části bych rád popsal scénář použitý v tomto tutoriálu. WebDAV může být velmi flexibilní služba, která umožňuje řadu konfiguračních nastavení a scénářů. V tomto tutoriálu WebDAV začneme s nejjednodušší základní konfigurací WedDAV pro spuštění a odtud ji sestavíme tak, aby vyhovovala složitějšímu prostředí. WebDAV si můžete představit jako rozšíření HTTP pro vaši stávající konfiguraci webu. Za normálních okolností již můžete mít svůj web Apache spuštěný. V takovém případě tedy vše, co musíte udělat, abyste mohli zahrnout službu WevbDAV, je:
- vytvořte další adresář pro nahrávání dat, který bude používat WebDAV
- nakonfigurujte svůj stávající soubor virtuálního hostitele apache2
V této příručce však začneme od nuly počínaje instalací apache2, vytvořením virtuálního hostitele atd. Proto neváhejte přeskočit na kteroukoli část, která nejlépe odpovídá vašim požadavkům na konfiguraci.
V této příručce nakonfigurujeme:
- webdav.local – toto bude virtuální hostitel běžící na serveru IP 10.1.1.61
- webdav.local/svn – toto bude adresář s povoleným WebDAV
- /var/www/webdav – adresář pro hostování indexového souboru webdav.local
- /var/www/webdav/svn – adresář pro hostitele datového úložiště webdav.local/svn WebDAV
Upravte odpovídajícím způsobem svá nastavení DNS nebo změňte soubor /etc/hosts svého klienta tak, aby zahrnoval výše uvedené rozlišení hostitele webdav.local.
Instalace Apache a WebDAV
V této sekci jednoduše nainstalujeme apache2 a povolíme modul WebDAV. Modul WebDAV je dodáván s instalací apache2, ve výchozím nastavení však není povolen. To vše lze provést pomocí dvou jednoduchých příkazů:
$ sudo apt-get install apache2
Nyní byste měli mít přístup k výchozí webové stránce na adrese http://webdav.local. Pokud vše půjde dobře, deaktivujte výchozí stránku, protože pro ni již nemáme použití:
$ sudo a2dissite default $ sudo service apache2 reload
Konfigurace virtuálního hostitele
V tomto okamžiku musíme nakonfigurovat virtuálního hostitele pomocí ServerName:webdav.local a připojeného adresáře /var/www/webdav. Chcete-li tak učinit, přejděte do /etc/apache2/sites-available/:
$ cd /etc/apache2/sites-available/
a vytvořte nový konfigurační soubor webu s názvem webdav.local s následujícím obsahem:
<VirtualHost *:80> ServerAdmin webmaster@localhost Servername webdav.local DocumentRoot /var/www/webdav <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/webdav/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost>
Po dokončení musíme vytvořit vhodný adresář /var/www/webdav/:
$ sudo mkdir /var/www/webdav
Změnit vlastníka na apache:
$ sudo chown www-data.www-data /var/www/webdav
a povolit nový web webdav.local
$ sudo a2ensite webdav.local
Abychom to otestovali, můžeme vytvořit nějaký jednoduchý soubor index.html:
$ sudo sh -c 'echo "Welcome from WebDAV.local" > /var/www/webdav/index.html'
a nakonec znovu načtěte webový server apache2:
$ sudo service apache2 reload
Nyní byste měli být schopni přejít ve svém prohlížeči na http://webdav.local a na obrazovce se zobrazit zpráva:Vítejte z WebDAV.local. Tím je instalace webového serveru apache2 s virtuálním hostitelem webdav.local
ukončenaNastavení WebDAV
Je čas povolit modul WebDAV pomocí:
$ sudo a2enmod dav_fs Considering dependency dav for dav_fs: Enabling module dav. Enabling module dav_fs.
a restartujte server apache:
$ sudo service apache2 restart
Nyní, když je vše připraveno, můžeme nastavit základní WebDAV server. To lze snadno provést vytvořením dalšího adresáře pro data WebDAV:
Základní konfigurace
$ sudo mkdir /var/www/webdav/svn
Je také důležité, aby do něj bylo možné zapisovat pomocí Apache, jinak dostaneme chybu 403 Zakázaná:
$ sudo chown www-data.www-data /var/www/webdav/svn/
a povolení WebDAV pro našeho nového virtuálního hostitele webdav.local. To lze provést přidáním následujících řádků do bloku
Alias /svn /var/www/webdav/svn <Location /svn> DAV On </Location>
Výše uvedené znamená, že adresář /var/www/webdav/svn s povoleným WebDAV bude přístupný přes http://webdav.local/svn. Proveďte výše uvedenou úpravu vašeho stávajícího konfiguračního souboru /etc/apache2/sites-available/webdav.local a restartujte webový server Apache. Takto vypadá celý soubor /etc/apache2/sites-available/webdav.local v této fázi:
<VirtualHost *:80> ServerAdmin webmaster@localhost Servername webdav.local DocumentRoot /var/www/webdav <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/webdav/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> Alias /svn /var/www/webdav/svn <Location /svn> DAV On </Location> </VirtualHost>
Je čas otestovat naši konfiguraci. Jedním ze způsobů, jak toho dosáhnout, je nasměrovat náš prohlížeč na http://webdav.local/svn nebo ještě lepší způsob je použít nástroj cadaver. Nejprve nainstalujte kadaver pomocí:
$ sudo apt-get install cadaver
Vytvořte stejný datový soubor s dd, který chcete nahrát do vašeho adresáře WebDAV, a nahrajte jej:
$ dd if=/dev/zero of=mydata.dat bs=1M count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB) copied, 0.075726 s, 138 MB/s $ cadaver http://webdav.local/svn dav:/svn/> put mydata.dat Uploading mydata.dat to `/svn/mydata.dat': Progress: [=============================>] 100.0% of 10485760 bytes succeeded. dav:/svn/> quit Connection to `webdav.local' closed.
Nyní byste měli mít základní server WebDAV nakonfigurovaný a připravený k použití. V další části přidáme základní autentizaci uživatele.
WebDAV s ověřením uživatele
Pokud máte v úmyslu nasadit svůj WebDAV server na vzdáleném hostiteli, je více než vhodné implementovat alespoň základní autentizaci. Naštěstí to lze snadno provést pomocí htpasswd příkaz a překonfigurování našeho stávajícího konfiguračního souboru /etc/apache2/sites-available/webdav.local.
Nejprve vytvořte adresář, kam chcete uložit soubor s hesly webdavu. Toto je místo dle vašeho výběru. V tomto tutoriálu používám /usr/local/apache2/:
$ sudo mkdir /usr/local/apache2/
Poté pomocí htpasswd vytvořte nový soubor s hesly, proti kterému budou ověřeni všichni uživatelé.
$ sudo htpasswd -c /usr/local/apache2/webdav.passwords lubos
Pokud potřebujete přidat další uživatele, použijte výše uvedenou syntaxi, ale vynechejte volbu -c, protože přepíše váš stávající soubor.
Nyní, když je autentizační soubor připraven, musíme přidat autentizaci do našich aktuálních /etc/apache2/sites -available/webdav.local konfigurační soubor. Nové změny jsou zvýrazněny tučným písmem:
<VirtualHost *:80> ServerAdmin webmaster@localhost Servername webdav.local DocumentRoot /var/www/webdav <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/webdav/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> Alias /svn /var/www/webdav/svn <Location /svn> DAV On AuthType Basic AuthName "webdav" AuthUserFile /usr/local/apache2/webdav.passwords Require valid-user </Location> </VirtualHost>
Pokud se od této chvíle pokusíte o přístup k serveru WebDAV, budete se muset nejprve ověřit. Zde je příklad ověření WebDAV:
$ cadaver http://webdav.local/svn Authentication required for webdav on server `webdav.local': Username: lubos Password: dav:/svn/> ls Listing collection `/svn/': succeeded. mydata.dat 10485760 Feb 20 14:45 dav:/svn/>
Omezení přístupu WebDAV
Dále je vhodné omezit WebDAV přístup na omezený počet uživatelů. Pokud například chceme umožnit přístup pouze uživateli „Lubos“ k našemu úložišti WebDAV, můžeme tak učinit přidáním klauzule
<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> AuthType Basic AuthName "webdav" AuthUserFile /usr/local/apache2/webdav.passwords Require user lubos </Limit>
Protože uživatelé mohou přistupovat a nahrávat soubor do libovolného adresáře s povoleným WebDAV, doporučuje se také zakázat soubor .httaccess. Proto přidejte:
AllowOverride None
uvnitř direktivy
Připojování adresáře s povoleným WebDAV
Jak již bylo zmíněno dříve WebDAV podporuje velké množství klientů. Je také možné připojit adresář WebDAV do místního systému, aby fungoval jako součást souborového systému. Abychom to mohli udělat, musíme nejprve nainstalovat davfs2 jako uživatel root:
# apt-get install davfs2
poté vytvořte přípojný bod:
# mkdir /mnt/webdav
a nakonec jej připojte pomocí příkazu mount:
# mount.davfs http://webdav.local/svn /mnt/webdav/ Please enter the username to authenticate with server http://webdav.local/svn or hit enter for none. Username: lubos Please enter the password to authenticate user lubos with server http://webdav.local/svn or hit enter for none. Password: # cd /mnt/webdav/ # ls lost+found mydata.dat # touch linuxcareer.com.txt # sync
Závěr
Tento článek popisuje základní konfiguraci služby WebDAV pomocí webového serveru Apache2, abyste mohli začít. Existuje jen málo bezpečnostních problémů, které je třeba vzít v úvahu, takže si musíte udělat domácí úkol a prostudovat si dokumentaci modulu Apache mod_dav, kde najdete další konfigurační nastavení a vylepšení zabezpečení pro zlepšení vaší konfigurace.