Portál AbcLinuxu, 26. dubna 2024 16:21

Sdílení Mozilla kalendáře přes WebDAV na Red Hat / CentOS

10.1.2006 13:00 | Přečteno: 3693× | poslední úprava: 13.1.2006 14:01

1. díl - rozběhnutí WebDAV

Obecný úvod:

Úvodem bych chtěl poděkovat za pěkný článek. Asi před půl rokem jsem dospěl k podobnému závěru, že totiž možnost sdílení kalendářů a možnost společného plánování by byla ve firmě kde pracuji víc než užitečná.

Jako nejlepší variantu jsem vyhodnotil kalendář pro Mozillu dostupný zde nebo zde. Vybral jsem si rozšíření do Mozilla Thunderbirdu, protože považuji za výhodné mít v kalendáři zapnutá upozornění e-mailem, což - pokud vím v Sunbirdu zatím možné není. Kalendář pro Thunderbird se však dá spouštět samostatně (i bez Thunderbirdu) a funkce upozorňování e-mailem je přitom zachována (pokud je kalendář spuštěn).

Abych zozběhl sdílení kalendáře přes WebDAV, pokusil jsem se najít nějaký manuál. Většinou jsem se dozvěděl, že je to velmi jednduché a to mne povzbudilo. Brzy jsem však zjistil, že to zase tak jednoduché není, protože manuály jsou pro jiné distribuce a po několika neúspěšných pokusech jsem musel začít řešit "nalehavější" věci...

Během toho půl roku jsem se k WebDAVu několikrát asi tak na 10 minut vrátil, abych zjistil, že už si nepamatuju co jsem posledně nastavil. Po novém roce se siutace trochu uklidnila a tak jsem začal od začátku ;-).

Snažil jsem si ulehčit siutaci a zeptat se známých. Ani to nepomohlo. WebDAV prý z důvodu zabezpečení přístupů ke sdílení vyhodnotili jako nepoužitelný. Znovu jsem začal pátrat na webu a protože už jsem věděl, že že kdo hledá ve spěchu nic nenajde tentokrát jsem tolik nespěchal a tak jsem našel. WebDAV běží a protože to příště chci mít po ruce a také proto, že by to mohlo někomu ušetřit práci, rozhodl sem se to "pověsit" sem.

a) Ověříme si, zda máme nainstalované potřebné balíčky

U Red Hatu 9 balíček Apache (httpd-2.0x) už obsahuje apache WebDAV moduly. Nejprve si ověříme, že máme balíček httpd-2.0 instalován:

# rpm -qa | grep httpd
httpd-2.0.40-21.5 

A že httpd-2.0 poskytuje mod_dav:

# rpm -q --provides httpd | grep dav
mod_dav.so
mod_dav_fs.so

Defaultní konfigurační soubor Apache (v Red Hatu /etc/httpd/conf/httpd.conf již obsahuje instrukce podporující WebDav.

Při problémech je možné porovnat obsah vašeho httpd.conf s tímto odkazem

Jako základní autentifikační metodu použijeme autentifikaci s použitím SSL. Proto si ověříme, že máme nainstalovány openssl a mod_ssl:

# rpm -qa | grep -i ssl
openssl096b-0.9.6b-12
openssl-devel-0.9.7a-20
openssl095a-0.9.5a-19
perl-Crypt-SSLeay-0.45-7
pyOpenSSL-0.5.1-8
docbook-style-dsssl-1.76-8
openssl-0.9.7a-20
openssl096-0.9.6-23.9
openssl-perl-0.9.7a-20
mod_ssl-2.0.40-21.5

b) Nastavení SSL- vytvoření certifikátu

Pokud ještě na našem serveru není na nakonfigurováno SSL, vytvoříme SSL certifikát pro náš počítač. Red Hat obsahuje soubor make, který tento proces usnadní.

Jdeme do adresáře, který obsahuje soubor make a vytvoříme certifikát a key soubor (.pem) pro náš počítač. Pojmenujeme ho jako [něco].pem:

# cd /etc/httpd/conf
# make www.myhost.org.pem
umask 77 ; \
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
/usr/bin/openssl req -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 ; \
cat $PEM1 > www.myhost.org.pem ; \
echo "" >> www.myhost.org.pem ; \
cat $PEM2 >> www.myhost.org.pem ; \
rm -f $PEM1 $PEM2
Generating a 1024 bit RSA private key
...........................................++++++
...........++++++
writing new private key to '/tmp/openssl.c7ucXb'
-----

Budeme požádáni o vložení informací, které budou začleněny do našeho certifikátu (požadavku).

Některé řádky můžeme ponechat prázdné. V některých polích budou defaultní hodnoty, Pokud stiskneme „enter '.', pole zůstanou prázdná.

Country Name (2 letter code) [GB]:CZ
State or Province Name (full name) [Berkshire]:Liberecký
Locality Name (eg, city) [Newbury]:Liberec
Organization Name (eg, company) [My Company Ltd]:firma
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:www.myhost.org/
Email Address []:jmeno@neco.cz 

Nyní přesuneme certifikát do adresáře pro certifikáty:

# mv /etc/httpd/conf/www.myhost.org.pem /etc/httpd/conf/ssl.crt/

To napovídá umístění certifikátu v v konfiguračním souboru Apache - SSL:

/etc/httpd/conf.d/ssl.conf.

Pokud nepotřebujeme defaultní příkazy pro SSLCertificateFile a SSLCertificateKeyFile, tak je zakomentujeme křížkem # na začátku těchto řádků. Pak vložíme SSLCertificate File směrnici, která odkazuje na náš nový certifikát:

SSLCertificateFile /etc/httpd/conf/ssl.crt/www.myhost.org.pem

SSLCertificateKeyFile směrnice není nezbytná, protože klíč je obsažen v cert .pem souborech.

Spusťíme nebo restartujeme apache:

# service httpd start

Jestliže služba nenaběhne, najdeme příčinu v logu /var/log/httpd/.

Předpokládejme, že apache nastartoval. Pro přístup použijme webový prohlížeč:

https://www.myhost.org/

Protože používáme certifikát, který jsme si sami podepsali pravděpodobně obdržíme varování o neznámé autoritě. To je v pořádku.

c) Vytvoření WebDAV adresáře

Musíme vytvořit adresář, kam bude apache ukládat soubory přesWebDAV (každý uživatel bude mít podadresář v tomto adresáři). Webdav adresář musí patřit do účtu služby apache. V Red Hat je tato služba pravděpodobně "apache". Jestliže apache běží, můžete zjistit jeho účet v seznamu běžících procesů:

# ps axu | grep httpd root 1262 0.0 0.0 81048 884 ? S Jan06 0:42 /usr/sbin/httpd - apache 26102 0.0 0.2 82524 2380 ? S Jan29 0:00 /usr/sbin/httpd - apache 26103 0.0 0.2 82528 2392 ? S Jan29 0:00 /usr/sbin/httpd - apache 26104 0.0 0.2 82528 2896 ? S Jan29 0:00 /usr/sbin/httpd - apache 26105 0.0 0.2 82528 2400 ? S Jan29 0:00 /usr/sbin/httpd - apache 26106 0.0 0.2 82528 2432 ? S Jan29 0:00 /usr/sbin/httpd - apache 26107 0.0 0.2 82524 2372 ? S Jan29 0:00 /usr/sbin/httpd - apache 26108 0.0 0.2 82524 2424 ? S Jan29 0:00 /usr/sbin/httpd - apache 26109 0.0 0.2 82524 2404 ? S Jan29 0:00 /usr/sbin/httpd - root 32025 0.0 0.0 1740 596 pts/0 S 03:26 0:00 grep httpd

Nebo můžete zkontrolovat výpis pro „User“ a „Group“ v konfiguračním souboru Apache (zde jen výběr):

# grep "User " /etc/httpd/conf/httpd.conf | grep -v ^
# User apache
# grep "Group " /etc/httpd/conf/httpd.conf | grep -v ^
# Group apache

My použijeme pro WebDAV adresář /var/www/webdav

# mkdir /var/www/webdav

Ten je vně adresáře /var/www/html, který Apache používá pro své dokumenty (např. webové stránky). Později vytvoříme instrukci (Alias) v souboru ssl.conf, kterou řekneme apachi, kde webdav nalezne.

Nyní změníme vlastnictví a učiníme webdav adresář čitelný pro účet služby apache:

# chown root:apache /var/www/webdav
# chmod 750 /var/www/webdav
a v tomto adresáři vytvoříme podadresáře pro jednotlivé uživatele.

d) Ověřování uživatelů

Autentifikace Je několik způsobů jak může Apache ověrovat uživatele. My budeme používat příkaz httpasswd pro vytvoření souboru pro autentifikaci uživatelů, terý se jmenuje passwd.dav. Vytvoříme místo pro umístění souboru passwd.dav a nastavíme mu práva tak, aby ho mozla číst pouze služba apache:

# mkdir /etc/httpd/passwd
# chown root:apache /etc/httpd/passwd
# chmod 750 /etc/httpd/passwd 

Nyní použijeme příkaz htpasswd pro vytvoření souboru a vložení prvního uživatele:

# htpasswd -c /etc/httpd/passwd/passwd.dav franta
New password: 
Re-type new password: 
Adding password for user franta 

POZOR!Volba -c se používá pouze poprvé pro vytvoření souboru passwd.dav. Pokud použijeme volbu -c znovu, přepíšeme tak bez varování soubor passwd.dav (a tím ztratíme každé zatím vytvořené heslo).

Teď nastavíme vlastnictví a práva tak, že pouze apache může tento soubor číst:

# chown root:apache /etc/httpd/passwd/passwd.dav
# chmod 640 /etc/httpd/passwd/passwd.dav

e) Uživatelské adresáře

Vytvoříme adresář pro uživatele frantu pro ukládání jeho dat přes webdav:

# mkdir /var/www/webdav/franta

a změníme vlastnictví a práva tohoto adresáře tak, aby do něj bylo možné přistupovat jen přes apache:

# chown apache:apache /var/www/webdav/franta
# chmod 750 /var/www/webdav/franta 

POZOR: mod_dav předpokládá, že bude mít exkluzivní přístup k souborům pouze přes WebDAV; povolování přístupů pro úpravy těchto souborů ostatními se nedoporučuje. Více zde.

f) Nastavení oprávnění ke vstupu do adresáře WebDAV pro uživatele

V konfiguračním SSL souboru Apache /etc/httpd/conf.d/ssl.conf vložíme někam mezi [VirtualHost _default_:443] a [/VirtualHost] následující:

Alias /webdav/ "/var/www/webdav/" 
[Directory /var/www/webdav] 
DAV on 
AuthType Basic 
AuthName "WebDAV Storage" 
AuthUserFile /etc/httpd/passwd/passwd.dav 
[/Directory]

Poznámka: Soubor ssl.conf používá syntaxi se závorkami, které se používají u html formátování. Jejich použití zde není umožněno :-(. Proto jsem je zde ve výpisu nahradil hranatými [ ] závorkami. Při editaci souboru ssl.conf je však nutné jeho syntaxi zachovat a použít odpovídající "špičaté" závorky.


Příkaz Alias říká Apachi, kde má hledat pro požadavky pro /webdav/

Příkaz DAV on Zapíná WebDAV pro adresář (a jeho podadresáře).

Příkaz Auth* specifikuje, že přístup pro přístup kohokoli do adresáře webdav bude použita základní autentifikace za použití souboru hesel, který jsme vytvořili dříve.

Pod něj vložíme směrnice pro každý WebDAV uživatelský adresář:

[Directory /var/www/webdav/franta/]
require user franta [/Directory]

Nyní editaci uložíme, ukončíme náš editor a restartujte apache:

# service httpd restart
Pokud se start nepovede, podíváme se do logu ;-).

g) Test autentifikace přes SSL

Vytvoříme testovací soubor ve WebDAV uživatelském adresáři a změníme vlastníka a práva pro apache:

# echo 'hello world!' > /var/www/webdav/franta/test.txt
# chown apache:apache /var/www/webdav/franta/test.txt
# chmod 640 /var/www/webdav/franta/test.txt

Zkusíme otevřít testovací soubor ve webovém prohlížeči bez použití SSL:

http://www.myhost.org/webdav/franta/test.txt

Obdržíme chybové hlášení 404 (objekt není nalezen).

Pokud tomu tak není, může to být způsobeno např. tím, že adresář webdav je umístěn někde uvnitř kořenového adresáře pro dokumenty apache - tj. např: /var/www/html/webdav).

Nyní zkusíme přístup k testouvacímu souboru za použití SSL:

https://www.myhost.org/webdav/franta/test.txt

Můžeme obdržet certifikační varování. Po jeho akceptování se objeví přihlašovací dialog. Zadámee přihlašovací informace tak, jak jsme je vytvořili dříve.

Pokud máme vše správně, uvidíme ve svém prohlížeči toto:

hello world!

V tomto bodě Máme WebDAV připraven k ukládání dat. Pro to je třeba nějaký webdav klient jako je např. Mozilla Calendar.

       

Hodnocení: 89 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

10.1.2006 15:56 Pavel 'lingeek' Szalbot | skóre: 54 | Třinec
Rozbalit Rozbalit vše Re: Sdílení Mozilla kalendáře přes WebDAV na Red Hat / CentOS
Odpovědět | Sbalit | Link | Blokovat | Admin
Nemám moc čas to číst, ale délka vypadá slibně - proč to nevydat jako článek?
Math, as Barbie says, is hard.
10.1.2006 15:57 Pavel 'lingeek' Szalbot | skóre: 54 | Třinec
Rozbalit Rozbalit vše Re: Sdílení Mozilla kalendáře přes WebDAV na Red Hat / CentOS
Hmm, tak ono už vyšlo něco podobného;-).
Math, as Barbie says, is hard.
10.1.2006 20:06 Non_E | skóre: 24 | blog: hic_sunt_leones | Pardubice
Rozbalit Rozbalit vše Re: Sdílení Mozilla kalendáře přes WebDAV na Red Hat / CentOS
Odpovědět | Sbalit | Link | Blokovat | Admin
Skutečně nefungují ostrézávorky přes entity? V komentářích ano, ale blog tady nemám, tak nemůžu posoudit.
<  =  &lt;
>  =  &gt;
Only Sith deals in absolutes.
10.1.2006 23:01 LuděkS | skóre: 31 | blog: publish | Liberec
Rozbalit Rozbalit vše Re: Sdílení Mozilla kalendáře přes WebDAV na Red Hat / CentOS
No, když jsem to zadával, tak i když jsem to vložil mezi značky pre nebo code, vždy mi to hlásilo, že např. "Značka DIRECTORY není povolena!", takže jsem to musel dát do nějakých jiných závorek. Např.[/Directory]. Nevím, možná je způsob, jak to napsat ale nepřišel jsem na něj. Pokud mi poradíte, budu rád. Díky!

PS: Ale dá se to vydržet i bez toho ;-).

wake avatar 11.1.2006 08:22 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: Sdílení Mozilla kalendáře přes WebDAV na Red Hat / CentOS
Odpovědět | Sbalit | Link | Blokovat | Admin
autentifikace neexistuje. to, co myslíte, je autentizace.
Tento příspěvek má hlavičku i patičku!
11.1.2006 10:20 Honza
Rozbalit Rozbalit vše Re: Sdílení Mozilla kalendáře přes WebDAV na Red Hat / CentOS
11.1.2006 11:02 LuděkS | skóre: 31 | blog: publish | Liberec
Rozbalit Rozbalit vše Re: Sdílení Mozilla kalendáře přes WebDAV na Red Hat / CentOS
Ano, taky jsem to zvažoval. Myslím, že slovo autentifikace lze také použít. Díval jsem se do slovníku a na internet a mělo by být možné použít oboje. Ale klidně si tam dosaďte autentizaci. Myslím, že podstatné je, zda to funguje. Přesto děkuji za připomínku.
wake avatar 18.1.2006 00:05 wake | skóre: 30 | blog: wake | Praha
Rozbalit Rozbalit vše Re: Sdílení Mozilla kalendáře přes WebDAV na Red Hat / CentOS
dobře. výraz autentifikace mne tahá za oči (a připomíná mi ratifikaci a jiné operace nad tělesem parlamentu). byl byste prosím tak laskav a používal výraz autentizace jež se podobá spíše očistné deratizaci ? ... ;-)
Tento příspěvek má hlavičku i patičku!
10.2.2006 13:44 Martin Vlasak | skóre: 9 | blog: Muj_prvni_blog | Liberec
Rozbalit Rozbalit vše Re: Sdílení Mozilla kalendáře přes WebDAV na Red Hat / CentOS
Odpovědět | Sbalit | Link | Blokovat | Admin
Zdravim, mam problem s nastaveni WEBDAVu.
DavLockDB /var/lock/DavLock

<Directory "/srv/www/htdocs/kalendar">

#    <IfModule mod_dav.c>
      Dav On
#    </IfModule>

    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    

    Order allow,deny
    Allow from all
    
    AuthName "Kalendar"
    AuthType Basic
    AuthUserFile /srv/www/htdocs/kalendar/.htpasswd
    AuthGroupFile /dev/null
    <Limit GET PUT POST DELETE PROFIND PROPATCH MKCOL COPY MOVE LOCK UNLOCK>
      Require valid-user    
    </Limit>
</Directory>
  
Tak to mam nastaveny adresar, kde bych chtel pouzit WEBDAV. Kdyz pouziji program litmus, tak skonci v druhym kroku hlaskou - server nepodporuje MKCOL.
xxx:/home/ads # litmus http://xxx..cz/kalendar xxx xxxxx
-> running `basic':
 0. init.................. pass
 1. begin................. FAIL (Could not create new collection `/kalendar/litmus/' for tests: 500 Internal Server Error
Server must allow `MKCOL /kalendar/litmus/' for tests to proceed)
<- summary for `basic': of 2 tests run: 1 passed, 1 failed. 50.0%
See debug.log for network/debug traces.
V logu se objevy
[Thu Feb 09 17:12:28 2006] [error] [client xxx] The locks could not be queried for verification against a possible "If:" header.  [500, #0]
[Thu Feb 09 17:12:28 2006] [error] [client xxx] Could not open the lock database.  [500, #400]
[Thu Feb 09 17:12:28 2006] [error] [client xxx] (13)Permission denied: Could not open property database.  [500, #1] 

Mam SUSE 10.0 + APACHE instalovany z instalacnich CD. Dekuji za jakoukoliv radu a pomoc. Martin

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.