E-mail
















 

iCal naptárak megosztása a WebDAV segítségével intraneten és interneten


A Mac OS X operációs rendszer elôre telepítve tartalmazza az iCal idôtervezô programot, amelynek hasznos szolgáltatása, hogy on-line elérhetôvé tett kalendáriumokra is elô lehet fizetni, tehát más kollégák idôbeosztását is egyszeruen meg tudod szerezni, illetve a sajátodat is elérhetôvé tudod tenni. Az iCalShare - Share Your iCalendars! webcímen rengeteg kategória és esemény között lehet választani, hogy le ne maradj semmirôl. Akár az ursikló indításának dátumai, akár a MacWorld Expo elôadásai érdekelnek, mindig képben leszel.

A te naptáradat is közkinccsé teheted, legyen akár a munkahelyi sörözés beosztása, kedvenc sportmusor vagy a fontos tárgyalások menetrendje. Itt viszont gondok vannak, ha nincs elôfizetett .dot Mac fiókod, illetve csak helyi hálózatod. Két út között választhatsz. Vagy exportálod egy .ics állományként, és feltöltöd a honlapodra vagy a helyi szerverre, ekkor azonban eléggé problémás a frissítése, minden egyes módosításkor fel kell tölteni, vagy kihasználhatod a WebDAV elônyeit, és saját naptárszervert készíthetsz, amelyet az iCal is ki tud használni, automatikusan frissítve a kiadott naptáradat, ami még egy elônnyel jár, hiszen ha csak intranet kapcsolattal rendelkezel, akkor is képes vagy a naptáraid megosztására.

Mi a WebDAV?

Az Internet hôskorában a fájlok cseréjét az FTP protokollon keresztül valósították meg. Biztonsági okokból SFTP-re, azaz biztonságos FTP-re cserélik le ezeket, mert így nem olvasható formában küldi el az adott felhasználó nevét és jelszavát a szerver. De egy probléma még így is maradt. Az adott felhasználónak létre kell hozni egy kontót (account) a rendszeren, ami belépésekkel, jelszók cseréjével jár, és rosszindulatú szimatoló könnyen elcsípheti a belépéshez szükséges adatokat. Ki lehet ezt valahogyan kerülni?

Igen, erre adhat megoldást a WebDAV, ami a Web Enabled Distributed Authoring and Versioning rövidítése. Egy állománymegosztási szolgáltatás, fájlok létrehozására, módosítására, fel- és letöltésére való, nagy elônye, hogy az adott szerverre kontótol függetlenül lehetséges a csatlakozás, mert a HTTP-t, azaz a web protokollját használja erre. Igazából a DAV, mert ilyen rövidítésben is hallhatsz róla, a hálózat eredeti funkcióját teszi elérhetôvé, ami egy írható, együttmuködésre alkalmas közvetítô közeget valósít meg. Egyszerre több ember használhatja ugyanazt a megosztást, külön figyelmet szentel arra, hogy melyik felhasználó melyik dokumentumon dolgozik, és addig zárolja a fájlt más felhasználók elôl, így nem történhet gubanc. Mindezt a 80-as porton keresztül, így nincs az a gonosz proxy szerver, aki ezt megakadályozná. A Mac OS X beépített WebDAV támogatással rendelkezik, amit az iCal is felhasznál. Ahhoz, hogy megnézz egy weblapot, nem kell alapesetben bejelentkezned a szerverre, ha ismered a hálózati címét, szabadon megtekintheted. A gyakorlatban ugyanúgy használod a DAV által elérhetôvé tett hálózati köteteket, mint bármely lokális merevlemezt, ZIP lemezt vagy Flash Drive-ot. Az Apple iDisk internetes lemeze is WebDAV elérést használ.

A DAV engedélyezése

Most sem kerülheted el a parancssor használatát, a root felhasználó jogaira lesz szükséged a módosítások elvégzéséhez. Ügyelj arra, hogy adminisztrátori jogokkal használd a gépedet, és csak akkor használj sudot, ha mindenképpen szükséges, és biztos vagy benne, mit is cselekedsz. Alapesetben a Mac OS X internetes megosztásaiért felelôs Apache webszerver program moduljában nincs engedélyezve a DAV. A modulok kibôvítik az Apache funkciót, az engedélyezéshez szerkeszteni kell az Apache konfigurációs állományát.

# sudo pico /etc/httpd/httpd.conf

A vezérlô (ctrl) és w billentyu kombinációra a pico szerkesztô keresôje áll szolgálatodra. Mivel elég hosszú a dokumentum, ajánlatos használni. Írd be a 'dav' szócskát, és üss Entert! A kurzor az elsô talált szóra ugrik.

Kattints rá! A sor elején lévô hashmark (#) azt jelenti, hogy az adott sor figyelmen kívül marad az Apache indításakor, megjegyzésként értelmezett. Töröld ki, hogy a modul aktív legyen a szerver újraindítása után. Bármit is módosítasz a beállításfájlon, amíg nem indítod újra a szervert, az nem olvassa be újra a már módosított beállításokat, a régiek maradnak érvényben. Üss megint vezérlô ctrl+w kombinációt! Vedd észre, hogy a legutóbbi keresés elmentôdött, így csak egy Entert kell ütnöd! Addig keress, míg a következô sort meg nem találod!

Kattints rá! Itt is töröld ki a hashmarkot. Több alapértelmezett beállítás nincs, neked kell megtenni. A dav_module és a mod_dav sorokat mindig páronként kell ki-, illetve bekapcsolni. Az itt található más modulok beállításai adott - <IfModule>#beallitasok</IfModule> - formában jelennek meg. Ez azért hasznos, mert ha az adott modul nincs betöltve, a rá vonatkozó beállításokat nem tudja értelmezni az Apache indításkor, és hibát jelez. Az taggal jelölt részt csak akkor hajtja végre, ha az adott modul betöltôdött, és így értelmes utasítások vannak közte. Egy adott beállítást képviselô parancsok a következôk lehetnek:

<IfModule mod_dav.c>
DAVLockDB /private/var/run/davlocks/DAVLock
DAVMinTimeout 60
<Directory /Library/WebServer/Documents/iCal_Share/>
AllowOverride None
DAV On
AuthType Basic
AuthName "Megosztott iCal naptarak!"
AuthUserFile /private/var/run/davlocks/.user_passwords
<LimitExcept OPTIONS>
Require user ical_publish
</LimitExcept>
</Directory>
</IfModule>


Szó volt arról, hogy egyszerre több felhasználó is használhatja ugyanazt az azonosítót. De mi van akkor, ha egyazon idôben egyszerre ketten akarják az adott dokumentumot írni? A DAVLockDB paranccsal annak az állománynak a helyét kell megadni, ahol az Apache az adott megosztásra vonatkozó használati információkat tárolni tudja. Azt bizonyára tudod, hogy a Mac OS X többfelhasználós operációs rendszer. Ez azért lényeges, mert az internetes szolgáltatásokat adó Apache is egy felhasználó (!), adott felhasználói (UID)- és csoportazonosítóval (GID). Tehát a rendszerben meg lehet adni olyan mappákat és állományokat, amihez csak az Apache-nak van hozzáférése, illetve ha nincs joga hozzá, akkor nem tudja írni, olvasni, az adott mappát listázni, márpedig az Apache-nak szüksége van erre az állományra. Keressünk a rendszerben olyan mappákat, amelyek nevében szerepel a davlock szó. Használhatod a locate adatbázist a kereséshez, elôtte építsd fel, illetve frissítsd a 'sudo /usr/libexec/locate.updatedb' paranccsal.

# sudo locate davlock
/private/var/run/davlocks


Panther használata esetén talált egy mappát, ha nem, külön létre kell hoznod. A WebDAV muködéséhez szükséges fájlokat tartalmazó mappa bárhol lehet, kivéve azokat a mappákat, amelyeket meg kívánsz osztani, akár a fenti útvonalon is. Nézd meg a mappához tartozó jogokat, tudja-e majd az Apache használni!

# sudo ls -la /private/var/run/davlocks/
total 0
drwxrwxr-x 6 www www 204 14 Jan 16:05 .
drwxrwxr-x 31 root daemon 1054 14 Jan 16:07 ..


Tökéletes! Mind a tulajdonos, mint a csoport megfelelô jogokkal rendelkezik, írhatja és olvashatja a mappát. Érdemes az Other jogosultságait teljesen levenni, hiszen ha admin jogosultágaid vannak, sudozhatsz, viszont így más nem férhet hozzá.

# sudo chmod 770 /private/var/run/davlocks/

A beállításparancsoknál a DAVLock szó csak a létrehozott fájlok elnevezésére szolgál, tetszôleges is lehet:
DAVLockDB /private/var/run/davlocks/lezart_fileok_dav
vagy akármi, két fájl lesz létrehozva muködés közben. Nézd meg a beállításokat egy kicsit közelebbrôl!

DAVMinTimeout 60
Itt másodpercben meg lehet adni, hogy mennyi idôközönként kérdezzen rá az esetleges használt fájlok esetén, hogy felszabadultak-e már. A hálózati forgalmat lehet vele csökkenteni, nagy várakozási idôvel rendelkezô kapcsolatok esetén is biztos lehetsz benne, hogy a fájlt csak egy felhasználó használja, illetve a kiszolgáló nem vár az örökkévalóságig, ha elveszett a kapcsolat a távoli számítógéppel.

<Directory /Library/WebServer/Documents/iCal_Share/>

Ezzel a DAV-nak a tagban megadott beállításai csak az itt megadott mappára, illetve a benne lévô almappákra fognak vonatkozni. Az itt megadott mappának a teljes elérési útját meg kell adni, ezek szerint az Apache webszerver gyökérmappájában kell lennie, ami alapértelmezett beállításként a /Library/WebServer/Documents/ könyvtár. A taggal az adott mappára és a benne található almappákra engedélyezed a szolgáltatást. A megadott mappákra éppúgy megfelelô jogokkal és engedélyekkel kell rendelkeznie az Apache-nak, mint a davlocks mappa esetén. Hozd létre az említett gyökérmappában a WebDAV gyökérmappáját, ami az adott szolgáltatás legalsó hierarchia-szintjét fogja alkotni:

# sudo mkdir /Library/WebServer/Documents/iCal_Share
# sudo chown www /Library/WebServer/Documents/iCal_Share/
# sudo chmod 770 /Library/WebServer/Documents/iCal_Share/
# ls -la /Library/WebServer/Documents/iCal_Share/
total 0
drwxrwx--- 10 www admin 340 20 Jan 12:16 .
drwxrwxr-x 8 root admin 272 20 Jan 12:07 ..


A mappa létrehozása után root tulajdonosi és admin csoportjogokat kap, ennek megfelelôen admin csoporttagsággal vagy root jogokkal lehet az adott mappát módosítani. A www tulajdonos biztosítja, hogy az Apache képes lesz az adott mappát olvasni, az admin csoport meg a te hozzáférésedet engedélyezi, a normál felhasználóknak pedig ez már zártköru rendezvény. A ..-tal hivatkozott mappa, ami ezt a mappát tartalmazó mappa, azaz a /Library/WebServer/Documents/. A WebDAV által kiszolgált mappákat nem tanácsos helyileg, tehát nem hálózaton keresztül manipulálni, mert más jogokkal jöhetnek létre a fájlok, mint a webszerver hozzáférése, illetve ha mindeközben valaki az általunk éppen szerkesztett fájlt akarja elérni, el tudja érni, mivel a zárolás csak a hálózaton keresztül csatolt elérésekre érvényes.

AllowOverride None
Ezzel a direktívával biztosítod be magadat attól, hogy a feltöltésre jogosult felhasználók egyéni beállításfájlt töltsenek fel az adott mappákba, felülbírálva a te beállításaidat. Ezek alapértelmezetten .htaccess nevu fájlok, és ugyanolyan beállításokat helyezhetsz el bennük, mint a httpd.conf dokumentumban, csak arra az adott mappára felülbírálhatod velük a globális beállításokat.

DAV On
Ezzel kapcsolod be a WebDAV szolgáltatást az adott mappára.

AuthName "Megosztott iCal naptarak!"
Ha nem csak az iCal számára akarod megosztásként használni a szolgáltatást, és jelszóval véded, ez az üdvözlôszöveg is megjelenik, mikor bepötyögöd a felhasználónevet és a jelszót a bejelentkezéskor. A böngészô ezt a nevet használja fel, hogy eltárolja az adott megosztáshoz szükséges jelszót, így csak egyszer kérdezi meg, de minden egyes alkalommal elküldi, valahányszor adatot kérsz a szervertôl, épp ezért feltétlenül lépj ki a böngészôbôl, ha nyilvános helyen érsz el jelszóval védett címeket.

AuthType Basic
Ugye nem akarod bárki számára elérhetôvé tenni az esetlegesen bizalmas információkat is tartalmazó naptárakat? Ezzel az opcióval lehet megadni, hogy a lent megadott felhasználóknak milyen típusú jelszavat adjon a WebDAV. A jelszókat egy fájlban tárolja, ahol választani lehet az olvasható szöveg, MD5, SHA és CRYPT kódolások közül, amelyek elég gyenge kódolások, de ha csak erre az egy mappa elérése hozod létre a felhasználót, és nem engedélyezed a .htaccess fájlok létrehozását a webmappában, amellyel kapcsolódott felhasználó felül tudja bírálni az adott mappára adott jogosultságokat, nem érhet meglepetés. Több biztonságot és másfajta bejelentkezési módot nyújt a mod_auth_digest modul, ez azonban még nem része a Mac OS X rendszernek, az alábbi oldalon további információt találhatsz!

AuthUserFile /private/var/run/davlocks/.user_passwords
Itt adod meg a felhasználókat, illetve a hozzájuk tartozó jelszavakat, akik jogosultak az általad megosztott fájlok hozzáférésére. A jelszó fájlt tanácsos külön tárolni a megosztott fájlokat tartalmazó mappától, hiszen bizalmas információkat tartalmaz, létrehozására a htpasswd program szolgál. Az így elkészült fájlt tárold el a davlocks mappában, messze a megosztástól.

# sudo htpasswd -cm /private/var/run/davlocks/.user_passwords ical_publish
New password:
Re-type new password:
Adding password for user ical_publish


Az ical_publish felhasználóhoz kért jelszót megkérdezi tôled, majd hozzáadja a jelszófájlhoz. Mivel legelôször létre is kell hozni a fájlt, használd ezért -c kapcsolót, illetve a hagyományos titkosítás helyett az MD5 titkosítás jobb, ezért az -m kapcsolót, összevonva -cm. Ha több felhasználót szeretnél hozzárendelni az adott megosztáshoz, megteheted, de akkor ne használd a -c kapcsolót, mert akkor felülírja a régi fájlt ahelyett, hogy hozzáadná a felhasználót, elegendô csak a -m kapcsoló. Nézd meg, jó lett-e a fájl:

# cat /private/var/run/davlocks/.user_passwords ical_publish:$apr1$TdVHk/..$3WgZw8Z79VpVj6B07wYHB0

Egyetlen sort tartalmaz, az elsô része a felhasználó neve, majd a kódolt jelszó. Szerencsére biztonsági szempontból a legmegfelelôbb helyen hoztad létre a fájlt. Miért?

# sudo ls -la /private/var/run/davlocks/
total 24
drwxrwxr-x 5 www www 170 20 Jan 00:57 .
...
-rw-r--r-- 1 root www 94 20 Jan 01:06 .user_passwords


A davlocks mappa tulajdonosa www, mint a . mutatja, tehát a benne létrehozott fájl megkapja az ôt tartalmazó mappa csoportját, ezért azt az Apache képes olvasni. Másrészrôl mivel root jogokkal hoztad létre, a root lett a tulajdonosa, így más felhasználó nem tudja olvasni, ha elveszed az other csoportnak alapértelmezetten adott olvasási jogot.

# sudo chmod 640 /private/var/run/davlocks/.user_passwords

Ellenôrzés:

# sudo ls -la /private/var/run/davlocks/
...
-rw-r----- 1 root www 94 20 Jan 01:06 .user_passwords


Jelszó rendben.

<LimitExcept OPTIONS>
A <LimitExcept> taggal az adott megosztáshoz tartozó hozzáférést lehet korlátozni, nem az adott gépen, hanem a WebDAV megosztáshoz kapcsolódó felhasználók esetén, akár a böngészôben, akár a Connect to Server (Kapcsolódj új szerverhez) menüponttal történik a felvétel. A WebDAV szerver és a hozzá kapcsolódó kliens adott parancsokkal, ún. metódusok, valósítja meg a kommunikációt, mint a PUT, ami a szerverre való adatok elhelyezését vagy a DELETE, ami az adott URL által meghatározott dokumentum törlését jelenti. Az OPTIONS metódussal kérdezi le a WebDAV kapcsolat legelején, hogy mik azok a metódusok, amiket használhat a kapcsolatban, mindez persze a háttérben történik. A korlátozás úgy muködik, hogy minden olyan metódusra adott válasz elôtt bejelentkezést igényel az Apache, ami nincs felsorolva a <LimitExcept ...> részében. Szóközzel elválasztva több metódust is meg lehet adni. Ha böngészôn keresztül nézed meg az adott URL-t, a GET metódus az elsô, ami kilistázza a mappa tartalmát, WebDAV-os megosztás esetén az OPTIONS, majd a PROPFIND az, ami hierarchikusan nézi végig a fájlrendszert. Ezzel a beállítással a webes és az íróasztali hozzáférés is bejelentkezéshez van kötve. De honnan tudja, hogy melyik felhasználó férhet hozzá az információhoz?

Require user ical_publish
Ezzel a sor a <LimitExcept> tagek között helyezkedik el, tehát minden zárolt metódus használata esetén csak ez a felhasználó jogosult a választ kapni, ami most az ical_publish. Ezt a folyamatot azonosításnak hívják, ami egy felhasználónév és a jelszó megadásával történô bejelentkezéssel és ezeknek a gép által történô hitelesítésével történik. Ez történhet a Finder használatával (baloldali képre kattints!), Kattints rá! Kattints rá! vagy böngészôn keresztül (jobb oldali képre kattints!), illetve akár az iCal Naptár (Calendar) / Kiadás... (Publish...) ablakában megadott adatok alapján. Tehát az azonosítás céljából megadod a gépnek a felhasználónevedet és a jelszavadat, a hitelesítésnél pedig, ami azt jelenti, hogy te az vagy, akinek mondod magadat, az így átadott felhasználónevet és jelszót összeveti a jelszófájlban tárolt adatokkal, és ha egyeznek, akkor hitelesítve vagy, jogosultságod van a használatra. Ha egyszerre több felhasználónak akarsz elérést adni, és nem akarsz vacakolni mindegyik hozzáadásával, akkor a 'Require valid-user' szót is beírhatod, ekkor szintén a jelszófájlban tárolt felhasználókat és neveket ellenôrzi az Apache.

</LimitExcept>
</Directory>
</IfModule>

Ha bármilyen jelölônyelvet használtál eddig, akkor ezek ismerôsnek tunnek, egyszeruen bezárják az adott tageket, illetve az egész mod_dav.c modulra történô beállításokat.
Ha kész vagy a módosításokkal üss egy vezérlô (ctrl) o kombinációt, majd egy Entert a módosítások mentéséhez, majd a vezérlô (ctrl) x kombinációval pedig ki tudsz lépni a pico szövegszerkesztôbôl. Bár a beállításokat elmentetted, de az Apache vagy futott mindeközben, vagy nem, ahhoz, hogy életbe is lépjenek a módosítások, elôször is ellenôrizd le a httpd.conf helyességét, már ami az elgépeléseket jelenti:
# sudo apachectl configtest
Syntax OK


Majd indítsd újra, vagy éppen el, az Apache-t:
# sudo apachectl graceful
/usr/sbin/apachectl graceful: httpd not running, trying to start
/usr/sbin/apachectl graceful: httpd started


Ha minden helyes, használhatod a szolgáltatást.

Remélem, még van kedved megosztani a naptáradat a saját WebDAV szervereden, válaszd ki az iCal naptárai közt, amit elérhetôvé szeretnél tenni, majd add ki a Naptár (Calendar) / Kiadás... (Publish...) parancsot. A felbukkanó ablakban meg kell adnod a mentendô naptár nevét, a jelölônégyzetekben a Változtatások automatikus frissítése (Publish changes automatically) a különösen fontos, hiszen ez veszi le a válladról a manuális frissítés terhét. A Naptár kiadása (Publish calendar) menüpontnál a .Mac helyett válaszd a WebDAV szerveren (on a WebDAV server) opciót. Most már nincs is olyan messze. A Base URL-ben a teljes elérési utat kell a DAV által engedélyezett mappára megadni, ami a http://192.168.0.7/iCal_Share/, illetve az IP cím a te mindenkori IP címed, ami akár lehet domain név is, illetve a mappa az általad a tagben megadott mappa, az Apache gyökérmappáján kívül. A Login az általad megadott felhasználónév, most ical_publish, illetve az általad beírt jelszó, ezt te tudod. Ha kész vagy, bökj a Kiadás (Publish) gombra.

Kattints rá! Kattints rá! A feltöltés után egy üzenet köszönt, amivel e-mailben is értesítheted ismerôseidet a közzé tett naptáradról, ha az E-mail küldése (Send Mail) gomb szimpatikus.

Figyeld meg, hogy a naptár nevében szóköz is szerepelt, amit a '32' karakterkapcsolat jelképez a naptár elérési címében. A naptár mellett kicsi irányítótoronyszeru ikon jelzi, hogy a naptár világszerte elérhetô. A Naptár (Calendar) menüben három pont lehet még érdekes: a Kiadás megszüntetése (Unpublish) és a Helyváltoztatás (Change Location...). Az elôbbivel megszünteted naptárad világhódító karrierjét, így törlésre is kerül a szerverrôl, az utóbbival a székhelyét helyezheted át. Ha a kiadásról szóló üzenetet akarod megismételni, add ki a Kiadási levél küldése (Send publish email...) parancsot.

A WebDAV-val kapcsolatban további információt az alábbi oldalakon találhatsz: www.webdav.org/, www.webdav.org/other/faq.html, www.webdav.org/mod_dav/install.html Ha kérdésed vagy problémád van SSH dolgokkal kapcsolatban, írj bátran!


Mátyás Ferenc Farkas


A lap tetejére