Copyright © 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 A FreeBSD Dokumentációs Projekt
Üdvözöljük a FreeBSD világában! Ez a kézikönyv ismerteti a FreeBSD 7.3-RELEASE, ill. a FreeBSD 8.1-RELEASE telepítését és használatát a mindennapokban. A kézikönyv tartalmán számos független fejlesztő folyamatosan dolgozik. Emiatt elképzelhető, hogy bizonyos fejezetek már elavultak és aktualizálásra szorulnak. Amennyiben úgy érezzük, hogy segíteni tudnánk a projekt munkájában, értesítsük a fejlesztőket a FreeBSD Dokumentációs Projekt levelezési lista címén! Ezen dokumentum legfrissebb változata mindig elérhető a FreeBSD honlapjáról (a korábbi változatok pedig megtalálhatóak a http://docs.FreeBSD.org/doc/ címen). Ezenkívül még rengeteg más formátumban és tömörítve is letölthető a FreeBSD FTP szerveréről vagy a tüköroldalak egyikéről. Amennyiben a kézikönyv nyomtatott változatára lenne szükségünk, megvásárolhatjuk a FreeBSD Mall-ból. Ha pedig keresni szeretnénk benne, azt a funkciót itt érhetjük el.
Fordította: Páli Gábor, utolsó ellenőrzés: 2010.11.28.
A dokumentum továbbadása forrás (SGML DocBook) és feldolgozott formában (SGML, HTML, PDF, PostScript, RTF, stb.) módosítással vagy anélkül a következő feltételek mellett lehetséges:
A forráskódnak (SGML DocBook) tartalmaznia kell a fenti copyright megjegyzést és a feltételek ezen listáját, valamint a következő jogi nyilatkozatot, bármiféle módosítás nélkül.
Feldolgozott dokumentum továbbadásakor (más DTD, PDF, PostScript, RTF és más formátumok) szintén meg kell tartani a fenti copyright megjegyzést, a feltételek listáját, valamint a következő jogi nyilatkozatot a dokumentumban, vagy a dokumentumot kísérő anyagokban.
Fontos: EZT A DOKUMENTUMOT A FREEBSD DOKUMENTÁCIÓS PROJEKT A JELEN FORMÁJÁBAN BIZTOSÍTJA ÉS LEMOND MINDEN KIFEJEZETT VAGY TÖRVÉNYI SZAVATOSSÁGRÓL, BELEÉRTVE AZ ELADHATÓSÁG ÉS EGY ADOTT CÉLRA VALÓ ALKALMASSÁG SZAVATOSSÁGÁT. A FREEBSD DOKUMENTÁCIÓS PROJEKT SEMMILYEN ESETBEN SEM TEHETő FELELőSSÉ A DOKUMENTUM HASZNÁLATÁBÓL EREDő BÁRMILYEN KÖZVETLEN, KÖZVETETT JÁRULÉKOS, KÜLÖNLEGES, BÜNTETő VAGY KÖVETKEZMÉNYES KÁRÉRT (BELEFOGLALVA, DE NEM KORLÁTOZVA A HELYETTESÍTő JAVAK BESZERZÉSÉRE, HASZON, ADAT VAGY PROFIT ELVESZTÉSÉRE, ILLETVE ÜZLETI FORGALOM KIESÉSÉRE) VAGY EGYÉB MÁS ESETBEN SEM, AMIKOR ERőS TEHER VAGY KÍN (HANYAGSÁG VAGY EGYÉB) ERED A DOKUMENTUM AKÁRMIFÉLE FELHASZNÁLÁSÁBÓL, MÉG HA ERRE KÜLÖN FEL IS HÍVTUK a FIGYELMET.
A FreeBSD a FreeBSD Foundation bejegyzett védjegye.
A 3Com és HomeConnect a 3Com Corporation bejegyzett védjegyei.
A 3ware és Escalade a 3ware Inc. bejegyzett védjegyei.
Az ARM az ARM Limited bejegyzett védjegye.
A Adaptec az Adaptec, Inc. bejegyzett védjegye.
Az Adobe, Acrobat, Acrobat Reader, és PostScript az Adobe Systems Incorporated bejegyzett védjegyei, vagy védjegyei az Egyesült Államokban és/vagy más országokban.
Az Apple, AirPort, FireWire, Mac, Macintosh, Mac OS, Quicktime, és TrueType az Apple Computer, Inc., bejegyzett védjegyei az Egyesült Államokban és más országokban.
A Corel és WordPerfect a Corel Corporation és/vagy leányvállalatainak bejegyzett védjegye Kanadában, az Egyesült Államokban és/vagy más országokban.
A Sound Blaster a Creative Technology Ltd. védjegye az Egyesült Államokban és/vagy más országokban.
A CVSup John D. Polstra bejegyzett védjegye.
A Heidelberg, Helvetica, Palatino, és Times Roman a Heidelberger Druckmaschinen AG bejegyzett védjegyei, vagy védjegyei az Egyesült Államokban és más országokban.
Az IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390 és ThinkPad az International Business Machines Corporation védjegyei az Egyesült Államokban, más országokban, vagy mindkettőben.
Az IEEE, POSIX és 802 az Institute of Electrical and Electronics Engineers, Inc. bejegyzett védjegyei az Egyesült Államokban.
Az Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium és Xeon az Intel Corporation vagy leányvállalatainak védjegyei vagy bejegyzett védjegyei az Egyesült Államokban és más országokban.
Az Intuit és Quicken az Intuit Inc., vagy valamely leányvállalatának bejegyzett védjegyei és/vagy bejegyzett szervizmárkái az Egyesült Államokban és más országokban.
A Linux Linus Torvalds bejegyzett védjegye.
Az LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID és Mylex az LSI Logic Corp. védjegyei vagy bejegyzett védjegyei.
Az M-Systems és DiskOnChip az M-Systems Flash Disk Pioneers, Ltd. védjegyei vagy bejegyzett védjegyei.
A Macromedia, Flash és Shockwave a Macromedia, Inc. védjegyei és/vagy bejegyzett védjegyei az Egyesült Államokban és/vagy más országokban.
A Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media és Windows NT a Microsoft Corporation bejegyzett veacute;djegyei, vagy védjegyei az Egyesült Államokban és/vagy más országokban.
A Netscape és a Netscape Navigator a Netscape Communications Corporation bejegyzett védjegyei az Egyesült Államokban és más országokban.
A GateD és NextHopa NextHop bejegyzett és nem bejegyzett védjegyei az Egyesült Államokban és más országokban.
A Motif, OSF/1 és UNIX a The Open Group bejegyzett védjegyei, az IT DialTone és a The Open Group pedig védjegyei az Egyesült államokban és/vagy más országokban.
Az Oracle az Oracle Corporation bejegyzett védjegye.
A PowerQuest és PartitionMagic a PowerQuest Corporation bejegyzett védjegyei az Egyesült Államokban és/vagy más országokban.
A RealNetworks, RealPlayer és RealAudio a RealNetworks, Inc. bejegyzett védjegyei.
A Red Hat és RPM a Red Hat, Inc. védjegyei vagy bejegyzett védjegyei az Egyesült Államokban és más országokban.
A SAP, R/3 és mySAP a SAP AG védjegyei vagy bejegyzett védjegyei Németországban é sok más országban is világszerte.
A Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JRE, JSP, JVM, Netra, OpenJDK, Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS, Ultra és VirtualBox a Sun Microsystems, Inc. védjegyei vagy bejegyzett védjegyei az Egyesült Államokban és más országokban.
A Symantec és Ghost a Symantec Corporation bejegyzett védjegyei az Egyesült Államokban és más országokban.
A MATLAB a The MathWorks, Inc. bejegyzett védjegye.
A SpeedTouch a Thomson védjegye.
A U.S. Robotics és Sportster a U.S. Robotics Corporation. bejegyzett védjegyei.
A VMware a VMware, Inc. védjegye.
A Waterloo Maple és Maple a Waterloo Maple Inc. védjegyei vagy bejegyzett védjegyei.
A Mathematica a Wolfram Research, Inc. védjegye.
Az XFree86 az XFree86 Project, Inc. védjegye.
Az Ogg Vorbis és Xiph.Org a Xiph.Org védjegyei.
A gyártók és terjesztők által használt megnevezések közül sok védjegy jogot követel. Ahol ilyen megnevezés tűnik fel ebben a dokumentumban, és a FreeBSD Projektnek tudomása volt a védjegyről, a megnevezést a “™” vagy a “®” szimbólum követi.
A FreeBSD-t még nem ismerők felfedezhetik, hogy a könyv első része a FreeBSD telepítésének folyamatán vezeti keresztül a felhasználót, valamint érintőlegesen bemutatja az ezt alátámasztó UNIX®-os alapfogalmakat és szabályokat. Ennek a résznek a végigjárása nem kíván többet, csupán egy kis felfedező kedvet, illetve a menet közben bemutatott új fogalmak befogadását.
Ha túljutottunk rajta, a kézikönyv második, jóval terjedelmesebb része a FreeBSD-t használó rendszergazdák számára nyújt mindenféle témában minden részletre kiterjedő referenciát. Ezek közül egyes fejezetek elvárnak némi előzetes felkészülést, amelyet minden fejezet áttekintésében említeni is fogunk.
További információkért olvassuk át a B Függeléket.
A kézikönyv jelenleg interneten elérhető változata számtalan önkéntes által az utóbbi 10 évben végzett együttes erőfeszítéseinek eredményeit tükrözi. A 2004-ben két kötetben megjelentetett harmadik kiadás óta a következő fontosabb változások történtek:
25 fejezet: készült egy új fejezet a DTrace nevű teljesítmény-elemző eszközről.
20 fejezet: ebben a fejezetben a FreeBSD és a különböző más rendszerekhez fejlesztett állományrendszerek viszonyát mutatjuk be, többek a Sun™ ZFS megoldását.
17 fejezet: ez a fejezet FreeBSD új biztonsági fejlesztéseit foglalja össze és mutatja be a használatukat.
22 fejezet: ebben az új fejezetben a FreeBSD rendszerhez és rajta elérhető különböző virtualizációs technológiákról szólunk.
A harmadik kiadás a FreeBSD Dokumentációs Projekt tagjainak két évi kemény munkájának gyümölcse. A nyomtatott változat már olyan nagyra nőtt, hogy két külön kötetben kellett kiadnunk. Az alábbi fontosabb változtatások jelentek meg ebben az új kiadásban:
11 fejezet: a beállításra és finomhangolásra vonatkozó részeket bővítettük az ACPI energia- és erőforrás gazdálkodásról szóló részekkel, a cron rendszerprogrammal, illetve még több, a rendszermag finomhangolását elősegítő opció leírásával.
14 fejezet: a biztonságról szóló részt bővítettük a virtuális magánhálózatokról (VPN-ekről), állományrendszeri hozzáférés-vezérlési listákról (ACL-ek) szóló elemekkel, valamint biztonságtechnikai tanácsokkal.
16 fejezet: a kötelező hozzáférés-vezérlésről (MAC-ről) szóló fejezet teljesen új ebben a kiadásban. Bemutatja, mi is az a MAC és hogyan hasznosítható egy FreeBSD-s rendszer biztonságossá tételében.
18 fejezet: a háttértárakat tartalmazó részt bővítettük az USB-tárakról, állományrendszeri pillanatképeiről, lemezkvótákról, állomány- és hálózat alapú állományrendszerekről, továbbá a titkosított partíciókról szóló részekkel.
21 fejezet: a Vinum egy új fejezet ebben a kiadásban. Bemutatja a Vinum logikaikötet-kezelő használatát, aminek segítségével eszközfüggetlen módon hozhatunk létre logikai lemezeket, szoftveres RAID-0, RAID-1 és RAID-5 konfigurációkat.
Bekerült egy hibaelhárításról szóló rész a 27 fejezet PPP és SLIP leírásához.
28 fejezet: az elektronikus levelezést ismertető részt bővítettük a különféle levéltovábbító rendszerekről, az SMTP hitelesítésről, UUCP protokollról, a fetchmail és procmail programokról szóló elemekkel, valamint egyéb, haladókat megcélzó témákkal.
29 fejezet: a hálózati szervereket ismertető rész egy teljesen új fejezet ebben a kiadásban. Benne megtalálható az Apache HTTP szerver, az ftpd szerver, illetve a Microsoft® Windows®-os kliensek számára megfelelő Samba szerver beállítása. Az érthetőség kedvéért egyes részek átkerültek ide a 31 fejezet, vagyis a haladó hálózati témákat tárgyaló fejezetből.
31 fejezet: a haladó hálózati témákat tartalmazó részt kiegészítettük a FreeBSD és a Bluetooth® eszközök kapcsolatáról, a vezeték nélküli hálózatokról és az aszinkron adatátvitel módról (ATM-ről) szóló ismeretekkel.
Létrehoztunk egy szójegyzéket abból a célból, hogy a könyvben használt definíciók és szakkifejezések egyetlen központi helyen össze legyenek foglalva.
Számos esztétikai javítást eszközöltünk a könyvben található ábrákon és táblázatokon.
A második kiadás a FreeBSD Dokumentációs Projekt tagjainak két évi komoly munkájának eredménye. Az alábbi fontosabb változtatások jelennek meg ebben a kiadásban:
Bekerült egy teljes tárgy- és névmutató.
Mindegyik ASCII-ábrát grafikusak váltották fel.
Mindegyik fejezet elejére odakerült egy általános áttekintés, ami egy rövid összefoglalást ad a fejezet tartalmáról, valamint közli az elolvasásához szükséges ismereteket.
A tartalmat felosztottuk logikailag három részre: “Bevezetés”, “Rendszeradminisztráció” és “Függelék”.
A 2 fejezetet (“A FreeBSD telepítése”) teljesen újraírtuk és sok-sok illusztráció is hozzáadásra került a könnyebb megértés érdekében.
A 3 fejezet (“A UNIX alapjai”) kiegészült a futó programokról, démonokról és jelzésekről szóló további hasznos információkkal.
A 4 fejezetet (“Alkalmazások telepítése”) bővítettük a bináris csomagkezelésről szóló további ismeretekkel.
A 5 fejezet (“Az X Window System”) teljes újraíráson ment át, aminek folyamán igyekeztünk nagyobb hangsúlyt helyezni a modern asztali technológiák, mint pl. a KDE és GNOME XFree86™ 4.X-en történő használatának leírására.
A 12 fejezet (“A FreeBSD rendszerindítási folyamata”) kibővült.
A 18 fejezet (“Háttértárak”) két, korábban külön levő fejezet, a “Lemezek” és “Biztonsági mentések” összeolvasztásából jött létre. Úgy éreztük, a bennük helyet kapott témákat sokkal könnyebb úgy megérteni, ha egyetlen fejezetben tárgyaljuk ezeket. Egy (hardveres és szoftveres) RAID-ről szóló rész is belekerült.
A 26 fejezet (“Soros vonali kommunikáció”) teljes átszervezésre került, valamint a FreeBSD 4.X/5.X verziókhoz igazítottuk.
A 27 fejezet (“A PPP és a SLIP”) lényegesen sokat fejlődött.
Számos új rész került a 31 fejezetbe (“Egyéb haladó hálózati témák”).
A 28 fejezet (“Elektronikus levelezés”) kibővült a sendmail beállításáról tartalmazó újabb információkkal.
A 10 fejezet (“Bináris Linux kompatibilitás”) kiegészült az Oracle® és a SAP® R/3® telepítését bemutató részekkel.
Az alábbi új témák kerültek tárgyalásra a második kiadásban:
Beállítás és finomhangolás (11 fejezet)
Multimédia (7 fejezet)
A könyvet négy logikailag elkülönülő részre osztottuk fel. Az első, Bevezetés című részben bemutatjuk a FreeBSD telepítését és használatának alapjait. Elgondolásunk szerint az itt szereplő fejezeteket sorban érdemes elolvasni, esetenként kihagyni azokat, amelyek már az olvasó számára ismert témákat dolgoznak fel. A második, Gyakori feladatok című részben megismerhetjük a FreeBSD néhány gyakorta használt lehetőségét. Ez a rész, valamint az ezt követő összes többi tetszőleges sorrendben olvasható. Mindegyik fejezet egy rövidke összefoglalással kezdődik, amely ismerteti, az olvasótól milyen jellegű tapasztalatokat vár el a fejezet megértése. Célja, hogy segítsen az olvasónak megtalálni a számára érdekes témákat. A harmadik, Rendszeradminisztráció című részben rendszergazdai feladatokat tárgyalunk. A negyedik, Hálózati kommunikáció című részben hálózatok és szerverek üzemeltetésével kapcsolatos ismereteket foglaltunk össze. Végül, az ötödik rész tartalmazza a függeléket és az irodalomjegyzéket, hivatkozásokat.
A FreeBSD bemutatkozik az új felhasználóknak. Szó esik a FreeBSD Projekt történetéről, célkitűzéseiről és a fejlesztési modelljéről.
Végigvezetjük a felhasználót a telepítési folyamat egészén. Bizonyos rendhagyó kérdések, mint például a soros konzolon keresztül történő telepítés is terítékre kerülnek.
Sorra vesszük a FreeBSD operációs rendszer alapvető parancsait és lehetőségeit. Amennyiben már jártasak vagyunk valamilyen szinten a Linux® vagy más UNIX-típusú rendszerek használatában, nyugodtan kihagyhatjuk ezt a fejezetet.
Megismerhetjük, miként tudunk külső cégek által fejlesztett alkalmazásokat telepíteni a FreeBSD “Portgyűjteményének” (FreeBSD Ports Collection) vagy a megszokott bináris csomagok használatán keresztül.
Általános bemutatásra kerül az X Window System, valamint az X11 használata a FreeBSD-n. Ezenkívül olvashatunk az elterjedtebb munkakörnyezetekről, mint pl. a KDE és a GNOME.
Felsoroljuk az ismertebb asztali alkalmazásokat: webböngészőket és alkalmazói programcsomagokat, és bemutatjuk, hogyan telepítsük ezeket FreeBSD-re.
Megtudhatjuk, hogyan állítsuk be a zene- és videolejátszást rendszerünkön. Emellett olvashatunk néhány multimédiás alkalmazás használatáról is.
Kifejtjük, miért lehet szükségünk egy új rendszermag konfigurálására, és részletesen végigjárjuk egy rendszermag konfigurációjának, fordításának és telepítésének lépéseit.
Ismertetjük, hogyan lehet nyomtatókat használni FreeBSD alatt, beleértve a munkalapok készítésének mikéntjét, a nyomtatóhasználat nyilvántartását és a kezdeti beállításokat.
Megismerhetjük a FreeBSD bináris Linux kompabilitásához kapcsolódó lehetőségeket. Ezenfelül részletekre is kitérő telepítési útmutatót találhatunk különböző népszerű linuxos alkalmazásokhoz, mint például az Oracle, SAP R/3 és a Mathematica®.
Megismerhetjük a FreeBSD azon paramétereit, amelyek megfelelő állításával a rendszergazdák a lehető legtöbbet képesek kihozni FreeBSD rendszerükből. Ezenkívül bemutatásra kerül a FreeBSD-ben használt számos konfigurációs állomány, valamint hogy ezeket hol találhatjuk meg.
Tartalmazza a FreeBSD rendszerindítási folyamatának leírását, és elmagyarázza, miként lehet ezt vezérelni a konfigurációs beállítások segítségével.
Bemutatja a felhasználói fiókok létrehozását és kezelését. Emellett megemlíti a felhasználókra érvényesíthető erőforrás-megszorításokat, illetve egyéb fiókkezelési feladatokat.
Bemutatásra kerül a FreeBSD rendszerünk biztonságossá tételére alkalmas számos különféle eszköz, többek közt a Kerberos, IPsec és az OpenSSH.
Megtudhatjuk, hogyan működik az alkalmazások elszigeteléséért felelős jail alrendszer, valamint miben emelkedik ki a FreeBSD-ben is megtalálható hagyományos “chroot” megoldással szemben.
Megismerhetjük a kötelező hozzáférés-vezérlést (MAC-et), valamint azt, hogyan is tudjuk felhasználni egy FreeBSD-s rendszer biztonsága érdekében.
Kiderül, mit jelent a FreeBSD-ben az események vizsgálata, illetve mindez hogyan telepíthető, konfigurálható és miként tudjuk a vizsgálatok adatait kielemezni vagy felügyelni.
Bemutatásra kerül, miként kezelhetjük a háttértárolókat és állományrendszereket a FreeBSD-ben. Ide tartoznak a fizikai lemezek, RAID-tömbök, optikai és szalagos egységek, memória alapú lemezek és a hálózati állományrendszerek.
Megismerhetjük a FreeBSD-ben jelenlevő GEOM alrendszert és az általa támogatott különböző RAID-szintek beállítását.
A FreeBSD operációs rendszer számára nem natív állományrendszerekkel foglalkozik, például a Sun Z állományrendszerével.
Megtudhatjuk, hogyan használjuk a Vinumot, a logikaikötet-kezelőt, amely eszközfüggetlen logikai lemezeket, szoftveres RAID-0, RAID-1 és RAID-5 konfigurációkat biztosít.
Tartalmazza a virtualizációs rendszerek által felkínált lehetőségek bemutatását és használatát a FreeBSD-vel.
Bemutatja, hogyan használjuk a FreeBSD-t a rendszer és az alkalmazások szintjén az angoltól eltérő nyelveken.
Elmagyarázza, mik az alapvető különbségek a FreeBSD-STABLE, FreeBSD-CURRENT verziók, valamint a FreeBSD kiadások között. Bemutatja, mely felhasználók lehetnek azok, akik a legtöbbet tudnak profitálni egy fejlesztői rendszer használatából, illetve körvonalazza ennek folyamatát. Továbbá röviden összefoglalja azokat az eszközöket, amelyekkel a felhasználók frissíthetik a rendszerüket a biztonsági és kritikus hibák javításakor.
A Sun DTrace eszközének beállítását és használatát mutatja be. A segítségével megvalósított dinamikus nyomkövetéssel lehetőségünk nyílik valós idejű elemzéseken keresztül felderíteni a különböző teljesítménybeli problémákat.
Kifejti, hogyan csatlakoztassunk terminált vagy modemet a FreeBSD rendszerünkhöz, ha behívó vagy betárcsázós kapcsolatot szeretnénk létrehozni.
Bemutatja, miként tudjuk PPP-n, SLIP-en és Etherneten keresztüli PPP-vel (PPPoE) összekapcsolni a FreeBSD-t távoli rendszerekkel.
Megismerhetjük egy elektronikus levelező szerver különféle komponenseit, és elmélyedhetünk az egyik leghíresebb levelezőszerver-szoftver, a sendmail használatában és felületesebb konfigurálásában.
Részletekbe menően és konfigurációs példákkal mutatja be, miként tudunk hálózati állományrendszer kiszolgálónak, névszervernek, hálózati információs rendszer kiszolgálónak vagy időszinkronizációs szervernek beállítani egy FreeBSD-s számítógépet.
Kifejti a szoftveres tűzfalak mögött álló filozófiát, valamint részletesen tárgyalja a különböző, FreeBSD-n elérhető tűzfalak konfigurációját.
Feldolgoz számos hálózati témát, beleértve az internet kapcsolat helyi hálózaton (LAN-on) keresztül történő megosztását több számítógép között, haladó forgalomirányítási kérdéseket, vezeték nélküli hálózatok beállítását, Bluetooth, ATM, IPv6 és sok minden mással kapcsolatos információkat.
Felsorolja azokat a forrásokat, ahonnan a FreeBSD CD-n vagy DVD-n beszerezhető, valamint azokat a honlapokat, ahonnan letölthető vagy telepíthető a FreeBSD.
A könyv sok tekintetben olyan témákat is érint, amelyek felkelthetik az olvasó érdeklődését és ezek kapcsán bővebb magyarázatra vágyik. Az irodalomjegyzékben ezért összeírtunk számos remek könyvet, amelyekre hivatkozunk is a fejezetekben.
Tartalmazza a FreeBSD felhasználók számára elérhető azon fórumokat, ahová beküldhetik kérdéseiket, illetve szakmai jellegű társalgásokat folytathatnak.
Az egyes FreeBSD fejlesztők PGP-kulcsait sorolja fel.
A könnyebb és egységesebb olvashatóság kedvéért az alábbi konvenciókat igyekeztünk követni a könyvben.
A dőlt betűket állománynevek, URL-ek, kiemelt szövegek és a szakmai kifejezések első előfordulásakor használjuk.
Az írógépszerű betűket hibaüzenetek, parancsok, környezeti változók, portok, számítógépek, felhasználók, csoportok, eszközök nevei, változók és kódrészletek esetén használjuk.
A félkövér betűket alkalmazások, parancsok és billentyűk megnevezésénél használjuk.
A billentyűket félkövérrel írjuk, hogy kiemelkedjenek a szöveg többi részéből. Az egyszerre megnyomni kívánt billentyűk kombinációját a `+' jelöléssel adjuk meg, mint például:
Ctrl+Alt+Del
Ez azt jelenti, hogy a felhasználónak a Ctrl, Alt és Del billentyűket egyszerre kell lenyomnia.
Azokat a billentyűket, amelyeket egymás után kell lenyomni, vesszővel választjuk el, például:
Ctrl+X, Ctrl+S
Ez tehát azt jelenti, hogy a felhasználónak először a Ctrl és X billentyűket, majd a Ctrl és S billentyűket kell egyszerre lenyomnia.
A E:\> kijelzéssel kezdődő példák egy MS-DOS® parancsot jelölnek. Ha másképpen nem említjük, ezeket a parancsokat a modern Microsoft Windows-okban található “Parancssorból” kell kiadni.
E:\> tools\fdimage floppies\kern.flp A:
A # kijelzéssel kezdődő példák a FreeBSD-ben rendszeradminisztrátori jogokat igénylő parancsok kiadását jelentik. Ehhez bejelentkezhetünk a root felhasználóval, vagy felvethetjük a rendszeradminisztrátori jogokat a saját felhasználói fiókunkból a su(1) használatával is.
# dd if=kern.flp of=/dev/fd0
A % kijelzéssel kezdődő példák olyan parancsra utalnak, amelyeket egy normál felhasználói fiókból érdemes kiadni. Hacsak másképpen nem jelezzük, a C-shell szintaxisát használjuk a környezeti változók és egyéb parancsok megadásakor.
% top
A könyv, amit itt most olvashatunk, több száz ember együttes munkájának eredménye a világ minden tájáról. Akár csak elgépeléseket javítottak, vagy komplett fejezeket adtak hozzá, minden hozzájárulás hasznosnak bizonyult.
Emellett sok cég anyagilag is támogatta a könyv fejlődését, lehetővé téve ezáltal, hogy a szerzők teljes munkaidőben dolgozhassanak rajta, pénzt kapjanak az írásaikért stb. Leginkább a BSDi (amelyet később felvásárolt a Wind River Systems) adott teljes munkaidős fizetést a FreeBSD Dokumentációs Projekt tagjainak a könyv gondozásához, amely végül az első nyomtatott kiadás megjelentetéséhez vezetett 2000 márciusában (ISBN 1-57176-241-8). A Wind River Systems ezt követően további szerzőket is finanszírozott a nyomtatási-szedési infrastruktúra továbbfejlesztéséhez és a könyv tartalmának bővítéséhez. Ennek eredménye lett a második nyomtatott kiadás, amely 2001 novemberében jelent meg (ISBN 1-57176-303-1). 2003 — 2004 folyamán a FreeBSD Mall, Inc. támogatott anyagilag számos hozzájárulót a kézikönyvet illető munkájáért, a harmadik nyomtatott kiadásra történő előkészítésben.
A FreeBSD kézikönyv ezen része azoknak a felhasználóknak és rendszergazdáknak szól, akik még nem ismerik a FreeBSD-t. A fejezetek:
Bemutatják a FreeBSD-t.
Végigvezetnek a telepítés folyamatán.
Ismertetik a UNIX alapjait.
Megmutatják, hogyan telepítsük a FreeBSD-hez elérhető megannyi külső alkalmazást.
Megismerhetjük az X-et, a UNIX-os ablakozórendszert, és részleteiben is láthatjuk, miként konfiguráljunk be egy munkakörnyezetet, amellyel kényelmesebbé válik a munka.
A fejezetek megírása során arra törekedtünk, hogy minél kevesebb hivatkozást tegyünk a könyv később következő részeire, így ennek köszönhetően a kézikönyv ezen része anélkül olvasható, hogy közben folyamatosan előre-hátra kellene lapozgatnunk benne.
Köszönjük, hogy érdeklődik a FreeBSD iránt! A fejezet a FreeBSD Projektet több különböző vonatkozásban mutatja be: a történetét, a céljait, a fejlesztési modelljét és így tovább.
A fejezet elolvasása során megismerjük:
hogyan viszonyul a FreeBSD más operációs rendszerekhez;
a FreeBSD Projekt történetét;
a FreeBSD Projekt célkitűzéseit;
a FreeBSD nyílt forráskódú fejlesztési modelljének alapjait;
és természetesen: hogyan is keletkezett a “FreeBSD” név.
A FreeBSD egy 4.4BSD-Lite alapú operációs rendszer Intel® (x86 és Itanium®), AMD64, Alpha™, Sun UltraSPARC® számítógépekre. Jelenleg is portolás alatt áll további architektúrákra. Olvashatunk a FreeBSD történetéről vagy éppen az aktuális kiadásáról. Ha szeretnénk hozzájárulni a Projekt fejlődéséhez (forráskód, hardver vagy pénz), olvassuk el a Hozzájárulás a FreeBSD-hez című cikket (angolul).
A FreeBSD számos figyelemre méltó tulajdonságot tudhat magáénak. Ezek közül néhány:
A preemptív ütemezés dinamikusan szabályozható prioritások segítségével biztosítja a számítógép felhasználók és alkalmazások közti finom és igazságos megosztását, akár a legnagyobb terhelés esetén is.
Többfelhasználós rendszerként lehetővé teszi, hogy sokan tudják a FreeBSD-t egyszerre többféle dologra is használni. Például, ez azt jelenti, hogy a rendszerhez csatlakoztatott különböző perifériák, mint például a nyomtatók és szalagos egységek, megfelelően szétoszthatóak a felhasználók között vagy éppen a hálózaton, és az egyes erőforrásokhoz a felhasználók vagy azok egy csoportja csak korlátozott módon férhetnek hozzájuk, elkerülve ezzel a rendszer számára létfontosságú erőforrások túlterhelését.
A TCP/IP hálózati protokoll gyors és megbízható implementációja, illetve a legfontosabb ipari szabványok, mint az SCTP, DHCP, NFS, NIS, PPP, SLIP, IPsec és IPv6 támogatása. Ezáltal egy FreeBSD-s számítógép könnyedén képes együttműködni más rendszerekkel vagy akár vállalati szerverként is üzemelni. Megbirkózik az NFS (Network File System, távoli állományelérés) és az elektronikus levelezés megszervezésével ugyanúgy, ahogy a vállalatunk internetes elvárásaival a WWW, FTP és forgalomirányítási protokollokon keresztül és tűzfal iránti (biztonsági) igényeivel is.
A memóriavédelem megvalósítása gondoskodik róla, hogy az alkalmazások (vagy a felhasználók) ne zavarják egymást. Az egyik alkalmazás összeomlása nincs kihatással a rendszerben futó összes többire.
A FreeBSD egy 32 bites operációs rendszer (az Alpha, Itanium, AMD64 és UltraSPARC architektúrákon pedig 64 bites), amelyet már a kezdetektől fogva annak terveztek.
A X Window System ipari szabványa (X11R7) alapján szolgáltatja a grafikus felhasználói felületet (GUI) bármelyik VGA-kártyán és monitoron, illetve annak teljes forráskódja is elérhető.
Bináris szintű kompatibilitás a Linuxra, SCO-ra, SVR4-re, BSDI-re és NetBSD-re készített programok nagy részével.
Futtatásra kész alkalmazások ezrei érhetőek el a FreeBSD port- és csomaggyűjteményében. Miért bújnánk az internetet értük, ha mindent egy helyen is megtalálhatunk?
További könnyen portolható alkalmazások ezrei állnak rendelkezésre az interneten. A FreeBSD forráskódja kompatibilis a legtöbb elterjedt kereskedelmi UNIX rendszerével, aminek köszönhetően az alkalmazások nagy része csak kevés módosítást igényel a fordításhoz, már amennyiben erre egyáltalán szükség van.
Az igény szerinti lapozással működő virtuális memória és “egyesített VM/puffer gyorsítótár” úgy lett kialakítva, hogy hatékonyan kiszolgálja a nagyobb étvágyú alkalmazásokat, miközben a többi felhasználó számára továbbra is reakcióképes marad.
Az SMP támogatása a több processzorral rendelkező számítógépek számára.
C, C++ és Fortran fejlesztői eszközök széles tárháza használható. Kutatáshoz és fejlesztéshez más egyéb programozási nyelvek is elérhetőek a portok és csomagok segítségével.
Az egész rendszer forráskódjának megléte lehetővé teszi, hogy a legnagyobb fokú irányítást élvezhessük a környezetünk felett. Miért is bíznánk magunkat egy zárt rendszert fejlesztő cégre, mikor lehetne egy igazán nyílt rendszerünk?
Nagy mennyiségű internetes dokumentáció.
Még sok minden más!
A FreeBSD Kaliforniai Egyetem (Berkeley) Számítógépes rendszerek kutatócsoportja által fejlesztett 4.4BSD-Lite kiadásán alapszik és ápolja a BSD-rendszerek fejlesztésének jellegzetes hagyományait. Túl a kutatócsoport kivételes munkáján, a FreeBSD Projekt több ezernyi órát szentelt arra, hogy a legtöbbet hozza ki a rendszerből mind a teljesítményt, mind pedig a valós életben felbukkanó terhelési helyezetekben történő helytállást illetően. Ahogy a legnagyobb piaci óriások igyekeznek egy hasonló képességű, teljesítményű és megbízhatóságó PC-s operációs rendszert kifejleszteni, úgy a FreeBSD már most felajánlja ezeket!
Kizárólag csak a képzeletünk szabhat gátat annak, hogy mire is tudjuk használni a FreeBSD-t. Szoftverfejlesztéstől kezdve, a gyári automatizáláson és készletnyilvántartáson át a műholdas antennák tájolásáig szinte mindenre: ha ezt eddig egy kereskedelmi UNIX-szal is meg tudtuk tenni, akkor nagyon valószínű, hogy a FreeBSD-vel is képesek leszünk erre! A FreeBSD ezen felül nagyban profitál a világban található különböző kutatóközpontok és egyetemek által fejlesztett, kiváló minőségű alkalmazások ezreiből, melyek gyakorta olcsón vagy ingyen elérhetőek. Kereskedelmi alkalmazások is egyre nagyobb számban képviseltetik magukat minden nap.
Mivel a FreeBSD forráskódja általánosan elérhető, a rendszer szinte tetszőleges mértékben testreszabható a különleges elvárásokat támasztó alkalmazások vagy projektek számára. Ez a nagyobb kereskedelmi fejlesztők operációs rendszereivel majdnem teljesen elképzelhetetlen. Íme csupán néhány példája azon alkalmazásoknak, melyek jelenleg is FreeBSD-t használnak:
Internetes szolgáltatások: A FreeBSD-be épített szilárd TCP/IP alapú hálózatkezelés különféle internetes szolgáltatások számára teszi ideális platformmá:
FTP szerverek
World Wide Web szerverek (hagyományos vagy biztonságos [SSL])
IPv4 és IPv6 forgalomirányítás
Tűzfalak és NAT (“IP maszkolás”), átjárók
Elektronikus levelező szerverek
USENET hírrendszer és üzenőfal
Sok minden más...
A FreeBSD használatához kezdetben elegendő egy olcsó 386-os PC, melyet a vállalkozásunk fejlődésével szépen fel tudunk hozni egy RAID-del ellátott négyprocesszoros Xeon rendszerig.
Oktatás: Esetleg informatikával vagy műszaki informatikával foglalkozik? Nem is lehetne jobban a FreeBSD által felkínált élményeken kívül máshogy megismerkedni elsőkézből az operációs rendszerek, számítógépes architektúrák és hálózatok működésével! Rengeteg szabadon használható műszaki, matematikai és grafikai tervező programcsomag könnyíti meg azok munkáját is, akik számára a számítógép legfőképpen más feladatok elvégzésére hivatott!
Kutatás: Miután a teljes FreeBSD rendszer forráskódja bárki számára elérhető, tökéletes kiindulási pontot ad az operációs rendszerek témakörében vagy a számítástudomány egyéb ágaiban végzendő kutatásokhoz. A FreeBSD nyílt természete ezenkívül lehetővé teszi egymástól távol levő csoportok közös együttműködését is anélkül, hogy a résztvevőknek aggódnia kellene a különleges licencszerződések vagy a nyílt fórumokon felmerülő korlátozások miatt.
Hálózatépítés: Szüksége van egy új útválasztóra? Esetleg egy névszerverre (DNS)? Egy tűzfalra, mely távoltartja a nemkívánatos egyéneket a belső hálózattól? A FreeBSD pillanatok alatt átváltoztatja a sarokban porosodó 386-os vagy 486-os PC-nket egy kifinomult csomagszűrési képességekkel bíró forgalomirányító eszközzé.
X Window munkaállomás: A FreeBSD a szabadon használható X11 szerverrel együtt remek választás egy olcsó X terminál kiépítéséhez. Eltérően egy szokványos X termináltól, a FreeBSD azonban igény szerint sok alkalmazás helyi futtatását is képes megoldani, ezzel megszabadítva minket a központi szerver használatának kényszerétől. A FreeBSD viszont akár “lemez nélkül” is el tud indulni, aminek révén az egyes munkaállomások karbantartása még olcsóbbá és könnyebbé válik.
Szoftverfejlesztés: Az alap FreeBSD rendszer fejlesztőeszközök tömkelegével, többek közt a híres GNU C/C++ fordítóval és nyomkövetővel érkezik.
A FreeBSD CD-n, DVD-n és FTP-n keresztül elérhető forráskód és bináris formátumban is. A FreeBSD beszerzésével kapcsolatos bővebb információkért olvassuk el az A Függeléket.
A FreeBSD egyaránt remek eszköz- és termékfejlesztői platformként funkcionál a világ legnagyobb informatikai cégeinél, többek közt:
A FreeBSD mindezek mellett több nagyobb internetes oldal alapját képzi, mint például:
és még sokan mások.
A most következő rész egy-két háttérinformációt tár fel a Projektről, többek között a történetét, céljait és a benne alkalmazott fejlesztési modellt.
A FreeBSD Projekt valamikor 1993 kezdetéről eredeztethető, és részben a “Nem hivatalos 386BSD Patchkit”-ből nőtt ki, a patchkit 3 legutolsó koordinátorának, Nate Williamsnek, Rod Grimesnak és nekem köszönhetően.
Eredeti célunk a 386BSD köztes állapotainak rögzítése lett volna, amitől olyan problémák megoldását reméltük, melyeket a patchkitek gyártása önmagában egyszerűen nem tudott megoldani. Néhányan még talán emlékeznek is a Projekt kezdeti munkaneveire: “386BSD 0.5” vagy “386BSD Interim”, melyek pontosan erre a tényre hivatkoztak.
A 386BSD eredetileg Bill Jolitz operációs rendszere volt, amely ennél a pontnál már közel egy éve senki sem tartott karban. Mivel a hozzá tartozó patchkit pedig napról napra duzzadt, egyre kényelmetlenebbé vált a karbantartása. Ezért egyhangúan úgy döntöttünk, segítünk Billnek azzal, hogy időnként létrehozunk egy “letisztított” változatot. Ez a próbálkozásunk csúnyán kudarcba fulladt, amikor Bill Jolitz hirtelen meggondolta magát és visszalépett a Projekt támogatásától. Semmilyen egyértelmű útmutatást nem adott arra, hogy mit csináljunk helyette.
Nem tartott sokáig eldöntenünk, hogy ez a cél továbbra is megéri a fáradtságot, még Bill segítsége nélkül is, ezért felvettük a “FreeBSD” nevet, melyet David Greenmannek köszönhetünk. Kezdeti feladatainkat a rendszer akkori felhasználóival tartott egyeztetések után állítottuk fel. Miután teljesen tisztán láthatóvá vált, hogy a Projekt a megvalósulás útján van, felvettem a kapcsolatot a Walnut Creek-kel, terjesztési mód után nézve azok számára, akik nem tudtak akkoriban könnyedén hozzáférni az internethez. A Walnut Creek nem csak támogatta a FreeBSD CD-n történő terjesztését, hanem még egy számítógépet és egy gyors internetkapcsolatot is a Projekt rendelkezésére bocsátott. A Walnut Creek szinte példátlan mértékű, egy akkoriban teljesen ismeretlen projektbe vetett hite nélkül nagyon nehezen lenne elképzelhető, hogy a FreeBSD olyan messzire és olyan gyorsan jutott volna el, ahol ma tart.
Az első CD-lemezen (és széles körben az interneten is megjelenő) változat a FreeBSD 1.0 volt, amely 1993 decemberében jelent meg. A Berkeley-ről származó 4.3BSD-Lite (“Net/2”) szalagokon található források alapján készült, kiegészítve a 386BSD-ből és a Szabad Szoftver Alapítványtól (Free Software Foundation, FSF) származó komponensekkel. Első kiadásként igen méltányos sikert könyvelhetett el, melyet a még inkább sikeres FreeBSD 1.1-gyel folytattunk 1994 májusában.
Nagyjából ekkortájt néhány váratlan sötét felhő bukkant fel az égbolton, ahogy a Novell és a Berkeley hosszantartó pereskedése lezárult a Berkeley Net/2 szalagjainak jogi formáját illetően. Ennek eredményeképpen a Berkeley elfogadta, hogy a Net/2 nagy része “jelzáloggal terhelt” és a Novell tulajdona, aki pedig valamivel korábban az AT&T-től szerezte. Ezért cserébe a Berkeley megkapta a Novell “áldását” a 4.4BSD-Lite kiadásra, és amikor az véglesen kijön, megszűnik a rajta levő jelzálog. Emiatt az összes Net/2 felhasználónak erősen javasolt volt váltani. Ez érintette magát a FreeBSD-t is, és így a Projekt 1994 júliusáig kapott határidőt, hogy leállítsa a Net/2 alapú termékeinek szállítását. A megegyezés értelmében a Projekt kiadhatott még egy utolsó kiadást a határidő előtt, amely végül a FreeBSD 1.1.5.1 lett.
A FreeBSD-nek ekkor szembesülnie kellett azzal a nehéz feladattal, hogy lényegében újra fel kellett találnia magát, a teljesen új és meglehetősen hiányos 4.4BSD-Lite bitjeitől elindulva. A “Lite” (egyszerűsített) kiadások abban az értelemben számítottak egyszerűbbnek, hogy a Berkeley kutatói (a különböző jogi követelések miatt) eltávolították a ténylegesen beindítható rendszerhez szükséges programrészek nagyobb részét, ill. a 4.4-es verzió Intel processzorokra készített portja nagyon is befejezetlen volt. A Projektnek egészen 1994 novemberéig tartott, hogy megtegye ezt a lépést, ugyanis ekkor jelent meg a FreeBSD 2.0 az interneten és (december vége felé) CD-n. Annak ellenére, hogy még némileg érdes maradt bizonyos helyeken, ez a kiadás jelentős sikereket ért el. Ezt követte 1995 júniusában a sokkalta stabilabb és könnyebben telepíthető FreeBSD 2.0.5.
A FreeBSD 2.1.5-öt 1996 augusztusában adtuk ki, mely akkora népszerűségnek örvendett az internet-szolgáltatók és kereskedelmi közösségek körében, hogy a 2.1-STABLE elágazásból egy újabb kiadást készítettünk. Ez volt a FreeBSD 2.1.7.1, amely 1997 februárjában jelent meg és ezzel együtt a 2.1-STABLE fejlesztését is zárta. Most már csak karbantartást végzünk rajta, és csak a biztonsági és egyéb kritikus hibajavítások kerülnek bele (RELENG_2_1_0).
A FreeBSD 2.2 fejlesztése 1996 novemberében ágazott le az akkori fejlesztői (“-CURRENT”) ágból, mint a RELENG_2_2-es ág. Ebből az első teljes kiadás (2.2.1) 1997 áprilisában jelent meg. A 2.2-es ág mentén további kiadások 1997 nyarán és őszén készültek, melyek közül az utolsó (2.2.8) 1998 novemberében jelent meg. Az első hivatalos 3.0-ás kiadás 1998 októberében jött ki, ami egyúttal a 2.2-es ág befejezésének kezdetét jelentette.
A fejlesztési fa 1999. január 20-án került ismét elágaztatásra, melynek eredménye a 4.0-CURRENT és 3.X-STABLE ágak lettek. A 3.X-STABLE ágban a 3.1 1999. február 15-én, a 3.2 1999. május 15-én, a 3.3 1999. szeptember 16-án, a 3.4 1999. december 20-án és a 3.5 2000. június 24-én jelent meg, melyet pár nappal később egy kisebb alverzió, a 3.5.1 követett, a Kerberosra vonatkozó friss biztonsági javításokkal. Ez lett egyben a 3.X ág utolsó kiadása.
Egy másik fontos elágaztatás 2000. március 13-án történt, mellyel életre kelt a 4.X-STABLE ág. Ebből aztán számos kiadás született: a 4.0-RELEASE 2000 márciusában mutatkozott be, az utolsó 4.11-RELEASE pedig 2005 januárjában látott napvilágot.
A várva várt 5.0-RELEASE 2003. január 19-én került bejelentésre. Közel háromévnyi munka eredményeképpen ez a kiadás indította meg a FreeBSD-t a többprocesszoros rendszerek és az alkalmazások szálkezelésének fejlettebb támogatásának útján, valamint az UltraSPARC és ia64 platformok támogatása is itt jelent meg először. Ezt a kiadást az 5.1 követte 2003 júniusában. A hozzá tartozó -CURRENT ágból az utolsó kiadás az 5.2.1-RELEASE volt, amely 2004 februárjában mutatkozott be.
A 2004 augusztusában, a RELENG_5 ág létrehozását a 5.3-RELEASE követte, és egyben a 5-STABLE ág kezdetét is jelezte. A legújabb 5.5-RELEASE 2006 májusában jött ki. A RELENG_5 ágból már nem fog készülni több kiadás.
A fejlesztési fa ezután 2005 júliusában ágazott el ismét, ezúttal a RELENG_6 ágnak adott életet. A 6.0-RELEASE az 6.X ág első kiadásaként 2005 novemberében jelent meg. A legújabb 6.4-RELEASE 2008 november hónapjában jelentkezett. A RELENG_6 ágból már nem készülnek további kiadások.
A RELENG_7 ág 2007 októberében jött létre. Ebből az első kiadás 2008 februárjában a 7.0-RELEASE volt. A legfrissebb 7.3-RELEASE kiadás 2010 március hónapban készült el. A RELENG_7 ágból további kiadások is várhatóak.
A fejlesztési fából 2009 augusztusában ismét levált egy ág, amely ezúttal a RELENG_8 volt. A 8.0-RELEASE, a 8.X ág első kiadása 2009 novemberében jelent meg. A legfrissebb 8.1-RELEASE 2010 július hónapban jött ki. A RELENG_8 ágból várhatóak további kiadások.
Jelen pillanatban a hosszabb távú fejlesztések a 9.X-CURRENT (törzs) ágban kapnak helyet, és a 9.X-ből készült időközönkénti pillanatkiadások folyamatosan elérhetőek CD-n (és természetesen interneten keresztül is) a pillanatkiadásokat tároló szerverről.
A FreeBSD Projekt célja, hogy olyan szoftvereket kínáljon, amelyek tetszőlegesen, bármilyen célra felhasználhatóak, mindenféle megkötések nélkül. Sokunk jelentős energiát fektet a programokba (és a Projektbe) és minden bizonnyal egyikünk sem utasítana vissza semmilyen anyagi ellenszolgáltatást se most, se később, de egyáltalán nem ragaszkodunk hozzá. Hisszük, hogy elsődleges “küldetésünk” olyan programok és programrészletek készítése bárki számára és bármilyen célra, melyeket a lehető legszélesebb körben alkalmaznak és a lehető legtöbb hasznot hajtják. Ez, úgy érzem, az egyik legalapvetőbb célja a szabad szoftvereknek, és ez az, amit mi is lelkesen magunkénak vallunk.
A forrásfánkban található GNU General Public License (GPL) vagy a Library General Public License (LGPL) alá eső kódok hozzáférhetőségére ezzel szemben némileg több megszorítás vonatkozik, legalább is inkább ami a hozzáférhetőséget illeti. Mivel a GPL-es szoftverek kereskedelmi használata további bonyodalmakat vethet fel, ha lehetőségünk adódik rá, inkább a sokkal enyhébb BSD licenccel rendelkező szoftvereket választjuk.
A FreeBSD fejlesztése egy nagyon nyitott és rugalmas folyamat, szó szerint a világ minden tájáról érkező többszáznyi segítségből építkezik, ahogy az látható is a résztvevőink listáján. A FreeBSD fejlesztési infrastruktúrája lehetővé teszi, hogy ez a többszáznyi résztvevő az interneten keresztül működjön együtt. Folyamatosan várjuk az új fejlesztőket és ötleteket, és mindazok, akik komolyabban érdeklődnek a Projekt iránt, egyszerűen felvehetik velünk a kapcsolatot a FreeBSD technical discussions levelezési lista címén. Egy FreeBSD announcements levelezési lista is elérhető azok számára, akik értesíteni kívánják a többi FreeBSD felhasználót munkájuk főbb eredményeiről.
A FreeBSD Projektről és annak fejlesztési modelljéről hasznos tudni az alábbiakat, függetlenül attól, hogy egyedül vagy másokkal szoros együttműködésben dolgozunk:
Sok éven keresztül a FreeBSD központi forrásfáját CVS-en (Concurrent Versions System) keresztül tartották karban, amely egy, a FreeBSD-vel is érkező, szabadon elérhető verziókezelő rendszer. 2008 júniusában a Projekt az SVN (Subversion) használatára váltott. Ez a váltás szükségszerű volt, mivel a CVS által okozott technikai nehézségek gyorsan előjöttek a forrásfa és a hozzá tartozó metainformációk szapora növekedésével. Noha a központi repository most már SVN-alapú, a kliensoldali CVSup és csup alkalmazások továbbra is a korábbi infrastruktúrával dolgoznak, ahogy eddig is — az SVN respositoryban végzett változtatások ehhez automatikusan átkerülnek CVS alá. Jelen pillanatban egyedül csak a központi forrásfa használja ezt a megoldást, a dokumentáció, a weboldalak és a Portgyűjtemény forrásai továbbra is CVS alól üzemelnek. Az elsődleges CVS repository egy Santa Clara-i (California, USA) számítógépen található, ahonnan a világban található rengeteg tükörszerverre másolódik. Az SVN-fa, mely tartalmazza a -CURRENT és -STABLE ágakat, könnyen lemásolható a saját számítógépünkre is. Ennek részleteiről bővebben a A forrásfa szinkronizálása c. szakaszban olvashatunk.
A hivatalos fejlesztők (committerek) azok az emberek, akik a CVS-fához írási joggal rendelkeznek, tehát módosítást hajthatnak végre a FreeBSD forrásaiban (a “committer” kifejezés a cvs(1) commit parancsából származik, amelyet arra használunk, hogy felvigyük a módosításainkat a CVS repository-ba). Javaslatainkat legjobban a send-pr(1) használatával tudjuk a committerek elé tárni. Ha valamiért ez mégsem működne, megpróbálhatjuk őket elérni közvetlenül a FreeBSD committer's mailing list címére küldött e-maillel.
Ha a FreeBSD Projekt egy vállalat lenne, akkor a FreeBSD Core Teamje (irányító csoportja) foglalná magában a vezetőséget. Ennek a csoportnak elsődleges feladata, hogy fenntartsa a Projekt egészének kondícióját és gondoskodjon róla, hogy a megfelelő irányba haladjon. Az irányító csoportnak ugyanígy feladata a megbízható és odaadó committerek tömörítése és az új tagok beszervezése, ha a csoportból kilépne valaki. A jelenlegi Core Team tagjait 2008 júliusában választották meg. A választásokat kétévente tartják.
Ebben a csoportban egyes tagoknak ezenfelül még bizonyos területekre felügyelniük is kell. Ez azt jelenti, hogy felelősek a rendszer valamelyik nagyobb részének az előírásoknak megfelelő működéséért. A FreeBSD fejlesztők teljes felsorolása és a hozzájuk tartozó területek megtalálhatóak A résztvevők listjában.
Megjegyzés: A Core Team legtöbb tagja pusztán önkéntesen vesz részt a FreeBSD fejlesztésében és nem származik a projektből semmilyen anyagi haszna. Emiatt a “részvétel” nem tévesztendő össze a “garantált támogatással”. A “vezetőségre” vonatkozó hasonlat nem teljesen pontos abban az értelemben, hogy ezek az emberek tulajdonképpen egy kívülálló szempontjából ésszerűtlen döntést hoztak azzal, hogy a FreeBSD támogatására áldozták az életüket!
Végül, de nem utoljára, következzen a fejlesztők legnagyobb csoportja: ők maguk a felhasználók, akik rendszeres visszajelzéseket és hibajavításokat küldenek. A FreeBSD kevésbé központosított fejlesztésében elsősorban a FreeBSD technical discussions levelezési lista segítségével lehet felvenni a fonalat, ahol ezeket a témákat tárgyalják meg. A FreeBSD-hez kapcsolódó különféle levelezési listákról többet a C Függelékben olvashatunk.
A FreeBSD résztvevőinek listája hosszú és még most is növekszik; miért nem próbálunk mi is visszaadni valamit a FreeBSD-nek?
Nem csak programozással lehet segíteni a Projektet: a megoldandó feladatok listáját megtalálhatjuk a FreeBSD Projekt honlapján.
Röviden összefoglalva, a fejlesztési modellünk egymáshoz lazán kapcsolódó koncentrikus körökként szerveződik. Ez a központosított modell a FreeBSD-felhasználók kényelmét szolgálandó lett kialakítva, akik így könnyedén tudnak követni egyetlen központi kódbázist, azonban megvan a lehetőségük a részvételre is! Minden vágyunk egy olyan megbízható operációs rendszer kialakítása, amihez nagy mennyiségű könnyen telepíthető és használható alkalmazás tartozik — ez a modell ennek elérésére nagyon is megfelelő.
A haladás ütemének fenntartása érdekében mindössze csak annyit kérünk a leendő FreeBSD fejlesztőinktől, hogy legyenek legalább annyira elszántak, mint a jelenlegi tagjaink!
A FreeBSD egy szabadon elérhető, teljes forráskóddal érkező 4.4BSD-Lite alapú kiadás Intel i386™, i486™, Pentium®, Pentium Pro, Celeron®, Pentium II, Pentium III, Pentium 4 (vagy azzal kompatibilis), Xeon™, DEC Alpha és Sun UltraSPARC alapú számítógépekre. Elsősorban a Berkeley Számítógépes rendszerek kutatócsoportjának szoftverein alapszik, számos javítással a NetBSD, OpenBSD, 386BSD és a Szabad Szoftver Alapítvány munkásságának köszönhetően.
A FreeBSD 2.0 1994 végi megjelenése óta a FreeBSD teljesítménye, megbízhatósága és tudása drasztikusan megnövekedett. A legnagyobb változtatás az újjáalakított, összevont VM/állomány puffer gyorsítótárral rendelkező virtuális memória alrendszer, amely nem csak a teljesítményt növeli, hanem csökkenti a FreeBSD memóriaigényét is, jobban elfogadhatóvá téve ezzel az 5 MB-os minimumot. A további fejlesztések között találjuk a teljes NIS szerver és kliens támogatást, az átviteli TCP támogatását, az igény szerint tárcsázó PPP-t, a beépített DHCP támogatást, a továbbfejlesztett SCSI alrendszert, az ISDN támogatást, az ATM, FDDI, Fast és Gigabit Ethernet (1000 Mbit) hálózati csatolók támogatását, a legfrissebb Adaptec gyártmányú vezérlők fejlesztett támogatását és a többezernyi hibajavítást.
Az alapeszközök mellé a FreeBSD felkínálja többezernyi ismert és keresett program portjaiból álló gyűjteményét. Ebben a pillanatban is már több, mint 20 000 port érhető el! A portok listája a HTTP (WWW) szerverektől, a játékokon, nyelveken és sok mindenen keresztül a szövegszerkesztőkig terjed. Az egész Portgyűjtemény közelítőleg 417 MB tárhelyet kíván, minden portot az eredeti forráshoz viszonyított “különbségként” tárol. Ennek következtében a portok frissítése sokkal könnyebb és nagyban csökkenti a korábbi, 1.0-ás Portgyűjteménynél kialakult tárigényeket. Egy port lefordításához egyszerűen csak be kell lépnünk a telepíteni kívánt program könyvtárába és ki kell adnunk a make install parancsot, a többit a rendszer elvégzi. Minden egyes telepítendő port teljes forrása dinamikusan vagy CD-ről vagy pedig FTP-n keresztül töltődik le, így csak a ténylegesen telepítendők lefordításához elegendő tárhelyre van szükség. Majdnem mindegyik port elérhető előre lefordított “csomag” formájában azok számára, akik nem kívánják lefordítani a portokat, és melyeket egy egyszerű parancs (pkg_add) segítségével telepíteni is tudják. A csomagokról és portokról a 4 fejezetben tudhatunk meg többet.
A FreeBSD telepítéséről és használatáról most már számos további nagyon hasznos dokumentumot találhatunk bármelyik FreeBSD-s számítógép /usr/share/doc könyvtárában. A helyileg telepített kézikönyveket bármilyen HTML-t megjeleníteni képes böngészővel el tudjuk olvasni az alábbi URL-eken:
Az aktuális (leginkább frissített) verziók megtekinthetőek a http://www.FreeBSD.org/ címen.
A FreeBSD telepítéséhez egy könnyen használható szöveges telepítőprogram, a sysinstall használható. Ez a FreeBSD alapértelmezett telepítőprogramja, habár ezt a különféle gyártók kedvük szerint lecserélhetik. Ebben a fejezetben bemutatjuk a FreeBSD sysinstall segítségével történő telepítését.
A fejezet elolvasása során megismerjük:
hogyan készítsünk telepítőlemezeket a FreeBSD-hez;
a FreeBSD miként hivatkozza és osztja fel a merevlemezeinket;
hogyan indítsuk el a sysinstall programot;
milyen kérdéseket tesz fel nekünk a sysinstall, mire gondol, hogyan is kell azokat megválaszolni.
A fejezet elolvasásához ajánlott:
a telepítendő FreeBSD verzióhoz tartozó támogatott hardvereket felsoroló lista átolvasása és benne a saját hardvereszközeink megkeresése.
Megjegyzés: Általánosan elmondható, hogy a most következő telepítési utasítások az i386 (“PC kompatibilis”) architektúrájú számítógépekre vonatkoznak. Ahol erre szükség van, ott más platformokra vonatkozó utasítások is szerepelhetnek. Habár ezt a leírás igyekszünk a lehető legjobban naprakészen tartani, elképzelhető, hogy felfedezhetünk kisebb eltéréseket a telepítőben és az itt leírtak közt. Ezért ezt a fejezetet inkább egy általános útmutatónak javasoljuk, nem pedig egy szó szerint értelmezendő kézikönyvként.
A FreeBSD telepítéséhez szükséges minimális konfiguráció FreeBSD verziónként és architektúránként eltérő.
A minimális konfigurációt a FreeBSD honlapján a kiadásokról szóló oldalon, az “Installation Notes” részben találhatjuk meg. Ezt a következő szakaszokban foglaljuk össze. A FreeBSD telepítésének módszerétől függően szükségünk lehet egy hajlékonylemezes (floppy) vagy CD-ROM meghajtóra, esetleg egy hálózati kártyára. Ezt a 2.3.7 Szakaszban tárgyaljuk.
A FreeBSD/i386 és FreeBSD/pc98 egyaránt egy 486 vagy jobb processzort és legalább 24 MB memóriát igényel. A legkisebb telepítéshez legalább 150 MB szabad lemezterület szükséges.
Megjegyzés: Régebbi konfigurációk esetén nem egy gyorsabb processzor, hanem inkább több memória beszerzése, illetve több lemezterület felszabadítása a fontosabb.
Megjegyzés: Az Alpha támogatás a FreeBSD 7.0 beindulásával eltávolításra került. A FreeBSD 6.X sorozat az utolsó, amely valamilyen támogatást ajánl ehhez az architektúrához. Ezzel kapcsolatban részletesebben a kiadásokkal kapcsolatos információkat tartalmazó oldalon olvashatunk a FreeBSD honlapján.
Két típusú processzor képes futtatni a FreeBSD/amd64 verzióját. Az első ezek közül az AMD64 processzorok, beleértve az AMD Athlon™64, AMD Athlon64-FX, AMD Opteron™ vagy újabb processzorokat.
A FreeBSD/amd64 verzióját kihasználni képes processzorok másik csoportja az Intel EM64T architektúrájára épülő processzorok. Ilyen processzor például az Intel Core™ 2 Duo, Quad és Extreme processzorcsaládok, valamint az Intel Xeon 3000, 5000 és 7000 sorozatszámú processzorai.
Ha nVidia nForce3 Pro-150 alapú géppel rendelkezünk, ki kell kapcsolnunk a BIOS-ban az IO APIC használatát. Ha nem találnánk ilyen beállítást, akkor helyette magát az ACPI-t kell kikapcsolnunk. A Pro-150 chipsetnek vannak bizonyos hibái, amelyekre eddig még nem sikerült megfelelő megoldást találnunk.
A FreeBSD/sparc64 telepítéséhez egy támogatott platformra van szükségünk (lásd: 2.2.2 Szakasz).
A FreeBSD/sparc64 telepítéséhez egy egész lemezre lesz szükségünk, mivel a rendszer jelenleg nem képes megosztani azt más operációs rendszerekkel.
A FreeBSD minden kiadásához mellékelik a támogatott hardverek listáját “FreeBSD Hardware Notes” címmel. Ez a dokumentum többnyire a HARDWARE.TXT nevű állomány, amelyet a rendszer CD-n vagy FTP-n keresztül elérhető változatának gyökerében vagy a sysinstall dokumentációkat tartalmazó menüjében találhatunk meg.
A FreeBSD telepítése előtt érdemes összeszedni, pontosan mi minden is található a számítógépünkben. A FreeBSD telepítőrutinjai mutatni fogják a különböző komponensek (merevlemezek, hálózati kártyák, CD-meghajtók és a többi) modelljét és gyártóját. A FreeBSD ezenkívü megpróbálja kideríteni a megjelenő eszközök pontos konfigurációját is, beleértve a használt IRQ és IO portok kiosztását. A PC-s hardverek különféle szeszélyei miatt azonban ez az iménti folyamat nem minden esetben megbízható, ezért előfordulhat, hogy helyesbíteni kell a FreeBSD által megállapított értékeket.
Ha már van a gépünkön egy másik operációs rendszer, például Windows vagy Linux, akkor mindenképpen hasznos lehet az általa felkínált eszközökkel lekérdezni a hardvereink beállításait. Ha nem lennénk biztosak benne, hogy az adott bővítőkártyákat pontosan milyen beállításokkal is használjuk, nézzük meg ezeket magán a kártyán. A népszerű IRQ értékek általában a 3, 5 és 7, valamint az IO portok számát általában tizenhatos számrendszerben szerepeltetik, például 0x330.
Javasoljuk, hogy nyomtassuk ki vagy írjuk le ezeket a paramétereket a FreeBSD telepítése előtt. Ehhez rendezzük ezeket egy táblázatban, valahogy így:
Táblázat 2-1. Példa egy eszközleltárra
Eszköz neve | IRQ | IO portok | Megjegyzés |
---|---|---|---|
Első merevlemez | - | - | Mérete 40 GB, gyártmánya Seagate, elsődleges IDE master |
CD-ROM meghajtó | - | - | Elsődleges IDE slave |
Második merevlemez | - | - | Mérete 20 GB, gyártmánya IBM, másodlagos IDE master |
Első IDE vezérlő | 14 | 0x1f0 | |
Hálózati kártya | - | - | Intel 10/100 |
Modem | - | - | 3Com® 56K-s faxmodem, COM1 |
… |
Ahogy elkészítettük a számítógépünk alkatrészeit tartalmazó listát, vessük ezeket össze a telepítendő FreeBSD kiadás által megkövetelt eszközökkel.
Amennyiben a FreeBSD telepítéséhez használt számítógép számunkra értékes adatokat tárol, igyekezzünk lementeni ezeket, és a FreeBSD tényleges telepítése előtt győződjünk is meg róla, hogy a mentés sikeres volt. A FreeBSD telepítőrutinjai természetesen megerősítést fognak kérni bármilyen adat lemezre írása előtt, azonban ha egyszer már elindítottuk a folyamatot, már semmit sem tudunk visszafordítani.
Ha a FreeBSD telepítéséhez az egész merevlemezünket fel akarjuk használni, akkor még nincs miért izgatnunk magunkat — nyugodtan átléphetjük ezt a szakaszt.
Amikor viszont a FreeBSD-t más operációs rendszerek mellé szeretnénk telepíteni, ismernünk kell, miként is helyezkednek el az adatok a lemezeken, és hogy ez miként is érint bennünket.
A PC-k által használt lemezek különálló darabokra tagolhatóak. Ezeket a darabokat partícióknak nevezzük. Mivel azonban a FreeBSD maga is tárol partíciókat, ezért ez az elnevezés pillanatok alatt megtévesztővé válhat, ezért ezeket a lemezdarabokat a FreeBSD lemezslice-oknak vagy egyszerűen csak slice-oknak hívja. Például a PC-s lemezpartíciókkal dolgozó, fdisk nevű FreeBSD-s segédprogram partíciók helyett is slice-okra hivatkozik. A PC lemezenként alapvetően csak négy partíciót enged meg. Ezeket a partíciókat nevezik elsődleges partícióknak. Ettől a korlátozástól egy új típus, a kiterjesztett partíció létrehozásával szabadultak meg, amivel így négynél több partíció is készíthető. Lemezenként egyetlen ilyen kiterjesztett partíció található, de ezen belül speciális, ún. logikai partíciók hozhatóak létre.
Minden partíciónak van egy partíció-azonosítója, melyet a partíción található adatok típusának megállapítására használnak. A FreeBSD partícióinak azonosítója a 165.
Általánosságban véve minden operációs rendszer így azonosítja a partíciókat. Például a DOS és annak leszármazottai, mint például a Windows, minden elsődleges és logikai partícióhoz egy C:-től induló meghajtó-betűjelet társít.
A FreeBSD-t egy elsődleges partícióra kell telepíteni. A FreeBSD az összes adatát, beleértve minden általunk létrehozott állományt is, ezen az egyetlen partíción fogja elhelyezni. Ha viszont több lemezünk van, többen is, vagy akár mindegyiken létrehozhatunk FreeBSD-s partíciókat. A FreeBSD telepítésekor azonban legalább egy ilyen partíciónak használhatónak kell lennie. Ez lehet előre megtisztított üres partíciói is, vagy akár egy olyan partíció, amelyen már nem használt adatok vannak.
Ha már mindegyik partíciónk betelt, akkor a többi operációs rendszer által felkínált eszközök (például MS-DOS-ban vagy Windows-ban az fdisk) valamelyikével először fel kell közülük szabadítanunk egyet a FreeBSD számára.
Amennyiben akadna egy használható partíció, akkor használjuk azt. Ekkor azonban előfordulhat, hogy ehhez először a meglévők közül össze kell majd zsugorítanunk valamelyiket.
A FreeBSD legkisebb telepíthető változata nagyjából 100 MB lemezterületet igényel. Azonban ez egy nagyon kicsi változat és szinte semmi helyet nem hagy a saját állományainknak. Sokkal valósághűbb, ha grafikus felület nélkül nagyjából 250 MB-ot mondunk, és legalább 350 MB-ot a grafikus felület használata esetén. Ha ezeken felül további szoftvereket is telepíteni kívánunk, még több helyre lesz szükségünk.
Amikor a FreeBSD számára akarunk helyet csinálni, vagy partíciókat akarunk átméretezni, használjuk például a PartitionMagic® nevű kereskedelmi szoftvert, vagy esetleg egy olyan szabad szoftvert, mint például a GParted. Ismereteink szerint a PartitionMagic és a GParted is használható az NTFS partíciókkal. A GParted számos live linuxos disztribúción megtalálható, ilyen többek közt a SystemRescueCD.
Gondok lehetnek azonban a Microsoft Vista által használt partíciókkal. Ezért nem árt, ha az átméretezésekor a kezünk ügyében van a Vista telepítő CD-je. Természetesen, mint minden lemezkarbantási művelet esetén, ilyenkor is határozottan ajánlott biztonsági mentéseket készíteni.
Figyelem: Az említett eszközök helytelen használata megsemmisítheti a lemezeinken tárolt adatokat, ezért a használatuk előtt gondoskodjunk friss, működőképes biztonsági mentésekről.
Példa 2-1. Meglevő partíció használata a méret megváltoztatása nélkül
Tegyük fel, hogy a számítógépünkben egyetlen 4 GB méretű lemez van, amelyen megtalálható a Windows valamelyik verziója, és ezt a lemezt korábban két, egyaránt 2 GB méretű meghajtóra osztottuk, a C:-re és D:-re. 1 GB adatunk van a C: meghajtón és fél GB a D:-n.
Mindez tehát azt jelenti, hogy a lemezünkön két partíció található, betűjelenként egy. Ha átmásoljuk a D: meghajtón levő adatainkat a C: meghajtóra, akkor ezzel felszabadíthatjuk a FreeBSD számára a második partíciót.
Példa 2-2. Meglevő partíció zsugorítása
Tegyük fel, hogy a számítógépünkben egyetlen 4 GB méretű lemez van, amelyet teljes egészében a Windows valamelyik példánya foglal el. A Windows telepítése során ezért minden bizonnyal egyetlen nagy partíciót hoztunk létre, amely a C: betűjelet kapta és a mérete 4 GB. Jelen pillanatban másfél GB helyet használunk a lemezen, és szeretnénk a FreeBSD számára 2 GB helyet felszabadítani.
A FreeBSD telepítéséhez a következők valamelyikét kell tennünk:
Mentsük le a Windows-os adatainkat, telepítsük újra a Windows-t úgy, hogy egy 2 GB méretű partíciót választunk neki a telepítése során.
A partíció összezsugorítására használjuk az előbb említett alkalmazásokat, például a PartitionMagic-et.
Amennyiben a FreeBSD telepítésének részeként hálózatra is szándékozunk csatlakozni (például egy FTP vagy NFS szerverről akarunk telepíteni), ismernünk kell a hálózatra vonatkozó beállításainkat is. A telepítő rá fog kérdezni ezekre az információkra, amelyek megadása után a FreeBSD a telepítés befejezéséhez csatlakozni tud majd a hálózatra.
Ha egy Ethernet-hálózathoz, vagy magához az internethez csatlakozunk egy DSL- vagy kábelmodemen keresztül, akkor az alábbi adatokra lesz szükségünk:
IP-cím
Az alapértelmezett átjáró IP-címe
A gépünk neve
DNS (névfeloldó) szerverek IP-címei
Hálózati maszk
Ha nem ismerjük ezeket, érdeklődjünk a rendszergazdától vagy a szolgáltatónktól. Elképzelhető az is, hogy mindezen információkat DHCP segítségével, automatikusan kapjuk meg. Ezt is mindenképpen jegyezzük fel.
Ha az internet-szolgáltatónkhoz hagyományos modemen keresztül csatlakozunk, akkor is tudjuk telepíteni a FreeBSD-t interneten keresztül, azonban ez nagyon sokáig tarthat.
Ehhez tudnunk kell:
Az internet-szolgáltatónk behívószámát
A soros (COM) port számát, amelyen keresztül a modem kapcsolódik a gépünkhöz
Az internet-szolgáltatónktól kapott felhasználói nevet és jelszót
Habár a FreeBSD Projekt igyekszik a FreeBSD minden egyes kiadását a lehető legmegbízhatóbban felkészíteni, hibák óhatatlanul is maradnak bennük. Nagyon ritka esetekben ezek a hibák magára a telepítés folyamatára is kihathatnak. Amint ezeket a problémákat sikerül felderíteni és javítani, rögvest megjelennek a FreeBSD honlapján található hibajegyzékben (angolul). A telepítés előtt ezért mindig ajánlott átolvasni ezt a dokumentumot, így megbizonyosodunk róla, hogy semmilyen utólag felmerült probléma nem akadályozza munkánkat.
Az összes kiadáshoz tartozó információ, beleértve az egyes kiadások hibajegyzékeit is, a FreeBSD honlapjáról a kiadásokra vonatkozó információkat tartalmazó részen érhető el (angolul).
A FreeBSD telepítése az alábbi helyek bármelyikén megtalálható állományok felhasználásával történik:
Lokálisan:
CD vagy DVD
Ugyanazon a számítógépen levő MS-DOS partíció
Pendrive (USB-flash-tároló)
SCSI- vagy QIC-szalag
Floppylemezek
Hálózaton keresztül:
FTP oldalról, tűzfalon keresztül vagy szükség szerint HTTP proxy használatával
NFS szerverről
Párhuzamos vagy soros vonali kapcsolaton keresztül
Ha megvásároltuk a FreeBSD telepítő CD-jét vagy DVD-jét, akkor már mindennel rendelkezünk a telepítéshez. Lépjünk bátran tovább a következő szakaszra (2.3.7 Szakasz)!
Ha eddig még nem szereztük volna be a FreeBSD telepítéséhez szükséges állományokat, ugorjunk a 2.13 Szakaszhoz, ahol megtudhatjuk, hogyan készítsük elő a FreeBSD telepítését az imént felsorolt helyzetekben. A szakasz elolvasása után pedig jöjjünk vissza ide, majd folytassuk az olvasást a 2.3.7 Szakaszban.
A FreeBSD telepítése úgy kezdődik, hogy a számítógépünkkel a FreeBSD telepítőjét indítjuk el — ez viszont nem egy olyan program, amit más operációs rendszerben el tudunk indítani. A számítógépünk általában a merevlemezünkre telepített operációs rendszert indítja el, azonban beállítható úgy is, hogy az indulásához egy ún. “rendszerindító” (bootolható) floppy lemezt használjon. Napjaink számítógépei azonban a CD-meghajtóban levő CD-kről vagy USB lemezről is el tudnak indulni.
Tipp: Ha CD-n vagy DVD-n megvan a FreeBSD telepítője (akár megvettük, akár éppen magunk készítettük) és a számítógépünk tud CD-ről vagy DVD-ről rendszert indítani (a BIOS-ban van egy “Boot Order” vagy hozzá hasonló nevű beállítás), akkor kihagyhatjuk ezt a szakaszt. A FreeBSD CD- és DVD image-ek kiírásával egy rendszerindításra alkalmas lemezt kapunk, amiről minden további előkészület nélkül telepíthetünk.
Rendszerindításra alkalmas pendrive-ot az alábbi lépések mentén tudunk készíteni:
Az image állomány letöltése
A pendrive-okhoz készült image állományok a ISO-IMAGES/ könyvtárból tölthetőek le, ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/architektúra/ISO-IMAGES/verzió/FreeBSD-8.1-RELEASE-architektúra-memstick.img néven. Az architektúra és verzió helyére a telepítendő architektúrát és verziószámot helyettesítsük be. Ennek megfelelően tehát például a FreeBSD/i386 8.1-RELEASE változata a ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.1/FreeBSD-8.1-RELEASE-i386-memstick.img címről érhető el.
A pendrive image .img kiterjesztéssel rendelkezik. A ISO-IMAGES/ könyvtár általában több különféle állományt tartalmaz, ezek közül kell választanunk a FreeBSD telepítendő változatának, és sok esetben a telepítéshez rendelkezésre álló hardver típusának megfelelően.
Fontos: A következő lépés megkezdése előtt készítsünk biztonsági mentést a pendrive tartalmáról, mivel minden rajta levő adat törlődni fog.
A pendrive előkészítése
Figyelem: Az itt található példában a rendszerindításhoz és így a művelet végrehajtásához a /dev/da0 nevű eszközt fogjuk használni. Ezt ne felejtsük el helyettesíteni a rendszerünkön erre a célra használt eszköz nevével, máskülönben kárt tehetünk az adatainkban.
A kern.geom.debugflags
változó értékének
megfelelő beállításával
engedélyezzük a céleszközön a
Master Boot Record írását.
# sysctl kern.geom.debugflags=16
Az image pendrive-ra írása
Az .img kiterjesztésű állományt nem egyszerűen a pendrive-ra kell másolni, ez a lemez teljes tartalmát magában foglalja. Ennek megfelelően nem egyszerűen állományokat kell másolnunk az egyik lemezről a másikra. Helyette a dd(1) parancs segítségével írjuk az image állomány tartalmát közvetlenül a lemezre.
# dd if=FreeBSD-8.1-RELEASE-i386-memstick.img of=/dev/da0 bs=64k
Rendszerindításra alkalmas floppy lemezt az alábbi lépések mentén tudunk készíteni:
A rendszerindító lemezek image-einek beszerzése
Fontos: A FreeBSD 8.0 kiadásától kezdődően megszűnik a floppy lemezek támogatása. Helyette telepítsünk pendrive-ról, amelyről fentebb olvashatunk, vagy egyszerűen használjunk CD-t vagy DVD-t.
A rendszerindító lemezek a telepítőeszköz floppies/ könyvtárában találhatóak, illetve letölthetőek az ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/architektúra/változat-RELEASE/floppies/ helyről. Az architektúra és változat helyére természtesen írjuk be a telepíteni kívánt architektúrát és verziót. Így például a FreeBSD/i386 8.1-RELEASE rendszerindító lemezei az ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/8.1-RELEASE/floppies/ címről érhetőek el.
A floppyk image-ei .flp kiterjesztésűek. A floppies/ könyvtár számos különféle image-et tartalmaz, ezek közül leginkább a telepítendő FreeBSD változat, valamint emellett olykor konkrétan a hardver határozza meg a használandót. Az esetek túlnyomó részében négy floppyra lesz szükségünk: boot.flp, kern1.flp, kern2.flp és kern3.flp. A lemezek image-eit illető legfrissebb információkat ugyanazon a könyvtáron belül szereplő README.TXT állományban olvashatjuk (angolul).
Fontos: Az FTP-hez használt programunkat az image-ek letöltése során ne felejtsük el bináris (binary) átviteli módban használni. Egyes böngészők hajlamosak ugyanis szöveges (text vagy ASCII) átviteli módot használni, ami viszont csak abból vehető észre, hogy nem tudjuk a lemezekről elindítani a rendszert.
A floppyk előkészítése
Mindegyik letöltendő image-hez elő kell készíteni egy-egy hajlékonylemezt. Nagyon fontos, hogy ezek a lemezek teljesen hibátlanok legyenek. Erről a legkönnyebben úgy győződhetünk meg, ha a lemezeket magunk formázzuk, és nem bízunk a különféle előreformázott (preformatted) floppykban. A Windows-ban található formázó segédprogram sem árul el nekünk semmit a lemezeken található hibás részekről, egyszerűen csak “rossznak” (bad) jelöli meg és figyelmen kívül hagyja ezeket. Határozottan ajánljuk, hogy amennyiben a telepítésnek ezt a módját választjuk, mindig használjunk teljesen új floppykat.
Fontos: Ha megpróbáljuk telepíteni a FreeBSD-t, és a telepítőprogram összeomlik, lefagy vagy bármilyen furcsaságot művel, elsőként mindenképpen a floppykra gyanakodhatunk. Ilyenkor írjuk ki az image-eket új lemezekre és próbálkozzunk újra a telepítéssel.
Az image állományok írása a floppykra
Az .flp kiterjesztésű állományok nem a lemezre másolható hagyományos állományok, hanem a lemezek teljes tartalmának képei, ezért ezeket egyszerűen nem másolhatjuk egyik lemezről a másikra. Az image-ek közvetlen lemezreírásához ehelyett kifejezetten erre a célra alkalmas eszközöket kell használnunk.
Azok számára, akik a floppykat MS-DOS/Windows rendszerű számítógépeken kívánják elkészíteni, mellékeltünk egy fdimage nevű segédprogramot.
Ha a CD-meghajtónk betűjele például E: és a telepítő CD-n található image-eket szeretnénk kiírni vele, akkor ezt a parancsot kell kiadnunk:
E:\> tools\fdimage floppies\boot.flp A:
Ezután ismételten adjuk ki az iménti parancsot minden egyes használni kívánt .flp állományra, azonban előtte mindig tegyünk be egy újabb floppyt, és a ráírt image-ek neveivel folyamatosan címkézzük fel a lemezeket. A megadott parancsot természetesen mindig írjuk át a konkrét .flp állományok tényleges elérési útvonalainak megfelelően. Ha nincs CD-nk, akkor az fdimage programot az FreeBSD FTP oldalán található tools könyvtárból is letölthetjük.
Amikor a lemezeket egy UNIX rendszeren készítenénk el (például egy másik FreeBSD rendszeren), akkor a dd(1) parancs is használható az image állományok közvetlen lemezreírásához. FreeBSD alatt így néz ki a paraméterezése:
# dd if=boot.flp of=/dev/fd0
FreeBSD-n a /dev/fd0 az első hajlékonylemezes meghajtóra hivatkozik (tehát az A: betűjelű meghajtóra). Ennek megfelelően a /dev/fd1 jelenti a B: meghajtót és így tovább. Más UNIX változatok esetleg más neveket használhatnak a hajlékonylemezes meghajtók megnevezésére, ezért erről érdemes ilyenkor tájékozódni az adott rendszerhez tartozó dokumentációban.
Most már készen állunk a FreeBSD telepítésére!
Fontos: Alapértelmezés szerint a telepítés egészen addig nem fog semmit sem írni a lemezekre, amíg a következő üzenet fel nem bukkan:
Last Chance: Are you SURE you want continue the installation? If you're running this on a disk with data you wish to save then WE STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding! We can take no responsibility for lost disk contents!A szöveg fordítása:
Utolsó esély: BIZTOSAN folytatni kívánja a telepítést? Ha olyan lemezre szeretne telepíteni, amelyen fontos adatok találhatóak, HATÁROZOTTAN JAVASOLJUK, hogy a továbblépés előtt KÉSZÍTSEN RÓLUK MEGBÍZHATÓ BIZTONSÁGI MÁSOLATOT! Nem vállalunk semmilyen felelősséget az elveszett adatokért!A telepítőből tehát a fenti, végső figyelmeztetés előtt bármikor ki lehet lépni anélkül, hogy a merevlemezünkön levő adatokat veszélyeztetnénk. Ha úgy érezzük, hogy valamit véletlenül rosszul állítottunk volna be a telepítés során, ekkor még minden komolyabb kár okozása nélkül kikapcsolhatjuk a számítógépünket.
Kezdjünk egy kikapcsolt számítógéppel.
Kapcsoljuk be a számítógépet. Az indulása során látnunk kell egy olyan opciót, amivel be tudunk lépni a rendszer beállításait tartalmazó menübe, avagy a BIOS-ba. Ezt többnyire a F2, F10, Del vagy a Alt+S lenyomásával érhetjük el. Ezek közül használjuk a képernyőn megjelenő billentyűket. Előfordulhat, hogy induláskor a számítógépünk semmilyen szöveget, csak egy képet mutat. Ilyenkor általában a Esc billentyű megnyomására eltűnik a kép és láthatóvá válnak a számunkra fontos üzenetek.
Miután beléptünk a menübe, keressük meg azt a beállítást, amely a rendszerindításhoz használt eszközt határozza meg. Ennek a neve sokszor “Boot Order” (rendszerindítási sorrend) vagy valami hozzá hasonló. Itt mindenféle eszköz felsorolását találjuk: Floppy, CDROM, First Hard Disk (első merevlemezes meghajtó) és így tovább.
Ha CD-ről akarjuk a telepítést elindítani, akkor akkor a CDROM eszközt válasszuk. Ha bármilyen kétség merülne fel bennünk, keressük meg ezt a beállítást a számítógéphez és/vagy az alaplaphoz kapott kézikönyvben.
Igényeink szerint végezzük el a beállítást, majd mentsük el és lépjünk ki. Most indítsuk újra a számítógépet.
Ha a 2.3.7 Szakaszban leírtak szerint rendszerindító pendrive-ot készítettünk, akkor bekapcsolás előtt csatlakoztassuk a számítógéphez.
Ha CD-ről indítjuk a telepítést, akkor kapcsoljuk be a számítógépet és az elindulása után igyekezzünk minél hamarabb betenni a lemezt a meghajtóba.
Megjegyzés: A FreeBSD 7.3 és az azt megelőző változatokban a 2.3.7 Szakaszban leírtak szerint előkészített floppy-ról is el tudjuk kezdeni a telepítést. Ezek egyike lesz az első rendszerindító lemez, a boot.flp. Helyezzük ezt a lemezt a meghajtóba, és indítsuk el vele a számítógépet.
Ha minden próbálkozásunk ellenére a számítógépünk a megszokott módon indul és a meglevő operációs rendszert tölti be, akkor a következőkkel lehet a gond:
A lemezeket nem raktuk be eléggé korán. Hagyjuk benn ezeket és próbáljuk meg ismét újraindítani a számítógépet.
Nem állítottuk be jól a BIOS-t. Próbáljuk meg egészen addig újra végrehajtani az előző lépést, amíg a megfelelő beállítást el nem találjuk.
A BIOS nem támogatja a kiválasztott eszközről történő rendszerindítást.
A FreeBSD megkezdi az indulását. Ha CD-ről indítjuk, akkor valami ehhez hasonlót fogunk látni (a konkrét verzióra vonatkozó adatokat itt most kihagytuk):
Booting from CD-Rom... 645MB medium detected CD Loader 1.2 Building the boot loader arguments Looking up /BOOT/LOADER... Found Relocating the loader and the BTX Starting the BTX loader BTX loader 1.00 BTX version is 1.02 Console: internal video/keyboard BIOS CD is cd0 BIOS drive C: is disk0 BIOS drive D: is disk1 BIOS 639kB/261056kB available memory FreeBSD/i386 bootstrap loader, Revision 1.1 Loading /boot/defaults/loader.conf /boot/kernel/kernel text=0x64daa0 data=0xa4e80+0xa9e40 syms=[0x4+0x6cac0+0x4+0x88e9d] \
Amikor floppyról indítjuk a rendszert, ehhez hasonlóval találkozhatunk (itt sem szerepelnek most verzióadatok):
Booting from Floppy... Uncompressing ... done BTX loader 1.00 BTX version is 1.01 Console: internal video/keyboard BIOS drive A: is disk0 BIOS drive C: is disk1 BIOS 639kB/261120kB available memory FreeBSD/i386 bootstrap loader, Revision 1.1 Loading /boot/defaults/loader.conf /kernel text=0x277391 data=0x3268c+0x332a8 | Insert disk labelled "Kernel floppy 1" and press any key...
Kövessük a képernyőn megjelenő utasítást (“Helyezze be a "Kernel floppy 1" címkéjű lemezt és nyomjon meg egy billentyűt...”), tehát vegyük ki a boot.flp image-hez tartozó lemezt és tegyük be helyette a kern1.flp image-hez tartozó lemezt, majd nyomjuk le az Enter billentyűt. Várjuk meg amíg a rendszer megkezdi az indulást az első lemezről, majd az utasításoknak megfelelően folyamatosan tegyük be a soron következő lemezeket.
Miután elindítottuk a rendszert CD-ről, pendrive-ról vagy floppy-ról, a rendszerindítási folyamat be fogja hozni a FreeBSD rendszertöltőjének menüjét:
Várjuk ki a tíz másodperces szünetet vagy egyből nyomjuk le az Enter billentyűt.
A legtöbb SPARC64® alapú rendszert úgy állították be, hogy automatikusan lemezről induljon. A FreeBSD telepítéséhez azonban hálózaton keresztül vagy CD-ről kell indítanunk a rendszert, ezért módosítanunk kell a PROM (az OpenFirmware) beállításait.
Mindehhez indítsuk újra a rendszert és várjuk meg, amíg feltűnik a rendszerindító üzenet. A konkrét üzenet nagyban függ a számítógép típusától, azonban valami ilyesmi lesz:
Sun Blade 100 (UltraSPARC-IIe), Keyboard Present Copyright 1998-2001 Sun Microsystems, Inc. All rights reserved. OpenBoot 4.2, 128 MB memory installed, Serial #51090132. Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4.
Amikor megpróbálja a rendszert elindítani a lemezről, a PROM parancssorának bekéréshez nyomjuk le a billentyűzeten az L1+A vagy a Stop+A billentyűket, esetleg a soros konzolon keresztül küldjünk egy BREAK parancsot (például a tip(1) vagy cu(1) man oldalakon szereplő ~# parancs használatával). Körülbelül így néz ki:
ok ok {0}
Most helyezzük a CD-t a meghajtóba, és a PROM parancssorában pedig gépeljük be boot cdrom parancsot.
A képernyőn megjelenő utolsó pár száz sor mindig eltárolódik, később tetszőlegesen átvizsgálhatóak.
A puffer tartalmának átnézéséhez nyomjuk le a Scroll Lock billentyűt, amivel bekapcsoljuk a korábban megjelent üzenetek közti visszalépést. Itt a nyílbillentyűk, vagy a PageUp és PageDown billentyűk használhatóak a kiírások átböngészéséhez. A Scroll Lock ismételt lenyomásával kiléphetünk ebből a módból.
Tegyük most mi is ezt, és nézzük az összes olyan üzenetet, amely a rendszermag indulása során keletkezett. A 2-2 Ábraban látható szövegekhez hasonlóakat fogunk találni, habár ez a számítógépben található konkrét eszközöktől függően eltérő lehet.
Ábra 2-2. Példa az eszközkeresés eredményeire
avail memory = 253050880 (247120K bytes) Preloaded elf kernel "kernel" at 0xc0817000. Preloaded mfs_root "/mfsroot" at 0xc0817084. md0: Preloaded image </mfsroot> 4423680 bytes at 0xc03ddcd4 md1: Malloc disk Using $PIR table, 4 entries at 0xc00fde60 npx0: <math processor> on motherboard npx0: INT 16 interface pcib0: <Host to PCI bridge> on motherboard pci0: <PCI bus> on pcib0 pcib1:<VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0 pci1: <PCI bus> on pcib1 pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11 isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0 isa0: <iSA bus> on isab0 atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0 ata0: at 0x1f0 irq 14 on atapci0 ata1: at 0x170 irq 15 on atapci0 uhci0 <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci 0 usb0: <VIA 83572 USB controller> on uhci0 usb0: USB revision 1.0 uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr1 uhub0: 2 ports with 2 removable, self powered pci0: <unknown card> (vendor=0x1106, dev=0x3040) at 7.3 dc0: <ADMtek AN985 10/100BaseTX> port 0xe800-0xe8ff mem 0xdb000000-0xeb0003ff ir q 11 at device 8.0 on pci0 dc0: Ethernet address: 00:04:5a:74:6b:b5 miibus0: <MII bus> on dc0 ukphy0: <Generic IEEE 802.3u media interface> on miibus0 ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xec00-0xec1f irq 9 at device 10. 0 on pci0 ed0 address 52:54:05:de:73:1b, type NE2000 (16 bit) isa0: too many dependant configs (8) isa0: unexpected small tag 14 orm0: <Option ROM> at iomem 0xc0000-0xc7fff on isa0 fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq2 on isa0 fdc0: FIFO enabled, 8 bytes threshold fd0: <1440-KB 3.5” drive> on fdc0 drive 0 atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0 atkbd0: <AT Keyboard> flags 0x1 irq1 on atkbdc0 kbd0 at atkbd0 psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: model Generic PS/@ mouse, device ID 0 vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 sc0: <System console> at flags 0x100 on isa0 sc0: VGA <16 virtual consoles, flags=0x300> sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0 sio0: type 16550A sio1 at port 0x2f8-0x2ff irq 3 on isa0 sio1: type 16550A ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 pppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode ppc0: FIFO with 16/16/15 bytes threshold plip0: <PLIP network interface> on ppbus0 ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master UDMA33 acd0: CD-RW <LITE-ON LTR-1210B> at ata1-slave PIO4 Mounting root from ufs:/dev/md0c /stand/sysinstall running as init on vty0
Figyelmesen olvassuk át az üzeneteket, és bizonyosodjuk meg róla, hogy a FreeBSD minden számunkra fontos eszközt felismert. Ha nem látunk egy eszközt, akkor azt valószínűleg nem találta meg. Egy saját rendszermag létrehozásával azonban fel tudunk ismertetni olyan eszközöket is, amelyek támogatása eredetileg nem szerepel a GENERIC rendszermagban. Ilyenek például a hangkártyák.
A FreeBSD 6.2 vagy későbbi változataiban az eszközök felkutatása után a 2-3 Ábraban láthatóak következnek. Itt a nyílbillentyűk segítségével választhatjuk ki az országot (country), térséget (region) vagy csoportot (group). Az Enter lenyomása után pillanatok alatt beállítódik az országunk. Ha meg akarjuk ismételni az iménti beállítást, pillanatok alatt ki tudunk lépni a sysinstall programból.
Ha országként
(Egyesült Államok) került beállításra, akkor a szabványos amerikai billentyűzet-kiosztás állítódik be. A többi ország esetében az alábbi menü jelenik meg. A kurzormozgató billentyűk segítségével ekkor keressük meg ki a számunkra megfelelő kiosztást, és az Enter billentyű lenyomásával válasszuk ki.A telepítőprogram főképernyőjén válasszuk ki a nyílbillentyűkkel az
(“Kilépés a telepítésből”) menüpontot. Erre a következő üzenet fog megjelenni:User Confirmation Requested Are you sure you wish to exit? The system will reboot [ Yes ] No
Az üzenet fordítása:
Felhasználói megerősítés szükséges Valóban ki akar lépni? A rendszer ezt követően újra fog indulni [ Igen ] Nem
Ha a
választ adjuk és a CD-t az újraindításkor is a meghajtóban hagyjuk, akkor a telepítőprogram még egyszer el fog indulni.Ha floppyról indítottuk volna a rendszert, az újraindítás előtt vegyük ki a boot.flp image-et tartalmazó lemezt.
A sysinstall a FreeBSD Projekt által fejlesztett telepítőprogram. Konzol alapú, menükre és képernyőkre oszlik, amelyeken a beállításokat és a telepítési folyamat irányítását tudjuk elvégezni.
A sysinstall menürendszerét több más billentyű mellett legfőképpen a nyílbillentyűkkel, az Enter, Tab és a Szóköz billentyűkkel kezelhetjük. Ezek és az általuk elvégezhető feladatok részletes leírása a sysinstall használatáról szóló információk között található.
Ennek megtekintéséhez először győződjünk meg róla, hogy a 2-6 Ábra által illusztrált helyzetnek megfelelően kiválasztottuk a (“Használat”) menüpontot és a (“Kiválaszt”) feliratú gombon állunk, majd nyomjuk le az Enter billentyűt.
Ezt követően megjelenik a menürendszer használatát bemutató leírás. Miután végigolvastuk, a főmenübe az Enter billentyű lenyomásával tudunk visszajutni.
A főmenüben a nyílbillentyűkkel válasszuk a
feliratú menüpontot és nyomjuk meg az Enter billentyűt.Ezzel megjelenik a dokumentációs menü.
Feltétlenül olvassuk el az itt található leírásokat.
A dokumentumok elolvasásához először válasszunk közülük a nyílbillentyűkkel, majd nyomjuk meg az Enter billentyűt. A dokumentum elolvasása után az Enter lenyomásával tudunk visszatérni a dokumentációs menübe.
A dokumentációs menüből a főmenübe úgy tudunk kilépni, ha a nyílbillentyűkkel kiválasztjuk az
(“Kilépés”) menüpontot és megnyomjuk az Enter billentyűt.A billentyűzetkiosztás megváltoztatásához válasszuk ki a nyílbillentyűk segítségével a
menüpontot a menüből és nyomjuk meg az Enter billentyűt. Erre természetesen csak akkor lesz szükségünk, ha nem szabványos vagy nem angol billentyűzetet használunk.A különböző billentyűkiosztásoknak megfelelő menüpontok a fel/le nyílak és a Szóköz billentyű segítségével választhatóak ki. A Szóköz ismételt lenyomásával töröljük a választásunkat. A befejezéshez válasszuk ki a nyilakkal a
gombot és nyomjuk le az Enter billentyűt.A mellékelt képen a lista egy része látható csupán. Ha a Tab billentyűvel a
gombot választjuk, akkor az alapértelmezett billentyűkiosztást kapjuk és visszakerülünk a főmenübe.Válasszuk az
(“Beállítások”) menüpontot, majd nyomjuk le az Enter billentyűt.Az itt szereplő alapértelmezett értékek a legtöbb felhasználó számára minden további nélkül megfelelnek, nem szükséges a megváltoztatásuk. A kiadás neve (“release name”) mező értéke a telepítendő verziótól függően változhat.
A kiválasztott mező rövid leírása a képernyő alján, kékkel kiemelten jelenik meg. A
(“Az alapértelmezések használata”) beállítás az alapértelmezésére állítja vissza az összes értéket.Az F1 lenyomásával elolvashatjuk a különböző beállításokhoz tartozó súgót.
A Q billentyűvel visszatérhetünk a főmenübe.
A UNIX-szal vagy a FreeBSD-vel most ismerkedők számára. A telepítés megkezdéséhez a nyilakkal válasszuk ki a menüpontot, majd nyomjuk meg az Enter billentyűt.
(“Szabványos”) elnevezésű menüpont által felkínált telepítési módszer ajánlott aElső feladatunk lemezterületet foglalni a FreeBSD számára, majd megcímkézni azt, hogy a sysinstall elő tudja készíteni. Ehhez tisztában kell lennünk azzal, hogy a FreeBSD milyen formában is keresi az adatokat a lemezünkön.
Egy témára különösen tekintettel kell lennünk mielőtt telepítenénk és beállítanánk a FreeBSD-t a rendszerünkön, főleg abban az esetben, ha több merevlemezünk is van.
Egy BIOS-függő operációs rendszert, például MS-DOS-t vagy Windows-t futattó PC esetén a BIOS az operációs rendszer beleegyezésével képes elvonatkoztatni a lemezek megszokott sorrendjétől. Ennek köszönhetően a felhasználó nem csak az ún. “primary master” (elsődleges master) merevlemezes meghajtótól tudja elindítani a rendszert. Ez kifejezetten kényelmes megoldás az olyan felhasználók számára, akik az elsővel teljesen megegyező második merevlemez megvásárlásával kialakították a rendszerük egyszerű és egyben a legolcsóbb biztonsági mentését, amire a Ghost® vagy XCOPY programokkal tudnak rendszeres másolatokat készíteni. Így, ha az elsődleges meghajtó tönkremegy vagy vírus támadja meg, esetleg az operációs rendszer egy hiba miatt használhatatlanná teszi, akkor a BIOS-t utasíthatjuk a meghajtók logikai cseréjére és ezzel könnyen helyre tudjuk állítani. Olyan, mintha a ház felnyitása nélkül felcseréltük volna a lemezeket bekötő kábeleket.
A SCSI-vezérlőkkel szerelt drágább rendszerek gyakran tartalmaznak olyan BIOS-bővítéseket, amelyeken keresztül a SCSI-lemezek ugyanígy tetszőlegesen átrendezhetőek, egészen hét meghajtóig.
Az ilyen lehetőségek használatához szokott felhasználókat azonban könnyen csalódás érheti, amikor a FreeBSD nem az elvárásaiknak megfelelően cselekszik. A FreeBSD ugyanis nem használja a BIOS-t és nem ismeri a “BIOS logikai meghajtókiosztását”. Ez meghökkentő eredményekre vezethet, főleg akkor, amikor paramétereiket tekintve a meghajtók fizikailag teljesen megegyeznek és ráadásul egymás másolatait tartalmazzák.
A FreeBSD telepítése előtt mindig állítsuk vissza a BIOS-ban a meghajtók eredeti sorrendjét, és a használatához hagyjuk is így ezt a beállítást. Ha valamiért mégis meg kellene cserélnünk a meghajtókat, akkor ezentúl válasszuk a nehezebb utat: nyissuk ki a gépházat és kössük át a kábeleket, tegyük át a jumpereket mi magunk.
Megjegyzés: Itt még semmilyen változtatás nem kerül lemezre. Ha úgy érezzük, hogy valamit rosszul csináltunk és újra el akarjuk kezdeni a telepítést, a menük segítségével büntetlenül távozhatunk a sysinstallból és újra próbálkozhatunk, vagy az U billentyű lenyomásával aktiválhatjuk az
(“Visszacsinál”) funkciót. Ha véletlenül összezavarodtunk volna és nem találunk kilépési lehetőséget, akkor bármikor ki tudjuk kapcsolni a számítógépet.
A sysinstallban a szabványos telepítés megkezdésekor az alábbi üzenet jelenik meg:
Message In the next menu, you will need to set up a DOS-style ("fdisk") partitioning scheme for your hard disk. If you simply wish to devote all disk space to FreeBSD (overwriting anything else that might be on the disk(s) selected) then use the (A)ll command to select the default partitioning scheme followed by a (Q)uit. If you wish to allocate only free space to FreeBSD, move to a partition marked "unused" and use the (C)reate command. [ OK ] [ Press enter or space ]
Az üzenet fordítása:
Üzenet A most következő menüben össze kell állítanunk a merevlemezünk DOS-szerű ("fdiskes") partícióit. Amennyiben egyszerűen csak át akarjuk adni az összes lemezterületet a FreeBSD számára (ezzel felülírva mindent, ami a kiválasztott lemezeken található), akkor az alapértelmezett partíció-kiosztás kiválasztásához használjuk az (A)ll (Mind), majd utána a (Q)uit (Kilépés) parancsokat. Ha viszont csak az éppen szabad területet szánjuk a FreeBSD-nek, lépjünk egy "unused" ("üres") feliratú partícióra és használjuk a (C)reate (Létrehozás) parancsot. [ OK ] [ Nyomja le az Enter vagy a Szóköz billentyűt ]
Az utasításnak megfelelően nyomjuk le az Enter billentyűt. Ezután a rendszermag által az eszközök felkutatása során megtalált összes merevlemezes meghajtót láthatjuk. A 2-14 Ábra egy két IDE-lemezzel rendelkező rendszert mutat be, amelyeknek nevei rendre ad0 és ad2.
Feltűnhet, hogy itt nem szerepel az ad1. Vajon miért maradt ki?
Képzeljük el, mi történne, ha két IDE-csatolós merevlemezünk lenne: az egyik az első IDE-vezérlőn, a másik pedig a második IDE-vezérlőn lenne master. Ha a FreeBSD a megtalálásuk szerint ad0 és ad1 nevekkel számozná ezeket, attól még minden remekül működhetne.
Ha azonban beszerelnénk egy harmadik lemezt, például egy slave eszközt kapcsolnánk az első IDE-vezérlőre, akkor már ez lenne a ad1, és ennek megfelelően a korábban ad1 megnevezésű meghajtó pedig az ad2. Mivel az állományrendszerek felkutatására általában az eszközneveket (mint amilyen a ad1s1a) használják, ezért ilyenkor azt tapasztalhatnánk, hogy bizonyos állományrendszerek helytelenül jelennek meg, ezért meg kell változtatnunk a FreeBSD ezeket érintő beállításait.
A probléma megoldására a rendszermag beállítható úgy, hogy az IDE-lemezeket a kapcsolódásuk szerint azonosítsa, ne pedig a megtalálásuk sorrendje szerint. Ezzel a kialakítással a második IDE-vezérlőn található master lemez mindig az ad2 eszköz lesz, tehát még olyankor is, amikor egyáltalán nincs a rendszerünkben ad0 vagy ad1 eszköz.
Ez a beállítás alapértelmezés a FreeBSD rendszermagjában, és ez magyarázza, hogy az iménti ábra miért csak ad0 és ad2 eszközöket mutat. Tehát a képen szereplő számítógép mind a két IDE-vezérlőjének master csatornáján található egy-egy IDE-lemez, a slave csatornákon pedig nincs egy sem.
Itt válasszuk ki azt a lemezt, amelyre a FreeBSD-t telepíteni kívánjuk, majd nyomjuk meg a 2-15 Ábra által bemutatott képernyővel elindul az FDisk.
gombot. Erre azAz FDisk képernyője három részre osztható.
Az első részben, amely a képernyő felső két sorát foglalja össze, láthatjuk az éppen kiválasztott lemez adatait: a FreeBSD szerinti nevét, a paramétereit és az összméretét.
A második részben láthatjuk a lemezen megtalálható slice-okat: hol kezdődnek (Offset) és hol érnek véget (End); mekkorák (Size); a FreeBSD milyen névvel hivatkozik rájuk (Name); milyen leírás (Description) és altípus (Subtype) tartozik hozzájuk. A példában két kicsi üres slice-ot láthatunk, ami a PC-k lemezkiosztására jellemző. Ezenkívül felfedezhetünk egy nagyobb méretű FAT típusú slice-ot is, amely az MS-DOS / Windows világban szinte minden bizonnyal a C: betűjelet viseli, valamint egy kiterjesztett slice-ot is, amely az MS-DOS / Windows számára további meghajtókat is tartalmazhat.
A harmadik részben az FDisk működtetésére használható parancsok láthatóak.
A most következő teendőink attól függenek, hogy miként is akarjuk felosztani a lemezünket.
Ha az egész lemezt a FreeBSD használatára áldozzuk (és amikor majd megerősítjük a sysinstall számára a továbblépést, a lemezen így minden más adat törlődni fog), akkor nyomjuk le az A billentyűt, amely megfelel a 2-16 Ábra által mutatotthoz fog erősen hasonlítani. A Flags (Beállítások) oszlopban láthatjuk az A jelzést, amelyből kiderül, hogy az adott slice aktív, tehát róla tud indulni a rendszer.
(Az egész lemez használata) menüpontnak. A létező slice-ok eltávolításra kerülnek és helyettük megjelenik egy unused (üres) jelzésű kis méretű terület (elvégre PC-ről beszélünk), valamint egy nagyobb slice a FreeBSD számára. Ha így jártunk el, akkor válasszuk ki nyilakkal a frissen létrejött FreeBSD slice-ot és az S billentyű lenyomásával jelöljük be indíthatónak (bootable). A képernyő ekkor aHa a FreeBSD számára egy meglevő slice törlésével szeretnénk helyet csinálni, akkor ehhez válasszuk ki nyílbillentyűkkel a használni kivánt slice-ot és nyomjuk le a D billentyűt. Ezután nyomjuk le a C billentyűt is, amire felbukkan a létrehozandó slice méretét kérdező ablak. Adjuk meg a számunkra megfelelő méretet a számunkra megfelelő formában, majd zárjuk le az Enter lenyomásával. Az ablakban szereplő alapértelmezett érték a létrehozható lehető legnagyobb méretű slice-ot adja meg, ami vagy a legnagyobb összefüggő üres terület, vagy pedig az egész merevlemez összterülete lehet.
Ha már korábban készítettünk elő helyet a FreeBSD-nek (például egy PartitionMagic vagy egy hozzá hasonló alkalmazás segítségével), akkor csak elegendő az új slice létrehozásához megnyomnunk a C billentyűt. Ekkor szintén megkérdezésre kerül a létrehozandó slice mérete.
Amikor befejeztük, nyomjuk le a Q billentyűt. Ekkor a sysinstall elmenti a beállított értékeket, azonban a lemezre ekkor még nem kerülnek ki.
Mindezek után lehetőségünk nyílik telepíteni egy rendszerválasztót (boot manager). Általában véve akkor van szükségünk a FreeBSD rendszerválasztójának telepítésére, ha:
Egynél több meghajtónk van, és közülük nem az első meghajtóra telepítjük a FreeBSD-t.
A FreeBSD-t ugyanazon a lemezen más operációs rendszerek mellé telepítjük, és szeretnénk választhatóvá tenni, hogy a számítógép indításakor a FreeBSD vagy a többi operációs rendszer induljon-e el.
Amennyiben a FreeBSD lesz az egyetlen operációs rendszer a gépünkön és az első merevlemezes meghajtóra telepítjük, akkor a
(Szabványos) rendszerválasztó tökéletesen megteszi. Ha viszont a FreeBSD indításához egy másik rendszerválasztót szeretnénk használni, válasszuk a (Nincs) opciót.Válasszunk, majd nyomjuk le az Enter billentyűt!
Az F1 billentyű lenyomásán keresztül elérhető súgóképernyőn olvashatunk az egy merevlemezen több operációs rendszer használatával kapcsolatos problémákról.
Ha egynél több meghajtónk van, a program a rendszerválasztó képernyője után ismét visszatér a meghajtók kiválasztásához. Amennyiben a FreeBSD-t egy másik meghajtóra is telepíteni szeretnénk, itt válasszuk ki azt és ismételjük meg vele az imént az FDisk programmal végzett felosztási folyamatot.
Fontos: Amikor a FreeBSD-t nem az első meghajtóra telepítjük, akkor a FreeBSD rendszerválasztóját mind a két meghajtóra telepíteni kell.
A Tab billentyűvel tudunk váltani a legutoljára kiválasztott meghajtó, a
és a gombok között.Az
gombra álláshoz nyomjuk le egyszer a Tabot, majd a telepítés folytatásához nyomjuk le az Enter billentyűt.A következő lépésként létre kell hoznunk partíciókat a frissen létrehozott slice-okban. Ne felejtsük el, hogy minden partíció rendelkezik egy a-tól h-ig terjedő betűjellel, amelyek közül a b, c és d jelzésűeknek külön szerepe van, amire tekintettel kell lennünk.
Bizonyos alkalmazások kedvelnek egyes partíciókiosztási sémákat, különösen az egynél több lemezen elhelyezkedő partíciókat. Azonban az első FreeBSD telepítésünk során még nem annyira fontos koncentrálnunk a lemezünk hatékony felosztására. Sokkal inkább fontosabb, hogy először egyszerűen csak telepítsük a FreeBSD-t és tanuljuk meg a használatát. Amikor már jobban ismerni fogjuk az operációs rendszert, a partíciók kiosztásának megváltoztatásához mindig újra tudjuk telepíteni a FreeBSD-t.
Ebben a sémában négy partíció szerepel — egy a lapozóállománynak és három az állományrendszereknek.
Táblázat 2-2. Az első lemez partícióinak kiosztása
Partíció | Állományrendszer | Méret | Leírás |
---|---|---|---|
a | / | 1 GB | Ez a rendszerindításhoz használt, más néven a gyökér állományrendszer (root filesystem). Minden további állományrendszer ehhez csatlakozik valahol. Ennek az állományrendszernek 1 GB méret elfogadható, mivel nem fogunk túlságosan sok adatot tárolni rajta, a FreeBSD telepítője is csak nagyjából 128 MB adatot fog ide tenni. Az így fennmaradó lemezterület felhasználható átmeneti adatok tárolására, illetve a / könyvtárban helyet ad a FreeBSD későbbi változatainak terjeszkedéséhez is. |
b | - | RAM mérete x 2-3 | [a] |
e | /var | 512 MB-tl 4096 MB-ig | A /var könyvtár foglalja magában az állandó változó naplóállományokat, valamint a többi, adminisztrációhoz használt állományt. Ezek többsége a FreeBSD mindennapos működése közben folyamatosan íródnak vagy olvasódnak. Ha ezeket az állományokat egy külön állományrendszerre rakjuk, akkor ezzel segítünk a FreeBSD-nek optimalizálni az ilyen állományok elérését anélkül, hogy ez hatással lenne a többi, más hozzáférési gyakorisággal bíró állományra. |
f | /usr | A lemez többi része (legalább 8 GB) | Az összes többi állomány többnyire a /usr könyvtárban és annak alkönyvtáraiban helyezkedik el. |
Megjegyzések: a. A rendszer lapozóállománya a b partíción tárolódik. Itt a megfelelő méret megválasztása egyfajta művészet, azonban minden esetben hasznosnak bizonyulhat, ha tudjuk, hogy méretnek mindig érdemes a fizikai avagy központi memória (RAM) méretének két, esetleg háromszorosát választani. Legyen mindig legalább 64 MB-nyi méretű lapozóállományunk, és ha 32 MB RAM-nál kevesebb van a számítógépünkben, akkor is legalább 64 MB-ra állítsuk be. Ha egynél több lemezünk van, mindegyikre rakhatunk lapozóállományt, ezzel a FreeBSD mindegyikőjüket fel tudja használni lapozásra, amivel pedig gyakorlatilag felgyorsítja a folyamatot. Ilyenkor számoljunk úgy, hogy először meghatározzuk a teljes lapozóállomány méretét (például 128 MB), majd ezt elosztjuk a rendelkezésünkre álló lemezek számával (például kettő). Ebből kiszámítható az egyes lemezeken elhelyezendő lapozóállomány mérete, ami most a példánk szerint 64 MB lesz. |
Figyelem: Az imént megadott értékeket csak példaként adtuk meg és csak a tapasztalt felhasználók számára ajánljuk. A többi felhasználónak inkább a partíciók automatikus kiosztását javasoljuk a FreeBSD partíciószerkesztőjében található Auto Defaults opció használatával.
Ha a FreeBSD-t egynél több lemezre telepítjük, akkor a korábban megadott többi slice-ban is létre kell hoznunk partíciókat. Ezt legegyszerűbben úgy tehetjük meg, ha minden lemezen létrehozunk két partíciót: egyet a lapozóállománynak, egyet pedig az állományrendszernek.
Táblázat 2-3. Több lemez partícióinak kiosztása
Partíció | Állományrendszer | Méret | Leírás |
---|---|---|---|
b | - | Lásd a leírást | Ahogy már korábban is említettük, szét tudjuk osztani a lapozóállományt a lemezek között. Habár az a partíció szabad, a hagyományok mégis azt diktálják, hogy a lapozáshoz használt terület maradjon a b partíción. |
e | /diskn | A lemez többi része | A lemez fennmaradó része egyetlen nagy partícióval fedhető le. Ez az e partíció helyett lehetne minden további nélkül az a partíció, azonban a hagyományok szerint az a partíciónak a rendszer gyökér állományrendszerét (/) kell tartalmaznia. Nekünk ugyan nem kellene ezt a megszokást követnünk, azonban a sysinstall viszont így tesz, ezért ezzel a választással csak magunkkal teszünk jót. Az állományrendszer bárhová csatlakoztatható — ebben a példában a lemezeket rendre a /diskn könyvtárakhoz csatoltuk, ahol az n az adott lemez sorszáma. De itt természetesen más rendszert is követhetünk. |
A partíciók elrendezésének kigondolása után most már létre is hozathatjuk ezeket a sysinstall segítségével. Ekkor a következő üzenetet fogjuk látni:
Message Now, you need to create BSD partitions inside of the fdisk partition(s) just created. If you have a reasonable amount of disk space (1GMB or more) and don't have any special requirements, simply use the (A)uto command to allocate space automatically. If you have more specific needs or just don't care for the layout chosen by (A)uto, press F1 for more information on manual layout. [ OK ] [ Press enter or space ]
Az üzenet fordítása:
Üzenet Most létre kell hoznunk az fdiskkel nemrég elkészített partíciókban a BSD-s partíciókat. Ha van hozzá elegendő helyünk (1G vagy több) és nincs semmilyen különleges elvárásunk, akkor egyszerűen csak osszuk fel automatikusan az (A)uto paranccsal. Amennyiben azonban ennél többre lenne szükségünk, vagy csak nincs szükségünk az (A)uto által felkínált sémára, az F1 lenyomására bővebb információkat is kaphatunk a kézi kiosztás lehetőségeiről. [ OK ] [ Nyomja le az Enter vagy a Szóköz billentyűt ]
Nyomjuk le a Enter billentyűt a FreeBSD partíciószerkesztőjének, avagy a Disklabel elindításához.
A 2-19 Ábra mutatja a Disklabel első elindulásakor megjelenő képet. A képernyő három részre tagolható.
A felső pár sorban a jelenleg használt lemez nevét láthatjuk, valamint azt a slice-ot, ami az általunk létrehozott partíciókat tartalmazza (itt a Disklabel a Partition name megnevezéssel hivatkozik a slice-ra). A képernyőn továbbá láthatjuk a slice-ban levő szabad helyet is, vagyis azt a helyet, amely ugyan a slice-hoz tartozik, viszont még nem rendeltünk hozzá partíciót.
A képernyő közepén találhatóak az eddig már létrehozott partíciók, az általuk tartalmazott állományrendszerek, azok mérete és az állományrendszerek létrehozására vonatkozó különböző beállítások.
A képernyő alsó harmadában a Disklabel programban használható billentyűk felsorolása szerepel.
A Disklabel képes magától partíciókat készíteni a nekik megfelelő alapértelmezett méretekkel. A partíciók automatikus méretét egy belső partícióméretező algoritmus számítja ki a lemez összmérete alapján. Próbáljuk most mi is ezt ki, és nyomjuk le az A billentyűt. Ekkor a 2-20 Ábra szerint illusztráltaknak megfelelő képernyőt tapasztalhatunk. A használt lemez méretétől függően az alapértelmezett értékek megfelelőek lesznek vagy sem. Ez igazából nem számít, hiszen nem kell feltétlenül elfogadnunk az alapértelmezetten megállapított értékeket.
Megjegyzés: Az alapértelmezett partícionálási sémában a /tmp könyvtár nem a / könyvtár része lesz, hanem saját partíciót kapott. Ezzel igyekszünk elkerülni, hogy a / partíció átmenetileg tárolt állományokkal teljen be.
Ha nem az alapértelmezett partíciókat szeretnénk használni, és le akarjuk váltani ezeket a saját magunk által megadottakra, akkor a nyílbillentyűkkel válasszuk ki az első partíciót és a törléséhez nyomjuk meg a D billentyűt. Hasonlóan járjunk el az összes többi javasolt partíció törléséhez.
Az első (a, vagyis a / könyvtárként, azaz a gyökérként csatolt) partíció elkészítéséhez először győződjünk arról, hogy a felső sorban a megfelelő slice van kiválasztva, majd nyomjuk meg a C billentyűt. Ekkor az új partíció méretét kérdező párbeszédablak jelenik meg (lásd: 2-21 Ábra). Itt a méret a lemez blokkjainak számában adható meg, amit viszont M-mel lezárva megabyte-ban, G-vel gigabyte-ban vagy C-vel cilinderben is kifejezhetünk.
Az alapértelmezés szerint felkínált méret az egész slice-ot lefoglaló partíciót hoz létre. Amennyiben a korábbi példában tárgyalt partícióméreteket kívánjuk használni, akkor a Backspace billentyű használatával töröljük ki az így megadott értéket, és helyette gépeljük be, hogy 512M, ahogy ez a 2-22 Ábra segítségével is látható. A bevitelt zárjuk a gomb lenyomásával.
Miután meghatároztuk a partíció méretét, a telepítő megkérdezi, hogy a létrehozandó partícióban állományrendszer vagy lapozóállomány foglaljon-e helyet. Ennek a párbeszédablakját a 2-23 Ábra mutatja. Mivel az első partíciónk állományrendszert fog tartalmazni, ezért mindenképpen az paramétert válasszuk ki, majd nyomjuk meg az Enter billentyűt.
Végezetül, mivel egy állományrendszert hoztunk létre, meg kell mondanunk a Disklabelnek, hova csatlakoztassa. A hozzá tartozó párbeszédablak a 2-24 Ábran látható. A gyökér állományrendszer csatlakozási pontja a /, ezért itt csak annyit adjunk meg, hogy / és zárjuk az Enter billentyű lenyomásával.
A képernyőn látható lista ezután az újonnan létrehozott partíciónak megfelelően frissül. A többi partícióra ugyanígy meg kell ismételnünk ezt a műveletsort. Arra azonban figyeljünk, hogy a lapozásra használt partíciót létrehozásánál a szerkesztő nem fogja megkérdezni a csatlakozási pontot, hiszen az ilyen típusú partíciókat sosem csatlakoztatjuk. A /usr, vagyis az utolsó partíció készítése során a slice fennmaradó részének lefoglalásához már nyugodtan meghagyhatjuk a felajánlott értéket.
A FreeBSD partíciószerkesztőjének utolsó képernyője a 2-25 Ábran hasonlóhoz, habár az általunk választott értékek minden bizonnyal eltérnek. A művelet befejezéséhez nyomjuk le a Q billentyűt.
A telepítendő terjesztések típusa nagyban függ attól, hogy a rendszerünket mire szándékozzuk majd használni és mennyi szabad hely áll rendelkezésünkre. Az előre megadott beállítások a lehető legkisebb konfiguráció telepítésétől egészen a komplett rendszer telepítéséig terjednek. A UNIX és/vagy FreeBSD világában még az új felhasználók számára szinte tökéletesen megfelelőnek bizonyulhat az egyik ilyen előkészített beállítás kiválasztása. A terjesztések kiválogatása pedig általában a tapasztaltabb felhasználók számára lehet hasznos.
Az F1 billentyűvel többet is megtudhatunk a terjesztések különböző típusairól és bennük található összetevőkről. Miután befejeztük a súgó áttanulmányozását, nyomjuk le az Enter billentyűt, és ezzel visszatérünk a terjesztések kiválasztását tartalmazó menübe.
Ha grafikus felületet szeretnénk használni, akkor az X szerver beállítását az alapértelmezett munkakörnyezet beállítását a FreeBSD telepítése után kell megtenni. Az X szerver beállításáról részletesebben a 5 fejezetban olvashatunk.
Ha egy saját rendszermag építését is fontolgatjuk, akkor olyan terjesztést válasszuk, amiben a forráskód (kernel source) is megtalálható. A saját rendszermag építésének hátteréről és mikéntjéről lásd a 8 fejezetet.
Értelemszerűen a legsokoldalúbb rendszer az, amiben minden megtalálató. Így aztán, ha a lemezünk is megengedi, a nyilak és az Enter használatával válasszuk a 2-26 Ábra is mutatja. Ha viszont úgy érezzük, hogy ehhez nem eléggé nagy a lemezünk, akkor válasszuk az igényeinkhez jobban illeszkedő típust. Sokat azonban ne üljünk a tökéletes megoldás kiötlésén, hiszen ezek a terjesztések még a telepítés befejezése után is hozzáadhatóak a rendszerünkhöz.
(Minden) opciót, ahogy azt azMiután kiválasztottuk a nekünk megfelelő terjesztést, a telepítőprogram felajánlja a FreeBSD Portgyűjteményének (Ports Collection) telepítésének lehetőségét. A portok gyűjteménye a szoftverek telepítésének egyszerű és kényelmes módja. A Portgyűjtemény önmaga nem tartalmazza a szoftverek lefordításához szükséges forráskódot, hanem helyette csupán azokat az állományokat, amelyek a különböző külsős programok letöltéséhez, fordításához és telepítéséhez kellenek. A 4 fejezetben megtalálhatjuk, miként is kell használni ezt a gyűjteményt.
A telepítőprogram nem fogja ellenőrizni a kibontásához szükséges helyet, ezért csak abban az esetben válasszuk ezt a lehetőséget, ha mindenképpen elfér a merevlemezünkön. A FreeBSD jelenlegi, 8.1 változatában a Portgyűjtemény nagyjából 417 MB helyet foglal el a lemezen. A FreeBSD frissebb verzióiban nyugodtan feltételezhetünk ennél valamivel nagyobb értéket is.
User Confirmation Requested Would you like to install the FreeBSD ports collection? This will give you ready access to over 20 000 ported software packages, at a cost of around 417 MB of disk space when "clean" and possibly much more than that if a lot of the distribution tarballs are loaded (unless you have the extra CDs from a FreeBSD CD/DVD distribution available and can mount it on /cdrom, in which case this is far less of a problem). The Ports Collection is a very valuable resource and well worth having on your /usr partition, so it is advisable to say Yes to this option. For more information on the Ports Collection & the latest ports, visit: http://www.FreeBSD.org/ports [ Yes ] No
Az üzenet fordítása:
Felhasználói megerősítés szükséges Szeretné telepíteni a FreeBSD portjainak gyűjteményét? Ezen keresztül közel 20 000 portolt szoftvercsomaghoz tudunk könnyedén hozzáférni, amelyek "tiszta" állapotukban nagyjából 417 MB lemezterületünkbe kerülnek, ami a későbbiekben valószínűleg majd növekedni fog, ahogy letöltjük a különböző szoftverekhez tartozó állományokat (hacsak nincs meg a FreeBSD valamelyik CD- vagy DVD alapú terjesztésének az összes lemeze, amelyeket a /cdrom könyvtárba csatlakoztatva el tudjuk ezeket érni, mert ekkor kevesebb gondunk lesz vele). A Portgyűjtemény egy nagyon értékes erőforrás, amelynek megéri helyet szentelni a /usr partíciónkon, ezért javasoljuk, hogy válassza az "Igen" opciót. A Portgyűjteményről és annak legújabb portjairól a http://www.FreeBSD.org/ports oldalon olvashat részletesebben. [ Igen ] Nem
A Portgyűjtemény telepítéséhez a
gombot, ennek kihagyásához pedig a gombot válasszuk ki a nyilakkal, majd az Enter lenyomásával mehetünk tovább. Ekkor a kiválasztott terjesztések menüje fog újra megjelenni.Ha elégedettek vagyunk a beállításokkal, válasszuk ki a nyilakkal az
menüpontot, győződjünk meg róla, hogy a gombon állunk, majd nyomjuk le az Enter billentyűt a folytatáshoz.Ha CD-ről vagy DVD-ről telepítünk, akkor a következő képernyőn a nyílbillentyűkkel válasszuk ki a
(Telepítés CD-ről vagy DVD-ről) menüpontot. Ügyeljünk a gomb kiválasztására is, majd a telepítés megkezdéséhez nyomjuk meg az Enter billenyűt.A telepítés másfajta módszereinek alkalmazásához válasszuk ki a menüpontok közül a nekünk megfelelőt és kövessük a megjelenő utasításokat.
Az F1 billentyű lenyomására megjelenik az adott telepítőeszközhöz tartozó súgó. Innen az Enter lenyomása után térhetünk vissza a menühöz.
Telepítés FTP szerverről: Három FTP-s telepítési mód közül választhatunk: aktív, passzív vagy HTTP proxyn keresztül.
- Aktív FTP:
(Telepítés FTP szerverről)Ezzel a beállítással az összes FTP-n keresztüli átvitel “aktív” módban történik. Ez tűzfalak esetén nem működik, de gyakran alkalmazható olyan régebbi FTP szerverek esetén, amelyek nem ismerik az passzív adatátvitelt. Ha (az alapértelmezett) passzív módban megakadna a kapcsolat, próbáljunk meg helyette az aktívat.
- Passzív FTP:
(Telepítés tűzfalon keresztül FTP szerverről)Ezzel a beállítással a sysinstall programot az FTP művelet végrehajtásakor a “passzív” mód használatára utasítjuk. Így át tudunk menni olyan tűzfalakon is, amelyek nem engedik a véletlenszerű TCP portokon érkező kapcsolatokat.
- FTP HTTP proxyn keresztül:
(Telepítés HTTP proxyn keresztül FTP szerverről)Ezzel a beállítással megmondhatjuk a sysinstall programnak, hogy (egy böngészőhöz hasonlóan) a HTTP protokollon keresztül használja az FTP műveletek elvégzéséhez használt proxyt. Ennek a proxynak lesz a feladata az átadott kérések lefordítása és elküldése az FTP szervernek. Ennek köszönhetően át tudunk menni olyan tűzfalakon is, amelyek egyáltalán nem engednek semmilyen FTP műveletet, azonban tartozik hozzájuk egy HTTP proxy. Ilyenkor az FTP szerver beállításai mellett meg kell adnunk ezt a HTTP proxyt is.
Az FTP szervert proxyn keresztül általában úgy érjük el, hogy a felhasználói név részeként egy “@” jellel elválasztva megadjuk a ténylegesen elérni kívánt szerver nevét. A proxy szerver ezután “helyettesíti” a valódi szervert. Például tegyük fel, hogy a ftp.FreeBSD.org szerverről akarunk telepíteni az 1234 porton várakozó ize.minta.com proxy használatával.
Ehhez lépjünk be a beállításokat tartalmazó menübe, állítsuk az FTP kapcsolathoz használt felhasználói nevet az ftp@ftp.FreeBSD.org értékre, majd jelszónak adjuk meg az e-mail címünket. Telepítési eszközként adjuk meg az FTP-t (vagy a passzív FTP-t, amennyiben a proxy ismeri) és a ftp://ize.minta.com:1234/pub/FreeBSD címet.
Mivel az ftp.FreeBSD.org címről származó /pub/FreeBSD könyvtár a ize.minta.com szerveren keresztül érhető el számunkra, ezért lényegében arról a gépről fogunk telepíteni (amely pedig a telepítő kéréseire elhozza a ftp.FreeBSD.org szervertől az állományokat).
Ezután ha óhajtjuk, megkezdhetjük a telepítést. Ez egyben az utolsó lehetőségünk a telepítés megszakítására és merevlemezünket érintő változtatások érvénytelenítésére.
User Confirmation Requested Last Chance! Are you SURE you want to continue the installation? If you're running this on a disk with data you wish to save then WE STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding! We can take no responsibility for lost disk contents! [ Yes ] No
Az üzenet fordítása:
Felhasználói megerősítés szükséges Utolsó esély: BIZTOSAN folytatni kívánja a telepítést? Ha olyan lemezre szeretne telepíteni, amelyen fontos adatok találhatóak, HATÁROZOTTAN JAVASOLJUK, hogy a továbblépés előtt KÉSZÍTSEN RÓLUK MEGBÍZHATÓ BIZTONSÁGI MÁSOLATOT! Nem vállalunk semmilyen felelősséget az elvesztett adatokért! [ Igen ] Nem
A továbblépéshez válasszuk a
gombot és nyomjuk meg az Enter billentyűt.A telepítés időtartama a kiválasztott terjesztéstől, a telepítésre használt eszköztől és számítógépünk sebességétől függ. A folyamat előrehaladásáról üzenetek sorozata tájékoztat minket.
A telepítés befejezése után a következő üzenet jelenik meg:
Message Congratulations! You now have FreeBSD installed on your system. We will now move on to the final configuration questions. For any option you do not wish to configure, simply select No. If you wish to re-enter this utility after the system is up, you may do so by typing: /usr/sbin/sysinstall. [ OK ] [ Press enter or space ]
A szöveg fordítása:
Üzenet Gratulálunk, sikeresen telepítette a FreeBSD rendszert a számítógépére! Most rátérünk az utolsó néhány kérdésre. A "Nem" választásával egyszerűen átugorhatjuk mindazt, amit nem szeretnénk beállítani. Ezt a segédprogramot a rendszer újbóli elindítása után a "/usr/sbin/sysinstall" parancs begépelésével tudjuk elérni. [ OK ] [ Nyomja le az Enter vagy a Szóköz billentyűt ]
Az Enter billentyű lenyomásával megkezdhetjük a telepítés utáni beállításokat.
A
gomb kiválasztásával és az Enter lenyomásával megszakíthatjuk a telepítést, így a rendszerünkön semmilyen változtatás nem történik. Ilyenkor a következő üzenet jelenik meg:Message Installation complete with some errors. You may wish to scroll through the debugging messages on VTY1 with the scroll-lock feature. You can also choose "No" at the next prompt and go back into the installation menus to retry whichever operations have failed. [ OK ]
Az üzenet fordítása:
Üzenet A telepítés során hiba történt. A Scroll Lock használatával érdemes átnézni a VTY1 terminál megjelenő üzeneteket. A következő ablakban a "Nem" választásával vissza tudunk menni a telepítőmenühöz és megpróbálkozhatunk ismét a sikertelen műveletek végrehajtásával. [ OK ]
Ez az üzenet azért jelent meg, mert semmit sem sikerült telepíteni. Innen az Enter megnyomásával térhetünk vissza a főmenübe, majd onnan tudunk kilépni a telepítőből.
A sikeres telepítést különféle beállítások követik. Közülük az új FreeBSD rendszer indítása előtt bármelyik megismételhető a beállítások opcióit tartalmazó menü újbóli használatával, vagy pedig a telepítés után a sysinstall parancs kiadásával, majd a
(Beállítások) menüpont kiválasztásával.A következő képernyő már nem jelenik meg, ha az FTP szerveren keresztüli telepítéshez korábban már beállítottuk a PPP kapcsolatot. Ez a korábbiakban említettek szerint állítható be.
Ha többet szeretnénk megtudni a helyi hálózatokról (LAN), vagy a FreeBSD-t átjáróként, illetve útválasztóként kívánjuk beállítani, olvassuk el az Egyéb haladó hálózati témák című fejezetet.
User Confirmation Requested Would you like to configure any Ethernet or PPP network devices? [ Yes ] No
Fordítása:
Felhasználói megerősítés szükséges Szeretnénk beállítani valamilyen Ethernet- vagy PPP hálózati eszközt? [ Igen ] Nem
A hálózati eszközeink beállításához válasszuk a
gombot, majd nyomjuk meg az Enter billentyűt. Ellenkező esetben a gombbal mehetünk tovább.A beállítandó csatoló kiválasztásához használjuk a nyílbillentyűket és utána nyomjuk meg az Enter billentyűt.
User Confirmation Requested Do you want to try IPv6 configuration of the interface? Yes [ No ]
Fordítás:
Felhasználói megerősítés szükséges Megpróbálkozik az IPv6 beállításával a csatolón? Igen [ Nem ]
A példánkban szereplő helyi hálózatban az aktuális internetes protokoll (IPv4) egyelőre megfelelő, ezért válasszuk a
gombot és nyomjuk meg az Enter billentyűt.Amennyiben RA-szerveren keresztül egy már létező IPv6 hálózathoz csatlakozunk, akkor válasszuk a
gombot és nyomjuk meg az Enter billentyűt. Ezt követően az RA-szerverek felderítése kezdődik meg, ami néhány másodpercig eltarthat.User Confirmation Requested Do you want to try DHCP configuration of the interface? Yes [ No ]
Az üzenet fordítása:
Felhasználói megerősítés szükséges Megpróbálkozik a DHCP használatával a csatolón? Igen [ Nem ]
Ha nincs szükségünk a DHCP (Dynamic Host Configuration Protocol, azaz a Dinamikus állomáskonfigurációs protokoll) használatára, akkor a
gomb kiválasztásával majd az Enter lenyomásával továbbléphetünk.A 29.5 Szakaszben találhatjuk meg.
gomb kiválasztására elindul a dhclient nevű program, és amennyiben sikerrel jár, magától kitölti a hálózati beállításokra vonatkozó adatokat. Ennek részleteit aAz alábbi hálózati beállító képernyő mutatja a helyi hálózat átjárójaként használni kívánt Ethernet-eszköz konfigurációját.
A Tab billentyűvel tudunk navigálni az adatlap mezői között és kitölteni ezeket a megfelelő információkkal:
A számítógépünk teljes neve, amely a példában most k6-2.example.com.
Annak a tartománynak a neve, amelyben a számítógépünk a található. Ez itt konkrétan a example.com.
A helyben nem elérhető célok megközelítésére használt gép IP-címe. Ezt a mezőt mindenképpen töltsük ki akkor, ha a számítógépünk valamilyen hálózatba van kötve. Azonban hagyjuk üresen, ha a számítógép a hálózat átjárója az internet felé. Az IPv4 átjárót más néven “default gateway”-nek (alapértelmezett átjárónak) vagy “default route”-nak (alapértelmezett útvonalnak) is nevezik.
A helyi DNS (névfeloldó) szerverünk IP-címe. Ha nem található ilyen a helyi hálózatunkon, akkor az internet-szolgáltató DNS szerverének címét (a példában ez a 208.163.10.2) adjuk meg.
A csatoló IP-címe, amely az ábrán a 192.168.0.1.
A helyi hálózatban használt címtartomány a 192.168.0.0 - 192.168.0.255, amihez a 255.255.255.0 hálózati maszk tartozik.
Az ifconfig parancs adott csatolóra vonatkozó egyéb beállításai. Jelen esetünkben itt semmi sem szerepel.
Miután végeztünk, a Tab billentyű lenyomásával válasszuk ki a
gombot és nyomjuk le az Enter billentyűt.User Confirmation Requested Would you like to bring the ed0 interface up right now? [ Yes ] No
A fordítás:
Felhasználói megerősítés szükséges Aktiválja most az ed0 csatolót? [ Igen ] Nem
A
gomb kiválasztásával, majd az Enter lenyomásával csatlakoztatjuk a számítógépet a hálózathoz, ami ezután használhatóvá válik. Ez azonban a telepítés számára nem jelent túlságosan sokat, hiszen ettől függetlenül a számítógépet egyébként is újra kell majd indítanunk.User Confirmation Requested Do you want this machine to function as a network gateway? [ Yes ] No
A fordítás:
Felhasználói megerősítés szükséges Ezt a számítógépet hálózati átjáróként is használni akarja? [ Igen ] Nem
Ha a számítógépet a helyi hálózat átjárójaként használni akarjuk gépek közti csomagok továbbítására, akkor válasszuk a
gombot és nyomjuk meg hozzá az Enter billentyűt. Ha viszont ez a gép csupán a hálózat egy tagja, akkor válasszuk a gombot és a folytatáshoz nyomjuk meg az Enter billentyűt.User Confirmation Requested Do you want to configure inetd and the network services that it provides? Yes [ No ]
Fordítás:
Felhasználói megerősítés szükséges Beállítja az inetd démont és az általa felkínált hálózati szolgáltatásokat? Igen [ Nem ]
Ha itt a
gombot választjuk, akkor ezzel kikapcsoljuk a különböző szolgáltatásokat, például a telnetd démont. Ez azt jelenti, hogy a távoli felhasználók nem lesznek képesek a telnet program használatával belépni erre a számítógépre. A helyi felhasználók viszont továbbra is képesek lesznek távoli számítógépeket elérni a telnet segítségével.Az /etc/inetd.conf átírásával azonban ezek a szolgáltatások később természetesen engedélyezhetőek. A 29.2.1 Szakasz foglalkozik a téma részleteivel.
A
gomb választásával már a telepítés során beállíthatjuk a szolgáltatásokat. Ekkor egy további párbeszédablak is felbukkan:User Confirmation Requested The Internet Super Server (inetd) allows a number of simple Internet services to be enabled, including finger, ftp and telnetd. Enabling these services may increase risk of security problems by increasing the exposure of your system. With this in mind, do you wish to enable inetd? [ Yes ] No
Fordítása:
Felhasználói megerősítés szükséges A fő internetes kiszolgáló (az inetd) számos egyszerű internetes szolgáltatás, többek közt a finger, ftp és telnet elérését teszi lehetővé. Ezen szolgáltatások engedélyezése azonban a felmerülő biztonsági problémák kockázatát, mivel ezzel rendszerünket jobban kitesszük támadásoknak. Mindezek tudatában használni kívánja az inetd démont? [ Igen ] Nem
A folytatáshoz válasszuk a
gombot.User Confirmation Requested inetd(8) relies on its configuration file, /etc/inetd.conf, to determine which of its Internet services will be available. The default FreeBSD inetd.conf(5) leaves all services disabled by default, so they must be specifically enabled in the configuration file before they will function, even once inetd(8) is enabled. Note that services for IPv6 must be separately enabled from IPv4 services. Select [Yes] now to invoke an editor on /etc/inetd.conf, or [No] to use the current settings. [ Yes ] No
Fordítás:
Felhasználói megerősítés szükséges Az inetd(8) démonnak az elérhető internetes szolgáltatások megállapításához szüksége van a beállításait tartalmazó /etc/inetd.conf állományra. A FreeBSD-hez tartozó inetd.conf(5) állomány alapértelmezés szerint az összes szolgáltatást letiltja, ezért a működéséhez minden egyes szolgáltatást külön kell engedélyezni az említett állományban, még abban az esetben is, ha az inetd(8) démont korábban már engedélyeztük. Az IPv6 szolgáltatások az IPv4 szolgáltatásoktól külön engedélyezendőek. Az [ Igen ] választásával behívjuk az /etc/inetd.conf szerkesztését, míg a [ Nem ] választásával pedig az imént felvázolt beállításokat fogadjuk el. [ Igen ] Nem
A
gomb kiválasztásával lehetőségünk nyílik szolgáltatásokat engedélyezni a sorok elején található # jel törlésével.Miután felvettük az összes használni kívánt szolgáltatást, az Esc billentyű lenyomásával előhozhatjuk azt a menüt, ahol elmenthetjük a módosításainkat és kiléphetünk.
User Confirmation Requested Would you like to enable SSH login? Yes [ No ]
Fordítás:
Felhasználói megerősítés szükséges Engedélyezi az SSH-n keresztüli bejelentkezést? Igen [ Nem ]
A sshd(8) démont, aminek segítségével a számítógépünkre biztonságosan be tudunk jelentkezni távolról. Az OpenSSH részleteiről lásd a 14.11 Szakaszt.
gomb kiválasztása engedélyezi az OpenSSH-hoz tartozóUser Confirmation Requested Do you want to have anonymous FTP access to this machine? Yes [ No ]
Fordítás:
Felhasználói megerősítés szükséges Hozzáférhető legyen ez a számítógép anonim FTP használatán keresztül? Igen [ Nem ]
Az alapértelmezett
gomb kiválasztásával és az Enter billentyű lenyomásával a jelszóval védett FTP hozzáféréssel rendelkező felhasználók továbbra is elérhetik a számítógépünket.Ha ezt választjuk, akkor anonim FTP kapcsolaton keresztül bárki hozzáférhet a számítógépünkhöz. Ebben az esetben azonban alaposan meg kell fontolnunk néhány biztonsági következményt. A beállítással járó kockázatokról az 14 fejezetben olvashatunk többet.
Az anonim FTP bekapcsolásához a nyílbillentyűkkel válasszuk ki a
feliratú gombot és nyomjuk meg az Enter billentyűt. Ekkor egy további párbeszédablak is megjelenik:User Confirmation Requested Anonymous FTP permits un-authenticated users to connect to the system FTP server, if FTP service is enabled. Anonymous users are restricted to a specific subset of the file system, and the default configuration provides a drop-box incoming directory to which uploads are permitted. You must separately enable both inetd(8), and enable ftpd(8) in inetd.conf(5) for FTP services to be available. If you did not do so earlier, you will have the opportunity to enable inetd(8) again later. If you want the server to be read-only you should leave the upload directory option empty and add the -r command-line option to ftpd(8) in inetd.conf(5) Do you wish to continue configuring anonymous FTP? [ Yes ] No
Az üzenet fordítása:
Felhasználói megerősítés szükséges Az anonim FTP használatával a rendszer FTP szolgáltatásához hitelesítetlen felhasználók is hozzáférhetnek, amennyiben az aktív. A névtelen felhasználók az állományrendszernek csak egy részét érhetik el, valamint az alapbeállítások szerint a feltöltést egy külön erre a célra fenntartott könyvtárba végezhetik el. Az FTP szolgáltatás használatát külön engedélyeznünk kell az inetd(8) démon részéről és az inetd.conf(5) állományban található ftpd(8) démon aktiválásával. Ha eddig még nem tettük volna meg, akkor az inetd(8) használatát később még újra engedélyezhetjük. Ha csak letöltést kívánunk engedni, akkor hagyjuk a feltöltési könyvtárra vonatkozó paramétert üresen és az inetd.conf(5) állományban az ftpd(8) parancssorához adjuk hozzá az -r kapcsolót. Folytatja az anonim FTP beállítását? [ Igen ] Nem
Az üzenet értesít minket arról, hogy az anonim FTP kapcsolatok engedélyezéséhez az FTP szolgáltatást az /etc/inetd.conf állományban is be kell majd kapcsolni, lásd 2.10.3 Szakasz. Válasszuk a gombot és a folytatáshoz nyomjuk meg az Enter billentyűt. Ekkor a következő képernyő jön elő:
A beállítások kitöltése során a Tab billentyűvel mozoghatunk az adatmezők között:
A névtelen FTP felhasználókhoz társított felhasználói azonosító. A feltöltött állomány tulajdonosa ez az azonosító lesz.
A névtelen FTP felhasználók csoportja.
Ez a szöveg szerepel a felhasználónál az /etc/passwd állományban.
Itt találhatóak az anonim FTP-n keresztül elérhető állományok.
A névtelen FTP felhasználók által feltöltött állományok ide kerülnek.
Az FTP gyökere alapból a /var könyvtár lesz. Ha a becsült FTP-forgalom lebonyolításához itt nem rendelkezünk elegendő hellyel, akkor az /usr könyvtárban található /usr/ftp alkönyvtár is beállítható az FTP gyökerének.
Ha elfogadhatónak találjuk az értékeket, nyomjuk le az Enter billentyűt a folytatáshoz.
User Confirmation Requested Create a welcome message file for anonymous FTP users? [ Yes ] No
Fordítás:
Felhasználói megerősítés szükséges Létre kíván hozni egy köszöntő üzenetet tartalmazó állományt az anonim FTP felhasználók számára? [ Igen ] Nem
A
választásával és az Enter megnyomásával az üzenet szerkesztéséhez egy szövegszerkesztő fog elindulni.Ez az ee szövegszerkesztő. Az üzenet átírásához használjuk a megadott utasításokat, de akár később is módosíthatjuk ezt a kedvenc szövegszerkesztőnkkel. Ehhez a módosítandó állomány neve és helye a szerkesztő képernyőjének alján olvasható.
A kilépéshez az Esc lenyomására felbukkanó menüben alapból az
(kilépés a szerkesztőből) menüpont érhető el, ezért itt az Enter lenyomásával léphetünk tovább. Az Enter ismételt lenyomásával elmenthetjük a módosításainkat.A hálózati állományrendszer (Network File System, NFS) állományok közzétételét teszi lehetővé hálózaton keresztül. Használata során egy számítógép beállítható szervernek, kliensnek vagy akár mindkettőnek. Ezzel kapcsolatban a 29.3 Szakasz ajánlott elolvasásra.
User Confirmation Requested Do you want to configure this machine as an NFS server? Yes [ No ]
A fordítása:
Felhasználói megerősítés szükséges Be akarja állítani NFS szervernek ezt a számítógépet? Igen [ Nem ]
Ha nincs szükségünk a hálózati állományrendszer szerver részére, akkor válasszuk a
gombot és nyomjuk le az Enter billentyűt.Amennyiben a
gombot választjuk, egy üzenet fogja közölni velünk, hogy létre kell hoznunk az exports állományt.Message Operating as an NFS server means that you must first configure an /etc/exports file to indicate which hosts are allowed certain kinds of access to your local filesystems. Press [Enter] now to invoke an editor on /etc/exports [ OK ]
Az üzenet fordítása:
Üzenet Az NFS szerver működtetéséhez először az /etc/exports állomány összeállításán keresztül meg kell adnunk, hogy milyen gépek milyen típusú hozzáféréssel rendelkezzenek a helyi állományrendszereinken. Az [Enter] lenyomására megkezdődik az /etc/exports állomány szerkesztése. [ OK ]
Az Enter billentyű lenyomásával továbbléphetünk. Ekkor az exports állomány létrehozására és szerkesztésére egy szövegszerkesztő indul el.
A exportálni kívánt állományrendszerek felsorolásához használjuk képernyőn a megadott utasításokat, vagy tegyük meg ezt később az általunk választott szövegszerkesztő segítségével. Ilyenkor ne felejtsük el megjegyezni az állomány képernyő alján látható nevét és helyét.
Amikor végeztünk, az Esc billentyűvel felhozható menüben alapból az
(kilépés a szövegszerkesztőből) menüpont aktív, ezért itt a folytatáshoz egyszerűen nyomjuk le az Enter billentyűt.Az NFS kliens beállításával NFS szerverekhez tudunk hozzáférni.
User Confirmation Requested Do you want to configure this machine as an NFS client? Yes [ No ]
Fordítás:
Felhasználói megerősítés szükséges Beállítja NFS kliensnek ezt a számítógépet? Igen [ Nem ]
A nyílbillentyűkkel igényeinknek megfelelően válasszuk a
vagy gombokat és utána nyomjuk meg az Enter billentyűt.Számos beállítás kapcsolódik a rendszerben található konzolok testreszabásához.
User Confirmation Requested Would you like to customize your system console settings? [ Yes ] No
Fordítás:
Felhasználói megerősítés szükséges Testreszabja a rendszerkonzol beállításait? [ Igen ] Nem
A beállítások megtekintéséhez és megváltoztatásához válasszuk a
gombot és nyomjuk le az Enter billentyűt.A képernyőkímélő beállítása egy gyakori opció. A nyilak használatával álljunk a
menüpontra, majd nyomjuk le az Enter billentyűt.A nyilakkal válasszuk ki a használni kívánt képernyőkímélőt és nyomjuk meg hozzá az Enter billentyűt. Ekkor a rendszerkonzol beállításait tartalmazó menü jelenik meg ismét.
Az aktivizálódás ideje alapbeállítás szerint 300 másodperc. Ennek megváltoztatásához válasszuk ismét a
menüpontot. A képernyőkímélő beállításait tartalmazó menüben a nyílbillentyűkkel válasszuk a (Időkorlát) menüpontot és nyomjuk meg az Enter billentyűt. Ekkor egy párbeszédablak jelenik meg:Miután megváltoztattuk az értéket, a rendszerkonzol beállításához a
gomb kiválasztásával, majd az Enter billentyű lenyomásával térhetünk vissza.A
(Kilépés) választásával és az Enter lenyomásával folytathatjuk tovább a telepítés utólagos beállításait.Ha kiválasztjuk számítógépünk számára a megfelelő időzónát, akkor lehetővé tesszük, hogy magától elvégezze a helyi időhöz kapcsolódó összes szükséges korrekciót és helyesen kezelje az időzónákhoz kapcsolódó többi funkciót.
A példában az Egyesült Államok keleti időzónájában elhelyezkedő számítógépet láthatunk. A mi beállításaink természetesen a saját földrajzi helyzetünktől függenek.
User Confirmation Requested Would you like to set this machine's time zone now? [ Yes ] No
Fordítás:
Felhasználói megerősítés szükséges Beállítja most a számítógép időzónáját? [ Igen ] Nem
A
gomb és az Enter billentyű segítségével kiválaszthatjuk az időzóna beállítását.User Confirmation Requested Is this machine's CMOS clock set to UTC? If it is set to local time or you don't know, please choose NO here! Yes [ No ]
Fordítás:
Felhasználói megerősítés szükséges A számítógép órája az egységes világidőhöz (UTC) van beállítva? Ha a helyi időhöz vagy nem tudjuk, akkor itt válasszuk a NEM gombot! Igen [ Nem ]
A számítógépünk órájának beállításának megfelelően válasszuk a
vagy gombot, és nyomjuk meg az Enter billentyűt.A nyilakkal kiválasztható a megfelelő térség, amit aztán az Enter billentyűvel tudunk lezárni.
A megfelelő ország a nyílbillentyűkkel, valamint az Enter billentyűvel választható ki.
A nekünk megfelelő időzóna a nyilakkal választható meg, amit ezután az Enter billentyűvel tudunk jóváhagyni.
Confirmation Does the abbreviation 'EDT' look reasonable? [ Yes ] No
Az üzenet fordítása:
Megerősítés Ezek szerint az 'EDT' elfogadható? [ Igen ] Nem
Erősítsük meg, hogy az időzóna helyes-e. Ha rendbenlevőnek látszik, nyomjuk meg az Enter billentyűt a folytatáshoz.
Megjegyzés: Ez a rész csak a FreeBSD 7.X telepítésére vonatkozik, FreeBSD 8.X esetén ez a képernyő nem jelenik meg.
User Confirmation Requested Would you like to enable Linux binary compatibility? [ Yes ] No
A fordítás:
Felhasználói megerősítés szükséges Engedélyezi a Linux binárisok futtatását? [ Igen ] Nem
A
gomb kiválasztásával és az Enter lenyomásával megengedjük, hogy a Linuxra készült szoftvereket futtassunk FreeBSD-n. A telepítő ennek biztosításához még további csomagokat is fel fog rakni.Ha FTP-n keresztül telepítünk, akkor a számítógépnek csatlakoznia kell az internetre. Ilyenkor előfordulhat, hogy az FTP szerveren nem találhatóak meg a Linux kompatibilitással kapcsolatos csomagok. Ezeket azonban később is telepíthetjük.
Ezen beállítás használatával egy háromgombos egérrel lehetőségünk adódik a konzol és a felhasználói programok között kivágni és bemásolni szövegeket. Kétgombos egér használata esetén nézzük meg a moused(8) man oldalán, miként tudjuk emulálni a háromgombos működést. A következő példa egy nem USB-s (tehát PS/2-es vagy soros portra csatlakozó) egér beállítását illusztrálja:
User Confirmation Requested Does this system have a PS/2, serial, or bus mouse? [ Yes ] No
Fordítás:
Felhasználói megerősítés szükséges Csatlakozik a rendszeréhez PS/2-es, soros vagy buszos egér? [ Igen ] Nem
A PS/2, soros vagy buszos egér használatához válasszuk a
gombot, illetve az USB-s egérhez pedig a gombot, majd nyomjuk meg az Enter billentyűt.A nyílbillentyűk használatával keressük ki a
(Típus) menüpontot és nyomjuk le az Enter billentyűt.A példában használt egér típusa PS/2, ezért itt a alapértelmezés szerint felkínált
megfelelő. A protokoll megváltoztatásához a nyilakkal válasszunk ki egy másikat. Ezután gondoskodjunk róla, hogy az gombot választottuk ki és a kilépéshez nyomjuk meg az Enter billentyűt.A nyílbillentyűkkel válasszuk ki a
menüpontot és nyomjuk meg az Enter billentyűt.Mivel a példában szereplő rendszerhez egy PS/2 egér csatlakozik, ezért az alapértelmezett
menüpont megfelelőnek tűnik. A port megváltoztatásához használjuk a nyilakat, majd nyomjuk le az Enter billentyűt.Befejezésül a egérhez tartozó démon aktiválásához és kipróbálásához válasszuk ki a nyilakkal az
(Engedélyezés) menüpontot.Próbáljuk mozgatni a képernyőn megjelenő egérkurzort, és ellenőrizzük, hogy a kurzor a mozdulatainknak megfelelően reagál-e. Ha mindent rendben találunk, akkor válasszuk a
gombot és nyomjuk le az Enter billentyűt. Ellenkező esetben az egeret nem jól állítottuk be — válasszuk a gombot és kísérletezzünk tovább más beállításokkal.Az utólagos beállítások folytatásához válasszuk először az
(Kilépés) menüpontot, majd nyomjuk meg az Enter billentyűt.A csomagok előre lefordított binárisokat tartalmaznak, és használatukkal igen kényelmesen tudunk szoftvereket telepíteni.
Szemléltetés céljából most bemutatjuk az egyik ilyen csomag telepítését. Természetesen igény szerint más csomagokat is hozzávehetünk. A telepítés után a sysinstall parancs használható további csomagok telepítésére.
User Confirmation Requested The FreeBSD package collection is a collection of hundreds of ready-to-run applications, from text editors to games to WEB servers and more. Would you like to browse the collection now? [ Yes ] No
Az üzenet fordítása:
Felhasználói megerősítés szükséges A FreeBSD csomaggyűjteménye többezernyi azonnal használható alkalmazást tartalmaz, a szövegszerkesztőktől a játékokon keresztül a WEBszervereken át szinte mindent. Át kívánja lapozni most ezt a gyűjteményt? [ Igen ] Nem
A
kiválasztása és az Enter lenyomása után a csomagválasztó képernyő következik:Ekkor csak az adott telepítőeszközön elérhető csomagok fognak megjelenni.
Az összes csomagot az
(Mind) menüpont kiválasztásával láthatjuk, vagy leszűkíthetjük ezt egy adott kategóriára is. Álljunk a kiválasztott kategóriához tartozó menüpontra és nyomjuk meg az Enter billentyűt.Ezután egy menü fogja felsorolni az adott kategórián belül telepíthető csomagokat:
A példában a bash parancsértelmezőt választottuk ki. Válogassunk kedvünkre a csomagok között, és álljunk a telepíteni kívántakra, majd a Szóköz billentyű lenyomásával jelöljük be ezeket. Minden egyes csomag rövid leírása a képernyő bal alsó sarkában olvasható.
A Tab billentyű segítségével mozoghatunk az utoljára kiválasztott csomag, az
és gombok között.Miután bejelöltük az összes telepítésre szánt csomagot, a csomagválasztó menübe úgy tudunk visszatérni, ha a Tab billentyűvel átváltunk az
gombra és nyomjuk meg az Enter billentyűt.Ezeken felül a bal és jobb nyilak használhatóak az
és gombok közti váltásra. Ugyanezzel a módszerrel választható ki az gomb is, ami után az Enter billentyű megnyomásával visszajutunk a csomagválasztó menübe.A nyilakkal és a Tab billentyűvel válasszuk ki az
(Telepítés) gombot és nyomjuk meg az Enter billentyűt. Ekkor meg kell erősítenünk a csomagok telepítését:Az
kiválasztása majd az Enter billentyű lenyomása indítja el a csomagok telepítését. A telepítés befejezéséig különböző üzenetek fognak megjelenni. Figyeljünk az ilyenkor felbukkanó hibaüzenetekre!A beállítások véglegesítése a csomagok telepítése után folytatódik. Amennyiben egyetlen csomagot sem választottunk és szeretnénk továbblépni, akkor is az
(Telepítés) gombot válasszuk.A telepítés során legalább egy felhasználót érdemes hozzáadnunk a rendszerhez, mivel a rendszer használatához így nem kell root felhasználóként bejelentkezni. Általánosságban véve ahhoz egyébként is kicsi a gyökérpartíció, hogy root felhasználóként (rendszeradminisztrátorként) futtassunk rajta programokat, és gyorsan be is telik. A nagyobb veszélyt azonban itt olvashatjuk:
User Confirmation Requested Would you like to add any initial user accounts to the system? Adding at least one account for yourself at this stage is suggested since working as the "root" user is dangerous (it is easy to do things which adversely affect the entire system). [ Yes ] No
Felhasználói megerősítés szükséges Szeretnénk mosta rendszerbe felvenni felhasználói fiókokat? Ebben a lépésben legalább egy felhasználó felvétele javasolt, hiszen "root" felhasználóként veszélyes dolgozni (mivel így könnyen tehetünk olyan dolgokat, amelyek káros hatással lehetnek rendszerünkre). [ Igen ] Nem
Ezért válasszuk a
gombot és az Enter billentyű lenyomásával lépjünk tovább a felhasználók felvételéhez.A nyílbillentyűkkel válasszuk ki a
(Felhasználó) menüpontot és nyomjuk meg az Enter billentyűt.Amikor a Tab billentyűvel lépkedünk a kitöltendő mezők között, a képernyő alsó részén az alábbi leírások magyarázzák az egyes mezők tartalmát:
Az új felhasználó bejelentkezési neve (kötelező).
A felhasználó számszerű azonosítója (automatikusan létrejön, ha üresen hagyjuk).
A felhasználó bejelentkezési csoportjának neve (automatikusan létrejön, ha üresen hagyjuk).
A felhasználó jelszava (óvatosan bánjunk ezzel a mezővel!)
A felhasználó teljes neve (megjegyzés).
A felhasználó ezen csoportoknak is tagja (tehát rendelkezik az engedélyeikkel).
A felhasználó saját könyvtára (ha üresen hagyjuk, az alapértelmezés szerint töltődik ki).
A felhasználó által használt parancsértelmező (ha üresen hagyjuk, az alapértelmezés szerint töltődik, mint például /bin/sh).
Az ábrán a bejelentkezés után használt parancsértelmezőt a /bin/sh parancsértelmezőről a /usr/local/bin/bash parancsértelmezőre változtattuk, így most a korábban telepített bash parancsértelmezőt fogjuk használni. Itt ne is próbáljunk nem létező parancsértelmezőt kiválasztani, hiszen ekkor nem tudunk majd bejelentkezni. A BSD világban egyébként a C shell a leggyakrabban használt, amelyet a /bin/tcsh megadásával választhatjuk ki.
Az ábrán szereplő felhasználót ezenkívül még a wheel csoportba is felvettük, aminek köszönhetően képes lesz a rendszerünkben a root felhasználói jogaival rendelkező rendszeradminisztrátorrá válni.
Amikor mindent megfelelőnek találunk, nyomjunk az
gombra és ekkor ismét a felhasználók és csoportok karbantartását tartalmazó menü jelenik meg:Csoportokat is létre tudunk hozni, amennyiben erre szükségünk lenne. Ez a rész a telepítés befejezése után továbbra is elérhető a sysinstall parancs segítségével.
Amikor befejeztük a felhasználók hozzáadását, a nyilakkal válasszuk ki az
(Kilépés) menüpontot és a telepítés folytatásához nyomjuk meg az Enter billentyűt.Message Now you must set the system manager's password. This is the password you'll use to log in as "root". [ OK ] [ Press enter or space ]
Fordítása:
Üzenet Most meg kell adnia a rendszergazda jelszavát. Ezt a jelszót kell a "root" felhasználó bejelentkezésekor használni. [ OK ] [ Nyomja le az Enter vagy a Szóköz billentyűt ]
A root felhasználó jelszavának beállításához nyomjuk meg az Enter billentyűt.
A jelszót kétszer kell megadnunk. Felesleges megemlíteni, hogy gondoskodjunk arról az esetről is, ha véletlenül elfelejtenénk ezt a jelszót. Megemlítjük, hogy az itt begépelt jelszó nem lesz látható és a betűk helyett sem jelennek meg csillagok.
New password: Retype new password :
A jelszó sikeres megadása után a telepítés folytatódik.
Ha be szeretnénk még állítani egyéb hálózati szolgáltatást vagy valamilyen más konfigurációs lépést kívánunk még elvégezni, ezen a ponton megtehetjük vagy a telepítés után a sysinstall parancs kiadásával.
User Confirmation Requested Visit the general configuration menu for a chance to set any last options? Yes [ No ]
Fordítás:
Felhasználói megerősítés szükséges Végignézi még utoljára a beállításokat arra az esetre, ha véletlenül kihagytunk volna valamit? Igen [ Nem ]
Ha a nyilakkal a
gombot választjuk, majd megnyomjuk rajta az Enter billentyűt, akkor visszatérünk a telepítő főmenüjébe.Válasszuk ki a nyílbillentyűkkel a
(Kilépés a telepítőből) gombot és nyomjuk meg az Enter billentyűt. Ezután meg kell erősítenünk kilépési szándékunkat:User Confirmation Requested Are you sure you wish to exit? The system will reboot. [ Yes ] No
Fordítás:
Felhasználói megerősítés szükséges Valóban ki akar lépni? A rendszer ezt követően újra fog indulni! [ Igen ] Nem
Válasszuk a
gombot. Ha CD-meghajtóról indítottuk a telepítést, akkor a következő üzenet fog figyelmeztetni minket a lemez kivételére:Message Be sure to remove the media from the drive. [ OK ] [ Press enter or space ]
Fordítás:
Üzenet Ne felejtsük el kivenni a CD-lemezt a meghajtóból. [ OK ] [ Nyomjunk Entert vagy szóközt ]
A CD-meghajtó egészen az újraindítás megkezdéséig zárolt lesz, ezért csak ekkor tudjuk (gyorsan) kivenni a meghajtóból a lemezt. Nyomjuk meg az
gombot az újraindításhoz.A rendszer újraindul, legyünk résen és figyeljük a megjelenő hibaüzeneteket, erről bővebben lásd a 2.10.16 Szakaszban.
A hálózati szolgáltatások terén csekély tapasztalattal rendelkező kezdő felhasználók számára ijesztő lehet ezek beállítása. A hálózatok és többek közt az internet kezelése napjaink modern operációs rendszereink, így a FreeBSD-nek is az egyik fontos területe. Ezért nagyon hasznos ismernünk valamennyire a FreeBSD által felkínált hálózati lehetőségeket. A telepítés közben ezért a felhasználónak tisztában kell lennie a rendelkezésére álló szolgáltatásokkal.
A hálózati szolgáltatások olyan programok, amelyek a hálózat minden részéről fogadnak adatokat. Mindent el kell követnünk annak érdekében, hogy ezek a programok ne tehessenek semmilyen “kárt”. Sajnos a programozók sem tökéletesek, és az idők során már előfordult párszor, hogy a hálózati szolgáltatásokban maradtak hibák, amelyek kihasználásával a támadók rossz dolgokat tudtak csinálni. Ezért fontos, hogy csak is azokat a szolgáltatásokat engedélyezzük, amelyekre ténylegesen szükségünk van. Ha nem tudjuk eldönteni, akkor az a legjobb, ha egészen addig egyiket sem engedélyezzük, amíg valóban szükségünk nem lesz rájuk. A sysinstall újbóli elindításával vagy az /etc/rc.conf megfelelő beállításával mindig tudunk új szolgáltatásokat aktiválni.
A
(Hálózatok) menüpont kiválasztása után valami ilyesmit láthatunk:Ezek közül a 2.10.1 Szakaszban, ezért ez most nyugodtan kihagyható.
(Csatolók), vagyis az első menüpontról korábban már szó esett aAz
menüpont kiválasztásával engedélyezzük a BSD automatikus csatlakoztatásokért felelős segédeszközét (AMD, az AutoMounter Daemon). Ezt általában az NFS protokollal (lásd lentebb) együtt szokás használni a távoli állományrendszerek automatikus csatlakoztatásához. Itt nincs szükség semmilyen különleges beállításra.A következő sorban az
(Az AMD beállításai) menüpont szerepel. Kiválasztása után az AMD beállításait bekérő ablak fog felbukkani. Ez már számos alapértelmezett beállítást tartalmaz:-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map
A -a
kapcsolóval adjuk meg a
csatlakozási pontok alapértelmezett helyét,
amely ebben az esetben az /.amd_mnt. A
-l
kapcsolóval adjuk meg az
alapértelmezett log (napló)
állományt, habár a
syslogd használata során az
összes naplózási tevékenység a
rendszer naplózó démonján fut majd
keresztül. A /host
könyvtárba fognak csatlakozni a távoli
gépek exportált állományrendszerei,
míg a /net
könyvtárba a különböző
IP-címekről exportált
állományrendszerek kerülnek
csatlakoztatásra. Az /etc/amd.map
állomány tartalmazza az AMD
exportjainak alapértelmezett
beállításait.
Az
menüponton keresztül engedélyezhetjük az anonim FTP kapcsolatokat. A menüpont kiválasztásával számítógépünket egy anonim FTP szerverré tehetjük, azonban legyünk tekintettel a beállításhoz tartozó biztonsági veszélyekre! A kiválasztásakor egy ablak tájékoztat minket a beállítás részleteiről és felmerülő biztonsági kockázatokról.A
(Átjáró) menüpont használatával a korábbiakban tárgyaltak szerint állíthatjuk be számítógépünket hálózati átjárónak. Ugyanekkor a menüben nyílik lehetőségük kikapcsolni ezt a beállítást, amennyiben a telepítési folyamat korábbi lépései során véletlenül engedélyeztük volna.Az inetd(8) démont.
menüpont segítségével beállíthatjuk, vagy akár teljesen ki is kapcsolhatjuk a korábban tárgyaltA
(Levelezés) menüpontban beállíthatjuk a rendszer alapértelmezett MTA avagy levéltovábbító ügynökét (Mail Transfer Agent). Ennek hatására a következő menü jelenik meg:Itt válaszhatunk, hogy a különböző levélküldő rendszerek közül melyiket telepítsük alapértelmezettként. Egy ilyen alkalmazás lényegében nem több, mint egy levélküldésre használt szerver, amely továbbítja a rendszerben vagy az interneten található felhasználók számára a leveleket.
A
választásával a FreeBSD alapból felkínált megoldását, a népszerű sendmail szervert telepíthetjük. A (Helyi Sendmail) menüpont kiválasztásával szintén a sendmail lesz a telepítendő levélküldő szerver, azonban nem lesz képes az internetről érkező leveleket fogadni. Az itt felsorolt többi beállítás, tehát a és , a beállításához hasonlóan zajlik. Mind a kettő elektronikus levelek kézbesítésére használható, azonban bizonyos felhasználók a sendmail helyett inkább ezek valamelyikét használják.Valamelyik vagy éppen semelyik levéltovábbító szerver kiválasztása után az
(NFS kliens) beállítására vonatkozó menü jelentkezik.Az 29.3 Szakaszban olvashatunk részletesebben.
beállításával a rendszerünk NFS szerverekkel lesz képes kapcsolatba lépni. Egy ilyen NFS szerver az NFS protokoll segítségével a hálózaton keresztül elérhetővé tesz állományrendszereket. Ha gépünk független, akkor nem fontos kiválasztanunk ezt a menüpontot. A rendszernek később további beállításokra is szüksége lehet, amelyekről azAz
(NFS szerver) menüpont kiválasztásával hozzájárulunk, hogy rendszerünk NFS szerverként üzemeljen. Ehhez meg kell adnunk az RPC, vagyis a távoli eljáráshívások kiszolgálásának elindításához szükséges adatokat is. Az RPC használatával a különböző kiszolgálók és programok között tudjuk vezérelni a kapcsolatot.A sorban az
beállítása következik, ahol az időszinkronizációhoz kapcsolódó opciókat találjuk. Kiválasztásakor az ábrán szereplőhöz hasonló menü fog megjelenni:Ebből a menüből válasszuk ki a hozzánk legközelebb levő szevert. Egy közeli szerver megadásával az időszinkronizáció sokkalta pontosabbá válik, mivel a tőlünk távolabbi szerverek kapcsolatának késleltetése nagyobb lehet.
A következő beállítás az PCNFSD. Ennek kiválasztása során a Portgyűjteményből telepítésre kerül a net/pcnfsd csomag. Ez lényegében egy hasznos segédprogram, amellyel olyan operációs rendszerek számára tudunk hitelesítést szolgáltatni az NFS használata során, amelyek maguktól erre nem képesek, mint például a Microsoft MS-DOS rendszere.
A többi beállítás megtekintéséhez egy kicsit lejjebb kell haladnunk a listában:
Az rpcbind(8) és rpc.statd(8), valamint az rpc.lockd(8) segédprogramok mind a távoli eljáráshívásokhoz (Remote Procedure Call, RPC) használhatóak. Az rpcbind segédprogram az NFS szerverei és kliensei között felügyeli a kapcsolatot, ezért a használata az NFS szerverek és kliensek működéséhez elengedhetetlen. Az állapot figyeléséhez az rpc.statd démon felveszi a kapcsolatot a többi gépen futó rpc.statd démonokkal. A jelentett állapotok általában a /var/db/statd.status állományban találhatóak. Itt a következőként felsorolt elem az , amelynek kiválasztásával állományzárolási szolgáltatásokat érhetünk el. Ezt többnyire az rpc.statd démonnal együtt alkalmazzák a zárolásokat kérő gépek és a kérések gyakoriságának nyilvántartására. Míg ezekkel a beállításokkal gyönyörűen nyomon lehet követni a működést, az NFS szerverek és kliensek megfelelő működéséhez nem kötelező a használatuk.
Ahogy haladunk tovább a listában, a
következő elem a routed(8)
segédprogram a hálózati
útválasztó táblázatokat
tartja karban, felderíti az elérhető
útválasztókat és
kérésre bármelyik hozzá fizikailag
csatlakozó gép számára átadja
az általa nyilvántartott
útválasztási adatokat. Ezt
leginkább a helyi hálózat
átjárójaként működő
számítógépek
használják. Kiválasztásakor egy
ablak fog rákérdezni a segédprogram
helyére. Az itt alapból felkínált
érték általában megfelelő,
ezért nyugtázhatjuk az Enter
billentyű lenyomásával. Ezt
követően egy másik menü jelenik meg, ahol
a routed
beállításait adhatjuk meg. Itt
alapértelmezés szerint a -q
kapcsoló szerepel.
A következő sor az rwhod(8) démont a rendszer elindítása során. Az rwhod segédprogram a rendszerüzeneteket a hálózaton időközönként szétküldi vagy “figyelő” (consumer) módban összegyűjti ezeket. Ennek pontosabb részleteit az ruptime(1) és rwho(1) man oldalakon találhatjuk meg.
beállításé, aminek kiválasztásával el tudjuk indíttatni azAz sshd(8) démoné az utolsó előtti beállítás. Ez az OpenSSH biztonságos shell szervere, melyet a szabványos telnet és FTP szerverek helyett ajánlanak. Az sshd szerver tehát két gép közti biztonságos, titkosított kapcsolatok létrehozására használható.
A lista végén a
(TCP kiterjesztések) menüpontot találhatjuk. Segítségével a TCP RFC 1323 és RFC 1644 dokumentumokban leírt kiterjesztéseinek használatát engedélyezhetjük. Ezzel egyes gépek esetén felgyorsulhat a kapcsolat, azonban más esetekben pedig eldobódhat. Ez szerverek használatánál nem ajánlott, viszont független gépeknél kifizetődő lehet.Most, miután beállítottuk a hálózati szolgáltatásokat, lépjünk vissza a lista elején található
(Kilépés) menüpontra és folytassuk a beállítást a következő opcióval, vagy egyszerűen az kétszeri kiválasztásával, majd a (Kilépés a telepítőből) gomb lenyomásával lépjünk ki a sysinstall programból.Ha minden remekült ment, a képernyőn lentről felfelé gördülő üzeneteket fogunk látni, majd a rendszer várni fog tőlünk egy bejelentkezési nevet. A kiírt üzeneteket között a Scroll Lock lenyomása után a PgUp és PgDn billentyűk használatával tudunk lapozni. A Scroll Lock ismételt lenyomásával visszatérünk a bejelentkezéshez.
Nem minden esetben lesz látható az összes üzenet (a puffer végessége miatt), de miután bejelentkeztünk, ezeket a dmesg parancs kiadásával is megnézhetjük.
Bejelentkezni a telepítéskor megadott felhasználói név/jelszó párossal tudunk (a példában ez most rpratt). Lehetőleg ne jelentkezzünk be root felhasználóként!
A rendszer indításakor jellemzően előforduló üzenetek (a verzióra vonatkozó adatokat kihagytuk):
Copyright (c) 1992-2002 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. Timecounter "i8254" frequency 1193182 Hz CPU: AMD-K6(tm) 3D processor (300.68-MHz 586-class CPU) Origin = "AuthenticAMD" Id = 0x580 Stepping = 0 Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX> AMD Features=0x80000800<SYSCALL,3DNow!> real memory = 268435456 (262144K bytes) config> di sn0 config> di lnc0 config> di le0 config> di ie0 config> di fe0 config> di cs0 config> di bt0 config> di aic0 config> di aha0 config> di adv0 config> q avail memory = 256311296 (250304K bytes) Preloaded elf kernel "kernel" at 0xc0491000. Preloaded userconfig_script "/boot/kernel.conf" at 0xc049109c. md0: Malloc disk Using $PIR table, 4 entries at 0xc00fde60 npx0: <math processor> on motherboard npx0: INT 16 interface pcib0: <Host to PCI bridge> on motherboard pci0: <PCI bus> on pcib0 pcib1: <VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0 pci1: <PCI bus> on pcib1 pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11 isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0 isa0: <ISA bus> on isab0 atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0 ata0: at 0x1f0 irq 14 on atapci0 ata1: at 0x170 irq 15 on atapci0 uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci0 usb0: <VIA 83C572 USB controller> on uhci0 usb0: USB revision 1.0 uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub0: 2 ports with 2 removable, self powered chip1: <VIA 82C586B ACPI interface> at device 7.3 on pci0 ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xe800-0xe81f irq 9 at device 10.0 on pci0 ed0: address 52:54:05:de:73:1b, type NE2000 (16 bit) isa0: too many dependant configs (8) isa0: unexpected small tag 14 fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0 fdc0: FIFO enabled, 8 bytes threshold fd0: <1440-KB 3.5" drive> on fdc0 drive 0 atkbdc0: <keyboard controller (i8042)> at port 0x60-0x64 on isa0 atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0 kbd0 at atkbd0 psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: model Generic PS/2 mouse, device ID 0 vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 sc0: <System console> at flags 0x1 on isa0 sc0: VGA <16 virtual consoles, flags=0x300> sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0 sio0: type 16550A sio1 at port 0x2f8-0x2ff irq 3 on isa0 sio1: type 16550A ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode ppc0: FIFO with 16/16/15 bytes threshold ppbus0: IEEE1284 device found /NIBBLE Probing for PnP devices on ppbus0: plip0: <PLIP network interface> on ppbus0 lpt0: <Printer> on ppbus0 lpt0: Interrupt-driven port ppi0: <Parallel I/O> on ppbus0 ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master using UDMA33 ad2: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata1-master using UDMA33 acd0: CDROM <DELTA OTC-H101/ST3 F/W by OIPD> at ata0-slave using PIO4 Mounting root from ufs:/dev/ad0s1a swapon: adding /dev/ad0s1b as swap device Automatic boot in progress... /dev/ad0s1a: FILESYSTEM CLEAN; SKIPPING CHECKS /dev/ad0s1a: clean, 48752 free (552 frags, 6025 blocks, 0.9% fragmentation) /dev/ad0s1f: FILESYSTEM CLEAN; SKIPPING CHECKS /dev/ad0s1f: clean, 128997 free (21 frags, 16122 blocks, 0.0% fragmentation) /dev/ad0s1g: FILESYSTEM CLEAN; SKIPPING CHECKS /dev/ad0s1g: clean, 3036299 free (43175 frags, 374073 blocks, 1.3% fragmentation) /dev/ad0s1e: filesystem CLEAN; SKIPPING CHECKS /dev/ad0s1e: clean, 128193 free (17 frags, 16022 blocks, 0.0% fragmentation) Doing initial network setup: hostname. ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255 inet6 fe80::5054::5ff::fede:731b%ed0 prefixlen 64 tentative scopeid 0x1 ether 52:54:05:de:73:1b lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 Additional routing options: IP gateway=YES TCP keepalive=YES routing daemons:. additional daemons: syslogd. Doing additional network setup:. Starting final network daemons: creating ssh RSA host key Generating public/private rsa1 key pair. Your identification has been saved in /etc/ssh/ssh_host_key. Your public key has been saved in /etc/ssh/ssh_host_key.pub. The key fingerprint is: cd:76:89:16:69:0e:d0:6e:f8:66:d0:07:26:3c:7e:2d root@k6-2.example.com creating ssh DSA host key Generating public/private dsa key pair. Your identification has been saved in /etc/ssh/ssh_host_dsa_key. Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub. The key fingerprint is: f9:a1:a9:47:c4:ad:f9:8d:52:b8:b8:ff:8c:ad:2d:e6 root@k6-2.example.com. setting ELF ldconfig path: /usr/lib /usr/lib/compat /usr/X11R6/lib /usr/local/lib a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout /usr/X11R6/lib/aout starting standard daemons: inetd cron sshd usbd sendmail. Initial rc.i386 initialization:. rc.i386 configuring syscons: blank_time screensaver moused. Additional ABI support: linux. Local package initialization:. Additional TCP options:. FreeBSD/i386 (k6-2.example.com) (ttyv0) login: rpratt Password:
Az RSA és DSA kulcsok generálása a lassabb gépeken sokág is eltarthat, habár ez mindig csak a friss telepítések utáni első indításkor történik meg. A rendszer későbbi indulásai ettől már gyorsabbak lesznek.
Ha X szervert is beállítottunk és választottunk hozzá egy alapértelmezett munkakörnyezetet, akkor ezt a parancssorból a startx kiadásával elindíthatjuk el.
Fontos, hogy mindig szabályosan állítsuk le az operációs rendszert, ne kapcsoljuk ki csak úgy egyszerűen a számítógépünket! A leállításhoz először a su parancs kiadásával, majd itt a root jelszavának megadásával vegyük fel az ehhez szükséges rendszeradminisztrátori jogosultságokat. Ez viszont csak abban az esetben fog működni, ha a felhasználónk tagja a wheel csoportnak. Minden más esetben egyszerűen jelentkezzünk be root felhasználóként és használjuk a shutdown -h now parancsot.
The operating system has halted. Please press any key to reboot.
A fenti üzenet jelzi, hogy a leállító parancs kiadása után már kikapcsolhatjuk a számítógépet, vagy ha ehelyett egy billentyűt nyomunk le, akkor a gép újraindul.
A Ctrl+Alt+Del billentyűkombináció használatával is újra tudjuk indítani a rendszert, azonban ez normál működés közben nem ajánlott.
A most következő szakaszban azokra a telepítés során felmerülő problémákra próbálunk meg megoldásokat adni, amelyeket eddig már sokan jeleztek nekünk. Ezek mellett szerepel néhány kérdés és válasz is a FreeBSD és az MS-DOS vagy Windows közös használatáról.
A PC architektúra különféle korlátozásai miatt szinte lehetetlen 100%-ban megbízhatóvá tenni az eszközök felderítését, azonban ennek hibája kapcsán néhány dolgot még tenni tudunk.
Ellenőrizzük a Hardware Notes (Hardverjegyzék) című dokumentumban, hogy az adott hardvert a FreeBSD valóban ismeri.
Amennyiben a hardvereszközünket a rendszer ismeri, azonban még mindig jelentkeznek fagyások vagy egyéb gondok, készítenünk kell egy saját rendszermagot. Ezzel olyan eszközök támogatását is beépíthetjük a rendszermagba, amelyek eredetileg nem szerepelnek a GENERIC rendszermagban. A telepítéshez készített rendszerindító lemezeken található rendszermag a legtöbb eszközt a gyári IRQ, IO-cím és DMA csatorna beállításaik mentén próbálja felkutatni. Ha viszont a hardverünket átállítottuk, ennek megfelelően módosítanunk kell a rendszermag beállításait és újra kell fordítanunk, hogy a FreeBSD tudja, hol is keresse az eszközt.
Olyan is adódhat, hogy egy nem létező eszköz keresése egy utána keresendő másik, jelenlevő eszköz felkutatását akadályozza meg. Ilyenkor az ütköző meghajtókat le kell tiltani.
Megjegyzés: Egyes problémák elkerülhetőek vagy csillapíthatóak a különböző hardverösszetevők, különösen az alaplapi firmware frissítésével. Az alaplap firmware-jére sokszor csak BIOS-ként hivatkoznak, és a legtöbb alaplap- vagy számítógépgyártó honlapján találhatjuk meg ezeket, valamint a rájuk vonatkozó utasításokat.
A legtöbb gyártó azonban erősen tiltakozik az alaplapi BIOS-frissítések ellen, és csak indokolt esetekben, például kritikus javításoknál javasolják. A frissítés kimenetele lehet rossz is, aminek következménye a BIOS tartós károsodása.
A FreeBSD jelenleg nem támogatja a Double Space™ alkalmazással tömörített állományrendszereket, ezért a FreeBSD csak úgy tud az adataihoz hozzáférni, ha előtte kitömörítjük ezeket. Ezt a
menü (Programok) > (Rendszereszközök) menüjében található Compression Agent (Lemeztömörítés) elindításával tehetjük meg.A FreeBSD támogatja az MS-DOS alapú (gyakran csak FAT típusúnak nevezett) állományrendszereket. A mount_msdosfs(8) parancs segítségével az ilyen rendszerek könnyedén becsatlakoztathatók a már létező könyvtárszerkezetbe, amivel így el tudjuk érni a tartalmát. A mount_msdosfs(8) programot általában nem közvetlenül hívjuk meg, hanem az /etc/fstab vagy a mount(8) segédprogram megfelelő paraméterezésével.
Az /etc/fstab állományban általában így néz ki egy ilyen sor:
/dev/ad0sN /dos msdosfs rw 0 0
Megjegyzés: A művelet végrehajtásához a /dos könyvtárnak már léteznie kell. Az /etc/fstab pontos formátumával kapcsolatban a fstab(5) man oldalt olvassuk el.
Az MS-DOS állományrendszerek esetében a mount(8) parancsot többnyire így adjuk ki:
# mount -t msdosfs /dev/ad0s1 /mnt
Ebben a példában a MS-DOS állományrendszer az elsődleges merevlemez első partícióján helyezkedik el. A mi helyzetünk ettől eltérő lehet, ezért ehhez vizsgáljuk meg a dmesg és mount parancsok kimeneteit. Segítségükkel elegendő információt tudunk összeszedni a gépünkön található partíciók kiosztásáról.
Megjegyzés: Előfordulhat, hogy a FreeBSD a többi operációs rendszertől eltérő módon számozza a slice-okat (vagyis az MS-DOS partíciókat). Konkrétan: a kiterjesztett MS-DOS partíciók általában nagyobb sorszámot kapnak, mint az elsődleges MS-DOS partíciók. Az fdisk(8) segédprogram segíthet megállapítani, hogy mely slice-ok tartoznak a FreeBSD-hez és melyek más operációs rendszerekhez.
A mount_ntfs(8) parancs használatával az NTFS partíciók hasonló módon csatlakoztathatóak.
2.11.3.1. A rendszerem teljesen leáll amikor az indítás során eszközöket próbál megtalálni, vagy furcsán viselkedik a telepítés során, esetleg a floppy meghajtót nem is keresi.
A FreeBSD az i386, amd64 és ia64 platformokon az indítás közben az eszközök felderítésében erősen építkeznek a rendszeren elérhető ACPI szolgáltatásra. Sajnos még mindig vannak hibák az ACPI meghajtóban, az alaplapokban és a BIOS-okban. A rendszerbetöltő harmadik fokozatában viszont az hint.acpi.0.disabled megadásával kikapcsolható az ACPI használata:
set hint.acpi.0.disabled="1"
Ez a beállítás a rendszer minden egyes indításakor törlődik, ezért a hint.acpi.0.disabled="1" bejegyzést fel kell vennünk a /boot/loader.conf állományba. A rendszerbetöltő működéséről részletesebben a 12.1 Szakaszban olvashatunk.
2.11.3.2. A FreeBSD telepítése után először indítom el a merevlemezről a rendszert, a rendszermag betöltődik és nekilát felkutatni a hardvereszközöket, azonban megáll a következő üzenettel:
changing root device to ad1s1a panic: cannot mount root
Mi lehet a gond? Mit tegyek?
Mit jelent a bios_drive:interface(unit,partition)kernel_name a rendszerindítás során megjelenő súgóban?
Ez egy régóta fennálló probléma olyan rendszerek esetén, ahol a rendszerindításhoz használt lemez nem az első. A BIOS a FreeBSD-től eltérő sorszámozást használ, és az általa alkalmazott megfeleltetések megfejtése nehézkes.
Amikor a rendszer indítására használt lemez nem az első lemez a rendszerünkben, segítenünk kell a FreeBSD-nek a megtalálásában. Két gyakori helyzet alakulhat ki, és mind a kettőben el kell árulnunk a FreeBSD-nek, hogy hol található a rendszer indításához használható gyökér állományrendszer. Ezt a lemez BIOS-ban nyilvántartott sorszámának, típusának és a neki megfelelő FreeBSD szerinti lemezszám megadásával tehetjük meg.
Az első szituációban két IDE-lemezünk van, mind a kettőt masterként állítottuk be a hozzájuk tartozó IDE-buszokon, és a közülük a másodikról akarjuk indítani a FreeBSD-t. A BIOS ezeket 0. és 1. lemezként látja, miközben a FreeBSD pedig ad0 és ad2 eszközként.
A FreeBSD 1. BIOS-számozású lemezen van, amelynek a típusa ad és a FreeBSD szerinti a 2 sorszámot viseli. Ezért ezt kell használnunk:
1:ad(2,a)kernel
Ha az elsődleges buszon van egy slave meghajtónk, akkor mindez nem szükséges (és valószínűleg rossz is).
A második szituációban egy SCSI-lemezről akarjuk indítani a rendszert, miközben egy vagy több IDE-lemez is található a gépünkben. Ebben az esetben a FreeBSD szerinti sorszám kisebb lesz, mint a BIOS szerinti. Ha tehát a két IDE-lemezünk mellett van még egy SCSI-lemez is, akkor annak a BIOS szerinti sorszáma 2, a típusa da és a FreeBSD szerinti sorszáma pedig 0. Ennek megfelelően a
2:da(0,a)kernel
sorral tudjuk elárulni a FreeBSD-nek, hogy a BIOS szerint 2. lemezről akarjuk indítani, amely a rendszerben található első SCSI-lemeznek felel meg. Ha csak egy IDE-lemezünk van, akkor a sort kezdjük az 1: beírásával.
Miután megtaláltuk a megfelelő értékeket, a hozzá tartozó sort egy szövegszerkesztő segítségével tegyük közvetlenül a /boot.config állományba. A FreeBSD ezen állomány tartalmát fogja alapból felhasználni a boot: bekérésénél, hacsak másképpen nem utasítjuk.
2.11.3.3. A telepítés után először próbálom meg elindítani a merevlemezről a FreeBSD-t, azonban a rendszerválasztó mindig csak F? opciókat kínál fel, és a rendszer indítása sem halad tovább.
A FreeBSD telepítése során rosszul adtunk meg a partíciószerkesztőben a merevlemezhez tartozó geometriát. Menjünk vissza a partíciószerkesztőhöz és adjuk meg újra a merevlemezünk helyes geometriáját. Ennek használatához pedig a FreeBSD-t is újra kell telepítenünk.
Ha egyáltalán képtelenek vagyunk megállapítani a merevlemezhez tartozó geometriát, akkor próbáljuk meg ezt: a lemez elején hozzunk létre egy kis méretű DOS partíciót és rakjuk utána a FreeBSD-t. Amikor a telepítőprogram észreveszi a DOS partíciót, megpróbálja magától kikövetkeztetni belőle a helyes geometriát, ami általában működik is.
Ez a tanács ugyan már nem érvényes, de álljon itt felvilágosításként:
Ha teljesen egy FreeBSD alapú szerver vagy munkaállomás kialakítására szánjuk a számítógépünket, és nem törődünk a DOS-szal, Linuxszal és a többi operációs rendszerrel történő (jövőbeli) kompatibilitással, használhatjuk akár az egész lemezt is (a partíciószerkesztőben ez az
opció). Ezzel egy olyan nem szabványos beállítást engedélyezünk, amivel a FreeBSD elfoglalja a lemezt annak legelső szektorától a legutolsó szektoráig. Ilyenkor ugyan el tudunk tekinteni a geometriával kapcsolatos beállításoktól, azonban így a FreeBSD-n kívül semmilyen más operációs rendszert nem tudunk majd futtatni a gépen.
2.11.3.4. A rendszer megtalálja a ed(4) hálózati kártyámat, azonban folyamatosan hibát ad időtúllépésre hivatkozva.
Az említett kártya valószínűleg a /boot/device.hints állományban beállítottaktól eltérő IRQ-t használ. A ed(4) meghajtó alapértelmezés szerint nem használ “szoftveres” beállításokat (amiket DOS-ban az EZSETUP használatával adunk meg), viszont engedélyezhetjük, ha a kártyánál megadjuk az -l beállítást.
Hardveresen ezt a kártyán levő jumperek segítségével állíthatjuk be (ehhez változtassuk meg a rendszermag beállításait is, amennyiben szükséges), vagy a -l kapcsolón keresztül a hint.ed.0.irq="-l" megadásával utasíthatjuk a rendszermagot az IRQ szoftveres beállítására.
Másik lehetőség, amikor a kártyánk a 9-es IRQ-t használja, amelyet általában megosztanak a 2-es IRQ-val, ami gyakori problémák forrása (különösen abban az esetben, amikor a VGA kártya a 2-es IRQ-t használja!) lehet. Lehetőleg ne használjuk a 2-es és 9-es IRQ-kat.
Amikor a sysinstall programot egy X11 terminálban futtatom, a sárga színű betűket viszonylag nehéz olvasni a világosszürke háttérrel. Esetleg lehet valahogy növelni a kontrasztot az alkalmazás használatakor?
Ha az X11 telepítése után a sysinstall által választott színekkel nem olvasható a szöveg xterm(1) vagy rxvt(1) terminálokban, akkor vegyük fel a következő sort a felhasználói könyvtárunkban levő .Xdefaults konfigurációs állományunkba: XTerm*color7:#c0c0c0. Ezzel majd egy sötétebb szürke hátteret kapunk.
Ebben a szakaszban megtudhatjuk, hogyan telepítsük a FreeBSD-t speciális esetekben.
A telepítés ezen fajtáját “fej nélküli telepítésnek” (headless install) hívják, mivel a gép, amire a FreeBSD-t telepíteni akarjuk, nem rendelkezik monitorral vagy éppen még VGA kimenettel sem. Felmerülhet a kérdés: hogyan lehetséges mindez? A soros vonali konzol használatával! A soros konzol segítségével lényegében egy másik számítógép monitorját és billentyűzetét használjuk. Ennek megvalósításához elsőként kövessük a rendszerindító pendrive készítésének 2.3.7 Szakaszban leírt lépéseit, vagy töltsük le a megfelelő ISO image-et a telepítéshez, lásd 2.13.1 Szakasz.
A következő lépésekkel tehetjük képessé a soros konzolon keresztüli rendszerindításra: (CD-lemez használata esetén az első lépésre nincs szükség)
A rendszerindító pendrive átállítása soros konzolra
Ha a korábban előkészített pendrive-val most csak egyszerűen elindítanánk a FreeBSD-t, akkor a megszokott telepítési módban indulna el. Mi viszont azt akarjuk, hogy a telepítéshez a FreeBSD a soros konzolon keresztül induljon el. Ehhez csatlakoztassuk az eszközt a számítógéphez, valamint a mount(8) paranccsal FreeBSD rendszerünkhöz pedig a hozzátartozó állományrendszert.
# mount /dev/da0a /mnt
Megjegyzés: A konkrét eszköznevet és csatlakozási pontot módosítsuk a saját környezetünknek megfelelően.
Most, miután már fizikailag és logikailag is csatlakoztattuk a pendrive-ot, be kell állítanunk a soros konzol használatára rendszerindítás közben. Ehhez egy loader.conf nevű állományt kell elhelyeznünk a pendrive állományrendszerén a soros konzolra (mint rendszerkonzolra) vonatkozó beállítással:
# echo 'console="comconsole"' >> /mnt//boot/loader.conf
Miután a pendrive-on sikeresen elvégeztük a szükséges beállítást, válasszuk le a umount(8) parancs kiadásával:
# umount /mnt
Most már leválaszthatjuk a pendrive-ot, és ugorjunk közvetlenül a harmadik lépésre.
A null-modem kábel csatlakoztatása
Össze kell kötnünk a két számítógépet egy null-modem kábellel. Nincs más teendőnk, mit összekapcsolni a két gép soros portjait. Itt a szokásos soros kábel nem működik, konkrétan null-modem kábelre van szükség, mivel benne néhány vezetéket máshogy kötöttek be.
A telepítő CD beállítása soros konzolra
Ha a telepítésre szánt ISO image-ből készített lemezzel (lásd 2.13.1 Szakasz) a FreeBSD normál módban indul el. A soros konzol használatához viszont kibontani, módosítani és újragenerálni kell az adott image-et mielőtt lemezre írnánk.
A korábban, például a FreeBSD-8.1-RELEASE-i386-disc1.iso néven letöltött image-ből a tar(1) segédprogrammal tudjuk kinyerni a benne tárolt összes állományt:
# mkdir /a/hasznalt/iso/helye # tar -C /a/hasznalt/iso/helye -pxvf FreeBSD-8.1-RELEASE-i386-disc1.iso
Ezt követően módosítanunk kell a telepítőlemezt a soros konzol használatára. Ehhez egy loader.conf állományt kell hozzáadnunk a kibontott ISO image tartalmához. Ebben állítjuk be a soros konzolt rendszerkonzolnak:
# echo 'console="comconsole"' >> /a/hasznalt/iso/helye/boot/loader.conf
Ezután készítsünk egy új ISO image-et a módosított tartalom alapján. Ehhez a sysutils/cdrtools port részeként elérhető mkisofs(8) segédprogramot használjuk:
# mkisofs -v -b boot/cdboot -no-emul-boot -r -J -V "soroskonzolos" -o soroskonzolos-FreeBSD-8.1-RELEASE-i386-disc1.iso /a/hasznalt/iso/helye
Most már van egy megfelelően összeállított ISO image-ünk, amelyet CD-lemezre tudunk írni a kedvenc CD-író alkalmazásunkkal.
A telepítés indítása
Most már ideje elkezdeni a telepítést. Tegyük a boot.flp image-et tartalmazó lemezt a fej nélkül telepítendő gép meghajtójába és kapcsoljuk be.
Kapcsolódás a fej nélküli gépre
Ezután a cu(1) parancs felhasználásával kapcsolódjunk rá a gépre:
# cu -l /dev/cuau0
Ezt FreeBSD 7.X esetén így kell használnunk:
# cu -l /dev/cuad0
Ezzel készen is vagyunk! Innentől a cu által megnyitott kapcsolaton keresztül tudjuk vezérelni a fej nélküli számítógépet. Hamarosan betölti a rendszermagot, majd megkérdezi a használt terminál típusát. Itt válasszuk ki a színes FreeBSD konzolt (FreeBSD color console) és folytassuk a telepítést a megszokott módon.
Megjegyzés: Az ismétlések elkerülése végett a továbbiakban a “FreeBSD lemez” a megvásárolható vagy a magunk által készített FreeBSD CD-re vagy DVD-re vonatkozik.
Adódhatnak olyan esetek, amikor létre kell hoznunk a FreeBSD telepítésére használt saját eszközünket és/vagy forrásunkat. Ez lehet egy tetszőleges fizikai eszköz, például szalag, vagy bármilyen olyan forrás, ahonnan a sysinstall képes állományokat elérni, például egy FTP oldal vagy egy MS-DOS partíció.
Például:
Egy FreeBSD lemezünk van és több hálózaton kapcsolódó számítógépünk. Készíteni akarunk egy helyi FTP oldalt a FreeBSD lemez felhasználásával, és így a hálózaton levő gépre az internet helyett innen telepítjük a rendszert.
Van egy FreeBSD lemezünk, azonban a FreeBSD-nek nem sikerült felismernie a CD/DVD-meghajtónkat, viszont az MS-DOS/Windows-nak igen. Felmásoljuk a FreeBSD telepítéséhez használt állományokat ugyanazon a számítógépen található egyik DOS partícióra, majd a FreeBSD-t ezekkel telepítjük.
A gépben, amelyre telepíteni akarunk, nincs CD/DVD-meghajtó vagy hálózati kártya, viszont “Laplink stílusú” soros vagy párhuzamos kábellel hozzá tudunk kapcsolódni egy olyan számítógépről, amelyben viszont van.
Készíteni akarunk a FreeBSD telepítésére használható szalagot.
A FreeBSD Projekt minden kiadás részeként architektúránként elérhetővé tesz legalább két CD image-et (“ISO image-et”). Ha rendelkezünk CD-íróval, ezeket az image-eket fel-, illetve ki tudjuk írni (“égetni”) CD-re, és a FreeBSD telepítésére tudjuk használni. Tehát ha van a kezünk ügyében CD-író és olcsón jutunk nagyobb sebességű interneteléréshez, akkor a FreeBSD telepítésének ez a legkönnyebb módja.
A megfelelő ISO image-ek letöltése
Az egyes kiadások ISO image-ei letölthetőek a ftp://ftp.FreeBSD.org/pub/FreeBSD/ISO-IMAGES-architektúra/változat címről vagy annak legközelebbi tükrözéséről. Az architektúra és változat részeket igényeinknek megfelelően helyettesítsük.
Az említett könyvtár általában a következő lemezek image-eit tartalmazza:
Táblázat 2-4. FreeBSD 7.X és 8.X ISO image-ek nevei és jelentései
Állománynév | Tartalom |
---|---|
FreeBSD-változat-RELEASE-architektúra-bootonly.iso | Ezzel a CD image-dzsel tudjuk a FreeBSD CD-meghajtóról indításával elkezdeni a telepítést. Fontos tudnunk azonban, hogy ez az image nem tartalmazza a FreeBSD telepítéséhez szükséges komponenseket. Ezt a rendszer indítása után hálózaton keresztül (például egy FTP szerver segítségével) tudjuk megtenni. |
FreeBSD-változat-RELEASE-architektúra-dvd1.iso.gz | Ez a DVD image minden, az alap FreeBSD rendszer telepítéséhez szükséges komponenst tartalmaz, bináris csomagokkal és dokumentációval együtt. Ezenkívül még “élő” rendszert is tudunk indítani vele, közvetlenül a lemezről. |
FreeBSD-változat-RELEASE-architektúra-memstick.img | Ez az image egy USB pendrive-ra írható, és minden olyan számítógépen használható, amely képes ilyen eszközről elindulni. Támogatja az “élő” módot is, amellyel rendszerünket állíthatjuk helyre. Ez az image nem érhető el FreeBSD 7.3 vagy korábbi rendszerek esetén. |
FreeBSD-változat-RELEASE-architektúra-disc1.iso | Ez az image tartalmazza az alap FreeBSD operációs rendszert és a hozzá tartozó dokumentációt, de semmilyen más további csomagot nem. |
FreeBSD-változat-RELEASE-architektúra-disc2.iso | Ezen az image-en bináris csomagok találhatóak. Ilyen a FreeBSD 8.0 és az utána következő változatoknál már nincs. |
FreeBSD-változat-RELEASE-architektúra-disc3.iso | Ez egy másik image, amelyen szintén bináris csomagok találhatóak. Ilyen a FreeBSD 8.0 és az utána következő változatoknál már nincs. |
FreeBSD-változat-RELEASE-architektúra-docs.iso | A FreeBSD dokumentációja. |
FreeBSD-változat-RELEASE-architektúra-livefs.iso | Ez az image a rendszerhelyreállításhoz használt “élő” indítási módot támogatja, telepítést alapvetően nem lehet vele végezni. |
Megjegyzés: A FreeBSD 7.3 és a FreeBSD 8.1 előtti 7.X, illetve 8.X kiadások egy ettől eltérő elnevezési sémát követnek: a hozzájuk tartozó ISO image-ek neveiben nem szerepel a FreeBSD- előtag.
Le kell töltenünk az első lemez vagy (ha elérhető) a bootonly lemez ISO image-einek egyikét. A kettőt egyszerre viszont ne töltsük le, mivel a disc1 image tartalmaz mindent, ami a bootonly image-en megtalálható.
Akkor használjuk a bootonly jelzésű image-et, ha szélessávú interneteléréssel rendelkezünk. Segítségével el tudjuk kezdeni a FreeBSD telepítését, és szükség szerint a port/csomagrendszer (lásd 4 fejezet) használatával csomagokat tudunk letölteni és telepíteni.
A DVD image-ét (dvd1) akkor érdemes használni, ha a FreeBSD adott kiadásának telepítése mellett igényt tartunk valamennyi csomagra is.
A további lemezek image-ei is hasznosak lehetnek, de nem feltétlenül kellenek a telepítéshez, főleg abban az esetben, amikor gyors interneteléréssel rendelkezünk.
A CD-k írása
Ezután lemezekre kell írnunk a letöltött image-eket. Amennyiben ezt egy másik FreeBSD rendszeren végezzük, ennek részleteiről a 18.6 Szakasz számol be (különösen a 18.6.3 Szakasz és a 18.6.4 Szakasz leírása).
Ha másik platformon végezzük ezt a műveletet, akkor az adott platformon felkínált CD-író szoftverekkel kell dolgoznunk. Az image-ek szabványos ISO formátumúak, amelyet szinte az összes CD-író alkalmazás ismer.
Megjegyzés: Ha kíváncsiak vagyunk egy saját FreeBSD kiadás elkészítésére, olvassuk el a kiadások szervezéséről szóló cikket (angolul).
A FreeBSD lemezeken az FTP oldalakéhoz hasonló elrendezést találunk. Ez megkönnyíti a hálózatunkban található számítógépekhez a FreeBSD telepítésére használható helyi FTP oldal létrehozását.
Az FTP oldalnak otthont adó FreeBSD számítógépen tegyük a CD-t a meghajtóba, majd csatlakoztassuk a /cdrom könyvtárba.
# mount /cdrom
Hozzunk létre egy anonim FTP hozzáférést az /etc/passwd állományban. A vipw(8) segítségével tehát illesszük be a következő sort az /etc/passwd állományba:
ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent
Gondoskodjuk róla, hogy az FTP szolgáltatás engedélyezve legyen az /etc/inetd.conf állományban.
Most már bárki, aki képes csatlakozni ehhez a számítógéphez, a telepítés típusának ki tudja választani az FTP-t. Az FTP oldalak menüjében válassza az “Other” (Egyéb) pontot, majd adja meg az ftp://gépnév címet.
Megjegyzés: Ha az FTP-n csatlakozó kliensek rendszerindításhoz használt eszköze (általában a floppy) verziója nem egyezik meg tökéletesen a helyi FTP oldalon találhatóval, akkor a sysinstall nem engedi a telepítést. Ha a változatok nem hasonlóak és ezt felül akarjuk bírálni, akkor be kell lépnünk az
(Beállítások) menübe, ahol át kell állítanunk a terjesztés nevét (distribution name) (bármelyik)-re.
Figyelem: A fenti megközelítés kizárólag csak egy tűzfallal védett helyi hálózaton javasolt. FTP szolgáltatás létrehozása az interneten (és nem a helyi hálózatunkban) levő számítógépek számára különböző támadásoknak és egyéb kellemetlenségeknek teszi ki a számítógépünket. Határozottan javasoljuk, hogy ebben az esetben különösen ügyeljünk a biztonságra.
Ha floppylemezről kellene telepítenünk (amit viszont semmiképpen sem ajánlanánk) egy nem támogatott hardvereszköz miatt, vagy mert egyszerűen szeretjük a dolgok nehezebbik oldalát megfogni, akkor ehhez először elő kell készítenünk pár lemezt.
Legalább annyi 1,44 MB-os lemezre van szükségünk, mint amennyire ráférnek a base (alapterjesztés) könyvtárban található állományok. Ha DOS-ban hozzuk létre ezeket a lemezeket, akkor a használatukhoz meg kell formázni ezeket az MS-DOS FORMAT parancsával. Windows használata esetén az Windows Explorerben (Intézőben) tudjuk megformázni a lemezeket (kattintsunk a jobb gombbal az A: meghajtóra, majd válasszuk a “Format” (Formázás) menüpontot).
Ne bízzunk a gyárilag formázott (“pre-formatted” jelzésű) lemezekben! Menjünk biztosra és formázzuk meg mi magunk is lemezeket. A felhasználóinktól régebben számtalan olyan panasz érkezett, amely a helytelenül megformázott lemezből fakadt, ezért erre most kiemelten felhívjuk a figyelmet.
A formázás abban az esetben sem bizonyul rossz ötletnek, ha egy másik FreeBSD gépen gyártjuk le a lemezeket, habár nem kell mindegyik lemezre DOS állományrendszert tennünk. Helyette a bsdlabel és newfs parancsok használatával UFS állományrendszert is tehetünk rájuk, ahogy (1,44 MB méretű lemezek esetén) ezt az alábbi parancsok mutatják:
# fdformat -f 1440 fd0.1440 # bsdlabel -w fd0.1440 floppy3 # newfs -t 2 -u 18 -l 1 -i 65536 /dev/fd0
Ezután a többi állományrendszerhez hasonlóan a lemezeket tudjuk csatlakoztatni és írni.
Miután megformáztuk a lemezeket, rájuk kell másolnunk az állományokat. A terjesztésekhez tartozó állományokat adott méretű darabokra szeleteltük, így kényelmesen ráférnek egy hagyományos 1,44 MB méretű floppyra. Menjünk végig az összes floppyn és mindegyikre pakoljuk fel a lehető legtöbb állományt egészen addig, amíg így az összes szükséges terjesztést össze nem szedtük. A floppykon minden terjesztés kerüljön egy hozzá tartozó alkönyvtárba, például: a:\base\base.aa, a:\base\base.ab és így tovább.
Fontos: Az első lemezre rá kell másolnunk a base.inf nevű állományt is, mivel ennek beolvasásával lesz képes kitalálni a telepítő, hogy a terjesztések összeszedése és összefűzése során mennyi darabot keressen.
Ahogy elérkezünk a telepítőeszköz kiválasztásához a telepítés folyamatában, ott válasszuk a
menüpontot, majd utána kövessük a felbukkanó üzeneteket.Amikor egy MS-DOS partícióról akarunk telepíteni, előkészítés gyanánt másoljuk a terjesztésekhez tartozó állományokat a partícióra egy freebsd könyvtárba. Ez lesz például a c:\freebsd. Ebben a könyvtárban igyekezzük minél jobban megtartani a CD vagy az FTP oldal könyvtárszerkezetét, ezért erre a CD-ről történő átmásolásra a DOS xcopy parancsát javasoljuk. Például így tudjuk előkészíteni a FreeBSD legegyszerűbb változatának telepítését:
C:\> md c:\freebsd C:\> xcopy e:\bin c:\freebsd\bin\ /s C:\> xcopy e:\manpages c:\freebsd\manpages\ /s
A fentiekben feltételeztük, hogy ehhez a C: meghajtón elég szabad helyünk van, valamint az E: meghajtón érjük el a CD-t.
Ha nincs CD-meghajtónk, az ftp.FreeBSD.org címről letölthetjük a terjesztésket. Minden egyes terjesztés külön könyvtárban található, tehát például a base (alap) terjesztés az 8.1/base/ könyvtárban található.
Mindegyik telepítendő terjesztést (ami még elfér) másoljuk át az MS-DOS partíció c:\freebsd könyvtárába — a telepítéshez egyébként egyedül a BIN terjesztés szükséges.
Valószínűleg a szalagos módszer a legegyszerűbb, egyfajta élő FTP-s vagy CD-s telepítés. A telepítőprogram arra számít, hogy a szalagon az állományok egymás után helyezkednek el. Tehát miután beszereztük a nekünk kellő terjesztésekhez tartozó összes állományt, egyszerűen vegyük fel ezeket a szalagra:
# cd /freebsd/distdir # tar cvf /dev/rwt0 dist1 ... dist2
Mielőtt telepítenénk, ellenőrizzük, hogy legyen elég helyünk valamelyik (a telepítés során majd kiválasztható átmeneti) könyvtárban ahhoz, hogy az itt létrehozott szalag teljes tartalma elférjen benne. Mivel a szalagok csak szekvenciálisan érhetőek el, ezért ennél a módszernél jó sok ideiglenes tárhelyre lesz szükségünk.
Megjegyzés: A telepítés megkezdése után a szalagnak már azelőtt a meghajtóban kell lennie, hogy rendszerindító floppyról elindítanánk a rendszert, máskülönben nem találja meg.
Háromféle hálózati telepítési mód létezik: Ethernet (szabványos Ethernet-vezérlővel), soros port (PPP) vagy párhuzamos port (PLIP (laplink kábel)).
Valószínűleg az Ethernet-csatlakozó választásával érjük el a leggyorsabb hálózati telepítést. A FreeBSD ismeri a legtöbb PC-s Ethernet kártyát. Az ismert kártyák (és a hozzájuk tartozó beállítások) a FreeBSD egyes kiadásának hardverjegyzékében (Hardware Notes) találhatóak meg. Amennyiben egy támogatott PCMCIA Ethernet kártyát használunk, mindig a laptop bekapcsolása előtt helyezzük be! A FreeBSD telepítés közben sajnos nem támogatja a PCMCIA kártyák menetközbeni behelyezését.
Ezenkívül még ismernünk kell a hálózaton kapott IP-címünket, az általa használt címosztály hálózati maszkját, a gépünk nevét. Ha PPP kapcsolaton keresztül telepítünk és nincs statikus IP-címünk, akkor minden bizonnyal az internet-szolgáltatónktól kaptunk egyet dinamikusan. A konkrét hálózati beállításokat a hálózatunk rendszergazdájától is érdemes megkérdezni. Ha a hálózaton levő többi gépre névvel és nem IP-címmel hivatkozunk, akkor szükségünk lesz még egy név(feloldó) szerverre és az internet eléréséhez egy átjáró címére is (ha PPP-t használunk, ez a szolgáltatónk IP-címe lesz). Ha FTP-ről HTTP proxy használatával telepítünk, akkor a proxy címe is kelleni fog. Ha magunktól nem vagyunk képesek ezekre a kérdésekre válaszolni, akkor az ilyen típusú telepítés megkezdése előtt tényleg segítséget kell kérnünk egy rendszergazdától vagy az internet-szolgáltatónktól.
Ha modemet használunk, akkor a PPP szinte biztosan megfelel nekünk. Gondoskodjunk róla, hogy már a telepítés korai szakaszában rendelkezésünkre áll az internet-szolgáltatónkkal kapcsolatosan minden hasznos információ.
Ha PAP vagy CHAP használatával kapcsolódunk a szolgáltatónkhoz (másképp szólva Windows-ban így tudunk szkriptek nélkül csatlakozni), mindössze a dial parancsot kell kiadnunk a ppp parancssorában. Minden más esetben tudnunk kell a modemünk saját “AT parancsaival” tárcsázni az internet-szolgáltatónkat, hiszen ehhez a PPP tárcsázó csak egy nagyon kezdetleges terminálemulációt nyújt. Ezzel kapcsolatban olvassuk el a kézikönyv és a GYIK idevágó részeit. Ha gondjaink akadnának, a naplózás a set log local ... parancs kiadásával átirányítható közvetlenül a képernyőre.
Ha kötött módon tudunk csatlakozni egy másik (2.0-R vagy későbbi verziójú) FreeBSD géphez, akkor megpróbálkozhatunk a párhuzamos “laplink” kábellel. A párhuzamos porton keresztüli adatátvitel sebessége a soros vonalénál jóval nagyobb (egészen 50 kbyte/mp), ezért vele a telepítés is gyorsabb.
A telepítés NFS-en keresztül szinte magától értetődik. Egyszerűen csak másoljuk a FreeBSD terjesztéseihez tartozó állományokat az NFS szerverre és állítsuk be rá az NFS telepítőeszközt.
Ha a szerver csak “privilegizált portokat” ismer (ami általában alapértelmezett a Sun munkaállomásoknál), a telepítés megkezdése előtt az
(Beállítások) menüben be kell állítani az NFS Secure (Biztonságos NFS) opciót.Ha egy gyenge minőségű és kis adatátviteli sebességű Ethernet kártyánk van, akkor emellett még hasznos lehet beállítani az NFS Slow (Lassú NFS) opciót is.
Az NFS-en keresztüli telepítés működéséhez a szervernek támogatnia kell az alkönyvtárak csatlakoztatását is, tehát például ha a FreeBSD 8.1 terjesztésünk a ziggy:/usr/archive/stuff/FreeBSD könyvtárban található, akkor ziggy nevű gépnek lehetővé kell tennie a /usr/archive/stuff/FreeBSD könyvtár közvetlen csatlakoztatását is, nem csak a /usr vagy /usr/archive/stuff könyvtárakét.
A FreeBSD /etc/exports
állományában ezt az
-alldirs
beállítással
vezérelhetjük. Más NFS szervereken
esetleg más megszokásokat kell
követnünk. Amennyiben a szervertől
“permission denied”
(hozzáférés megtagadva) üzeneteket
kapjuk, valószínű, hogy ezt nem
állítottuk be megfelelően.
Ez a fejezet a FreeBSD operációs rendszer alapvető funkcióit és parancsait mutatja be. Az itt tárgyalásra kerülő anyag nagy része érvényes bármelyik más UNIX-szerű operációs rendszer esetén is. Ezért, ha már ismerjük az említésre kerülő ismereteket, minden további gond nélkül átugorhatjuk ezt a fejezetet. Azonban ha még teljesen ismeretlen számunkra a FreeBSD, minden bizonnyal ez lesz az, amit alaposan át kell majd olvasnunk.
A fejezet elolvasása során megismerjük:
az ún. “virtuális konzolok” használatát FreeBSD alatt;
hogyan működnek együtt a UNIX állományokra vonatkozó engedélyei a FreeBSD saját kiegészítéseivel;
egy FreeBSD állományrendszer alapértelmezett kialakítását;
a FreeBSD lemezszervezését;
hogyan csatlakoztassunk és válasszunk le állományrendszereket;
mik azok a folyamatok, démonok és jelzések;
mik azok a parancsértelmezők, és miként tudjuk megváltoztatni az alapértelmezett bejelentkezési környezetünket;
hogyan használjuk az alapvető szövegszerkesztőket;
mik az eszközök és az eszközleírók;
FreeBSD alatt milyen bináris formátumokat használhatunk;
szükség esetén hogyan olvassuk el a megfelelő man oldalakat.
A FreeBSD számos módon használható. Ezek közül az egyik az, ha parancsokat gépelünk be a szöveges terminálon. Így érhető el egyszerűen a UNIX operációs rendszer rugalmasságának és erejének jelentős része. Ebben a szakaszban megtudhatjuk, mik azok a “terminálok” és “konzolok” és miként tudjuk ezeket FreeBSD alatt használni.
Ha nem állítottuk volna be, hogy a FreeBSD indulása során automatikusan induljon el a grafikus felület is, akkor a rendszer egy bejelentkező képernyőt fog mutatni közvetlenül a rendszerindítás befejeződése után. Ekkor valami ilyesmit kell majd látnunk:
Additional ABI support:. Local package initialization:. Additional TCP options:. Fri Sep 20 13:01:06 EEST 2002 FreeBSD/i386 (pc3.example.org) (ttyv0) login:
Egyes rendszereken ugyan némileg eltérhetnek az üzenetek, de hasonlót kell látnunk. Minket most az utolsó két sor érdekel. Az utolsó előtti sorban ez olvasható:
FreeBSD/i386 (pc3.example.org) (ttyv0)
Ez a sor arról értesít minket, hogy a rendszerünk éppen most indult el: egy “FreeBSD” konzolt látunk, amely egy Intel x86 architektúrájú processzoron fut [1]. A gépünk neve (mivel minden UNIX-os gép rendelkezik egy névvel) pc3.example.org, és ennek a rendszerkonzolját látjuk most éppen — a ttyv0 terminált.
Végezetül az utolsó sor mindig:
login:
Ez az a rész, ahova a FreeBSD-be történő bejelentkezéshez meg kell adnunk a “felhasználói nevünket” (user name). A következő szakaszban erről olvashatunk.
A FreeBSD egy többfelhasználós, többfeladatos rendszer. Így hívják hivatalosan azokat a rendszereket, amelyeket többen tudnak használni és egyetlen számítógépen egyszerre rengeteg programot képesek futtatni.
Minden többfelhasználós rendszernek valamilyen módon meg kell tudnia különböztetnie egy “felhasználóját” a többitől. A FreeBSD-ben (és minden más UNIX-szerű operációs rendszerben) ezt úgy érik el, hogy a programok futtatása előtt minden felhasználónak “be kell jelentkeznie” a rendszerbe. Minden felhasználó rendelkezik egy egyedi névvel (ez a “felhasználói név”) és ehhez egy titkos kulcssal (ez a “jelszó”). A FreeBSD a programok futtatásához ezt a kettőt fogja elkérni a felhasználótól.
Egyből miután a FreeBSD elindult és befejezte a rendszerindításhoz használt szkriptjeinek lefuttatását [2], ez a kijelzés (vagy más néven “prompt”) fog megjelenni és kér egy érvényes felhasználói nevet:
login:
A példa kedvéért most tegyük fel, hogy a felhasználói nevünk pgj. Az iménti prompthoz írjuk be, hogy pgj és nyomjuk le az Enter billentyűt. Ezt követően meg kell jelennie egy másik promptnak is, amely egy “jelszót” (password) kér:
login: pgj Password:
Most pedig gépeljük be pgj jelszavát és nyomjunk utána egy Enter billentyűt. Vigyázzunk, hogy a jelszót nem látjuk a beírás során! Emiatt most ne aggódjunk. Ezzel kapcsolatban elegendő csak annyit tudni, hogy mindez biztonsági megfontolásokból történik.
Amennyiben jól adtuk meg a jelszavunkat, sikeresen bejelentkezünk a FreeBSD rendszerébe és készen állunk az összes elérhető parancs kipróbálására.
Bejelentkezés után a MOTD (message of the day) vagy más néven “a nap üzenete” jelenik meg, amelyet a parancssor követ (egy #, $ vagy % jel). Innen tudhatjuk meg, hogy sikerült bejelentkeznünk.
A UNIX parancsokat egy konzolon is szépen ki tudjuk adni, de a FreeBSD egyszerre ugyebár több programot is tud futtatni. A parancsok megadásához viszont egyetlen konzol használata elég nagy pazarlás lenne, hiszen egy olyan operációs rendszer mint a FreeBSD, tucatnyi programot képes futtatni egy időben. Ebben az esetben jelenthetnek számunkra segítséget a “virtuális konzolok”.
A FreeBSD beállítható úgy, hogy sok-sok különféle virtuális konzolt ajánljon fel számunkra. A virtuális konzolok között a billentyűzeten a megfelelő gombok lenyomásával tudunk váltani. Mindegyik konzolnak megvan a saját kimeneti csatornája, és a virtuális konzolok közti váltás folyamán a FreeBSD gondoskodik a billentyűzetről érkező bemenet, valamint a monitorra irányított kimenet megfelelő kezeléséről.
A konzolok közti váltásra a FreeBSD külön billentyűkombinációkat tart fenn [3]. A FreeBSD-ben a különböző virtuális konzolok közti váltásra az Alt-F1, Alt-F2 billentyűket, az Alt-F8 billentyűkombinációval bezárólag használhatjuk.
A konzolok közti váltogatás során a FreeBSD ügyel a képernyő tartalmának elmentésére és visszaállítására. Ennek eredményeképpen “úgy látszik”, mintha több “virtuális” képernyőn és billentyűzeten adnánk parancsokat a FreeBSD-nek.
A FreeBSD alapértelmezés szerint nyolc virtuális konzollal indul. Ez azonban nem egy előre rögzített érték, hiszen könnyedén testreszabhatjuk úgy a telepített rendszerünket, hogy több vagy esetleg kevesebb virtuális konzollal induljon el. A virtuális konzolok száma és azok pontos beállítása az /etc/ttys állományon keresztül adható meg.
A FreeBSD virtuális konzoljait tehát az /etc/ttys állomány megfelelő módosításával tudjuk behangolni. Itt minden egyes olyan sor, amely nem megjegyzés (vagyis azok a sorok, amelyek nem a # karakterrel kezdődnek), tartalmazza az egyes terminálok vagy virtuális konzolok beállításait. Az állomány a FreeBSD telepítésében szereplő, alapértelmezett változata kilenc virtuális konzol konfigurációját tartalmazza, amelyek közül nyolc aktív. Ezek a ttyv résszel kezdődő sorok:
# name getty type status comments # ttyv0 "/usr/libexec/getty Pc" cons25 on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" cons25 on secure ttyv2 "/usr/libexec/getty Pc" cons25 on secure ttyv3 "/usr/libexec/getty Pc" cons25 on secure ttyv4 "/usr/libexec/getty Pc" cons25 on secure ttyv5 "/usr/libexec/getty Pc" cons25 on secure ttyv6 "/usr/libexec/getty Pc" cons25 on secure ttyv7 "/usr/libexec/getty Pc" cons25 on secure ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure
Az állományban található oszlopok kimerítő magyarázatát, illetve a virtuális konzolok beállításához használható kapcsolókat a ttys(5) man oldalon olvashatjuk.
Az “egyfelhasználós mód” részletes leírása a 12.6.2 Szakaszban található. Fontos tudni, hogy amikor a FreeBSD-t egyfelhasználós módban futtatjuk, csupán egyetlen konzolunk van, és a virtuális konzolok nem érhetőek el. Egyébként az egyfelhasználós mód erre vonatkozó beállításai is megtalálhatóak az /etc/ttys állományban. Ehhez keressük meg a console kezdetű sort:
# name getty type status comments # # Ha a konzolt "insecure" (nem biztonságos) típusúnak választjuk meg, # akkor a használatához az egyfelhasználós mód aktivilásá előtt a rendszer # kérni fogja a rendszeradminisztrátori jelszót. console none unknown off secure
Megjegyzés: A console felett látható megjegyzés jelzi, hogy át tudjuk írni ebben a sorban a secure (biztonságos) értékű paramétert insecure (nem biztonságos) értékűre. Ilyenkor, hogy ha a FreeBSD egyfelhasználós módban indul, kérni fogja a root felhasználó (a rendszeradminisztrátor) jelszavát.
Vigyázzunk, amikor ezt az értéket insecure-ra állítjuk! Ha ugyanis véletlenül elfeledkeznénk a root jelszaváról, akkor azzal az egyfelhasználós mód használata is veszélybe kerülhet. Habár ettől függetlenül is lehetséges, azokra számára mégis nehéz helyzetnek bizonyulhat, akik nem mozognak elég otthonosan a FreeBSD rendszerindítási folyamatának és a hozzákapcsolódó programok ismeretében.
A FreeBSD konzol alapértelmezett videomódja átállítható 1024x768-ra, 1280x1024-re, vagy bármilyen olyan más méretre, amit a videokártyánk és monitorunk képes megjeleníteni. Az eltérő videomódok használatához először újra kell fordítanunk a rendszermagunkat az alábbi két beállítás hozzáadásával:
options VESA options SC_PIXEL_MODE
Miután a rendszermagot sikeresen újrafordítottuk a fenti beállításokkal, a vidcontrol(1) segédprogrammal tudjuk megállapítani, hogy a hardverünk milyen videomódokat enged használni. Az összes támogatott videomódot a következőképpen tudjuk lekérdezni:
# vidcontrol -i mode
A parancs eredményeképpen tehát megkapjuk a hardverünk által ismert videomódokat. Ezek közül tudjuk kiválasztani valamelyikőjüket és root felhasználóként a vidcontrol(1) segítségével beállítani:
# vidcontrol MODE_279
Ha az új videomód megfelel számunkra, akkor ezt a beállítást az /etc/rc.conf állományon keresztül véglegesíthetjük is:
allscreens_flags="MODE_279"
A FreeBSD, mivel a BSD UNIX egyik közvetlen leszármazottja, számos UNIX-os alapötletre épül. Ezek közül az első és talán a leginkább kihangsúlyozott, hogy a FreeBSD egy többfelhasználós operációs rendszer. Egy olyan rendszer, amely egyszerre több, egymástól független feladattal foglalkozó felhasználót képes kiszolgálni. A rendszer felelős a hardveres eszközök, a különféle perifériák, a memória és a processzor idejének minden egyes felhasználó számára szabályos és pártatlan megosztásáért és a feléjük irányuló kérések szervezéséért.
Mivel a rendszer több felhasználót is képes támogatni, az általa kezelt erőforrások rendelkeznek engedélyek egy adott halmazával, amelyek eldöntik, ki tudja ezeket olvasni, írni és végrehajtani. Az engedélyek háromszor három bit formájában jelennek meg, amelyek közül az első bitcsoport az állomány tulajdonosára, a második az állomány csoportjára, végül az utolsó pedig a mindenki másra vonatkozó engedélyeket tárolja.
Érték | Engedély | Könyvtárlistában |
---|---|---|
0 | Nem olvasható, nem írható, nem hajtható végre | --- |
1 | Nem olvasható, nem írható, végrehajtható | --x |
2 | Nem olvasható, írható, nem hajtható végre | -w- |
3 | Nem olvasható, írható, végrehajtható | -wx |
4 | Olvasható, nem írható, nem hajtható végre | r-- |
5 | Olvasható, nem írható, végrehajtható | r-x |
6 | Olvasható, írható, nem hajtható végre | rw- |
7 | Olvasható, írható, végrehajtható | rwx |
A ls(1) -l
kapcsolójának
segítségével megnézhetjük a
könyvtárak tartalmának részletes
listáját, amiben megjelennek az
állományok tulajdonosaira, csoportjára
és a mindenki másra vonatkozó
engedélyek is. Például ezt láthatjuk,
ha kiadjuk az ls -l parancsot egy
tetszőleges könyvtárban:
% ls -l total 530 -rw-r--r-- 1 root wheel 512 Sep 5 12:31 egyik -rw-r--r-- 1 root wheel 512 Sep 5 12:31 masik -rw-r--r-- 1 root wheel 7680 Sep 5 12:31 e-mail.txt ...
A példabeli ls -l parancs kimenetének első oszlopa így bomlik fel:
-rw-r--r--
Az első (bal szélső) karakter mondja meg, hogy ez egy hagyományos állomány, könyvtár, speciális karakteres eszköz, socket vagy bármilyen más különleges pszeudoállomány. Ebben az esetben a - jelzi, hogy egy hagyományos állományról van szó. A következő három karakter, ami ebben a példában az rw-, adja meg az állomány tulajdonosának engedélyeit. Az ezután következő három karakter, az r-- mutatja az állomány csoportjának engedélyeit. Az utolsó három karakter, vagyis itt az r-- adja meg a többiek engedélyeit. A kötőjel arra utal, hogy az adott engedélyű tevékenység nem engedélyezett. Tehát ennél az állománynál az engedélyek a következőek: a tulajdonosa tudja olvasni és írni, a csoportja csak olvasni tudja, ugyanígy bárki más. A fenti táblázatnak megfelelően az állomány engedélyének kódja 644 lesz, ahol az egyes számjegyek jelentik az állomány engedélyeinek három elemét.
Ez mind szép és jó, de vajon a rendszer milyen módon kezeli az állományok engedélyeit? A FreeBSD a legtöbb hardveres eszközt állománynak tekinti, amelyeket a programok meg tudnak nyitni, tudnak róluk olvasni és adatokat tudnak kiírni rájuk pontosan úgy, mint bármilyen más állomány esetén. Ezeket a speciális állományokat a /dev könyvtárban találjuk.
A könyvtárakat is állományokként kezeli, ezért azok is rendelkeznek olvasási, írási és végrehajtási engedélyekkel. Azonban a könyvtárak végrehajtását engedélyező bit némileg más jelentéssel bír, mint az állományok esetén. Amikor ugyanis egy könyvtárat végrehajthatónak jelölünk meg, az arra fog utalni, hogy bele tudunk lépni, vagyis hogy ki tudjuk rá adni a “könyvtárváltás” (cd, change directory) parancsát. Ez továbbá arra is utal, hogy az ismert nevű állományokhoz hozzá tudunk férni (természetesen az egyes állományok engedélyeinek megfelelően).
A könyvtárak tartalmát ennek megfelelően viszont csak úgy láthatjuk, ha olvasási engedéllyel rendelkezünk a könyvtárra, míg egy általunk ismert állomány törléséhez a tartalmazó könyvtárhoz kell írási és végrehajtási engedélyekkel rendelkeznünk.
Ezeken kívül még léteznek további engedélyek is, de ezeket csak olyan különleges esetekben használják, mint például a felhasználóváltó programok (setuid program) vagy a ragadós könyvtárak (sticky directory) létrehozása. Az állományok engedélyeinek behatóbb megismeréséhez és beállításához mindenképpen nézzük át a chmod(1) man oldalt.
A szimbolikus engedélyek (gyakran csak szimbolikus kifejezések) az állományok és könyvtárak engedélyeinek megadása során a számok helyett karaktereket használnak. A szimbolikus kifejezések (ki) (hogyan) (milyen engedélyt) alakúak, ahol az alábbi értékek adhatóak meg:
Elem | Betű | Jelentése |
---|---|---|
(ki) | u | tulajdonos |
(ki) | g | csoport tulajdonos |
(ki) | o | egyéb |
(ki) | a | mindenki (a “világ”) |
(hogyan) | + | engedély megadása |
(hogyan) | - | engedély visszavonása |
(hogyan) | = | engedély explicit beállítása |
(milyen engedély) | r | olvasás |
(milyen engedély) | w | írás |
(milyen engedély) | x | végrehajtás |
(milyen engedély) | t | ragadós (sticky bit) |
(milyen engedély) | s | UID vagy GID állítása |
Ezek az értékek a chmod(1) paranccsal az eddigiekhez hasonló módon használhatóak, csak itt betűket kell megadnunk. Például az alábbi paranccsal akadályozhatjuk meg, hogy a tulajdonosán kívül bárki hozzáférhessen az ÁLLOMÁNY nevű állományhoz:
% chmod go= ÁLLOMÁNY
Amennyiben egy állománnyal kapcsolatban több változtatást is el kívánunk végezni, össze tudjuk ezeket fűzni egy vesszőkkel elhatárolt felsorolásban:
% chmod go-w,a+x ÁLLOMÁNY
A korábban tárgyalt engedélyek mellett még a FreeBSD ismeri az ún. “állományjelzők” (file flags) beállítását is. Ezek a jelzőbitek egy további biztonsági és irányítási szintet nyújtanak az állományok felett, viszont a könyvtárakra nem vonatkoznak.
Ezek az állományjelzők az állományok felett további vezérlést adnak a kezünkbe, aminek révén gondoskodhatunk róla, hogy akár még a root felhasználó (a rendszer adminisztrátora) se legyen képes állományokat eltávolítani vagy módosítani.
Az állományjelzők értékei egy egyszerű felületen keresztül, a chflags(1) segédprogrammal változtathatóak meg. Például a következő paranccsal állíthatjuk a rendszer törölhetetlen (undeletable) jelzését az allomany1 állományon:
# chflags sunlink allomany1
A törölhetetlen jelzés eltávolításához egyszerűen csak írjuk be az előző parancsot úgy, hogy a “sunlink” paraméter elejére még beszúrunk egy “no” szövegrészt. Így:
# chflags nosunlink allomany1
Az állományokra éppen
érvényes jelzéseket az ls(1) parancs
-lo
kapcsolójának
segítségével jeleníthetjük
meg:
# ls -lo file1
Ennek megfelelően az eredménynek valahogy így kellene kinéznie:
-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 allomany1
Sok jelzés csak a root felhasználón keresztül vehető fel vagy távolítható el. Más esetekben viszont az állomány tulajdonosa állíthatja ezeket. A rendszergazdáknak javasoljuk, hogy ezzel kapcsolatban a chflags(1) és chflags(2) man oldalakat tanulmányozzák át.
A korábban említett engedélyeken kívül létezik még további három, amelyekkel minden rendszergazdának illik tisztában lennie. Ezek név szerint a setuid, setgid és sticky típusú engedélyek.
Ezek a beállítások bizonyos UNIX műveletek esetén nagyon fontosak, mivel az átlagos felhasználók számára általában el nem érhető funkciók használatát támogatják. A megértésükhöz elsőként a felhasználók valódi és effektív azonosítója közti különbségeket kell tisztáznunk.
A valódi azonosító tulajdonképpen az a felhasználói azonosító, amellyel a programot indítjuk el vagy futás előtt birtokoljuk. A program futása közben azonban az effektív felhasználói azonosítóval fut. Például a passwd(1) segédprogram a jelszavát megváltoztatni kívánó felhasználó valódi azonosítójával indul, miközben a jelszavakat tároló adatbázis elérésékor már a root felhasználó effektív azonosítójával fut. Ezáltal a privilégiumokkal nem rendelkező felhasználók is meg tudják anélkül változtatni a jelszavaikat, hogy a “Permission Denied” hibaüzenettel találkoznának.
Megjegyzés: A mount(8) nosuid beállításával azonban az ilyen típusú binárisok minden különösebb jel nélkül csődöt fognak mondani. Mellesleg a mount(8) man oldala szerint ez az opció nem is teljesen megbízható, mivel nosuid wrapperek segítségével meg lehet kerülni.
Ahogy azt az alábbi példa is szemlélteti, a setuid engedélyt a többi elé egy négyes (4) beszúrásával tudjuk beállítani:
# chmod 4755 suidexample.sh
A suidexample.sh állomány engedélyei ezt követően már így fognak megjelenni:
-rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.sh
Most már jól látható, hogy az állomány tulajdonosához tartozó engedélyek között a végrehajthatóságot szabályozó bit lecserélődött egy s bitre. Ennek köszönhetően a passwd parancshoz hasonló módon kibővített engedélyekkel leszünk képesek futtatni programokat.
Két terminál megnyitásával mindezt valós időben is megvizsgálhatjuk. Az egyiken indítsuk el normál felhasználóként a passwd programot. Miközben a program várakozik az új jelszó megadására, a másik terminálon kérdezzük le a programhoz tartozó felhasználói információkat.
Tehát az egyik terminálon a következőt látjuk:
% passwd Changing local password for trhodes Old Password:
Eközben pedig a másikon:
# ps aux | grep passwd trhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd
A passwd parancsot egyszerű felhasználóként adtunk ki, azonban jól látható, hogy valójában a root felhasználó azonosítójával fut.
A setgid a setuid engedélyhez hasonlóan működik, egyedül annyiban tér el, hogy a csoportra vonatkozó beállításokat módosítja. Amikor egy alkalmazást vagy segédprogramot ilyen engedéllyel futtatunk, akkor az adott programot birtokló csoport engedélyeit kapjuk meg.
Úgy tudjuk állományokon beállítani a setgid típusú engedélyt, ha az iménti példához hasonlóan a chmod parancs hívásakor még egy kettest (2) írunk az engedélyek elé:
# chmod 2755 sgidexample.sh
Az így beállított engedélyek az előbbihöz hasonló módon szemlélhetőek meg, azonban ebben az esetben a csoporthoz tartozó engedélyeknél jelenik meg az s bit:
-rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.sh
Megjegyzés: Az előbb tárgyalt példákkal kapcsolatban fontos megemlítenünk, hogy habár a szkriptek is végrehajtható állományok, nem fognak a valóditól eltérő effektív felhasználói azonosítóval futni. Ennek oka abban keresendő, hogy a parancssori szkriptek nem hívhatják a setuid(2) rendszerhívást.
Ez a két speciális engedély (a setuid és a setgid) a programhoz tartozó engedélyek kiterjesztésével csökkentheti rendszerünk biztonságát. Ezzel szemben viszont a harmadik bemutatandó speciális engedély rendszerünk védelmének erősítésére szolgál: ez az ún. sticky bit.
Ha a sticky típusú engedélyt könyvtárra adjuk meg, akkor a benne levő állományok törlését kizárólag azok tulajdonosainak engedi. Ezzel az engedéllyel lényegében a /tmp könyvtárhoz hasonló nyilvános, bárki által elérhető könyvtárakban akadályozhatjuk meg az állományok idegen felhasználók általi törlését. Az engedély beállításához egy egyest (1) kell a többi elé fűznünk, mint például:
# chmod 1777 /tmp
Most már az ls parancs segítségével láthatjuk ennek a hatását:
# ls -al / | grep tmp drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp
A sticky bit a beállítások végén felbukkanó t révén azonosítható be.
A FreeBSD könyvtárszerkezetének ismerete alapvető jelentőségű a rendszer egészének megértése szempontjából. Ezen belül is a legfontosabb a gyökérkönyvtár, a “/”. Ez az első könyvtár, amelyet a rendszer a rendszerindítás során csatlakoztat és a többfelhasználós mód előkészítéséhez elegendhetlenül szükséges alaprendszert tartalmazza. A gyökérkönyvtár emellett csatlakozási pontokat szolgáltat a többfelhasználós működésre váltás során csatlakoztatandó további állományrendszerek számára.
A csatlakozási pont egy olyan könyvtár,
ahová a szülő állományrendszeren
(ami gyakran maga a
gyökér-állományrendszer) belül
további állományrendszereket tudunk beoltani.
Erről bővebben a 3.5 Szakaszban
olvashatunk. A szabványos csatlakozási pontok:
/usr, /var,
/tmp, /mnt és
/cdrom. Ezekre a könyvtárakra
általában az /etc/fstab
állományban találunk hivatkozásokat.
Az /etc/fstab állomány a
rendszer számára a különböző
állományrendszerek és a hozzájuk
tartozó csatlakozási pontok
táblázatát tartalmazza. Az
/etc/fstab állományban
szereplő legtöbb állományrendszer a
rendszerindítás során automatikusan
csatlakoztatásra kerül az rc(8) szkriptből,
hacsak nem tartalmazzák a noauto
beállítást. Ennek részleteit a 3.6.1 Szakaszban találhatjuk meg.
Az állományrendszerek hierarchiájának teljes leírását a hier(7) man oldalon olvashatjuk. Mi egyelőre most megelégszünk a leggyakrabban megjelenő könyvtárak rövid áttekintésével.
Könyvtár | Mi található itt |
---|---|
/ | Az állományrendszer gyökere. |
/bin/ | Az egy- és többfelhasználós környezetekben is egyaránt alapvető felhasználói segédprogramok. |
/boot/ | Az operációs rendszer indítása során használt programok és konfigurációs állományok. |
/boot/defaults/ | A rendszerindítás alapértelmezett konfigurációs állományai. Lásd loader.conf(5) |
/dev/ | Eszközleírók, lásd intro(4). |
/etc/ | Rendszerkonfigurációs állományok és szkriptek. |
/etc/defaults/ | Az alapértelmezett rendszerkonfigurációs állományok, lásd rc(8). |
/etc/mail/ | A sendmail(8) programhoz hasonló levélküldő rendszerek konfigurációs állományai. |
/etc/namedb/ | A named program konfigurációs állományai, lásd named(8). |
/etc/periodic/ | A cron(8) által naponta, hetente és havonta lefuttatandó szkriptek, lásd periodic(8). |
/etc/ppp/ | A ppp program konfigurációs állományai, lásd ppp(8). |
/mnt/ | Egy üres könyvtár, amelyet a rendszergazdák általában ideiglenes csatlakozási pontként használnak. |
/proc/ | A futó programokat tartalmazó állományrendszer, lásd procfs(5), illetve mount_procfs(8). |
/rescue/ | Statikusan linkelt programok vészhelyzet esetére, lásd rescue(8). |
/root/ | A root felhasználó könyvtára. |
/sbin/ | Az egy- és többfelhasználós környezetekben fontos rendszerprogramok és rendszerfelügyeleti eszközök. |
/tmp/ | Átmeneti állományok. A /tmp könyvtár tartalma általában NEM marad meg az újraindítás után. Erre a célra gyakran memóriában létrehozott állományrendszert szoktak csatlakoztatni a /tmp könyvtárba. Ez utóbbit az rc.conf(5) tmpmfs-re vonatkozó változóinak beállításával lehet automatikussá tenni (vagy a /etc/fstab megfelelő módosításával, lásd mdmfs(8)). |
/usr/ | A felhasználói programok és alkalmazások többsége. |
/usr/bin/ | Általános segédprogramok, programozási eszközök és alkalmazások. |
/usr/include/ | Szabványos C include-állományok. |
/usr/lib/ | Függvénykönyvtárak. |
/usr/libdata/ | Egyéb hasznos adatállományok. |
/usr/libexec/ | (Más programok által használt) Rendszerdémonok és rendszereszközök. |
/usr/local/ | A helyi rendszeren telepített programok, függvénykönyvtárak stb. A FreeBSD portrendszere is ezt használja alapértelmezés szerint. A /usr/local könyvtáron belül a hier(7) man oldalon található /usr könyvtár általános felépítése használatos. Ez alól kivételt képez a man alkönyvtár, amely közvetlenül a /usr/local alatt található, nem pedig a /usr/local/share könyvtáron belül, valamint a portok dokumentációja a share/doc/port könyvtárban található. |
/usr/obj/ | A /usr/src könyvtárfában található források fordítása során keletkező architektúrafüggő objektumok. |
/usr/ports/ | A FreeBSD Portgyűjtemény (választható). |
/usr/sbin/ | (A felhasználók által használt) Rendszerdémonok és rendszereszközök. |
/usr/share/ | Architektúrafüggő állományok. |
/usr/src/ | BSD és/vagy helyi források. |
/usr/X11R6/ | Az X11R6 rendszer programjai, függvénykönyvtárai stb. (választható) |
/var/ | Különféle napló, átmeneti, ideiglenes és pufferben tárolt állományok. A memóriában létrehozott állományrendszereket is olykor a /var könyvtárban találjuk. Ezt az rc.conf(5) állományban található varmfs-változók beállításával tehetjük automatikussá (vagy a /etc/fstab megfelelő módosításával, lásd mdmfs(8)). |
/var/log/ | Mindenféle rendszernaplók. |
/var/mail/ | A felhasználók postafiókjait tároló állományok. |
/var/spool/ | A nyomtatók és a levelezés puffereléséhez használt könyvtárak. |
/var/tmp/ | Átmeneti állományok. Az itt található állományok általában megmaradnak a következő rendszerindítás alkalmával is, hacsak a /var nem egy memóriában létező állományrendszer. |
/var/yp | A NIS állományai. |
Az állománynév a legkisebb szervezési egység, amin keresztül a FreeBSD képes megtalálni az állományokat. Az állományok neveiben a kis- és nagybetűt megkülönböztetjük, tehát a readme.txt és a README.TXT elnevezés két különböző állományra utal. A FreeBSD nem az állományok kiterjesztése (ami a konkrét példánkban a .txt volt) alapján dönti el, hogy az adott állomány vajon program, dokumentum vagy valamilyen más fajtájú adat.
Az állományok könyvtárakban tárolódnak. Egy könyvtár lehet akár üres (nincs benne egyetlen állomány sem), vagy többszáz állományt is tartalmazhat. Egy könyvtár ráadásul további könyvtárakat is tárolhat, és így az egymásban elhelyezkedő könyvtárak segítségével könyvtárak egy hierarchiáját tudjuk felépíteni. Ezzel sokkalta könnyebben szervezhetővé válnak az adataink.
Az állományokat és könyvtárakat úgy tudjuk elérni, ha megadjuk az állomány vagy a könyvtárt tároló könyvtár nevét, amit egy perjel, a / követ, valamint így összefűzve az eléréshez szükséges további könyvtárak felsorolása. Tehát, ha van egy ize nevű könyvtárunk, amelyben található egy mize könyvtár, amelyen belül pedig egy readme.txt, akkor ennek az állománynak a teljes neve, vagy másképpen szólva az elérési útja ize/mize/readme.txt lesz.
A könyvtárak és az állományok egy állományrendszerben tárolódnak. Minden állományrendszer pontosan egy könyvtárat tartalmaz a legfelső szintjén, amelyet az adott állományrendszer gyökérkönyvtárának nevezünk. Ez a gyökérkönyvtár tartalmazhat aztán további könyvtárakat.
Eddig még valószínűleg minden nagyon hasonló a más operációs rendszerekben tapasztalható fogalmakhoz. Azonban adónak különbségek: például az MS-DOS a \ jellel választja el az állományok és könyvtárak neveit, miközben a Mac OS® erre a : jelet használja.
A FreeBSD az elérési utakban sem betűkkel, sem pedig semmilyen más névvel nem jelöli meg a meghajtókat. Tehát a FreeBSD-ben nem írhatjuk, hogy a c:/ize/mize/readme.txt.
Helyette az egyik állományrendszert kijelölik gyökér-állományrendszernek. A gyökér-állományrendszer gyökérkönyvtárára hivatkoznak később / könyvtárként. Ezután minden más állományrendszert a gyökér-állományrendszerhez csatlakoztatunk. Ennek értelmében nem számít, hogy mennyi lemezünk is van a FreeBSD rendszerünkben, hiszen minden könyvtár egyazon lemez részeként jelenik meg.
Tegyük fel, hogy van három állományrendszerünk, hívjuk ezeket A-nak, B-nek és C-nek. Minden állományrendszer rendelkezik egy gyökérkönyvtárral, amely két további könyvtárat tartalmaz: A1-et és A2-t (és ennek megfelelően a többi B1-et és B2-t, valamint C1 és C2-t).
Nevezzük A-t a gyökér-állományrendszernek. Ha a könyvtár tartalmának megjelenítéséhez most kiadnánk az ls parancsot, két alkönyvtárat látnánk, az A1-et és A2-t. A létrejött könyvtárfa valahogy így nézne ki:
Egy állományrendszert csak egy másik állományrendszer valamelyik könyvtárába tudunk csatlakoztatni. Ezért most tételezzük fel, hogy a B állományrendszert az A1 könyvtárba csatlakoztatjuk. Ezután a B gyökérkönyvtára átveszi a A1 helyét az állományrendszerben, és ennek megfelelően megjelennek a B könyvtárai is:
A B1 vagy B2 könyvtárakban található állományok bármelyike innentől kezdve a /A1/B1, illetve a /A1/B2 elérési utakon érhetőek el. Az A1 könyvtárban található állományok erre az időre rejtve maradnak. Akkor fognak újra felbukkanni, ha a B állományrendszert leválasztjuk az A állományrendszerről.
Ha a B állományrendszert az A2 könyvtárba csatlakoztatnánk, az iménti ábra nagyjából így nézne ki:
és ennek megfelelően az előbb tárgyalt elérési utak /A2/B1 és /A2/B2 lennének.
Az állományrendszerek egymáshoz is csatlakoztathatóak. A példát ennek megfelelően úgy is folytathatjuk, hogy a C állományrendszert csatlakoztatjuk B állományrendszerben található B1 könyvtárhoz. Ennek eredménye a következő elrendezés lesz:
Vagy a C állományrendszer az A1 könyvtáron keresztül csatlakoztatható akár közvetlenül az A állományrendszerhez is:
Az MS-DOS operációs rendszert ismerők számára ez hasonló lehet a join parancshoz (habár teljesen nem egyezik meg vele).
Általában azonban ezzel nem kell törődnünk, hiszen többnyire csak a FreeBSD telepítése során hozunk létre állományrendszereket és választjuk meg a csatlakozási pontjukat. A későbbiekben ez legfeljebb akkor kerül elő ismét, amikor újabb lemezeket adunk hozzá a rendszerhez.
Teljességgel megengedhető, hogy elhagyjuk a többit és csak egyetlen óriási gyökér-állományrendszert használjunk. Ennek viszont megvannak a maga hátrányai és az egyetlen előnye.
Több állományrendszer használatának előnyei
A különböző állományrendszereknek különböző csatlakoztatási beállításai (mount options) lehetnek. Például, ha kellően elővigyázatosak akarunk lenni, a gyökér-állományrendszer írásvédett módon is csatlakoztatható, aminek köszönhetően lehetetlenné válik a rendszer számára fontos állományok véletlen törlése vagy felülírása. Ha elkülönítjük a felhasználók számára írható állományrendszereket (például a /home könyvtárakat) a többi állományrendszertől, lehetővé válik számunkra, hogy nosuid beállítással csatlakoztassuk ezeket. Ez a beállítás megakadályozza, hogy ezekben a suid/guid bitekkel rendelkező végrehajtható állományok használhatóak legyenek, ezáltal növeli a rendszer biztonságosságát.
A FreeBSD az állományrendszer használatától függően magától határoz a benne található állományok optimális kiosztását illetően. Így tehát a gyakorta módosított, kisebb állományokat tartalmazó állományrendszerek esetén teljesen más technikákat alkalmaz, mint például a nagyobb, kevésbé változó állományok esetén. Azonban egyetlen állományrendszer használatával ez a gyorsítási módszer odavész.
Noha a FreeBSD állományrendszerei nagyon jól tűrik a hirtelen áramkimaradásokat, egy döntő ponton bekövetkező váratlan leállás mégis kárt okozhat a szerkezetükben. Ha azonban több állományrendszerre osztjuk a tárolandó adatainkat, sokkal valószínűbbé válik, hogy egy ilyen eset után a rendszerünk talpra tud állni, és szükség esetén nekünk is könnyebb lesz a biztonsági mentéseinkből helyreállítani a sérült állományokat.
Egyetlen állományrendszer használatának előnyei
Az állományrendszerek mérete rögzített. Miután a FreeBSD telepítése során létrehoztunk egy adott méretű állományrendszert, előfordulhat, hogy később szükségünk lesz a méretének növelésére. Ilyenkor nehezen kerülhetjük el az ilyenkor szokásos teendőket: biztonsági mentés készítése, az új méretnek megfelelő állományrendszer létrehozása, majd ezután a lementett adataink visszaállítása.
Fontos: A FreeBSD-ben azonban megtalálható a growfs(8) parancs, amelynek segítségével az állományrendszerek mérete használat közben növelhető, és ezzel megszűnik a méretre vonatkozó korlátozás.
Az állományrendszerek partíciókban tárolódnak. A FreeBSD UNIX-os eredete miatt azonban ez a kifejezés nem a hétköznapi “partíció” jelentését takarja (mint például egy MS-DOS partíció). Minden partíciót egy betű azonosít a-tól h-ig. Mindegyik partíció csak egyetlen állományrendszert tartalmazhat, aminek révén az állományrendszereket vagy az állományrendszerek hierarchiájában található csatlakozási pontjukkal vagy pedig az ezeket tartalmazó partíció betűjével azonosíthatjuk.
A FreeBSD ezeken felül külön lemezterülen tárolja a lapozóállományt (swap space). A lapozóállományt használja a FreeBSD virtuális memória (virtual memory) megvalósításához. Ennek köszönhetően a számítógép képes úgy viselkedni, mintha jóval több memóriával rendelkezne, mint valójában. Így, amikor a FreeBSD kifogy a memóriából, egyszerűen kirakja a memóriából a lapozóállományba az éppen nem használt adatokat, majd amikor ismét szüksége lesz rájuk, visszatölti ezeket (és ilyenkor megint kirak valami mást).
Némely partícióhoz kötődnek bizonyos megszokások.
Partíció | Megszokás |
---|---|
a | Általában ez tartalmazza a gyökér-állományrendszert. |
b | Általában ez tartalmazza a lapozóállományt. |
c | Mérete általában a tartalmazó slice méretével egyezik meg. Ennek köszönhetően a segédprogramok (például egy hibás szektorokat kereső program) a c partíción keresztül képesek akár az egész slice-szal dolgozni. Normális esetben ezen a partíción nem hozunk létre állományrendszert. |
d | A d partícióhoz egykoron kapcsolódott különleges jelentés, azonban mostanra ez már megszűnt, és a d egy teljesen átlagos partíciónak tekinthető. |
Minden állományrendszert tartalmazó partíciót a FreeBSD egy ún. slice-ban tárol. A FreeBSD számára a slice elnevezés utal mindarra, amit általában partíciónak neveznek, és ismét megemlítjük, mindez a UNIX-os eredet miatt. A slice-okat 1-től 4-ig sorszámozzák.
A slice-ok sorszáma 1-től indulva az eszközök neve után egy s betűvel elválasztva következik. Így tehát a “da0s1” jelentése az első slice lesz az első SCSI-meghajtón. Lemezenként négy fizikai slice hozható létre, de ezeken belül tetszőleges típusú logikai slice-ok helyezhetőek el. Ezen további slice-ok sorszámozása 5-től kezdődik, így ennek megfelelően a “ad0s5” lesz az első IDE-lemezen található első kiterjesztett slice. Ezeket az eszközöket foglalják el a különböző állományrendszerek.
A slice-ok, a “veszélyesen dedikált” (Dangerously Dedicated) fizikai meghajtók, és minden más olyan meghajtó, amely partíciókat tartalmaz, a-tól h-ig jelölődnek. Ez a betű az eszköz neve után következik, így ennek megfelelően a “da0a” lesz az első “da” meghajtó “a”, vagyis a “veszélyesen dedikált” partíciója. Az “ad1s3e” lesz a második IDE-lemezmeghajtón a harmadik slice-ban szereplő ötödik partíció.
Végezetül, a rendszerben minden lemezt azonosítunk. A lemez neve a típusára utaló kóddal kezdődik, amely után aztán egy sorszám jelzi, hogy melyik lemezről is van szó. Azonban eltérően a slice-okétól, a lemezek sorszámozása 0-tól indul. Az általánosan elterjedt kódolások a 3-1 Táblázatban találhatóak.
Amikor hivatkozunk egy partícióra, a FreeBSD elvárja tőlünk, hogy nevezzük meg az adott partíciót tartalmazó slice-ot és lemezt is. Emiatt egy partícióra mindig úgy hivatkozunk, hogy először megadjuk a tartalmazó lemez nevét, ettől s-sel elválasztva a tartalmazó slice sorszámát, majd ezt a partíció betűjelével zárjuk. Erre példákat a 3-1 Példaban láthatunk.
Az érhetőség kedvéért a 3-2 Példa bemutatja egy lemez kiosztásának fogalmi sablonját.
A FreeBSD telepítéséhez először be kell állítani a lemezen található slice-okat, majd létrehozni benne a FreeBSD-hez használni kívánt partíciókat, kialakítani rajtuk az állományrendszereket (vagy a lapozóállományt) és eldönteni, melyik állományrendszert kívánjuk csatlakoztatni.
Táblázat 3-1. Lemezes eszközök kódjai
Kód | Jelentés |
---|---|
ad | ATAPI (IDE) lemez |
da | közvetlen hozzáférésű SCSI lemez |
acd | ATAPI (IDE) CDROM |
cd | SCSI CDROM |
fd | Floppylemez |
Példa 3-2. Egy lemez kialakításának sablonja
Az ábrán a rendszerhez csatlakoztatott első IDE-lemez látható a FreeBSD szemszögéből. Tegyük fel, hogy ez a lemez 4 GB méretű és két, egyenként 2 GB méretű slice-ot (avagy MS-DOS partíciót) tartalmaz. Az első slice egy MS-DOS formátumú lemezt foglal magában, a C: meghajtót, illetve a második slice egy telepített FreeBSD-t tartalmaz. Ebben a példában a FreeBSD három adatot és egy lapozóállományt tároló partícióval rendelkezik.
A három partíció mindegyikén találhatunk egy-egy állományrendszert. Az a partíció lesz a gyökér-állományrendszer, az e lesz a rendszerünkben a /var és az f pedig a /usr könyvtár.
Az állományrendszereket legkönnyebben egy-egy faként tudjuk magunk előtt elképzelni, amelyek a / könyvtárból nőnek ki. A /dev, /usr és mellettük szereplő, hozzájuk hasonló összes többi könyvtár csupán egy-egy ág, amelyeknek saját ágaik is lehetnek, mint például a /usr/local és így tovább.
Különféle okai vannak annak, hogy egyes könyvtárakat különálló állományrendszereken tárolunk. A /var könyvtár tartalmazza a log/, spool/ könyvtárakat és különféle átmeneti állományokat, azonban az ilyen állományok könnyen megszaporodhatnak és megtölthetik az állományrendszert. Mivel a gyökér-állományrendszert nem tanácsos elárasztani mindenféle állománnyal, ezért gyakran a hasznunkra válhat, ha a /var könyvtárat leválasztjuk a / könyvtárból.
A másik gyakori ok, ami az imént említett fa egyes ágainak különböző állományrendszereken történő tárolását indokolja, hogy ezek gyakran más fizikai vagy virtuális lemezeken, például a rendszerhez csatlakoztatott Hálózati állományrendszereken vagy éppen CD-meghajtókon találhatóak.
A rendszerindítás
folyamata során az /etc/fstab
állományban felsorolt
állományrendszerek maguktól kerülnek
csatlakoztatásra (kivéve amikor a
noauto
beállítással
szerepelnek).
Az /etc/fstab állományban található sorok az alábbi szerkezetűek:
eszköz /csatlakozási-pont típus beállítások mentésigyak ellszám
A 18.2 Szakaszban leírtak szerint megnevezett (létező) eszköz.
Egy (létező) könyvtár, ahova az állományrendszer csatlakozik.
Az állományrendszer mount(8) parancs szerint ismert típusa. A FreeBSD alapértelmezett állományrendszere az ufs.
Az írható-olvasható
állományrendszerek esetén
rw
, az írásvédettek
esetén pedig ro
, amelyet
igény szerint további
beállítások követhetnek. A
rendszerindítás során automatikusan
nem csatlakoztatandó
állományrendszerek esetén gyakran
alkalmazott beállítás itt még
a noauto
. Egyéb
lehetőségeket a mount(8) man oldalon
láthatunk.
Ezt általában a dump(8) parancs használja a menteni szükséges állományrendszerek megállapításához. Amennyiben hiányzik ez a mező, az automatikusan a nulla értéket jelöli.
Megadja, hogy mely állományrendszereket kell ellenőrizni. A nullás pass értékkel rendelkező állományrendszerek nem kerülnek ellenőrzésre. A gyökér-állományrendszer (melyet minden más előtt kell ellenőrizni) passno értéke egy, míg az összes többi állományrendszer passno értéke általában egytől különböző. Ha egynél több állományrendszer is ugyanazt a passno értéket kapta, akkor az fsck(8) a lehetőségei szerint megpróbálja ezeket egyszerre ellenőrizni.
Az /etc/fstab felépítéséről és a benne használható beállításokról bővebben a fstab(5) man oldalon olvashatunk.
Az állományrendszerek tényleges csatlakoztatására avagy “mountolására” a mount(8) parancs használható.
Legegyszerűbb formája:
Ahogy a mount(8) man oldalán is olvashatjuk, itt rengeteg opció is megadható, de ezek közül a leggyakoribbak:
Csatlakoztatási opciók
-a
Csatlakoztatja az /etc/fstab
állományban felsorolt összes
állományrendszert, kivéve azokat,
amelyek a “noauto”
beállítást tartalmazzák, vagy
kizártuk a -t
kapcsolóval,
esetleg korábban már csatlakoztattuk.
-d
A tényleges csatlakoztatás
elvégzése nélkül
végrehajt minden mást. Ez az opció
leginkább -v
opcióval
együtt használható annak
megállapítására, hogy a
mount(8) valójában mit is akar
csinálni.
-f
Egy nem tiszta állományrendszer csatlakoztatásának kényszerítése (veszélyes!) vagy egy korábban már csatlakoztatott állományrendszer írható állapotának felfüggesztése.
-r
Az állományrendszer
írásvédett csatlakoztatása.
Megegyezik a -o
opciónál
megadható ro
(vagy a FreeBSD
5.2-nél régebbi verziója
esetén a rdonly
)
beállítás
használatával.
-t
típusAz adott állományrendszert az adott
típusnak megfelelően csatlakoztatja, vagy az
-a
használata esetén csak
az adott típusú
állományrendszereket.
Az “ufs” az állományrendszerek alapértelmezett típusa.
-u
Frissíti az állományrendszerre vonatkozó csatlakoztatási beállításokat.
-v
Részletesebb kijelzés.
-w
Az állományrendszer csatlakoztatása írásra és olvasásra.
Az -o
opció után
vesszővel elválasztott
beállításokat adhatunk meg, többek
közt az alábbiakat:
Az állományrendszeren található állományok végrehajtásának tiltása. Ez egy nagyon hasznos biztonsági beállítás.
Az állományrendszeren nem használhatóak a felhasználó- (setuid) vagy csoportváltásra (setgid) vonatkozó engedélyek. Nagyon hasznos biztonsági beállítás.
Az umount(8) parancs paraméterként egy
csatlakozási pontot, egy eszköznevet vagy a
-a
, illetve az -A
opciókat várja.
A leválasztás
kényszerítéséhez mindegyik alakban
szerepelhet az -f
opció, valamint a
részletesebb kijelzést a -v
opcióval kapcsolhatjuk be. Azonban szeretnénk
mindenkit figyelmeztetni, hogy a -f
használata alapvetően nem ajánlott. Az
erőszakkal leválasztott
állományrendszerek összeomlaszthatják
a számítógépet vagy kárt
okozhatnak az állományrendszereken
található adatokban.
Az -a
és -A
opciók használatosak az összes
csatlakoztatott állományrendszer
leválasztására, amelyek típusait a
-t
opció megadása után
sorolhatjuk fel. Fontos különbség azonban,
hogy az -A
opció a gyökér
állományrendszert nem próbálja meg
leválasztani.
A FreeBSD egy többfeladatos operációs rendszer. Ez azt jelenti, hogy képes látszólag egyszerre több programot is futtatni. Az így egyszerre futó programokat egyenként folyamatoknak (process) nevezzük. Minden kiadott parancsunk elindít legalább egy ilyen folyamatot, és a rendszerünk mozgásban tartásához bizonyos rendszerszintű folyamatok állandóan futnak a háttérben.
Minden folyamatot egy folyamatazonosítónak (process ID vagy PID) nevezett szám azonosít egyértelműen, és az állományokhoz hasonlóan, minden folyamatnak van tulajdonosa és csoportja is. A tulajdonos és a csoport ismeretében állapítja meg a rendszer, hogy az adott folyamat a korábban említett engedélyek szerint milyen állományokhoz és eszközökhöz férhet hozzá. Ezenkívül a legtöbb folyamatnak van még egy szülőfolyamata is. A szülőfolyamat az a folyamat, amely az adott folyamatot elindította. Például amikor parancsokat adunk egy parancsértelmezőn keresztül, akkor maga a parancsértelmező is egy ilyen folyamat lesz ugyanúgy, ahogy a benne kiadott parancsok által elindított programok. Ennek megfelelően az így létrehozott összes folyamat szülője maga a parancsértelmező folyamata lesz. Az említettek alól egyik kivétel az init(8) nevű speciális folyamat. Az init lesz a rendszerben mindig az első folyamat, ezért a PID-je is mindig 1. Az init programot a FreeBSD indulásakor a rendszermag fogja automatikusan elindítani.
A rendszerben futó programok vizsgálatához két, különösen hasznos parancsot találhatunk: ezek a ps(1) és a top(1). A ps parancs használatos a pillanatnyilag futó programok statikus listájának megjelenítésére. Ebben olvashatjuk a futó programok azonosítóit, mennyi memóriát használnak éppen, milyen paranccsal indították ezeket stb. A top parancs mutatja az összes aktívan futó programot, majd néhány másodpercenként automatikusan frissíti ezt a listát, aminek révén folyamatosan láthatjuk, miként viselkednek a futó programok.
A ps alapértelmezés szerint csupán az általunk futtatott programokat mutatja. Például:
% ps PID TT STAT TIME COMMAND 298 p0 Ss 0:01.10 tcsh 7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14) 37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14) 48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi 48730 p0 IW 0:00.00 (dns helper) (navigator-linux-) 72210 p0 R+ 0:00.00 ps 390 p1 Is 0:01.14 tcsh 7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y 6688 p3 IWs 0:00.00 tcsh 10735 p4 IWs 0:00.00 tcsh 20256 p5 IWs 0:00.00 tcsh 262 v0 IWs 0:00.00 -tcsh (tcsh) 270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16 280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16 284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc 285 v0 S 0:38.45 /usr/X11R6/bin/sawfish
Ahogy az a fenti példában is látszik, a ps(1) kimenete oszlopokra tagolható. Ezek közül a PID tartalmazza a korábban már ismertetett folyamatazonosítókat. Az azonosítók 1-től indulva egészen 99999-ig sorszámozódhatnak, illetve ha kifutnánk belőlük, akkor a számozás kezdődik elölről (azonban a használatban levő azonosítók sosem kerülnek újra kiosztásra). A TT oszlopban láthatjuk azt a terminált, amelyen az adott program éppen fut, de ezt pillanatnyilag akár nyugodtan figyelmen kívül is hagyhatjuk. A STAT oszlopban a program állapotát kapjuk meg, de szintén átugorható. A TIME a program processzoron eltöltött idejét mutatja — ez általában nem arra utal, hogy mennyi ideje fut maga a program, hiszen a legtöbb program sok időt tölt tétlenül, mielőtt egyáltalán szüksége lenne processzora. Végezetül a COMMAND oszlopban olvashatjuk azt a parancsot, amellyel a programot elindították.
A ps(1) számos különféle
beállítást ismer az általa
megjelenített információk
megválasztásához. Az egyik ilyen
leghasznosabb beállítás az
auxww: az a
segítségével az összes futó
programot láthatjuk, nem csak a sajátjainkat; az
u
megadásával
láthatóvá válik a folyamat
tulajdonosának a felhasználói neve, valamint
a memóriahasználata is; az x
megmutatja a démon (avagy háttér)folyamatok
adatait is és a ww
hatására
pedig a ps(1) az összes folyamathoz a teljes parancssort
kiírja, még akkor is, ha nem férne ki a
képernyőre.
A top(1) kimenete is hasonló. Ha elindítjuk, általában ezt láthatjuk:
% top last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10 47 processes: 1 running, 46 sleeping CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free Swap: 256M Total, 38M Used, 217M Free, 15% Inuse PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top 7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14 281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA 296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm 48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu 175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd 7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt ...
A kimenet két részre osztható. A fejlécben (vagyis az első öt sorban) látható az utoljára futtatott program azonosítója (PID), a rendszer átlagos terhelése (load average, amellyel mérjük, hogy a rendszerünk mennyire lefoglalt), a rendszer indítása óta eltelt idő (up mint uptime) és a jelenlegi idő. A fejlécben még megtalálhatjuk azt is, mennyi program fut (esetünkben ez most 47), mennyi memóriát és lapozóállományt használnak, és mennyi időt tölt a rendszer a processzor különböző állapotaiban.
A fejléc alatt a ps(1) kimenetéhez hasonló módon oszlopokba rendezve találhatjuk meg a folyamatok adatait: az azonosítóikat, a tulajdonosaik nevét, a felhasznált processzoridőt, a futtatott parancsot. A top(1) alapértelmezés szerint mutatja a futó programok által használt memória mennyiségét is: ez további két oszlopra oszlik, ahol az egyikben a teljes memóriafoglalást (SIZE), a másikban pedig a jelen pillanatban aktívan használt memóriát (RES) láthatjuk. A példában látható is, hogy a Netscape® (navigator-linu) alkalmazásnak majdnem 30 MB-nyi memóriára van szüksége, de ebből aktívan csak 9 MB-ot használ.
A top(1) a kijelzést minden második
másodpercben magától frissíti, de ez
az s
kapcsolóval
állítható.
Amikor elindítunk egy szövegszerkesztőt, nem sok gondunk akad az irányításával, könnyen utasíthatjuk az állományok betöltésére és így tovább. Mindezt azért tehetjük meg, mert a szövegszerkesztő erre lehetőséget biztosít és mivel a szövegszerkesztő egy terminálhoz kapcsolódik. Egyes programok azonban nem úgy lettek kialakítva, hogy állandóan a felhasználó utasításaira támaszkodjanak, ezért az első adandó alkalommal lekapcsolódnak a terminálról. Például egy webszerver egész nap csak webes kéréseket válaszol meg, és általában semmi szüksége nincs a felhasználók utasításaira. A szerverek között leveleket közvetítő programok is ugyanezen osztályba tartoznak.
Ezeket a programokat démononoknak hívjuk. A démonok a görög mitológiában jelentek meg: sem a jót, sem pedig a gonoszt nem képviselték, egyszerű apró szellemecskék voltak, akik az emberiség javát szolgálták, pontosan úgy, ahogy ma teszik azt a különféle web- és levelező szerverek. Ezért is ábrázolták sokáig a BSD kabalafiguráját is egy tornacipős, vasvillás vidám démonként.
A démonként futó programok nevéhez a hagyományok szerint hozzá szokták fűzni a “d” betűt. A BIND a Berkeley Internet Name Domain (névfeloldó) szolgáltatása, azonban a hozzá tartozó program neve named, az Apache webszerver programját httpd-nek nevezik, a sornyomtató kezeléséért felelős démon pedig az lpd és így tovább. Ez csupán egy hagyomány, megszokás, nem pedig egy kőbe vésett szabály: például a Sendmail levelező démonának neve sendmail és nem pedig maild.
Néha azért szükségünk lehet arra, hogy felvegyük valahogy a kapcsolatot a démonként futó programokkal is. Ennek egyik lehetséges módja a jelzések (signal) küldése (de alapvetően bármilyen futó programnak küldhetünk). Több különféle jelzés küldhető — egyeseknek közülük megkülönböztetett jelentése van, másokat magukat az alkalmazások értelmeznek, amelyről a dokumentációjukban tájékozódhatunk. A kill(1) vagy kill(2) paranccsal más tulajdonában levő futó programoknak nem tudunk jelzéseket küldeni, ami alól egyedüli kivétel a root felhasználó.
Bizonyos esetekben a FreeBSD maga is küld néha jelzéseket. Amikor egy alkalmazást rosszul programoznak le és megpróbál egy számára tiltott memóriaterülethez hozzáférni, a FreeBSD küld neki egy Segmentation Violation (SIGSEGV, szegmentálási hiba) jelzést. Ha egy alkalmazás az alarm(3) rendszerhíváson keresztül kér egy adott idő utáni bekövetkező értesítést, akkor kap erről egy Alarm (SIGALRM) jelzést és így tovább.
A folyamatok leállítására két jelzés használható: a SIGTERM (befejeztetés) és a SIGKILL (leállítás). A SIGTERM a folyamatok leállításának illedelmes módja, mivel ekkor a futó program képes elkapni ezt a jelzést és észrevenni, hogy le akarjuk állítani. Ilyenkor a leállítás előtt lehetősége van szabályosan lezárni a naplóit és általánosságban véve befejezni mindent, amit éppen csinál. Előfordulhat azonban, hogy a folyamatok figyelmen kívül hagyják a SIGTERM jelzést, ha például éppen egy félbeszakíthatatlan feladat közepén tartanak.
A SIGKILL jelzést azonban egyetlen futó program sem hagyhatja figyelmen kívül. Ez lenne a “Nem érdekel, mivel foglalkozol, azonnal hagyd abba!” jelzés. Amikor SIGKILL jelzést küldünk egy folyamatnak, a FreeBSD leállítja a folyamatot ott és ahol tart [4].
További használható jelzések: SIGHUP, SIGUSR1 és SIGUSR2. Ezek általános célú jelzések, amelyeket az alkalmazások eltérő módokon kezelnek.
Tegyük fel, hogy megváltoztattuk a webszerverünk beállításait tartalmazó állományt — valamilyen módon szeretnénk tudatni a szerverrel, hogy olvassa be újra a beállításait. Ezt megtehetjük úgy, hogy leállítjuk és újraindítjuk a httpd démont, de ezzel kiesést okozhatunk a szerver működésében, amit viszont nem engedhetünk meg. A legtöbb démont úgy készítették el, hogy a SIGHUP jelzés hatására olvassa be újra a beállításait tartalmazó állományt. Így a httpd leállítása és újraindítása helyett egyszerűen elegendő egy SIGHUP jelzés küldése. Mivel azonban ez nem szabványosított, a különböző démonok ezt a jelzést többféleképpen is értelmezhetik. Ezért a használata előtt ennek mindenképpen járjunk utána a kérdéses démon dokumentációjában.
A jelzéseket a kill(1) paranccsal tudjuk elküldeni, ahogy ezt a következő példában is láthatjuk.
Jelzés küldése egy futó programnak
Ebben a példában megmutatjuk, hogyan lehet jelzést küldeni az inetd(8) démonnak. Az inetd a beállításait az /etc/inetd.conf állományban tárolja, és az inetd a SIGHUP jelzés hatására képes újraolvasni ezt.
Keressük meg annak a folyamatnak az
azonosítóját, amelynek a jelzést
kívánjuk küldeni. Ezt a ps(1)
és a grep(1) használatával
tehetjük meg. A grep(1) parancs
segítségével más parancsok
kimenetében tudunk megkeresni egy általunk
megadott szöveget. Ezt a parancsot átlagos
felhasználóként futtatjuk, azonban az
inetd(8) démont a root
birtokolja, ezért az ps(1) használata
során meg kell adnunk az ax
kapcsolókat is.
% ps -ax | grep inetd 198 ?? IWs 0:00.00 inetd -wW
Innen kiderül, hogy az inetd(8) azonosítója 198. Előfordulhat, hogy az eredményben maga a grep inetd parancs is megjelenik. Ez a ps(1) listázási módszere miatt következhet be.
A jelzés elküldésére használjuk a kill(1) parancsot. Mivel az inetd(8) démont a root felhasználó futtatja, ehhez először a su(1) parancs kiadásával nekünk is root felhasználóvá (rendszeradminisztrátorrá) kell válnunk.
% su Password: # /bin/kill -s HUP 198
Ahogy az a legtöbb UNIX esetén elfogadott, a sikeres végrehajtás esetén a kill(1) sem válaszol semmit. Amikor viszont nem egy saját programunknak akarunk jelzést küldeni, akkor a “kill: PID: Operation not permitted” (a művelet nem engedélyezett) hibaüzenetet látunk. Ha véletlenül elgépeltük volna a futó program azonosítóját, akkor a küldendő jelzés nem a megfelelő folyamatnál fog kikötni (ami nem éppen jó), vagy ha szerencsénk van, akkor a jelzést egy éppen használaton kívüli azonosítóra küldtük. Az utóbbi esetben a következő láthatjuk: “kill: PID: No such process” (nincs ilyen folyamat).
Miért /bin/kill?: A legtöbb parancsértelmező beépítetten tartalmazza a saját kill parancsát, tehát ilyenkor közvetlenül maga a parancsértelmező küldi a jelzést, nem pedig a /bin/kill programon keresztül. Ez gyakran a javunkra válhat, azonban a küldhető jelzések megadása parancsértelmezőnként eltérhet. Így, ahelyett, hogy egyenként ismernünk kellene mindegyiket, sokkal egyszerűbb közvetlenül a /bin/kill ... parancsot használni.
A többi jelzés küldése is nagyon hasonló módon történik, hiszen elegendő csupán a TERM vagy a KILL behelyettesítése a parancs megfelelő helyére.
Fontos: A rendszerünkben óvatosan bánjunk a futó programok leállítgatásával, és legyünk különös tekintettel az 1-es azonosítóval rendelkező, speciális feladattal bíró init(8) folyamatra. A /bin/kill -s KILL 1 parancs kiadásával ugyanis gyorsan le tudjuk állítani a rendszerünket. Mielőtt egy kill(1) parancsot lezárnánk az Enter billentyűvel, mindig győződjünk meg róla, hogy valóban tényleg a jó paramétereket adtuk meg.
A FreeBSD-ben hétköznapi munkánk legnagyobb részét a parancsértelmezőknek (shell) nevezett parancssoros felületen tudjuk elvégezni. A parancsértelmező fő feladata a beérkező parancsok elfogadása és végrehajtatása. Sok parancsértelmező ezenfelül rendelkezik beépített funkciókkal is, amelyek olyan hétköznapi feladatokban igyekeznek segíteni, mint például az állományok kezelése és tömeges elérése reguláris kifejezések használatával, a parancssor szerkesztése, parancsok makrózása és a környezeti változók használata. A FreeBSD alapból tartalmaz néhány parancsértelmezőt, ilyen például az sh, a Bourne Shell, és a tcsh, a továbbfejlesztett C-shell. Sok más parancsértelmező, mint például a zsh és bash is elérhető a FreeBSD Portgyűjteményéből.
De melyik parancsértelmezőt is válasszuk? Ez igazából ízlés kérdése. Ha inkább C programozók vagyunk, akkor valószínűleg egy olyan C-szerű shelllel tudunk kényelmesen dolgozni, amilyen például a tcsh. Ha viszont egy linuxos rendszert használtunk korábban vagy éppen még soha nem használtunk volna a UNIX parancssorát, érdemes a bash-sel megpróbálkoznunk. A lényeg az, hogy minden parancsértelmezőnek vannak olyan egyedi jellemezői, amiért használatóak vagy éppen nem használatóak a munkánkban, ezért magunknak kell kiválasztani a nekünk megfelelőt.
A shellek egyik legáltalánosabb jellemzője az állományok neveinek kiegészítése. Miután begépeljük egy parancs vagy állománynév első néhány karakterét, a Tab billentyű lenyomásával megkérhetjük a parancsértelmezőt, hogy magától egészítse ki (“találja ki”) a fennmaradó részt. Nézzük erre egy példát. Tegyük fel, hogy van két állományunk, izemize és ize.mize, és szeretnénk letörölni az ize.mize nevűt. Ehhez a következőt kell begépelnünk: rm iz[Tab].[Tab].
Erre a parancsértelmező a következő parancsot írja ki: rm ize[SIPOLÁS].mize.
A [SIPOLÁS] itt a konzol sípjára vonatkozik, amellyel jelzi, hogy nem tudta teljesen kiegészíteni az állomány nevét, mivel egynél több is megfelel a megadott alaknak. Az izemize és az ize.mize is egyaránt az iz előtaggal kezdődik, azonban ebből a parancsértelmező csak az ize előtagot tudta kikövetkeztetni. Ha most begépelünk még egy . karaktert és újra megnyomjuk a Tab billentyűt, a parancsértelmező ezúttal képes lesz az állomány teljes nevét megállapítani.
A parancsértelmezők másik általános jellemzője a környezeti változók használata. A környezeti változók lényegében a parancsértelmező környezetéhez tárolt név-érték párok. Ezt a környezetet látja minden olyan program, amit a parancsértelmezőből meghívunk, és ezért tartalmazni is szokott sok ilyen beállítást. Íme a leggyakoribb környezeti változók felsorolása és rövid leírása:
Változó | Leírás |
---|---|
USER | A bejelentkezett felhasználó neve. |
PATH | Vesszővel elválasztott könyvtárak, ahol a parancsértelmező a végrehajtható állományokat keresi. |
DISPLAY | Az aktuálisan használt X11 megjelenítő hálózati neve, amennyiben létezik ilyen. |
SHELL | A használt parancsértelmező. |
TERM | A felhasználó által használt terminál típusa. Ebből a terminál képességeit lehet megállapítani. |
TERMCAP | A terminálok adatbázisából származó, különböző terminálfunkciókhoz tartozó helyettesítő (escape) kódok. |
OSTYPE | Az operációs rendszer típusa, például FreeBSD. |
MACHTYPE | A rendszer alatt futó gép architektúrája. |
EDITOR | A felhasználó által használt szövegszerkesztő. |
PAGER | A felhasználó által lapozásra használt program. |
MANPATH | Vesszővel elválasztott könyvtárak, ahol a parancsértelmező a man oldalakat keresi. |
A környezeti változók beállítása parancsértelmezőnként valamennyire eltér. Például egy C stílusú parancsértelmező, mint például a tcsh vagy a csh, a setenv paranccsal állítja a környezeti változókat. A Bourne-féle parancsértelmezők, mint például az sh vagy a bash, az export parancsot használják a környezeti változók beállítására. Például a csh vagy a tcsh használata során a következőképpen tudjuk be- vagy átállítani az EDITOR környezeti változó értékét /usr/local/bin/emacs-re:
% setenv EDITOR /usr/local/bin/emacs
Ugyanez a Bourne-féle parancsértelmezőkben:
% export EDITOR="/usr/local/bin/emacs"
A legtöbb parancsértelmezőben a nevük előtt szerepeltetett $ jel segítségével kérhetjük a környezeti változók értékének behelyettesítését a parancssorba. Ennek megfelelően az echo $TERM parancs kiíratja a TERM változó aktuális értékét, mivel ebbe a parancsértelmező már az echo meghívása előtt behelyettesíti a TERM értékét.
A parancsértelmezők számos speciális karaktert, ún. metakaraktert az adatok különleges reprezentációjaként kezelnek. Köztük a leggyakrabban használt a *, amely tetszőleges számú karaktert helyettesít egy állomány nevében. Az ilyen metakarakterek segítségével tudunk egyszerre több állományt is megnevezni. Például ha begépeljük az echo * parancsot, akkor majdnem ugyanazt kapjuk eredményül, mintha az ls parancsot adtuk volna ki, hiszen a parancsértelmező ilyenkor veszi az összes * metakarakterre illeszkedő állományt, és a kiíratásukhoz pedig rendre behelyettesíti ezeket a parancssorba az echo paramétereként.
Ha nem szeretnénk, hogy a parancsértelmező értelmezze a speciális karaktereket, akkor egy “backslash” (visszaper) (\) karaktert eléjük téve mindezt megakadályozhatjuk. Az echo $TERM parancs ugyebár kiíratja a terminálra vonatkozó környezeti változó beállítását, azonban a echo \$TERM változatlanul kiírja a $TERM szöveget.
A parancsértelmezőnk legegyszerűbben a chsh parancs használatával változtatható meg. A chsh kiadása után elindítja az EDITOR környezeti változónak megfelelő szövegszerkesztőt, ha nem lenne ilyen, akkor alapértelmezés szerint a vi hívódik meg. Az így megnyitott állományban változtassuk meg kedvünk szerint a “Shell: ” kezdetű sort.
A chsh parancsnak megadhatjuk az
-s
opciót is, amin keresztül
szövegszerkesztő használata nélkül
be tudjuk állítani a
parancsértelmezőt. Például ha a
parancsértelmezőnket a bash-re
akarjuk lecserélni, akkor ezt írjuk be:
% chsh -s /usr/local/bin/bash
Megjegyzés: A használni kívánt parancsértelmezőnek szerepelnie kell az /etc/shells állományban. Ha a kiválasztott parancsértelmezőt a Portgyűjteményből telepítettük fel, akkor az már minden bizonnyal bekerült oda. Ha viszont saját magunk raktuk volna fel, akkor ide is fel kell vennünk.
Például ha a bash-t manuálisan telepítettük és másoltuk a /usr/local/bin könyvtárba, akkor így kell eljárnunk:
# echo "/usr/local/bin/bash" >> /etc/shellsMajd próbálkozzunk újra a chsh paranccsal.
A FreeBSD beállításának nagy része szöveges állományok szerkesztésével történik. Emiatt sosem árt legalább egy szövegszerkesztőt ismernünk. A FreeBSD alaprendszerében, valamint a Portgyűjteményben is találhatunk néhányat belőlük.
A legegyszerűbben megtanulható és legkönnyedebb szövegszerkesztőt ee-nek, avagy “easy editornak” hívják. Az ee indításához írjuk be az ee állománynév parancsot, ahol az állománynév lesz a szerkesztendő állomány neve. Így például az /etc/rc.conf állomány szerkesztéséhez gépeljük be az ee /etc/rc.conf parancsot. Miután elindult az ee, az összes szerkesztéshez használható parancsa megjelenik a képernyő felső részében. Itt a “kalap” (^) karakter a Ctrl billentyű lenyomására utal, így tehát a ^e jelölés a Ctrl+e billentyűkombinációt jelenti. Ha ki akarunk lépni az ee-ből, nyomjuk le az Esc billentyűt, majd a felbukkanó menüből válasszuk a szerkesztő elhagyását (leave editor). Ha az állományt módosítottuk, kilépés előtt még a szövegszerkesztő rákérdez, hogy mentse-e a változtatásainkat.
A FreeBSD nagyobb tudású szövegszerkesztőket, mint például a vi-t, is tartalmaz az alaprendszer részeként, miközben a többi, mint például az Emacs vagy a vim a Portgyűjtemény részeként (editors/emacs és editors/vim) érhető el. Ezek a szerkesztők sokkal több lehetőséget és erőt képviselnek, amiért cserébe viszont valamivel nehezebb megtanulni a használatukat. Ha viszont rengeteg szöveget akarunk majd szerkeszteni, akkor egy vim vagy Emacs használatának megismerésével sok időt megspórolhatunk.
Számos alkalmazás, amely állományokat akar módosítani vagy szöveges bemenetre van szüksége, automatikusan szövegszerkesztőt nyit meg. Ezt az EDITOR környezeti változó beállításával tudjuk meghatározni. Erről részletesebben a parancsértelmezőknél olvashatunk.
Az eszköz elnevezést leginkább a rendszerben folyó, hardverrel kapcsolatos tevékenységek kapcsán használják lemezekre, nyomtatókra, grafikus kártyákra és billentyűzetekre. A FreeBSD indulása során többnyire azt láthatjuk, hogy milyen eszközöket sikerült felismernie. Ezeket a rendszerindításkor megjelenő üzeneteket a /var/run/dmesg.boot állományban nézhetjük meg újra.
Például az acd0 az első IDE CD-meghajtót, míg a kbd0 a billentyűzetet képviseli.
A UNIX operációs rendszerben a legtöbb eszközt a /dev könyvtárban található, eszközleíróknak (device node) nevezett speciális állományokon keresztül érhetjük el.
Amikor egy újfajta eszközt adunk hozzá a rendszerhez vagy csak annak egy új példányát, mindig létre kell hoznunk hozzá egy új eszközleírót.
Az eszközöket tartalmazó állományrendszer, avagy DEVFS, ad hozzáférést a rendszermag által ismert eszközök neveihez a globális állományrendszer nevein keresztül. Így ahelyett, hogy magunknak kellene létrehoznunk és módosítanunk az eszközleírókat, a DEVFS erre a célra fenntart egy külön állományrendszert.
A devfs(5) man oldalon olvashatunk bővebben erről.
Annak megértéséhez, hogy a FreeBSD miért az elf(5) formátumot használja, először is tisztában kell lennünk a UNIX típusú rendszerekben használt végrehajtható állományok három “uralkodó” formátumával:
A legősibb és egyben a “klasszikus” UNIX-os tárgykódformátum. Egy tömör és rövidke fejlécet használ, aminek az elején a formátum leírására szolgáló “bűvös szám” található (erről bővebben lásd a.out(5)). Három betöltött szegmenst tartalmaz: .text, .data és .bss, valamint egy szimbólumokat és karakterláncokat tároló táblát.
COFF
Az SVR3 tárgykódformátuma. A fejléc itt már tartalmaz egy table nevű szegmenst is, tehát a .text, .data és .bss szegmensekhez hasonlóan ebből is többet tud tárolni.
A COFF után következő formátum, amelyben több szegmens is megtalálható, valamint létezik 32 bites és 64 bites változatban is. Egyetlen hátránya van: az ELF tervezése során rendszerarchitektúránként csupán egyetlen ABI-t (bináris alkalmazói felületet) feltételeztek. Ez azonban meglehetősen helytelen, mivel még a kereskedelmi SYSV világában (ahol már legalább három ABI található: SVR4, Solaris és SCO) sem állja meg a helyét.
A FreeBSD ezt a problémát a megbélyegzés (branding) segítségével próbálja megoldani, aminek révén el tudunk látni egy ismert ELF állományt a futtatásához megfelelő ABI-ra vonatkozó információkkal. Erről részletesebben a brandelf(1) oldalán tájékozódhatunk.
A FreeBSD a “klasszikusok” táborából indult, ezért kezdetben az a.out(5) formátumot használta, mivel ez a technológia a BSD kiadások számos generációjában megmérettetett és bevált, egészen a 3.X ág elindulásáig. Habár már jóval előtte lehetett fordítani és futtatni natív ELF binárisokat (és rendszermagokat) a FreeBSD rendszereken, a FreeBSD kezdetben ódzkodott váltani az alapértelmezés szerinti ELF formátumra. De vajon miért? Nos, amikor a Linux-tábor megtette a maga fájdalmas váltását az ELF-re, az nem annyira azért volt, hogy megszabaduljanak az a.out végrehajtható formátumtól, hanem mert a rugalmatlan, ugrótáblákon alapuló oszottkönyvtár-kezelési mechanizmusaik nagyon megnehezítették a gyártók és fejlesztők számára az osztott függvénykönyvtárak létrehozását. Mivel az ELF formátumhoz rendelkezésre álló eszközök megoldást kínáltak az osztott könyvtárak gondjaira, és mivel általánosan elfogadták “a jövőbe vezető útként”, a FreeBSD is felvállalta az átállással kapcsolatos költségeket és végrehajtotta azt. A FreeBSD az osztott könyvtárakat leginkább a Sun SunOS™ rendszeréhez hasonlóan kezeli, ami egy nagyon könnyen használható megoldás.
De miért van ilyen sok különböző formátum?
A ködös és sötét múltban egyszerűbb hardverek voltak. Ezek az egyszerű hardverek egyszerű, kicsi rendszereket támogattak. Az a.out tökéletesen megfelelő volt egy ilyen egyszerű rendszer (egy PDP-11) binárisainak tárolására. Ahogy az emberek nekiláttak átültetni erről az egyszerű rendszerről a UNIX-ot más rendszerekre, az a.out formátumot továbbra is megtartották, mivel a UNIX kezdeti, Motorola 68k-ra, VAXenre készített átírataihoz is elegendő volt.
Ezután néhány éles elméjű hardvermérnök kitalálta, ha rá tudnák kényszeríteni a programokat egy-két ügyetlen trükkre, akkor a terveken meg tudnának spórolni néhány logikai kaput és ezzel a processzor is gyorsabban tudna futni. Miközben az a.out formátumot ilyen hardverre (amit manapság RISC-nek hívnak) is szerették volna áthozni, kiderült, hogy ebben az esetben szinte használhatatlan. Ezért az a.out formátum által felkínáltnál nagyobb teljesítmény elérése érdekében nekiláttak számos más formátumot is kidolgozni. Ekkor jöttek létre a COFF, ECOFF és más hasonló formátumok, amelyek előbb-utóbb korlátokba ütköztek, még mielőtt a történelem megállapodott volna az ELF formátumnál.
Ráadásul a programok méretei egyre inkább kezdtek nőni, miközben a lemezek (valamint a fizikai memória) továbbra is viszonylag kicsik maradtak, ezért megszületett az osztott könyvtár ötlete, és a virtuális memóriát kezelő alrendszer is sokat finomodott. Mivel ezek a különböző fejlesztések az a.out formátumra épültek, annak használatósága a beletömött módosítások számával együtt romlott. Emellett az emberek még szerettek volna betölteni különféle dolgokat futási időben dinamikusan, vagy éppen a memória és a lapozóállomány megspórolásához kipucolni a programjaik egyes részeit az inicializáló kódrészletek lefutása után. A programozási nyelvek is fejlődtek, és az emberek a főprogram futása előtt is akartak kódot futtatni. Az a.out formátum rengeteg apró foltozáson esett keresztül, amelyek egy ideig még tudták is tartani magukat. Azonban egy idő után már az a.out formátum egyre növekvő teljesítménycsökkenés nélkül már nem volt képes állni a sarat. Habár az ELF megszüntette a fennálló problémák jelentős részét, egyúttal megnehezítette egy alapvetően működő rendszer leváltását. Ezért az ELF formátumnak meg kellett várnia azt a pillanatot, amikorra az a.out használata már kényelmetlenné vált.
Azonban ahogy múlt az idő, az eszközökből, amelyekből a FreeBSD a fordításához szükséges eszközöket származtatta (különösen az assembler és a betöltő),létrejött két párhuzamos fejlesztési fa. A FreeBSD-fa kiegészült az osztott könyvtárak támogatásával és hibákat javított, miközben a GNU-fa alkotói, akik eredetileg készítették ezeket a programokat, újraírták az eszközeiket és a keresztfordításhoz egyszerűbb támogatást készítettek, cserélhetővé tették a különböző formátumokat és így tovább. Sokan akartak FreeBSD-re keresztfordítani, azonban nem volt szerencséjük, mert a FreeBSD régebbi forrásait az as és ld már nem emésztette meg. Az új GNU eszköztár (a binutils) viszont ismeri már a keresztfordítást, az ELF formátumot, az osztott könyvtárakat, a C++ kiterjesztéseit stb. Időközben egyre több gyártó ELF formátumú binárisokat adott ki, és jó érzés volt ezeket FreeBSD-n is futtatni.
Az ELF sokkal kifejezőbb az a.out formátumnál, és jóval több bővítési lehetőséget enged az alaprendszerben. Az ELF formátumhoz tartozó eszközöket jobban karbantartják és támogatja a keresztfordítást, ami viszont sokaknak fontos. Az ELF talán némileg lassabb, mint az a.out, azonban ez nehezen mérhető le. Számos részletben eltérnek ugyan, például hogyan képeznek le lapokat, hogyan kezelik az inicializáló kódot stb., de ezek egyike sem igazán fontos. Idővel az a.out támogatása ki fog kerülni a GENERIC rendszermagból, és végül majd teljesen eltávolításra kerül, ahogy a régi a.out formátumú programok szépen lassan kifutnak.
A FreeBSD legátfogóbb dokumentációja a benne található man oldalak összessége. A rendszerben található szinte majdnem mindegyik programhoz létezik egy rövid használati útmutató, amely bemutatja az adott program alapvető működését és a különböző beállításait. Ezek a leírások a man parancs segítségével jeleníthetőek meg. A man parancs használata egyszerű:
% man parancs
ahol a parancs a megismerni kívánt parancsra utal. Például ha az ls parancsról szeretnénk többet megtudni, írjuk be:
% man ls
Az elérhető használati útmutatókat a következő számozott szakaszokra osztották:
Felhasználói parancsok
Rendszerhívások és hibakódok
A C függvénykönyvtár függvényei
Eszközmeghajtók
Állományformátumok
Játékok és egyéb szórakoztató alkalmazások
Egyéb információk
Rendszerkarbantartási és -működtetési parancsok
Rendszermagfejlesztők számára
Bizonyos esetekben ugyanaz a téma az
útmutatók több szakaszában is
elérhető. Például létezik
chmod felhasználói parancs
és a chmod()
rendszerhívás. Ilyenkor a man
parancsnak meg tudjuk adni pontosan, melyik szakaszra is vagyunk
kíváncsiak:
% man 1 chmod
Ennek hatására a chmod felhasználói parancshoz tartozó oldal jelenik meg. Írott formában a használati útmutatók különböző szakaszaira hagyományosan a név után zárójelbe tett számmal hivatkoznak, így a chmod(1) a chmod felhasználói parancs és a chmod(2) a rendszerhívás.
Ez a módszer remekül működik abban az
esetben, amikor ismerjük a parancs nevét, azonban
mit tegyünk akkor, ha nem is emlékszünk a
nevére? A man parancs a
-k
segítségével
paraméterezhető úgy is, hogy a parancsok
leírásai között keressen valamilyen
kulcsszó mentén:
% man -k mail
Ezzel a paranccsal megkapjuk azon parancsok listáját, amelyek leírásában szerepel a “mail” kulcsszó. Ez egyébként működésében teljesen megegyezik a apropos paranccsal.
Szóval szeretnénk megtudni, hogy a /usr/bin könyvtárban levő parancsok pontosan mit is csinálnak? Ehhez írjuk be:
% cd /usr/bin % man -f *
vagy
% cd /usr/bin % whatis *
ami ugyanezt teszi.
A FreeBSD-ben megtalálható a Szabad Szoftver Alapítvány (Free Software Foundation, FSF) által készített számos alkalmazás. Ezek a programok a szokványos man oldalakon kívül még általában tartalmaznak egy infonak nevezett, sokkal részletesebb hipertext alapú leírást is, amelyeket az info paranccsal, vagy ha van fenn emacs, akkor annak az info módjában tudjuk megjeleníteni.
Az info(1) parancs használatához ennyit kell beírnunk:
% info
Itt a h lenyomásával kapunk egy rövid bemutatkozást. A parancsok rövid listáját a ? billentyű hozza elő.
A FreeBSD rendszereszközök gazdag gyűjteményével érkezik az alaprendszer részeként. Azonban a külső alkalmazások telepítéséhez rengeteg teendőt kell elvégeznünk. A feladat elvégzésére ezért a FreeBSD két, egymást kiegészítő technológiát kínál fel: a FreeBSD Portgyűjteményt (telepítés forráskódból) és a csomagokat (telepítés előre elkészített bináris csomagokból). Mind a két módszerrel fel tudjuk telepíteni a kedvenc alkalmazásunk legújabb verzióját lokálisan vagy egyenesen a hálózatról.
A fejezet elolvasása során megismerjük:
hogyan telepítsünk külső fejlesztésű bináris szoftvercsomagokat;
hogyan fordítsunk le a forrásukból külső fejlesztésű szoftvereket a Portgyűjtemény segítségével;
hogyan távolítsunk el korábban már telepített csomagokat és portokat;
hogyan bíráljuk felül a Portgyűjtemény által használt alapértelmezett értékeket;
hogyan keressük meg a megfelelő szoftvercsomagokat;
hogyan frissítsük a telepített alkalmazásokat.
Ha korábban már használtunk UNIX rendszereket, valószínűleg ismerjük a külső alkalmazások telepítésének jellemező menetét:
Töltsük le a szoftvert, amelyet vagy forráskód vagy pedig bináris formátumban érhetünk el.
Bontsuk ki az alkalmazás letöltött változatát (ez általában a compress(1), gzip(1) vagy a bzip2(1) által tömörített tar állomány).
Keressük meg a dokumentációt (többnyire az INSTALL vagy a README állományban található, vagy a doc/ alkönyvtárban) és olvassuk el benne, hogyan tudjuk telepíteni a szoftvert.
Ha a szoftver forrását töltöttük le, fordítsuk le. Elképzelhető, hogy ennek során szerkesztenünk kell a Makefile állományt vagy lefuttatnunk a configure szkriptet, illetve más lépéseket is el kell végeznünk.
Próbáljuk a ki szoftvert, majd telepítsük.
Ez annak a forgatókönyve, amikor minden hiba nélkül lezajlik. Megeshet azonban, ha olyan szoftvert telepítünk, amelyet nem kifejezetten a FreeBSD-hez terveztek, akkor javítanunk kell a forráskódban a szoftver megfelelő működéséhez.
Ha sikerül működésre bírni, folytathatjuk FreeBSD-n a szoftver telepítését a “megszokott” módon. Habár a FreeBSD erre a célra két lehetőséget is felkínál, amivel rengeteg erőfeszítéstől megkímélhet minket: ezek a csomagok és a portok. Az írás pillanatában közel 20 000 külső alkalmazás érhető el ilyen formában.
Egy adott alkalmazás esetén a hozzá tartozó FreeBSD-s csomag mindössze egyetlen letöltendő állományt takar. A csomag tartalmazza az alkalmazás telepítéséhez szükséges összes parancs előre lefordított változtatát, ugyanígy magát a dokumentációt is. A letöltött csomagokat a FreeBSD csomagkezelő parancsaival vehetjük használatba: ezek a pkg_add(1), pkg_delete(1), pkg_info(1) és így tovább. Az új alkalmazások telepítése ennek köszönhetően egyetlen paranccsal elvégezhető.
Egy alkalmazás FreeBSD-s portja mögött lényegében állományok gyűjteménye áll, amelyek abban segítenek, hogy automatikusan tudjunk telepíteni a forráskód felhasználásával.
Ne felejtsük el, hogy normális esetben számos lépcsőt végig kell járnunk egy program sajátkezű lefordításához (letöltés, kitömörítés, javítgatás, fordítás, telepítés). A portot alkotó állományok tartalmazzák az összes olyan szükséges információt, amelyek átengedik ezt a feladatot a rendszernek. Kiadunk néhány egyszerű parancsot és az alkalmazás magától letöltődik, kitömörítődik, módosítja a forráskódját, lefordul és települ.
Valójában a portrendszer használható olyan csomagok létrehozására is, amelyeket később a pkg_add és többi hozzá hasonló, hamarosan részletesebben is bemutatandó csomagkezelő paranccsal is kezelni tudunk.
A csomagok és a portok egyaránt képesek függőségeket kezelni. Tegyük fel, hogy egy olyan alkalmazást akarunk telepíteni, amely egy adott függvénykönyvtár meglététől függ a rendszeren. Az alkalmazás és a könyvtár is elérhető FreeBSD portként és csomagként. Akár a pkg_add parancsot, akár a portrendszert használjuk az alkalmazás hozzáadására, mind a kettő észre fogja venni, hogy a szükséges könyvtárt még nem telepítettük, ezért először azt fogja automatikusan telepíteni.
Tudván, hogy a két említett megoldás szinte teljesen egyenértékű, felmerülhet a kérdés: a FreeBSD mégis miért rendelkezik mindkettővel? A csomagoknak és a portoknak is megvannak a maguk előnyei, és hogy a kettő közül melyiket használjuk, csak az egyéni ízlésünkön múlik.
A csomagok használatának előnyei
Egy csomag általában kisebb, mint az alkalmazás forráskódját tartalmazó tömörített tar állomány.
A csomagokat nem kell fordítani. Nagyobb alkalmazások, mint például a Mozilla, KDE vagy GNOME esetén ez kulcsfontosságú lehet, főleg abban az esetben, ha a rendszerünk ehhez nem eléggé gyors.
A csomagok használata nem várja el tőlünk, hogy behatóbban ismerjük, miként is kell FreeBSD-n szoftvereket lefordítani.
A portok használatának előnyei
A csomagokat általános esetben igen óvatos beállításokkal készítik el, hiszen a lehető legtöbb rendszeren működőképesnek kell lenniük. Ha viszont portból telepítünk, nyugodtan hangolhatjuk úgy a beállításokat, hogy (például) a Pentium 4 vagy az Athlon processzoroknak kedvező kódot hozzanak létre.
Bizonyos alkalmazások fordítás idején állítandó beállításokkal rendelkeznek arról, hogy mire lesznek képesek és mire nem. Például az Apache beépített konfigurációs opciók széles kelléktárával rendelkezik. Amikor viszont portból hozzuk létre, nem kell elfogadnunk ezek alapértelmezett értékeit, hanem a saját igényeinknek megfelelően átállíthatjuk ezeket.
Egyes esetekben több különféle beállítást tükröző csomag is létezhet ugyanahhoz az alkalmazáshoz. Például a Ghostscript elérhető ghostscript és ghostscript-nox11 csomagként is attól függően, hogy telepítettük-e az X11 szervert. Ez természetesen egy meglehetősen durva kijátszása a csomagrendszernek, és gyorsan lehetetlenné is válik a használata, ha az adott alkalmazás egy-két fordítási idejű beállításnál többel rendelkezik.
Néhány szoftver licencelése tiltja a bináris terjesztést. Ezért ezek a szoftverek kizárólag csak forráskód formájában továbbíthatóak.
Néhányan nem bíznak meg a bináris verziókban. Ha látjuk a forráskódot is, akkor (elméletben) át tudjuk nézni, és mi magunk is megkereshetjük a benne lappangó hibákat.
Ha vannak saját javításaink, csak a forráskód birtokában tudjuk ezeket felhasználni.
Sokan szeretik, ha egyszerűen csak “ott van” a szoftverek forráskódja. Ha éppen unatkoznak, beléjük tudnak nézni, ötleteket és kódot tudnak belőlük meríteni (persze csak akkor, ha ezt a licenc megengedi), vagy tovább tudják ezeket fejleszteni, orvosolni tudják a hibáikat stb.
A portok frissítéséről a FreeBSD ports levelezési lista és a FreeBSD ports bugs levelezési lista valamelyikéről szerezhetünk naprakész információkat.
Figyelem: Mielőtt bármelyik alkalmazást is telepítenénk, érdemes meglátogatnunk az http://vuxml.freebsd.org oldalt, ahol a hozzá tartozó ismert biztonsági problémákról olvashatunk.
Telepíthetjük a ports-mgmt/portaudit programot is, amely automatikusan ellenőrzi a telepített alkalmazások ismert sebezhetőségeit. Ez az ellenőrzés egyébként megejthető minden port lefordítása előtt is. Ezalatt a portaudit -F -a parancs kiadásával ellenőrizhetjük utólag a telepített csomagokat.
A fejezet fennmaradó részében megmutatjuk, hogyan használjuk FreeBSD-ben a csomagokat és portokat külső alkalmazások telepítésére és karbantartására.
Mielőtt telepítenénk bármilyen alkalmazást, tudnunk kell, hogyan is nevezik.
A FreeBSD-hez elérhető alkalmazások listája folyamatosan növekszik. Szerencsére számos módja van annak, hogy utánajárjunk a keresett szoftvernek:
A FreeBSD honlapján találhatunk egy rendszeresen frissülő listát az összes elérhető alkalmazásról, a http://www.FreeBSD.org/ports/ címen. Itt a portok különböző kategóriákba sorolva találhatóak meg, ahol név szerint megkereshetjük az alkalmazást (amennyiben ismerjük), vagy végigböngészhetjük az adott kategóriában elérhető alkalmazásokat is.
Dan Langlille a http://www.FreshPorts.org/ címen karbantartja a FreshPorts nevű oldalt. Ezen az oldalon folyamatosan nyomon lehet követni a Portgyűjteményben megtalálható alkalmazások változásait, lehetővé téve, hogy egy vagy több portot is “figyeljünk”, vagy e-mailt küldjünk a frissítésükről.
Amennyiben nem ismerjük a keresett alkalmazás nevét, próbáljuk meg felkutatni a FreshMeaten (http://www.freshmeat.net/) vagy hozzá hasonló oldalakon, majd nézzük meg a FreeBSD honlapján, hogy az adott alkalmazást portolták-e már a rendszerre.
Ha pontosan ismerjük a port nevét, és csak a kategóriáját kellene megkeresnünk, használjuk a whereis(1) parancsot. Egyszerűen csak adjuk ki a whereis név parancsot, ahol a név a telepítendő program neve. Ha sikerült megtalálni, részletes információt kapunk arról, hogy hol található, valahogy így:
# whereis lsof lsof: /usr/ports/sysutils/lsof
A fenti példában megtudhatjuk, hogy az lsof parancs a /usr/ports/sysutils/lsof könyvtárban található.
Vagy egy egyszerű echo(1) paranccsal is megkereshetjük a portfában a portokat. Mint például:
# echo /usr/ports/*/*lsof* /usr/ports/sysutils/lsof
Ez a módszer a /usr/ports/distfiles könyvtárba letöltött összes illeszkedő állományt is kilistázza.
Egy másik lehetőség egy adott port megtalálására, ha a Portgyűjtemény beépített keresési mechanizmusát használjuk. Ennek használatához a /usr/ports könyvtárban kell lennünk. Miután beléptünk ide, futtassuk le a make search name=programnév parancsot, ahol a programnév a keresendő program neve. Például, ha az lsof programot keressük:
# cd /usr/ports # make search name=lsof Port: lsof-4.56.4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: obrien@FreeBSD.org Index: sysutils B-deps: R-deps:
A keresés eredményében leginkább a “Path:” kezdetű sorra kell odafigyelnünk, mivel ez árulja el, hol is találhatjuk meg a portot. Az itt szereplő többi információ nem szükséges a port telepítéséhez, ezért azokkal itt most nem foglalkozunk.
Mélyebb keresésekhez használhatjuk a make search key=szöveg parancsot is, ahol a szöveg a keresendő szöveg(részlet) lesz. Ezt a rendszer keresni fogja a portok neveiben, megjegyzésekben, leírásokban és függőségekben. Amikor nem ismerjük a keresett program nevét, ez olyan portok keresésére alkalmas, amelyek egy adott témához kapcsolódnak.
A fenti esetek mindegyikében a keresés nem különbözteti meg a kis- és nagybetűket. Tehát az “LSOF” keresése ugyanazt az eredményt adja, mint az “lsof” esetén.
FreeBSD alatt több különböző módon tudunk csomagokat használni:
A sysinstall használatán keresztül a futó rendszeren tudjuk megnézni a telepített csomagokat, tudunk vele csomagokat telepíteni vagy törölni. Ezzel részletesebben a 2.10.11 Szakasz foglalkozik.
A szakasz további részében ismertetett egyéb parancssoros csomagkezelő segédprogramok.
A pkg_add(1) segédprogram segítségével telepíthetünk FreeBSD-hez készült szoftvercsomagokat lokálisan vagy a hálózaton levő egyik szerveren megtalálható állományokból:
Példa 4-1. Csomagok letöltése manuálisan és telepítése lokálisan
# ftp -a ftp2.FreeBSD.org Connected to ftp2.FreeBSD.org. 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready. 331 Guest login ok, send your email address as password. 230- 230- This machine is in Vienna, VA, USA, hosted by Verio. 230- Questions? E-mail freebsd@vienna.verio.net. 230- 230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz 200 PORT command successful. 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes). 100% |**************************************************| 92375 00:00 ETA 226 Transfer complete. 92375 bytes received in 5.60 seconds (16.11 KB/s) ftp> exit # pkg_add lsof-4.56.4.tgz
Ha nincsenek egyáltalán helyben csomagjaink
(például egy FreeBSD CD-készletben), akkor a
legjobban úgy járunk, ha használjuk a
pkg_add(1) -r
kapcsolóját.
Ennek hatására a segédprogram
önmagától meghatározza a
szükséges állományformátumot
és verziót, majd FTP-n keresztül letölti
és telepíti a csomagot.
# pkg_add -r lsof
Az iménti példában a program mindenféle további beavatkozás nélkül letölti a megfelelő csomagot és felteszi. Ha a központi helyett egy másik szervert szeretnénk használni, felül kell bírálnunk az alapértelmezett beállításokat és igényeinknek megfelelően be kell állítanunk a PACKAGESITE környezeti változó értékét. A pkg_add(1) a fetch(3) programot használja az állományok letöltésére, amely pedig számos egyéb környezeti változót is figyel, mint például az FTP_PASSIVE_MODE, az FTP_PROXY és az FTP_PASSWORD. Ha tűzfal mögött vagyunk, ezek közül néhányat biztosan be kell majd állítanunk, vagy FTP/HTTP proxyt kell használnunk. A fetch(3) man oldalán megtaláljuk ezen változók teljes felsorolását. Figyeljük meg, hogy az lsof-4.56.4 helyett csak lsof-ot adtunk meg. Amikor ugyanis kérjük a csomag letöltését is, nem szabad verziószámot megadnunk. A pkg_add(1) mindig az alkalmazás legfrissebb verzióját fogja letöltetni.
Megjegyzés: Ha a FreeBSD-CURRENT vagy FreeBSD-STABLE verziókat használjuk, a pkg_add(1) mindig az alkalmazás elérhető legfrissebb verzióját fogja letölteni. Ha azonban valamelyik -RELEASE verziót használjuk, a csomagnak az adott kiadáshoz készült verzióját fogja leszedni. Ezt a működési módot a PACKAGESITE változó felülírásával viszont meg tudjuk változtatni. Például ha a FreeBSD 5.4-RELEASE változatával dolgozunk, a pkg_add(1) alapértelmezés szerint a ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest/ címről fogja letölteni a csomagokat. Ha mi viszont a FreeBSD 5-STABLE csomagok letöltését akarjuk elérni, állítsuk az PACKAGESITE értékét a ftp://ftp.freebsd.org/pub/FreeBSD/i386/packages-5-stable/Latest/ címre.
A csomagok .tgz és .tbz formátumokban kerülnek terjesztésre. Ezek az ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/ címen, vagy pedig a FreeBSD CD-ken találhatóak meg. A 4 CD-ből álló készlet (illetve a PowerPak stb.) minden CD-jén találhatunk csomagokat a packages/ könyvtárban. A csomagokat tároló könyvtár struktúrája hasonló a /usr/ports könyvtárban kialakított könyvtárfához. Minden kategóriának saját könyvtára van, és minden csomag megtalálható az All (összes) kategóriában.
A csomagrendszer könyvtárszerkezete tehát megegyezik a portok szétosztásával, ezáltal így képesek egymással összedolgozni a teljes csomag/port rendszer megformálásában.
A pkg_info(1) egy olyan segédprogram, amellyel készíteni lehet egy listát a telepített csomagokról, és emellett még más egyéb információkat tudhatunk meg róluk.
# pkg_info cvsup-16.1 A general network file distribution system optimized for CV docbook-1.2 Meta-port for the different versions of the DocBook DTD ...
A pkg_version(1) összefoglalja az összes telepített csomag verzióját. Ezenkívül össze is hasonlítja a csomagok verzióját a portfában található aktuális verziókéval.
# pkg_version cvsup = docbook = ...
A második oszlopban látható jelek utalnak a telepített verzió a helyi portfában található verzióéhoz viszonyított korára.
Jel | Jelentés |
---|---|
= | A telepített csomag verziója megegyzik a helyi portfában található verziójával. |
< | A telepített verzió a portfában levőnél régebbi. |
> | A telepített verzió újabb, mint a portfában található. (A helyi portfa valószínűleg nem lett frissítve.) |
? | A telepített csomag nem található a portok között. (Ez akkor történhet meg, amikor például egy portot eltávolítottak a Portgyűjteményből vagy átnevezték.) |
* | A csomagnak több verziója is jelen van. |
! | A telepített csomag szerepel az indexben, de a pkg_version valamiért nem volt képes összehasonlítani a verziószámát az indexben levő bejegyzéssel. |
Egy korábban már telepített csomag eltávolításához használjuk a pkg_delete(1) segédprogramot.
# pkg_delete xchat-1.7.1
A pkg_delete(1) használatánál szükség van a csomag teljes nevének és verziószámának megadására. A fenti parancs tehát nem működik, ha csak az xchat-et adjuk meg az xchat-1.7.1 helyett. A telepített csomag verzióját azonban könnyedén kitalálhatjuk a pkg_version(1) alkalmazásával. Esetleg egyszerűen dzsókerkaraktereket is használhatunk:
# pkg_delete xchat\*
Ebben az esetben az összes xchat-tel kezdődő csomagot letörli.
A csomagokra vonatkozó összes információ a /var/db/pkg könyvtárban található. Az egyes csomagok leírása és hozzájuk telepített állományok listája az ezen a könyvtáron belül elhelyezkedő állományokban tárolódik.
A most következő szakaszokban megismerhetjük azokat az alapvető utasításokat, amelyekkel a Portgyűjteményen keresztül tudunk programokat telepíteni és eltávolítani. Az ehhez használható make targetek és környezeti változók részletesebb leírását a ports(7) man oldalán lelhetjük meg.
Mielőtt bármelyik portot is tudnánk telepíteni, elsőként magát a Portgyűjteményt kell megszereznünk — ez lényegében a /usr/ports könyvtárban megtalálható Makefile állományok, javítások és leírások gyűjteménye.
A FreeBSD telepítése közben a sysinstall rákérdez a Portgyűjtemény telepítésére is. Ha erre nemet válaszoltunk volna, a portok gyűjteményét az alábbi módokon szerezhetjük be:
A CVSup használatával
A CVSup protokoll használatával viszonylag gyorsan el tudjuk érni és naprakészen tudjuk tartani a Portgyűjtemény egy példányát. A CVSup használatát alaposabban a A CVSup használata című függelékben ismerhetjük meg.
Megjegyzés: A FreeBSD 6.2 változatától kezdve az alaprendszerben a CVSup protokollt a csup valósítja meg. A FreeBSD korábbi változatának használói ezt a programot a net/csup porton vagy csomagon keresztül tudják telepíteni.
Gondoskodjunk róla, hogy a /usr/ports üres legyen a csup első futtatása előtt! Ha más forrásból raktuk ide a Portgyűjteményt, a csup nem fogja lenyesegetni az azóta eltávolított javításokat.
Futtassuk a csup programot:
# csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
Itt írjuk át a cvsup.FreeBSD.org címét a hozzánk legközelebb levő CVSup szerver címére. Az összes elérhető tükörszerver címét a CVSup tükrözések (A.6.7 Szakasz) című részben olvashatjuk.
Megjegyzés: Ha például el akarjuk kerülni a CVSup szerver megadását a parancssorban, akkor mindenképpen a ports-supfile állományból érdemes készíteni egy saját verziót.
Ebben az esetben root felhasználóként másoljuk a /usr/share/examples/cvsup/ports-supfile állományt egy új helyre, például a /root könyvtárba vagy a saját felhasználói könyvtárunkba.
Szerkesszük át a ports-supfile állományt.
Írjuk át a CHANGE_THIS.FreeBSD.org értéket a hozzánk legközelebb található CVSup szerverére. A CVSup tükrözések (A.6.7 Szakasz) című részben megtaláljuk az összes ilyen tükörszervert.
És most indítsuk el a csup parancsot az alábbi módon:
# csup -L 2 /root/ports-supfile
A csup(1) parancs későbbi futása során már letölti és érvényesíti az észlelt változtatásokat a saját Portgyűjteményünkben, de a telepített portokat nem fogja újrafordítani.
A Portsnap használatával
A Portsnap egy másik módszert képvisel a Portgyűjtemény terjesztésére, a lehetőségeinek részletesebb megismeréséhez tekintsük át A Portsnap használata című szakaszt.
Töltsük le a Portgyűjtemény tömörített pillanatképét a /var/db/portsnap könyvtárba. Ha akarjuk, ezután a lépés után már lekapcsolódhatunk az internetről.
# portsnap fetch
Ha még csak először futtatjuk a Portsnapet, bontsuk ki az imént letöltött állapotot a /usr/ports könyvtárba:
# portsnap extract
Ha viszont már korábban is létezett a /usr/ports könyvtárunk és most csak frissítjük, akkor helyette ezt a parancsot adjuk ki:
# portsnap update
A sysinstall használatával
Ebben az esetben a sysinstall nevű programmal telepítjük a Portgyűjteményt valamilyen telepítőeszközről. Ilyenkor azonban a kiadás dátumának megfelelő, valószínűleg régebbi változat kerül fel. Ha rendelkezünk internet-hozzáféréssel, akkor inkább az előbb tárgyalt módszerek valamelyikét alkalmazzuk.
root felhasználóként adjuk ki a sysinstall parancsot, ahogy itt is láthatjuk:
# sysinstall
Menjünk le és álljunk meg a
(Beállítások) menüpontnál, és nyomjunk Enter billentyűt.Menjünk le és keressük meg a
(Terjesztések) menüponot, majd nyomjuk meg az Enter billentyűt.Menjünk le, válasszuk ki a
elemet a Szóköz megnyomásával.Menjünk fel az
(Kilépés) ponthoz, nyomjuk meg az Enter billentyűt.Válasszuk ki a telepítéshez használni kívánt eszközt, mint például CD, FTP stb.
Menjünk fel az
(Kilépés) menüpontig, majd nyomjuk meg az Enter billentyűt.Végezetül lépjünk ki a sysinstall programból, aminhez nyomjuk meg az X billentyűt.
A “váz” fogalma az első, amit a Portgyűjteménnyel kapcsolatban tisztázni kell. Dióhéjban összefoglalva, egy port váza azon állományok legszűkebb halmaza, amelyek elárulják a FreeBSD számára, hogyan fordítsuk le hibamentesen és hogyan telepítsük az adott programot. Ehhez minden port vázában megtalálható:
Egy Makefile nevű állomány. Ez tartalmazza azokat a különböző utasításokat, amelyek megmondják, hogyan kell lefordítani és hova kell telepíteni a rendszerünkben az adott alkalmazást.
Egy distinfo nevű állomány. Ebben található információ a port lefordításához szükséges állományok letöltéséről, valamint a letöltött állományok ellenőrzéséhez szükséges (az md5(1) és sha256(1) programokkal számolt) ellenőrzőösszegek.
Egy files alkönyvtár. Itt találhatjuk meg azokat a javításokat, amelyek alkalmazásával le tudjuk fordítani a programot FreeBSD-n is. Ezek a javítások többnyire bizonyos állományok módosításaira vonatkozó apró állományok formájában jelennek meg. Természetüknél fogva szöveges formátumúak, és általában olyanok szerepelnek bennük, hogy “Töröld a 10. sort” vagy “Változtasd meg a 26. sort erre: ...”. Ezeket a javításokat eredetileg patcheknek (foltoknak) nevezik, vagy másképp diffeknek (eltéréseknek) is, mivel a diff(1) program segítségével hozzák ezeket létre.
Ez a könyvtár tartalmazhat további állományokat is portok elkészítéséhez.
Egy pkg-descr nevű állomány. Ez a program részletesebb, gyakran többsoros bemutatása.
Egy pkg-plist nevű állomány. Itt találjuk meg a port által telepítendő összes állományt. Ez egyben közli a portrendszerrel is, hogy az eltávolítás során mely állományokat kell majd törölnie.
Egyes portokban szerepelhetnek még egyéb állományok is, mint például a pkg-message. Ezeket az állományokat a portrendszer különleges helyzetek kezelésére tartogatja. Ha még többet kívánunk megtudni ezekről az állományokról, vagy magukról a portokról általánosságban, lapozzuk fel a FreeBSD porterek kézikönyvét.
A port ugyan tartalmazza a forráskód lefordításához szükséges utasításokat, de konkrétan a forráskódot nem. Ezt egy CD-ről vagy az internetről tudjuk megszerezni. A forráskód általában a szerzője által kedvelt formában jelenik meg: ez gyakran egy gzip-pel tömörített tar állomány, de lehet tömörítve mással is, vagy éppen lehet tömörítetlen. A program forráskódját, legyen akármilyen formában is, nevezik “distfile”-nak (terjesztési állománynak). A FreeBSD portok telepítésének két módszerét tárjuk fel a következőkben.
Megjegyzés: A portok telepítéséhez root felhasználóként kell bejelentkeznünk.
Figyelem: Mielőtt telepítenénk bármelyik portot is, ajánlott frissíteni a Portgyűjteményünket és ellenőriznünk az adott portot a http://vuxml.freebsd.org címen található biztonsági adatbázisban.
Az újonnan telepítendő alkalmazások biztonsági sebezhetőségeinek ellenőrzését automatikussá is tehetjük a portaudit használatával. Ez a segédeszköz is a Portgyűjteményben található (ports-mgmt/portaudit). Érdemes minden port telepítése előtt letöltenünk a legfrissebb sebezhetőségi adatbázist a portaudit -F parancs kiadásával. Mellesleg az adatbázis rendszeres frissítése és ez a biztonsági felülvizsgálat a naponként elvégzendő biztonsági ellenőrzések közt is megjelenik. Ezekről részletesebben a portaudit(1) és periodic(8) man oldalakon olvashatunk.
A Portgyűjtemény feltételezi, hogy működő internet-hozzáféréssel rendelkezünk. Amennyiben ez nem így lenne, a terjesztési állományokat, forráskódokat saját magunknak kell bemásolnunk a /usr/ports/distfiles könyvtárba.
A kezdéshez lépjünk be a telepítendő port könyvtárába:
# cd /usr/ports/sysutils/lsof
Miután beléptünk az lsof könyvtárába, láthatjuk a port vázát. A következő lépés a fordítás, avagy a port “buildelése” (elkészítése). Ezt egy szimpla make parancs kiadásával kezdeményezhetjük. Miután megtettük, valami ilyesmit kell tapasztalnunk:
# make >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/. ===> Extracting for lsof-4.57 ... [ide jön a kitömörítés kimenete] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [ide jön a configure szkript kimenete] ... ===> Building for lsof-4.57 ... [ide jön a fordítás kimenete] ... #
A fordítás befejeztével visszakapjunk a parancssort. A soron következő lépés a port telepítése lesz. Ehhez mindössze egyetlen szóval kell kiegészítenünk a make parancs meghívását: ez a szó pedig az install (telepít) lesz.
# make install ===> Installing for lsof-4.57 ... [a telepítés kimenete kimarad] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. #
Miután ismét visszakaptuk a parancssort, már futtatni is tudjuk a frissen telepített alkalmazásunkat. Mivel az lsof programnak tovább jogosultságokra is szüksége van, egy erről szóló biztonsági figyelmeztetést is láthatunk. A portok létrehozása és telepítése során érdemes figyelnünk az ehhez hasonló figyelmeztetésekre.
A telepítés befejeztével nem árt törölnünk a fordításhoz felhasznált alkönyvtárat (work) is. Ezzel nemcsak a drága lemezterületet spóroljuk meg, hanem megelőzzük a port későbbi frissítése során felmerülő esetleges problémákat is.
# make clean ===> Cleaning for lsof-4.57 #
Megjegyzés: Az eljárásból két lépést meg is tudunk takarítani, ha egyszerűen csak a make install clean parancsot adjuk ki az előbb három lépésben tagolt make, make install és make clean parancsok helyett.
Megjegyzés: Bizonyos parancsértelmezők a PATH környezeti változóban felsorolt könyvtárakban található parancsokat gyorsítótárban tárolják, ezzel felgyorsítva a hozzájuk tartozó végrehajtható állományok keresését. Ha történetesen ilyen parancsértelmezőt használnánk, az új portok telepítése után szükségünk lehet a rehash parancs kiadására, mivel enélkül nem tudjuk elérni a frissen telepített parancsokat. Ezt a parancsot például a tcsh és a hozzá hasonló parancsértelmezőkben találhatjuk meg, az sh és rokonainál pedig a hash -r ennek a megfelelője. A pontos információkat erről a témáról a parancsértelmezőnk dokumentációjában lelhetjük meg.
Némely külső DVD termék, mint például a FreeBSD Malltól megrendelhető FreeBSD Toolkit, tartalmazhatnak terjesztési állományokat. Ezek remekül használhatóak a Portgyűjteménnyel. Ehhez csatlakoztatnunk kell a DVD-t a /cdrom könyvtárba. Ettől eltérő csatlakozási pontok használata esetén ne felejtsük el átállítani a CD_MOUNTPTS változót sem a make számára. Ekkor a fordításhoz szükséges állományokat úgy fogja kezelni a rendszer, mintha a merevlemezünkön lennének.
Megjegyzés: Vigyázzunk arra, hogy néhány portot nem lehet CD-n terjeszteni. Ez részben azért lehet, mert a szükséges állományok letöltéséhez, illetve újbóli terjesztéséhez ki kell tölteni valamilyen regisztrációs nyomtatványt, vagy pedig egyéb okok miatt. Tehát ha olyan portot akarunk telepíteni, ami nincs rajta a CD-n, mindenképpen rendelkeznünk kell internetkapcsolattal.
A portrendszer a fetch(1) segédprogramot használja az állományok letöltésére, amely figyelembevesz különféle környezeti változókat, ilyenek többek közt az FTP_PASSIVE_MODE, FTP_PROXY és az FTP_PASSWORD. Ha tűzfal mögött vagyunk, szükségünk lehet ezek némelyikének helyes beállítására, vagy FTP/HTTP proxyt kell használnunk. A fetch(3) man oldala tartalmazza ezen változók teljes listáját.
A make fetch azon felhasználók számára nyújt segítséget, akik nem csatlakoznak minden esetben a hálózatra. Egyszerűen csak futtassuk le a könyvtárszerkezet legtetejéről (/usr/ports) ezt a parancsot és a szükséges állományok letöltődnek nekünk. A parancs működik az alsóbb szinteken is, például a /usr/ports/net könyvtárban. Azonban legyünk tekintettel arra, hogy ha egy port függ más portoktól vagy függvénykönyvtáraktól, ez a parancs nem fogja letölteni a hozzájuk tartozó állományokat. Ilyenkor a fetch helyett használjuk a fetch-recursive targetet.
Megjegyzés: Ha a make parancsot egy felsőbb szinten futtatjuk, akkor ezzel létre tudjuk hozni az összes vagy csak kategóriánként az összes portot, hasonlóan az előbb említett make fetch módszerhez. Ez azonban veszélyes, mivel egyes portok kizárják mások használatát. Emellett előfordulhat az is, hogy bizonyos portok ugyanazon a néven telepítenek több, tartalmukban különböző állományt.
Nagyon ritkán adódhat, hogy a felhasználónak nem a MASTER_SITES által mutatott helyekről kell beszereznie a szükséges állományokat (innen töltődnek ugyanis le). A MASTER_SITES beállítást az alábbi paranccsal bírálhatjuk felül:
# cd /usr/ports/könyvtár # make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch
Ebben a példában a MASTER_SITES értékét a ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ címre változtattuk meg.
Megjegyzés: A portok némelyike lehetővé teszi (esetleg meg is követeli), hogy engedélyezzük vagy letiltsuk a készülő program bizonyos elemeit hatékonysági, biztonsági vagy egyéb testreszabási irányelvek mentén. Ilyen többek közt a www/mozilla, a security/gpgme és a mail/sylpheed-claws. Ha elérhetőek ilyen beállítási lehetőségek, arról a rendszer egy üzenetben tájékoztat minket.
Néha hasznos (vagy kötelező) lehet eltérő munka- és célkönyvtárak alkalmazása. A WRKDIRPREFIX és a PREFIX változókkal ezek alapértelmezéseit tudjuk megváltoztatni. Például a
# make WRKDIRPREFIX=/usr/home/example/ports install
parancs a portot a /usr/home/example/ports könyvtárban fogja lefordítani és az eredményét a /usr/local könyvtárba telepíti. A
# make PREFIX=/usr/home/example/local install
parancs hatására a port a /usr/ports könyvtárban készül el és a /usr/home/example/local könyvtárba települ.
Természetesen a
# make WRKDIRPREFIX=../ports PREFIX=../local install
parancs ötvözi az előbbi kettőt (amelyet most túlságosan is hosszú lenne kiírni, de vélhetően sejthető belőle az alapötlet).
Lehetőség van ezen változókat a saját környezetünkben is beállítani. Ha erre lenne szükségünk, nézzünk utána az ezzel kapcsolatos teendőnek a parancsértelmezőnk man oldalán.
Bizonyos portok az (X Window System részeként megjelenő) imake segédprogramra támaszkodnak, ahol viszont nem működik a PREFIX átállítása és mindenképpen a /usr/X11R6 könyvtárba akar telepíteni. Ehhez hasonlóan egyes Perl portok figyelmen kívül hagyják a PREFIX változót és közvetlenül a Perl fájába kerülnek. Az ilyen portok esetén nagyon nehéz vagy szinte lehetetlen betartatni a PREFIX használatát.
Egyes portok lefordítása előtt megjelenik egy ncurses alapú menü, ahol ki tudunk választani bizonyos fordítási beállításokat. Gyakran előfordul, hogy a port lefordítása után a felhasználók szeretnék újra előhozni ezt a menüt és megadni vagy kivenni bizonyos beállításokat. Erre több mód is kínálkozik. Egyik ilyen lehetőség az, ha belépünk a port könyvtárába és kiadjuk a make config parancsot, amivel lényegében ismét előcsaljuk a beállításokat összefoglaló menüt. Másik ilyen lehetőség a make showconfig alkalmazása, amivel a porthoz tartozó összes beállítást tudjuk egyszerre megjeleníteni. Ezek mellett még használható a make rmconfig parancs is, amivel törölni tudjuk az összes eddigi beállítást és így újrakezdhetjük a port konfigurációját. Ezek és a többi ilyen opció a ports(7) man oldalon kerül bővebb kifejtésre.
Most már tudjuk, miként lehet portokat telepíteni, azonban valószínűleg még az is érdekelhet minket, hogy miként kell ezeket eltávolítani abban az esetben, ha például később meggondolnánk magunkat velük kapcsolatban. A korábban telepített példaportot fogjuk eltávolítani (a figyelmetlenek kedvéért megemlítjük, hogy ez az lsof volt). A portok eltávolítása teljesen egybevág a csomagokéval (erről a csomagokról szóló részben beszéltünk), mivel ekkor is használhatjuk a pkg_delete(1) parancsot:
# pkg_delete lsof-4.57
Először is a pkg_version(1) parancs felhasználásával listázzuk ki azokat a portokat, amik felett már eljárt az idő és a Portgyűjteményben található belőlük újabb verzió:
# pkg_version -v
Miután frissítettük a Portgyűjteményünket, de még mielőtt megpróbálnánk akármelyik portot is frissíteni, érdemes egy pillantást vetnünk a /usr/ports/UPDATING állományra. Itt megtalálhatóak azok a problémák és a hozzájuk tartozó lépések, amelyekkel a felhasználóknak a portok frissítése során szembe kell nézniük, beleértve az állományformátumok, a konfigurációs állományok helyének megváltozását vagy egyéb olyan módosításokat, amik a korábbi verziókkal összeférhetetlenséget szülhetnek.
Amennyiben az UPDATING állomány tartalma ellentmondana az itt olvasottakkal, mindig az UPDATING állományban leírtak az irányadóak.
A portupgrade nevű segédprogramot a portok egyszerűbb frissítésére találták ki, és a ports-mgmt/portupgrade portban található meg. A make install clean paranccsal bármelyik más porthoz hasonlóan telepíthetjük:
# cd /usr/ports/ports-mgmt/portupgrade # make install clean
A pkgdb -F paranccsal fésültessük át a telepített portok listáját, és javítsuk az általa jelentett ellentmondásokat. Érdemes rendszeresen elvégezni ezt, lehetőleg minden frissítés előtt.
Miután kiadtuk a portupgrade -a
parancsot, a portupgrade
nekilát frissíteni az összes elavult portot
a rendszerünkben. Ha minden egyes
frissítést külön meg szeretnénk
erősíteni, használjuk a -i
kapcsolót is.
# portupgrade -ai
Ha nem akarjuk az összes portot frissíteni,
csupán egy bizonyos alkalmazásét,
használjuk a portupgrade
pkgname
paraméterezést. A -R
kapcsoló megadásával a
portupgrade először
frissíti az adott alkalmazás
függőségeit.
# portupgrade -R firefox
Ha a művelet során csomagokat
kívánunk használni portok helyett, adjuk
meg a -P
kapcsolót. Ennek
révén a portupgrade
megkeresi a csomagokat a PKG_PATH
környezeti változóban felsorolt
könyvtárakban vagy ha itt nem találja,
letölti ezeket egy távoli szerverről.
Amennyiben a csomagokat sem helyben, sem pedig a távoli
szerveren nem találja, a
portupgrade helyettük portokat
fog használni. Ilyenkor a portok
használatát a -PP
kapcsoló beállításával
lehet elkerülni:
# portupgrade -PP gnome2
Csak a terjesztési állományok (vagy a
-P
esetén csomagok)
letöltéséhez használjuk a
-F
kapcsolót. Mindezekről
részletesebben a portupgrade(1) man oldalon
olvashatunk.
A Portmanager egy másik hasznos segédprogram a portok könnyű frissítéséhez. A ports-mgmt/portmanager porton keresztül érhető el:
# cd /usr/ports/ports-mgmt/portmanager # make install clean
Használatával az összes telepített port egyetlen paranccsal frissíthető:
# portmanager -u
Ha a Portmanager minden egyes
lépését külön meg
kívánjuk erősíteni, akkor a
-ui
kapcsolókat se felejtsük el
megadni. A Portmanager emellett
új portok telepítésére is
használható. Eltérően a
make install clean parancsban
megszokottaktól, a kiválasztott port összes
függőségét még a
fordítás és a telepítés
előtt fogja frissíteni.
# portmanager x11/gnome2
Ha bármilyen gondot tapasztalnánk a kiválasztott port függőségeit illetően, a Portmanagert felkérhetjük az összes függőség helyes sorrendben történő újrafordítására. Amikor befejezte, a problémás portot is újra létrehozza.
# portmanager graphics/gimp -f
Bővebb információkért lásd portmanager(1).
A Portmaster szintén a portok frissítésére alkalmas segédprogram. A Portmaster esetében a hangsúly az “alaprendszerben” is megtalálható eszközök használatán van (tehát nem függ semmilyen más porttól) és a /var/db/pkg/ könyvtárban található információk alapján dönti el, hogy milyen portokat kell frissítenie. A ports-mgmt/portmaster portból érhető el:
# cd /usr/ports/ports-mgmt/portmaster # make install clean
A Portmaster a portokat az alábbi négy kategória valamelyikébe sorolja be:
Gyökér (root) portok (nem függenek semmitől, semmi sem függ tőlük)
Törzs (trunk) portok (nem függenek semmitől, de mások függenek tőlük)
Ág (branch) portok (vannak függőségeik és mások is függenek tőlük)
Levél (leaf) portok (vannak függőségeik, de semmi sem függ tőlük)
A következő paranccsal le tudjuk kérni az
összes telepített portot és az
-L
kapcsolóval
frissítéseket keresni hozzájuk:
# portmaster -L ===>>> Root ports (No dependencies, not depended on) ===>>> ispell-3.2.06_18 ===>>> screen-4.0.3 ===>>> New version available: screen-4.0.3_1 ===>>> tcpflow-0.21_1 ===>>> 7 root ports ... ===>>> Branch ports (Have dependencies, are depended on) ===>>> apache-2.2.3 ===>>> New version available: apache-2.2.8 ... ===>>> Leaf ports (Have dependencies, not depended on) ===>>> automake-1.9.6_2 ===>>> bash-3.1.17 ===>>> New version available: bash-3.2.33 ... ===>>> 32 leaf ports ===>>> 137 total installed ports ===>>> 83 have new versions available
Az összes telepített port egyetlen egyszerű paranccsal frissíthető:
# portmaster -a
Megjegyzés: A Portmaster alapértelmezés szerint minden egyes törlendő korábbi portról biztonsági másolatot készít. Amikor az új változat telepítése sikeresen lezajlott, akkor a Portmaster ezt a másolatot megsemmisíti. A
-b
paraméterrel azonban megkérhetjük, hogy ne törölje le a biztonsági mentést. Az-i
megadásával a Portmaster interaktív módban indul el, és minden port frissítése előtt a felhasználó megerősítését fogja kérni.
Amennyiben valamilyen hiba lép fel a
frissítés folyamán, az
-f
opció megadásával
kérhetjük az összes port
frissítését és
újrafordítását is:
# portmaster -af
A Portmaster használatával új portokat is fel tudunk telepíteni a rendszerre úgy, hogy azok függőségeit is igyekszik frissíteni a lefordításuk előtt:
# portmaster shells/bash
A további részleteket a portmaster(8) man oldalon találjuk.
A Portgyűjtemény idővel egyre több helyet fog elfoglalni a merevlemezünkön. Miután sikeresen létrehoztunk és telepítettünk egy szoftvert a hozzá tartozó portból, érdemes mindig eltakarítanunk magunk után a work könyvtárban menet közben keletkezett átmeneti állományokat a make clean parancs használatával. Az egész Portgyűjteményt egyetlen mozdulattal ezzel a paranccsal tudjuk végigsepregetni:
# portsclean -C
Az idő előrehaladtával a distfiles könyvtárban is rengeteg régi forrás tud felhalmazódni. Ezeket eltávolíthatjuk kézzel, vagy az alábbi parancs segítségével törölhetjük az összes olyan terjesztési állományt, amelyekre már egyetlen port sem hivatkozik:
# portsclean -D
Vagy törölhetjük az összes olyan terjesztési állományt, amelyre egyetlen pillanatnyilag feltelepített port sem hivatkozik a rendszerünkben:
# portsclean -DD
Megjegyzés: A portsclean segédprogram a portupgrade programcsomag része.
Ne felejtsük el eltávolítani azokat a portokat, amikre már nincs szükségünk a továbbiakban. Ebben a feladatban egy jól használható segédeszköz lehet a segítségünkre, a ports-mgmt/pkg_cutleaves port.
Az új alkalmazás feltelepítése után minden bizonnyal szeretnénk elolvasni a hozzá társított dokumentációt, az egyedi beállításainknak megfelelően módosítani a konfigurációs állományokat, engedélyezni a rendszerindítás során történő automatikus indítását (ha démonról lenne szó) és így tovább.
Az egyes alkalmazások beállításához elvégzendő lépések nyilvánvalóan egyedenként eltérőek. Azonban tudunk szolgálni néhány általános tanáccsal válaszként az ilyenkor felmerülő “Na és akkor most mi legyen?” kérdésre:
Kérdezzük meg a pkg_info(1) programtól, milyen állományok és hova kerültek fel a telepítés során. Például, ha a SzuperCsomag 1.0.0-át raktunk fel, akkor a
# pkg_info -L SzuperCsomag-1.0.0 | less
parancs kilistázza az összes állományt, amit a csomagból felraktunk. Ezek közül leginkább a man/ könyvtárban levőekre figyeljünk, mivel ezek lesznek az alkalmazás man oldalai. Ehhez hasonlóan az etc/ könyvtárban a konfigurációs állományok és a doc/ könyvtárban pedig a nagyobb lélegzetvételű dokumentációk foglalnak helyet.
Ha nem emlékszünk pontosan rá, hogy az alkalmazások melyik verzióját is telepítettük, a
# pkg_info | grep -i SzuperCsomag
alakú parancs megkeresi az összes olyan csomagot, aminek a nevében szerepel a SzuperCsomag szövegrészlet. A fenti példában természetesen igény szerint változtassuk meg a SzuperCsomag szöveget a tényleges csomag nevére.
Ahogy sikerült megtalálnunk az alkalmazáshoz tartozó man oldalakat, lapozzuk fel ezeket a man(1) segítségével. Ugyanígy nézzük át a mellékelt minta konfigurációs állományokat és az összes elérhető dokumentációt.
Ha az alkalmazásnak van saját honlapja, kutassunk ott is információk után, olvassuk el a gyakran ismételt kérdéseket és így tovább. Ha nem tudnánk pontosan a honlap címét, a
# pkg_info SzuperCsomag-1.0.0
kimenetéből könnyen előkeríthető. Itt egy WWW: kezdetű sort kell keresnünk (már amennyiben létezik), amit az alkalmazás honlapjának címe kell kövessen.
A rendszerrel együtt indítandó portok (ilyenek többek közt az internetes szolgáltatások), általában a /usr/local/etc/rc.d könyvtárba rakják a saját indítószkriptjüket. Érdemes leellenőrizni ezt a szkriptet és az igényeinknek megfelelően módosítani, átnevezni. A Szolgáltatások indítása című szakaszban ezt részleteiben is megismerhetjük.
Ha véletlenül ráakadnánk egy olyan portra, ami nem működik megfelelően, nagyjából a következőket tudjuk tenni:
Derítsük ki a Hibajelentések adatbázisából, hogy készül-e már javítás az adott porthoz. Ha igen, akkor annak befejezése után már képesek leszünk használni.
Kérjük meg a port karbantartóját, hogy segítsen. A karbantartó elérhetőségének felderítéséhez gépeljük be a make maintainer parancsot, vagy keressük meg a Makefile állományban a karbantartó e-mail címét. Ne felejtsük el neki megemlíteni a levélben a port nevét és verzióját (vagyis mindenképpen küldjük el a $FreeBSD: sort a Makefile állományból) és a parancs kiadásától a hiba felbukkanásáig tartó kimenetet.
Megjegyzés: Némely portokat nem egyedülálló személyek tartanak karban, hanem egy levelezési lista. A legtöbbjük neve, ha nem is mindé, nagyjából ilyen alakú:
<freebsd-listanév@FreeBSD.org>
. Egy ilyen jellegű kérdés megfogalmazása során ezt is vegyük figyelembe!Kifejezetten a
<ports@FreeBSD.org>
karbantartóval rendelkező portoknak nincs rendes gazdája. A hozzájuk kapcsolódó javítások és mindenféle segítség, ötlet erről a levelezési listáról érkeznek. Ilyen esetekben számítunk az önkéntes segítőkre!
Ha nem kapunk semmilyen választ, a hiba bejelentésére használhatjuk a send-pr(1) programot is (erről bővebben lásd a FreeBSD-s hibajelentések írása című cikket).
Javítsuk meg mi magunk! A porterek kézikönyve részletesen taglalja a “portok” belső felépítését, így onnan elindulva akár magunktól is meg tudunk javítani egy esetlegesen sérült portot, vagy be is küldhetjük a sajátunkat!
Töltsük le a porthoz tartozó csomagot a hozzánk legközelebb levő FTP oldalról. A “központi” csomaggyűjtemény az ftp.FreeBSD.org címen, a packages nevű könyvtárban található, de mielőtt ide fordulnánk, nézzük meg a hozzánk legközelebb levő tükörszervert is! Ha egy csomagot így telepítünk, akkor több eséllyel fog működni és ráadásul még jóval gyorsabb is. A csomag telepítésére használjuk a pkg_add(1) programot.
A FreeBSD az X11-en keresztül nyújt a felhasználók számára hatékony grafikus felhasználói felületet. Az X11 az X Window System szabadon elérhető változata, melyet az Xorg és az XFree86 egyaránt implementál (valamint más egyéb programcsomagok is, amelyeket itt viszont nem tárgyalunk). A FreeBSD verziói a FreeBSD 5.2.1-RELEASE kiadással bezárólag a The XFree86 Project, Inc. által kiadott X11 szervert, az XFree86-ot tartalmazzák alapértelmezés szerint. A FreeBSD 5.3-RELEASE kiadástól kezdve az X11 alapértelmezett és hivatalos változata az Xorg, melyet az X.Org alapítvány a FreeBSD-éhez nagyon hasonló licenc alatt fejleszt. A FreeBSD-hez kereskedelmi X szerverek is elérhetőek.
Ebben a fejezetben az X11 telepítését és beállítását járjuk végig, miközben a hangsúlyt az Xorg 7.5 kiadására helyezzük. Az XFree86 (vagyis a FreeBSD olyan régebbi változata, ahol az XFree86 az alapértelmezett X11 rendszer) vagy az Xorg korábbi kiadásainak beállításával kapcsolatban mindig találhatunk információkat a FreeBSD kézikönyv http://docs.FreeBSD.org/doc/ címen található archivált változataiban.
Az X11 által támogatott megjelenítőkről bővebben az Xorg honlapján olvashatunk.
A fejezet elolvasása során megismerjük:
az X Window System különböző alkotóelemeit, és hogy ezek miként működnek együtt;
hogyan telepítsük és állítsuk be az X11-et;
hogyan telepítsük és használjuk a különféle ablakkezelőket;
hogyan használjunk TrueType® betűtípusokat az X11-ben;
hogyan állítsuk be rendszerünkön a grafikus bejelentkezést (XDM).
A fejezet elolvasásához ajánlott:
külső programok telepítésének ismerete (4 fejezet).
Az X használata elsőre megdöbbentő lehet azok számára, akik olyan más grafikus környezetekben járatosak, mint például a Microsoft Windows vagy a Mac OS.
Míg az X minden komponensének részleteit és azok kapcsolatát nem szükséges megérteni a használatukhoz, néhány alapvető ismeret velük kapcsolatban elősegíti kiaknázni az X erősségeit.
Az X ugyan nem az első UNIX-ra íródott ablakozó rendszer, de fajtáját tekintve a legnépszerűbb. Az X eredeti fejlesztőcsapata az X előtt egy másik ablakozó rendszeren dolgozott, aminek a neve “W” (mint “Window”, azaz ablak) volt. Az X pedig az arab ábécében pontosan ezt a betűt követi.
Az X-et hívhatjuk “X”-nek, “X Window System”-nek, és még sok más néven. Előfordulhat azonban, hogy az “X Windows” elnevezés sértő lehet egyes emberek számára. Erről többet a X(7) man oldalon tudhatunk meg többet.
Az X-et már az elejétől kezdve hálózatközpontúnak tervezték, és ezért az ún. “kliens-szerver” modellt használja.
Az X modelljében az “X szerver” egy olyan számítógépen fut, amelyhez billentyűzetet, monitort és egeret csatlakoztattunk. A szerver feladatai között találjuk a megjelenítés irányítását az egérről és a billentyűzetről, valamint a többi bemeneti és kimeneti eszközről érkező adatok feldolgozását és így tovább (például a digitális táblák is használhatóak beviteli eszközként, illetve egy projektor is lehet megjelenítő). Mindegyik X alkalmazás (mint például az XTerm vagy a Netscape) egy kliens. A kliens üzeneteket küld a szervernek, például “Kérlek, rajzolj egy ablakot ezekre a koordinátákra”, és a szerver pedig olyan üzeneteket küld, mint például “A felhasználó az OK gombra kattintott”.
Az otthoni vagy a kisebb irodai környezetben az X szerver és az X kliensek általában ugyanazon a számítógépen futnak. Emellett azonban nagyon is lehetséges, hogy az X szerver egy kevésbé erős gépen fusson, miközben az X alkalmazások (a kliensek) az irodát kiszolgáló erősebb és drágább gépen fussanak. Egy ilyen konfigurációban az X kliensei és szerverei közti kommunikáció a hálózaton keresztül zajlik.
Jegyezzük meg, hogy az X szerver az a számítógép, ahol a monitor és a billentyűzet található, az X kliensek pedig azok a programok, amelyek az ablakokat jelenítik meg.
A protokollban semmi sem várja el, hogy a kliens és a szerver ugyanazon az operációs rendszeren vagy éppen ugyanolyan típusú számítógépen fusson. Ezért akár Microsoft Windows-on vagy Apple® Mac OS-en is indíthatunk X szervert, és számos különböző szabad valamint kereskedelmi alkalmazás képes pontosan erre.
Az X kialakításának filozófiája leginkább a UNIX kialakításának filozófiájához hasonlítható, vagyis “eszközöket, ne szabályokat”. Ez tehát azt jelenti, hogy az X nem köti meg, miként oldjuk meg vele a feladatokat. Helyette különféle eszközöket ad a felhasználó kezébe, és onnantól a saját felelőssége eldönteni, hogyan használja ki ezeket.
Ez a filozófia az X-ben egészen addig terjed, hogy nem rögzíti, hogyan nézzenek ki a képernyőn megjelenő ablakok, miként kell ezeket mozgatni az egérrel, milyen billentyűk lenyomásával közlekedhetünk az ablakok között (ami a Microsoft Windows esetén az Alt+Tab), hogyan nézzen ki az ablakok címsora, a bezárás funkciónak legyen-e rajtuk gombja és így tovább.
Ehelyett az X az összes ezzel járó felelősséget átadja az “ablakkezelő” (window manager) részére. Tucatnyi ilyen ablakkezelőt találhatunk az X-hez: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker és még sok más. Ezen ablakkezelők mindegyike más és más kinézetet és hangulatot kínál fel: némelyikük támogatja a “virtuális munkaasztalok” (virtual desktop) létrehozását; néhányuk pedig megengedi, hogy mi magunk állítsuk be az asztal irányításához használt gombkombinációkat; köztük találhatunk olyat is, amelynek van “Start” gombja vagy ehhez hasonló eszköze; némelyek közülük ismerik a “témákat”, aminek révén a kinézetük és hangulatuk teljesen megváltoztatható. Az említett ablakkezelők és társaik a Portgyűjtemény x11-wm kategóriájában érhetőek el.
Ráadásul a KDE és a GNOME munkakörnyezetek mindegyikének van saját integrált ablakkezelője.
Az egyes ablakkezelők mellesleg eltérő beállítási módszerrel rendelkeznek. Némelyikük kézzel összeállított konfigurációs állományt vár, mások pedig külön grafikus eszközöket tartalmaznak erre a feladatra is. Az egyikük (a Sawfish) konfigurációs állományát például a Lisp programozási nyelv egyik dialektuásban kell megírni.
Az irányítás átadása: Az ablakkezelő másik fontos feladata lekezelni, hogy az egérrel miként tudjuk átadni az ablakok között az irányítást, vagyis a fókuszt (focus policy). Minden ablakkezelő rendszerben el kell tudnunk valahogy dönteni, hogy a beérkező billentyűleütések melyik ablakhoz vándoroljanak, valamint az ilyen értelemben aktív ablakot valamilyen módon jeleznünk is kell.
Ennek egyik ismert módszere a “fókusz kattintásra” megoldás, amely modellt a Microsoft Windows rendszerekben találhatjuk meg. Itt az ablakok akkor válnak aktívvá, amikor rájuk kattintunk az egérrel.
Az X viszont nem kötelezi el magát egyik vezérlésátadási módszer mellett sem, helyette az ablakkezelő fogja majd eldönteni, melyik ablak birtokolja a fókuszt az adott pillanatban. A különböző ablakkezelők különböző fókuszvezérlési technikákat ismernek. Mindegyikük ismeri a kattintásos fókuszt, azonban a többségük emellett még sok más megoldást is felkínál.
A legnépszerűbb fókuszvezérlési elvek:
- A fókusz az egeret követi (focus-follows-mouse)
Az egérmutató alatt található ablak kapja meg fókuszt. Az érintett ablaknak nem kell feltétlenül az összes többi felett elhelyezkednie. Ilyenkor a fókuszt egyszerűen úgy vihetjük át egy másik ablakra, ha rámutatunk az egérrel, amihez még kattintanunk sem kell.
- Hanyag fókusz (sloppy-focus)
Ez az elv az előbbi apró kibővítése. Amikor a fókusz az egérmutatót követi, és az egeret a leghátsó ablakra (vagy a háttérre) visszük, akkor valójában egyik ablak sem birtokolja az irányítást, ezért a leütött billentyűk elvesznek. A hanyag fókusz használatával azonban az irányítás csak abban az esetben kerül át máshová, amikor egy másik ablakba lépünk be, nem pedig akkor, amikor a jelenlegiből lépünk ki.
- Fókusz kattintásra (click-to-focus)
Az aktív ablakot egy egérkattintással választjuk ki. Ilyenkor a kiválasztott ablak “felemelkedhet” és a többi előtt jelenhet meg. Ezt követően az összes irányítás ebbe az ablakba vándorol, még abban az esetben is, amikor egy másik ablakra visszük az egérmutatót.
Sok ablakkezelő ismer ezekből különböző variációikat, valamint rajtuk kívül más egyéb vezérlési elvet is. Ezzel kapcsolatban az adott ablakkezelő dokumentációjából deríthetünk ki a legtöbbet.
Az X megközelítése, vagyis az eszközök és nem a szabályok felsorakoztatása, kiterjed az egyes alkalmazásokban látható különféle widgetekre is.
A “widget” (window gadget, vagyis widget, de magyarul sok helyen a “mütyürke”) elnevezést azokra a felhasználói felületen megjelenő elemekre használjuk, amelyekkel valamilyen módon kapcsolatba léphetünk: kattinthatunk rájuk, “piszkálhatjuk” ezeket. Ilyenek többek közt a gombok, jelölőnégyzetek, rádiógombok, ikonok, listák és a többi. A Microsoft Windows nyelvén ezeket “vezérlőknek” (control) nevezzük.
A Microsoft Windows és az Apple Mac OS ezen a téren nagyon merev. Az alkalmazások fejlesztőinek gondoskodniuk kell róla, hogy a programjaik az elterjedt kinézetet és kialakítást kövessék. Az X viszont nem várja az egységes vezérlőeszközök vagy grafikai stílus használatát.
Ennek eredményeképpen az X cseppet sem kívánja meg az alkalmazásoktól, hogy közös kinézetben vagy viselkedésben osztozzanak. Természetesen léteznek népszerű eszközrendszerek és azoknak számos variációja is kialakult, beleértve az MIT Athenaját, a Motif®ot (amiről a Microsoft Windows eszközeit is mintázták, az összes ferde élet és a három szürkeárnyalatot), az OpenLookot és társaikat.
Napjaink X alkalmazásai a KDE fejlesztéséhez használt Qt, esetleg a GNOME-hoz használt GTK+ könyvtárból származó, korszerű kinézetű widgeteket tartalmaznak. Ebből a szempontból megfigyelhető egyfajta tendencia a grafikus UNIX-alkalmazások felépítésében, ami minden bizonnyal megkönnyíti a kezdő felhasználók tájékozódását.
Az X11 FreeBSD-n alapértelmezett implementációja az Xorg. Az Xorg az X.Org alapítvány által kiadott, az X Window Systemet megvalósító nyílt forráskódú X szerver. Az Xorg az XFree86 4.4RC2 és X11R6.6 kódja alapján készült. A FreeBSD Portgyűjteményében jelenleg az Xorg 7.5 változata érhető el.
Az Xorg-ot a Portgyűjteményből így tudjuk lefordítani, majd telepíteni:
# cd /usr/ports/x11/xorg # make install clean
Megjegyzés: Az egész Xorg lefordításához legalább 4 GB szabad helyre van szükségünk.
Az X11-et természetesen telepíthetjük közvetlenül csomagok segítségével is. A pkg_add(1) használatával telepíthető bináris csomagok is elérhetőek az X11-hez. Amikor a pkg_add(1) programra bízzuk a csomag letöltését, ne adjunk meg verziószámot, a pkg_add(1) ugyanis mindig automatikusan az alkalmazás legfrissebb verzióját tölti le.
Az Xorg csomagjának letöltéséhez és telepítéséhez egyszerűen csak ennyit írjunk be:
# pkg_add -r xorg
Megjegyzés: A fentebb megadott példák a teljes X11 rendszert telepíteni fogják, beleértve a szervereket, klienseket, betűtípusokat stb. Az X11 egyes részeihez külön találhatunk csomagokat és portokat.
Ha csak az X11 legszükségesebb elemeit szeretnénk telepíteni, akkor alternatívaként választhatjuk az x11/xorg-minimal portot.
A fejezet további részében szót ejtünk az X11, valamint egy irodai használatra alkalmas munkakörnyezet beállításáról.
Az X11 beállítása előtt a célrendszer következő adataira lesz szükségünk:
A monitor jellemzői
A videokártya chipkészlete
A videokártya memóriájának mérete
Az X11 a monitor jellemzőiből állapítja meg, hogy milyen felbontásban és frissítési frekvenciával működtesse azt. Ezek általában a monitorhoz tartozó dokumentációból vagy a gyártó honlapjáról deríthetőek ki. Igazából két értékre van szükségünk: a függőleges és a vízszintes frissítési frekvenciára.
A videokártya chipkészlete határozza meg, hogy az X11 melyik meghajtóján keresztül kommunikál a grafikus hardverrel. Ez a legtöbb chipkészlet esetén magától megállapítható, de ennek ellenére mégis jó tisztában lenni ezzel arra az esetre, ha az automatikus felismerés mégsem működne.
A grafikus kártya memóriájának mérete határozza meg a rendszer által kihasználható felbontást és színmélységet. Ezt fontos tudunk ahhoz, hogy ismerjük a rendszerünk korlátait.
Az Xorg 7.3-as változatában gyakran mindenféle konfigurációs állomány használata nélkül egyszerűen csak adjuk ki a következő parancsot:
% startx
A Xorg 7.4 verziójától kezdődően a számítógépünkhöz csatlakoztatott egerek és billentyűzetek HAL segítségével automatikusan felismerhetőek. Ennek megfelelően a x11/xorg port függőségeként telepítődni fognak a sysutils/hal és devel/dbus portok, viszont az /etc/rc.conf állományban a következő sorok hozzáadásával külön engedélyeznünk kell még ezeket:
hald_enable="YES" dbus_enable="YES"
Ezeket a szolgáltatásokat még az Xorg beállítása előtt el kell indítanunk (a parancssorból manuálisan vagy a rendszer újraindításával).
Bizonyos hardvereszközök esetén az automatikus felismerés még nem működik megbízhatóan vagy nem jól állítja be az értékeket. Ilyen esetekben kézzel kell megadnunk a szükséges beállításokat.
Megjegyzés: A különböző munkakörnyezetek, mint például a GNOME, a KDE vagy éppen az Xfce általában tartalmaznak olyan segédprogramokat, amelyekkel a felhasználó könnyedén be tudja állítani a megjelenítés paramétereit, többek közt a képernyő felbontását. Tehát ha az alapértelmezések nem megfelelőek, viszont használni akarunk majd valamilyen munkakörnyezetet is, akkor egyszerűen csak telepítsük az adott környezetet és a hozzá tartozó eszközön keresztül állítsuk be a megjelenítést.
Az X11 beállítása egy többlépcsős folyamat. Első lépésünk egy alap konfigurációs állomány összeállítása lesz. Rendszeradminisztrátorként adjuk ki az alábbi parancsot:
# Xorg -configure
Ennek segítségével az X11 xorg.conf.new néven létrehozza a konfigurációs állomány vázát a /root könyvtárban (akár a su(1) parancsot használjuk, akár közvetlenül így jelentkezünk be, az így örökölt rendszeradminisztrátori szerepkör maga után vonja a $HOME könyvtár átállítását is). Az X11 megpróbálja megkeresni a célrendszerben elérhető grafikus eszközöket, és létrehozni egy olyan konfigurációs állományt, amely az észlelt eszközökhöz tartozó meghajtókat tölti be.
A következő lépésünk legyen az imént létrehozott beállítás kipróbálása, amin keresztül ellenőrizhetjük, hogy az Xorg tényleg képes működni a célrendszer grafikus eszközén. Az Xorg 7.3 és azt megelőző változataiban ezt így tehetjük meg:
# Xorg -config xorg.conf.new
A Xorg 7.4 és
későbbi változataiban a próba
eredménye egy fekete képernyő lesz, amely
meglehetősen megnehezítheti az X11 helyes
működésének
megállapítását. A
-retro
kapcsoló
használatával azonban továbbra is
elérhetjük a korábbi verziókban
megszokott viselkedési módot:
# Xorg -config xorg.conf.new -retro
Ha ezután a képernyőn egy fekete-fehér rácsot látunk egy X alakú egérmutatóval a közepén, akkor jó a beállítás. A próbát úgy szakíthatjuk meg, ha először a Ctrl+Alt+Fn billentyűk együttes lenyomásával átváltunk valamelyik virtuális konzolra (például az F1 esetén az elsőre), majd megnyomjuk a Ctrl+C gombokat.
Megjegyzés: Az Xorg korábbi változataiban a 7.3 verzióig bezárólag a Ctrl+Alt+Backspace billentyűkombinációval tudjuk leállítani a működését. Amennyiben erre továbbra is szükségünk lenne, a 7.4 és későbbi változatokban ezt úgy tudjuk engedélyezni, ha a begépeljük a következő parancsot egy X terminálablakban:
% setxkbmap -option terminate:ctrl_alt_bkspEgy másik lehetséges megoldás, ha a billenytűzet beállításához létrehozunk a /usr/local/etc/hal/fdi/policy könyvtárban egy konfigurációs állományt x11-input.fdi néven a hald számára. Ebben az állományban a következőknek kell szerepelnie:
<?xml version="1.0" encoding="iso-8859-2"?> <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.keyboard"> <merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp</merge> </match> </deviceinfo>A hald a számítógép újraindításával fogja majd beolvasni ezt az állományt.
Ilyenkor az xorg.conf.new állomány ServerLayout vagy ServerFlags szekciójához vegyük még hozzá az alábbi sort:
Option "DontZap" "off"
Ha az egér még nem működne, mindenképpen be kell állítanunk a továbblépés előtt. Ezzel kapcsolatban a FreeBSD telepítéséről szóló fejezetben levő 2.10.10 Szakaszt ajánljuk elolvasásra. Fontos megemlíteni, hogy az Xorg 7.4 változatától kezdődően az xorg.conf InputDevice szekcióit az eszközök automatikusan észlelt beállításai felülbírálják. A régebbi változatok viselkedését úgy tudjuk visszanyerni, ha a ServerLayout és ServerFlags szekciók valamelyikéhez hozzáadjuk az alábbi sort:
Option "AutoAddDevices" "false"
Ezt követően a beviteli eszközök a lehetséges beállítási opciók (például a billentyűzet-kiosztás váltása) mentén a korábbiakban megszokott módon konfigurálhatóak.
Megjegyzés: Ahogy arról korábban szó esett, a 7.4 verziótól kezdődően a hald magától érzékelni fogja a számítógépre csatlakoztatott billentyűzetet. Előfordulhat, hogy a billentyűzet típusa vagy éppen kiosztása nem lesz megfelelő. Ennek beállítására többnyire a népszerűbb munkakörnyezetek, mint például a GNOME, KDE vagy Xfce tartalmaznak külön segédprogramot. A setxkbmap(1) vagy a hald konfigurációs szabályával azonban akár közvetlenül is meg tudjuk változtatni a billentyűzethez társított tulajdonságokat.
Például ha egy 102 gombos billentyűzetet szeretnénk használni francia kiosztással, akkor ehhez a /usr/local/etc/hal/fdi/policy könyvtárban kell létrehoznunk egy x11-input.fdi nevű állományt a hald részére. Ebben az állományban szerepeljenek az alábbi sorok:
<?xml version="1.0" encoding="iso-8859-2"?> <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.keyboard"> <merge key="input.x11_options.XkbModel" type="string">pc102</merge> <merge key="input.x11_options.XkbLayout" type="string">fr</merge> </match> </device> </deviceinfo>Ha létezik már ilyen állományunk, akkor a billentyűzet megfelelő beállításához egyszerűen csak másoljuk ki a fenti sorokat és adjuk hozzá.
Indítsuk újra a számítógépet, hogy a hald beolvassa az állományt.
Ugyanezt egy X terminálból is kényelmesen el tudjuk végezni:
% setxkbmap -model pc102 -layout frA paraméterként megadható billentyűzettípusokat és -kiosztásokat a /usr/local/share/X11/xkb/rules/base.lst állományban találhatjuk meg.
Ezután az ízlésünknek megfelelően hangoljuk be az xorg.conf.new állományt, nyissuk meg egy szövegszerkesztőben, például az emacs(1)-ben vagy az ee(1)-ben. Elsőként adjuk meg a célrendszerhez csatlakoztatott monitor frekvenciájára vonatkozó adatokat. Ezek általában a függőleges és a vízszintes frissítés értékei, melyeket az xorg.conf.new állomány "Monitor" szakaszában (Section) kell feltüntetni:
Section "Monitor" Identifier "Monitor0" VendorName "A monitor gyártója" ModelName "A monitor típusa" HorizSync 30-107 VertRefresh 48-120 EndSection
A konfigurációs állományból valószínűleg csak a HorizSync és VertRefresh kulcsszavak fognak hiányozni. Amennyiben ez tényleg így lenne, a megfelelő vízszintes frissítés értékét a HorizSync kulcsszó után, a hozzá tartozó függőleges frissítés értékét pedig a VertRefresh kulcsszó után kell hozzátennünk a szakaszhoz. Az iménti példában már megadtuk a célrendszer monitorának frissítési értékeit.
Az X megengedi, hogy DPMS (Energy Star) energiagazdálkodási szabványt ismerő monitorok lehetőséget is kihasználjuk. A xset(1) program vezérli a monitorok ki- és bekapcsolását, és segítségével készenléti vagy energiatakarékos üzemmódba tudjuk helyezni azokat. Ha engedélyezni kívánjuk a monitorunk DPMS lehetőségeit, egyszerűen csak tegyük hozzá az alábbi sort a monitorunkat leíró szakaszhoz:
Option "DPMS"
Ha már a xorg.conf.new konfigurációs állomány szerkesztésével vagyunk elfoglalva, válasszuk ki számunkra kedvező alapértelmezett felbontást és színmélységet is. Ezt a "Screen" (Képernyő) nevű szakaszban tehetjük meg:
Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1024x768" EndSubSection EndSection
A DefaultDepth kulcsszó
után adjuk meg a rendszer alapértelmezett
színmélységét. Ezt
később az Xorg(1) -depth
paraméterével bírálhatjuk felül
a parancssorból. A Modes
kulcsszó után jelennek meg azok a
felbontások, amelyekben az adott
színmélység elérhető. Itt csak
olyan VESA szabványú módok jelenhetnek meg,
amelyet a célrendszer grafikus eszköze is
támogat. A fenti példában az
alapértelmezett színmélység
képpontonként huszonnégy bit, és
ebben a színmélységben az elfogadott
felbontás 1024-szer 768 pixel.
Végezetül mentsük el a szerkesztett konfigurációs állományt és próbáljuk ki a korábban leírt módszer szerint.
Megjegyzés: A hibakeresés során maguk az X11 naplóállományai is hasznos eszköznek bizonyulhatnak, mivel ezek minden olyan eszközről tartalmaznak információt, amelyekhez az X11 szervernek sikerült csatlakoznia. Az Xorg naplóit a /var/log/Xorg.0.log elnevezést követő állományokban találjuk meg. A konkrét naplók nevei Xorg.0.log-tól Xorg.8.log-ig és így tovább terjedhetnek.
Ha minden a legnagyobb rendben haladt eddig, a konfigurációs állományt el kell tennünk egy olyan központi helyre, ahol az Xorg(1) képes lesz majd megtalálni. Ez a hely általában az /etc/X11/xorg.conf vagy a /usr/local/etc/X11/xorg.conf.
# cp xorg.conf.new /etc/X11/xorg.conf
Az X11 beállítását ezzel befejeztük. Az Xorg innentől elindítható a startx(1) segédprogram vagy az xdm(1) használatával.
Az Intel i810 integrált chipkészletének meghajtásához szükségünk lesz az agpart nevű AGP programozási felületre az X11-ben. Erről az agp(4) meghajtó man oldalán olvashatuk többet.
Ennek segítségével ezt a hardvert is a többi grafikus kártyához hasonlóan állíthatjuk be. Vegyük figyelembe azonban, hogy az agp(4) meghajtót beépítve nem tartalmazó rendszermaggal futó rendszerekben a kldload(8) paranccsal utólag már nem tudjuk betölteni! Ezt a meghajtót már a rendszerindítás során be kell tudnunk tölteni: vagy a rendszermagba fordítjuk, vagy pedig a /boot/loader.conf állományban hivatkozunk rá.
Ebben a részben feltételezünk némi tapasztalatot a beállítások terén. Amennyiben a szabványos konfigurációs eszközök csődöt mondtak a beállítás során, magukból a naplóállományokból is kinyerhetünk elegendő információt ahhoz, hogy működésre bírjuk rendszerünket. Ehhez mindenképpen legyen kéznél egy szövegszerkesztő!
A jelenlegi szélesvásznú (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+ és társai) formátumok a 16:10-es és 10:9-es képarányokat ismerik, amik néha gondot okozhatnak. Például a 16:10-es képarány felbontásai:
2560x1600
1920x1200
1680x1050
1440x900
1280x800
Bizonyos szempontból egyszerűen csak a fenti felbontások valamelyikét kell felvenni a "Screen" szakasz Mode sorába, valahogy így:
Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1680x1050" EndSubSection EndSection
Az Xorg elég intelligens ahhoz, hogy a szélesvásznú megjelenítéssel kapcsolatos információkat lekérje a monitor I2C/DDC adatai közül, ezért meg tudja állapítani, hogy az eszköz milyen frissítési frekvenciákat és felbontásokat bír el.
Ha az alábbi ModeLine értékek nem szerepelnének a meghajtókban, akkor velük kapcsolatban egy kicsit súgnunk kell az Xorg-nak. A /var/log/Xorg.0.log átrágásával elegendő információt tudunk gyűjteni ahhoz, hogy manuálisan vegyünk fel használható ModeLine értékeket. Nem kell mást tennünk, mint ehhez hasonló sorokat keresnünk:
(II) MGA(0): Supported additional Video Mode: (II) MGA(0): clock: 146.2 MHz Image Size: 433 x 271 mm (II) MGA(0): h_active: 1680 h_sync: 1784 h_sync_end 1960 h_blank_end 2240 h_border: 0 (II) MGA(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1089 v_border: 0 (II) MGA(0): Ranges: V min: 48 V max: 85 Hz, H min: 30 H max: 94 kHz, PixClock max 170 MHz
Ezeket nevezik EDID-adatoknak (Extended display identification data, vagyis “bővített megjelenítési azonosító adatoknak”). Belőlük a megfelelő ModeLine sor létrehozása csupán annyiból áll, hogy a számértékeket a megfelelő sorrendbe tesszük:
ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>
Ezáltal a példában látott "Monitor" szakasz ModeLine sora így fog kinézni:
Section "Monitor" Identifier "Monitor1" VendorName "Bigname" ModelName "BestModel" ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089 Option "DPMS" EndSection
Miután végrehajtottuk ezeket az egyszerű beállítási lépéseket, az X most már valószínűleg el fog indulni az új szélesvásznú monitorunkon.
Az X11-hez tartozó alap betűtípusok nem mondhatóak kifejezetten ideálisnak például egy átlagos asztali kiadványszerkesztő alkalmazás számára. A nagyobb méretű bemutatókon a betűi szögletesen és idétlenül néznek ki, a Netscapeben megjelenő kisebb betűk pedig szinte teljességgel olvashatatlanok. Viszont manapság már rengeteg szabad, nagyon jó minőségű és könnyen használható Type1 (PostScript®) betűtípus érhető el az X11-hez. Például az URW betűtípus-gyűjtemény (x11-fonts/urwfonts) a szabványos Type1 betűtípusok (Times Roman®, Helvetica®, Palatino® és még sok más) jó minőségű változatait tartalmazza. A Freefonts nevű gyűjtemény (x11-fonts/freefonts) is tartalmaz sok más betűtípust, de a legtöbbjüket inkább csak a Gimpben és a hozzá hasonló grafikai alkalmazásokban tudjuk használni, illetve nincsenek is még kellő mértékben befejezve a hétköznapi munkákhoz. Ezeken felül az X11 minimális ügyeskedéssel beállítható a TrueType betűtípusok használatára is. Erről részleteket a X(7) man oldalon, illetve a TrueType betűtípusokról szóló szakaszban olvashatunk.
A Portgyűjteményből az imént említett Type1 betűtípusokat az alábbi parancsok segítségével telepíthetjük:
# cd /usr/ports/x11-fonts/urwfonts # make install clean
Ugyanígy járjunk el a freefont és a többi gyűjtemény esetén is. Az X szerver akkor fogja észlelni ezeket a betűtípusokat, ha hozzáadjuk a következő sort a konfigurációs állományához (/etc/X11/xorg.conf):
FontPath "/usr/local/lib/X11/fonts/URW/"
Vagy megtehetjük mindezt az X futtatása során is:
% xset fp+ /usr/local/lib/X11/fonts/URW % xset fp rehash
Ez utóbbi beállítás viszont el fog veszni az X leállításával, hacsak nem vesszük hozzá az indítószkriptjéhez (ez az ~/.xinitrc a startx használata esetén, illetve az ~/.xsession, amikor egy XDM-szerű grafikus bejelentkezést használunk). Ezek mellett használhatjuk a /usr/local/etc/fonts/local.conf állományt is: erről az élsimítással foglalkozó szakaszban szólunk részletesebben.
Az Xorg beépített támogatást tartalmaz a TrueType betűtípusok rendereléséhez. Két különböző modul valósítja meg ezt a feladatot. Ebben példában a freetype nevű modult használjuk, mivel sokkal jobban illeszkedik a többi betűrenderelőhöz. A freetype modul használatához mindössze az /etc/X11/xorg.conf állomány "Module" szakaszába kell beírnunk a következő sort:
Load "freetype"
Most pedig hozzunk létre egy könyvtárat a TrueType betűtípusok számára (ez legyen például a /usr/local/lib/X11/fonts/TrueType), majd másoljuk az összes TrueType betűtípusunkat ide. Vigyázzunk rá, hogy Macintosh®-ról TrueType betűtípusok közvetlenül nem hozhatóak át, az X11 számára UNIX/MS-DOS/Windows formátumban kell lenniük. Miután sikerült átmásolnunk az állományokat ebbe a könyvtárba, használjuk a ttmkfdir parancsot a fonts.dir állomány létrehozására, aminek révén az X betűrenderelője tudni fogja, hogy új állományokat telepítettünk. A ttmkfdir x11-fonts/ttmkfdir néven elérhető a FreeBSD Portgyűjteményéből.
# cd /usr/local/lib/X11/fonts/TrueType # ttmkfdir -o fonts.dir
Ezután adjuk hozzá a TrueType könyvtárat a betűtípusok könyvtáraihoz. Itt is a Type1 betűtípusoknál leírtak szerint kell eljárnunk, vagyis használjunk a
% xset fp+ /usr/local/lib/X11/fonts/TrueType % xset fp rehash
parancsot, vagy adjunk hozzá a xorg.conf állományhoz egy további FontPath sort.
Ezzel végeztünk is. Innentől kezdve a Netscape, Gimp, a StarOffice™ és mindegyik X alkalmazás fel fogja ismerni a frissen telepített TrueType betűtípusokat. A nagyon kicsi betűk (egy honlap megtekintése során, nagyfelbontásban) és a nagyon nagy betűk (a StarOffice használatakor) most már sokkal jobban fognak mutatni.
Az X11 által használt, a /usr/local/lib/X11/fonts/ és a ~/.fonts/ könyvtárakban található összes betűtípus élsimítása automatikusan elérhető az Xft-re felkészített alkalmazások számára. A mostanság megjelenő legtöbb alkalmazás, mint például a KDE, GNOME és Firefox, ismeri az Xft-t.
A betűtípusok élsimításának be- és kikapcsolásához, valamint élsimítási jellemzőinek beállításához hozzuk létre (vagy ha már létezne, módosítsuk) a /usr/local/etc/fonts/local.conf állományt. Az Xft betűrendszer számos kifinomult lehetősége hangolható ezzel az állománnyal, amelyekből ebben a szakaszban csupán rövidke ízelítőt fogunk adni. A pontosabb részletekről a fonts-conf(5) man oldalon tájékozódhatunk.
Az állománynak XML formátumúnak kell lennie. Különösen ügyeljünk a kis- és nagybetűkre, illetve győződjünk meg mindig róla, hogy lezártuk-e az összes taget. Az állomány a szokásos XML-fejléccel kezdődik, amelyet egy DOCTYPE definíció követ, majd a <fontconfig> tag:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig>
Ahogy azt már korábban is említettük, a /usr/local/lib/X11/fonts és a ~/.fonts/ könyvtárakban található összes betűtípus élsimítása elérhető az Xft-re felkészített alkalmazások számára. Amennyiben ezeken túl még további könyvtárakat is fel kívánunk venni, írjuk bele a /usr/local/etc/fonts/local.conf állományba, nagyjából ilyen alakban:
<dir>/az/en/betu/tipusaim</dir>
Az új betűtípusok, de legfőképpen az új betűtípusokat tartalmazó könyvtárak hozzáadása után a betűkkel kapcsolatos gyorsítótárak frissítéséhez mindenképpen javasolt lefuttatni az alábbi parancsot:
# fc-cache -f
Az élsimítás hatására a betűk kontúrjai egy kissé elmosódnak, aminek köszönhetően a nagyon kis méretű szövegek sokkal olvashatóbbá válnak és eltűnnek a nagy méretű betűkről a “lépcsők”, azonban a normál méretű betűknél megfájdulhat tőle a szemünk. A 14 pontnál kisebb méretű betűk esetén az alábbi sorok hozzáadásával tudjuk kikapcsolni az élsimítást:
<match target="font"> <test name="size" compare="less"> <double>14</double> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match> <match target="font"> <test name="pixelsize" compare="less" qual="any"> <double>14</double> </test> <edit mode="assign" name="antialias"> <bool>false</bool> </edit> </match>
Bizonyos egyenszélességű (monospaced) betűtípusok élsimítása esetén a betűk távolsága nem megfelelő. Ez leginkább a KDE használata esetén merül fel. Ezt a problémát úgy is orvosolhatjuk, ha az ilyen betűtípusok térközét kézzel 100-ra állítjuk. Ehhez írjuk be a következő sorokat:
<match target="pattern" name="family"> <test qual="any" name="family"> <string>fixed</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match> <match target="pattern" name="family"> <test qual="any" name="family"> <string>console</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match>
(ezzel lefedjük összes rögzített méretű (fixed) betűtípust "mono"-ként), majd vegyük hozzá ezt is:
<match target="pattern" name="family"> <test qual="any" name="family"> <string>mono</string> </test> <edit name="spacing" mode="assign"> <int>100</int> </edit> </match>
Egyes betűtípusoknál, mint például a Helveticánál, gondok akadhatnak az élsimítással. Ez általában egy függőlegesen kettévágottnak látszó betű képében jelenik meg. De ami a legrosszabb, hogy emiatt némely alkalmazás képes összeomlani. Ennek elkerülésére tegyük hozzá még az alábbi sorokat a local.conf állományhoz:
<match target="pattern" name="family"> <test qual="any" name="family"> <string>Helvetica</string> </test> <edit name="family" mode="assign"> <string>sans-serif</string> </edit> </match>
Miután befejeztük a local.conf szerkesztését, ellenőrizzük, hogy szerepel-e az állomány végén a </fontconfig> tag. Ha ugyanis nem zárjuk le rendesen, akkor a változtatásaink érvénytelenné válnak.
Végezetül a felhasználók is megadhatják a saját beállításaikat a saját .fonts.conf állományuk segítségével. Ehhez nem kell mást tenni, mindössze létrehozni egy ~/.fonts.conf XML-állományt.
Még egy utolsó ötlet: LCD képernyők esetén szükségünk lehet az ún. “sub-pixel sampling” (részképpont mintavételezési) technikára. Ezzel lényegében a (vízszintesen elválasztott) vörös, zöld és kék összetevőket külön-külön kezeljük a horizontális felbontás javítására. Bámulatos eredményeket lehet elérni a segítségével! A bekapcsolásához a következő sorokat kell beszúrnunk valahova a local.conf állományba:
<match target="font"> <test qual="all" name="rgba"> <const>unknown</const> </test> <edit name="rgba" mode="assign"> <const>rgb</const> </edit> </match>
Megjegyzés: A megjelenítő fajtájától függően lehet, hogy az rgb értéket bgr-re, vrgb-re vagy vbgr-re kell cserélnünk. Próbálgassuk és kiderül, hogy melyikkel működik jobban.
Az X bejelentkeztető képernyője (az X Display Manager vagy röviden csak XDM) az X Window System egyik kiegészítő eleme, melyet a bejelentkezések lebonyolítására használunk. Számtalan helyzetben hasznosnak bizonyulhat, beleértve a legkisebb “X terminálokat” és a legnagyobb hálózati szervereket is. Mivel az X Window System független hálózattól és protokolltól, a hálózaton összekapcsolt, X klienseket és szervereket futtató különböző számítógépek széles kombinációja előfordulhat. Az XDM egy grafikus felületen keresztül segít választani az elérhető szerverek között, valamint a felhasználók, például felhasználónév és jelszón keresztüli, hitelesítésében.
Az XDM tulajdonképpen a felhasználó számára ugyanazokat a funkciókat nyújtja, mint a getty(8) program (erről bővebben lásd 26.3.2 Szakasz). Tehát: belépteti a felhasználót a szerverre, ahova csatlakozott, illetve elindítja helyette a hozzá tartozó munkamenet kezelőjét (ami általában egy X-es ablakkezelő). Az XDM megvárja ennek a programnak a befejeződését, ami egyben jelzi számára, hogy a felhasználó elvégezte a dolgát, és kilépteti a szerverről. Ezután az XDM újra várakozni kezd a következő felhasználóra, miközben a bejelentkezéshez és a szerver kiválasztásához szükséges képernyőket jeleníti meg.
A XDM használatához először telepítenünk kell rendszerünkre a x11/xdm portot (mivel az Xorg újabb változatai ezt alapértelmezés szerint már nem telepítik). Ezt követően az XDM démon a /usr/local/bin/xdm helyen található meg. A programot root felhasználóként bármikor tudjuk futtatni, és ez veszi kezelésbe a helyi gépen futó X szervert. Amennyiben az XDM-et a számítógép minden egyes indulása során el akarjuk indítani, egyszerűen csak adjuk hozzá a megfelelő bejegyzést az /etc/ttys állományhoz. Ennek a formai szabályairól és használatáról bővebben lásd 26.3.2.1 Szakasz. Az /etc/ttys alapértelmezett változatában az XDM démont ebben a formában találjuk meg a virtuális terminálok között:
ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
Ez a bejegyzés alapból nem aktív. Az engedélyezéséhez írjuk át az ötödik mezőben szereplő off (kikapcsolva) értéket on (bekapcsolvá)-ra, majd indítsuk újra az init(8) programot a 26.3.2.2 Szakaszban leírtak szerint. Az első mezőben találhatjuk a program által kezelt terminált, ez jelen esetünkben a ttyv8. Ennek megfelelően az XDM a 9. virtuális terminálon kezdi meg a futását.
Az XDM beállításait tartalmazó könyvtár a /usr/local/lib/X11/xdm. Itt találhatjuk meg azokat az állományokat, amelyek megváltoztatásával befolyásolhatjuk az XDM megjelenését és viselkedését. Általában a következő állományok bukkannak fel ezen a helyen:
Állomány | Leírás |
---|---|
Xaccess | A kliens hitelesítésének szabályrendszere. |
Xresources | Az X erőforrásainak alapértelmezett értékei. |
Xservers | Az ismert távoli és helyi X szerverek listája. |
Xsession | A bejelentkezések során lefutó alapértelmezett szkript. |
Xsetup_* | A bejelentkező felület indítása előtt indítandó alkalmazásokkal kapcsolatos szkript. |
xdm-config | A gépen futó összes X szerver globális beállításai. |
xdm-errors | A szerver által jelentett hibák. |
xdm-pid | A jelenleg futó XDM-hez tartozó azonosító. |
Ebben a könyvtárban találunk még néhány olyan programot és szkriptet, amelyekkel be tudjuk állítani a munkaasztalunkat az XDM futása alatt. Ezen állományok céljait egyenként ismertetni fogjuk. A felépítésükről és használatukról az xdm(1) man oldala árul el többet.
Az alapértelmezett beállítás egy téglalap alakú bejelentkező ablak, aminek tetején nagy betűkkel a gép neve olvasható, valamint alatta a “Login:” (felhasználói név) és “Password:” (jelszó) mezők várnak kitöltésre. Ez egy remek kiindulási alap az XDM-képernyő kinézetének megváltoztatásához.
Az XDM-mel szabályozott X szerverek által használt protokoll az X Display Manager Connection Protocol (XDMCP). Ez az állomány tartalmazza a távoli számítógépekről érkező XDMCP-kapcsolatok vezérlésére vonatkozó szabályokat. Ezt a rendszer általában figyelmen kívül hagyja, hacsak az xdm-config állományban be nem állítottuk a távoli számítógépek csatlakoztathatóságát. Alapértelmezés szerint viszont semmilyen klienst nem enged csatlakozni.
Ez tartalmazza a szerverválasztó és bejelentkező képernyő alapértelmezéseit. Segítségével a bejelentkeztetést végző program kinézetét változtathatjuk meg. Formátuma hasonló az X11 dokumentációjában leírt app-defaults állományhoz.
A felhasználó bejelentkezése után ez az XDM-szkript fog lefutni. Általában minden felhasználóhoz tartozik egy saját ~/.xsession szkript, ami ezt felülbírálja.
Ezek fognak automatikusan lefutni a szerverválasztó vagy bejelentkeztető felületek megjelenése előtt. Minden általunk használt X szerverhez tartozik egy ilyen szkript, amelyek neve Xsetup_-al kezdődik és a helyi X szerver sorszámával folytatódik (például Xsetup_0). Ezek a szkriptek általában egy-két programot, mint például az xconsole, indítanak el a háttérben.
Az app-defaults nevű állományéhoz hasonló alakban tartalmaz beállításokat a program által kezelt minden egyes X szerverhez.
Ebben található meg az XDM által futtatni próbált X szerverek kimenete. Itt érdemes hibaüzenetek után kutatni, ha az XDM által indított X szerver valamiért megállna. Ezek az üzenetek egyébként a felhasználó ~/.xsession-errors állományába is beíródnak.
Az X szerverünkhöz csak akkor tudnak kívülről más felhasználók is kapcsolódni, ha átírjuk a hozzáférésre vonatkozó szabályokat és engedélyezzük rajta a kapcsolódást. Az alapértelmezett szabályok nagyon óvatosak. Ha tehát engedélyezni akarjuk a kívülről érkező kapcsolódásokat, akkor ahhoz először az xdm-config állományból vegyük ki az alábbi sort:
! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm DisplayManager.requestPort: 0
Ezután indítsuk újra az XDM-et. Ne felejtsük el, hogy az app-defaults állományokban a megjegyzések “!” (felkiáltó)jellel kezdődnek, nem pedig a megszokott “#” (kettőskereszt)tel. A fentieknél természetesen szigorúbb hozzáférési szabályok is szükségesek lehetnek — ezzel kapcsolatban nézzük meg Xaccess állományban szereplő példákat, illetve lapozzuk fel az xdm(1) man oldalt.
Az alapértelmezett XDM feladatát számos más program is képes ellátni. Ezek közül az egyik a kdm (a KDE része), amire ebben a fejezetben még vissza fogunk térni. A kdm különféle vizuális effekteket és egyéb kozmetikázást ígér, valamint lehetővé teszi a felhasználók számára, hogy a bejelentkezés előtt kiválaszthassák a használni kívánt ablakkezelőt.
Ebben a szakaszban a FreeBSD-n futó X-hez elérhető különböző munkakörnyezetekről (desktop environment) lesz szó. Maga a “munkakörnyezet” elnevezés sok mindenre utalhat egy mezei ablakkezelőtől kezdve az asztali alkalmazások teljes garmadájáig, ahogy igaz ez a KDE vagy a GNOME esetében is.
A GNOME egy felhasználóbarát munkakörnyezet, aminek segítségével a felhasználók számára gyerekjáték a számítógép használata és beállítása. A GNOME-ban találhatunk egy panelt (az alkalmazások indítására és különféle állapotjelzők megjelenítéséhez), egy asztalt (ahova az alkalmazások és az adatok kerülnek), szabványos asztali eszközöket és alkalmazásokat, valamint számos konvenciót, aminek mentén az alkalmazások könnyen együtt tudnak működni és tartani egymással az összhangot. Más operációs rendszerek vagy környezetek ismerői otthon érezhetik magukat ebben a GNOME által nyújtott vizuális környezetben. A FreeBSD és a GNOME kapcsolatáról bővebb információkat a FreeBSD GNOME Projekt honlapján találhatunk. Ezen az oldalon a GNOME telepítéséről, beállításáról és karbantartásáról egy meglehetősen átfogó leírást olvashatunk.
A programot könnyen fel tudjuk telepíteni csomagból vagy a Portgyűjtemény segítségével:
A hálózatról a GNOME csomagját mindössze ennek a sornak a beírásával fel tudjuk telepíteni:
# pkg_add -r gnome2
A portfa felhasználásával pedig a GNOME-ot így tudjuk forrásból telepíteni:
# cd /usr/ports/x11/gnome2 # make install clean
Miután a GNOME-ot sikerült feltelepítenünk, meg kell mondanunk az X szervernek, hogy az alapértelmezett ablakkezelő helyett a GNOME-ot indítsa el.
A GNOME-ot legkönnyebben a GDM, vagyis a GNOME Display Manager használatával indíthatjuk el. A GDM a GNOME részeként települ (habár alapból nincs bekapcsolva), és úgy tudjuk aktiválni, ha /etc/rc.conf állományba beírjuk a gdm_enable="YES" sort. Újraindítás után a GDM automatikusan elindul.
Ha a GDM mellett az összes GNOME szolgáltatást is el akarjuk indítani, vegyük fel a gnome_enable="YES" sort az /etc/rc.conf állományba.
A GNOME-ot parancssorból is elindíthatjuk, ha hozzá megfelelően beállítjuk az .xinitrc nevű állományt. Ha már van egy saját .xinitrc állományunk, akkor nincs más teendőnk, mint átírni az aktuális ablakkezelőnket hívó sort a /usr/local/bin/gnome-session sorra. Ha nem csináltunk előtte semmilyen különleges dolgot az említett konfigurációs állománnyal, akkor elegendő csak ennyit beírnunk:
% echo "/usr/local/bin/gnome-session" > ~/.xinitrc
Ezt követően írjuk be a startx parancsot, és a GNOME munkakörnyezete fog elindulni.
Megjegyzés: Ha az XDM-hoz hasonló régebbi bejelentkeztető képernyőt használunk, ez a módszer nem fog működni. Helyette hozzunk létre egy .xsession nevű futtatható állományt, amely ezt a parancsot tartalmazza. Ehhez nyissuk meg és cseréljük ki benne a korábbi ablakkezelőnk hívását a /usr/local/bin/gnome-session utasításra:
% echo "#!/bin/sh" > ~/.xsession % echo "/usr/local/bin/gnome-session" >> ~/.xsession % chmod +x ~/.xsession
Megcsinálhatjuk azt is, hogy a bejelentkezéskor választható legyen az ablakkezelő. A KDE-ről bővebben című szakaszban látni fogjuk, hogyan tudjuk ezt a a KDE bejelentkeztető képernyője, a kdm esetén beállítani.
A KDE egy könnyen használható modern munkakörnyezet. Ízelítőül a KDE felhasználók számára felkínált lehetőségei közül:
Gyönyörű, korszerű munkafelület
Az asztal hálózaton keresztüli transzparens kezelése
A KDE asztal és alkalmazásainak használatában egy beépített súgórendszer segíti a kényelmes és összefüggő közlekedést
A KDE alkalmazásainak összehangolt kinézete és hangulata
Szabványosított menük és eszköztárak, billentyű-hozzárendelések, színsémák stb.
Honosítás: a KDE több, mint 40 nyelven elérhető
Központosított, összehangolt, párbeszédablak alapú asztalbeállítás
Számos hasznos KDE-alkalmazás
A KDE-hez egy Konqueror nevű böngésző is tartozik, mely a többi UNIX-os böngésző komoly ellenfelének bizonyul. A KDE-ről többet a KDE honlapján olvashatunk. A KDE FreeBSD-re vonatkozó tudnivalóiról és a hozzá tartozó anyagokról a FreeBSD KDE csapat honlapján találhatunk információkat.
FreeBSD alatt a KDE két verziója érhető el: a harmadik változat már régóta használható, nagyon megbízható, amely mellett viszont a következő generációt képviselő negyedik változat is megtalálható a Portgyűjteményben. Akár egymás mellé is telepíthetőek.
Ahogy a GNOME és a többi más munkakörnyezet esetében is, maga a program könnyen telepíthető csomagból vagy a Portgyűjtemény segítségével is:
A KDE3 csomagját hálózaton keresztül így tudjuk telepíteni:
# pkg_add -r kde
A KDE4 csomagját pedig hálózaton keresztül így tudjuk telepíteni:
# pkg_add -r kde4
A pkg_add(1) magától letölti az alkalmazás legfrissebb verzióját.
Ha a KDE3 környezetet forrásból akarjuk telepíteni, használjuk a portfát:
# cd /usr/ports/x11/kde3 # make install clean
Ha viszont a KDE4 környezetet akarjuk inkább a portfa felhasználásával forrásból telepíteni, akkor ezeket a parancsokat adjuk ki:
# cd /usr/ports/x11/kde4 # make install clean
Miután a KDE-t sikeresen telepítettük, tudatnunk kell az X szerverrel, hogy az alapértelmezett ablakkezelő helyett ezt indítsa el. Ezt az .xinitrc állomány módosításával érhetjük el.
KDE3 esetén:
% echo "exec startkde" > ~/.xinitrc
KDE4 esetén:
% echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrc
Mostantól pedig mindig KDE lesz az asztalunk, amikor az X Window Systemet elindítjuk a startx paranccsal.
Ha az XDM-et használjuk bejelentkeztető képernyőként, a beállítást némileg máshogyan kell elvégeznünk. Ekkor az iménti helyett az .xsession állományt kell szerkesztenünk. A kdm-re vonatkozó utasítások a fejezet későbbi részében találhatóak meg.
Most, miután telepítettük a KDE-t a rendszerünkre, a dolgok többsége felfedezhető a különféle súgók segítségével vagy egyszerűen a menükre történő kattintással. A Windows-hoz vagy Mac®-hez szokott felhasználók itt most már egészen otthonosan érezhetik magukat.
A KDE-hez a legtöbb segítséget a saját internetes dokumentációjából nyerhetjük. A KDE a saját böngészőjét, a Konquerort tartalmazza, valamint tucatnyi ügyes alkalmazást és temérdek mennyiségű dokumentációt. A szakasz további részeiben ezért inkább olyan problémákkal foglalkozunk, amelyek megoldásai céltalan kóborlással már nem fedezhetőek fel olyan egyszerűen.
Egy többfelhasználós rendszer karbantartója minden bizonnyal szeretné üdvözölni rendszere felhasználóit egy grafikus bejelentkező képernyőn keresztül. A korábbiakban erre a célra az XDM-et javasoltuk. Azonban a KDE erre ajánl egy alternatívát, a kdm-et, amely jóval látványosabb és sokoldalúbb. Ez különösen abban merül ki, hogy a felhasználók (egy menün keresztül) ki tudják választani a bejelentkezés után használni kívánt munkakörnyezetet (legyen az KDE, GNOME vagy bármi más).
A kdm használatához a KDE aktuális verziójától függően különböző állományokat kell szerkesztenünk.
KDE3 esetén a /etc/ttys állományban szereplő ttyv8 sort kell az alábbiak szerint módosítanunk:
ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure
KDE4 esetén a következő sorokat kell felvennünk az /etc/rc.conf állományba:
local_startup="${local_startup} /usr/local/kde4/etc/rc.d" kdm4_enable="YES"
Az Xfce a GNOME által használt GTK+-ra épülő munkakörnyezet, amely azonban sokkal könnyedebb és azoknak készült, akik egy szimpla, hatékony, mindazonáltal könnyen használható és beállítható munkafelületre vágynak. Látvány szempontjából leginkább a kereskedelmi rendszereken megtalálható CDE-hez hasonlítható. Íme az Xfce néhány jellemzője:
Egyszerű, könnyen kezelhető munkaasztal
Tökéletesen konfigurálható egérrel, drag-and-droppal (“vonszolás”) stb.
A menükkel, kisalkalmazásokkal és alkalmazásindítókkal tarkított főpanelje hasonló a CDE paneljéhez
Beépített ablak-, állomány- és hangkezelővel, GNOME kompatibilitási modullal és még sok minden mással rendelkezik
Használhatunk témákat (mivel GTK+-ra épül)
Gyors, könnyű és hatékony: ideális régebbi vagy lassabb, esetleg kevés memóriával rendelkező számítógépekhez
Az Xfce-ről részletesebben az Xfce honlapján olvashatunk.
Az Xfce-hez tartozik bináris csomag (legalábbis az leírás készítésének pillanatában). Ezt a következő módon tudjuk telepíteni:
# pkg_add -r xfce4
Vagy a Portgyűjtemény használatával forrásból is felrakhatjuk:
# cd /usr/ports/x11-wm/xfce4 # make install clean
Ezután világosítsuk fel az X szervert, hogy a következő indulása során mi már az Xfce-t kívánjuk használni. Ehhez csak ennyit kell tennünk:
% echo "/usr/local/bin/startxfce4" > ~/.xinitrc
Így az X következő indításakor már az Xfce lesz a munkakörnyezetünk. Ahogy azt már korábban is jeleztük, az XDM használata során a GNOMEban leírtak szerint létre kell hoznunk az .xsession állományt, azonban ezúttal a /usr/local/bin/startxfce4 parancs használatával. Vagy a kdm-ről szóló szakaszban tárgyaltak mentén beállíthatjuk úgy a bejelentkeztető képernyőt, hogy a bejelentkezés előtt válasszuk ki a munkakörnyezetet.
Miután az alapokat már átvettük, a FreeBSD kézikönyv következő része néhány gyakorta alkalmazott funkciót tárgyal. Az itt szereplő fejezetek:
Bemutatnak különféle hasznos és népszerű asztali alkalmazásokat: böngészőket, irodai elősegítő eszközöket, dokumentum-megjelenítőket stb.
Bemutatják a FreeBSD alatt is elérhető multimédia eszközöket.
Kifejtik egy saját FreeBSD rendszermag elkészítésének folyamatát, amellyel így bővíteni tudjuk rendszerünk funkcionalitását.
Részletesen bemutatják a nyomtatásért felelős alrendszert, asztali és hálózati nyomtatók használata esetén egyaránt.
Megmutatják, hogyan futassunk Linuxra íródott alkalmazásokat a FreeBSD rendszerünkön.
Egyes fejezetek elolvasásához ajánlott bizonyos mértékű felkészülés, amely megemlítésre is kerül az érintett fejezetek áttekintésében.
A FreeBSD-n asztali alkalmazások széles spektrumát lehet futtatni, például böngészőket és szövegszerkesztőket. Legtöbbjük csomagként áll rendelkezésre, illetve automatizált módon lefordíthatóak a Portgyűjteményből. Az új felhasználók közül sokan szeretnének ilyen fajta alkalmazásokat használni, ezért ez a fejezet bemutatja, miként lehet a népszerűbb asztali alkalmazásokat minden különösebb erőfeszítés nélkül telepíteni, legyen szó az előre csomagolt vagy a Portgyűjteményben megtalálható formájukról.
Amikor portként telepítünk egy programot, lényegében a forráskódját fordítjuk le. Ez bizonyos esetekben nagyon sokáig is eltarthat attól függően, hogy pontosan mit is fordítunk le, illetve mekkora az erre a célra felhasznált számítógépünk vagy számítógépeink teljesítménye. Amennyiben a fordításra nem tudunk vagy nem kívánunk elegendő időt szánni, a Portgyűjteményben található programok többségét már előre lefordított csomagból is telepíthetjük.
Mivel a FreeBSD-ben bináris szintű Linux kompatibilitás is található, ezért az eredetileg Linuxra fejlesztett alkalmazások is használhatóak a munkakörnyezetünkben. Azonban határozottan javasoljuk, hogy a linuxos alkalmazások használatához először figyelmesen olvassuk át a 10 fejezetet. A linuxos bináris kompabilitást használó portok neve általában a “linux-” előtaggal kezdődik, amit ne felejtsük el figyelembe venni, amikor például a whereis(1) segítségével keressük valamelyiket. A fejezet további részében feltételezzük, hogy a linuxos alkalmazások telepítése előtt aktiváltuk a bináris Linux kompatibilitást.
Íme a fejezetben tárgyalt kategóriák:
Böngészők (mint a Firefox, Opera, Konqueror)
Irodai eszközök (mint a KOffice, AbiWord, The GIMP, OpenOffice.org)
Dokumentum-megjelenítők (mint az Acrobat Reader®, gv, Xpdf, GQview)
Pénzügyi szoftverek (mint a GnuCash, Gnumeric, Abacus)
A fejezet elolvasásához ajánlott:
a külső alkalmazások telepítésének ismerete (4 fejezet);
linuxos alkalmazások telepítésének ismerete (10 fejezet).
a multimédiás környezet kialakítására vonatkozó információkért a 7 fejezetet érdemes elolvasni. Az elektronikus levelezés beállítását és használatát a 28 fejezetből tudhatjuk meg.
A FreeBSD-vel együtt nem települ semmilyen böngésző. Helyette keressük meg a Portgyűjteményben a www könyvtárat, ahol ezzel szemben rengeteg böngésző áll telepítésre készen. Ha nem lenne időnk mindent lefordítani (ami egyes esetekben akár rengeteg időnkbe is kerülhet), ezek csomagolt formában is elérhetőek.
A KDE-hez és a GNOME-hoz eleve tartoznak HTML-böngészők. Ezen komplett munkakörnyezetek beállításához a 5.7 Szakaszt olvassuk el.
Ha viszont csak egy kevés erőforrást igénylő böngészőkre vágyunk, érdemes megnéznünk a Portgyűjteményben található www/dillo2, www/links vagy www/w3m portokat.
Ez a rész az alábbi alkalmazásokat említi:
Alkalmazás | Erőforrásigény | Telepítés forrásból | Főbb függőségek |
---|---|---|---|
Firefox | közepes | nehéz | Gtk+ |
Opera | kevés | könnyű | Vannak FreeBSD-s és linuxos változatai is. A linuxos verzió használatához azonban szükség van a bináris Linux kompatibilitásra és a linux-openmotif portra. |
Konqueror | közepes | nehéz | A KDE függvénykönyvtárai. |
A Firefox egy modern, szabad és nyílt forráskódú böngésző, amely tökéletesen használható FreeBSD alatt. Megtalálható benne egy, a jelenlegi HTML szabványoknak nagyon jól megfelelő megjelenítő motor, a lapokra bontható böngészés támogatása, a kéretlenül felbukkanó ablakok blokkolása, különböző kiterjesztések, javított biztonsági lehetőségek és még sok minden más. A Firefox forrása a Mozilla kódján alapszik.
Csomagból így telepíthető:
# pkg_add -r firefox
Ekkor a Firefox 3.6 változata fog települni. Ha helyette a Firefox 3.5 változatát szeretnénk használni, akkor ezt a parancsot adjuk ki:
# pkg_add -r firefox35
Ha forrásból szeretnénk felrakni, használhatjuk a Portgyűjteményben található portját is:
# cd /usr/ports/www/firefox # make install clean
A Firefox 3.5 telepítéséhez az iménti parancsban cseréljük ki a firefox részt a firefox35 könyvtárra.
Megjegyzés: Ennél és a következő résznél feltételezzük, hogy már korábban telepítettük a Firefox alkalmazást.
A Java™ plugin jelenleg nem működik a Firefox 3.6 változatával.
A FreeBSD Alapítvány megegyezett a Sun Microsystems-szel, hogy terjesztheti a Java futtatókörnyezet (JRE™) és a Java fejlesztőkörnyezet (JDK™) FreeBSD-re lefordított bináris változatait. Ezek a csomagok elérhetőek a FreeBSD Alapítvány honlapjáról.
Ha tehát Java-támogatást szeretnénk hozzáadni a Firefox böngészőhöz, elsőként fel kell telepítenünk a java/javavmwrapper portot. Ezután le kell töltenünk a Diablo JRE csomagot a http://www.freebsdfoundation.org/downloads/java.shtml címről, majd telepítenünk azt a pkg_add(1) segítségével.
Megjegyzés: Ezen az oldalon nem találunk bináris csomagokat FreeBSD 8.X rendszerekhez, azonban a FreeBSD 7.X rendszerekhez készült csomagok használhatóak 8.X esetén is. Ehhez mindössze a misc/compat7x portot kell előtte telepítenünk.
A másik lehetőség a Diablo JRE (valamint a Diablo JDK) telepítése a Portgyűjteményből (java/diablo-jre16 és java/diablo-jdk16). Ehhez a szükséges forrásokat (distfile állományokat) licencelési megkötések miatt nekünk kell külön letölteni. A kapcsolódó utasításokat a make maketarget parancs meghívásával kaphatjuk meg.
Indítsuk el a böngészőnket, és írjuk be a címsorba, hogy about:plugins és nyomjuk le az Enter billentyűt. Az eredményül kapott oldalon láthatjuk az eddig telepített pluginok listáját, ahol mostanra már a Java pluginnak is meg kell jelennie. Amennyiben ez nem következne be, mindegyik felhasználónál adjuk ki az alábbi parancsot:
% ln -s /usr/local/diablo-jre1.6.0/plugin/i386/ns7/libjavaplugin_oji.so \ $HOME/.mozilla/plugins/
Vagy ha a Diablo JDK csomagot telepítettük:
% ln -s /usr/local/diablo-jdk1.6.0/jre/plugin/i386/ns7/libjavaplugin_oji.so \ $HOME/.mozilla/plugins/
Ezt követően indítsuk újra a böngészőnket.
Megjegyzés: Ezek a parancsok az i386 architektúra használatát feltételezik, de a csomagok az amd64 architektúra esetén is elérhetőek.
A Macromedia® Flash™ plugin nem érhető el közvetlenül FreeBSD-re. Azonban létezik egy, a plugin linuxos verziójára épített szoftveres réteg (wrapper). Ez a wrapper még többek közt az Adobe® Acrobat® és a RealPlayer® pluginjait is használhatóvá teszi.
Attól függően, hogy a FreeBSD melyik változatát használjuk, különböző módokon tudjuk működésbe hozni:
FreeBSD 7.X
Telepítsük a www/nspluginwrapper portot. Ehhez szükség lesz még az emulators/linux_base-fc4 portra is, amely viszonylag nagy méretű.
Következő lépésként telepítsük a www/linux-flashplugin9 portot. Ezáltal megkapjuk a Flash 9.X változatát, amely FreeBSD 7.X alatt remekül működik.
Megjegyzés: A 7.1-RELEASE előtti FreeBSD verziók esetén a www/linux-flashplugin7 portot telepítsük és hagyjuk ki a linprocfs(5) használatára vonatkozó részt.
FreeBSD 8.X
Telepítsük a www/nspluginwrapper portot. Ehhez szükségünk lesz majd a valamivel nagyobb emulators/linux_base-f10 portra.
Ezt követően telepítsük a www/linux-f10-flashplugin10 portot. Ekkor a Flash 10.X változatát kapjuk, amely FreeBSD 8.X alatt remekül használható.
Ezen változat beüzemeléséhez még létre kell hoznunk az alábbi linket:
# ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so \ /usr/local/lib/browser_plugins/
Miután a FreeBSD rendszerünk változatának megfelelően elvégeztük a Flash port telepítését, a plugint az egyes felhasználóknak a nspluginwrapper paranccsal tehetjük elérhetővé:
% nspluginwrapper -v -a -i
Ha Flash animációkat szeretnénk lejátszani, akkor ehhez a /usr/compat/linux/proc könyvtárba csatlakoztatnunk kell egy linprocfs(5) típusú linuxos proc állományrendszert. Ezt a következő paranccsal tehetjük meg:
# mount -t linprocfs linproc /usr/compat/linux/proc
Az /etc/fstab állományban az alábbi sor hozzáadásával azonban ennek csatlakoztatása akár automatikussá is tehető a rendszerindítás során:
linproc /usr/compat/linux/proc linprocfs rw 0 0
Ezután indítsuk el a böngészőt, majd gépeljük be az about:plugins szöveget a címsorba és nyomjuk le az Enter billentyűt. Ekkor a jelenleg elérhető pluginok listájának kell megjelennie.
Az Swfdec egy Flash animációk dekódolásáért és megjelenítéséért felelős programkönyvtár. Az Swfdec-Mozilla pedig egy Firefox böngészőkhöz készített plugin, amely az Swfdec könyvtáron keresztül játszik le SWF állományokat. Jelenleg még aktív fejlesztés alatt áll.
Ha nem akarjuk vagy netalán nem tudjuk forrásból lefordítani, akkor egyszerűen csak telepítsük csomagként a hálózaton keresztül:
# pkg_add -r swfdec-plugin
Ha valamiért mégsem érhető el hozzá csomag, akkor a Portgyűjteményből is telepíthetjük:
# cd /usr/ports/www/swfdec-plugin # make install clean
Miután telepítettük a plugint, a használatához indítsuk újra a böngészőt.
Az Opera egy sokoldalú és szabványokkal kompatibilis böngésző. Tartalmaz beépített levelező klienst és hírolvasót, IRC-klienst, RSS/Atom-olvasót és még sok mindent mást. Ennek ellenére az Opera viszonylag pehelysúlyúnak és gyorsnak számít. Két fajta módon is használható: létezik “natív” FreeBSD-s változata, valamint a Linux emulációval futó változata.
Az Opera FreeBSD-s változatát a megfelelő csomag telepítésével érhetjük el:
# pkg_add -r opera
Habár egyes FTP oldalakon nem található meg az összes csomag, viszont a Portgyűjteményből még ekkor is be tudjuk szerezni az Operat:
# cd /usr/ports/www/opera # make install clean
A linuxos Opera telepítéséhez opera helyett linux-opera nevet kell megadnunk a fenti parancsokban. Ennek a verziónak a használata akkor lehet előnyös, ha olyan plugineket akarunk elérni, amelyek csak Linuxra léteznek. Ilyen például az Adobe Acrobat Reader. Ettől eltekintve azonban a FreeBSD-s és a linuxos változatok szinte teljesen megegyeznek.
A Konqueror a KDE része, de a használatához elegendő, ha csak a x11/kdebase3 portot telepítjük fel. A Konqueror több, mint egy egyszerű böngésző: állománykezelő és multimédiás nézegető is.
Számtalan plugin áll rendelkezésre a Konquerorhoz, melyeket a misc/konq-plugins portban találunk meg.
A Konqueror ismeri a Flasht is. A Flash és a Konqueror kapcsolatával egy külön “Hogyan” is foglalkozik, amelyet a http://freebsd.kde.org/howtos/konqueror-flash.php címen olvashatunk el.
Amikor irodai felhasználásról van szó, az új felhasználók gyakorta keresnek egy jó irodai programcsomagot vagy egy barátságos szövegszerkesztőt. Habár az egyes munkakörnyezetek, mint például a KDE, gyakran saját irodai eszközöket is tartalmaznak, FreeBSD alatt nincs alapértelmezett irodai programcsomag. A rendszer a munkakörnyezetektől függetlenül igyekszik felkínálni mindazt, amire szükségünk lehet.
Ebben a részben a következő alkalmazásokról esik szó:
Alkalmazás | Erőforrásigény | Telepítés forrásból | Főbb függőségek |
---|---|---|---|
KOffice | kevés | nehéz | KDE |
AbiWord | kevés | könnyű | Gtk+ vagy GNOME |
The Gimp | kevés | nehéz | Gtk+ |
OpenOffice.org | sok | nagyon nehéz | JDK, Mozilla |
A KDE közösség által kiadott munkakörnyezethez társul egy irodai programcsomag is, amely a KDE-től függetlenül is használható. Tartalmazza a többi irodai programcsomagban is megtalálható négy szabványos komponenst: a KWord szövegszerkesztőt, a KSpread táblazatkezelőt, a KPresenter prezentációkészítőt és végezetül a Kontourt, mellyel grafikus dokumentumokat tudunk elkészíteni.
A legfrissebb KOffice telepítése előtt bizonyosodjuk meg róla, hogy a KDE legfrissebb verziójával is rendelkezünk.
Ha a KOffice-t csomagként akarjuk telepíteni, akkor adjuk ki az alábbi parancsot:
# pkg_add -r koffice
Amennyiben ez a csomag nem érhető el, telepíthetjük a Portgyűjteményből is. Például a KDE3-hoz tartozó KOffice-t így rakhatjuk fel:
# cd /usr/ports/editors/koffice-kde3 # make install clean
Az AbiWord egy szabad szövegszerkesztő program, a Microsoft Word-höz hasonló kinézettel. Remekül használható levelek, beszámolók, feljegyzések, cikkek stb. írásához. Nagyon gyors, rengeteg funkciót ajánl fel, és kifejezetten felhasználóbarát.
Az AbiWord képes többféle állományformátumba exportálni és onnan importálni, beleértve az olyan zárt formátumokat is, mint például a Microsoft .doc.
Az AbiWord csomagból telepíthető a következő módon:
# pkg_add -r abiword
Amennyiben ez a csomag nem érhető el, lefordítható a Portgyűjteményből is, ami ráadásul sokszor egy frissebb verziót tartalmaz. Ezt így tudjuk megtenni:
# cd /usr/ports/editors/abiword # make install clean
Képek készítésére vagy retusálásra a The GIMP a legfejlettebb képszerkesztő program. Egyszerű rajzolóprogram gyanánt is használható, de akár minőségi fényképretusálásra is. Óriási mennyiségű plugin található hozzá és magában foglal egy szkriptes interfészt is. A The GIMP formátumok széles skáláját ismeri. Számos scanner és digitális rajztábla csatlakoztatható hozzá.
A hozzá tartozó csomag a következő módon telepíthető fel:
# pkg_add -r gimp
Ha a csomagoknak beállított FTP oldalon nem található meg ez a csomag, megpróbálkozhatunk vele a Portgyűjteményen keresztül is. A gyűjtemény graphics könyvtárában ezen felül fellelhetjük a The Gimp Manualt, vagyis a The GIMP kézikönyvét. Így kell ezeket innen telepíteni:
# cd /usr/ports/graphics/gimp # make install clean # cd /usr/ports/graphics/gimp-manual-pdf # make install clean
Megjegyzés: A Portgyűjtemény graphics könyvtárában a The GIMP fejlesztői változatával is találkozhatunk a graphics/gimp-devel alkönyvtárban. A The Gimp Manual HTML változata pedig a graphics/gimp-manual-html alkönyvtárban található.
Az OpenOffice.org tartalmaz minden olyan elengedhetetlenül fontos alkalmazást, amelyek napjaink bármelyik irodájához hozzátartoznak: egy szövegszerkesztőt, egy táblázatkezelőt, egy prezentációszerkesztőt és egy rajzolóprogramot. A felhasználói felülete nagyon hasonlít a többi irodai programcsomagéhoz, és képes többféle elterjedt állományformátumot kezelni. Számos különböző nyelven elérhető — a honosítása kiterjed a felületekre, helyesírás-ellenőrzőkre és szótárakra is.
Az OpenOffice.org szövegszerkesztője natív XML állományformátumot használ a hordozhatóság és a rugalmasság növeléséhez. A táblázatkezelője tartalmaz egy makrónyelvet és könnyedén összekapcsolható külső adatbázisokkal. Az OpenOffice.org natívan és megbízhatóan fut Windows-on, Solaris™-on, Linux-on, FreeBSD-n és Mac OS X-en. Az OpenOffice.org-ról bővebb információt a projekt saját honlapján találhatunk. A FreeBSD-s változatra vonatkozó információkat és a csomagokat pedig a FreeBSD OpenOffice.org Porting Team honlapján lelhetjük meg.
Az OpenOffice.org telepítéséhez ennyit kell csak beírni:
# pkg_add -r openoffice.org
Megjegyzés: Ha a FreeBSD -RELEASE ágát használjuk, ennek működnie kell. Ettől eltérő esetben érdemes egy pillantást vetni a FreeBSD OpenOffice.org Porting Team honlapjára, ahonnan le tudjuk tölteni a verziókhoz megfelelő csomagot, amelyet ezután a pkg_add(1)-al fel is tudunk telepíteni. A legfrissebb megbízható és a fejlesztői változat egyaránt elérhető erről a helyről.
Ahogy sikerült feltelepíteni a csomagot, egyszerűen csak be kell gépelni a következő parancsot az OpenOffice.org futtatásához:
% openoffice.org
Megjegyzés: Az első futtatás során válaszolnunk kell még néhány további kérdésre is, valamint a felhasználói könyvtárunkban keletkezik egy .openoffice.org könyvtár.
Ha nem érhetőek el OpenOffice.org csomagok, lefordíthatjuk a forrását is. Azonban mielőtt még ennek nekilátnánk, el kell fogadnunk, hogy ez a művelet a lemezünkön rettenetesen sok területet fog igényelni és meglehetősen sokáig tart.
# cd /usr/ports/editors/openoffice.org-3 # make install clean
Megjegyzés: Ha egy honosított verziót szeretnénk fordítani, az utolsó parancs helyett írjuk inkább ezt:
# make LOCALIZED_LANG=nyelv install cleanA nyelv helyett itt természetesen a nyelvnek megfelelő ISO-kódot kell megadni. Az itt támogatott nyelvek kódjának listája a port könyvtárán belül, a files/Makefile.localized állományban található meg.
Ahogy a fordítás befejeződött, az OpenOffice.org így indítható el parancssorból:
% openoffice.org
A UNIX megjelenése óta néhány új népszerű dokumentumformátum is felbukkant, melyek szabványos megjelenítői nem minden esetben részei az alaprendszernek. Ebben a részben azt tekintjük át, hogyan lehet ilyen megjelenítőket telepíteni.
Ez a rész az alábbi alkalmazásokat említi:
Alkalmazás | Erőforrásigény | Telepítés forrásból | Főbb függőségek |
---|---|---|---|
Acrobat Reader | kevés | könnyű | Bináris Linux kompatibilitás |
gv | kevés | könnyű | Xaw3d |
Xpdf | kevés | könnyű | FreeType |
GQview | kevés | könnyű | Gtk+ vagy GNOME |
A dokumentumok többsége manapság PDF (Portable Document Format, avagy “hordozható dokumentumformátum)” állományok formájában terjed. Az ilyen típusú állományok megnézésére az egyik legmegfelelőbb alkalmazás az Acrobat Reader, melyet az Adobe adott ki Linuxra. De mivel a FreeBSD képes Linux binárisok futtatására, ezért így FreeBSD-re is elérhető.
Ha az Acrobat Reader 8-at a Portgyűjteményből akarjuk telepíteni, akkor írjuk be:
# cd /usr/ports/print/acroread8 # make install clean
Licencelési megszorítások miatt csomag nem áll rendelkezésre.
A gv egy PostScript és PDF megjelenítő. Eredetileg a ghostview alapján készült, de a Xaw3d-nek köszönhetően sokkal szebben néz ki. Gyors és a felülete letisztult. A gv sok mindent tud, többek közt beállítható benne a dokumentum tájolása, a papírméret, skálázás és az élsimítás. Szinte bármelyik művelet elvégezhető csak billentyűzetről vagy egérrel.
A gv csomagjának telepítéséhez a következő parancsot használhatjuk:
# pkg_add -r gv
Ha pedig nem tudjuk letölteni a csomagot, használhatjuk a Portgyűjteményt is:
# cd /usr/ports/print/gv # make install clean
Ha egy egyszerű FreeBSD-s PDF megjelenítőre lenne szükségünk, erre a célra az Xpdf pontosan megfelel. Nagyon kevés erőforrást igényel és nagyon megbízható. A szabványos X-beli betűtípusokat használja, és nincs szüksége sem a Motifra, sem pedig más X-es eszközkészletre.
Az Xpdf csomagjának felrakásához az alábbi parancs javasolt:
# pkg_add -r xpdf
Amennyiben nem áll rendelkezésre az említett csomag, vagy egyszerűen csak a Portgyűjteményből szeretnénk felrakni, adjuk ki ezeket a parancsokat:
# cd /usr/ports/graphics/xpdf # make install clean
Ahogy a telepítés befejeződik, már el is indíthatjuk az Xpdf alkalmazást, ahol a jobb egérgombbal tudjuk aktiválni a menüt.
A GQview egy képkezelő. Állományokat tudunk megnyitni benne egyetlen kattintással, külső szerkesztőprogramot tudunk indítani vagy akár még a képek kicsinyített változatait is láthatjuk és így tovább. Megtalálható benne a diavetítés és az alapvető állományműveletek. Képgyűjteményeket is kezelhetünk és könnyedén megtalálhatjuk a bennük levő képek között az egyezőeket. A GQview teljes képernyős nézegetést is megenged, illetve támogatja a honosítást.
A GQview csomag telepítéséhez ezt a parancsot kell kiadni:
# pkg_add -r gqview
Amikor ez a csomag nem tölthető le, vagy amikor inkább a Portgyűjteményből szeretnénk felrakni, ezt írjuk be:
# cd /usr/ports/graphics/gqview # make install clean
Ha bármilyen ok folytán a FreeBSD-vel szeretnénk kezeli személyes pénzügyeinket, akadnak olyan kellően komoly és könnyen kezelhető alkalmazások, amelyek csak a telepítésükre várnak. Néhány közülük kompatibilis az elterjedtebb állományformátumokkal, mint például amiben a Quicken® és az Excel is tárolja az adatait.
Ebben a részben az alábbi programokat vesszük sorra:
Alkalmazás | Erőforrásigény | Telepítés forrásból | Főbb függőségek |
---|---|---|---|
GnuCash | kevés | nehéz | GNOME |
Gnumeric | kevés | nehéz | GNOME |
Abacus | kevés | könnyű | Tcl/Tk |
KMyMoney | kevés | nehéz | KDE |
A GnuCash a GNOME része, és egy felhasználóbarát, mégis hatékony eszközt ad a felhasználók kezébe. A GnuCash segítségével nyilván tudjuk tartani a bevételeinket és kiadásainkat, bankszámláinkat és befektetéseinket. Felülete intuitív, miközben továbbra is professzionális minőségű.
A GnuCash-ben megtalálhatunk egy intelligens nyilvántartást, a számlák hierarchikus rendszerét, és számtalan billentyűkombinációt és automatikus kiegészítést, amivel felgyorsul a munkánk. Egyetlen tranzakciót képes felbontani több kisebb és részletesebb elemre. A GnuCash képes importálni és exportálni a Quicken QIF típusú állományait. Ezenkívül még kezeli a legtöbb nemzetközi dátumformátumot és pénznemet.
A GnuCash-t az alábbi módon tudjuk telepíteni a rendszerünkre:
# pkg_add -r gnucash
Ha ez a csomag nem érhető el, használhatjuk a Portgyűjteményt is:
# cd /usr/ports/finance/gnucash # make install clean
A Gnumeric egy táblázatkezelő program, a GNOME munkakörnyezet része. Sok esetben képes a helyzethez alkalmazkodva automatikusan “kitalálni” a felhasználó gondolatait a cellák formátumának megfelelő automatikus kiegészítő rendszerével. Be tud olvasni számos népszerűbb formátumot, mint például az Excel, Lotus 1-2-3 vagy a Quattro Pro állományait. A math/guppi grafikonkészítő programon keresztül támogatja grafikonok rajzolását is. Nagyszámú beépített funkcióval rendelkezik, és ismeri az összes megszokott cellaformátumot, legyen az szám, pénznem, dátum, idő vagy bármi más.
A Gnumeric telepítését az alábbi paranccsal adhatjuk ki:
# pkg_add -r gnumeric
Ha valamiért nem érhető el ez a csomag, a Portgyűjteményből is fel tudjuk rakni:
# cd /usr/ports/math/gnumeric # make install clean
Az Abacus egy kicsi és egyszerűen használható táblázatkezelő program. Számos olyan funkciót tartalmaz beépítve, amelyek kifejezetten hasznosnak bizonyulhatnak a statisztika, pénzügyek és a matematika területén. Importálni és exportálni tudja az Excel állományformátumát is. Az Abacus még PostScript formátumú kimenetet is tud készíteni.
Az Abacus telepítéséhez csupán ennyit kell tennünk:
# pkg_add -r abacus
Amennyiben viszont nem érhető el ez a csomag, használhatjuk a Portgyűjteményt is:
# cd /usr/ports/deskutils/abacus # make install clean
A KMyMoney a KDE részeként kifejlesztett személyi pénzügyi nyilvántartó. A KMyMoney igyekszik az összes kereskedelmi pénzügyi nyilvántartó programban megtalálható fontosabb lehetőséget magában foglalni és rendelkezésre bocsátani. Mindezek mellett egy könnyen használható és nagyon ügyes kettős könyvelést is találhatunk benne. A KMyMoney képes beolvasni a szabványos Quicken Interchange Format (QIF) szerint készült állományokat, követni a befektetéseket, többféle pénznemet kezelni és sokfajta kimutatást tudunk vele készíteni. A megfelelő bővítmény hozzáadásával még az OFX formátumú állományok olvasására is alkalmas.
A KMyMoney csomagként így telepíthető:
# pkg_add -r kmymoney2
Ha ez a csomag nem érhető el, akkor a Portgyűjteményen keresztül is fel tudjuk rakni:
# cd /usr/ports/finance/kmymoney2 # make install clean
Miközben a FreeBSD igen népszerű az internetszolgáltatók körében a teljesítménye és megbízhatósága révén, a hétköznapi használatban is remekül beválik. Többezernyi olyan alkalmazás érhető el hozzá csomagként vagy portként, amelyekkel az igényeinknek megfelelő munkakörnyezetet tudjuk kiépíteni.
Íme egy rövidke emlékeztető azokról az asztali alkalmazásokról, melyeket a fejezetben tárgyaltunk:
Alkalmazás | Csomag | Port |
---|---|---|
Opera | opera | www/opera |
Firefox | firefox | www/firefox |
KOffice | koffice-kde3 | editors/koffice-kde3 |
AbiWord | abiword | editors/abiword |
The GIMP | gimp | graphics/gimp |
OpenOffice.org | openoffice | editors/openoffice.org-3 |
Acrobat Reader | acroread | print/acroread8 |
gv | gv | print/gv |
Xpdf | xpdf | graphics/xpdf |
GQview | gqview | graphics/gqview |
GnuCash | gnucash | finance/gnucash |
Gnumeric | gnumeric | math/gnumeric |
Abacus | abacus | deskutils/abacus |
KMyMoney | kmymoney2 | finance/kmymoney2 |
A FreeBSD a hangkártyák széles választékát ismeri, ami által képesek vagyunk számítógépünkkel hi-fi minőségű hangzást létrehozni. Ennek részeként rögzíteni és visszajátszani tudunk többek közt MPEG Audio Layer 3 (MP3), WAV és Ogg Vorbis formátumokban. A FreeBSD Portgyűjteménye ezenkívül tartalmaz még olyan alkalmazásokat is, amelyekkel szerkeszteni lehet a felvett hangokat, effekteket hozzátenni és vezérelni a hangkártyánkhoz csatlakoztatott MIDI eszközöket.
Némi kísérletezéssel a FreeBSD még videoállományok és DVD-k lejátszására is rávehető. A különféle videoanyagok kódolására, konvertálására és visszajátszására alkalmas programok száma azonban jóval kisebb, mint a hanganyagok esetén. Például az írás pillanatában nincs a FreeBSD Portgyűjteményében a formátumok közti konvertálásra alkalmas, a videókat olyan jól újrakódolni tudó alkalmazás, amilyen az audio esetén az audio/sox. Azonban ezen a területen a szoftverek palettája gyorsan változik.
Ebben a fejezetben bemutatjuk a hangkártyánk beállításához szükséges lépéseket. Az X11 telepítése és beállítása (5 fejezet) során ugyan már foglalkoztunk a videokártyánkkal kapcsolatos hardveres problémákkal, azonban a jobb visszajátszás érdekében további cselfogásokat is be kell majd vetnünk.
A fejezet elolvasása során megismerjük:
hogyan állítsuk be úgy a rendszerünket, hogy felismerje a hangkártyánkat;
hogyan bizonyosodjuk meg róla, hogy a kártyánk valóban működik;
hogyan oldjuk meg a hangkártya beállítása során felmerülő problémákat;
hogyan játsszunk le és kódoljunk MP3-at vagy más egyéb hangformátumot;
hogyan támogatja a videokat az X szerver;
hogyan adnak az egyes lejátszók és kódolók még jobb eredményt
hogyan játsszunk le DVD-ket, .mpg és .avi állományokat;
hogyan mentsük a CD-k és DVD-k tartalmát állományokba;
hogyan állítsuk be a TV kártyánkat
hogyan állítsunk be egy scannert.
A fejezet elolvasásához ajánlott:
egy új rendszermag beállításának és telepítésének ismerete (8 fejezet).
Figyelem: Ha zenei CD-ket próbálunk meg a mount(8) paranccsal csatlakoztatni, akkor az hibával, vagy a legrosszabb esetben akár teljes rendszerösszeomlással is járhat. Az ilyen típusú lemezek az ISO szabványú állományrendszerekétől eltérő kódolással rendelkeznek.
A művelet megkezdése előtt ki kell derítenünk, milyen típusú hangkártyánk van, milyen chip van rajta, PCI vagy ISA buszon csatlakozik-e. A FreeBSD rengeteg PCI és ISA buszos kártyát ismer egyaránt. A sajátunk beazonosításához a támogatott hangeszközök listáját a Hardware Notes (Hardverjegyzék) oldalán találhatjuk meg. Ebből a jegyzékből mellesleg azt is megtudhatjuk, hogy melyik meghajtó kezeli a kártyánkat.
A hangeszközünk használatához be kell töltenünk a neki megfelelő meghajtót. Ez két módon is megtehető. Ezek közül az a legkönnyebb, ha a kldload(8) paranccsal egyszerűen betöltjük a rendszermag hangkártyánkhoz tartozó modulját. Ezt megtehetjük közvetlenül parancssorból:
# kldload snd_emu10k1
vagy a /boot/loader.conf állományból az alábbihoz hasonló sor hozzáadásával:
snd_emu10k1_load="YES"
A fenti példák a Creative SoundBlaster® Live! hangkártyára vonatkoznak. A többi betölthető hangkártya-modul felsorolása a /boot/defaults/loader.conf állományban található. Ha nem vagyunk benne biztosak, hogy melyik meghajtót is akarjuk pontosan használni, akkor próbálkozzunk az snd_driver modul betöltésével:
# kldload snd_driver
Ez egy olyan metameghajtó, ami egyszerre betölti az összes érintett eszközmeghajtót, és segítségével felgyorsíthatjuk a megfelelő meghajtó megtalálását. A /boot/loader.conf használatával is be tudjuk ugyanígy tölteni az összes meghajtót.
Az snd_driver metameghajtó betöltése után úgy kereshetjük meg a ténylegesen használatban levő meghajtót, ha megnézzük a /dev/sndstat állományt a cat /dev/sndstat paranccsal.
A második módszer szerint a hangkártyánk támogatását statikusan beépítjük a rendszermagba. A lentebb található szakaszban olvashatjuk mindazok az információkat, amelyekre szükségünk lehet ennek elvégzése közben. A rendszermag újrafordításával kapcsolatban forduljunk a 8 fejezethez.
Elsőként hozzá kell adnunk a rendszermaghoz a hangeszközök alapmeghajtóját, a sound(4) eszközt. Ezt a rendszermag beállításait tartalmazó állományban az alábbi sor felvételével tehetjük meg:
device sound
Ezután tegyük még hozzá a hangkártyánkhoz kapcsolódó támogatást is. Ehhez viszont pontosan tudunk kell, melyik meghajtó képes működtetni a kártyát. A hangkártyához tartozó meghajtót a Hardware Notes (Hardverjegyzék)-ben található eszközök listájából deríthetjük ki. Például a Creative SoundBlaster Live! hangkártyát a snd_emu10k1(4) meghajtó kezeli. Ennek a hangkártyának a támogatását az alábbi sorral állíthatjuk be:
device snd_emu10k1
Az itt használatos formátumot a meghajtó man oldalának átolvasásából tudhatjuk meg. Azonban az összes támogatott hangkártya meghajtó megadásának pontos formátuma megtalálható a /usr/src/sys/conf/NOTES állományban is.
A PnP (Plug n Play)-t nem ismerő ISA kártyák esetén az összes többi nem PnP-s ISA kártyához hasonlóan szükséges lehet a rendszermag számára megadnunk a kártya hardveres beállításait (IRQ, I/O port stb). Ezt a /boot/device.hints állományon keresztül tehetjük meg. A rendszerindítási folyamat során a loader(8) beolvassa ezt az állományt, majd átadja a benne szereplő információkat a rendszermagnak. Például a Creative SoundBlaster 16, nem PnP-s ISA kártya az snd_sb16 meghajtóval együtt az snd_sbc(4) meghajtót használja. A kártya használatához a rendszermag beállításait tartalmazó állományba ezeket a sorokat kell megadni:
device snd_sbc device snd_sb16
valamint a /boot/device.hints állományba ezeket:
hint.sbc.0.at="isa" hint.sbc.0.port="0x220" hint.sbc.0.irq="5" hint.sbc.0.drq="1" hint.sbc.0.flags="0x15"
Ekkor a kártya a 0x220 I/O portot és 5 IRQ-t használja.
A /boot/device.hints állományban alkalmazott felírási módról bővebben a sound(4), valamint a kérdéses meghajtó man oldalán tájékozódhatunk.
A fentiekben bemutatott beállítások alapértelmezettek, néhány esetben azonban a kártyánknak megfelelően meg kell változtatnunk az IRQ és egyéb értékeket. Erről a kártyáról konkrétan a snd_sbc(4) man oldalon olvashatunk részletesebben.
Miután újraindítottuk a számítógépünket a módosított rendszermaggal, vagy miután betöltöttük a szükséges modult, a hangkártyának valahogy így kell megjelennie a rendszerünk üzenetpufferében (dmesg(8)):
pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0 pcm0: [GIANT-LOCKED] pcm0: <Cirrus Logic CS4205 AC97 Codec>
A hangkártyánk állapota a /dev/sndstat állományon keresztül ellenőrizhető:
# cat /dev/sndstat FreeBSD Audio Driver (newpcm) Installed devices: pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384 kld snd_ich (1p/2r/0v channels duplex default)
Ez a kiírás rendszerenként eltérhet. Ha nem látunk semmilyen pcm0 eszközt, akkor menjünk vissza és nézzük át újra, pontosan mit is csináltunk. Vizsgáljuk át a rendszermagunk beállításait tartalmazó állományt és győződjünk meg róla, hogy a megfelelő meghajtót adtuk meg. Az itt felmerülő gyakori gondokkal a 7.2.2.1 Szakasz foglalkozik.
Ha azonban minden remekül haladt, akkor most már van egy működő hangkártyánk. Ha rendesen összekapcsoltuk hangkártyánkat a CD- vagy DVD-meghajtónk audio csatlakozásával, akkor tegyünk egy CD-t a meghajtóba és kezdjük el játszani a cdcontrol(1) paranccsal:
% cdcontrol -f /dev/acd0 play 1
Az olyan alkalmazások, mint például az audio/workman, ehhez egy sokkal barátságosabb felületet nyújtanak. Az MP3 formátumú állományok meghallgatásához pedig minden bizonnyal jól fog jönni egy olyan alkalmazás is, mint például az audio/mpg123.
A kártyát úgy is tesztelhetjük, ha az alábbihoz hasonló módon adatokat küldünk a /dev/dsp állományba:
% cat állománynév > /dev/dsp
ahol az állománynév tetszőleges állomány neve lehet. A parancs hatására valamilyen zajt kell hallanunk, és ez egyben meg is erősíti, hogy a hangkártyánk működik.
A hangkártyánk csatornáinak jellemzőit a mixer(8) paranccsal állíthatjuk. Erről további részleteket a mixer(8) man oldalon olvashatunk.
Hiba | Megoldás |
---|---|
“sb_dspwr(XX) timed out” | Nem állítottuk be jól az I/O portot. |
“bad irq XX” | Nem állítottuk be jól az IRQ értékét. Gondoskodjunk róla, hogy a beállított érték megegyezik a hangkártyánkéval. |
“xxx: gus pcm not attached, out of memory” | Nincs elég memória az eszköz használatához. |
“xxx: can't open /dev/dsp!” | A fstat | grep dsp parancs kiadásával ellenőrizzük, hogy valamelyik alkalmazás használja-e már az eszközt. Gyakori bajkeverő az esound és a KDE hangtámogatása. |
Gyakran szükségünk lehet több hangforrás egyidejű használatára, főleg olyankor, amikor az esound vagy az artsd bizonyos alkalmazásokkal nem hajlandó megosztani a hangeszközt.
A FreeBSD ezt a virtuális hangcsatornák használatával oldja meg, amit a sysctl(8) eszközön keresztül tudunk engedélyezni. Amikor a rendszermagban virtuális csatornák használatával keverünk, akkor lényegében képesek vagyunk a hangkártyánk által egyszerre játszható hangok számát megtöbbszörözni.
A virtuális csatornák számának beállításához a sysctl három változóját kell módosítanunk, amelyet root felhasználóként így tehetünk meg:
# sysctl dev.pcm.0.play.vchans=4 # sysctl dev.pcm.0.rec.vchans=4 # sysctl hw.snd.maxautovchans=4
A fenti példa négy virtuális
csatornát hoz létre, ami egészen
jellemző a mindennapi használatban. A
dev.pcm.0.play.vchans
és
dev.pcm.0.rec.vchans
a
pcm0 eszköz
lejátszásra és felvételre
használt virtuális csatornáinak
számát adja meg, amelyet az eszköz
csatlakoztatása után tudunk
beállítani. A
hw.snd.maxautovchans
az új
eszközhöz tartozó virtuális
csatornákat adja meg, ami akkor
állítódik be, amikor a kldload(8)
paranccsal csatlakoztatjuk. Mivel a
pcm modul a többi
eszközmeghajtótól függetlenül
töltődik be, ezért a
hw.snd.maxautovchans
azt tárolja, hogy
a később hozzá csatlakozó
eszközök mennyi virtuális csatornát
fognak majd kapni. Erről részletesebben a
pcm(4) man oldalon olvashatunk.
Megjegyzés: A használatban levő eszközöknél nem tudjuk megváltoztatni a virtuális csatornák számát. Ehhez először le kell állítanunk az eszközt használó összes programot, tehát a zenelejátszókat és hangdémonokat.
Amennyiben nem használjuk ki a devfs(5)
által nyújtott lehetőségeket, az
összes alkalmazásnak a
/dev/dsp0.x
eszközre kell mutatnia, ahol az
x értéke 0-tól
3-ig terjedhet attól függően, hogy a
dev.pcm.0.rec.vchans
értékét a fenti példához
hasonlóan 4-re állítottuk-e. A
devfs(5) megoldását használó
rendszerek esetén ez a folyamat automatikusan lezajlik,
tehát az összes /dev/dsp
eszközre irányuló kérés
magától
átirányítódik.
A keverőben megjelenő különböző csatornák alapértékei a pcm(4) meghajtó forráskódjában huzalozottan találhatóak meg. Számos alkalmazás és démon segít két hívás közt megőrizni a keverőben beállított értékeket, azonban ez nem teljesen tiszta megoldás. A meghajtó szintjén is be tudjuk állítani a keverő alapértékeit — ezt a /boot/device.hints állomány megfelelő módosításával érhetjük el, például:
hint.pcm.0.vol="50"
Ezzel a pcm(4) modul betöltése során a hangerő (volume) csatorna alapértelmezett értéket 50-re állítjuk.
Az MP3 (MPEG Layer 3 Audio) használatával közel CD minőségű hangot lehet elérni, ezért a mi FreeBSD munkaállomásunk sem maradhat ki előnyeinek élvezetéből.
Az XMMS (X Multimedia System) kiemelkedően a legnépszerűbb X11-es MP3 lejátszó. Mivel az XMMS grafikus felhasználói felülete szinte teljesen megegyezik a Nullsoft Winampjának felületével, ezért még a Winamp skinjeit is használhatjuk vele. Az XMMS-ben ezenkívül még a natív pluginek támogatását is megtalálhatjuk.
Az XMMS a multimedia/xmms portból vagy csomagból telepíthető.
Az XMMS használatára könnyű ráérezni: megtaláljuk benne a lejátszandó számok listáját, egy grafikus hangszínszabályzót és még sok minden mást. Akik már ismerik a Winamp működését, azok az XMMS-t is egyszerűnek érzik majd.
Mellette az audio/mpg123 port egy másik, parancssoros MP3 lejátszót kínál fel.
Az mpg123 futtatásához paraméterként meg kell adnunk a hangeszközt és lejátszandó MP3 állományt. Ha a hangeszközünk a /dev/dsp1.0 és a IzéMizé-Sláger.mp3 nevű MP3 állományt akarjuk rajta lejátszatni, akkor a következőt kell begépelnünk:
# mpg123 -a /dev/dsp1.0 IzéMizé-Sláger.mp3 High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3. Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp. Uses code from various people. See 'README' for more! THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK! Playing MPEG stream from IzéMizé-Sláger.mp3 ... MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
Mielőtt MP3 formátumba tömörítenénk egy CD-t vagy annak egy sávját, a CD-n található audio adatot valahogy le kell tudnunk szedni a merevlemezre. Ezt úgy tehetjük meg, ha a nyers CDDA (CD Digital Audio) adatot WAV formátumú állományokba mentjük.
A sysutils/cdrtools csomag részeként elérhető cdda2wav segédprogrammal tudjuk a CD-ken levő audio és a hozzájuk tartozó egyéb információkat leszedni.
A meghajtóban levő CD teljes tartalmát (root felhasználóként) a következő parancs kiadásával lehet (sávonként) különálló WAV állományokba menteni:
# cdda2wav -D 0,1,0 -B
A cdda2wav ismeri az ATAPI (IDE) CD-meghajtókat, használatukhoz a SCSI egység sorszáma helyett az eszköz nevét kell megadni. Tehát például így szedjük le egy IDE-meghajtóról a 7. sávot:
# cdda2wav -D /dev/acd0 -t 7
A -D 0,1,0
a
0,1,0 sorszámú SCSI
eszközre utal, ami megfelel cdrecord
-scanbus parancs eredményének.
Az egyes sávok lementéséhez a
-t
kapcsoló
használható:
# cdda2wav -D 0,1,0 -t 7
A példa szerint a zenei CD-ről a hetedik sávot szedjük le. Egyszerre több sávot, például az elsőtől a hetedikig, egy tartomány megadásával menthetünk le:
# cdda2wav -D 0,1,0 -t 1+7
A dd(1) segédprogram is használható ATAPI eszközökön levő hangsávok kimentéséhez. Ennek lehetőségéről részletesebben a 18.6.5 Szakaszban olvashatunk.
Az MP3 állomány tömörítésére manapság a legtöbben a lame elnevezésű kódolót választják. A portfában a lame az audio/lame helyen található meg.
Az előbb kimentett WAV állományok felhasználásával az alábbi paranccsal tudjuk átalakítani a audio01.wav állományt audio01.mp3 állománnyá:
# lame -h -b 128 \ --tt "Izé dal címe" \ --ta "Izé-mizé előadó" \ --tl "Izé-mizé album" \ --ty "2001" \ --tc "Leszedte és tömörítette: Izé" \ --tg "Műfaj" \ audio01.wav audio01.mp3
A 128 kbites tömörítés a
gyakorlatban leginkább használt
kódolási arány, sokan azonban a sokkal jobb
minőségű 160 vagy 192 kbites
tömörítést szeretik. Minél
nagyobb a kódolási arány, annál
több helyet fog foglalni a keletkező MP3
állomány — habár a
minősége is jobb lesz. A -h
kapcsoló alkalmazásával tudjuk
aktivizálni a “jobb minőségű de
valamivel lassabb” módot. A --t
kezdetű paraméterek ID3 tageket adnak meg, amelyek
segítségével az MP3
állományokba rájuk vonatkozó
információkat tudunk beágyazni. A
tömörítés további
beállításairól a
lame man oldalán
tájékozódhatunk.
Ha MP3 formátumú állományokat szeretnénk audio CD-re írni, akkor ehhez először tömörítetlen WAV formátumba kell ezeket alakítanunk. Az XMMS és az mpg123 is egyaránt lehetőséged ad az MP3 állományok kitömörítésére.
Lemezre írás az XMMS-sel:
Indítsuk el az XMMS alkalmazást.
Az XMMS menüjének felhozásához kattinsunk jobb gombbal az ablakjára.
Válasszuk az Options almenüben található Preference menüpontot.
Változtassuk meg az “Output Plugin” beállítást a “Disk Writer Plugin” értékre.
Nyomjunk a Configure gombra.
Írjuk be (vagy válasszuk ki a Browse gombbal) a könyvtárat, ahová majd a kitömörített állományok kerülnek.
Az eddig megszokottak szerint töltsük be az XMMS-be az MP3 állományt, állítsuk 100%-ra a hangerőt és kapcsoljuk ki a hangszínszabályzót (EQ, equalizer).
Nyomjuk le a Play gombot — úgy fog tűnni, mintha az XMMS játszaná az MP3 állományt, de nem hallunk semmit. Ekkor a tartalmát állományba menti.
Mikor befejeztük a kitömörítést, ne felejtsük el visszaállítani az “Output Plugin” értékét az alapértelmezettre.
Írás a szabványos kimenetre az mpg123-mal:
Futtassuk le a mpg123 -s audio01.mp3 > audio01.pcm parancsot.
Az XMMS az állományokat WAV formátumban írja, miközben az mpg123 nyers PCM hangadatokat képez belőlük. A cdrecord használata során mind a két formátumból hozhatóak létre audio CD-k. A nyers PCM a burncd(8) programmal használható. Amikor WAV állományokkal dolgozunk, minden egyes sáv elején egy apró kattanást hallhatunk: ez a WAV állomány fejléce lesz. A (audio/sox portból vagy csomagból telepíthető) SoX segédprogrammal a WAV formátumú állományok fejléce pillanatok alatt eltávolítható:
% sox -t wav -r 44100 -s -w -c 2 track.wav track.raw
A CD-írók FreeBSD alatti használatával kapcsolatban olvassuk el a 18.6 Szakaszt.
A videolejátszás egy nagyon friss és gyorsan fejlődő alkalmazási terület. Legyünk türelmesek, ez nem minden fog annyira könnyen menni, mint a hangok esetében.
A kezdéshez nem árt tudnunk, hogy a videokártyánk milyen gyártmányú és milyen chipet használ. Míg az Xorg és az XFree86 számos különféle videokártyát ismer, csupán töredékükkel lehet jó lejátszási teljesítményt előhozni. Az X11 futtatása közben az xdpyinfo(1) parancs kiadásával kérdezhetjük le az X szervertől a kártyánk használatával elérhető kiterjesztéseket.
Érdemes a kezünk ügyében tartani egy rövidke MPEG formátumú állományt, amellyel majd ki tudjuk próbálni a különféle lejátszókat és azok beállításait. Mivel egyes DVD lejátszók alapértelmezés szerint a /dev/dvd helyen keresik a lejátszandó DVD eszközt, vagy egyszerűen csak így írták meg ezeket, mindenképpen hasznos lehet, ha szimbolikus linkeket hozunk létre a megfelelő eszközökre:
# ln -sf /dev/acd0 /dev/dvd # ln -sf /dev/acd0 /dev/rdvd
A devfs(5) működése miatt azonban ezek a kézzel létrehozott linkek az újraindítás után már nem maradnak meg. A szimbolikus linkeket a rendszer minden egyes indulásakor úgy tudjuk automatikusan létrehozni, hogyha az /etc/devfs.conf állományba felvesszük az alábbi sort:
link acd0 dvd link acd0 rdvd
Emellett a DVD-k titkosításának feloldása, mely a DVD-meghajtók speciális funkcióit igényli, a DVD eszközökön írási jogot is igényel.
Az X11 osztott memóriát kezelő felületének gyorsításához javasolt néhány sysctl(8) változó értékének megnövelése is:
kern.ipc.shmmax=67108864 kern.ipc.shmall=32768
Több különböző úton lehet X11 alatt videókat nézni, de ennek tényleges módját igazából a rendelkezésre álló hardver határozza meg. Az itt leírt módszerek által kihozható minőség hardverenként eltérhet. Másodsorban a videók megjelenítése az X11-ben az utóbbi időben igen nagy hangsúlyt kapott, ezért az Xorg és az XFree86 minden egyes változatával jelentősen javulhat a helyzet ezen a téren.
A videók megjelenítésére használt gyakori felületek:
X11: az X11 normális kimenete osztott memórián keresztül
XVideo: az X11 felületének kiterjesztése, ami tetszőleges X11 által kirajzolható objektum esetén támogat videót
SDL: a Simple Directmedia Layer
DGA: a Direct Graphics Access (közvetlen grafikus hozzáférés)
SVGAlib: alacsonyszintű konzolos grafikus réteg
Az Xorg és az XFree86 4.X rendelkezik egy XVideo (avagy Xvideo, Xv, xv) elnevezésű kiterjesztéssel, amelyen keresztül egy speciális gyorsítás segítségével a kirajzolható objektumokban közvetlenül meg tudunk jeleníteni videókat. Ezzel a kiterjesztéssel még a gyengébb gépeken is nagyon jó minőségű lejátszást tudunk elérni.
A kiterjesztés működéséről az xvinfo parancs kiadásával győződhetünk meg:
% xvinfo
Ha a parancs eredménye ehhez hasonló, akkor a kártyánk támogatja az XVideót:
X-Video Extension version 2.2 screen #0 Adaptor #0: "Savage Streams Engine" number of ports: 1 port base: 43 operations supported: PutImage supported visuals: depth 16, visualID 0x22 depth 16, visualID 0x23 number of attributes: 5 "XV_COLORKEY" (range 0 to 16777215) client settable attribute client gettable attribute (current value is 2110) "XV_BRIGHTNESS" (range -128 to 127) client settable attribute client gettable attribute (current value is 0) "XV_CONTRAST" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_SATURATION" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_HUE" (range -180 to 180) client settable attribute client gettable attribute (current value is 0) maximum XvImage size: 1024 x 1024 Number of image formats: 7 id: 0x32595559 (YUY2) guid: 59555932-0000-0010-8000-00aa00389b71 bits per pixel: 16 number of planes: 1 type: YUV (packed) id: 0x32315659 (YV12) guid: 59563132-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x30323449 (I420) guid: 49343230-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x36315652 (RV16) guid: 52563135-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x3e0, 0x7c00 id: 0x35315652 (RV15) guid: 52563136-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x7e0, 0xf800 id: 0x31313259 (Y211) guid: 59323131-0000-0010-8000-00aa00389b71 bits per pixel: 6 number of planes: 3 type: YUV (packed) id: 0x0 guid: 00000000-0000-0000-0000-000000000000 bits per pixel: 0 number of planes: 0 type: RGB (packed) depth: 1 red, green, blue masks: 0x0, 0x0, 0x0
Az XVideo nem mindegyik implementációjában vannak jelen a felsorolt formátumok (YUV2, YUV12 stb.), ami viszont néhány lejátszó számára akadályokat jelenthet.
Amennyiben viszont ezt látjuk:
X-Video Extension version 2.2 screen #0 no adaptors present
Akkor a kártyánk nem rendelkezik XVideo támogatással.
Ha az XVideo nem támogatott a kártyánk számára, akkor az csupán csak annyit jelent, hogy a gépünknek nehéz dolga lesz a videók megjelenítéséhez szükséges számítási kapacitás kiszolgálásában. Azonban a videokártyánktól és processzorunktól függően még így is kielégítő eredményt tudunk előcsalni. Ekkor viszont minden bizonnyal érdemes lesz átolvasnunk a 7.4.3 Szakaszban, miként tudjuk növelni a teljesítményét.
A Simple Directmedia Layer, vagy SDL, eredetileg a Microsoft Windows, BeOS és UNIX közti hordozhatóságot szándékozta megvalósítani, aminek segítségével a hangot és grafikát hatékonyan használni tudó alkalmazások hozhatóak létre. Az SDL által nyújtott réteg a hardver olyan alacsonyszintű absztrakcióját öleli fel, amely gyakran még az X11 felületénél is hatékonyabb.
Az SDL a devel/sdl12 helyen található.
A közvetlen grafikus hozzáférés az X11 egy olyan kiterjesztése, ami lehetővé teszi a programok számára az X szerver megkerülését és így közvetlenül a videokártya memóriáját képesek elérni. Mivel a megosztás hatékony megvalósításához ez nagyban építkezik alacsonyszintű leképzési műveletekre, ezért az ilyet használó programokat root felhasználóként kell futtatni.
A DGA kiterjesztés a dga(1) segítségével tesztelhető és mérhető. A dga parancs kiadása után minden billentyű lenyomására megváltoztatja a képernyőn látható színeket. A kilépéshez a q billentyűt kell lenyomni.
Ebben a szakaszban a FreeBSD Portgyűjteményéből a videók lejátszására alkalmas programokat vesszük számba. A videolejátszás nagyon gyorsan fejlődő terület, ezért az itt említett különböző alkalmazások képességei az itt leírtaktól némileg eltérhetnek.
Először is fontos tisztában lennünk azzal, hogy számos FreeBSD-n futó videoalkalmazás eredetileg linuxos alkalmazásként indult, és közülük sokan még csak béta minőségűek. Íme a FreeBSD-n is megtalálható videocsomagokkal kapcsolatos néhány olyan gond, amivel esetleg összefuthatunk:
Az egyik alkalmazás nem képes visszajátszani olyan állományt, amit egy másik alkalmazás hozott létre.
Az alkalmazás nem képes visszajátszani a saját maga által készített állományokat.
Ugyanazon alkalmazás két különböző gépen, amikor mind a kettőn az adott konfigurációra fordítjuk le, ugyanazt az állományt másképpen játssza vissza.
Egy olyan látszólag egyértelmű szűrő, mint például a kép átméretezése, a hibás átméretező rutin miatt nagyon csúnya eredményt produkál.
Az alkalmazás gyakran elszáll.
A porthoz nem találjuk a dokumentációt, egyedül csak az interneten vagy a port work könyvtárában van.
Sok alkalmazás a “linuxizmus” jeleit is hordozza, vagyis gondok adódhatnak abból, hogy a szerzők az alkalmazások működtetéséhez a Linux rendszermag és a különféle terjesztésekben megtalálható módosított szabványos könyvtárak különlegességeit használják ki. Ezeket a portok karbantartói nem mindig észlelik és javítják ki, ami miatt az alábbiak bármikor bekövetkezhetnek:
A processzor jellemzőit a /proc/cpuinfo állományon keresztül állapítják meg.
A szálak helytelen használatuk miatt a program befejeződésekor összeakadnak.
Az alkalmazással gyakran együtt használt egyéb alkalmazások még nem nincsenek benne a FreeBSD Portgyűjteményében.
Az ilyen alkalmazások fejlesztői a hordozhatóság javításával és a problémák megoldásával kapcsolatban eddig mindig igyekeztek együttműködni a portok karbantartóival.
Az MPlayer az utóbbi időben felbukkant, gyorsan fejlődő videolejátszó. Fejlesztőinek célja a sebesség és rugalmasság a Linux, illetve más UNIX rendszereken. A kezdeményezés abból fakadt, hogy a fejlesztés mögött álló csapat alapítójának elege lett az akkoriban elérhető lejátszók teljesítményéből. Mondhatnánk, hogy ez a program feláldozta a grafikus felületet az áramvonalas kialakításért, azonban ha hozzászokunk a parancssori beállításokhoz és a billentyűkön keresztüli vezérléshez, remekül működik.
Az MPlayer a multimedia/mplayer helyen található. A program a fordítási folyamat során elvégez számos hardverellenőrzést, aminek eredményeképpen az egyik rendszeren fordított program nem vihető a másikra. Ezért különösen fontos portból fordítani és nem pedig bináris csomagot használni. Mindezek mellett a Makefile állományban még számos, a make parancsnak a fordítás megkezdésekor átadható beállítást találhatunk:
# cd /usr/ports/multimedia/mplayer # make N - O - T - E Take a careful look into the Makefile in order to learn how to tune mplayer towards you personal preferences! For example, make WITH_GTK1 builds MPlayer with GTK1-GUI support. If you want to use the GUI, you can either install /usr/ports/multimedia/mplayer-skins or download official skin collections from http://www.mplayerhq.hu/homepage/dload.html
Az üzenet fordítása:
F - I - G - Y - E - L - E - M Az mplayert személyes igényeinkhez úgy tudjuk igazítani, ha figyelmesen átnézzük a Makefile állományt! Például a WITH_GTK1 megadásával az MPlayer GTK1 alapú grafikus felülettel jön létre. A grafikus felület használatához telepítenünk kell a /usr/ports/multimedia/mplayer-skins portot is, vagy letölteni a hivatalos skingyűjteményt a http://www.mplayerhq.hu/homepage/dload.html oldalról.
A port alapbeállításai a legtöbb felhasználó számára megfelelőek, habár az Xvid kódek használatához meg kell adnunk a WITH_XVID beállítást. Rajta kívül még az alapértelmezett DVD eszközt is érdemes megadni a WITH_DVD_DEVICE beállítással, amelynek alapértéke a /dev/acd0.
A leírás elkészítésének időpontjában az MPlayer portja létrehozza a HTML dokumentációt és a két végrehajtható állományt: az mplayer lejátszót és a videók újrakódolásáért felelős mencoder segédprogramot.
Az MPlayer HTML dokumentációja nagyon közlékeny, és ha az olvasó nem találná valamelyik videohardver vagy felület leírását ebben a fejezetben, akkor ez a dokumentáció mindenképpen hasznos olvasnivalónak bizonyul. Ha a UNIX-ok alatt elérhető videotámogatás leírását keressük, határozottan megéri időt szánni az MPlayer dokumentációjának alapos végigolvasására.
Az MPlayer használatához a felhasználói könyvtárunkban rendelkeznünk kell egy .mplayer elnevezésű könyvtárral. Ezt a következő paranccsal tudjuk létrehozni:
% cd /usr/ports/multimedia/mplayer % make install-user
Az mplayer parancssori paraméterei a hozzá tartozó man oldalon találhatóak meg, valamint mindezek a HTML dokumentációban még részletesebben. Ebben a szakaszban csupán néhányukat mutatjuk be.
Egy állomány, mint például a
tesztvideo.avi,
a -vo
beállításával
játszható le a különböző
felületeken:
% mplayer -vo xv tesztvideo.avi
% mplayer -vo sdl tesztvideo.avi
% mplayer -vo x11 tesztvideo.avi
# mplayer -vo dga tesztvideo.avi
# mplayer -vo 'sdl:dga' tesztvideo.avi
Érdemes az itt felsorolt konfigurációk mindegyikét kipróbálni, mivel az egymáshoz mért teljesítményük rengeteg tényezőn múlik, de közülük talán maga a hardver a legjelentősebb.
A DVD-k lejátszásához
cseréljük ki a
tesztvideo.avi
paramétert a
dvd://N -dvd-device
ESZKÖZ
paraméterekkel, ahol az N
a lejátszandó fejezet sorszáma,
valamint az
ESZKÖZ
a DVD-hez tartozó eszközleíró.
Például így tudjuk elkezdeni
/dev/dvd eszközről a 3.
fejezet lejátszását:
# mplayer -vo xv dvd://3 -dvd-device /dev/dvd
Megjegyzés: A port fordítása során a WITH_DVD_DEVICE paraméter segítségével megadható az alapértelmezett DVD eszköz, amely alapból a /dev/acd0. Erről többet a port Makefile állományában találhatunk.
A leállításhoz, szüneteltetéshez, továbblépéshez és többi hasonló funkcióhoz tartozó billentyűket a mplayer -h parancs kimenetéből vagy a man oldal elolvasásából deríthetjük ki.
A lejátszáshoz tartozó
néhány viszonylag fontos
beállítás: az -fs
-zoom
teljesképernyős módra
vált, valamint a -framedrop
segít növeli a
teljesítményt.
A lejátszáskor kiadandó parancs túlburjánzását el tudjuk kerülni, ha létrehozunk egy .mplayer/config állományt és itt állítjuk be a gyakori opciókat:
vo=xv fs=yes zoom=yes
Végezetül megemlítjük, hogy az mplayer segítségével a DVD-n található fejezeteket ki tudjuk menteni .vob állományokba. A DVD második fejezetének kimentéséhez gépeljük be ezt:
# mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd
A parancs eredményeképpen keletkező out.vob állomány formátuma MPEG lesz, amit a fejezetben bemutatott további csomagokkal tudunk feldolgozni.
A mencoder használatának megkezdése előtt javasolt alaposan beleásnunk magunkat a HTML dokumentációba és megismerkednünk az alapvető beállításaival. Van külön man oldala is, azonban a HTML leírás nélkül önmagában ez nem túl sokat ér. Megszámlálhatatlan úton és módon növelhető benne a minőség, csökkenthető a kódolási arány, változtatható a formátum, és ezen apró finomságok felelősek a jó vagy éppen a rossz teljesítményért. A témába néhány példa bemutatásával igyekszünk beavatni az olvasót. Először vegyünk egy egyszerű másolást:
% mencoder bemenő.avi -oac copy -ovc copy -o eredmény.avi
A parancssori paraméterek helytelen
kombinációja olyan állományokat
eredményezhet, amelyeket még maga az
mplayer sem képes
lejátszani. Ezért ha csak le akarunk szedni
egy állományt, akkor maradjunk meg az
mplayer -dumpfile
opciójánál.
A bemenő.avi állományt MPEG4 video- és MPEG3 hangtömörítéssel (amihez kell majd a audio/lame) így tudjuk lekódolni:
% mencoder bemenő.avi -oac mp3lame -lameopts br=192 \ -ovc lavc -lavcopts vcodec=mpeg4:vhq -o eredmény.avi
Ezzel az mplayer és xine programok számára is egyaránt lejátszható állomány jön létre.
A DVD fejezeteit úgy tudjuk közvetlenül
kódolni, ha a parancssorban kicseréljük a
bemenő.avi
állományt az dvd://1 -dvd-device
/dev/dvd
beállításra, illetve
ha a programot root
felhasználóként futtatjuk. De mivel
elsőre általában ritkán vagyunk
elégedettek a kódolással,
érdemes először inkább lementeni az
egész fejezetet egy állományba, majd
azon dolgozni.
A xine egy széles hatókörű projekt, amelynek nem csak az a célja, hogy egy “mindenes” videolejátszó alkalmazást fejlesszenek, hanem az is, hogy újrahasznosítható függvénykönyvtárakat és egy moduláris felépítésű programot hozzanak létre, amely kiegészítűkkel bűvíthetű. A multimedia/xine helyen portként, valamint csomagként is elérhető.
A xine itt-ott még valamelyest durva, de mindenképpen egy dicséretes kezdeményezés. A xine a gyakorlatban erős processzort és mellé gyors videokártyát kíván, vagy pedig az XVideo kiterjesztés támogatását. A grafikus felhasználói felülete ugyan használható, de még kicsit esetlen.
Az írás pillanatában a xine mellé még nem kapunk olyan modult, amivel le tudnánk játszani a CSS kódolású DVD-ket. Léteznek azonban olyan külsős modulok, amelyekkel meg lehet valósítani ezt a feladatot, azonban a FreeBSD Portgyűjteményében ezeket még nem találhatjuk meg.
A xine az MPlayerhez képes többet tesz a felhasználóért, azonban ezzel egyidőben el is veszi tőle a finomhangolás lehetőségét. A xine legjobban az XVideót ismerő felületeken teljesít.
A xine alapértelmezés szerint grafikus felülettel indul, ahol a menük segítségével tudunk megnyitni egy adott állományt:
% xine
Vagy a grafikus felület használata nélkül kiadhatjuk közvetlenül is az állomány lejátszását:
% xine -g -p kedvencmozim.avi
A transcode nem egy újabb lejátszó, hanem a video- és audio állományok újratömörítésére használható programok gyűjteménye. A transcode segítségével a szabványos be- és kimeneten keresztül parancssoros programokkal képesek vagyunk videoállományokat összefűzni, megjavítani.
A multimedia/transcode port fordítása során temérdek beállítást adhatunk meg, amelyek közül az alábbi parancsban foglaljuk össze az általunk javasolandókat:
# make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \ WITH_MJPEG=yes -DWITH_XVID=yes
Ezek a beállítások a legtöbb felhasználó számára elegendőek.
A transcode képességeinek illusztrálásához lássunk egy példát, amiben megmutatjuk, hogyan kell egy DivX állományt PAL szabványú MPEG-1 formátumú (PAL VCD) állománnyá alakítani:
% transcode -i bemenő.avi -V --export_prof vcd-pal -o output_vcd % mplex -f 1 -o eredmény_vcd.mpg eredmény_vcd.m1v eredmény_vcd.mpa
Az eredményül keletkező eredmény_vcd.mpg MPEG állomány akár már játszható is MPlayerrel. Ha az állományt kiírjuk egy írható CD-re, akkor ezzel video CD-t is létre tudunk hozni, amihez viszont szükségünk van mind a multimedia/vcdimager és sysutils/cdrdao programokra.
A transcode parancsnak van saját man oldala, azonban ehelyett a transcode wikiben érdemes inkább további információkat és példákat keresni.
A FreeBSD-hez tartozó videoszoftverek nagyon gyorsan fejlődnek. Könnyen elképzelhető, hogy az imént tárgyalt problémák legtöbbje a közeljövőben hamarosan megoldódik. Addig viszont bárkinek, aki a legtöbbet szeretné kihozni a FreeBSD audio- és video lehetőségeiből, rengeteg leírás és dokumentáció elolvasása alapján kell összecsiszolnia a különböző beállításokat, és csak néhány alkalmazás mellett érdemes kitartania. Ebben a szakaszban igyekszünk segíteni az olvasónak megtalálni az ilyen jellegű információkat.
Az MPlayer dokumentációja szakmai szempontból igen közlékeny. Ezt mindenkinek érdemes elolvasnia, aki a későbbiekben magasabb szakmai szinten akar foglalkozni a UNIX-os videózással. Az MPlayer levelezési listája viszont alig tolerálja a dokumentációt rendesen el nem olvasó emberek kérdéseit, ezért minden egyes hiba bejelentése előtt lehetőleg rendesen nézzük át a dokumentáció odavágó részeit.
A xine HOGYAN egyik külön fejezetében az összes lejátszó esetén érvényesíthető teljesítménynövelési módszereket mutat be.
Végül íme néhány ígéretes alkalmazás, amelyeket érdemes kipróbálnunk:
Avifile, ami egyben a multimedia/avifile port
Ogle, ami a multimedia/ogle port
multimedia/dvdauthor, egy nyílt forráskódú DVD-tartalom szerkesztő
A TV kártyák segítségével kábeles vagy antennás televízióadásokat tudunk nézni a számítógépünkön. A legtöbbjük RCA vagy S-video bemenettel rendelkezik, valamint néhányukon még FM rádiókészülék is megtalálható.
A FreeBSD a bktr(4) meghajtón keresztül a Brooktree Bt848/849/878/879, illetve a Conexant CN-878/Fusion 878a típusú, PCI-os videorögzító chipeket ismeri. Ügyelnünk kell arra, hogy a kártyánkon levő vevőkészülék is használható legyen, amit pedig a bktr(4) man oldalán megtalálható támogatott eszközök listájából ellenőrizhetünk.
A kártyánk használatához be kell töltenünk a bktr(4) meghajtót, ami csupán annyiból áll, hogy a /boot/loader.conf állományhoz hozzáadunk egy ilyen sort:
bktr_load="YES"
Másik lehetőségünk, ha a TV kártya támogatását statikusan beleépítjük a rendszermagba. Ha ezt a megoldást választjuk, a következő sorokat kell elhelyeznünk a rendszermag beállításait tartalmazó állományba:
device bktr device iicbus device iicbb device smbus
A fentebb látható egyéb eszközök megadása azért szükséges, mert a kártya részegységei egy I2C buszon csatlakoznak egymáshoz. Miután beillesztettük a szükséges változtatásokat, fordítsuk le és telepítsük az új rendszermagot.
A támogatás hozzáadása után újra kell indítanunk a számítógépünket. A rendszerindítási folyamat során meg kell jelennie a TV kártyánknak is, valahogy így:
bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0 iicbb0: <I2C bit-banging driver> on bti2c0 iicbus0: <Philips I2C bus> on iicbb0 master-only iicbus1: <Philips I2C bus> on iicbb0 master-only smbus0: <System Management Bus> on bti2c0 bktr0: Pinnacle/Miro TV, Philips SECAM tuner.
Természetesen a fenti üzenetek az aktuális hardvereszközünknek megfelelően némileg eltérhetnek. Ellenőrizzük, hogy a vevőkészüléket helyesen ismerte-e fel a rendszer. Ha nem sikerült volna, akkor a sysctl(8) és a rendszermag beállításai segítségével még mindig van lehetőségünk állítani rajta. Például, ha egy Philips SECAM vevőkészüléket akarunk beállítani, akkor a rendszermag beállításaihoz még hozzá kell adni a következő sort:
options OVERRIDE_TUNER=6
vagy erre közvetlenül használhatjuk a sysctl(8) programot is:
# sysctl hw.bt848.tuner=6
A bktr(4) man oldalán és a /usr/src/sys/conf/NOTES állományban megtalálhatjuk a többi beállítás részletes leírását is.
A TV kártyánk tényleges használatához azonban még a következő alkalmazások valamelyikét is telepítenünk kell:
A multimedia/fxtv használatával ablakban tévézhetünk, valamint lehetőségünk van kép/audio/video kimentésére is.
A multimedia/xawtv az fxtv-hez hasonló lehetőségekkel bíró tévénéző alkalmazás.
A misc/alevt dekódolja és megjeleníti a műsorhoz kapcsolódó Videotex/Teletext üzeneteket.
Az audio/xmradio segítségével az egyes TV kártyákon megtalálható FM rádiókészülékeket tudjuk használatba venni.
Az audio/wmtune a rádióvevőkhöz használható hasznos grafikus alkalmazás.
Ebben a témában a FreeBSD Portgyűjteményében további érdekes alkalmazások találhatóak még.
Ha bármilyen gond adódna a TV kártyánkkal kapcsolatosan, akkor először mindenképpen érdemes megnézni, hogy a rajta levő videorögzítő chipet és vevőkészüléket a bktr(4) meghajtó ténylegesen ismeri-e, illetve hogy jól állítottuk-e be. A TV kártyákra irányuló különféle egyéb kérdések és segítség tekintetében érdemes lehet még levelet küldeni a freebsd-multimedia címére is.
A FreeBSD lapolvasókhoz a SANE (Scanner Access Now Easy) elnevezésű API (alkalmazásfejlesztői felület) segítségével képes hozzáférni, amelyet a Portgyűjteményben találhatunk meg. A lapolvasást végző hardvereszközök használatához a FreeBSD a SANE mellett még néhány eszközmeghajtóra is támaszkodik.
A FreeBSD egyaránt ismeri az SCSI és USB csatlakoztatású lapolvasókat is. Még mielőtt nekikezdenénk a lapolvasó beállításához, bizonyosodjuk meg róla, hogy a SANE támogatja. A SANE által ismert eszközök felsorolásában ellenőrizhetjük a lapolvasónk támogatottságának állapotát. A FreeBSD 8.X előtti kiadásaiban ezenkívül még a uscanner(4) man oldalon is láthatjuk az ismert USB-s lapolvasók listáját.
A korábbiak értelmében tehát mind a SCSI, mind pedig a USB felületen csatlakozó eszközök támogatottak. A lapolvasónknak megfelelően eltérő eszközmeghajtók szükségesek.
A GENERIC rendszermag alapértelmezés szerint tartalmazza az USB-s lapolvasók használatához szükséges eszközmeghajtókat. Ha valamiért azonban mégis saját rendszermagot akarunk használni, akkor ne felejtsük el ellenőrizni, hogy a rendszermag beállításai között megtalálhatóak a következő sorok:
device usb device uhci device ohci device ehci
A FreeBSD 8.X előtti kiadásaiban még a következő sorra is szükségünk lesz:
device uscanner
A FreeBSD ezen változataiban a uscanner(4) eszközmeghajtón keresztül tudjuk használni az USB csatolóval rendelkező lapolvasókat. A FreeBSD 8.0 változatától kezdődően pedig ehhez a libusb(3) függvénykönyvtár nyújt közvetlen támogatást.
A megfelelően előkészített rendszermag elindítása után csatlakoztassuk az USB-s lapolvasónkat. Ez a sor fog megjelenni a rendszer üzenetpufferében (dmesg(8)):
ugen0.2: <EPSON> at usbus0
Vagy FreeBSD 7.X rendszerek esetében:
uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2
Ezek az üzenetek elárulják nekünk, hogy a lapolvasóhoz mostantól a használt FreeBSD verziótól függően a /dev/ugen0.2 vagy a /dev/uscanner0 eszközleíró tartozik. A fenti példában egy EPSON Perfection® 1650 típusú USB lapolvasót láthatunk.
Ha a lapolvasónk SCSI felületen csatlakozik, fontos tisztában lennünk azzal, hogy pontosan milyen SCSI-vezérlőn keresztül is érhetjük el, ugyanis a rajta található SCSI chipkészletnek megfelelően kell majd hangolnunk a rendszermag beállításait. A GENERIC rendszermag alapból ismeri a leggyakrabban előforduló SCSI-vezérlőket. Mindenképpen olvassuk át a NOTES nevű állományt és adjuk hozzá a rendszermag beállításaihoz a megfelelő sort. A SCSI-kártya meghajtóján kívül még az alábbi beállításokat is meg kell adnunk a rendszermagunk számára:
device scbus device pass
Ahogy sikerült a rendszermagot sikeresen lefordítani és telepíteni, a rendszer indulása során az üzenetpufferben már láthatjuk is a felismert eszközt:
pass2 at aic0 bus 0 target 2 lun 0 pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device pass2: 3.300MB/s transfers
Ha a rendszer indulásakor még nem kapcsoltuk volna be a lapolvasónkat, a camcontrol(8) parancs segítségével később külön kérhetjük a SCSI buszon található eszközök újbóli felderítését:
# camcontrol rescan all Re-scan of bus 0 was successful Re-scan of bus 1 was successful Re-scan of bus 2 was successful Re-scan of bus 3 was successful
Ekkor a lapolvasó megjelenik a SCSI eszközök felsorolásában:
# camcontrol devlist <IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0) <IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1) <AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3) <PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)
A SCSI eszközökről további leírásokat a scsi(4) és camcontrol(8) man oldalakon találhatunk.
A SANE rendszere két részre oszlik: a backendekre (graphics/sane-backends) és a frontendekre (graphics/sane-frontends). Ezek közül maguk a backendek szolgáltatják a lapolvasó hozzáférhetőségét. A SANE által ismert eszközeinek listájából kifürkészhetjük, hogy lapolvasónkat melyik backenden keresztül érhetjük el. Az eszköz megfelelő használatához döntő fontosságú megállapítani a hozzá tartozó backendet. A frontendek között találjuk meg a lapolvasást felügyelő grafikus felületeket (mint például az xscanimage).
Elsőként telepítsük a graphics/sane-backends portot vagy csomagot. Ezután ellenőrizzük, hogy a SANE felismeri a lapolvasót, és ehhez adjuk ki a sane-find-scanner parancsot:
# sane-find-scanner -q found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3
A kimenetében jelzi a felületet, amin a lapolvasó csatlakozik, valamint a hozzá tartozó eszközleírót. A gyártó neve és a termék típusa nem minden esetben jelenik meg, de ez nem is annyira fontos.
Megjegyzés: Némely USB-s lapolvasók esetén még egy firmware-t is be kell töltenünk, amiről bővebben a backendhez tartozó man oldalokon olvashatunk. Ajánlott még elolvasni a sane-find-scanner(1) és sane(7) man oldalakat is.
Most pedig nézzük meg, hogy vajon a frontend is
be tudja-e azonosítani a lapolvasónkat.
Alapértelmezés szerint a
SANE backendjéhez tartozik
még egy scanimage(1) nevű segédprogram
is, aminek segítségével listázni
tudjuk a használható eszközöket
és képeket tudunk beolvasni parancssorból.
Közülük a -L
kapcsoló
listáz:
# scanimage -L device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner
Vagy ha a 7.6.2.1 Szakaszban szereplő USB lapolvasóval nézzük:
# scanimage -L device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scanner
Ezt a kimenetet egy FreeBSD 8.X rendszeren kaptuk, ahol a 'epson2:libusb:/dev/usb:/dev/ugen0.2' az eszközhöz tartozó backendet (epson2) és eszközleírót (/dev/ugen0.2) adja meg.
Megjegyzés: Ha ennek eredményeképpen semmi sem jelenik meg, vagy a scanimage(1) látszólag nem talált semmilyen eszközt, akkor a lapolvasó azonosítása nem sikerült. Ilyen esetekben valószínűleg módosítanunk kell a backend beállításait tartalmazó állományt a használni kívánt lapolvasó eszköz szerint. A backendek beállításait a /usr/local/etc/sane.d/ könyvtárban találjuk. Ez a probléma bizonyos USB-s lapolvasók esetében jelentkezik.
Például, ha 7.6.2.1 Szakaszban használt USB-s lapolvasónkat FreeBSD 8.X alatt tökéletesen felismeri a rendszer, de a FreeBSD korábbi változatai esetén (ahol a uscanner(4) eszközmeghajtót használják) a sane-find-scanner parancs a következőket adja vissza:
# sane-find-scanner -q found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0Akkor a lapolvasót sikerült megtalálni, és láthatjuk, hogy USB-n keresztül csatlakozik és a /dev/uscanner0 eszközleíró tartozik hozzá. Most már ellenőrizhetjük a lapolvasó helyes beazonosítását is:
# scanimage -L No scanners were identified. If you were expecting something different, check that the scanner is plugged in, turned on and detected by the sane-find-scanner tool (if appropriate). Please read the documentation which came with this software (README, FAQ, manpages).Az üzenet fordítása:
Nincs azonosítható lapolvasó. Ha nem erre számítottunk, akkor ellenőrizzük, hogy az eszközt tényleg bekapcsoltuk, csatlakoztattuk és észlelte a sane-find-scanner segédprogram (amennyiben szükséges). Kérjük, olvassa el a szoftverhez tartozó dokumentációt (README, FAQ, man oldalak)!Mivel a lapolvasót nem sikerült azonosítani, át kell írnunk a /usr/local/etc/sane.d/epson2.conf állományt. A használt lapolvasó típusa EPSON Perfection 1650, ezért hozzá az epson2 backendet fogjuk használni. Ehhez feltétlenül olvassuk el a konfigurációs állományban található megjegyzéseket is. A sorokat igen könnyű átírni: tegyük megjegyzésbe az összes olyat, ahol a lapolvasónk számára nem megfelelő felületek találhatóak (a mi esetünkben tehát megjegyzésbe fogjuk tenni az összes scsi szóval kezdődő sort, hiszen nekünk USB-s eszközünk van), majd az állomány végére írjuk be a használni kívánt felületet és eszközleírót. Ez ebben a konkrét esetben ennyi lenne:
usb /dev/uscanner0A megfelelő formátum és a további részletek leírásához ne felejtsük el azonban elolvasni a backend konfigurációs állományában felbukkanó megjegyzéseket és az ide tartozó man oldalt sem. Most már megpróbálkozhatunk újra a lapolvasó azonosításával:
# scanimage -L device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scannerLáthatjuk, hogy az USB-s lapolvasónkat sikerült azonosítani. Nem számít, ha esetleg nem egyezne a valósággal a gyártó vagy a típus megjelölése. Itt a valóban lényeges elem az `epson:/dev/uscanner0' mező lesz, melynek a backend és az eszközleíró nevét kell helyesen tartalmaznia.
A beállítást akkor zárhatjuk le, miután a scanimage -L parancs képes észlelni a lapolvasót. A eszköz ekkor már készen áll a beolvasásra.
Míg a scanimage(1) parancssorból teszi lehetővé számunkra a lapolvasást, addig érdemesebb a képek olvasását egy grafikus felületen keresztül végeznünk. A SANE egy egyszerű, ám hatékony grafikus felületet ajánl fel ehhez, ez az xscanimage (graphics/sane-frontends).
Az Xsane (graphics/xsane) egy másik népszerű grafikus frontend. Segítségével speciális lehetőségeket is kihasználhatunk, mint például többféle képolvasási mód (fénymásoló, fax stb.), színkorrekció, kötegelt beolvasás, stb. Mind a két említett alkalmazás elérhető a The GIMP bővítményeként is.
A korábban tárgyalt műveletek mindegyikét root felhasználóként tudjuk csak végrehajtani. Azonban előfordulhat, hogy más felhasználók számára is szeretnénk hozzáférést biztosítani a lapolvasóhoz. Ehhez az érintett felhasználóknak a lapolvasóhoz tartozó eszközleíróhoz olvasási és írás joggal kell rendelkezniük. Például az USB-s lapolvasónk a /dev/ugen0.2 eszközleírót használja, amely valójában csak a /dev/usb/0.2.0 eszközleíróra mutató szimbolikus link (ezt gyorsan le tudjuk ellenőrizni, ha megnézzük a /dev könyvtár tartalmát). Az eszközleíró és a rá mutató szimbolikus link rendre a wheel és operator csoportok birtokában van. Ha a pgj nevű felhasználót felvesszük ezekbe a csoportokba, akkor ezáltal hozzá tud majd férni a lapolvasóhoz. Nyilvánvaló biztonsági megfontolásokból azonban kétszer is javasolt meggondolni, mely felhasználókat mely csoportokba vesszük fel, különösen, ha wheel csoportról van szó. Ennél valamivel jobb megoldást kínál, ha létrehozunk külön az USB eszközök használatára vonatkozó csoportot és a lapolvasót ezen csoport tagjainak számára elérhetővé tesszük.
Tehát erre a célra például megalkotjuk a usb csoportot. Ehhez első lépésként a pw(8) parancs segítségével hozzuk létre magát a csoportot:
# pw groupadd usb
Ezután a /dev/usb/0.2.0 eszközleírót és a rá mutató /dev/ugen0.2 szimbolikus linket kell az usb csoport részére elérhetővé tennünk, a megfelelő írási engedélyekkel (0660 vagy 0664) együtt, mivel alapértelmezetten csak a tulajdonosuk (root) tudja írni ezeket. Mindezt úgy tudjuk megtenni, ha az /etc/devfs.rules állományhoz hozzáadjuk a megfelelő sorokat:
[system=5] add path ugen0.2 mode 0660 group usb add path usb/0.2.0 mode 0660 group usb
A FreeBSD 7.X változatok esetén valószínűleg a következő sorokra lesz szükségünk a /dev/uscanner0 eszközleíróhoz:
[system=5] add path uscanner0 mode 0660 group usb
Ezt követően az /etc/rc.conf állományba írjuk be az alábbi sort és utána indítsuk újra a számítógépet:
devfs_system_ruleset="system"
Az itt szereplő sorok pontos jelentéséről a devfs(8) man oldaláról tájékozódhatunk.
Ezután már csak fel kell vennünk azokat a felhasználókat a usb csoportba, amelyeknek engedélyezzük a lapolvasó használatát:
# pw groupmod usb -m pgj
A további részletekről a pw(8) man oldalon olvashatunk.
A rendszermag a FreeBSD operációs rendszer lelke. Felelős a memória kezelésért, a biztonsági szabályozások betartatásáért, a hálózat működtetéséért, a lemezhozzáférésért és sok minden másért is. Miközben maga a FreeBSD egyre jobban konfigurálható dinamikusan, addig alkalmanként elegedhetetlen, hogy újrakonfiguráljuk és újrafordítsuk a rendszermagot.
A fejezet elolvasása során megismerjük:
miért lehet szükségünk egy saját rendszermagra;
hogyan készítsünk konfigurációs állományt a rendszermaghoz, vagy hogyan módosítsunk egy már létezőt;
hogyan használjuk a rendszermag konfigurációs állományát egy új rendszermag lefordítására és létrehozására;
hogyan telepítsük az új rendszermagot;
hogyan orvosoljuk a felmerülő problémákat.
A fejezetben az összes példaként bemutatásra kerülő parancsot root felhasználóként kell kiadni a sikeres végrehajtásukhoz.
A FreeBSD eredetileg ún. “monolitikus” rendszermaggal rendelkezett. Ez azt jelenti, hogy a rendszermag egyetlen nagy program volt, ami előre rögzített eszközöket ismert, és ha meg akartuk változtatni a rendszermag működését, akkor új rendszermagot kellett fordítanunk, majd újra kellett indítanunk vele a számítógépet.
Manapság azonban a FreeBSD már inkább afelé a megközelítés felé halad, ahol a rendszermag funkcionalitásának nagy részét működés közben az igények szerint betölthető és eltávolítható modulok adják. Ezzel lehetővé válik, hogy a rendszermag gyorsan illeszkedjen az újonnan megjelenő hardvereszközökhöz (mint például a laptopok PCMCIA-kártyáihoz), vagy olyan új funkciókat tegyünk a rendszermaghoz, amelyek a fordításánál nem voltak feltétlenül szükségesek. Ezt a modellt nevezik moduláris rendszermagnak.
Ennek ellenére még mindig elkerülhetetlen, hogy esetenként ne legyen szükség a rendszermag statikus testreszabására. Ez a legtöbb esetben azzal magyarázható, hogy vannak olyan funkciók, amelyek túlságosan is mélyen helyezkednek el a rendszermagban, ezáltal nem tölthetőek be dinamikusan. Máskor viszont egyszerűen azért nem lehetséges, mert még senki sem szánt időt az adott funkcióhoz tartozó, dinamikusan betölthető modul elkészítésére.
Egy saját rendszermag készítése azon legfontosabb próbatételek egyike, melyet egy haladó BSD felhasználónak ki kell állnia. Ez a folyamat, habár némileg időigényes, számos előnyt tartogat FreeBSD rendszerünk számára. Eltérően egy GENERIC (általános) rendszermagtól, amely rengeteg hardvert támogat, egy saját rendszermag csak a saját PC-nk hardverét ismeri. Ennek több előnye is van, például:
A rendszerünk gyorsabban indul. Mivel a rendszermag csak azokat a hardvereket fogja keresni, melyek a rendszerünkben megtalálhatóak, jelentős mértékben le tud csökkeni az induláshoz szükséges idő.
Kisebb memóriahasználat. Egy saját rendszermag a szükségtelen részek és eszközmeghajtók elhagyása miatt gyakran kevesebb memóriát emészt fel, mint a GENERIC rendszermag. Ez azért is fontos, mert a rendszermag mindig benn van a fizikai memóriában, és ezzel az alkalmazások elől veszi el a helyet. Emiatt egy saját rendszermag elkészítése különösen hasznos lehet egy kevés fizikai memóriával rendelkező rendszeren.
További hardverek támogatása. A saját rendszermagunkba olyan eszközök támogatását is beletehetjük, amelyek nem szerepelnek a GENERIC rendszermagban, mint például a hangkártyákét.
Mielőtt belevetnénk magunkat a rendszermag beállításába, érdemes egy leltárt készíteni a gépünkben található különböző eszközökről. Ahol a FreeBSD nem elsődlegesen használt operációs rendszer, ott ehhez elegendő megnézni a jelenlegi rendszerben található elemeket. Például a Microsoft rendszerek Eszközkezelőjében (Device Manager) általában az összes eszköz fontosabb adatait megtaláljuk. Magát az Eszközkezelőt pedig a Vezérlőpultból (Control Panel) érhetjük el.
Megjegyzés: A Microsoft Windows egyes verzióiban a Rendszer (System) ikonjára kattintva megkapjuk azt a képernyőt, ahonnan közvetlenül el tudjuk érni az Eszközkezelőt.
Ha viszont nincs másik operációs rendszer a gépünkön, akkor magunknak kell mindezeknek utánanéznünk. Erre az egyik alkalmas módszer a dmesg(8) és a man(1) parancsok használata. A FreeBSD-ben található legtöbb meghajtónak van saját man oldala, ami tartalmazza az általuk kezelt eszközök listáját, illetve így a rendszerindítás során észlelt hardvereket nézhetjük vissza. Például az alábbi sorok arra utalnak, hogy a psm meghajtó megtalálta a gépünkhöz tartozó egeret:
psm0: <PS/2 Mouse> irq 12 on atkdbc0 psm0: [GIANT-LOCKED] psm0: [ITHREAD] psm0: model Generic PS/2 mouse, device ID 0
Ezután ezt a meghajtót vagy a rendszermagba kell beépítenünk, vagy pedig a loader.conf(5) állományon keresztül betöltenünk.
Bizonyos esetekben a dmesg az eszközök felkutatásának eredményei helyett csak a rendszer üzeneteit mutatja. Ilyen helyzetekben a teljes kimenet a /var/run/dmesg.boot állományban tekinthető meg.
A hardverek manuális felderítésének módja a pciconf(8) segédprogram kimenetének böngészése, ami valamivel részletesebb eredményt ad. Mint például:
ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00 vendor = 'Atheros Communications Inc.' device = 'AR5212 Atheros AR5212 802.11abg wireless' class = network subclass = ethernet
A pciconf -lv
paranccsal
kapott kimenet ezen része azt mutatja, hogy az
ath
meghajtó talált egy vezeték
nélküli Ethernet eszközt. Innen a man
ath paranccsal
érhetjük el a ath(4) man oldalát.
A man(1) a -k
paraméter
megadásával további hasznos
információkkal is tud szolgálni. A
fentiekből kiindulva például a
következő paranccsal:
# man -k Atheros
le tudjuk kérdezni azokat a man oldalakat, amelyek tartalmazzák az adott szót:
ath(4) - Atheros IEEE 802.11 wireless network driver ath_hal(4) - Atheros Hardware Access Layer (HAL)
A hardvereszközeink listájával felvértezve most már egy saját rendszermag létrehozása sem lesz annyira ijesztő.
Mielőtt új rendszermagot készítenénk, érdemes megfontolnunk, hogy egyáltalán szükségünk lesz-e rá. Ha például valamilyen eszköz támogatásához kell, akkor könnyen előfordulhat, hogy azt modulként is be tudjuk tölteni.
A rendszermaghoz tartozó modulok a /boot/kernel könyvtárban találhatóak, és a kldload(8) segítségével a rendszer működése közben dinamikusan betölthetőek. Ha nem is az összes, de a legtöbb meghajtóhoz tartozik egy modul és egy man oldal. Például az előző szakaszban az ath vezeték nélküli Ethernet meghajtóval foglalkoztunk. A következő leírást találjuk a hozzá tartozó man oldalon:
Vagy ha modulként akarjuk betölteni ezt a meghajtót a rendszer indítása során, akkor a loader.conf(5) állományba vegyük fel a következő sort: if_ath_load="YES"
A fentebb leírtak szerint tehát, ha az if_ath_load="YES" sort hozzáadjuk a /boot/loader.conf állományhoz, akkor a rendszer indulásakor ez a modul mindig dinamikusan betöltődik.
Némely esetben azonban nem áll rendelkezésünkre ilyen modul. Ez különösen igaz bizonyos alrendszerekre és a fontosabb meghajtókra, például az FFS állományrendszerre vonatkozóan, mivel ezeknek kötelezően a rendszermagban kell lenniük. Ugyanez elmondható a hálózati támogatásra is (INET). Csak úgy tudjuk megmondani, hogy valamelyik meghajtóra szükség van a rendszermagban, ha először megpróbáljuk megkeresni hozzá a megfelelő modult.
Figyelem: A beépített meghajtók figyelmetlen eltávolításával könnyen lefordíthatatlan állapotba kerülhet a rendszermag. Például, ha az ata(4) meghajtót kivesszük a rendszermag konfigurációs állományából, az ATA alrendszert használó meghajtók csak abban az esetben fognak biztosan működni, ha egyúttal felvesszük a loader.conf állományba. Ha nem vagyunk benne biztosak, akkor először próbáljuk meg használni a modult, és csak utána hagyjuk el a rendszermagba épített változatát.
Először is tegyünk egy rövidke sétát a rendszermag könyvtárában. A továbbiakban említendő összes könyvtár a /usr/src/sys könyvtáron belül található, amely /sys néven is elérhető. Itt rengeteg alkönyvtár található, mindegyikük a rendszermag különböző részeit testesíti meg. Ezek közül most számunkra a legfontosabb az architektúra/conf lesz, ahol majd létrehozzuk a saját rendszermagunk konfigurációs állományát, valamint a compile, ahol majd a rendszermagunk fordítása történik. Itt az architektúra lehet i386, alpha, amd64, ia64, powerpc, sparc64 vagy pc98 (a PC-k egyik, leginkább Japánban elterjedt változata). Az adott architektúra könyvtárában található összes állomány csak arra az architektúrára vonatkozik, a kód többi része pedig gépfüggetlen és közös az összes többi létező és leendő FreeBSD platformon. Érdemes megfigyelni a könyvtárak logikai elrendezését: minden egyes ismert eszköz, állományrendszer és bővítmény saját alkönyvtárral rendelkezik.
A példák során ez a fejezet feltételezi, hogy az i386 architektúrát használjuk. Ha ez a mi esetünkben nem így lenne, ne felejtsük el átírni bennük az elérési útvonalakat a rendszerünk architektúrájának megfelelően.
Megjegyzés: Ha nem lenne /usr/src/sys könyvtár a rendszerünkben, valószínűleg még nem telepítettük a rendszermag forráskódját. Ezt a legkönnyebben úgy tudjuk megtenni, ha root felhasználóként elindítjuk a sysinstall programot és ott kiválasztjuk a (Beállítások), azon belül (Terjesztések) menüpontot, amiben válasszuk ki a , és terjesztéseket. Ha nem szeretnénk erre a célra a sysinstall programot használni, de rendelkezésünkre áll a “hivatalos” FreeBSD CD, akkor a forrásokat akár parancssorból is telepíthetjük:
# mount /cdrom # mkdir -p /usr/src/sys # ln -s /usr/src/sys /sys # cat /cdrom/src/ssys.[a-d]* | tar -xzvf - # cat /cdrom/src/sbase.[a-d]* | tar -xzvf -
Ezután lépjünk be az i386/conf könyvtárba és másoljuk le a GENERIC konfigurációs állományt a kedvünk szerinti nevűre. Például:
# cd /usr/src/sys/i386/conf # cp GENERIC SAJÁT
Általában a nevet végig nagybetűkkel írjuk, és ha több FreeBSD-s gépet is üzemeltetünk különböző hardverekkel, hasznosnak bizonyulhat megemlíteni benne az adott gép rendszerének nevét is. Ebben a példában ez most a SAJÁT lesz.
Tipp: A rendszermagunk konfigurációs állományát nem éppen a legjobb ötlet a /usr/src könyvtárban tárolni. Ugyanis könnyen előfordulhat, hogy egy rosszul sikerült fordítás után egyszerűen csak letöröljük az egész /usr/src könyvtárat és onnan kezdjük újra. Azonban csak ezután juthat eszünkbe, hogy vele együtt bizony letöröltük a saját rendszermagunk konfigurációs állományát is! Ehhez hasonlóan, közvetlenül a GENERIC konfigurációs állomány szerkesztése sem ajánlott, mivel a források egy esetleges frissítésénél könnyen felülíródhat és ezzel együtt elvesznek a módosításaink is.
Tehát érdemes inkább valahol máshol tárolnunk a rendszermagunk konfigurációs állományát, majd létrehozni rá egy szimbolikus linket a i386 könyvtárban.
Valahogy így:
# cd /usr/src/sys/i386/conf # mkdir /root/kernel # cp GENERIC /root/kernel/SAJÁT # ln -s /root/kernel/SAJÁT
Most pedig a kedvenc szövegszerkesztőnkkel lássunk neki a SAJÁT átírásának! Ha nemrég telepítettük csak a rendszerünket, az egyetlen elérhető szövegszerkesztőnk minden bizonnyal a vi lesz. Róla most túlságosan is bonyolult lenne leírást adnunk, de az Irodalomjegyzékben található könyvek közül sokban elég jól bemutatják. Ezen kívül a FreeBSD ajánl egy könnyebben megtanulható szövegszerkesztőt is az ee személyében, amely a kezdők számára az ideális választás. Nyugodtan átírhatjuk az elöl található megjegyzéseket a saját konfigurációnknak megfelelően, vagy akár azt is rögzíthetjük, hogy miben tértünk el a GENERIC beállításaitól.
Ha fordítottunk már rendszermagot SunOS vagy más BSD operációs rendszer alatt, ez az állomány ismerősnek tűnhet. Ha viszont más operációs rendszerek, mint például a DOS felől érkezünk, a GENERIC konfigurációs állomány egy kissé terebélyesnek tűnhet számunkra, ezért A konfigurációs állomány című részt figyelmesen és lassan olvassuk át.
Megjegyzés: Amennyiben a forrásfánkat a FreeBSD projekt legfrissebb forrásaival szinkronizáljuk, mindig olvassuk el a /usr/src/UPDATING állományt, mielőtt bármilyen frissítéshez is kezdenénk. Itt megtalálhatóak azok a fontos érintett kérdések és területek, amely külön figyelmet igényelnek a frissített forráskód esetén. A /usr/src/UPDATING mindig a FreeBSD forrásának legfrissebb változatához igazodik, és ezért sokkal naprakészebb információkat tartalmaz, mint ez a kézikönyv.
Most pedig le kell lefordítanunk a rendszermag forráskódját.
A rendszermag lefordítása
Lépjünk be a /usr/src könyvtárba:
# cd /usr/src
Fordítsuk le a rendszermagot:
# make buildkernel KERNCONF=SAJÁT
Telepítsük az új rendszermagot:
# make installkernel KERNCONF=SAJÁT
Megjegyzés: A FreeBSD teljes forrásfájára szükség van a rendszermag lefordításához.
Tipp: Amikor egy saját rendszermagot alapértelmezés szerint fordítunk, vele együtt az összes modul is lefordításra kerül. Ha viszont időt szeretnénk megtakarítani a rendszermag frissítése során, vagy csak a saját moduljainkat akarjuk lefordítani, érdemes átírnunk az /etc/make.conf állományt a rendszermag fordításának megkezdése előtt:
MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfsEz a változó megadja a ténylegesen lefordítandó modulok listáját.
WITHOUT_MODULES = linux acpi sound ntfsEz a változó a fordításból kihagyandó felső szintű modulokat sorolja fel. A rendszermag fordításának folyamatában egyéb hasznosnak tekinthető változókról a make.conf(5) man oldalán olvashatunk.
Ezután az új rendszermag a /boot/kernel könyvtárba kerül /boot/kernel/kernel néven, a korábbi rendszermag pedig /boot/kernel.old/kernel néven őrződik meg. Most állítsuk le a rendszert és indítsuk újra az új rendszermag aktiválásához. Ha közben valamilyen hiba történt volna, nézzük meg a fejezet végén található, hibakeresésre vonatkozó utasításokat. Mindenképpen olvassuk el azt a részt, amely leírja, hogyan állítsuk helyre a rendszerünket abban az esetben, ha az új rendszermaggal nem indul.
Megjegyzés: A rendszerindítási folyamathoz tartozó további állományok, mint például a rendszerbetöltő (loader(8)) és annak konfigurációs állománya, a /boot könyvtárban találhatóak. A külső és saját modulok a /boot/kernel a könyvtárba kerülhetnek, azonban a felhasználóknak nagyon ügyelniük kell rá, hogy az itt található modulok szinkronban legyenek a lefordított rendszermaggal. Ellenkező esetben a rendszerben megbízhatatlanságot, hibákat észlelhetünk.
A konfigurációs állomány általános formátuma igen egyszerű. Minden sor tartalmaz egy kulcsszót és egy vagy több paramétert. A további egyszerűsítés kedvéért a legtöbb sor csak egyetlen paramétert tartalmaz. Bármi, ami egy # (kettőskereszt) jelet követ, megjegyzésnek minősül és nem számít konfigurációs elemnek. A most következő részek bemutatják az egyes kulcsszavakat abban a sorrendben, ahogy azokat a GENERIC állományban is megtalálhatjuk. Az architektúrafüggő opciók és eszközök teljes listáját a GENERIC állománnyal egy könyvtárban levő NOTES állományban találhatjuk meg. Az architektúrától független opciókat a /usr/src/sys/conf/NOTES állományban találjuk.
A FreeBSD 5.0 megjelenése óta a konfigurációs állományokban használható az include direktíva. Ennek segítségével egy másik konfigurációs állomány tartalma logikailag beilleszthető az aktuálisba, így könnyebbé válik egy már meglevő állományhoz tartozó kisebb mennyiségű változtatás karbantartása. Például ha csupán pár egyszerű kiegészítést szeretnénk hozzáadni a GENERIC rendszermaghoz, akkor elegendő a hozzá vett eltéréseket nyilvántartanunk egy külön konfigurációs állományban:
include GENERIC ident SAJAT options IPFIREWALL options DUMMYNET options IPFIREWALL_DEFAULT_TO_ACCEPT options IPDIVERT
Valószínűleg sok rendszergazda számára jelentős előnyt jelent ez a megoldás a konfigurációs állományok korábbról már megszokott újraírásával szemben: a helyi konfigurációs állomány csak a GENERIC rendszermag helyi rendszerre vonatkozó eltéréseit tartalmazza. Így amikor frissítjük a rendszerünket, a GENERIC rendszermag összes újítása elérhetővé válik, kivéve ha explicit módon le nem tiltottuk ezeket a noptions vagy a nodevice megadásával. A fejezet további részében egy átlagos konfigurációs állománnyal fogunk foglalkozni, mind a beállítások, mind pedig az eszközök tekintetében.
Megjegyzés: Ha olyan állományt akarunk készíteni, amely tartalmazza az összes lehetséges opciót, például teszteléshez, futtassuk le root felhasználóként az alábbi parancsot:
# cd /usr/src/sys/i386/conf && make LINT
Itt a GENERIC rendszermag-konfigurációs állomány ismertetése következik, az érthetőség kedvéért helyenként megjegyzésekkel kibővítve. A bemutatott állománynak majdnem pontosan meg kell egyeznie a rendszerünkben található /usr/src/sys/i386/conf/GENERIC állománnyal.
machine i386
A számítógépünk architektúráját adja meg. A következők valamelyikének kell lennie: alpha, amd64, i386, ia64, pc98, powerpc, vagy sparc64.
cpu I486_CPU cpu I586_CPU cpu I686_CPU
A fenti beállítás segítségével megadhatjuk, milyen típusú processzor található a számítógépünkben. Több ilyen sorunk is lehet (ha például nem lennénk biztosak benne, hogy az I586_CPU vagy I686_CPU értéket kellene megadnunk), de a saját rendszermagunk összeállításához érdemes csak egyet meghagynunk. Ha nem ismerjük pontosan a processzorunk típusát, vessünk egy pillantást a /var/run/dmesg.boot állományra és keressük ki belőle.
ident GENERIC
Ez a rendszermag azonosítója. Változtassuk meg rendszermagunk nevére, legyen például SAJAT, ha a korábbi utasításokat követtük. Az ident után írt sztring fog megjelenni a rendszermag neve mellett a rendszer indítása során, ezért fontos, hogy az új rendszermagunknak más nevet adjunk, ha meg akarjuk különböztetni az általában használttól (például egy tesztelésre szánt rendszermagot akarunk készíteni).
# ha a /boot/device.hints használata helyett statikusan bele akarjuk fordítani #hints "GENERIC.hints" # itt szerepelnek a device hintek
A device.hints(5) használható az eszközmeghajtók beállítására. A loader(8) a rendszer indítása során alapértelmezés szerint a /boot/device.hints állományt olvassa be erre a célra. A hints beállítás használatával ezeket a “hinteket” statikusan bele tudjuk építeni a rendszermagba. Ebben az esetben nincs szükségünk külön device.hints állomány létrehozására a /boot könyvtárban.
makeoptions DEBUG=-g # a nyomkövetéshez szükséges gdb(1) szimbólumok beépítése
A FreeBSD hagyományos fordításának
folyamata során a rendszermagot a -g
használatával készítjük el,
aminek köszönhetően hibakeresési
információkat tudunk átadni a gcc(1)
fordítónak.
options SCHED_ULE # ULE ütemező
A FreeBSD alapértelmezett rendszerütemezője. Ne változtassuk meg!
options PREEMPTION # a rendszerszálak megszakíthatóságának engedélyezése
Ha engedélyezzük, a rendszermagban futó szálakat meg tudják szakítani más, magasabb prioritású szálak. Ez segít növelni a rendszer válaszadási sebességét és csökkenti a megszakításokat kezelő szálak várakozását.
options INET # hálózatkezelés
A hálózatkezelés támogatása. Ne töröljük ki, még akkor sem, ha nem tervezzük hálózatra kapcsolni a rendszert. Sok programnak szüksége van legalább az ún. loopback típusú hálózat támogatására (vagyis a számítógépünkön belüli hálózati kapcsolatokra), ezért ez feltétlenül kötelező!
options INET6 # IPv6 kommunikációs prokotollok
Engedélyezi az IPv6 kommunikációs protokollok használatát.
options FFS # Berkeley Fast Filesystem
Ez a legalapvetőbb merevlemezes állományrendszer. Hagyjuk meg, ha merevlemezről akarjuk indítani a rendszerünket.
options SOFTUPDATES # az FFS Soft Updates támogatása
Ez a beállítás engedélyezi a rendszermagban a Soft Updates használatát, amely segít felgyorsítani a lemez írási sebességét. Ha már a rendszermag ezt a funkcionalitást ismeri, akkor még külön az egyes lemezeken is engedélyezni kell. Nézzük meg a mount(8) kimenetét, hogy lássuk, a rendszerünkben levő lemezek közül melyiken van ténylegesen engedélyezve a Soft Updates használata. Ha nem látjuk benne sehol sem a soft-updates opciót, akkor azt (meglevő állományrendszerek esetén) a tunefs(8) vagy (új állományrendszerek esetén) a newfs(8) parancsokkal tudjuk bekapcsolni.
options UFS_ACL # a hozzáférés-vezérlési listák (ACL) támogatása
Ezzel a beállítással engedélyezhetjük a rendszermagban a hozzáférés-vezérlési listák támogatását. Ez a kiterjesztett attribútumok és az UFS2 használatára támaszkodik. Ezt a lehetőséget részleteiben a 14.12 Szakaszban tárgyaljuk. Az ACL alapértelmezés szerint támogatott, és ha korábban már használtuk, akkor semmiképpen se kapcsoljuk ki, mert ezzel az eddig létrehozott hozzáférés-vezérlési listáink érvénytelenné, az állományaink pedig védtelenné válnak.
options UFS_DIRHASH # nagyobb könyvtárak esetén gyorsulást hoz
Ezzel a beállítással némi memória feláldozása árán fel tudjuk gyorsítani a nagyobb könyvtárakon végzett lemezműveletek sebességét, ezért ezt a beállítást érdemes nagyobb szerverekre vagy interaktivitást igénylő munkaállomásokra tartogatni, és eltávolítani olyan esetekben, amikor a FreeBSD-t olyan kisebb számítógépeken használjuk, ahol a memória kevés és a lemezműveletek sebessége kevésbé fontos, például egy tűzfalon.
options MD_ROOT # tudunk memórialemezről is rendszert indítani
Ezzel az opcióval engedélyezni tudjuk a rendszer indítását memóriában tárolt virtuális lemezekről.
options NFSCLIENT # hálózati állományrendszer (NFS) kliens options NFSSERVER # NFS szerver options NFS_ROOT # NFS használható gyökérként is, kell hozzá az NFSCLIENT
A hálózati állományrendszer támogatása. Hacsak nem akarunk TCP/IP-n keresztül állományrendszereket csatlakoztatni egy UNIX állományszerverről, kivehetjük.
options MSDOSFS # MS-DOS állományrendszer
Az MS-DOS állományrendszer. Hacsak nem akarunk DOS-ra formázott merevlemezes partíciót csatlakoztatni a rendszerindítás során, nyugodtan elhagyhatjuk. A fentebb leírtak szerint az első olyan alkalommal automatikusan betöltődik, amikor egy DOS partíciót csatlakoztatni akarunk. Sőt, a nagyszerű emulators/mtools szoftver segítségével külön csatlakoztatás és leválasztás nélkül tudunk DOS-os floppykat olvasni (és az MSDOSFS-re egyáltalán nincs is szüksége).
options CD9660 # ISO 9660 állományrendszer
Az ISO 9660 állományrendszert a CD-k használják. Vegyük ki, ha nincs a számítógépben CD-ROM meghajtó, vagy csak ritkán fogunk CD-ket csatlakoztatni (mivel a hozzá tartozó modul magától betöltődik az első adat CD csatlakoztatása során). Az audio CD-k nem használják ezt az állományrendszert.
options PROCFS # a futó programok állományrendszere (szükséges hozzá a PSEUDOFS)
A futó programok állományrendszere. Ez csak a /proc könyvtárra csatlakoztatott “színlelt” állományrendszer, amelynek segítségével a ps(1) és hozzá hasonló programok képesek több információt adni a futó programokról. A PROCFS használata a legtöbb esetben nem indokolt, mivel a különféle nyomkövető és felügyeleti eszközök képesek a PROCFS használata nélkül is működni: alapértelmezés szerint a telepített rendszerek sem csatlakoztatják ezt az állományrendszer.
options PSEUDOFS # pszeudo állományrendszerek támogatása
A 6.X verziójú rendszermagokban a PROCFS használatához engedélyeznünk kell a PSEUDOFS használatát is.
options GEOM_GPT # GUID típusú partíciós táblák használata
Ezzel a beállítással engedélyezni tudjuk nagy mennyiségű partíció támogatását egyetlen lemezen.
options COMPAT_43 # kompatibilitás fenntartása a 4.3 BSD-vel [NE TÖRÖLD!]
Kompatibilitás a 4.3BSD-vel. Ne vegyük ki, mert bizonyos programok furcsán fognak viselkedni a hiánya esetén.
options COMPAT_FREEBSD4 # kompatibilitás a FreeBSD4-el
Ez a beállítás szükséges a FreeBSD 5.X i386 és Alpha rendszerein a FreeBSD korábbi verzióihoz fordított alkalmazások támogatásához, melyek régebbi rendszerhívásokat használnak. Az összes i386 és Alpha típusú rendszeren ajánlott engedélyezni, mivel itt előfordulhatnak régebbi alkalmazások. A többi platform, mint például az ia64 vagy a SPARC64, támogatása csak az 5.X verzióban jelent meg, ezért ott nincs szükség erre.
options COMPAT_FREEBSD5 # kompatibilitás a FreeBSD5-el
Ezt a beállítást a FreeBSD 6.X és afeletti verziókban kell használni az olyan FreeBSD 5.X verziókra fordított alkalmazások futtatásának támogatásához, melyek a FreeBSD 5.X rendszerhívásait használják.
options SCSI_DELAY=5000 # a SCSI eszközök keresése előtt késleltetés (ezredmásodpercben)
Ezzel a beállítással a rendszermag 5 másodpercig várakozni fog a SCSI eszközök keresése előtt. Ha kizárólag csak IDE típusú merevlemezeink vannak, nyugodtan kihagyhatjuk, máskülönben érdemes a rendszerindítás gyorsítása érdekében csökkenteni ezt az értéket. Természetesen, ha így teszünk és a FreeBSD nem tudja felismerni a SCSI eszközeinket, akkor növeljük meg valamennyivel.
options KTRACE # a ktrace(1) támogatása
Engedélyezi a rendszermagban futó rutinok nyomonkövetését, ami hasznos lehet a hibák keresése során.
options SYSVSHM # SYSV-szerű osztott memória
Ezzel a beállítással engedélyezni tudjuk a rendszerben a System V típusú osztott memória használatát. Leggyakrabban az X rendszer XSHM kiterjesztése használja, amelyen keresztül számos műveletigényes grafikus program működését fel lehet gyorsítani. Ha X-et használunk, mindenképpen szükségünk lehet erre.
options SYSVMSG # SYSV-szerű üzenetsorok
A System V üzenetek támogatása. Ez a beállítás csupán néhány száz byte-tal növeli a rendszermagot.
options SYSVSEM # SYSV-szerű szemaforok
A System V szemaforok támogatása. Nem túl gyakran alkalmazzák ezeket, de ez csak néhány száz byte-ot tesz hozzá a rendszermaghoz.
Megjegyzés: A ipcs(1) parancs
-p
paraméterével ki tudjuk listáztatni azokat a futó programokat, amelyek ezen System V eszközöket használják.
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B valósidejű kiterjesztések
A POSIX® 1993-as változatában megjelent valósidejű bővítések. A Portgyűjteményben megjelenő egyes alkalmazások használják ezeket (mint például a StarOffice).
options KBD_INSTALL_CDEV # CDEV bejegyzés létrehozása a /dev könyvtárban
Ez a beállítás kell ahhoz, hogy a /dev könyvtárban létre tudjunk hozni eszközleírókat a billentyűzethez.
options ADAPTIVE_GIANT # adaptív Giant mutexek
A Giant annak a kölcsönös kizárási mechanizmusnak (blokkolt mutexnek) a neve, amely a rendszermag erőforrásainak jelentős részét védi. Manapság ez már egy elfogadhatatlanul szűk keresztmetszetet képez a teljesítményben, ezért a fejlesztésben fokozatosan felváltják az egyes erőforrásokat külön-külön védő zárolások. Az ADAPTIVE_GIANT beállítás hatására a Giant a helyzethez igazodóan forgó (spin) mutexek közé kerül. Ez azt jelenti, hogy amikor egy szál zárolni akarja a Giant mutexet, de ezt már megtette előtte egy másik processzorról futó szál, a szál tovább fut és várakozni fog a zárolás feloldására. Normális esetben ugyanis egy szál továbbra is blokkolt állapotban marad, várakozva a futásra. Ha nem tudunk dönteni, hagyjuk változatlanul.
Megjegyzés: Hozzátesszük, hogy a FreeBSD 8.0-CURRENT és későbbi változataiban az össszes mutex alapértelmezés szerint adaptív, hacsak meg nem adjuk a NO_ADAPTIVE_MUTEXES beállítást. Ennek eredményeképpen a Giant most már alapból adaptív, ezért esetükben az ADAPTIVE_GIANT nem szerepel a rendszermag beállításai között.
device apic # I/O APIC
Az apic nevű eszköz engedélyezésével használhatjuk a hardveres APIC-ot a megszakítások vezérlésére. Az apic alkalmazható egy- és többprocesszoros rendszerek esetén is egyaránt, de az SMP rendszermagoknál szükséges. Több processzor támogatásánál mindenképpen tegyük hozzá az options SMP beállítást is.
Megjegyzés: Az apic eszköz csak az i386 architektúrán létezik, ezért a többi architektúrán nem szabad használnunk ezt a beállítást.
device eisa
Abban az esetben engedélyezzük, ha EISA-s alaplapunk van, ezzel aktiváljuk az EISA buszra csatlakoztatott eszközök automatikus felismerését és beállíthatóságát.
device pci
Tegyük hozzá a konfigurációs állományhoz, ha PCI-os alaplapuk van. Ezzel engedélyezhetjük a PCI kártyák automatikus felismerését és a PCI és ISA buszok közti átirányítást.
# Hajlékonylemezes meghajtók device fdc
Ez a hajlékonylemezes meghajtó vezérlője.
# ATA és ATAPI eszközök device ata
Ez az eszközmeghajtó felelős az összes ATA és ATAPI eszközért. A modern számítógépeken csak egyszer kell megadnunk a device ata sort a beállítások között az összes PCI-os ATA/ATAPI eszköz felismeréséhez.
device atadisk # ATA lemezmeghajtók
Az ATA lemezmeghajtók támogatásához erre van még szükség a device ata mellett.
device ataraid # ATA RAID-meghajtók
Az ATA RAID-meghajtók kezeléséhez erre a sorra van szükség a device ata mellett.
device atapicd # ATAPI CD-meghajtók
Az ATAPI CD-meghajtók használatához ezt is tegyük a konfigurációba a device ata mellé.
device atapifd # ATAPI floppy meghajtók
A device ata használata mellett erre van még szükségünk az ATAPI floppy meghajtók kezeléséhez.
device atapist # ATAPI szalagos meghajtók
Az ATAPI szalagos egységek használatához ezt a sort is tegyük a konfigurációba a device ata mellé.
options ATA_STATIC_ID # statikus eszközszámozás
Ezzel a beállítással a vezérlők számozása állandó lesz. Nélküle az eszközszámok dinamikusan kerülnek kiosztásra.
# SCSI vezérlők device ahb # EISA AHA1742 család device ahc # AHA2940 és integrált AIC7xxx eszközök options AHC_REG_PRETTY_PRINT # a hibák kereséséhez kiíratja a regiszterek # bitmezőit. Kb. 128 KB-al növeli a méretét. device ahd # AHA39320/29320 és integrált AIC79xx eszközök options AHD_REG_PRETTY_PRINT # a hibák kereséséhez kiíratja a regiszterek # bitmezőit. Kb. 215 KB-al növeli a méretét. device amd # AMD 53C974 (Teckram DC-390(T)) device isp # Qlogic család #device ispfw # a QLogic HBA firmware-e, többnyire modul device mpt # LSI-Logic MPT-Fusion #device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (újabb chipsetek, illetve az `ncr' típusúak) device trm # Tekram DC395U/UW/F DC315U csatolók device adv # Advansys SCSI-csatolók device adw # Advansys wide SCSI-csatolók device aha # Adaptec 154x SCSI-csatolók device aic # Adaptec 15[012]x SCSI-csatolók, AIC-6[23]60. device bt # Buslogic/Mylex MultiMaster SCSI-csatolók device ncv # NCR 53C500 device nsp # Workbit Ninja SCSI-3 device stg # TMC 18C30/18C50
SCSI-vezérlők. Vegyük ki azokat, amelyekkel ténylegesen nem rendelkezünk. Ha csak IDE eszközeink vannak a rendszerünkben, az összeset eltávolíthatjuk. A _REG_PRETTY_PRINT végződésű sorok a megfelelő meghajtók hibakerési beállításait takarják.
# SCSI-perifériák device scbus # SCSI-busz (kell a SCSI-hoz) device ch # SCSI médiumváltók (media changer) device da # közvetlen hozzáférés (lemezek) device sa # soros hozzáférés (szalag stb.) device cd # CD device pass # áteresztő eszköz (közvetlen SCSI hozzáférés) device ses # SCSI környezeti szolgáltatások (és SAF-TE)
SCSI-perifériák. Itt is érvényes, hogy kivehetjük azokat az eszközöket, amelyekkel nem rendelkezünk. De ha csak IDE hardvereink vannak, teljesen eltávolíthatjuk ezeket.
Megjegyzés: Annak ellenére, hogy valójában nem igazi SCSI-eszközök, az USB-s umass(4) és még néhány más egyéb meghajtó is használja a SCSI alrendszert. Emiatt semmiképpen se távolítsuk el a SCSI támogatást a rendszerünkől abban az esetben, ha ilyen meghajtókat is használni szándékozunk.
# a SCSI alrendszerhez kapcsolódó RAID-vezérlők device amr # AMI MegaRAID device arcmsr # Areca SATA II RAID device asr # DPT SmartRAID V, VI és Adaptec SCSI RAID device ciss # Compaq Smart RAID 5* device dpt # DPT Smartcache III, IV - lásd a NOTES állományt device hptmv # Highpoint RocketRAID 182x device rr232x # Highpoint RocketRAID 232x device iir # Intel Integrated RAID device ips # IBM (Adaptec) ServeRAID device mly # Mylex AcceleRAID/eXtremeRAID device twa # 3ware 9000 series PATA/SATA RAID # RAID vezérlők device aac # Adaptec FSA RAID device aacp # SCSI áteresztő az aac-hez (kell hozzá a CAM) device ida # Compaq Smart RAID device mfi # LSI MegaRAID SAS device mlx # Mylex DAC960 család device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID
Az ismert RAID-vezérlők. Ha közülük egyikkel sem rendelkezünk, távolítsuk el ezeket a konfigurációból.
# az atkbdc0 vezérli a billentyűzetet és a PS/2-es egeret device atkbdc # AT billentyűzet vezérlő
A billentyűzet vezérlője (atkbdc) az AT-s billentyűzet és a PS/2 stílusú pozícionáló eszközök vezérléséhez szükséges I/O szolgáltatásokat biztosítja. Erre a vezérlőre a billentyűzet meghajtójának (atkbd) és a PS/2 pozícionáló eszközök eszközmeghajtójának (psm) is szüksége van.
device atkbd # AT billentyűzet
Az atkbd meghajtó, a atkbdc vezérlővel együtt, adja a hozzáférést az AT billentyűzet vezérlőre csatlakoztatott AT 84 és a fejlettebb AT billentyűzetek felé.
device psm # PS/2 egér
Használjuk ezt az eszközt, ha az egerünk a PS/2 portra csatlakozik.
device kbdmux # billentyűzet multiplexer
A billentyűzet multiplexer alapszintű támogatása. Ha nem kívánunk a jövőben egynél több billentyűzetet csatlakoztatni a rendszerünkre, nyugodt szívvel kivehetjük ezt a sort.
device vga # VGA videokártya meghajtó
Videokártya meghajtó.
device splash # üdvözlőképernyők és képernyőkímélők támogatása
Nyissunk egy üdvözlőképernyővel! A képernyőkímélőknek is szükségük van erre az eszközre.
# a syscons az alapértelmezett konzolmeghajtó, hasonlít a SCO konzolra device sc
Az sc az alapértelmezett meghajtó a konzolok számára, és sokban hasonlít a SCO konzolra. Mivel a legtöbb teljesképernyős program a termcap termináladatbázis könyvtáron keresztül éri el a konzolt, nem igazán számít, hogy ezt vagy a VT220-kompatibilis vt konzolmeghajtót használjuk. Ha bármilyen gondunk lenne a teljesképernyős programok futtatásával ezen a konzolon, a bejelentkezéskor állítsuk a TERM környezeti változónkat a scoansi értékre.
# ezzel tudjuk engedélyezni a pcvt (VT220-kompatibilis) konzolmeghajtót #device vt #options XSERVER # az X szerver támogatása vt konzolon #options FAT_CURSOR # telt kurzor használata
Ez a VT220-kompatibilis konzolmeghajtó, amely visszafelé kompatibilis a VT100/102-vel is. Remekül működik olyan laptopokon, ahol a hardver nem használható az sc konzollal. Itt ugyanúgy érdemes egyébként a vt100 értékre vagy a vt220 értékre állítani a TERM környezeti változónkat. Hasznosnak bizonyulhat abban az esetben is, amikor hálózaton keresztül nagy mennyiségű és eltérő típusú számítógépekhez csatlakozunk, és ahol a termcap és terminfo adatbázisokban az sc bejegyzései gyakran nem is érhetőek el — a vt100 viszont virtuálisan az összes platformon elérhető.
device agp
Írjuk bele a konfigurációba, ha van AGP kártya a rendszerünkben. Ezzel engedélyezzük az AGP és az AGP GART támogatását az ezeket ismerő kártyák számára.
# energiagazdálkodás támogatása (bővebben lásd: NOTES) #device apm
A fejlett energiagazdálkodás támogatása. Laptopok esetén hasznos, habár ez alapértelmezés szerint nincs engedélyezve a GENERIC konfigurációban.
# az i8254 készenléti módjának támogatása device pmtimer
Az energiagazdálkodási események, mint például APM és ACPI időzítőjének eszközmeghajtója.
# PCCARD (PCMCIA) támogatás # PCMCIA és cardbus támogatás device cbb # cardbus (yenta) bridge device pccard # PC Card (16 bites) busz device cardbus # CardBus (32 bites) busz
A PCMCIA támogatása. Mindenképpen szükségünk lesz rá, ha laptopunk van.
# soros (COM) portok device sio # 8250, 16[45]50 alapú soros portok
Ezek azok a soros portok, amelyek az MS-DOS/Windows világban csak COM portokként ismernek.
Megjegyzés: Ha van egy belső modemünk a COM4-en és egy soros portunk a COM2-n, a modem IRQ-ját meg kell változtatnunk 2-re (valamilyen homályos műszaki okból kifolyólag a COM2 = IRQ9), hogy hozzá tudjunk férni FreeBSD-ből. Ha többportos soros kártyánk lenne, lapozzuk fel a sio(4) man oldalát, és ott hozzá megtaláljuk a /boot/device.hints állományba írandó megfelelő értékeket. Egyes videokártyák (különösen az S3 chipekre épülők) az I/O címeket 0x*2e8 alakban használják, és mivel rengeteg olcsó soros kártya nem kódolja vissza egészében a 16 bites I/O címteret, ütközni fognak ezekkel a kártyákkal, és ezáltal a COM4 port gyakorlatilag elérhetetlenné válik.
Minden egyes soros portnak egyedi IRQ-ja kell legyen (hacsak nem használunk olyan többportos kártyát, amely támogatja a megosztott megszakításokat), ezért a COM3 és COM4 esetén alapértelmezett IRQ-k nem használhatóak.
# párhuzamos port device ppc
Ez az ISA busz párhuzamos portjának felülete.
device ppbus # a párhuzamos port busza (kell)
A párhuzamos porthoz tartozó busz támogatása.
device lpt # nyomtató
A párhuzamos portra csatlakozó nyomtatók támogatása.
Megjegyzés: A fentiek közül mind a három szükséges a párhuzamos porton csatlakozó nyomtatók használatához.
device plip # TCP/IP párhuzamos porton keresztül
Ez a párhuzamos port hálózati felületének meghajtója.
device ppi # a párhuzamos port felületének eszköze
Általános célú (“geek port”) és IEEE1284 I/O.
#device vpo # az scbus és a da kell a használatához
Ez az Iomega Zip meghajtóihoz tartozó eszköz. A működéséhez szükség van az scbus és da engedélyezésére. A legjobb teljesítményt EPP 1.9 módban működő portokkal lehet kihozni belőle.
#device puc
Tegyük bele a konfigurációba ezt az eszközt, ha egy olyan “buta” soros vagy párhuzamos PCI kártyánk van, amelyet a puc(4) segédmeghajtó ismer.
# PCI Ethernet kártyák device de # DEC/Intel DC21x4x (“Tulip”) device em # Intel PRO/1000 Gigabit Ethernet kártya device ixgb # Intel PRO/10GbE Ethernet kártya device txp # 3Com 3cR990 (“Typhoon”) device vx # 3Com 3c590, 3c595 (“Vortex”)
Különféle PCI hálózati kártyák meghajtói. Vegyük ki azokat, amelyek nem találhatóak meg a rendszerünkben.
# PCI Ethernet kártyák, melyek az MII busz vezérlőkódját használják # FIGYELEM: Ne töröljük ki a 'device miibus' sort, ha ilyen kártyánk van! device miibus # az MII busz támogatása
Az MII busz engedélyezése elengedhetetlen bizonyos 10/100-as PCI Ethernet kártyák használatához, konkrétan azokéhoz, amelyek az MII-vel együttműködni képes adó-vevőt használnak vagy az MII-höz hasonló adó-vevő vezérlő felületet valósítanak meg. A device miibus hozzáadása a rendszermaghoz magával vonja az általános miibus API és az összes PHY meghajtó támogatását, beleértve azt az általános PHY eszközt is, amelyet az egyes eszközmeghajtók külön nem támogatnak.
device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet device bfe # Broadcom BCM440x 10/100 Ethernet device bge # Broadcom BCM570xx Gigabit Ethernet device dc # DEC/Intel 21143 és egyéb hasonlóak device fxp # Intel EtherExpress PRO/100B (82557, 82558) device lge # Level 1 LXT1001 gigabit ethernet device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet device nge # NatSemi DP83820 gigabit ethernet device nve # nVidia nForce MCP integrált Ethernet hálózat device pcn # AMD Am79C97x PCI 10/100 (az 'lnc' előtt) device re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (“Starfire”) device sis # Silicon Integrated Systems SiS 900/SiS 7016 device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet device ste # Sundance ST201 (D-Link DFE-550TX) device stge # Sundance/Tamarack TC9021 gigabit Ethernet device ti # Alteon Networks Tigon I/II gigabit Ethernet device tl # Texas Instruments ThunderLAN device tx # SMC EtherPower II (83c170 “EPIC”) device vge # VIA VT612x gigabit ethernet device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (“Boomerang”, “Cyclone”)
Meghajtók, melyek az MII busz vezérlőkódját használják.
# ISA Ethernet és pccard hálózati kártyák. device cs # Crystal Semiconductor CS89x0 NIC # az 'device ed' eszközhöz kell a 'device miibus' device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards device ex # Intel EtherExpress Pro/10 és Pro/10+ device ep # Etherlink III alapú kártyák device fe # Fujitsu MB8696x alapú kártyák device ie # EtherExpress 8/16, 3C507, StarLAN 10 stb. device lnc # NE2100, NE32-VL Lance Ethernet kártyák device sn # az SMC 9000-res sorozatú Ethernet chipjei device xe # Xircom pccard Ethernet # ISA eszközök, melyek a régi ISA betétet használják #device le
ISA Ethernet meghajtók. A konkrétan támogatott kártyák teljes felsorolását lásd a /usr/src/sys/i386/conf/NOTES állományban.
# vezeték nélküli hálózati kártyák device wlan # 802.11 támogatás
Általános 802.11 támogatás. Erre a sorra mindenképpen szükség van a vezeték nélküli hálózatok használatához.
device wlan_wep # 802.11 WEP támogatás device wlan_ccmp # 802.11 CCMP támogatás device wlan_tkip # 802.11 TKIP támogatás
A 802.11 eszközök esetén a titkosítás támogatása. Ezeket a sorokat akkor adjuk meg, ha titkosítást akarunk használni vagy a 802.11i biztonsági protokolljait.
device an # Aironet 4500/4800 802.11 vezeték nélküli hálózati kártyák device ath # Atheros pci/cardbus hálózati kártyák device ath_hal # Atheros HAL (Hardware Access Layer) device ath_rate_sample # küldési mintavételi vezérlés az ath-hoz device awi # BayStack 660 és mások device ral # Ralink Technology RT2500 vezeték nélküli hálózati kártyák device wi # WaveLAN/Intersil/Symbol 802.11 vezeték nélküli hálózati kártyák #device wl # régebbi, nem 802.11 Wavelan vezeték nélküli hálózati kártyák
A különböző vezeték nélküli kártyák támogatása.
# Pszeudo eszközök device loop # hálózati loopback
Ez a TCP/IP általános loopback eszköze. Ha telnettel vagy FTP-vel rácsatlakozunk a localhost címére (vagyis a 127.0.0.1-re), akkor rajta keresztül saját magunkhoz jutunk vissza. Ennek a megléte kötelező!
device random # álvéletlenszám eszköz
Kriptográfiai szempontból biztonságos álvéletlenszám generátor.
device ether # Ethernet támogatás
Az ether eszközre csak abban az esetben van szükség, ha Ethernet kártyánk van. Ez magában foglalja az általános Ethernet protokoll kódját.
device sl # belső SLIP
Az sl a SLIP használatát engedélyezi. Ez egy régi protokoll, amelyet azóta már szinte teljesen kiszorított a PPP, mivel azt könnyebb beállítani és sokkal jobban is illik a modem-modem kapcsolatokhoz, illetve sokkal erőteljesebb.
device ppp # belső PPP
Ez a tárcsázós kapcsolatok rendszermagon belüli PPP támogatását adja meg. Van a PPP-nek egy külső, a felhasználói programként megvalósított változata is, amely a tun eszközt használja és sokkal nagyobb rugalmasságot kínál fel, illetve olyan lehetőségeket, mint például az igény szerinti tárcsázás.
device tun # csomag alagút
Ezt a felhasználói PPP szoftver használja. A könyv PPP-ről szóló részében többet is megtudhatunk róla.
device pty # Pszeudo terminálok (telnet stb.)
Ezek a “pszeudo terminálok”, vagy más néven szimulált bejelentkezési portok. A bejövő telnet és rlogin munkamenetek használják, valamint az xterm és a hozzá hasonló alkalmazások, mint például az Emacs.
device md # “memórialemezek”
A memóriában levő pszeudo lemezes meghajtók.
device gif # IPv6 és IPv4 tunnelek használata
Megvalósítja az IPv6 IPv4 feletti, az IPv4 IPv6 feletti, az IPv4 IPv4 feletti és az IPv6 IPv6 feletti közvetítését. A gif eszköz “magától másolódik”, vagyis szükség szerint hozza létre a megfelelő eszközleírókat.
device faith # IPv6-IPv4 közti továbbítás (fordítás)
Ez a pszeudo eszköz elfogja a hozzá küldött csomagokat és átadja ezeket az IPv4/IPv6 fordítással foglalkozó démonnak.
# a `bpf' eszköz használatával a Berkeley csomagszűrőt (Berkeley Packet Filter) engedélyezzük # Legyünk rá tekintettel, hogy ennek komoly következményei lehetnek # rendszeradminisztrációs szempontból! # A 'bpf'-re szükség van a DHCP-hez. device bpf # Berkeley csomagszűrő
A Berkeley csomagszűrője. Ez egy olyan pszeudo eszköz, amely lehetővé teszi, hogy a hálózati csatolók forgalmát megfigyeljük, mivel a (pl. Ethernet) hálózatunkon minden csomagot elkap. Ezek a csomagok lemezre is menthetőek vagy kielemezhetőek a tcpdump(1) program segítségével.
Megjegyzés: A bpf(4) eszközt a dhclient(8) is használja többek közt az alapértelmezett átjáró IP-címének megszerzéséhez. Ha DHCP-t akarunk használni, hagyjuk így.
# USB támogatás device uhci # UHCI PCI->USB felület device ohci # OHCI PCI->USB felület device ehci # EHCI PCI->USB felület (USB 2.0) device usb # USB busz (kell) #device udbp # USB Double Bulk Pipe eszközök device ugen # általános device uhid # “Human Interface Devices” device ukbd # billentyűzet device ulpt # nyomtató device umass # lemez/háttértároló - kell hozzá az scbus és a da device ums # egér device ural # Ralink Technology RT2500USB vezeték nélküli hálózati kártyák device urio # Diamond Rio 500 MP3 lejátszó device uscanner # lapolvasók # USB Ethernet, kell hozzá az mii device aue # ADMtek USB Ethernet device axe # ASIX Electronics USB Ethernet device cdce # általános USB, Etherneten keresztül device cue # CATC USB Ethernet device kue # Kawasaki LSI USB Ethernet device rue # RealTek RTL8150 USB Ethernet
A különféle USB eszközök támogatása.
# FireWire támogatás device firewire # FireWire buszkód device sbp # SCSI FireWire-ön keresztül (kell hozzá az scbus és a da) device fwe # Ethernet FireWire-ön keresztül (nem szabványos!)
A különféle Firewire eszközök támogatása.
A FreeBSD által ismert további eszközökről a /usr/src/sys/i386/conf/NOTES állományból tájékozódhatunk.
A sok memóriával rendelkező számítógépek esetén szükség lehet a felhasználói és rendszerszintű virtuális címek (Kernel Virtual Address, KVA) 4 gigabyte feletti használatára. Ennek a korlátozásnak a kiküszöbölésére az Intel külön támogatást épített be a Pentium Pro és az azt követő processzorok 36 bites fizikai címzésének kialakításához.
A Fizikai Címkiterjesztés (Physical Address
Extension, PAE) az Intel Pentium Pro
és későbbi processzoraiban
található meg, és lehetővé
teszi egészen 64 gigabyte-ig a
memóriahasználatot. A FreeBSD is támogatja
ezt a tulajdonságot a PAE
rendszermag
beállítás használatával,
és megtalálható a FreeBSD összes
jelenlegi verziójában. Az Intel
architektúrájú processzorok
memóriaszervezésének korlátai
miatt nem különböztethető meg a 4 gigabyte
alatti és feletti memória. A 4 gigabyte felett
található memóriaterületek
egyszerűen hozzáadódnak a
rendelkezésre álló
memóriához.
A rendszermagban a PAE támogatását egyszerűen az alábbi sor hozzáadásával tudjuk engedélyezni:
options PAE
Megjegyzés: A FreeBSD-ben a PAE támogatása csak az Intel IA-32 architektúrájú processzoraihoz érhető el. Emellett meg kell említenünk, hogy a FreeBSD-ben található PAE támogatás nem lett szélesebb körben próbára téve, ezért a FreeBSD többi megbízható elemeihez képest csak béta állapotúnak tekinthető.
A FreeBSD PAE támogatásának van néhány hiányossága:
Egy futó program a virtuális memóriában nem képes 4 gigabyte-nál többet elérni.
A bus_dma(9) felületet nem használó eszközmeghajtók adathibákat okozhatnak a PAE-t támogató rendszermagokban, és emiatt nem ajánljuk a használatukat. Ebből a megfontolásból készítettünk egy PAE nevű konfigurációs állományt a FreeBSD-hez, amelyben nem szerepel egyetlen olyan meghajtó sem, amely ismereteink szerint nem működik együtt a PAE-t támogató rendszermagokkal.
Bizonyos finomhangolási
beállítások a
memóriahasználatot a rendelkezésre
álló fizikai memória
mennyiségéből
számítják ki. A
PAE támogatással
működő rendszerek esetében
megjelenő sok memória miatt azonban az ilyen
eszközök szükségtelenül
több területet foglalhatnak le. Erre
példa lehet a kern.maxvnodes
sysctl változó, amely a rendszermag
által maximálisan
felhasználható virtuális
csomópontok számát korlátozza.
Ajánlott tehát az ilyen és ehhez
hasonló beállítások
értelmes értékre
történő
visszaállítása.
Szükséges lehet a rendszermag
virtuális címterének
(KVA) növelése vagy a
rendszermag által túlságosan nagy
méretűre foglalt címterű
különféle erőforrások
(lásd fentebb) csökkentése a
KVA kifogyásának
elkerülésére. A KVA
területének növelését a
KVA_PAGES
beállításával tehetjük
meg.
Ha gondjaink lennének a teljesítménnyel vagy a megbízhatósággal, keressük fel a tuning(7) man oldalt. A pae(4) man oldalon pedig a FreeBSD PAE támogatásáról találhatunk naprakész információkat.
Négyféle probléma jelentkezhet egy saját rendszermag készítése során. Ezek:
Amikor a config(8) parancs hibát jelez vissza a rendszermagunk konfigurációs beállításainak feldolgozása során, akkor minden bizonnyal csak egy apró hibát vétettünk valahol. Szerencsére a config(8) kiírja a hibás sor számát, ezért gyorsan fel tudjuk kutatni a hibát tartalmazó sort. Például, ha ezt látjuk:
config: line 17: syntax error
Akkor győződjünk meg róla, hogy helyesen írtuk be az adott sorban szereplő kulcsszót. Ebben segítségünkre lehet, ha összevetjük a GENERIC konfigurációs állománnyal vagy más hivatkozásokkal.
Ha a make jelez hibát, az általában arra utal, hogy az általunk korábban megadott rendszermag konfigurációs állományt a config(8) nem értette meg rendesen. Megint azt tudjuk csak javasolni, hogy nézzük át a konfigurációs beállításainkat, és ha ezután sem sikerül megoldani a problémát, akkor mellékeljük egy levélben a rendszermagunk konfigurációs beállításait és küldjük el a FreeBSD general questions levelezési lista címére, ahol a hozzáértők gyorsan átnézik.
Ha az új rendszermagunk nem indul vagy nem képes felismerni az eszközeinket, ne essünk kétségbe! Szerencsére a FreeBSD tökéletes megoldással tud szolgálni az összeférhetetlen rendszermagok esetére: a FreeBSD rendszerbetöltőjében egyszerűen válasszuk ki az indítandó rendszermagot. Ezt akkor tudjuk előhívni, amikor a rendszerindító menü megjelenik. Válasszuk ki a hatos, vagyis az “Escape to a loader prompt” (a betöltő parancssorának előhívása) menüpontot. Mikor megjelenik a parancssor, írjuk be, hogy unload kernel, majd adjuk ki a boot /boot/kernel.old/kernel, parancsot, amiben bármilyen más olyan rendszermagot is megnevezhetünk, ami korábban már működött. Ezért amikor beállítunk egy új rendszermagot, mindig érdemes a kezünk ügyében tartani legalább egy olyan rendszermagot, amely működik.
Miután sikerült elindítanunk az egyik használható rendszermagot, nézzük át még egyszer a konfigurációs állományt és próbáljuk újra lefordítani a rendszermagot. A probléma megoldását segítheti a /var/log/messages állomány áttanulmányozása is, ami többek közt rögzíti a rendszermag sikeres indulása során keletkező üzeneteket. Ezenkívül a dmesg(8) parancs is meg tudja jeleníteni az aktuális rendszerindítás üzeneteit.
Megjegyzés: Ha gondok merülnének fel a rendszermag elkészítése során, mindenképpen tartsuk meg a GENERIC, vagy bármilyen másik olyan rendszermagot, amelyről tudjuk, hogy működik. Nevezzük át, így nem fog felülíródni a következő fordítás és telepítés során. A kernel.old állományra ugyanis nem minden esetben számíthatunk, mivel az új rendszermagok telepítésénél a kernel.old mindig felülíródik a legutóbb telepített rendszermaggal, amely azonban nem feltétlenül lesz működőképes. Sőt, amint csak lehetséges, rakjuk a működő rendszermagot a /boot/kernel könyvtárba vagy különben a ps(1) és a hozzá hasonló parancsok nem fognak rendesen működni. Mindezek elvégzéséhez egyszerűen nevezzük át a jó rendszermagot tartalmazó könyvtárt:
# mv /boot/kernel /boot/kernel.rossz # mv /boot/kernel.jó /boot/kernel
Ha olyan rendszermagot telepítettünk, aminek a verziója nem egyezik meg a hozzá tartozó segédprogramokéval, tehát például -CURRENT rendszermagot raktunk egy -RELEASE rendszerhez, egyes rendszerállapotjelző parancsok, mint például a ps(1) vagy a vmstat(8) nem fognak működni. Ebben az esetben az egész rendszert újra kell fordítanunk és telepítenünk a rendszermagunkkal megegyező verziójú forrásból. Részben ezért sem különösen ajánlott, hogy az operációs rendszer többi részétől eltérő verziójú rendszermagot használjunk.
A FreeBSD a nyomtatók széles skálájával képes együttműködni, a legrégebbi vegyszeres nyomtatótól kezdve egészen napjaink lézernyomtatójáig, aminek köszönhetően alkalmazásainkkal nagyon jó minőségű nyomtatásokat tudunk készíteni.
A FreeBSD a helyi hálózaton nyomtatószervernek is beállítható. Ekkor a vele közös hálózatra csatlakozó többi, FreeBSD, Windows vagy Mac OS rendszerű számítógéptől képes nyomtatási kéréseket elfogadni. A FreeBSD gondoskodik róla, hogy egyszerre csak egy nyomtatás készüljön el, számon tartja, hogy mely felhasználók és számítógépek nyomtatnak a legtöbbet, és minden feladathoz “munkalapot” (banner page) készít, amiben többek közt megtalálhatjuk, hogy kihez tartozik.
A fejezet elolvasása során megismerjük:
hogyan állítsuk be a FreeBSD nyomtatási sorát;
hogyan telepítsünk nyomtatási szűrőket, hogyan kezeljünk különböző speciális nyomtatási feladatokat, tehát például miként alakítsuk át a beérkező dokumentumokat olyan nyomtatási formátumra, amelyet a nyomtatónk is megért;
hogyan engedélyezzük a fejléc- vagy nyomtatási információk kinyomtatását;
hogyan nyomtassunk más számítógépekhez csatlakoztatott nyomtatókkal;
hogyan nyomtassunk a hálózatra közvetlenül kapcsolt nyomtatókkal;
hogyan állítsuk be a nyomtatási korlátozásokat, például a nyomtatási feladatok méretét, amivel egyes felhasználók nyomtatását visszafoghatjuk;
hogyan készítsünk nyomtatási kimutatásokat és nyilvántartást a nyomtató használatáról;
hogyan keressük meg a nyomtatás során felmerülő problémák okait.
A fejezet elolvasásához ajánlott:
egy új rendszermag beállításának és telepítésének ismerete (8 fejezet).
A FreeBSD-ben a nyomtatók működéséhez be kell állítani az LPD nyomtatási rendszert. Ez a Berkeley sornyomtatási rendszere, amelyet ezentúl röviden csak LPD-nek fogunk hívni. Ez a FreeBSD alapértelmezett szabványos nyomtatásvezérlő rendszere. Ebben a fejezetben az LPD és annak konfigurációja kerül bemutatásra.
Ha már találkoztunk az LPD-vel vagy hozzá hasonló rendszerekkel, akkor innen nyugodtan ugorhatunk a Kezdeti beállítások című szakaszra.
Az LPD vezérli a számítógéphez csatlakoztatott nyomtató összes funkcióját. Számos feladata van:
Felügyeli a lokálisan és hálózaton keresztül csatlakoztatott nyomtatók hozzáféréseit.
Lehetővé teszi az átküldött állományok kinyomtatását, amelyeket nyomtatási feladatoknak nevezünk.
Minden nyomtatóhoz fenntart egy nyomtatási sort, amivel meg tudja akadályozni, hogy egyszerre több felhasználó is hozzá tudjon férni az egyes nyomtatókhoz.
A fejléceket (vagy más néven munka- vagy elválasztó lapokat) nyomtat, így a felhasználók könnyen megtalálják a saját nyomtatásaikat a többi közt.
Felügyeli a soros portokon csatlakozó nyomtatók kommunikációs beállításait.
A hálózaton keresztül átküldi a nyomtatási feladatokat egy másik számítógép LPD sorába.
A nyomtatási feladatok formázásához lefuttatja az adott nyomtató nyelvéhez és képességeihez illeszkedő speciális szűrőket.
Nyilvántartja a nyomtató kihasználtságát.
A beállításait tartalmazó állomány (/etc/printcap) és a speciális szűrőprogramok segítségével az LPD sokféle nyomtatón képes az összes említett feladatot vagy annak egy részét megvalósítani.
Amikor csak egyedül vagyunk a rendszerben, felmerülhet bennünk a kérdés, hogy minek is kellene nekünk vesződni a nyomtatási sor beállításával, hiszen nincs szükségünk sem a hozzáférések vezérlésére, sem fejlécekre, sem pedig nyilvántartásra. Noha akár közvetlenül is el tudjuk érni a nyomtatót, néhány okból azért mégis érdemes nyomtatási sort használni:
Az LPD a háttérben nyomtat, ezért ilyenkor nem kell megvárni, amíg az adat átmásolódik a nyomtatóra.
Az LPD tetszőlegesen tudja alakítani a nyomtatási feladatokat: hozzájuk tud tenni különböző adatokat (dátum és idő), vagy a speciális állományokat (például a TeX DVI formátumát) képes megértetni a nyomtatóval, és nem nekünk kell mindezeket a lépéseket elvégeznünk.
Számos nyomtatási lehetőséggel rendelkező szabad és kereskedelmi program arra számít, hogy a rendszerünkben nyomtatási sor található, ezért annak beállításával sokkal könnyebb használni ezeket a szoftvereket.
Úgy tudjuk használni a nyomtatókat az LPD nyomtatási rendszerével, ha egyaránt beállítjuk a nyomtatót és magát az LPD-t is. Itt a beállítás két szintjét tárgyaljuk:
Az Alacsonyszintű nyomtatóbeállítás című szakaszból megtudhatjuk, hogyan tudunk csatlakoztatni egy nyomtatót, hogyan adjuk meg az LPD-nek, miként kommunikáljon vele, hogyan nyomtassunk ki egyszerű szöveges állományokat a nyomtatón.
A Magasszintű nyomtatóbeállítás szakaszban bemutatjuk, hogyan nyomtassunk ki különféle speciális állományokat, hogyan készíttessünk fejléceket, hogyan nyomtassunk hálózaton keresztül, hogyan vezéreljük a nyomtatók hozzáférését és hogyan tartsuk nyilván a nyomtató használatát.
Ebben a szakaszban láthatjuk, miképpen kell beállítani a nyomtatónkat és az LPD hogyan lesz képes azt használatba venni. Az alapoktól kezdünk:
A Hardveres beállítás című szakaszban abban kapunk segítséget, hogyan kell a nyomtatót a számítógéphez csatlakoztatni.
A Szoftveres beállítás című szakaszban az LPD nyomtatási rendszer beállítását tartalmazó állományt (/etc/printcap) vesszük sorra.
Amennyiben olyan nyomtatót akarunk beállítani, amely nem helyileg, hanem valamilyen hálózati protokollon keresztül csatlakozik, nézzük meg a Nyomtatók hálózati adatcsatlakozással című szakaszt.
Habár ez a szakasz nevében csupán “Alacsonyszintű nyomtatóbeállításról” szól, meglehetősen szerteágazó tud lenni. A nyomtató hardveres és szoftveres életre keltése az egyik legnehezebb feladat. Ha van egy működő nyomtatónk, a fejlécek és a nyilvántartás beállítása tulajdonképpen már gyerekjáték.
Ebben a szakaszban a nyomtatók csatlakoztatásának lehetséges módozatairól esik szó. Beszélni fogunk mindenféle portokról és kábelekről, és a FreeBSD rendszermagjának az egyes nyomtatók használatához szükséges beállításairól is.
Ha korábban tudtuk csatlakoztatni a nyomtatónkat, és más operációs rendszerekkel már sikeresen nyomtattunk is vele, akkor rögtön ugorhatunk is a Szoftveres beállításokat tartalmazó szakaszra.
A személyi számítógépekhez kapható nyomtatók általában a következő három csatolófelület egyikével rendelkeznek:
A soros, más néven RS-232-es vagy COM porton keresztül kommunikáló felületek a számítógép soros portján küldenek adatot a nyomtatónak. A soros csatolófelületek igen elterjedtek a számítógépiparban, könnyen tudunk ilyen kábelt szerezni, gyorsan is gyártható. Előfordulhat, hogy a soros csatolófelületek használatához valamilyen különleges kábelre, valamint bonyolult kommunikációs beállítások megadására van szükség. A legtöbb soros port által elérhető legnagyobb adatátviteli sebesség másodpercenként 115 200 bit, ami miatt azonban a komolyabb grafikai tartalmak nyomtatása szinte lehetetlen.
A párhuzamos csatolófelületek a számítógépünk párhuzamos portjával küldenek adatokat a nyomtatónak. A párhuzamos felületek gyorsabbak az RS-232 soros felületnél, és a számítógéppiacon is gyakran megtalálhatóak. Könnyen tudunk ilyen kábelt szerezni, azonban kézileg nehezebb elkészíteni. A párhuzamos csatolófelületekhez általában nem tartoznak kommunikációs beállítások, ezért rendkívül egyszerűen el lehet boldogulni velük.
A párhuzamos felületekre olykor “Centronics” csatolófelületként is hivatkoznak, amelyet egy nyomtatótípus után neveztek el.
A Universal Serial Bus (Univerzális soros busz) rövidítéseként használt USB elnevezésű csatolófelület a párhuzamos és a soros felületeknél jóval nagyobb sebességre képes. A hozzá tartozó kábelek felépítése egyszerű és az áruk olcsó. Habár a nyomtatás terén az USB hivatott leváltani az RS-232-es soros és a párhuzamos felületeket, nem mindegyik UNIX rendszer támogatja kellőképpen. Ezt a problémát például úgy kerülhetjük el, ha olyan nyomtatót vásárolunk, amelyen a legtöbbhöz hasonlóan a párhuzamos és az USB csatlakozás is megtalálható.
A párhuzamos felületeken általában csak egy irányban tudunk üzeneteket küldeni (a számítógéptől a nyomtatóhoz), miközben az USB és a soros felület használatával mind a két irányban is. FreeBSD alatt viszont már az újabb (EPP és ECP) párhuzamos portok egy IEEE 1284 szabványú kábellel képesek oda-vissza kommunikálni.
A párhuzamos nyomtatók kétirányú kommunikációját általában két mód közül az egyiken szokták megvalósítani. Az első esetben a FreeBSD a nyomtatóhoz egy speciális meghajtót használ, amely ismeri az általa beszélt nyelvet. Ilyenek a tintasugaras nyomtatók, amelyek más egyéb állapotinformációk mellett ezen keresztül képesek jelezni a tintapatronokban levő tinta mennyiségét. A második esetben a nyomtató ismeri a PostScript nyelvet.
A PostScript nyelvű nyomtatási feladatok valójában a nyomtatónak küldött programok. Használatukhoz még papírra sincs feltétlenül szükség, és előfordulhat, hogy közvetlenül a számítógépnek válaszolnak. A PostScript is kétirányú kommunikáción keresztül értesíti a számítógépet az olyan gondokról, mint például a PostScript programokban levő hibák vagy a papír beakadása, amely információnak a felhasználók szoktak örülni. Hovatovább ez a kétirányú kommunikáció a kulcsa a PostScript nyomtatók hatékony nyilvántartásának is: egyszerűen lekérdezzük a nyomtatótól a lapszámlálót (ami megadja, hogy a nyomtató eddig mennyi lapot nyomtatott ki), kiküldjük a felhasználóhoz tartozó feladatot és ismét lekérdezzük a lapszámlálót. A két érték kivonásából tájékozódhatunk a felhasználó által igényelt lapok mennyiségéről.
A párhuzamos csatolófelületen érintkező nyomtató használatához kapcsoljunk össze számítógépünket és nyomtatónkat egy párhuzamos kábellel. Az erre vonatkozó konkrét utasítások a nyomtató és/vagy a számítógép kézikönyvében olvashatóak.
Jegyezzük meg, hogy a számítógép melyik párhuzamos portjára csatlakoztattuk a kábelt. FreeBSD alatt az első ilyen port a ppc0 eszköz, a második pedig a ppc1 eszköz lesz és így tovább. A nyomtatóeszköz elnevezése ugyanezt a sémát követi: a /dev/lpt0 lesz az első párhuzamos porton levő nyomtató stb.
A soros csatolófelületet használó nyomtatók beüzemeléséhez először egy soros kábel segítségével kapcsoljuk össze a számítógépünkkel. Ennek pontos részleteit a nyomtató és/vagy a számítógépünk kézikönyvében találhatjuk meg.
Ha nem vagyunk benne biztosak, hogy milyen a “megfelelő soros kábel”, próbáljunk az alábbiak alapján dönteni:
A modem kábele a két oldalán levő, egymásnak megfelelő tüskéket közvetlenül összeköti. Ezt a típust nevezik “DTE-DCE” kábelnek.
A null-modem kábel bizonyos érintkezőket rendesen, másokat pedig fordítva köt össze (például a küldőt a fogadóval), illetve némelyeket rövidre zár közvetlenül a csatlakozón belül. Ez a típus a “DTE-DTE” kábel.
Néhány speciális nyomtató esetén előfordul még a soros nyomtatókábel, amely leginkább a null-modem kábelekhez hasonlít, azonban az ott rövidre zárt csatornák itt a nekik megfelelő érintkezőknek továbbítanak jeleket.
Emellett még a nyomtató előlapján vagy az alján található kapcsolók segítségével be kell állítanunk a nyomtatóhoz tartozó kommunikációs paramétereket is. Itt válasszuk azt a bps (a bitek száma másodpercenként) értéket, amelyet még a számítógépünk és a nyomtatónk is egyaránt képes támogatni. Válasszunk 7 vagy 8 adatbitet, páros, páratlan vagy kikapcsolt paritásbitet és 1 vagy 2 stopbitet. Ekkor tudjuk megadni a forgalomirányítási protokollt is: lehet kikapcsolt, XON/XOFF (ez az ún. “sávon belüli” vagy “szoftveres”) forgalomirányítás. Ne felejtsük el ezeket a beállításokat a most következő szoftveres beállítások elvégzése során sem.
Ebben a fejezetben tárgyaljuk a FreeBSD-ben található LPD nyomtatási rendszer működéséhez és a nyomtatáshoz szükséges szoftveres beállításokat.
Íme az elvégzendő lépések rövid vázlata:
Amennyiben szükséges, állítsuk be a rendszermagunkat a nyomtató által használt portra. Ehhez A rendszermag beállítása szakaszban olvashatjuk el, mit is kell pontosan tenni.
Ha párhuzamos portot használunk, akkor állítsuk be, hogy a párhuzamos port miként fog kommunikálni. A párhuzamos port kommunikációs módjának beállítása című szakasz tárja fel ennek részleteit.
Próbáljuk ki, hogy ezek után az operációs rendszer képes-e adatot küldeni a nyomtatónak. A nyomtató kommunikációjának ellenőrzése szakaszban kapunk erre pár javaslatot.
Az /etc/printcap állomány felhasználásával állítsuk be a nyomtatónkhoz az LPD-t. Erről a fejezet további részei adnak majd felvilágosítást.
Az operációs rendszer magja eszközök egy adott csoportjával képes együttműködni, amelyben a soros és párhuzamos felületen csatlakozó nyomtatók is megtalálhatóak. Azonban ha a rendszermag nem ismeri fel még valamelyiket, akkor a soros vagy párhuzamos portok használatához külön támogatásra van szükség.
Így tudjuk megnézni, hogy a jelenleg használt rendszermag támogatja-e a soros csatolófelületet:
# grep sioN /var/run/dmesg.boot
Itt az N nullától kezdődően adja meg a soros port sorszámát. Amennyiben látunk valami ilyesmit:
sio2 at port 0x3e8-0x3ef irq 5 on isa sio2: type 16550A
Ez azt jelenti, hogy a rendszermag sikeresen észlelte a portot.
A párhuzamos csatolófelület támogatásáról így győződhetünk meg:
# grep ppcN /var/run/dmesg.boot
Itt az N nullától kezdődően sorszámozza a párhuzamos portot. Ha eredményül valami hasonlót kapunk:
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode ppc0: FIFO with 16/16/8 bytes threshold
Ez arra utal, hogy a rendszermagunk tud a portról.
Előfordulhat azonban, hogy az operációs rendszer csak akkor fogja észrevenni a nyomtatásra használt soros vagy párhuzamos portot, ha átállítjuk a rendszermagunkat.
A soros port támogatásának beállításához olvassuk el a rendszermag beállításáról szóló szakaszt. A párhuzamos port támogatásához szintén olvassuk el ugyanazt a szakaszt és a most következőt.
A párhuzamos csatolófelület használata esetén választhatunk, hogy a FreeBSD milyen módon tartsa a kapcsolatot a nyomtatóval: megszakításokkal vezérelje (interrupt-driven), vagy esetleg folyamatosan kérdezgesse (polled). A FreeBSD általános meghajtója (lpt(4)) a ppbus(4) alrendszert használja, ami a portot a ppc(4) meghajtón keresztül vezérli.
A megszakítás alapú módszer a GENERIC rendszermagban alapértelmezés. Ilyenkor az operációs rendszer egy megszakításkérés felhasználásával értesül arról, hogy a nyomtató mikor áll készen adatok fogadására.
A lekérdezéses módszer használata során az operációs rendszer folyamatosan érdeklődik a nyomtató rendelkezésre állásáról. Amikor erre pozitív megerősítést kap, akkor a rendszermag újabb adatokat küld.
A megszakításos módszer valamivel gyorsabb, azonban cserébe lefoglal egy értékes IRQ vonalat. A HP újabb nyomtatói állítólag nem működnek megfelelően ilyen módban, valamilyen (pillanatnyilag még nem teljesen tisztázott) időzítési probléma miatt. Ezért az ilyen nyomtatóknak is valószínűleg a lekérdezéses módszert kell használniuk. Más nyomtatók pedig, habár működnek mind a két módszerrel, hihetetlenül lassúak a megszakításokkal.
Kétféleképpen állíthatjuk be a kommunikációs módot: a rendszermagon keresztül, vagy az lptcontrol(8) segédprogrammal.
A rendszermagban így állíthatjuk be a kommunikációt:
Írjuk át a rendszermag beállításait tartalmazó állományt. Keressük meg benne a használt párhuzamos portnak megfelelően a ppc0, ppc1 (második párhuzamos port) vagy ppc2 (harmadik párhuzamos port) bejegyzést, és engedélyezzük.
A megszakításos mód használatához nyissuk meg a /boot/device.hints állományt, és az N helyére írjuk be a
hint.ppc.0.irq="N"
sorba a megfelelő IRQ számát. A rendszermag beállításait tartalmazó állománynak tartalmaznia kell a ppc(4) meghajtót is:
device ppc
A lekérdezéses mód használatához a /boot/device.hints állományból távolítsuk el a következő sort:
hint.ppc.0.irq="N"
Némely esetben azonban ennyi még nem lesz elég a port lekérdezéses beállításához. Ugyanis ha a hozzá tartozó meghajtó az acpi(4), akkor ez fogja felismerni, kezelni és a nyomtatóhoz tartozó portok hozzáférési módját vezérelni. A problémát ezért gyakran érdemes az acpi(4) beállításai között is keresni.
Mentsük el az állományt. Konfiguráljuk be, fordítsuk le és telepítsük az új rendszermagot. Ennek pontos részleteit a rendszermag beállításáról szóló fejezetben olvashatjuk.
A kommunikáció módjának beállítása az lptcontrol(8) programmal:
A megszakításos mód beállításához írjuk be:
# lptcontrol-i
-d
/dev/lptN
ahol az lptN a nyomtatóhoz tartozó eszköz neve.
A lekérdezéses mód beállításához írjuk be:
# lptcontrol-p
-d
/dev/lptN
ahol az lptN a nyomtatóhoz tartozó eszköz neve.
Ha ezeket a parancsokat berakjuk az /etc/rc.local állományunkba, akkor azzal a rendszer minden egyes indítása során beállítjuk a számunkra megfelelő módot. Erről többet az lptcontrol(8) man oldaláról tudhatunk meg.
Még mielőtt nekilátnánk a nyomtatási rendszer beállításának, bizonyosodjuk meg róla, hogy az operációs rendszer képes adatokat továbbítani a nyomtatónak. Sokkal könnyebb egymástól függetlenül megvizsgálni a kommunikáció és a nyomtatási rendszer működését.
A nyomtatót úgy tudjuk kipróbálni, ha küldünk neki valamilyen szöveget. Az lptest(1) tökéletesen megfelelő akkor, ha olyan nyomtatónk van, amely azonnal kinyomtatja a kapott szöveget. Ez a program 96 sorban létrehozza mind a 96 kinyomtatható ASCII karaktert.
A PostScript (vagy más egyéb nyelvet ismerő) nyomtatóknak azonban ennél kifinomultabb próbára van szüksége. Erre a célra tökéletesen megfelel egy olyan kisebb PostScript programocska, mint például ez:
%!PS 100 100 moveto 300 300 lineto stroke 310 310 moveto /Helvetica findfont 12 scalefont setfont (Remek! Ez mukodik!) show showpage
Ezt a PostScript kódot nyugodtan elmenthetjük egy állományba, amelyet aztán a későbbi szakaszokban megjelenő példák szerint használni is tudunk majd.
Megjegyzés: A kézikönyvben a nyomtató nyelve alatt leginkább egy PostScript-szerű nyelvet értünk, nem pedig a Hewlett Packard PCL típusú nyelvét. Habár a PCL nagyon sokra képes, hiszen keverhetjük még benne akár a programokat és a nyers szövegeket is. Ezzel szemben a PostScript nem képes nyers szöveget kinyomtatni, ezért az ilyen típusú nyomtatók működtetéséhez külön támogatásra van szükségünk.
Ebben a szakaszban megtudhatjuk, hogy FreeBSD alatt miként ellenőrizzük a párhuzamos portra csatlakozó nyomtatók működését.
A párhuzamos porton levő nyomtató kipróbálásához:
A su(1) segítségével váljunk root felhasználóvá.
Küldjünk a nyomtatónak valamilyen adatot.
Ha a nyomtató képes nyers szöveget fogadni, akkor használjuk az lptest(1) programot. Ehhez gépeljük be:
# lptest > /dev/lptN
ahol az N nullától kezdődően a párhuzamos port sorszáma.
Ha a nyomtató PostScript vagy más nyomtatási nyelvet ismer, akkor egy apró programot kell küldenünk neki. Ehhez írjuk be:
# cat > /dev/lptN
Ezután soronként írjuk be a programot, de vigyázzunk, mert az Enter vagy a Return lenyomása után már nem tudjuk kijavítani! A program begépelése után nyomjuk meg a Ctrl+D vagy bármely más olyan billentyűkombinációt, amivel ki tudunk lépni.
Ezt a programot belerakhatjuk egy állományba is, amire aztán adjuk ki az alábbi parancsot:
# cat állomány > /dev/lptN
ahol az állomány a nyomtatóra küldendő program neve lesz.
Ezután a nyomtató megkezdi a nyomtatást. Ne aggódjunk, ha netalán valami furcsán nézne ki, mert a későbbiekben ezt még úgyis rendbetesszük.
Ebben a szakaszban megtudhatjuk, hogyan ellenőrizzük a FreeBSD és soros portra kötött nyomtató kapcsolódását.
Így tudjuk kipróbálni a soros porton csatlakozó nyomtatónkat:
A su(1) paranccsal váljunk root felhasználóvá.
Nyissuk meg az /etc/remote állományt. Tegyük hozzá a következő sort:
printer:dv=/dev/port:br#bps:pa=paritás
ahol a port a soros porthoz tartozó eszközleíró neve (ttyd0, ttyd1, stb.), a bps a nyomtató által használt adatátviteli sebesség, végül a paritás a nyomtatóhoz használt paritás (ami lehet even (páros), odd (páratlan), none (nincs), vagy zero (nulla)).
Íme egy olyan soros nyomtató beállítása (printer néven), amely sebessége 19 200 bps, a harmadik portra csatlakozik és nem használ paritást:
printer:dv=/dev/ttyd2:br#19200:pa=none
Kapcsolódjunk a nyomtatóhoz a tip(1) segítségével. Ennek parancsa:
# tip printer
Ha az iménti lépés nem működne, próbálkozzunk az /etc/remote állomány újbóli módosításával, és a /dev/cuaaN eszköz helyett használjuk a /dev/ttydN eszközt!
Küldjünk adatot a nyomtatónak.
Ha a nyomtató képes nyers szöveget nyomtatni, akkor használjuk az lptest(1) segédprogramot. Gépeljük be:
% $lptest
Ha a nyomtató a PostScript vagy egy hozzá hasonló nyomtatási nyelven kommunikál, akkor a nyomtatónak egy rövid programot kell küldenünk. Soronként gépeljük be a programot, azonban vigyázzunk arra, hogy a törlés és minden más szerkesztésre használt billentyű a nyomtató számára is értelmes lehet. Az is előfordulhat, hogy a program küldését egy speciális jelsorozattal tudjuk csak lezárni. A PostScript nyomtatók esetén ilyenkor elegendő a Ctrl+D billentyűk együttes lenyomása.
Vagy tehetjük az egész programot egy állományba, amihez aztán írjuk be ezt:
% >állomány
ahol az állomány a programot tartalmazó állomány neve. Miután a tip(1) elküldte az állományt, nyomjuk le a lezáráshoz szükséges billentyűkombinációt.
Most már meg kellene jelennie valaminek a nyomtatón. Az még nem számít, pontosan mi is lesz az — később még majd úgyis beállítjuk.
Csatlakoztattuk a nyomtatónkat, a működtetéséhez beállítottuk a rendszermagot (amennyiben erre szükségünk volt), és tudtunk neki adatokat küldeni. Most már készen állunk arra, hogy LDP alkalmazáson keresztül beállítsuk a nyomtató hozzáférésének vezérlését.
Az LPD beállításait az /etc/printcap állományban találjuk. Az LPD nyomtatási rendszer minden egyes művelet előtt beolvassa ezt az állományt, ezért a benne végzett módosítások szinte azonnal életbe is lépnek.
A printcap(5) tartalma könnyen érthető, a /etc/printcap állományt egyszerűen módosíthatjuk a kedvenc szövegszerkesztőnkkel. A felépítése teljesen megegyezik a többi hozzá hasonló állományéval: ilyenek például a /usr/share/misc/termcap és a /etc/remote. Az itt alkalmazott formátum teljes leírását a cgetent(3) man oldalon találjuk.
A nyomtatási rendszer egyszerű beállítása az alábbi lépésekből áll:
Adjunk nevet (és még néhány álnevet) a nyomtatónak, írjuk ezeket az /etc/printcap állományba. A nevekről A nyomtató elnevezése című szakaszban kapunk felvilágosítást.
A(z alapból bekapcsolt) fejléclapokat az sh tulajdonság megadásával kapcsolhatjuk ki. A részleteket A fejléclapok letiltása című szakaszban találjuk.
Hozzunk létre egy nyomtatási könyvtárat, és adjuk meg a helyét az sd tulajdonság beállításával. A nyomtatási könyvtár létrehozása című szakaszban fogunk erről többet mondani.
Állítsunk be egy nyomtató által használt /dev könyvtárbeli leírót, és az lp tulajdonsággal adjuk meg az /etc/printcap állományban. Erről részletesebben A nyomtatóeszköz azonosítása című szakaszban olvashatunk. Ha a nyomtató soros porton keresztül csatlakozik, az ms# tulajdonsággal még meg kell adnunk A nyomtatási rendszer kommunikációs paraméterei szakaszban tárgyaltakat is.
Helyezzünk el egy szűrőt a beérkező nyers szövegek számára. Erről A szövegszűrő telepítése című szakasz értekezik.
Az lpr(1) parancs segítségével próbáljuk ki a nyomtatást. Ennek pontos részleteit a Próbáljuk ki! és a Hibakeresés című fejezetekben találhatjuk meg.
Megjegyzés: A magasabb szintű nyomtatók, mint például a PostScript nyomtatók nem képesek közvetlenül nyers szöveget nyomtatni. Az imént felvázolt egyszerű beállítási séma feltételezi, hogy csak olyan állományokat fogunk nyomtatni a nyomtatón, amelyeket meg is ért.
A felhasználók gyakran arra számítanak, hogy bármelyik általuk elérhető nyomtatón képesek nyers szöveget kinyomtatni. Az LPD alkalmazással kapcsolatban álló programok is általában ugyanezt az elgondolást követik. Ha egy saját nyelvvel rendelkező nyomtatót akarunk telepíteni, de a nyomtató saját nyelvén és a nyers szöveg formájában érkező nyomtatási feladatok is rendesen ki akarjuk nyomtatni, akkor mindenképpen javasoljuk, hogy illeszünk még egy további lépést is ebbe a sorba: illesszünk a rendszerbe egy nyers szövegről automatikusan PostScript (vagy más egyéb) nyelvre tolmácsoló programot. Erről a Szöveges nyomtatási feladatok PostScript nyomtatókon című fejezetben olvashatunk.
Az első (egyszerű) lépés a nyomtatónk nevének kiválasztása. Igazából nem számít, mennyire kifejező vagy éppen hóbortos nevet adunk neki, hiszen emellett még számos álnévvel is illethetjük.
Az /etc/printcap állományban megtalálható nyomtatók egyikének legalább az lp álnévvel rendelkeznie kell, mivel ez lesz az alapértelmezett nyomtató neve. Tehát ha a felhasználó nem adja meg sem a PRINTER környezeti változót, sem pedig az LPD-vel kapcsolatban álló aktuális parancsban a használni kívánt nyomtató nevét, akkor a rendszer az lp nevűt fogja keresni.
Ezenkívül általában még gyakran adnak egy olyan álnevet is a nyomtatónak, ahol annak teljes leírása, többek közt a gyártmánya és a típusa szerepel.
Ahogy sikerült nevet és álneveket adni a nyomtatónak, írjuk is be ezeket az /etc/printcap állományba. Itt a nyomtató neveit balról kezdjük felsorolni, mindegyik álnevet egy függőleges vonallal válasszunk el, és az utolsó után tegyünk pontosvesszőt.
A most következő példában egy olyan vázt mutatunk be az /etc/printcap állományhoz, amelyben két nyomtatót (egy Diablo 630 márkájú sornyomtatót és egy Panasonic KX-P4455 típusú PostScript lézernyomtatót) adunk meg:
# # /etc/printcap (rose) # rattan|line|diablo|lp|Diablo 630 Line Printer: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:
Ebben a példában az első nyomtató neve rattan, és ehhez tartozik még a line, diablo, lp, és Diablo 630 Line Printer álnév. Mivel itt soroltuk fel az lp álnevet is, ezért a rendszerben ez lesz az alapértelmezett nyomtató. A második nyomtató neve bamboo, és álnevei többek közt a ps, PS, S, panasonic, valamint a Panasonic KX-P4455 PostScript v51.4.
Az LPD nyomtatási rendszer alapértelmezés szerint minden egyes feladathoz fejléclapot készít. Ez a lap szép nagy betűkkel tartalmazza a nyomtatási feladatot kiadó felhasználó nevét, a gépet, amiről küldték, és a feladat nevét. Sajnálatos módon ez azonban inkább akadályozza a hibakeresést a nyomtató beállításában, ezért most inkább kapcsoljuk ki ezeket.
Ha le akarjuk tiltani a fejléclapokat, az /etc/printcap állományban adjuk meg az sh (úgymint “suppress header pages”) tulajdonságot. Íme egy példa az sh tulajdonsággal bővített /etc/printcap állományra:
# # /etc/printcap (rose) - sehol sem lesznek fejléclapok # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:
Ebben a példában megfigyelhetjük a helyes felírási módot: az első sor a bal szélső oszlopban kezdődik, az azt követő sorok pedig bentebb. Minden bejegyzésben az utolsó kivételével mindegyik sor egy visszaper (backslash) karakterrel zárul.
A nyomtatási rendszerünk beállításának következő lépése a nyomtatási könyvtár létrehozása. Ez egy olyan könyvtár, ahová a különböző nyomtatási feladatok kerülnek a feldolgozásuk előtt, valamint ahol a nyomtatási rendszer többi állománya lakozik.
A nyomtatási rendszer adatait tároló könyvtárakat tartalmuk gyakori változása miatt általában a /var/spool könyvtárba szokás tenni. Ezen könyvtárak tartalmát nem szükséges menteni sem. Az mkdir(1) parancs futtatásával egyszerűen újra létre tudjuk hozni.
Általában minden nyomtatóhoz külön létre szoktak hozni egy könyvtárat az adott nyomtató nevén. Erre példa:
# mkdir /var/spool/nyomtatónév
Azonban ha a hálózatunkon rengeteg nyomtató található, akkor érdemes inkább egyetlen könyvtárat használni, amelyet az LPD számára tartunk fenn.
# mkdir /var/spool/lpd # mkdir /var/spool/lpd/rattan # mkdir /var/spool/lpd/bamboo
Megjegyzés: Amennyiben fontos nekünk a felhasználói nyomtatások titkosságának megóvása, érdemes levédenünk a nyomtatási könyvtárat, így az nem lesz mindenki által elérhető. A nyomtatási könyvtárak tulajdonosa egyedül és kizárólag a daemon felhasználó és a daemon csoport legyen, és hozzá olvasási, írási és keresési engedélyekkel rendelkezzen. Ezt fogjuk most beállítani a példáinkban szereplő nyomtatóinkhoz is:
# chown daemon:daemon /var/spool/lpd/rattan # chown daemon:daemon /var/spool/lpd/bamboo # chmod 770 /var/spool/lpd/rattan # chmod 770 /var/spool/lpd/bamboo
Végezetül az /etc/printcap állományban ezeket a könyvtárakat se felejtsük el megadni az LPD-nek. Itt a nyomtatási könyvtár nevét az sd tulajdonsággal írjuk le:
# # /etc/printcap (rose) - a nyomtatási könyvtárak hozzáadása # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:
Vegyük észre, hogy a nyomtató neve ugyan a sor elején kezdődik, azonban a hozzá tartozó összes többi sor mind bentebb kezdődik és egy visszaper (backslash) karakterrel választjuk le.
Ha az sd tulajdonsággal nem adunk meg semmilyen nyomtatási könyvtárat, akkor ennek az értéke alapértelmezés szerint a /var/spool/lpd lesz.
A Hardveres beállítás című szakaszban már beazonosítottuk, hogy a FreeBSD a /dev könyvtárban melyik eszközleírón keresztül fogja megszólítani a nyomtatót. Most ideje ugyanezt tudatni az LPD démonnal is. Így amikor a nyomtatási rendszer végre szeretne hajtani egy nyomtatási feladatot, a szűrőprogram nevében ezt az eszközt nyitja meg (ahol a szűrőn keresztül továbbítjuk az adatokat a nyomtató felé).
Az lp tulajdonság segítségével a /etc/printcap állományban soroljuk fel a nyomtatók /dev könyvtárban található leíróit.
Az eddig használt példánkban most tételezzük fel, hogy a rattan nevű nyomtató az első párhuzamos porton található, míg a bamboo nevű a hatodik soros porton. Ebben a helyzetben így kellene kiegészítenünk az /etc/printcap állományunkat:
# # /etc/printcap (rose) - a használni kívánt eszközök # beazonosítása # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyd5:
Az LPD alapértelmezés szerint a /dev/lp eszközt fogja használni, ha nem adjuk meg az lp tulajdonságot az /etc/printcap állományban. A /dev/lp azonban a FreeBSD-ben jelenleg nem létezik.
Ha a telepítendő nyomtatónk valamelyik párhuzamos portra csatlakozik, akkor innen akár tovább is léphetünk A szövegszűrő telepítése című szakaszra. Ha viszont nem, kövessük a most következő szakaszban szereplő utasításokat.
A soros portra csatlakozó nyomtatóknál az LPD képes beállítani az adatátviteli sebességet, a paritást, valamint más egyéb olyan kommunikációs paramétereket, amelyekkel a szűrőprogram adatokat tud továbbítani a nyomtató felé. Ez több szempontból is előnyös, mivel:
Egyszerűen az /etc/printcap állomány átírásával ki tudunk próbálni több kommunikációs beállítást, nem kell magát a szűrőprogramot újrafordítanunk.
A nyomtatási rendszer képes ugyanazt a szűrőt több, különböző kommunikációs beállítást alkalmazó nyomtatóhoz is használni.
Az /etc/printcap állományban az lp tulajdonsággal megadott eszközök soros kommunikációjának beállításait az alábbi tulajdonságok határozzák meg:
Beállítja az eszköz adatátviteli sebességét a sebesség értékre, ahol a sebesség lehet 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19 200, 38 400, 57 600 vagy 115 200 bit másodpercenként (bps).
Beállítja az eszköz megnyitása után használt termináleszköz működésének paramétereit. Az stty(1) man oldalon többet is megtudhatunk róluk.
Miután az LPD megnyitja az lp tulajdonsággal megadott eszközt, beállítja az ms# tulajdonság értéke szerint annak jellemzőit. Itt a parenb, parodd, cs5, cs6, cs7, cs8, cstopb, crtscts, és ixon módok lehetnek lényegesek, melyekről az stty(1) man oldalon többet is megtudhatunk.
Állítsuk most be az egyik képzeletbeli nyomtatónkat a hatodik soros portra. Az adatátviteli sebessége 38 400 bps lesz. A kommunikáció módjánál kapcsoljuk ki a paritást (-parenb), 8 bites karakterek legyenek (cs8), ne legyen modemes vezérlés (clocal) és a hardveres forgalomirányítás legyen crtscts:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:
Most már utasíthatjuk az LPD-t, hogy milyen szövegszűrőt használjon a nyomtatási feladatok eszközre küldéséhez. A szövegszűrő (text filter), vagy más néven bemeneti szűrő (input filter) egy olyan program, amelyet az LPD egy nyomtatási feladat elvégzésekor lefuttat. Amikor az LPD lefuttatja a nyomtatóhoz tartozó szövegszűrőt, a szűrő szabványos bemenetére elküldi az elvégzendő nyomtatási feladatot, és a szabványos kimenetét pedig átirányítja az lp tulajdonság által megadott nyomtatóeszközre. Ennek megfelelően a szűrőnek a szabványos bemenetről kell olvasnia az elvégzendő feladatot, a szabványos kimenetre pedig a ténylegesen nyomtatandót kell kiírnia. A szövegszűrők részleteiről a Hogyan működnek a szűrők? szakasz szól.
A mi esetünkben most szövegszűrőnek tökéletesen megfelel egy olyan rövid szkript, ami a nyomtatóra a nyomtatási feladatot a /bin/cat paranccsal küldi ki. A FreeBSD-ben még találhatunk egy másik szűrőt is, amelynek a neve lpf. Ez képes a törlést és aláhúzást jelző karaktereket érthetővé tenni bizonyos nyomtatók számára. Természetesen itt használhatunk kedvünk szerinti szűrőt is. Az lpf szűrő működésének részleteit Az lpf szövegszűrő című szakaszban fejtjük ki bővebben.
Először is készítsünk egy /usr/local/libexec/if-simple nevű egyszerű szövegszűrő szkriptet. A kedvenc szövegszerkesztőnkkel írjuk bele a következő sorokat:
#!/bin/sh # # if-simple - egyszerű szövegszűrő szkript az lpd-hez # Helye: /usr/local/libexec/if-simple # # Egyszerűen átmásolja a kimenetére a bemenetéről érkező adatokat; nem # fogad el semmilyen paramétert. /bin/cat && exit 0 exit 2
Tegyük indíthatóvá:
# chmod 555 /usr/local/libexec/if-simple
Ezután tájékoztassuk róla az LPD-t az /etc/printcap állományban található if tulajdonság megadásával. Itt most a példánkban szereplő mind a két nyomtatóhoz beillesztjük:
# # /etc/printcap (rose) - a szövegszűrő hozzáadása # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:\ :if=/usr/local/libexec/if-simple:
Megjegyzés: Az if-simple szkript megtalálható a /usr/share/examples/printing könyvtárban.
Az lpd(8) az /etc/rc szkriptből, az lpd_enable változó értékének megfelelően indul el. Ennek értéke alapból NO, vagyis nem. Ha eddig még nem tettük volna meg, akkor az /etc/rc.conf állományba most vegyük fel a következő sort:
lpd_enable="YES"
Ezután vagy indítsuk újra a számítógépünket, vagy pedig adjuk ki az lpd(8) parancsot:
# lpd
Elérkeztünk az LPD egyszerű beállításának utolsó lépéséhez. Sajnos azonban még nem gratulálhatunk, hiszen hátra van még a nyomtató kipróbálása és az esetlegesen előforduló hibák kijavítása. A beállítást úgy tudjuk a legegyszerűbben letesztelni, ha megpróbálunk valamit kinyomtatni. Az LPD rendszerben az lpr(1) parancs használatával tudunk nyomtatási feladatokat kiadni.
A kommunikáció ellenőrzése című szakaszban megtalálhatjuk, hogy hozzunk létre tesztelésre alkalmas szövegeket az lpr(1) és az lptest(1) programok segítségével.
Az LPD beállításainak egyszerű tesztelése:
Írjuk be:
# lptest 20 5 | lpr -P
nyomtatónév
ahol a
nyomtatónév az
/etc/printcap állományban
megadott egyik nyomtató neve (vagy álneve)
lehet. Az alapértelmezett nyomtató
kipróbálásához ne adjunk meg az
lpr(1) parancsnak semmilyen -P
paramétert. Még egyszer
megemlítenénk, hogy amennyiben PostScript
nyomtatót tesztelünk, az előbbi helyett az
lptest(1) paranccsal küldjünk ki egy
PostScript programot. Ehhez tegyük a tesztelő
programunkat egy állományba, majd írjuk
be az lpr
állománynév
parancsot.
A PostScript nyomtató esetén a kiküldött program eredményét kell látnunk. Amennyiben az lptest(1) parancsot használjuk, valami ilyesmire kell számítanunk:
!"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 #$%&'()*+,-./0123456 $%&'()*+,-./01234567 %&'()*+,-./012345678
A nyomtató kimerítőbb teszteléséhez próbáljunk meg nagyobb programokat keríteni valahonnan (ha a nyomtatónk valamilyen nyelven kommunikál) vagy adjunk meg az lptest(1) parancsnak más paramétereket. Például az lptest 80 60 soronként 80 karaktert írat ki 60 sorban.
Amennyiben a nyomtató nem működne, nézzük meg a Hibakereséshez tartozó szakaszt.
Ebben a szakaszban olyan szűrőket mutatunk be, amelyek speciálisan formázott állományok, fejléclapok, hálózati nyomtatás, nyomtatási nyilvántartás vagy szabályozás esetén használhatóak.
Noha az LPD képes hálózati protokollokat, nyomtatási sorokat, hozzáférést és sok minden más nyomtatási feladatot kezelni, a tényleges munka legnagyobb része a szűrőkben (filter) történik. A szűrők olyan programok, amelyek tartják a kapcsolatot a nyomtatóval és megbirkóznak annak eszközfüggőségeivel és különleges igényeivel. Az egyszerű beállítás során egy primitív szövegszűrőt állítottunk be (lásd A szövegszűrő telepítése) — ami annyira egyszerű, hogy szinte minden nyomtatón működnie kell.
Azonban mindahhoz, hogy ki tudjuk használni a különböző átalakítási, nyilvántartási lehetőségeket, valamint a nyomtatók különlegességeit és egyebeit, meg kell értenünk a szűrők pontos működését. Az előbb említett feladatok ugyanis teljesen a szűrő kezében vannak. Ezzel kapcsolatban azonban rossz hír, hogy ezeket a szűrőket nekünk kell megírnunk. A jó hír ellenben az, hogy könnyen találunk ilyen szűrőket, vagy ha éppen nem lelnénk valamelyiket, akkor is gyorsan meg tudjuk ezeket írni.
Sőt, a FreeBSD alapból tartalmaz is egyet, amit a /usr/libexec/lpr/lpf helyen találunk meg, és sok olyan nyomtatóval képes együttműködni, amelyek nyers szöveget tudnak nyomtatni. (Kezeli az állományokban felbukkanó törléseket és tabulálásokat, valamint képes nyilvántartást vezetni, de semmi többet.) Rajta kívül még számos szűrőt és szűrőelemet is találhatunk a FreeBSD Portgyűjteményében.
Lássuk, mit tartogat számunkra ez a rész:
A Hogyan működnek a szűrők? című szakaszban megpróbálunk egyfajta áttekintést adni a szűrők nyomtatási folyamatban betöltött szerepéről. Mindenképpen érdemes elolvasnunk ezt a szakaszt, mivel ebben derül ki, hogy valójában mi is történik a “függöny mögött”, vagyis amikor az LPD használja ezeket a szűrőket. Ezzel a tudással el tudjuk kerülni vagy éppen nyakon tudjuk csípni azokat a problémákat, amelyek a nyomtatóinkhoz telepített szűrők hozzáadása során adódhatnak.
Az LPD alapból arra számít, hogy minden nyomtató képes nyers szöveget nyomtatni. Ez gondot okoz a PostScript (és minden más nyelv alapú) nyomtatók esetén, mivel azok nem képesek nyers szöveget nyomtatni. Szöveges nyomtatási feladatok PostScript nyomtatókon című szakaszban viszont fény derül rá, hogyan kerekedjünk felül ezen. Feltétlenül olvassuk el, ha PostScript nyomtatónk van.
A PostScript számos program közkedvelt kimeneti formátuma, sőt gyakran maguk a felhasználók is szeretnek ilyen programokat írni. Sajnos azonban a PostScript nyomtatók egyáltalán nem olcsók. A PostScript szimulációja nem PostScript nyomtatókon című szakaszban megtudhatjuk, miképp tudjuk úgy módosítani a szűrőt, hogy nem PostScript nyomtatókon is tudjunk PostScript programokkal nyomtatni. Ezt a szakaszt akkor érdemes elolvasni, ha nincs PostScript nyomtatónk.
A Konverziós szűrők
című szakaszban eláruljuk, miként
lehetséges automatizálni a
különböző
állományformátumok és a
nyomtatók által érthető
formátumok közti konverziókat, legyen az
grafikus vagy betűszedésre vonatkozó
adat. A szakasz elolvasása során
megismerjük, hogyan tudjuk a nyomtatónkat
képessé tenni az
lpr -t
paranccsal troff
adatok, vagy a lpr -d
paranccsal a TeX DVI állományainak, esetleg
az lpr -v
paranccsal
raszteres képek nyomtatására és
így tovább. Csak ajánlani tudjuk ennek
elolvasását.
A Kimeneti szűrők című szakaszban kivesézzük az LPD egyik kevésbé használt lehetőségét is, a kimeneti szűrőket. Hacsak nem fejléclapokat akarunk készíteni (lásd Fejléclapok), akkor ezt a szakaszt nyugodtan kihagyhatjuk.
Az lpf szövegszűrő szakaszban bemutatásra kerül a FreeBSD-ben alapból megtalálható lpf szűrő, amely egy sornyomtatóknál (vagy az így viselkedő lézernyomtatóknál) használható egyszerű szövegszűrő. Ha nyers szövegek nyomtatásánál meg akarjuk oldani a nyomtatási feladatok nyilvántartását, vagy a törlés karakter láttán a nyomtatónk füstölni kezdene, akkor mindenképpen érdemes belemerülnünk az lpf titkaiba.
Megjegyzés: A most következő szkriptek mindegyike megtalálható a /usr/share/examples/printing könyvtárban.
Ahogy már korábban is jeleztük, a szűrő egy olyan végrehajtható program, amelyet az LPD indít el, amikor a nyomtatóval eszközfüggetlen módon kommunikál.
Amikor az LPD egy feladat elvégzése során ki akar nyomtatni egy állományt, akkor elindít egy ilyen szűrőprogramot. A szűrő szabványos bemenetére elküldi a kinyomtatandó állományt, a szabványos kimenetét a nyomtatóra, a szabványos hibajelzéseit pedig egy naplóállományba irányítja (ez utóbbit az /etc/printcap állományban az lf tulajdonsággal adhatjuk meg, vagy alapértelmezés szerinti a /dev/console állományba kerül).
Az LPD a használni
kívánt szűrőt és annak
paramétereit az /etc/printcap
állományban felsoroltak vagy az lpr(1)
parancssorában megadottak szerint választja ki.
Például, ha a felhasználó a
lpr -t
parancsot adja ki,
akkor az LPD a
célként megadott nyomtatónál
szereplő tf tulajdonság
által megadott troff szűrőt kezdi el
használni. Amennyiben a felhasználó
egyszerűen csak nyers szöveget akar nyomtatni, akkor
az if szűrőnek kellene elindulnia
(ez viszont csak részben igaz: lásd Kimeneti szűrők).
Háromfajta szűrő jelenhet meg az /etc/printcap állományban:
A szövegszűrő (text filter), ami a hagyományos szöveges nyomtatásért felelős, és amit az LPD dokumentációjában érdekes módon bemeneti szűrőnek (input filter) hívnak. Mivel az LPD arra számít, hogy minden nyomtató alapból képes kinyomtatni bármilyen nyers szöveget, ezért a szövegszűrő feladata, hogy a nyomtató számára gondoskodjon a tabulátorok, törlések és más egyéb speciális karakterek megfelelő kezeléséről. Emellett ha olyan helyen vagyunk, ahol szükség van a nyomtatási feladatok nyilvántartására is, a szövegszűrő ennek megoldására is képes, méghozzá úgy, hogy összeszámolja a kinyomtatott sorokat, és elosztja ezeket a nyomtató által oldalanként nyomtatott sorok számával. Egy szövegszűrő a következő paraméterekkel indulhat:
szűrőnév [-c] -w szélesség -l hossz -i behúzás -n hozzáférés -h gépnév nyilvántartás
ahol a
-c
akkor jelenik meg, ha egy nyomtatási feladatot az
lpr -l
paranccsal adunk át
az /etc/printcap állományban definiált pw (page width, avagy oldalszélesség) tulajdonság értéke, ami alapbeállítás szerint 132
a pl (page length, avagy oldalhossz) tulajdonság értéke, amely az alapbeállítás szerint 66
az lpr -i
parancs megadása során használt
behúzás mértéke, ami
alapból 0
a nyomtatást végző felhasználó hozzáférésének megnevezése
a gép neve, amiről a nyomtatási feladat érkezett
ez a nyilvántartást tároló állomány af tulajdonsággal definiált neve
A konverziós szűrők (conversion filter) egy adott állományformátumot hoznak a nyomtató számára értelmes formára. Például ditroff adatok közvetlenül ugyan nem nyomtathatóak, azonban a ditroff állományokhoz tudunk telepíteni egy olyan szűrőt, amely a ditroff adatokat a nyomtató számára is emészthető és nyomtatható formájúvá teszi. A Konverziós szűrők című szakasz tud ezekről többet mondani. Ilyen esetekben kérhetünk nyilvántartást. A konverziós szűrők az alábbi paraméterekkel indulhatnak:
szűrőnév -x pixelszélesség -y pixelmagasság -n hozzáférés -h gépnév nyilvántartás
ahol a pixelszélesség a px tulajdonság értékéből (ami alapból 0), a pixelmagasság a py tulajdonság értékéből (ami alapból szintén 0) származik.
A kimeneti szűrő (output filter), ami csak akkor aktív, ha a szövegszűrő nem, vagy ha engedélyeztük fejléclapok nyomtatását. Tapasztalatom szerint az ilyen szűrőket ritkán használják. A Kimeneti szűrők című szakasz mutatja be a működésüket. Ekkor csupán két paraméterünk van:
szűrőnév -w szélesség -l hosszúság
amik rendre megegyeznek a szövegszűrők
-w
és -l
paramétereivel.
A szűrők ki is tudnak lépni a következő kódokkal (exit status):
A szűrő sikeresen kinyomtatta az állományt.
A szűrőnek nem sikerült kinyomtatnia az állományt, azonban szeretné, ha az LPD újból megpróbálkozna vele. Az LPD tehát ebben az esetben újraindítja a szűrőt.
A szűrőnek nem sikerült kinyomtatnia az állományt, és nem is kívánja újra megpróbálni. Ekkor az LPD eldobja az állományt.
A FreeBSD kiadásokban megtalálható /usr/libexec/lpr/lpf szövegszűrő képes a kapott szélesség és hossz paraméterekkel megállapítani az oldaltöréseket és a nyomtató használatát nyilvántartani, amihez a hozzáférés, gépnév és nyilvántartás adatait használja fel.
Amikor majd igyekszünk mellé újabb szűrőket beszerezni, ne felejtsük el ellenőrizni, hogy együtt tudnak-e működni az LPD-vel. Ha a válasz igen, akkor a fentebb említett paraméterek mindegyikét ismerniük kell. Az általános használatra készült szűrők készítése során mi magunknak is be kell tartanunk ezeket az elvárásokat.
Ha csak egyedül dolgozunk a számítógépen és PostScript (vagy bármilyen más nyelvet ismerő) nyomtatónk van, valamint megígérjük, hogy soha nem küldünk sem mi, sem pedig nem küldetünk semmilyen más programmal nyers szöveget a nyomtatóra, akkor átléphetjük ezt a szakaszt.
Ha viszont egyaránt akarunk küldeni PostScript programot és nyers szöveget tartalmazó nyomtatási feladatot a nyomtatónak, akkor ehhez kénytelenek vagyunk a rendszerünket beállítani. Először is szükségünk van szövegszűrőre, ami megállapítja, hogy a frissen érkezett nyomtatási feladat nyers szöveget vagy PostScript programot tartalmaz-e. Minden PostScript-alapú feladat a %! karaktersorozattal kezdődik (a többi esetben olvassuk a nyomtató leírását). Szóval, ha a nyomtatandó állomány első két karaktere ilyen, akkor egy PostScript programmal van dolgunk és közvetlenül továbbküldhetjük a nyomtatási feladatot a nyomtatónak. Minden más esetben a szűrőnek előbb át kell alakítania a szöveget PostScript nyelvre.
Hogyan érhetjük el mindezt?
Ha soros nyomtatónk van, akkor erre a feladatra az lprps parancs tökéletes. Az lprps egy olyan PostScript szűrő, amely mind a két irányban képes közvetíteni. Folyamatosan rögzíti egy állományba a nyomtató állapotát, így a felhasználók és rendszergazdák pontosan látják a nyomtató jelenlegi állapotát (például “toner low” (a toner hamarosan kifogy) vagy “paper jam” (a papír beragadt)). Ami viszont sokkal lényegesebb, hogy a psif nevű program képes megmondani az érkező nyomtatási feladat valódi típusát, és ennek megfelelően meg tudja hívni nyers szöveg átalakítására a textps (egy másik program, amit a lprps mellé kapunk) parancsot. Ezután az lprps elküldi a feladatot a nyomtatónak.
Az lprps a FreeBSD Portgyűjteményének része (lásd A Portgyűjtemény), ezért a használni kívánt papír méretétől függően pillanatok alatt magunk is letölhetjük, fordíthatjuk és telepíthetjük a print/lprps-a4 és print/lprps-letter csomagok valamelyikét. Az lprps telepítése után egyszerűen csak adjuk meg a psif elérési útvonalát. Ha tehát telepítettük a Portgyűjteményből az lprps csomagot, akkor egy soros portra csatlakozó PostScript nyomtató esetén ezt kell beírnunk az /etc/printcap állományba:
:if=/usr/local/libexec/psif:
Ezenkívül még az rw tulajdonsággal meg kell mondanunk az LPD-nek, hogy a nyomtatót írásra és olvasásra nyissa meg.
Amennyiben a PostScript nyomtatónk a párhuzamos porton csatlakozik (és amiért a nyomtatónk nem képes az lprps által igényelt kétirányú kommunikációra), szövegszűrőként a következő szkriptet fogjuk használni:
#!/bin/sh # # psif - PostScript vagy nyers szöveg nyomtatása PostScript nyomtatón # Ez a szkriptes változat, NEM pedig az lprps-hez mellékelt szűrő # (a /usr/local/libexec/psif állomány)! # IFS="" read -r first_line first_two_chars=`expr "$first_line" : '\(..\)'` if [ "$first_two_chars" = "%!" ]; then # # PostScript: nyomtassuk ki. # echo "$first_line" && cat && printf "\004" && exit 0 exit 2 else # # Nyers szöveg: alakítsuk át, majd nyomtassuk ki. # ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0 exit 2 fi
A fentebb szereplő szkriptben a textps programot használjuk a nyers szövegek PostScript programokra alakításához, de helyette bármilyen más konvertáló programot is igénybe vehetünk. A FreeBSD Portgyűjteményében (lásd A Portgyűjtemény) találhatunk erre a célra egy a2ps nevű programot is, amit esetleg érdemes lehet közelebbről megnéznünk.
A PostScript a magas színvonalú betűszedés és nyomtatás de facto szabványa. Emellett azonban a PostScript egy költséges szabvány is. Az Aladdin Enterprises-nak hála azonban létezik egy hozzá hasonló szabad szoftver, a Ghostscript, amely képes FreeBSD-n is futni. A Ghostscript képes a legtöbb PostScript állomány olvasására, megjelenítésére mindenféle eszközökön, beleértve a PostScriptet nem ismerő nyomtatókat is. A Ghostscript és egy speciális szövegszűrő telepítésével el tudjuk érni, hogy egy nem PostScript nyomtató valódi PostScript nyomtatóként viselkedjen.
Ha telepíteni szeretnénk, a Ghostscript megtalálható a FreeBSD Portgyűjteményében. Innen tehát magunk is könnyedén le tudjuk tölteni, fordítani és telepíteni.
A PostScript nyomtatás szimulációjához először egy szűrő segítségével észre kell vennünk, hogy egy PostScript formátumú állományt készülünk kinyomtatni. Ha nem ilyen a nyomtatási feladat, akkor egyenesen a nyomtatóra küldjük, azonban minden más esetben először a Ghostscript segítségével átalakítjuk egy olyan formátumba, amit a nyomtató is képes feldolgozni.
Nézzünk erre egy példát: a most
következő szövegszűrő a Hewlett
Packard DeskJet 500-as nyomtatóihoz
használható. Más nyomtató
esetén cseréljük ki a gs
(Ghostscript) parancs
-sDEVICE
paraméterét a neki
megfelelőre. (A telepített
Ghostscript által ismert
nyomtatók listáját a
gs -h
paranccsal
kérdezhetjük le.)
#!/bin/sh # # ifhp - Ghostscripttel szimulált Postscript nyomtatás DeskJet 500-on # Helye: /usr/local/libexec/ifhp # # LF karaktereket CR+LF-ként kezeljük (elkerülve ezzel a HP/PCL # nyomtatókon a "lépcsőzést"): # printf "\033&k2G" || exit 2 # # Az állomány első két karakterének beolvasása # IFS="" read -r first_line first_two_chars=`expr "$first_line" : '\(..\)'` if [ "$first_two_chars" = "%!" ]; then # # Ez PostScript: küldjük át a Ghostscripten és nyomtassuk ki. # /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \ -sOutputFile=- - && exit 0 else # # Nyers szöveg vagy HP/PCL, ezért küldjük át közvetlenül. Az utolsó # lap kidobásához küldünk még egy lapdobást is. # echo "$first_line" && cat && printf "\033&l0H" && exit 0 fi exit 2
Befejezésül az if tulajdonságon keresztül értesítenünk kell erről a szűrőről az LPD-t is:
:if=/usr/local/libexec/ifhp:
Készen is vagyunk! Most már nyugodtan beírhatjuk, hogy lpr sima.szöveg vagy lpr akármi.ps, mind a kettőnek ki kell tudnia nyomtatódnia.
Miután elvégeztük az Alacsonyszintű nyomtatóbeállítás című szakaszban leírt beállításokat, a (nyers ASCII szöveg mellett) kedvenc állományformátumainkhoz is minden bizonnyal szeretnénk telepíteni néhány konverziós szűrőt.
A konverziós szűrők segítségével állományok mindenféle formátumait könnyen ki tudjuk nyomtatni. Például tegyük fel, hogy sokat dolgozunk a TeX betűszedő rendszerrel és egy PostScript nyomtatónk van. Minden alkalommal, amikor egy DVI állományt hozunk létre a TeX forrásból, azt közvetlenül még nem tudjuk a nyomtatóra küldeni. Ehhez a következő parancsokat kell kiadnunk:
% dvips hínár-elemzés.dvi % lpr hínár-elemzés.ps
Ha telepítünk egy konverziós szűrőt a DVI állományokhoz, meg tudjuk spórolni ezt a manuális átalakítási lépést azzal, hogy átadjuk ezt a feladatot az LPD-nek. Így ezután mindig, amikor egy DVI állományt akarunk kinyomtatni, csupán egyetlen lépésre lesz szükségünk:
% lpr -d
hínár-elemzés.dvi
Az LPD-nek a
-d
paraméterrel adjuk meg, hogy a
nyomtatás előtt hajtsa végre a DVI
átalakítását. A Formázási
és konverziós
beállítások című
szakaszban találjuk meg a többi
konverziós opciót.
Minden olyan konverziós beállításhoz, amit használni szeretnénk a nyomtatóval, telepítenünk kell egy konverziós szűrőt (conversion filter) és meg kell adnunk a nevét az /etc/printcap állományban. A konverziós szűrők az egyszerű nyomtatóbeállításnál szereplő szövegszűrőkhöz hasonlítanak (lásd A szövegszűrő telepítése szakasz) azzal a kivétellel, hogy a nyers szövegek kinyomtatása helyett ezek a szűrők a nyomtató számára értelmes formátumra alakítják az állományokat.
Olyan konverziós szűrőket telepítsünk, amelyekre gyakran szükségünk lehet. Ha például sok DVI adatot szeretnénk nyomtatni a jövőben, akkor használjunk DVI konverziós szűrőt, vagy ha sok troff formátumú adatot nyomtatunk, akkor minden bizonnyal jól fog jönni egy troff szűrő.
A következő táblázat foglalja össze azokat a szűrőket, amelyekkel az LPD képes együttműködni. Megtudhatjuk, hogy az /etc/printcap állományban melyik tulajdonság tartozik hozzájuk és hogyan hívjuk meg ezeket az lpr paranccsal:
Állománytípus | Tulajdonság az /etc/printcap állományban | Az lpr kapcsolója |
---|---|---|
cifplot | cf | -c |
DVI | df | -d |
plot | gf | -g |
ditroff | nf | -n |
FORTRAN forrás | rf | -f |
troff | tf | -f |
raster | vf | -v |
nyers szöveg | if | nincs, -p , vagy
-l |
A példánkban tehát a
lpr -d
parancs
használata arra utal, hogy a nyomtatónak az
/etc/printcap
állományból a df
tulajdonságára van
szüksége.
Minden hadakozás ellenére
állíthatjuk, hogy a FORTRAN források
és a plot által használt szövegek
formátuma napjainkra már elavultnak
tekinthető. Ezért ezekhez az opciókhoz a
saját szűrőinkkel tetszőleges
formázási lehetőségeket
rendelhetünk. Például, ha Printerleaf
(az Interleaf asztali kiadványszerkesztő
formátuma) állományokat
szeretnénk közvetlenül nyomtatni, akkor
valószínűleg nem lesz
szükségünk plot állományokra.
Ezért a gf tulajdonságnak
megadhatunk egy Printerleaf konverziós
szűrőt, amelyen keresztül aztán a
felhasználók az
lpr -g
paranccsal
Printerleaf állományokat tudnak
nyomtatni.
Mivel a konverziós szűrők az alap FreeBSD rendszeren kívülre kerülnek, ezért ezeket minden valószínűség szerint valahol a /usr/local könyvtárban találjuk meg. Ezen belül is általában a /usr/local/libexec könyvtárban fordulnak elő, mivel ezeket csak az LPD futtatja, senki másnak nincs rájuk szüksége.
A konverziós szűrők aktiválásához az /etc/printcap állományban egyszerűen adjuk meg az alkalmas tulajdonságoknak megfelelő szűrők elérési útvonalait.
A példánkban most felveszünk egy DVI konverziós szűrőt a bamboo nevű nyomtatóhoz. Itt ismét láthatjuk a korábban használt /etc/printcap állományt, ahol most azonban a bamboo nevű nyomtatónál hozzáadtunk egy df tulajdonságot:
# # /etc/printcap (rose) - egy df szűrő hozzáadása a bamboo # nevű nyomtatóhoz # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:\ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
A DVI szűrő ebben az esetben a /usr/local/libexec/psdf néven elérhető aprócska szkript. Ezt találhatjuk benne:
#!/bin/sh # # psdf - DVI szűrő PostScript nyomtatóhoz # Helye: /usr/local/libexec/psdf # # Az lpr -d parancs hatására hívódik meg # exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"
A szkript a dvips parancsot
szűrőként futtatja (az -f
paraméterrel) a szabványos bemenetről,
ahova a nyomtatási feladatot is kapja. Ezután
elindítja az lprps PostScript
szűrőt (lásd a Szöveges
nyomtatási feladatok PostScript
nyomtatókon című szakaszt) az
LPD által átadott
paraméterekkel. Az lprps parancs
ezekkel a paraméterekkel tartja nyilván az
így kinyomtatott lapokat.
A konverziós szűrők telepítésének nincs bevált receptje, ezért ebben a szakaszban bemutatunk rájuk néhány működő illusztrációt. Ezeket tudjuk felhasználni saját szűrők elkészítésére. Vagy ha megtehetjük, használjuk közvetlenül ezeket.
Ebben a példa szkriptben Hewlett Packard LaserJet III-Si nyomtatókhoz hozunk létre raszteres (pontosabban GIF formátumú) konverziós szűrőt:
#!/bin/sh # # hpvf - GIF állományokat konvertál át HP/PCL-be, majd kinyomtatja # Helye: /usr/local/libexec/hpvf PATH=/usr/X11R6/bin:$PATH; export PATH giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \ && exit 0 \ || exit 2
Úgy működik, hogy a GIF állományt először PNM (portable anymap), utána PGM (portable graymap), majd PBM (portable bitmap) formátumúra alakítja, amiből végül LaserJet/PCL-kompatibilis adat lesz.
Ez lesz a hozzá tartozó /etc/printcap állomány:
# # /etc/printcap (orchid) # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif:\ :vf=/usr/local/libexec/hpvf:
A most következő szkript a groff betűszedű rendszerből érkező troff adatokat alakítja át a bamboo nevű PostScript nyomtató számára:
#!/bin/sh # # pstf - a groff troff adait alakítja PS-re, majd kinyomtatja # Helye: /usr/local/libexec/pstf # exec grops | /usr/local/libexec/lprps "$@"
A szkript az lprps parancs segítségével kommunikál a nyomtatóval. Ha a nyomtatónk párhuzamos porton csatlakozik, akkor helyette ezt a szkriptet használjuk:
#!/bin/sh # # pstf - a groff troff adatait alakítja PS-re, majd kinyomtatja # Helye: /usr/local/libexec/pstf # exec grops
Kész is! A szűrő életrekeltéséhez mindössze ennyit kell beillesztenünk az /etc/printcap állományba:
:tf=/usr/local/libexec/pstf:
Most pedig jöjjön a FORTRAN szerelmeseinek szívét megmelengető szkript. Ez egy olyan szövegszűrő, amely bármelyik nyers szöveget közvetlenül kezelni tudó nyomtató esetén működik. A teak nevű nyomtatóhoz helyezzük be:
#!/bin/sh # # hprf - FORTRAN szövegszűrő LaserJet 3si-hez # Helye: /usr/local/libexec/hprf # printf "\033&k2G" && fpr && printf "\033&l0H" && exit 0 exit 2
Az /etc/printcap állományban a teak nyomtatóhoz a következő sor beírásával tudjuk engedélyezni ezt a szűrőt:
:rf=/usr/local/libexec/hprf:
Most pedig következzen egy utolsó, de az eddigieknél valamivel összetettebb példa. Ebben a korábban bemutatott teak nevű LaserJet nyomtatóhoz fogunk hozzáadni egy DVI szűrőt. Először is következzen a művelet egyszerűbb része: bővítsük ki az /etc/printcap állományt a DVI szűrő helyének megadásával:
:df=/usr/local/libexec/hpdf:
Ezután következzék a nehezebb rész: a szűrő elkészítése. Ehhez szükségünk lesz egy DVI-ről LaserJet/PCL-re alakító programra. A FreeBSD Portgyűjteményében (lásd A Portgyűjtemény) találunk is egyet: a csomag neve print/dvi2xx. A csomag telepítésével megkapjunk a nekünk kellő dvilj2p programot, ami képes DVI-t LaserJet IIp, LaserJet III és a LaserJet 2000 típusok által ismert kódokra fordítani.
A dvilj2p felhasználásától függetlenül a hpdf néven létrehozni kívánt szűrőnk még így is bonyolult lesz, hiszen a dvilj2p nem tud olvasni a szabványos bemenetről, hanem mindenáron egy állománnyal akar dolgozni. Sőt, olyan állománnyal, amelynek .dvi kiterjesztése van, ezért még a /dev/fd/0 (vagyis a szabványos bemenethez tartozó eszközleíró) használata is akadályokba ütközik.
Üröm még az örömünkben, hogy a /tmp könyvtárat sem tudjuk felhasználni ideiglenes link létrehozására: a szimbolikus linkeket a bin felhasználó és csoport birtokolja, a szűrőt pedig a daemon felhasználó futtatja. A /tmp könyvtárban rááadásul csak a tulajdonosaik képesek állományokat átnevezni vagy törölni (sticky bit). Ezért a szűrő ugyan létre tudna hozni egy linket, azonban ezt a feladata végeztével nem lesz majd képes törölni, mivel a link egy másik felhasználóhoz tartozik.
Ezért a szűrő az aktuális könyvtárban fogja létrehozni ezt a szimbolikus linket, ami jelen esetünkben a nyomtatási rendszer által használt könyvtár lesz (ezt az /etc/printcap állomány sd tulajdonságával adjuk meg). Itt remekül el tudják végezni a feladataikat a szűrők, különösen mivel (néha) több hely van itt, mint a /tmp könyvtárban.
Végül lássuk magát a szűrőt:
#!/bin/sh # # hpdf - DVI adat nyomtatása HP/PCL nyomtatón # Helye: /usr/local/libexec/hpdf PATH=/usr/local/bin:$PATH; export PATH # # Létrehozunk egy függvényt az átmeneti állományok törlésére. Ezek # az aktuális könyvtárban jönnek létre, ami pedig a nyomtatási # rendszer adott nyomtatóhoz tartozó könyvtára lesz. # cleanup() { rm -f hpdf$$.dvi } # # Létrehozunk egy függvényt a súlyos hibák kezelésére: írassunk ki # egy adott üzenetet és lépjünk ki a 2-es hibakóddal. Ezzel üzenünk # az LPD-nek, hogy ne hajtsa végre újra a nyomtatási feladatot. # fatal() { echo "$@" 1>&2 cleanup exit 2 } # # Ha a felhasználó eltávolítja a nyomtatási feladatot a sorból, akkor az # LPD egy SIGINT jelzést fog küldeni, ezért próbáljuk meg azt elkapni # (néhány más egyéb jelzéssel együtt), így még tudjuk törölni az # ideiglenesen # létrehozott állományokat. # trap cleanup 1 2 15 # # Gondoskodjunk róla, hogy a feladat megkezdésekor még egyetlen # használt állomány sem létezik. # cleanup # # Kössük össze a szabványos bemenetet egy DVI állománnyal (amit # majd nyomtatni akarunk). # ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0" # # LF = CR+LF # printf "\033&k2G" || fatal "Cannot initialize printer" # # Alakítsuk át az adatot és nyomtassunk. A dvilj2p által visszaadott érték # nem túlságosan megbízható, ezért ne is foglalkozzunk vele. # dvilj2p -M1 -q -e- dfhp$$.dvi # # Takarítsunk el magunk után és lépjünk ki szabályosan # cleanup exit 0
A konverziós szűrők sokat segítenek egy kényelmes nyomtatási környezet kialakításában, azonban a használatukhoz a felhasználóknak (az lpr(1) parancson keresztül) egyenként hivatkozniuk kell rájuk. Ha a rendszerünk felhasználói nem eléggé műveltek számítástechnikai téren, akkor még egy szűrő megadása is zavaró lehet számukra. Ami még ennél is rosszabb, hogy egy rosszul megadott szűrő hatására a nyomtató sem fogja jól kezelni az adott állomány formátumát és erre válaszul akár többszáz lapot is pillanatok alatt kiköphet magából.
A konverziós szűrők telepítése helyett gyakran csak egy (alapértelmezett) szövegszűrőre van szükségünk, amely kideríti a nyomtatandó állomány pontos formátumát és magától elindítja a neki megfelelő konverziós szűrőt. Ilyen esetekben például a file parancs pont a hasznunkra válhat. Persze bizonyos állománytípusok közt nagyon nehéz különbséget tenni — de ezekre továbbra is adhatunk még külön konverziós szűrőket.
A FreeBSD Portgyűjteményében találhatunk egy apsfilter elnevezésű szövegszűrőt (print/apsfilter), ami képes ilyen automatikus konverzióra. Képes felismerni a nyers szöveget, PostScript programokat, DVI és szinte bármilyen formátumú állományokat, lefuttatni rájuk a megfelelő átalakításokat, majd kinyomtatni ezeket.
Az LPD nyomtatási rendszer kezel egy eddig még nem tárgyalt szűrőtípust is: ez a kimeneti szűrő. A kimeneti szűrő a szövegszűrőhöz hasonlóan csak nyers szöveg nyomtatására használatos, de tartalmaz néhány egyszerűsítést. Ha kizárólag csak kimeneti szűrőket alkalmazunk, akkor:
Az LPD az egész nyomtatási feladathoz egyetlen kimeneti szűrőt fog használni, nem pedig minden állományhoz külön.
Az LPD a kimeneti szűrő számára nem nyújt semmilyen segítséget a nyomtatási feladaton belül szereplő állományok kezdetének vagy végének megállapításában.
Az LPD a szűrőnek nem adja át sem a felhasználó hozzáférését, sem pedig gépnevét, ezért nyilvántartásra nem alkalmas. Mindent összegezve lényegében csak két paramétert kap meg:
szűrőnév -wszélesség -lhossz
ahol a szélesség a kérdéses nyomtató pw tulajdonságából, a hossz pedig a pl tulajdonságából származik.
Ne bűvöljön el minket a szűrő egyszerűsége! Ha például a nyomtatási feladatban minden állományt újabb lapon szeretnénk kezdeni, akkor azt kimeneti szűrővel nem tudjuk megoldani. Erre a célra használjunk szövegszűrőt (másik nevén bemeneti szűrőt), lásd A szövegszűrő telepítése szakaszt. Továbbá, a kimeneti szűrő valójában sokkal bonyolultabb abban a tekintetben, hogy a beérkező adatok közül neki kell kikeresnie a speciális jelentéssel bíró karaktereket ugyanúgy, ahogy az LPD helyett saját magának kell küldenie a jelzéseket.
Azonban a kimeneti szűrők használata elkerülhetetlen, ha például fejléclapokat akarunk nyomtatni, és esetleg még különböző inicializálásra használatos speciális kódokat vagy karakterláncokat akarunk ez előtt kiküldeni. (Ellenben badarság a fejléclapoktól követelni a felhasználó adatait, hiszen az LPD a kimeneti szűrőnek nem ad semmilyen erre vonatkozó információt.)
Egyetlen nyomtató esetén az LPD egyaránt lehetővé teszi kimeneti, szöveg- és más egyéb szűrők használatát. Ilyenkor az LPD a kimeneti szűrőn keresztül csak a fejlécet tartalmazó oldal (lásd a Fejléclapok szakaszt) nyomtatását indítja el. Ezt követően az LPD arra számít, hogy a kimeneti szűrő két karakter, az ASCII 031 és az ezt követő ASCII 001, hatására leállítja magát. Amikor tehát a kimeneti szűrő érzékeli ezt a két karaktert (031, 001), akkor a SIGSTOP jelzéssel le kell állnia. Miután az LPD lefuttatta a többi szűrőt, a SIGCONT jelzéssel újraindítja a kimeneti szűrőt.
Ha van kimeneti szűrőnk, de nincs szövegszűrőnk, akkor az LPD minden további feldolgozás nélkül továbbadja a nyomtatási feladatot a kimeneti szűrőnek. Ahogy már korábban is említettük, a kimeneti szűrő a nyomtatási feladatban levő összes állományt egymás után nyomtatja ki, lapdobások vagy bármilyen más papírmozgatás nélkül, ezért valószínűleg nem ez kell nekünk. Az esetek túlnyomó részében ehhez elég egy szövegszűrő.
A korábban szövegszűrőként beharangozott lpf program kimeneti szűrőként is képes funkcionálni. Ha szükségünk lenne egy gyorsan összecsapható kimeneti szűrőre, és nem akarunk a speciális karakterek, valamint a jelzések küldésével elidőzni, akkor próbálkozzunk az lpf használatával. Az lpf parancsot mellesleg becsomagolhatjuk egy olyan szkriptbe is, amely elvégzi a nyomtató számára szükséges inicializálást.
A FreeBSD bináris terjesztéséhez
mellékelt /usr/libexec/lpr/lpf
program egy szövegszűrő (bemeneti
szűrő), amely képes (az lpr
-i
paranccsal hozzáadott
nyomtatási feladatokat) tabulálni, (az
lpr -l
paranccsal felvett
nyomtatási feladatokban) a
vezérlőkaraktereket figyelemen kívül
hagyni, a nyomtatási feladatban előforduló
törlések és behúzások
nyomtatási pozícióját
igazítani és nyilvántartani a
kinyomtatott lapokat. Kimeneti szűrőként is
tud viselkedni.
Az lpf szűrő rengeteg nyomtatási környezetben felhasználható. Habár nem képes a nyomtatónak inicializáló jelsorozatokat küldeni, mégis könnyű olyan szkriptet írni, amely elvégzi ezeket a hiányzó kezdeti beállításokat, majd lefuttatja az lpf szűrőt.
Az lpf akkor lesz képes helyesen számolni a kinyomtatott lapokat, ha ehhez az /etc/printcap állományban jól töltjük ki a pw és pl tulajdonságokat. Ezen értékek segítségével határozható meg ugyanis, hogy mennyi szöveg fért rá egy lapra és így mennyi lapot emésztett fel az adott felhasználó által küldött nyomtatási feladat. A nyomtatás nyilvántartásával kapcsolatban A nyomtató használatának nyilvántartása című szakaszt érdemes elolvasni.
Ha nagyon sok felhasználónk van, és sok különböző nyomtatót is használnak, akkor előbb vagy utóbb minden bizonnyal elkerülhetetlenné fog válni a fejléclapok használata.
A fejléc-, vagy más néven munka- vagy elválasztó lapok segítik elő az elvégzett nyomtatási feladatok azonosítását. A többi dokumentumtól eltérő módon, általában dekoratív keretben, nagy, vastag betűkkel nyomtatódnak ki, hogy a halomnyi papír között a felhasználók könnyedén megtalálhassák az elküldött nyomtatási feladataik eredményét. Természetesen a fejléclapok nyilvánvaló hátulütője, hogy így minden nyomtatási feladathoz még egy lappal többet kell elhasználni és mivel gyakorlatilag néhány percnél tovább nincs is rájuk szükség, meglehetősen hamar a kukába kerülnek. (A fejléclapok nyomtatási feladatonként jönnek létre, nem pedig a nyomtatási feladatokban levő állományokhoz egyenként, ezért nem is akkora pazarlás ez.)
Az LPD rendszer képes magától fejléclapokat készíteni a nyomtatásokhoz, amennyiben a nyomtatónk képes közvetlenül nyers szöveget nyomtatni. Ha PostScript nyomtatónk van, akkor ennek legyártásához egy külső programra van szükségünk, lásd a Fejléclapok PostScript nyomtatókon szakaszt.
Az Alacsonyszintű nyomtatóbeállítás című szakaszban az /etc/printcap állományban a sh (úgy mint “suppress header”) tulajdonsággal kikapcsoltuk a fejléclapokat. A fejléclapok engedélyezéséhez mindössze el kell távolítanunk ezt az sh tulajdonságot.
Ez túl egyszerű, nemde?
Igen, ez így van. Előfordulhat, hogy szükségünk van még egy olyan kimeneti szűrőre is, amely inicializáló karaktereket küld a nyomtatónak. Íme egy példa ehhez a Hewlett Packard PCL-kompatibilis nyomtatói esetére:
#!/bin/sh # # hpof - Kimeneti szűrő Hewlett Packard PCL-kompatibilis nyomtatókhoz # Helye: /usr/local/libexec/hpof printf "\033&k2G" || exit 2 exec /usr/libexec/lpr/lpf
Az of tulajdonsággal adjuk meg a kimeneti szűrőt. A Kimeneti szűrők szakaszban erről részletesebben is olvashatunk.
A korábban ismertetett teak nevű nyomtatóhoz most az alábbi minta /etc/printcap állományt mellékeljük. Itt engedélyeztük a fejléclapokat és hozzátettük az iménti kimeneti szűrőt:
# # /etc/printcap (orchid) # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif:\ :vf=/usr/local/libexec/hpvf:\ :of=/usr/local/libexec/hpof:
Mostantól kezdve, amikor a
felhasználók a teak
nyomtatón akarnak nyomtatni, minden nyomtatási
feladathoz kapni fognak egy fejléclapot. Amennyiben a
kedves felhasználók mégis keresgetni
akarják a nyomtatásaikat, az lpr
-h
paranccsal tetszőleges
módon letilthatják azokat. Az lpr(1)
többi hasonló opcióját A fejléclapokhoz
tartozó beállítások
szakaszban találjuk.
Megjegyzés: Az LPD minden fejléclap után egy lapdobást küld. Ha erre a célra a nyomtatónk egy eltérő karaktert vagy karaktersorozatot használ, akkor azt az /etc/printcap állomány ff tulajdonságával határozhatjuk meg.
A fejléclapok engedélyezésével az LPD egy ún. hosszú fejlécet fog készíteni, vagyis a felhasználót, a gépet és a nyomtatási feladatot jól azonosító, egész lapot kitöltő óriási betűket. Erre egy példa (amiben a rose nevű gépről kelly küldte az “outline” elnevezésű nyomtatási feladatot):
k ll ll k l l k l l k k eeee l l y y k k e e l l y y k k eeeeee l l y y kk k e l l y y k k e e l l y yy k k eeee lll lll yyy y y y y yyyy ll t l i t l oooo u u ttttt l ii n nnn eeee o o u u t l i nn n e e o o u u t l i n n eeeeee o o u u t l i n n e o o u uu t t l i n n e e oooo uuu u tt lll iii n n eeee r rrr oooo ssss eeee rr r o o s s e e r o o ss eeeeee r o o ss e r o o s s e e r oooo ssss eeee Job: outline Date: Sun Sep 17 11:04:58 1995
Ezt követően az LPD elküld még egy lapdobást is, ezért maga a nyomtatási feladat eredménye egy új oldalon fog kezdődni (kivéve, ha az /etc/printcap állományban az adott nyomtatóhoz tartozó bejegyzésben megadtuk az sf (úgy mint “suppress form feeds”, vagyis a lapdobások letiltása) tulajdonságot.
Ha úgy jobban tetszik, akkor az /etc/printcap állományban a sb tulajdonsággal az LPD utasítható rövid fejlécek készítésére is. Ilyenkor a fejléclap tartalma mindössze ennyi lesz:
rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995
Alapértelmezés szerint az LPD először a fejléclapot, majd a nyomtatási feladatot végzi el. Ezt a sorrendet az /etc/printcap állományban a hl (header last) tulajdonsággal meg tudjuk fordítani.
Az LPD által felkínált fejléclapok használata során egyetlen irányelv érvényesül a nyilvántartásukban: a fejléclapok költségmentesek.
De miért?
Azért, mert kizárólag csak a kimeneti
szűrő képes a fejléclapok
viselkedését irányítani, ami
viszont nem képes semmiféle
nyilvántartásra, hiszen nem kapja meg az ehhez
szükséges felhasználói-
vagy gépnév
információkat, illetve
nyilvántartásokat. Emiatt fogalma sincs
róla, hogy kit terhel az adott nyomtató
használata. Úgy sem tudjuk megoldani a
problémát, ha a szöveg- vagy
konverziós szűrőkben (ahol már
rendelkezésünkre állnak a
felhasználó és a gépének
adatai) “növeljük a lapok számát
eggyel” a nyomtatási feladatban, mivel a
felhasználók az lpr
-h
parancs
használatával kedvük szerint
letilthatják a fejléclapokat. Ezt ugyan
alapvetően a természetet óvni
kívánó felhasználók
részesítik előnyben, de ettől
függetlenül sem erőszakolhatjuk rá
mindenkire.
Az sem elég, ha minden
szűrő létrehozza a saját
fejlécét (amiért aztán
pénzt kérhetnénk). Mivel ha a
felhasználók az
lpr -h
paranccsal le akarják tiltani a fejlécek
használatát, attól a
szűrőkhöz még mindig
létrejönnek, hiszen az
LPD a -h
opcióról semmilyen
értesítést nem küld át a
szűrőknek.
Nos, ilyenkor mitévők legyünk?
A lehetőségeink:
Elfogadjuk az LPD elvét, és nem számítunk fel költséget a fejléclapokra.
Az LPD helyett egy másik nyomtatási rendszert használunk, például az LPRng rendszert. A Más nyomtatási rendszerek című szakaszban kiderül, milyen alternatívák érhetőek el az LPD kiváltására.
Írjunk mi magunk egy intelligens kimeneti szűrőt. Normális esetben a kimeneti szűrők nem valók másra, csupán a nyomtató alaphelyzetbe hozására vagy egyszerűbb karakterkonverziók elvégzésére. Fejléclapokhoz és nyers szöveget tartalmazó nyomtatási feladathoz remekül használható (ahol nincs szöveg- (avagy bemeneti) szűrő). Azonban ha a nyers szövegekhez van szövegszűrőnk, akkor az LPD a kimeneti szűrőt csak a fejléclapokhoz indítja el. Emellett a kimeneti szűrő az LPD által generált fejléc szövegéből képes megmondani, melyik felhasználóhoz és géphez tartozik a szóbanforgó fejléc. A módszer egyetlen bökkenője, hogy a nyilvántartásokat tároló állományról viszont még így se tudunk semmilyen információt szerezni (mivel nem kapjuk meg az af tulajdonsággal beállított állomány nevét). Ha azonban egy rendszerszinten elérhető állományba mentjük ezeket az adatokat, akkor akár bele is drótozhatjuk ezt a kimeneti szűrőbe. A kimeneti szűrőnek az adatok megtalálásában ilyenkor úgy tudunk segíteni, ha az /etc/printcap állományban az sh (rövid fejléc) tulajdonságot állítjuk be. De ez igazából sok hűhó semmiért, és a felhasználók is jobban megbecsülik az olyan nagylelkű rendszergazdát, aki nem számítja fel nekik a fejléclapokat.
Ahogy arról már korábban is szó esett, az LPD képes többféle nyomtató számára is megfelelő, nyers szövegű fejléclapokat készíteni. Persze a PostScript közvetlenül nem képes nyers szövegek nyomtatására, ezért az LPD ezen lehetősége lényegében használhatatlan — többnyire.
Ilyen helyzetben a fejléclapok
használatának nyilvánvaló
módja, hogy minden szövegszűrőt
fejlécek gyártására
utasítunk. Ezek a szűrők a
felhasználóról és a
gépéről kapott
információkból össze tudják
állítani a megfelelő fejléclapot. A
megoldás hátránya, hogy ez még
olyankor is megtörténik, amikor a
felhasználók az
lpr -h
paranccsal
küldik a nyomtatási feladataikat.
Kísérletezzünk egy kicsit ezzel a módszerrel! A most következő szkript három paramétert fogad el (a felhasználó hozzáférést, a gép és a nyomtatási feladat nevét), majd ezekből létrehoz egy egyszerű PostScript formátumú fejlécet:
#!/bin/sh # # make-ps-header - PostScript fejléc létrehozása a szabvány kimenetre # Helye: /usr/local/libexec/make-ps-header # # # Ezek itt a PostScript által használt egységekben vannak megadva # (72/col vagy 28/cm). Írjuk át az általunk használt papírméretre, # A4-re vagy amit éppen használunk: # page_width=612 page_height=792 border=72 # # A paraméterek ellenőrzése. # if [ $# -ne 3 ]; then echo "Usage: `basename $0` <user> <host> <job>" 1>&2 exit 1 fi # # Mentsük el ezeket, leginkább az olvashatóság miatt. # user=$1 host=$2 job=$3 date=`date` # # Küldjük el a PostScript-kódot a szabványos kimenetre. # exec cat <<EOF %!PS % % Gondoskodjunk róla, hogy ne zavarjuk az utánunk következő % felhasználó nyomtatási feladatának végrehajtását. % save % % Csináljunk egy csúf vastag szegélyt, körbe a papíron. % $border $border moveto $page_width $border 2 mul sub 0 rlineto 0 $page_height $border 2 mul sub rlineto currentscreen 3 -1 roll pop 100 3 1 roll setscreen $border 2 mul $page_width sub 0 rlineto closepath 0.8 setgray 10 setlinewidth stroke 0 setgray % % Jelenítsük meg a felhasználó azonosítóját szép, feltűnő % betűkkel. % /Helvetica-Bold findfont 64 scalefont setfont $page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto ($user) show % % Most pedig mutassuk az unalmas részleteket. % /Helvetica findfont 14 scalefont setfont /y 200 def [ (Job:) (Host:) (Date:) ] { 200 y moveto show /y y 18 sub def } forall /Helvetica-Bold findfont 14 scalefont setfont /y 200 def [ ($job) ($host) ($date) ] { 270 y moveto show /y y 18 sub def } forall % % Ennyi lett volna. % restore showpage EOF
Ezzel a szkripttel pedig mindegyik konverziós és szövegszűrő először létrehoz egy fejléclapot, majd elvégzi a felhasználó nyomtatási feladatát. Íme egy korábban már bemutatott DVI szűrő, amit most kiegészítünk a fejléclapok használatával:
#!/bin/sh # # psdf - DVI szűrő PostScript nyomtatóhoz # Helye: /usr/local/libexec/psdf # # Az lpr -d parancs hatására hívódik meg. # orig_args="$@" fail() { echo "$@" 1>&2 exit 2 } while getopts "x:y:n:h:" option; do case $option in x|y) ;; # Ignore n) login=$OPTARG ;; h) host=$OPTARG ;; *) echo "LPD started `basename $0` wrong." 1>&2 exit 2 ;; esac done [ "$login" ] || fail "No login name" [ "$host" ] || fail "No host name" ( /usr/local/libexec/make-ps-header $login $host "DVI File" /usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args
Láthatjuk, hogy a szűrőnek a felhasználói- és a gépnév megállapításához végig kell néznie a paraméterek listáját. Ez lényegében minden más konverziós szűrőnél ugyanígy néz ki. Ez a lista azonban a szövegszűrők esetén némileg eltér (lásd a Hogyan működnek a szűrők? szakaszt).
Már az előbbiekben is tárgyaltuk, hogy
ez a megoldás, habár eléggé
egyszerű, az lpr számára
nem teszi lehetővé a fejléclapok
letiltását (a -h
opció).
Ha a felhasználóink kímélni
akarják a fákat (vagy meg akarják
úszni a fejléclapok égbeszökő
költségeit), akkor ezt nem tudják megtenni,
hiszen a szűrők minden nyomtatási feladathoz
készíteni fognak fejléceket.
Ezt a korlátozást csak úgy tudjuk
elsöpörni, ha bevetjük a A
nyomtató használatának
nyilvántartása szakaszban leírt
cselt, tehát készítünk egy olyan
kimeneti szűrőt, amely megkeresi az LPD-vel
generált fejléceket és létrehozza
azok PostScript változatát. Ha valaki az
lpr -h
paranccsal
küld nyomtatnivalót, akkor
LPD nem készít
hozzá fejléclapot, ahogy a kimeneti
szűrőnk sem. A kimeneti szűrő minden
más esetben beolvassa az LPD
által küldött szöveget és
átküldi a neki megfelelő PostScript
kódot a nyomtatóra.
Ha soros PostScript nyomtatónk van, akkor használhatjuk a psof kimeneti szűrőhöz tartozó lprps parancsot is, ami pontosan az előbbit végzi el. Hozzátennénk azonban, hogy a psof nem számolja a fejléclapokat.
A FreeBSD tud hálozaton is nyomtatni, vagyis tud távoli számítógépeknek is nyomtatási feladatot küldeni. A hálózati nyomtatás kifejezés általánosságban véve két különböző dologra utalhat:
Egy távoli számítógéphez kapcsolt nyomtató hozzáférését. A géphez a nyomtató a hagyományos soros vagy párhuzamos csatolófelületen keresztül kapcsolódik, amit aztán az LPD alkalmas beállításával a hálózaton mindenki számára elérhetővé teszünk. A Távoli számítógépekre csatlakoztatott nyomtatók című szakasz erről szól.
Egy közvetlenül a hálózatra kapcsolt nyomtató hozzáférését. A nyomtató tehát rendelkezik még egy hálózati csatlakozással is a hagyományos soros vagy párhuzamos felület mellett (vagy éppen helyett). Egy ilyen nyomtató a következőképpen működhet:
Elfogadja az LPD kéréseit, és még képes nyomtatási feladatokat is tárolni. Ebben az esetben teljesen egyenértékű egy LPD alkalmazást futtató számítógéppel. Ekkor nincs más teendőnk, csak követnünk kell a Távoli számítógépeken telepített nyomtatók című szakasz utasításait.
Hálózati adatfolyamokkal dolgozik. Ebben az esetben a nyomtatót “hozzá kell kapcsolnunk” a hálózaton található egyik számítógéphez, ami majd a nyomtatási feladatok tárolásáért és folyamatos küldéséért lesz felelős. A Nyomtatók hálózati adatcsatlakozással szakasz az ilyen fajtájú nyomtatók telepítésére tesz néhány javaslatot.
Az LPD nyomtatási rendszer alapból képes más, szintén LPD-t (vagy vele kompatibilis rendszert) futtató számítógépekre nyomtatási feladatokat küldeni. Ezzel lényegében az egyik géphez hozzá tudunk kapcsolni egy nyomtatót, amit aztán a többiek számára elérhetővé teszünk. Ez olyan nyomtatók esetében is működik, amelyek ismerik az LPD által alkalmazott protokollt.
A távoli nyomtatáshoz először telepítsük a nyomtatót valamelyik számítógépre az Alacsonyszintű nyomtatóbeállítás szakaszban leírtak szerint, és ezzel az lesz a nyomtatószerverünk. Ezután, amennyiben szükségesnek találjuk, végezzünk magasabb szintű nyomtatóbeállításokat is. Ne felejtsük el kipróbálni a nyomtatón, hogy rendesen működik az LPD mindegyik olyan beállításával, amit engedélyeztünk. Emellett gondoskodjunk minden olyan jogosultságról is, amivel a helyi számítógépről el tudjuk érni a távoli számítógép által felkínált LPD szolgáltatást (lásd Távoli számítógépekről érkező kérések szabályozása).
Ha olyan nyomtatót használunk, aminek a hálózati felülete kompatibilis az LPD rendszerrel, akkor az előbb említett nyomtatószerver lényegében maga lesz a nyomtató, valamint a nyomtató neve a rajta beállított név. Ezzel kapcsolatban olvassuk el a nyomtatóhoz és/vagy a hálózati csatolójához mellékelt dokumentációt.
Tipp: Amikor a Hewlett Packard Laserjet típusú nyomtatóit használjuk, a text nevű nyomtatónév magától elvégzi a LF és CRLF formátumú sortörések közti átalakítást, ezért ilyenkor nincs szükségünk a hpif szkriptre.
Ezután ha szeretnénk más gépek részére is elérhetővé tenni a frissen telepített nyomtatónkat, adjuk meg mindegyikük /etc/printcap állományában a következőket:
Tetszőlegesen választott nevet, álneveket. Az egyszerűség kedvéért azonban itt érdemes ugyanazokat a neveket választani, mint amit a nyomtatószerveren is használunk.
Szándékosan hagyjuk az lp tulajdonságot üresen (:lp=:).
Hozzunk létre egy nyomtatási könyvtárat, és jelöljük meg a helyét az sd tulajdonsággal. Az LPD itt fogja összegyűjteni a nyomtatási feladatokat, mielőtt elküldené azokat a nyomtatószervernek.
Adjuk meg a nyomtatószerver nevét az rm tulajdonság segítségével.
Az rp tulajdonsággal adjuk meg a nyomtatószerverre csatlakoztatott nyomtató nevét.
Kész! Az /etc/printcap állományban már nem kell megadni konverziós szűrőket, oldalbeállításokat és semmi más egyebet.
Lássunk mindezekre egy példát. A rose nevű számítógéphez két nyomtató csatlakozik, a bamboo és a rattan. Most pedig beállítjuk, hogy az orchid nevű gép felhasználói képesek legyenek ezekkel a nyomtatókkal dolgozni. Ekkor a most következők szerint fog kinézni az orchid (a Fejléclapok engedélyezése szakaszban bemutatott) /etc/printcap állománya. Tartalmazza a teak nevű nyomtató beállításait is, és ehhez fogjuk hozzáadni a rose másik két nyomtatóját:
# # /etc/printcap (orchid) - a rose két (távoli) nyomtatójának # hozzáadása # # # A "teak" egy helyi nyomtató, közvetlenül az orchidhoz # csatlakozik: # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/ifhp:\ :vf=/usr/local/libexec/vfhp:\ :of=/usr/local/libexec/ofhp: # # A "rattan" rose-hoz csatlakozik, így küldhetünk neki nyomtatási # feladatot: # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: # # A "bamboo" is a rose-hoz tartozik: # bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:
Ezután már csak létre kell hoznunk a megfelelő nyomtatási könyvtárakat az orchid nevű gépen:
# mkdir -p
/var/spool/lpd/rattan /var/spool/lpd/bamboo
# chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
# chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo
Mostantól kezdve az orchid felhasználói képesek lesznek nyomtatni a rattan és bamboo nevű nyomtatókon is. Ezért, ha az orchid egyik felhasználója beírja, hogy:
% lpr-P
bamboo-d
sushi-leírás.dvi
Az orchid gépen működő LPD rendszer ezt a nyomtatási feladatot a bemásolja a /var/spool/lpd/bamboo nevű nyomtatási könyvtárba és feljegyzi róla, hogy a nyomtatásához DVI szűrőre lesz szükség. Ahogy rose gépen található bamboo nyomtatási könyvtárában elegendő hely keletkezik, a két LPD átküldi egymás közt a rose nevű gépre az állományt. Ezután az állomány egészen addig várakozik a rose nyomtatási sorában, amíg végezetül kinyomtatásra nem kerül. A rose fogja átalakítani DVI-ről PostScript formátumra átalakítani (mivel a bamboo egy PostScript nyomtató).
Amikor hálózati kártyát vásárolunk a nyomtatónkhoz, általában két változatukkal találkozhatunk: az egyikük nyomtatási rendszerként működik (ez a drágább), a másikuk pedig egyszerűen csak soros vagy párhuzamos csatlakozón továbbítandó adatként közvetíti az adatokat a nyomtató felé (az olcsóbb). A drágábbik változatot az előző, Távoli számítógépekre csatlakoztatott nyomtatók című szakaszban leírtak szerint tudjuk használni.
Az /etc/printcap állományban ugyan meg tudjuk adni, hogy a nyomtató soros vagy párhuzamos portra csatlakozik, és azon keresztül milyen adatátviteli sebességgel (amennyiben soros), forgalomirányítással, tabulálással, sortörési konvenció szerint stb. kommunikáljunk vele. Azonban TCP/IP vagy más hálózati porton ülő nyomtatók adatait itt nem tudjuk kifejteni.
A hálózatra kötött nyomtatók használatához lényegében egy olyan külön kifejlesztett kommunikációs programra van szükségünk, amely a szöveg- vagy konverziós szűrőkhöz hasonló módon hívható meg. Erre rögtön adunk is egy példát: a netprint szkript a szabványos bemenetről beolvassa az összes kinyomtatandó adatot és átküldi azokat a hálózatra csatlakoztatott nyomtatónak. A szkript első paramétereként a nyomtató hálózati nevét adjuk meg, másodiknak pedig portot. Azonban megjegyezzünk, hogy ez csak egyirányú kommunikációt tesz lehetővé (a FreeBSD-től a nyomtatóig). Sok hálózati nyomtató viszont két irányban is képes kommunikálni, ezért érdemes lehet ezt kihasználni (a nyomtató állapotának lekérdezésére, nyilvántartások készítésére stb).
#!/usr/bin/perl # # netprint - A hálózatra csatlakoztatott nyomtató szövegszűrője # Helye: /usr/local/libexec/netprint # $#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>"; $printer_host = $ARGV[0]; $printer_port = $ARGV[1]; require 'sys/socket.ph'; ($ignore, $ignore, $protocol) = getprotobyname('tcp'); ($ignore, $ignore, $ignore, $ignore, $address) = gethostbyname($printer_host); $sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address); socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol) || die "Can't create TCP/IP stream socket: $!"; connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!"; while (<STDIN>) { print PRINTER; } exit 0;
Rengeteg szűrőben fel tudjuk használni ezt a szkriptet. Például tegyük fel, hogy egy Diablo 750-N típusú sornyomtatót csatlakoztattunk a hálózatra, amely az 5100-as porton várja a nyomtatandó adatokat. A hálózati neve most scrivener lesz. Íme a hozzá tartozó szövegszűrő:
#!/bin/sh # # diablo-if-net - Az 5100-as porton figyelő `scrivener' nevű Diablo # nyomtató szövegszűrője. Helye: /usr/local/libexec/diablo-if-net # exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100
Ebben a szakaszban a nyomtató használatának korlázásáról írunk. Az LPD rendszeren keresztül meghatározhatjuk, hogy ki képes helyben vagy távolról hozzáférni a nyomtatóhoz, mennyi másolatot nyomtathat, mennyi és egyenként mekkora nyomtatási feladatokat küldhet.
Az LPD
segítségével a felhasználók
egy állományt könnyen ki tudnak nyomtatni
akár többször is. Ha (például)
a felhasználó egy nyomtatási feladat
kiküldéséhez az lpr
-#5
parancsot használja,
akkor a nyomtatási feladatban levő összes
állományból öt
példányt kap. Ennek
létjogosultságát azonban nekünk kell
megítélni.
Amennyiben úgy érezzük, hogy a
további példányok
készítése csupán felesleges
papír- és tintapazarlás, akkor az
sc tulajdonság
megadásával az
/etc/printcap állományban
kikapcsolhatjuk az lpr(1) -#
lehetőség használatát. Így
amikor a felhasználók a -#
kapcsolóval küldenek el feladatokat a
nyomtatóra, a következőt fogják
tapasztalni:
lpr: multiple copies are not allowed
Fordítása:
lpr: másolatok nyomtatása nem engedélyezett
Vigyázzunk arra, hogy ha távoli számítógépen zajlik a nyomtatás (lásd Távoli számítógépekre csatlakoztatott nyomtatók), akkor az sc tulajdonságot a távoli számítógép /etc/printcap állományában is be kell állítani, máskülönben a felhasználók egy másik számítógépről mindig képesek lesznek több példány nyomtatására.
Nézzünk erre egy példát. Itt most a rose nevű számítógép /etc/printcap állományát vesszük szemügyre. Ebben a rattan egy nagyon szívélyes nyomtató lesz, ezért engedélyezi a másolatok nyomtatását, azonban a bamboo nevű lézernyomtató nála már sokkal válogatósabb lesz, ezért a beállításai közt az sc tulajdonsággal kikapcsoljuk a másodpéldányok nyomtatását:
# # /etc/printcap (rose) - A másolatok korlátozása a "bamboo" # nevű nyomtatón # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:\ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
Az sc tulajdonságot az orchid /etc/printcap állományában is meg kell adni (és ha már itt vagyunk, akkor tegyük meg ugyanezt a teak esetében is):
# # /etc/printcap (orchid) - Nincsenek másodpéldányok sem a helyi # "teak" nyomtatón, sem pedig a távoli "bamboo" nyomtatón teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\ :if=/usr/local/libexec/ifhp:\ :vf=/usr/local/libexec/vfhp:\ :of=/usr/local/libexec/ofhp: rattan|line|diablo|lp|Diablo 630 Line Printer:\ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:
Az sc tulajdonság
használatával ugyan megakadályozzuk az
lpr -#
parancs
teljesítését, azonban ez még
mindig nem óv meg minket attól, hogy a
felhasználók képesek legyenek
többször egymás után lefuttatni az
lpr(1) parancsot, vagy éppen egyetlen
nyomtatási feladatban több állományt
is elküldeni:
% lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign
Számos módszer kínálkozik az effajta visszaélések kivédésére (beleértve a figyelmen kívül hagyást is), lehet velük kísérletezgetni!
A UNIX csoportkezelésével és az /etc/printcap állományban található rg tulajdonság felhasználásával korlátozni tudjuk, ki milyen nyomtatón dolgozhat. Ehhez mindössze annyit kell tennünk, hogy besoroljuk egy csoportba azokat a felhasználókat, amelyek hozzáférhetnek a nyomtatóhoz, és az rg tulajdonsággal megnevezzük azt.
A csoporton kívüli felhasználókat (köztük magát a root felhasználót is) pedig ezután így üdvözli a rendszer, ha megpróbálnak valamit kinyomtatni egy korlátozott felhasználású nyomtatón:
lpr: Not a member of the restricted group
Az üzenet fordítása:
lpr: Nem jogosult felhasználó
Ha erre a távoli számítógépek esetén szükségünk lenne (lásd Távoli számítógépekre csatlakoztatott nyomtatók), akkor tegyük ugyanazt, mint amit az sc (a másodpéldányok letiltása, “suppress multiple copies”) tulajdonság esetén is, vagyis az rg tulajdonságot adjuk meg azokon a távoli számítógépeken is, amelyek hozzá tudnak férni a megosztott nyomtatóhoz.
Például megengedjük, hogy a rattan nevű nyomtatót bárki használhassa, azonban a bamboo nyomtatót csak az artists nevű csoport használhatja. Következzen hát akkor a rose korábbról már ismert /etc/printcap állománya:
# # /etc/printcap (rose) - A bamboo hozzáférésének korlátozása # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
Most ne bántsuk a másik (az orchid nevű gépen levő) /etc/printcap állományt. Így persze az orchid bármelyik felhasználója nyomtathat a bamboo nyomtatón. De ez most egy olyan eset, ahol egyébként lekorlátozzuk a orchid elérését is, ezért az ott beengedett felhasználók már akár használhatják is a nyomtatót. Vagy sem.
Megjegyzés: Minden nyomtatóhoz csak egy ilyen csoportot adhatunk meg.
Ha sok felhasználó szeretne a nyomtatóinkhoz hozzáférni, akkor minden bizonnyal meg akarunk adni egy felső határt a felhasználók által beküldhető nyomtatások méretére vonatkozóan. Mivel a nyomtatási könyvtáraknak otthont adó állományrendszer is egyszer betelhet, ezért mindenképpen érdemes gondoskodni arról, hogy mindenki nyomtatási feladatát el tudjuk rendesen tárolni.
Az LPD az mx tulajdonsággal lehetőséget ad arra, hogy lekorlátozzuk a nyomtatási feladatokban található egyes állományok méretét. Ennek mértékegysége egy BUFSIZ blokk, ami pedig 1024 byte. Ha értékül nullát adunk meg, akkor nincs korlátozás, viszont ha semmit sem rögzítünk, akkor az mx tulajdonság alapértéke, vagyis 1000 blokk lesz a határ.
Megjegyzés: Ez az érték a nyomtatási feladatokban levő egyes állományok méretére vonatkozik, nem pedig a nyomtatási feladatok teljes méretére.
Fontos tudni, hogy az LPD nem dobja vissza a méreten felüli állományokat. Ehelyett a méret alatti részt szépen berakja a sorba és kinyomtatja, a többi pedig elhagyja. Lehetne rajta vitázni, hogy ez mennyire helyes cselekedet.
Példaképpen definiáljunk a korábban használt rattan és bamboo nyomtatóinkhoz ilyen korlátokat. Mivel az artists csoport tagjai hajlamosak nagy PostScript állományokat küldeni, ezért most lekorlátozzuk ezt öt megabyte-ra. A szöveges nyomtatónk esetén azonban nem lesz semmilyen határ:
# # /etc/printcap (rose) # # # Itt nincs korlát a nyomtatási feladatokra: # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:mx#0:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple: # # Öt megabyte a PostScript: # bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
Ismét hozzátesszük, hogy ezek a korlátok csak a helyi felhasználókra vonatkoznak. Amennyiben távolról is el lehet érni ezt a nyomtatót, a távoli felhasználókat nem fog semmilyen korlátozás érinteni. Azokon a számítógépeken is meg kell adnunk az /etc/printcap állományban az mx tulajdonságot. Ehhez a Távoli számítógépekre csatlakoztatott nyomtatók című szakaszban találunk segítséget.
Van még egy speciális módszer, amivel képesek vagyunk szabályozni a távolról érkező kérések méretét. Erről a Távoli számítógépekről érkező kérések szabályozása szakaszban olvashatunk.
Az LPD nyomtatási rendszer több módot is szolgáltat a távolról érkező nyomtatási feladatok szabályozására:
Az /etc/hosts.equiv és /etc/hosts.lpd állományok segítségével beállíthatjuk, hogy mely távoli számítógépektől fogadjon el kéréseket az LPD. Az LPD minden kérés elfogadásakor ellenőrzi, hogy a küldő számítógép címe szerepel-e az említett állományok valamelyikében. Ha nem, akkor az LPD visszautasítja a kérést.
A két állomány felépítése egyszerű, mert bennük minden sorban egy-egy hálózati nevet adunk meg. Hozzátennénk azonban, hogy legyünk óvatosak, mivel az /etc/hosts.equiv állományt az ruserok(3) protokoll is használja, ezért ennek módosítása hatással van az rsh(1) és rcp(1) programok működésére.
Például most nézzük meg a rose /etc/hosts.lpd állományát:
orchid violet madrigal.fishbaum.de
Ennek megfelelően tehát a rose elfogadja az orchid, violet és madrigal.fishbaum.de nevű távoli számítógépek kéréseit. Ha bármilyen más gép próbál hozzáférni a rose által felkínált LPD szolgáltatáshoz, visszautasítja.
Szabályozhatjuk többek közt azt is, hogy mennyi szabad területnek kell fennmaradnia a nyomtatási könyvtárnak otthont adó állományrendszeren. A helyi nyomtató könyvtárában ehhez hozzunk létre egy minfree nevű állományt. Ide írjuk be, mennyi szabad lemezblokk (512 byte-os egység a lemezen) szükségeltetik egy távolról beérkező nyomtatási feladat fogadásához.
Így gondoskodhatunk róla, hogy a távoli felhasználók nem fogják eltömíteni az állományrendszerünket, illetve ezzel egyúttal adhatunk némi előnyt a helyi felhasználóknak is: ők ugyanis még azután is képesek lesznek nyomtatási feladatokat küldeni a nyomtatónak, miután az állományrendszeren található szabad terület mennyisége már rég a minfree állományban szereplő érték alá csökkent.
Példaként most a bamboo nevű nyomtatónkhoz adjunk meg egy ilyen minfree állományt. Ehhez az /etc/printcap állományból tudjuk kideríteni a hozzá tartozó nyomtatási könyvtárat. Lássuk tehát belőle a bamboo bejegyzését:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\ :if=/usr/local/libexec/psif:\ :df=/usr/local/libexec/psdf:
A nyomtatási könyvtárat az sd tulajdonság határozza meg. Úgy állítjuk most be, hogy az LPD számára a távoli nyomtatási feladatok fogadásához ebben a könyvtárban legalább három megabyte (6144 blokk) szabad területnek mindig lennie kell:
# echo 6144 > /var/spool/lpd/bamboo/minfree
Az /etc/printcap állományban megadható rs tulajdonság segítségével korlátozhatjuk a helyi nyomtatókhoz hozzáférni képes távoli felhasználókat. Amikor az rs tulajdonság szerepel egy helyben csatlakozó nyomtató leírásánál, akkor az LPD csak abban az esetben fogad el távoli felhasználóktól nyomtatási feladatot, ha az adott feladatot küldő felhasználónak ugyanazon a néven van a helyi gépen is hozzáférése. Máskülönben az LPD vissza fogja utasítani a kérést.
Ez a tulajdonság különösen fontos olyan környezetben, ahol (például) több szervezeti egység használ egyetlen közös hálózatot és bizonyos felhasználók képesek átlépni szervezeti egységük határait, mivel ha a hozzáférést adunk nekik a rendszereinkhez, akkor képesek a saját helyükről használni ezeket. Ha ehelyett csupán a nyomtatóinkat és a számítógépünk összes erőforrását akarjuk megosztani, akkor létrehozhatunk a számukra olyan “token” hozzáféréseket is, amikhez nem tartozik sem felhasználói könyvtár, sem pedig parancsértelmező (pontosabban a /usr/bin/false).
Tehát szükségünk lenne a nyomtatások költségének elszámolására. Miért is ne tennénk ilyet? A papír és a tinta bizony pénzbe kerül, amihez még hozzájárulnak más egyéb karbantartási költségek is — a nyomtatók dugig vannak mindenféle mozgó alkatrésszel, amelyek előbb-utóbbi el is romlanak. Tegyük fel, hogy a nyomtatóink kapacitása, kihasználtsága és karbantartási költsége alapján már megállapítottunk egy elszámolási egységet (oldalanként, méterenként, akárminként). De hogyan lássunk hozzá a nyomtatások költségének tényleges nyilvántartásához?
Van egy rossz hírünk: az LPD nyomtatási rendszer önmaga nem tud segíteni ebben a feladatban. A nyilvántartás nagyban függ a használt nyomtatóktól, a nyomtatott formátumoktól és nyomtató általunk kiszabott költségeitől.
A nyilvántartás létrehozásához át kell írnunk a nyomtatóhoz tartozó szűrőt (a nyers szövegek költségének felszámításához) és konverziós szűrőket (a különféle formátumok költségei miatt), amikkel aztán számolhatjuk vagy lekérdezhetjük a kinyomtatott lapokat. Egyetlen kimeneti szűrő használatával szinte semmire se megyünk, mivel az nem képes nyilvántartás vezetésére. Erről bővebb útmutatást a Szűrők szakaszban találhatunk.
Általánosságban véve két módon vezethetünk nyilvántartást:
Az időszakos elszámolás a gyakoribb, mivel ez az egyszerűbb. Amikor valaki végrehajt egy nyomtatási feladatot, a szűrő a nyilvántartást tároló állományba feljegyzi a felhasználó azonosítóját, a gépének nevét és a kinyomtatott oldalakat. Ezután minden hónapban, félévben, évben vagy akár tetszőleges időközönként összegyűjtjük a nyomtatók nyilvántartásait és külön feljegyezzük az egyes felhasználók nyomtatásait, majd benyújtjuk róla a számlát. Töröljük az összes naplóállományt, és tiszta lappal kezdjük a következő időszakot.
Az azonnali elszámolás már nem annyira népszerű, mivel nehezebb megvalósítani. Ekkor a felhasználók már közvetlenül a nyomtatás után megkapják a számlát, hasonlóan a lemezkvótákhoz. Meg tudjuk akadályozni ezzel azt is, hogy a felhasználók túlléphessék az előre kiszabott “nyomtatási kvótájukat”, amit persze menet közben lehet ellenőrizni és állítgatni. A felhasználók és kvótájuk nyomonkövetéséhez viszont szükségünk lesz egy kis adatbáziskezelésre is.
Az LPD nyomtatási rendszer mind a két módszer kivitelezéséhez tud segítséget nyújtani, hiszen amikor szűrőket állítunk be (vagyis szinte mindig), lehetőségünk van a nyilvántartást végző programrészleteket is beilleszteni. És ami feltétlenül előnyös: óriási mértékű rugalmasságot ajánl fel a nyilvántartás megvalósításához. Például magunk választhatjuk ki, hogy időszakos vagy azonnali elszámolást alkalmazunk. Meg tudjuk adni, milyen információkat rögzítsünk: felhasználói neveket, számítógépek neveit, a nyomtatási feladatok típusát, vagy a kinyomtatott oldalakat, a felhasznált lapok területét, a nyomtatások időbeli igényeit és így tovább. Ehhez mindössze csak a szűrőket kell módosítani.
A FreeBSD-ben egyből találunk is két programot, amivel pillanatok alatt ki tudunk alakítani egy egyszerű időszakos elszámolási rendszert. Ezek Az lpf szövegszűrő című szakaszban ismertetett lpf és a nyomtatók nyilvántartásait tartalmazó állományok adatainak összegyűjtését és kiértékelését végző pac(8).
Ahogy korábban már leírtuk a szűrőkről szóló szakaszban (Szűrők), az LPD a szöveg- és konverziós szűrőket parancssorból a nyilvántartást tároló állomány nevével indítja el. Ezt a paramétert a szűrők aztán fel tudják használni a nyilvántartások feljegyzéséhez. Az állomány nevét az /etc/printcap állományban szereplő af tulajdonsággal tudjuk megadni, vagy teljes elérési úttal, vagy pedig a nyomtatási könyvtárhoz viszonyítva.
Az LPD az lpf szűrőt a lap szélességének és hosszának megadásával indítja el (ezeket az értékeket a pw és pl tulajdonságokból származtatja). Az lpf ezek felhasználásával meg tudja mondani, mennyi papírt használtunk el. Miután kiküldte az állományt a nyomtatóra, nyilvántartásba is veszi. Ezek a típusú bejegyzések valahogy így néznek ki:
2.00 rose:andy 3.00 rose:kelly 3.00 orchid:mary 5.00 orchid:mary 2.00 orchid:zhang
Minden nyomtatóhoz érdemes külön nyilvántartást vezetni, mivel az lpf nem tartalmaz semmilyen beépített zárolási megoldást, ezért két lpf párhuzamos futtatása könnyen összezagyválhatja a közösen használt nyilvántartások tartalmát. Az /etc/printcap állományban az af=acct tulajdonság megadásával könnyen létre tudunk hozni minden nyomtatóhoz külön nyilvántartást. Ilyenkor minden nyomtató könyvtárában megjelenik egy acct nevű állomány.
Amikor elérkezünk a nyomtatások kiszámlázásához, futtassuk le a pac(8) programot. Ehhez mindössze annyit kell tennünk, hogy átlépünk az elszámolni kívánt nyomtató könyvtárába és begépeljük a pac parancsot. Ekkor kapunk egy ehhez hasonló, dollár alapú kimutatást:
Login pages/feet runs price orchid:kelly 5.00 1 $ 0.10 orchid:mary 31.00 3 $ 0.62 orchid:zhang 9.00 1 $ 0.18 rose:andy 2.00 1 $ 0.04 rose:kelly 177.00 104 $ 3.54 rose:mary 87.00 32 $ 1.74 rose:root 26.00 12 $ 0.52 total 337.00 154 $ 6.74
A pac(8) a következő paramétereket várja:
-Pnyomtató
Az kiértékelendő nyomtató neve. Ez a paraméter csak akkor használható, ha az /etc/printcap állományban az af tulajdonságnak teljes elérési utat adtunk meg.
-c
A felhasználók nevei helyett a fizetendő összeg szerint rendezze a listát.
-m
Hagyja figyelmen kívül a nyilvántartásban szereplő gépek hálózati neveit. Ennek hatására az alpha gépről nyomtató smith meg fog egyezni a gamma gépről nyomtatóval. A beállítás nélkül ez a két felhasználó el fog térni.
-pár
A paraméterként megadott ár dollár értékkel számol oldalanként vagy lábanként az /etc/printcap állományban megadott pc tulajdonság értéke helyett (ami alapból két cent). Az ár lebegőpontos (valós) számként is megadható.
-r
A rendezési sorrend megfordítása.
-s
Hozzon létre egy elszámolást, majd törölje a hozzá kapcsolódó nyilvántartási adatokat.
Csak az adott nevű felhasználók adatait értékelje ki.
A pac(8) által alapértelmezés
szerint generált kimutatásban láthatjuk
az egyes gépekről származó egyes
felhasználók kinyomtatott oldalait. Ha
nekünk viszont nem számít, hogy honnan
küldték a kéréseket (mivel
bárhonnan lehet küldeni), akkor a
pac -m
paranccsal az
alábbi táblázatot
készíttethetjük el:
Login pages/feet runs price andy 2.00 1 $ 0.04 kelly 182.00 105 $ 3.64 mary 118.00 35 $ 2.36 root 26.00 12 $ 0.52 zhang 9.00 1 $ 0.18 total 337.00 154 $ 6.74
Itt megtaláljuk a ténylegesen
kifizetendő összegeket is, amik
kiszámításához a pac(8) az
/etc/printcap állomány
pc tulajdonságát
használja (ez alapból 200, avagy 2 cent
oldalanként). Ezzel a tulajdonsággal
tehát egy cent századrészében
mérve tudjuk megadni az oldalakénti vagy
lábankénti árakat. Ezt a
beállítást természetesen a
pac(8) -p
opciójával
felül tudjuk bírálni. Arra azonban
vigyázzunk, hogy a -p
után
dollárban kell megadnunk az árat. Emiatt
tehát a
# pac -p1.50
parancs szerint minden egyes oldal másfél dollárba fog kerülni. Ezzel az opcióval aztán alaposan megdönthetjük az árakat.
Végezetül megemlítjük, hogy a
pac -s
parancs az
általa létrehozott elszámolást egy
külön állományba menti, amelynek a
neve nagyjából megegyezik a
nyilvántartást végzőével, de
_sum-ra (mint “summary”, azaz
elszámolás) végződik. Ezután
nullázza a nyilvántartást. Amikor a
pac(8) programot újra lefuttatjuk,
újból beolvassa a korábban elmentett
elszámolásokat, majd hozzászámolja
a többit a hagyományos
nyilvántartási adatokból.
A nyilvántartás pontos vezetéséhez még távolról is valamilyen módon meg kell tudnunk mondani, hogy mennyi lapot használt egy nyomtatási feladat végrehajtása. Ez a nyomtatás nyilvántartásának egyik alapvető problémája.
A nyers szövegek esetében ez nem is annyira bonyolult: egyszerűen számoljuk össze, hogy a nyomtatási feladatban mennyi sor kinyomtatására lesz szükség és vessük össze ezt a nyomtató által lapoként kinyomtatott sorok számálva. Ne felejtsük el számításba venni a szövegben felbukkanó törlések hatását, vagy az olyan hosszú sorokat, amelyek a valóságban több sorban fognak megjelenni.
Viszont (Az lpf szövegszűrő című szakaszban bemutatott) lpf program ezeket mind lekezeli a nyilvántartások készítése során. Ezért ha szintén egy nyilvántartást vezetni képes szövegszűrőt akarunk írni, akkor mindenképpen érdemes megnéznünk az lpf forráskódját.
De hogyan bánjunk el a többi formátummal?
Nos, a DVI-Laserjet és DVI-PostScript közti átalakítások esetén a kinyomtatott lapok számának megállapításához meg kell tanítanunk a szűrőnket értelmezni a dvilj vagy dvips parancsok kimenetét. Ugyanezt meg tudjuk tenni más formátumok és más konverziós programok használata során is.
Azonban ezek a módszerek nem veszik számításba, hogy a nyomtató egyáltalán kinyomtatta-e az összes elküldött oldalt. Sok minden történhet még addig, például beragadhat a papír, kifogyhat a tinta vagy akár felrobbanhat a nyomtató — a felhasználónak ettől függetlenül még fizetnie kell.
Mit lehet ilyenkor tenni?
A precíz nyilvántartásnak csak egyetlen biztos módja létezik. Olyan nyomtatót szerezzünk be, amely képes megmondani, mennyi lapot használt el a nyomtatás során, majd egy ilyet csatlakoztassunk soros porton vagy hálózaton keresztül. Szinte majdnem az összes PostScript nyomtató támogatja ezt a lehetőséget, ahogy sok más gyártmány és típus is (például a hálózati Imagen lézernyomtatók). A nyomtatóhoz tartozó szűrőt ehhez úgy kell módosítani, hogy lekérdezzük a kinyomtatott lapok számát a nyomtatás után és kizárólag erre az értékre alapozva készítünk nyilvántartást. Itt nincs szükség sem a sorok számolására, sem pedig az állományok (könnyen elhibázható) átvizsgálására.
Természetesen lehetünk nagylelkűek és ne számítsunk fel semmit a nyomtatásért.
Ebből a szakaszból megtudhatjuk, hogyan használjuk a FreeBSD-n beállított nyomtatónkat. Röviden most itt foglaljuk össze az ide tartozó felhasználói parancsokat:
Ezek mellett létezik még a nyomtatók és a hozzájuk tartozó sorok irányítására alkalmas parancs is, az lpc(8), amelyre a A nyomtatók vezérlése című szakaszban fogunk részleteiben kitérni.
A nyomtatók/sorok /etc/printcap
állományban szereplő nevük szerinti
megadásához az lpr(1), lprm(1) és
lpq(1) parancsok közül mindegyik elfogadja a
-P
nyomtatónév
paramétert. Ennek köszönhetően
képesek vagyunk nyomtatási feladatokat küldeni,
eltávolítani vagy felügyelni az egyes
nyomtatók soraiban. Ha nem használjuk a
-P
kapcsolót, akkor az érintett
nyomtató a PRINTER környezeti
változó által meghatározott lesz.
Végül, ha a PRINTER nevű
környezeti változót sem
állítottuk be, akkor a parancsok
alapértelmezett módon az lp
nevű nyomtatót fogják használni.
A továbbiakban az alapértelmezett nyomtató kifejezés a PRINTER környezeti változó által megnevezett nyomtatóra fog utalni, illetve ha ezt nem definiáltuk, akkor az lp nevű nyomtatóra.
Az állományok kinyomtatásához írjuk be:
% lpr állománynév ...
Ezzel kinyomtatjuk az összes felsorolt állományt az alapértelmezett nyomtatón. Ha nem adunk meg állományokat, akkor az lpr(1) parancs a szabványos bemenetről várja a nyomtatandó adatokat. Például ezzel a paranccsal néhány igen fontos rendszerállományt tudunk kinyomtatni:
% lpr /etc/host.conf /etc/hosts.equiv
A nyomtató megválasztásához így adjuk ki a parancsot:
% lpr -P
nyomtatónév állománynév ...
Ez a példa kinyomtatja az aktuális könyvtár részletes listáját a rattan nevű nyomtatón:
% ls-l
| lpr-P
rattan
Mivel egyetlen állományt sem adtunk meg az
lpr(1) programnak, az lpr parancs a
nyomtatandó adatokat a szabványos bemenetről
várja, ami jelen esetünkben a
ls -l
parancs
kimenete.
Az lpr(1) ezeken felül még képes értelmezni rengeteg formázásra, konverzióra, másolatok készítésére stb. utasító kapcsolót is. Erről bővebben a Nyomtatási beállítások című szakaszban lesz szó.
Amikor az lpr(1) programmal nyomtatunk, az összes nyomtatandónk egy “nyomtatási feladatnak” nevezett csomagba kerül, ami pedig az LPD nyomtatási rendszerébe. Minden nyomtatóhoz tartozik egy nyomtatási sor, ahol részünkről és mások által eddig kiadott nyomtatási feladatokat találhatjuk. A nyomtató ezután ezeket érkezési sorrend szerint dolgozza fel.
Az alapértelmezett nyomtatóhoz tartozó
sor állapotát az lpq(1) programmal tudjuk
megnézni. Ha egy adott nyomtatóra vagyunk
kíváncsiak, akkor használjuk a
-P
kapcsolót. Például a
% lpq -P
bamboo
parancs a bamboo nevű nyomtató sorát fogja megmutatni. Példaképpen lássuk is ilyen esetben az lpq parancs eredményét:
bamboo is ready and printing Rank Owner Job Files Total Size active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes 2nd kelly 10 (standard input) 1635 bytes 3rd mary 11 ... 78519 bytes
Itt három nyomtatási feladatot láthatunk a bamboo nyomtatási sorában. Az első nyomtatási feladat, amit a kelly nevű felhasználó küldött, a 9-es “feladatszámot” kapta. A nyomtatóhoz tartozó összes feladat kap egy ilyen egyedi számot. Többnyire nyugodtan figyelmen kívül hagyhatjuk, azonban szükségünk lehet rá, ha éppen törölni kívánjuk a hozzá tartozó nyomtatási feladatot. Ezzel majd a Nyomtatási feladatok eltávolítása című szakaszban foglalkozunk.
A kilences számú nyomtatási feladat két állományt tartalmaz: ha a parancssorban több állományt adunk meg az lpr(1) programnak, akkor az egy nyomtatási feladatnak számít. Ez egyben a pillanatnyilag aktív nyomtatási feladat (ezt a “Rank” oszlopban szereplő active érték jelzi), tehát a nyomtató éppen ezzel foglalatoskodik. A második nyomtatási feladat közvetlenül az lpr(1) szabványos bemenetére érkezett. A harmadik a mary nevű felhasználótól jött, és ez egy nagyobb méretű nyomtatási feladat. A nyomtatandó állomány elérési útvonala túlságosan hosszú ahhoz, hogy ki lehessen írni, ezért az lpr(1) csak három pontot jelez ki helyette.
Az lpq(1) kimenetének első sorai is nagyon hasznos információt tartalmaz: megtudhatjuk, mit csinál éppen (legalább is az LPD szerint) a nyomtató.
A -l
kapcsolóval az lpq(1)
parancstól kérhetünk sokkal
részletesebb listázást is.
Például így nézhet ki a
lpq -l
parancs eredménye:
waiting for bamboo to become ready (offline ?) kelly: 1st [job 009rose] /etc/host.conf 73 bytes /etc/hosts.equiv 15 bytes kelly: 2nd [job 010rose] (standard input) 1635 bytes mary: 3rd [job 011rose] /home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes
Ha meggondoltuk volna magunkat egy nyomtatási feladattal kapcsolatban, az lprm(1) paranccsal még törölni tudjuk a sorból. Az lprm(1) gyakran még a folyamatban levő nyomtatási feladatot is képes eltávolítani, azonban előfordulhat, hogy a nyomtatási feladat egy része már elvégzésre került.
Az alapértelmezett nyomtató sorából csak úgy tudunk nyomtatási feladatokat törölni, ha először az lpq(1) segítségével megkeressük a számukat. Ha ez megvan, írjuk be:
% lprm feladatám
Adott nyomtatóról a -P
kapcsoló segítségével tudunk
nyomtatási feladatot törölni. A most
következő parancs a bamboo
nevű nyomtatóról törli a 10-es
számú nyomtatási feladatot:
% lprm -P
bamboo 10
Az lprm(1) parancs esetén még használhatóak az alábbi rövidítések is:
Eltávolítja a hozzánk tartozó az összes nyomtatási feladatot (az alapértelmezett nyomtatón).
Eltávolítja az adott felhasználóhoz tartozó összes nyomtatási feladatot (az alapértelmezett nyomtatón). Kizárólag a rendszergazdák képesek erre, a rendes felhasználók csak a saját nyomtatási feladataikat törölhetik.
A nyomtatási feladat száma, a
felhasználói név vagy a
-
megadása nélkül az
lprm(1) törli az alapértelmezett
nyomtatón éppen aktív
nyomtatási feladatot, amennyiben az a miénk.
Csak a rendszergazdák képesek
bármilyen aktív nyomtatási feladatot
törölni.
Ha kiegészítjük az imént
említett rövidítéséket a
-P
paraméter megadásával,
akkor az alapértelmezett nyomtató helyett
bármelyik másikat is használhatjuk.
Például ez a parancs eltávolítja az
aktuális felhasználó összes
nyomtatási feladatot a rattan
nevű nyomtatón:
% lprm -P
rattan -
Megjegyzés: Hálózati környezetben az lprm(1) csak arról a gépről engedi törölni a nyomtatási feladatokat, amelyről küldték ezeket, még abban az esetben is, amikor ugyanaz a nyomtató más számítógépekről is elérhető. A következő parancssorozat ezt igyekszik szemléltetni:
% lpr-P
rattan myfile % rlogin orchid % lpq-P
rattan Rank Owner Job Files Total Size active seeyan 12 ... 49123 bytes 2nd kelly 13 myfile 12 bytes % lprm-P
rattan 13 rose: Permission denied % logout % lprm-P
rattan 13 dfA013rose dequeued cfA013rose dequeued
Az lpr(1) parancs számos olyan beállítást enged, amelyekkel a szövegek formázását, grafikák átalakítását illetve más állományformátumok használatát, másolatok készítését, nyomtatási feladatok irányítását és még sok minden mást el tudunk végezni. Ebben a szakaszban pontosan ezekről a kapcsolókról lesz szó.
Az lpr(1) most következő opciói a nyomtatási feladatokban található állományok formázását vezérlik. Akkor használjuk ezeket a beállításokat, ha a nyomtatási feladat nem tartalmaz nyers szöveget, vagy ha nyers szöveget akarunk formázni a pr(1) segédprogrammal.
Például az alábbi parancs kinyomtat egy halászati-jelentés.dvi nevű (a TeX betűszedű rendszerből már jól ismert) DVI állományt a bamboo nevű nyomtatón:
% lpr -P
bamboo -d halászati-jelentés.dvi
Ezek a beállítások a nyomtatási feladatban szereplő minden egyes állományra vonatkoznak, ezért nem keverhetjük (például) a DVI és ditroff formátumú állományokat egy nyomtatási feladaton belül. Ehelyett külön nyomtatási feladatokban kell elküldenünk az eltérő formátumú állományokat, és mindegyik nyomtatási feladathoz külön konverziós beállításokat kell megadnunk.
Megjegyzés: A
-p
és-T
kapcsolók kivételével az itt felsorolt összes beállításnak a kiválasztott nyomtatóhoz szüksége van a megfelelő konverziós szűrőre. Például a-d
opció használatához kell egy konverziós szűrő a DVI formátumhoz. A Konverziós szűrők című szakasz erről ad bővebb tájékoztatást.
-c
Cifplot állományok nyomtatása.
-d
DVI állományok nyomtatása.
-f
FORTRAN forrás nyomtatása.
-g
Plot formátumú adatok nyomtatása.
-i szám
A kinyomtatott szöveg behúzásának növelése a szám értékével. Ha nem adjuk meg a számot, akkor ennek értéke 8 lesz. Ez a beállítás csak bizonyos konverziós szűrőkkel működik.
Megjegyzés: Ne hagyjunk helyet az
-i
és a szám között.
-l
A szöveg formázás nélküli nyomtatása, vezérlőkarakterekkel együtt.
-n
Ditroff (eszközfüggetlen troff) adat nyomtatása.
Nyomtatás előtt a szöveg formázása a pr(1) programmal. Lásd pr(1).
-T
cím
Az állomány neve helyett a
fejlécben a címet
jeleníti meg a pr(1). Ennek a
beállításnak csak a
-p
opcióval együtt van
hatása.
-t
Troff adat nyomtatása.
-v
Raszteres adatok nyomtatása.
Vegyünk az iméntiekre egy példát. A következő parancs az ls(1) szépen megformázott man oldalát nyomtatja ki az alapértelmezett nyomtatón:
% zcat /usr/share/man/man1/ls.1.gz | troff-t
-man | lpr-t
A zcat(1) kitömöríti az ls(1)
man oldalának forrását és
átadja a troff(1) parancsnak, ami ebből
létrehoz a GNU troff formátumának
megfelelő kimenetet és továbbadja az
lpr(1) parancsnak, ami végül elküldi a
nyomtatási feladatot az LPD
nyomtatási rendszernek. Mivel az lpr(1)
parancsnak megadtuk az -t
kapcsolót, a
nyomtatási rendszer a GNU troff formátumban
érkező adatokat magától át
fogja alakítani olyan formátumra, amit a
nyomtató is képes lesz megérteni.
Az lpr(1) most felsorolandó beállításaival az LPD rendszert arra tudjuk utasítani, hogy a nyomtatási feladatot különleges módon kezelje:
Egyetlen példány helyett hozzon létre példányszám számú példányt a nyomtatási feladatban található összes állományból. A rendszergazda a nyomtató kímélése érdekében ezt a lehetőséget letilthatja, amivel inkább a fénymásoló használatára ösztönzi a felhasználókat. Lásd A másolatok számának szabályozása szakasz.
A beállítás illusztrálásaként most az alapértelmezett nyomtatón először nyomtassunk ki három példányt a parser.c, majd ezután a parser.h állományokból:
% lpr -#3
parser.c parser.h
A rendszer küldjön levelet a nyomtatási feladat teljesítése után. Ekkor az LPD a nyomtatási feladat elvégzése után levelet küld a helyi postafiókunkba. A levélben kifejti, hogy sikeres volt-e a nyomtatás, vagy esetleg valamilyen hiba keletkezett, és ha hiba történt, akkor pontosan mi is volt az.
Ne másolja közvetlenül az állományokat a nyomtatási könyvtárba, hanem készítsen hozzájuk szimbolikus linkeket.
Egy nagyobb nyomtatási feladat elvégzése esetén javasolt használni ezt a kapcsolót. Ezzel a megoldással helyet tudunk spórolni a nyomtatási könyvtárban (amikor a nyomtatási feladatok könnyen megtelítheti a nyomtatási könyvtárat tároló állományrendszert). Emellett időt is takarítunk meg, mivel az LPD-nek nem kell a nyomtatási feladat minden egyes bitjét átmásolni a nyomtatási könyvtárba.
Van azonban egy hátránya: mivel az LPD ekkor közvetlenül az eredeti állományra fog hivatkozni, ezért a nyomtatás befejezéséig azt nem módosíthatjuk vagy törölhetjük.
Megjegyzés: Ha egy távoli nyomtatónak küldjük a nyomtatási feladatot, akkor az LPD a helyi és a távoli számítógép között mégis kénytelen lesz átmásolni a nyomtatási feladatot, így a
-s
kapcsoló egyedül csak a helyi nyomtatási könyvtárban fog helyet spórolni. Ettől eltekintve még ilyenkor is hasznunkra válhat.
Törölje a nyomtatási feladatban
szereplő állományokat, miután
átmásolta ezeket a nyomtatási
könyvtárba, vagy miután a
-s
kapcsoló
használatával kinyomtatta ezeket. Nagy
körültekintéssel
használjuk!
Az lpr(1) most következő beállításai a nyomtatási feladatok fejlécében megjelenő szövegekre vannak hatással. Így ha letiltottuk a fejléclapok használatát, akkor ezek a kapcsolók lényegében semmit sem állítanak. A Fejléclapok című szakaszból tudhatunk meg többet ezek beállításáról.
A fejléclapon megjelenő hálózati név helyett a szöveg fog szerepelni. A hálózati név általában annak a gépnek a neve, ahonnan a nyomtatási feladatot küldték.
A fejléclapon megjelenő nyomtatási feladat neve helyett a szöveg fog megjelenni. A nyomtatási feladat neve általában a benne szereplő első állomány nevével egyezik meg, ha a szabványos bemenetről nyomtatunk, akkor egyszerűen csak stdin.
Ne nyomtasson fejléclapot.
Megjegyzés: Bizonyos helyeken előfordulhat, hogy ennek a kapcsolónak nincs semmilyen hatása a fejléclapok létrehozásának módszeréből fakadóan. A részleteket lásd a Fejléclapok szakaszban.
A nyomtatóink rendszergazdájaként nekünk kell telepítenük, üzembe helyeznünk és kipróbálnunk ezeket. Az lpc(8) parancs használatával még jobban képesek vagyunk kapcsolatba lépni velük. Az lpc(8) paranccsal:
el tudjuk indítani és le tudjuk állítani a nyomtatókat;
be- és ki tudjuk kapcsolni a nyomtatási soraikat;
át tudjuk rendezni az egyes sorokban található nyomtatási feladatokat.
Először is essen pár szó a fogalmakról: ha a nyomtató leállt, akkor semmit sem fog kinyomtatni a sorából. A felhasználók továbbra is képesek nyomtatási feladatokat küldeni, amik azonban egészen addig fognak várakozni, amíg a nyomtatót el nem indítjuk vagy a sorát ki nem ürítjük.
Ha egy sort kikapcsolunk, akkor (a root kivételével) egyetlen felhasználó sem képes nyomtatási feladatokat küldeni a nyomtatónak. A bekapcsolt sorok képesek csak nyomtatási feladatot fogadni. A nyomtató elindítható kikapcsolt sorral is, ilyenkor egészen addig folytatja a nyomtatási feladatok elvégzését, amíg a sor ki nem ürül.
Általánosan elmondható, hogy az lpc(8) parancs használatához a root felhasználó jogosultságaira van szükségünk. Az lpc(8) parancsot minden más esetben csak a nyomtató állapotának ellenőrzésére vagy a megakadt nyomtató újraindítására használhatjuk.
Foglaljuk röviden össze az lpc(8) parancsait. A legtöbb parancs kiadásához még szükséges egy nyomtatónév paraméter megadása is, amivel megnevezzük az utasítani kívánt nyomtatót. Helyette használható az all szó is, amivel az /etc/printcap állományban szereplő összes nyomtatót egyszerre utasíthatjuk.
Az aktuális nyomtatási feladat megszakítása és a nyomtató leállítása. Ha a nyomtatási sort még nem kapcsoltuk ki, a felhasználók küldhetnek további nyomtatási feladatokat.
A nyomtató könyvtárából töröljük a régi állományokat. Esetenként adódhat, hogy bizonyos nyomtatási feladatok állományait nem takarította el az LPD, különösen abban az esetben, amikor a nyomtatás vagy az adminisztrálás során keletkezett valamilyen hiba. Ez a parancs segít megtalálni a nyomtatási könyvtárból már kikopott állományokat és törli ezeket.
Az újonnan érkező nyomtatási feladatok besorolásának kikapcsolása. Ha a nyomtató még működik, akkor folytatni fogja a sorban még bennmaradt nyomtatási feladatok elvégzését. A rendszergazda (a root) még a kikapcsolt sorok esetén is küldhet nyomtatási feladatokat.
Ez a parancs valójában akkor hasznos, ha egy új nyomtató vagy egy új szűrő működését próbálgatjuk: ilyenkor érdemes kikapcsolni a nyomtatási sort és root felhasználóként nyomtatási feladatokat küldeni. A többi felhasználó a tesztelés befejezéséig nem tud majd nyomtatási feladatokat küldeni, vagyis egészen addig, amíg a nyomtatási sort vissza nem kapcsoljuk az enable paranccsal.
A nyomtató üzemen kívül helyezése. Lényegében megegyezik egy disable és utána egy stop parancs kiadásával. Az üzenet akkor jelenik meg, amikor a valaki megpróbálja lekérdezni a nyomtató állapotát az lpc status paranccsal, vagy amikor megnézi a nyomtatási sorát az lpq(1) paranccsal.
A nyomtatóhoz tartozó nyomtatási sor bekapcsolása. A felhasználók ezután már képesek lesznek a nyomtatónak feladatokat küldeni, azonban egészen addig nem nyomtatódik ki semmi, amíg a nyomtatót el nem indítjuk.
Megmutatja a parancsnév parancshoz tartozó súgót. A parancsnév megadása nélkül a rendelkezésre álló parancsok listáját kapjuk meg.
Elindítja a nyomtatót. A felhasználók ezt a parancsot tudják használni abban az esetben, amikor valamilyen megmagyarázhatatlan okból az LPD működése megáll, viszont ezzel nem tudják elindítani a stop vagy down parancsokkal leállított nyomtatót. A restart parancs megegyezik az abort és a start egymás utáni kiadásával.
Elindítja a nyomtatót, és a nyomtató nekilát kinyomtatni a sorában levő nyomtatási feladatokat.
Leállítja a nyomtatót, és a nyomtató az aktuális nyomtatási feladat befejezése után már nem kezd neki újabbnak. Ettől függetlenül a felhasználók még továbbra is képesek feladatokat küldeni a nyomtatási sorába.
Átrendezi a nyomtatónév nevű nyomtató sorát úgy, hogy a megadott azonosítójú feladatot vagy a megadott felhasználónévhez tartozó nyomtatási feladatokat a sor elejére teszi. Ennél a parancsnál nyomtatónévnek nem adhatjuk meg az all értéket.
Üzembe helyezi a nyomtatót, tulajdonképpen a down parancs ellentéte. Megegyezik egy egymás után kiadott start és enable paranccsal.
Az lpc(8) a fenti parancsokat a parancssorból fogadja el. Ha itt nem adunk meg neki semmilyen parancsot, akkor az lpc(8) interaktív módba vált, ahol ugyanezeket a parancsokat adhatjuk ki, egészen az exit, quit parancsok vagy az állományvége jelzés begépeléséig.
Ha derekasan végigolvastuk eddig ezt a fejezetet, akkor mostanra már valószínűleg mindent tudunk a FreeBSD-ben található LPD nyomtatási rendszerről. Ezzel együtt tisztában vagyunk a hiányosságaival is, aminek kapcsán természetes módon felmerülhet bennünk a kérdés: “Milyen más (FreeBSD-vel is működni képes) nyomtatási rendszerek léteznek még?”
Az LPRng, aminek jelentése “LPR Next Generation” (Az LPR következő generációja), a PLP teljesen újraírt változata. Patrick Powell és Justin Mason (a PLP eredeti karbantartója) együttes munkájának gyümölcse az LPRng. Az LPRng honlapja: http://www.lprng.org/.
A CUPS, vagy más néven a “Common UNIX Printing System” (Közös UNIX-os nyomtatási rendszer), egy hordozható nyomtatási réteget nyújt a UNIX-alapú operációs rendszerek számára. Az Easy Software Products fejlesztése és szinte az összes UNIX gyártó és felhasználó szemében elfogadott szabványos nyomtatási rendszer.
A CUPS a nyomtatási feladatok és sorok kezelését az internetes nyomtatási protokollon (Internet Printing Protocol, IPP) használatával oldja meg. Csökkentett képességekkel ugyan, de a sornyomtató démon (Line Printer Daemon, LPD), szerverüzenet-blokk (Server Message Block, SMB), és AppSocket (más néven JetDirect) protokollokat is ismeri. A CUPS a komolyabb UNIX-os nyomtatási feladatokhoz ezeken felül még a hálózati nyomtatók közti választást és PostScript nyomtatók leírásán (PostScript Printer Description, PPD) alapuló nyomtatási beállításokat is támogatja.
A CUPS honlapja: http://www.cups.org/.
A HPLIP, másnéven HP Linux Imaging and Printing, egy HP által kidolgozott programcsalád, amely támogatja a HP eszközök nyomtatási, lapolvasási és faxolási lehetőségeit. A benne található programok bizonyos nyomtatási feladatokhoz backendként a CUPS nyomtatási rendszert használják.
A HPLIP honlapja a http://hplipopensource.com/hplip-web/index.html címen érhető el.
Miután az lptest(1) programmal elvégeztünk néhány egyszerű próbát, a várt helyett a következők egyikét kaphatjuk eredményül:
A nyomtató nyomtatott egy keveset, aztán egy ideig csendben maradt és nem csinált semmit. Ilyenkor a nyomtatnivalók megjelenéséhez minden bizonnyal meg kell nyomnunk a nyomtatón levő “PRINT REMAINING” vagy “FORM FEED” feliratú gombokat.
Ebben az esetben a nyomtató valószínűleg még arra várt, hogy még a nyomtatás megkezdése előtt érkezik valamilyen további adat. Ettől a gondtól úgy szabadulhatunk meg, ha beállítunk egy szövegszűrőt, amely minden (szükséges) esetben küld egy “FORM FEED” (lapdobás) jelzést is a nyomtatónak. Ez kell általában ahhoz, hogy a szövegnek a nyomtató belső pufferében megmaradt része azonnal kinyomtatódjon. Akkor is a javunkra válhat ez, ha minden egyes nyomtatási feladatot külön lapon akarunk kezdeni, mivel így a következő nyomtatási feladat sosem közvetlenül ott kezdődik, ahol az előző feladat befejezte a nyomtatást.
A /usr/local/libexec/if-simple szűrő helyett a következő szkript használhatával tudunk minden nyomtatási feladat elvégzése után elküldeni egy lapdobást:
#!/bin/sh # # if-simple - Egyszerű lpd szövegszűrő # Helye: /usr/local/libexec/if-simple # # Egyszerűen átmásolja a szabvány bemenetet a szabvány kimenetre, és # figyelmen kívül hagyja az összes többi paramétert. Minden nyomtatási # nyomtatási feladat elvégzése után küld egy lapdobást (\f). /bin/cat && printf "\f" && exit 0 exit 2
Ekkor a következőt látjuk a lapon:
!"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 #$%&'()*+,-./0123456
Az ún. lépcsőhatás áldozatává váltunk, amelyet a sortörést jelző karakter eltérő értelmezései okoznak. A UNIX stílusú operációs rendszerek erre mindössze egyetlen karaktert használnak: ez a 10-es kódú ASCII karakter (sordobás, Line Feed, LF). Az MS-DOS, OS/2® és mások pedig két karakterrel oldják meg ezt a feladatot: a 10-es és 13-as kódú (kocsivissza, Carriage Return, CR) ASCII karakterekkel. A sortöréseknél sok nyomtató az MS-DOS szokásait követi.
Amikor a FreeBSD-vel nyomtatunk, akkor csak egyetlen karaktert használunk sortörésre. Ennek láttán a nyomtató lépteti a sort, azonban a fej vízszintes pozícióját nem változtatja meg a következő sor nyomtatásának megkezdésekor. Erre lenne a kocsivissza karakter, vagyis ennek hatására fogja a nyomtató a papír bal oldalára visszaállítani a következő nyomtatandó karakter pozícióját.
A FreeBSD így szeretné utasítani a nyomtatót:
A nyomtató kocsivisszát kap | A nyomtató visszalépteti a pozíciót |
A nyomtató sordobást kap | A nyomtató új sort kezd |
Néhány módszer ennek kiváltására:
A nyomtatón található kapcsolók vagy vezérlőpanel segítségével próbáljuk meg átállítani a vezérlőkarakterek nyomtató szerinti értelmezését. Keressük meg a nyomtató kézikönyvében, hogyan tudjuk ezt megcsinálni.
Megjegyzés: Ha a FreeBSD mellett más operációs rendszerekkel is használni akarjuk a nyomtatót, akkor azok indítása előtt mindig át kell állítani a nyomtatót a megfelelő értelmezés alkalmazására. Ilyenkor valószínűleg a lentebb szereplő megoldásokat részesítjük majd inkább előnyben.
Állítsuk be úgy a FreeBSD soros vonali meghajtóját, hogy magától alakítsa át az LF karaktereket CR+LF párokká. Természetesen ez a megoldás csak a soros portra csatlakozó nyomtatók esetében működhet. Ehhez az /etc/printcap állományban a nyomtató leírásánál az ms# tulajdonságnál adjuk meg az onlcr módot.
Küldjünk olyan kódot a nyomtatónak, amelynek hatására ideiglenesen máshogy fogja kezelni az LF karaktereket. Nézzük meg a nyomtatóhoz mellékelt útmutatóban, hogy milyen kódokat tudunk ilyen célra használni. Ha találtunk ilyen kódot, akkor írjuk át úgy a hozzá tartozó szövegszűrőt, hogy a nyomtatási feladatok előtt mindig elküldjük azt.
Most bemutatjuk egy olyan szövegszűrő kódját, amely a Hewlett-Packard PCL kódjait ismerő nyomtatókhoz készült. Ebben a szűrőben először kiadjuk, hogy az LF karaktereket LF és CR karakterek kombinációjának tekintse a nyomtató, majd elküldjük magát a nyomtatási feladatot, és a nyomtatási feladat eredményének utolsó lapja után elküldünk egy lapdobást. Szinte az összes Hewlett Packard nyomtatóval működnie kell.
#!/bin/sh # # hpif - Egyszerű lpd bemeneti szűrő a HP-PCL alapú nyomtatókhoz # Helye: /usr/local/libexec/hpif # # Egyszerűen átmásolja a szabvány kimenetet a szabvány bemenetre, és # figyelmen kívül hagyja a paramétereket. Elküldi a nyomtatónak, hogy # az LF karaktereket CR+LF-ként kezelje, majd a feladat befejeztével # lapot dobat. printf "\033&k2G" && cat && printf "\033&l0H" && exit 0 exit 2
Példaként megadjuk még az orchid nevű számítógép /etc/printcap állományát is. Ebben egyetlen nyomtató csatlakozik a párhuzamos portra, amelynek a típusa LaserJet 3Si és a neve teak. Az előbb bemutatott szövegszűrőt használja:
# # /etc/printcap (orchid) # teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ :if=/usr/local/libexec/hpif:
A nyomtató nem lépteti a sorokat, ezért az összes sor egymáson jelenik meg.
Ez pontosan a ritka “ellentéte” a fentebb leírt lépcsőhatásnak. A FreeBSD által sortörésre használt LF karakterek valamiért CR karakterekként viselkednek, ezért a nyomtató nem sort vált, hanem a lap bal szélére állítja a fejet.
A nyomtatón található kapcsolókkal vagy vezérlőpanellel így állítsuk be a sordobás és kocsivissza karakterek értelmezését:
Miközben nyomtatunk, a nyomtató bizonyos karaktereket nem hajlandó megjeleníteni. A probléma ennél nagyobb, ha a nyomtató működése közben egyre több és több karaktert hagy ki.
Itt az a gond, hogy a nyomtató nem képes tartani az iramot a számítógép által a soros vonalon átküldött adatok sebességével (ez a probléma nem jelentkezhet a párhuzamos nyomtatók esetén). Két módon kerekedhetünk felül ezen:
Ha a nyomtató ismeri a XON/XOFF típusú forgalomirányítást, akkor az ms# tulajdonságnál adjuk meg a FreeBSD számára az ixon beállítást.
Ha a nyomtató ismeri a “Request to Send / Clear to Send” alapú hardveres kézfogást (más néven RTS/CTS forgalomirányítást), akkor az ms# tulajdonságnál a crtscts beállítást adjuk meg. Gondoskodjunk róla, hogy a számítógépet és a nyomtatót összekötő kábel meg tudjon majd birkózni ezzel a típusú forgalomirányítással.
A nyomtató nem a nyomtatni kívánt szöveget hozza létre, hanem összevissza nyomtat.
Ez a soros nyomtatók helytelen kommunikációs beállításának egy másik jellemző tünete. Ellenőrizzük a br tulajdonságnál megadott adatátviteli sebességet és az ms# tulajdonságnál megadott paritási beállításokat. Egyeztessük a nyomtató saját és az /etc/printcap állományban tárolt beállításait.
Ha semmi sem történt, akkor a gond magával a FreeBSD-vel lehet, nem pedig a hardverrel. Az /etc/printcap állományba a vizsgálni kívánt nyomtató leírásához (az lf tulajdonsággal) illesszünk be naplózást. Például így fog kinézni a rattan nevű nyomtató bejegyzése az lf tulajdonság megadásával kibővítve:
rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\ :if=/usr/local/libexec/if-simple:\ :lf=/var/log/rattan.log
Miután ezt megcsináltuk, próbálkozzunk újra. Nézzük meg a naplóállományban (ami a példánkban a /var/log/rattan.log nevén érhető el), hogy látunk-e valamilyen hibaüzenetet. Az itt tapasztalt hibaüzenetek nyomán elindulva igyekezzünk megszüntetni a probléma forrását.
Ha nem adjuk meg az lf tulajdonságot, akkor az LPD erre a célra alapértelmezés szerint a /dev/console állományt használja.
A FreeBSD számos más UNIX-szerű operációs rendszerhez nyújt bináris kompatibilitást, köztük a Linuxhoz is. Elcsodálkozhatnánk rajta, hogy vajon miért kell tudnia a FreeBSD-nek Linux binárisokat futtatnia. A válasz erre nagyon egyszerű. Rengeteg cég és fejlesztő kizárólag csak Linuxra fejleszt, hiszen ez mostanság egy nagyon “izgalmas téma” az informatika világában. Emiatt azonban a FreeBSD közösségnek külön győzködnie kell ezeket a cégeket és fejlesztőket, hogy készítsék el a termékeik natív FreeBSD-s változatát. Ezzel az a gond, a legtöbb ilyen cég egyszerűen nem veszi észre, hogy ha létezne a terméküknek FreeBSD-re írt változata, akkor még többen használnák. Így továbbra is csak Linuxra fejlesztenek. Mit tudnak tenni ilyenkor a FreeBSD használói? Nos, ekkor jön jól a FreeBSD bináris szintű kompatibilitása.
Dióhéjban úgy tudnánk összefoglalni, hogy ennek köszönhetően a FreeBSD felhasználók képesek a linuxos alkalmazások közel 90%-át mindenféle további módosítás nélkül futtatni. Így tehát használható a StarOffice, Netscape Linux változata, az Adobe Acrobat, RealPlayer, VMware™, Oracle, WordPerfect®, Doom, Quake, és még sok minden más. Sőt, egyes tapasztalatok szerint bizonyos helyzetekben a FreeBSD által futtatott Linux binárisok sokkal jobban teljesítenek, mint Linux alatt.
Azonban vannak olyan Linuxra jellemző, az operációs rendszer szintjén meghúzódó eszközök, amelyek FreeBSD alatt nem használhatóak. FreeBSD-n nem fognak működni azok a Linux binárisok, amelyek túlzottan kihasználják az olyan i386-os rendszerhívásokat, mint például a virtuális 8086 mód.
A fejezet elolvasása során megismerjük:
hogyan engedélyezzük rendszerünkön a Linux kompatibilitást;
hogyan telepítsünk linuxos osztott könyvtárakat;
hogyan telepítsünk linuxos alkalmazásokat a FreeBSD rendszerünkre;
a FreeBSD Linux kompatibilitásának implementációs részleteit.
A fejezet elolvasásához ajánlott:
külső szoftverek telepítésének ismerete (4 fejezet).
A bináris Linux kompatibilitás alapértelmezés szerint nem engedélyezett. Legkönnyebben úgy tudjuk elérhetővé tenni, ha betöltjük a linux nevű KLD modult (“Kernel LoaDable”). Ehhez root felhasználóként a következőket kell begépelni:
# kldload linux
Ha minden egyes rendszerindítás során engedélyezni szeretnénk a bináris kompatibilitást, akkor tegyük bele az /etc/rc.conf állományba ezt a sort:
linux_enable="YES"
A modul betöltődését a kldstat(8) paranccsal tudjuk ellenőrizni:
% kldstat Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko
Ha valamiért nem akarjuk vagy nem éppen nem tudjuk betölteni a modult, akkor a bináris Linux kompatibilitást az options COMPAT_LINUX beállítással be is tudjuk építeni a rendszermagba. Ennek pontos menetét a 8 fejezetben találjuk meg.
A linuxos könyvtárakat két módon is felrakhatjuk: egyrészt a linux_base port telepítésével, másrészt manuálisan.
A futtatókönyvtárakat a lehető legegyszerűbben a emulators/linux_base porton keresztül tudjuk telepíteni. Teljesen úgy történik, mint a Portgyűjtemény akármelyik másik portjának telepítése. Csupán ennyit kell beírnunk:
# cd /usr/ports/emulators/linux_base-f10 # make install distclean
Megjegyzés: A FreeBSD 8.0 kiadását megelőző változataiban az emulators/linux_base-f10 port helyett az emulators/linux_base-fc4 portot használjuk.
A telepítés végeztével kaptunk is egy működő bináris Linux kompatibilitást, habár egyes programok még panaszkodhatnak a rendszerkönyvtárak alverzióit illetően. Általánosságban véve ez azonban nem okoz nagyobb gondot.
Megjegyzés: A emulators/linux_base portnak több változata is használható, melyek az egyes Linux disztribúcióknak feleltethetőek meg. Ilyenkor mindig érdemes közülük azt választani, amelyik a leginkább megfelel a telepíteni kívánt linuxos alkalmazás igényeinek.
Ha korábban még nem telepítettük volna a Portgyűjteményt, akkor egyénileg kell felraknunk az egyes könyvtárakat. Közülük azokra lesz szükségünk, amelyeket maga az alkalmazás is használni akar, valamint a futásidejű linkerre. Emellett még a FreeBSD rendszerünkön levő Linux binárisok számára a /compat/linux könyvtárban létre kell hoznunk a gyökér ún. “árnyékkönyvtárát” is. A FreeBSD alatt elindított Linux programok először ebben a könyvtárban fogják keresni a hozzájuk tartozó osztott könyvtárakat. Így tehát, amikor egy linuxos program betölti például a /lib/libc.so függvénykönyvtárat, akkor a FreeBSD először a /compat/linux/lib/libc.so állományt próbálja meg megnyitni, majd ha az nem létezik, akkor a /lib/libc.so állományt. Az osztott könyvtárak ezért a /compat/linux/lib árnyékkönyvtárba telepítendőek, és nem oda, ahova a linuxos ld.so mutat.
Általánosságban szólva eleinte elég csak azokat az osztott könyvtárakat megkeresni és felrakni, amelyekre a telepítendő linuxos alkalmazásunknak ténylegesen szüksége van. Egy idő után úgyis összegyűlnek azok a fontosabb függvénykönyvtárak, amelyek segítségével már minden további ráfordítás nélkül futtatni tudjuk a frissen importált programokat.
Mit tegyünk, ha az emulators/linux_base port telepítése után az alkalmazás még mindig hiányol néhány osztott könyvtárat? Honnan tudhatjuk meg, hogy milyen osztott könyvtárak kellenek majd egy Linux bináris használatához, és honnan szerezzük be ezeket? Erre alapvetőn két lehetőségünk van (az utasításokat root felhasználóként kell majd végrehajtanunk).
Ha hozzáférünk egy Linux rendszerhez, akkor szedjük össze az alkalmazásunk futtatásához szükséges osztott könyvtárakat, és másoljuk ezeket a FreeBSD partíciójára. Például:
Tegyük fel, hogy FTP-n keresztül leszedtük a Doom Linux változatát, és felraktuk egy általunk elérhető Linux rendszerre. Az ldd linuxdoom parancs segítségével ki tudjuk deríteni, milyen osztott könyvtárak kellenek majd nekünk:
% ldd linuxdoom libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
Az utolsó oszlopban levő állományokat másoljuk át, tegyük ezeket a /compat/linux könyvtárba, és hozzunk létre az első oszlopban szereplő szimbolikus linkeket. Így tehát a következő állományok kellenének:
/compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0 /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Megjegyzés: Ha már rendelkezünk az ldd kimenetének első oszlopában szereplő főverziószámú osztott könyvtárral, akkor nem kell átmásolni az utolsó oszlopban levő állományokat, hiszen így is működnie kellene mindennek. Ha viszont egy újabb változattal találkozunk, akkor érdemes mégis inkább átmásolni. Miután a szimbolikus linkeket átirányítottuk az új változatra, a régit akár törölhetjük is. Ha például ezek a könyvtárak elérhetőek a rendszerünkön:
/compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27Észrevesszük, hogy az ldd kimenetében az új bináris egy újabb változatot igényel:
libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29Ha csak az utolsó jegyében marad le valamivel a verziószám, akkor nem kell különösebben aggódnunk a /lib/libc.so.4.6.29 miatt sem, hiszen a programnak egy picivel korábbi verzióval is remekül kellene tudnia működni. Természetesen, ha akarjuk, ettől függetlenül lecserélhetjük a libc.so állományt, ami ezt eredményezi:
/compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Megjegyzés: A szimbolikus linkek karbantartása csak a Linux binárisok esetén szükséges. A FreeBSD saját futásidejű linkere magától megkeresi a megfelelő főverziószámú könyvtárakat, ezért emiatt általában nem kell aggódni.
Az ELF binárisok futtatása előtt néha még szükség van a “megbélyegzés” (branding) használatára is. Ha egy bélyegezetlen ELF binárist akarunk elindítani, akkor a következő hibaüzenetet kapjuk:
% ./egy-linux-elf-bináris ELF binary type not known Abort
A FreeBSD rendszermagjának a brandelf(1) paranccsal tudunk segíteni a FreeBSD és a Linux binárisainak megkülönböztetésében.
% brandelf -t Linux egy-linux-elf-bináris
A GNU által fejlesztett eszközök manapság már automatikusan elhelyezik az ELF binárisok azonosításához szükséges bélyegeket, ezért ez a lépés a jövőben egyre inkább feleslegessé válik.
A FreeBSD a telepített (akár linuxos) alkalmazások nyomonkövetésére saját csomagadatbázissal rendelkezik, amelynek következtében a Linux által felkínált RPM adatbázisokat nem támogatja.
Ennek ellenére akármelyik RPM alapú Linux alkalmazás telepíthető rendszerünkre a következő módon:
# cd /compat/linux # rpm2cpio -q < /a/linuxos/allomány.helye.rpm | cpio -id
Ezt követően a brandelf(1) segítségével állítsuk be az ELF binárisokat (könyvtárakat viszont ne!) megfelelő típusúra. Ekkor ugyan nem leszünk képesek rendesen eltávolítani az így telepített szoftvert, de ez a módszer teszteléshez megfelelő.
Ha a névfeloldás (DNS) valamiért nem működne, vagy egy ehhez hasonló üzenetet kapunk:
resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword
Akkor a /compat/linux/etc/host.conf állományba be kell illesztenünk a következő sorokat:
order hosts, bind multi on
Az itt megszabott sorrend szerint először az /etc/hosts állományt nézi át, és majd csak ezután próbálja meg feloldani a nevet. Ha a /compat/linux/etc/host.conf állomány nem létezik, akkor a linuxos alkalmazás a FreeBSD /etc/host.conf állományát találja meg, és panaszkodni fog a FreeBSD eltérő formátumára. Távolítsuk el a bind szócskát, ha nem állítottunk be névszervert az /etc/resolv.conf állományhoz.
Ebben a szakaszban megismerhetjük, hogyan telepítsük a Mathematica 5.X Linux változatát FreeBSD rendszerekre.
A Mathematica vagy a Mathematica for Students linuxos változatai közvetlenül megrendelhetőek a fejlesztőtől: http://www.wolfram.com/.
Először is jeleznünk kell a FreeBSD-nek, hogy a Mathematica binárisai a linuxos ABI-t (Application Binary Interface) fogják használni. Itt legkönnyebben úgy járhatunk el, ha egyszerűen beállítjuk, hogy a rendszer a bélyegezetlen ELF binárisokat automatikusan Linux binárisoknak tekintse:
# sysctl kern.fallback_elf_brand=3
Ennek köszönhetően a FreeBSD most már az összes bélyegezetlen ELF bináris esetén a linuxos ABI-t fogja használni, és így a telepítőt akár már közvetlenül a CD-ről is indíthatjuk.
Most másoljuk át a MathInstaller nevű állományt a merevlemezünkre:
# mount /cdrom # cp /cdrom/Unix/Installers/Linux/MathInstaller helyi_könyvtár
Az állományban cseréljük ki az első sorban található /bin/sh hivatkozást a /compat/linux/bin/sh hivatkozásra. Ezzel biztosíthatjuk, hogy a telepítőt a linuxos sh(1) fogja elindítani. Ezután a kedvenc szövegszerkesztőnkkel vagy a következő szakaszban található szkript segítségével helyettesítsük benne a Linux) szöveg összes előfordulását a FreeBSD) szöveggel. Mivel a Mathematica telepítője az uname -s parancsra kapott válaszból állapítja meg az operációs rendszer típusát, ezért ezzel a módosítással a FreeBSD-t is a Linuxhoz hasonló módon fogja kezelni. A MathInstaller elindítása után most már telepíthető a Mathematica.
A Mathematica telepítése során létrejött szkripteket a használatuk előtt át kell írnunk. Amennyiben a Mathematicahoz tartozó programokat a /usr/local/bin könyvtárba telepítettük, akkor itt találjuk a math, mathematica, Mathematica és MathKernel állományokra mutató szimbolikus linkeket. Ezek mindegyikében cseréljük ki a Linux) karakterláncot a FreeBSD) szövegre a kedvenc szövegszerkesztőnkkel vagy az alábbi szkripttel:
#!/bin/sh cd /usr/local/bin for i in math mathematica Mathematica MathKernel do sed 's/Linux)/FreeBSD)/g' $i > $i.tmp sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp > $i rm $i.tmp chmod a+x $i done
A Mathematica első indítása során kérni fog egy jelszót. Ha még nem kértünk volna jelszót a fejlesztőtől, akkor a “számítógépünk azonosítójának” (machine ID) megállapításához indítsuk el a telepítés könyvtárában található mathinfo nevű programot. Ez az azonosító lényegében az elsődleges Ethernet kártyánk MAC-címe lesz, ezért a Mathematica nem futtatható több számítógépen.
Amikor e-mailen, telefonon vagy faxon keresztül regisztráljuk a terméket a Wolframnál, akkor meg kell adnunk nekik ezt az azonosítót “machine ID” néven, amire ők elküldik a hozzá tartozó jelszót.
A Mathematica a szabványos betűkészletekkel meg nem jeleníthető szimbólumokhoz (integráljelek, szummák, görög betűk, matematikai jelölések stb.) használ néhány olyan speciális betűtípust, amelyek nem minden esetben állnak rendelkezésre. Az X által használt protokoll miatt ezeket a betűtípusokat helyben kell telepíteni. Ennek értelmében a Mathematica CD-jén található betűtípusokat telepítenünk kell a számítógépünkre is. A CD-n ezeket általában a /cdrom/Unix/Files/SystemFiles/Fonts könyvtárban találjuk meg, vagy a merevlemezen a /usr/local/mathematica/SystemFiles/Fonts könyvtárban. Ezen belül pedig a Type1 és X alkönyvtárakra van szükségünk. Az alábbiakban leírtak szerint több módon is használhatjuk ezeket.
Az egyik ilyen módszer, ha átmásoljuk az imént említett könyvtárakat a többi mellé, vagyis a /usr/X11R6/lib/X11/fonts könyvtárba. Ekkor szükségünk lesz még a fonts.dir állomány átírására is, ahova fel kell vennünk a betűtípusok neveit, majd ennek megfelelően az első sorban módosítanunk a könyvtárban található betűtípusok számát. De ugyanígy lefuttathatjuk ebben a könyvtárban a mkfontdir(1) parancsot is.
Az a másik megoldás, ha a könyvtárakat így másoljuk át a /usr/X11R6/lib/X11/fonts helyre:
# cd /usr/X11R6/lib/X11/fonts # mkdir X # mkdir MathType1 # cd /cdrom/Unix/Files/SystemFiles/Fonts # cp X/* /usr/X11R6/lib/X11/fonts/X # cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1 # cd /usr/X11R6/lib/X11/fonts/X # mkfontdir # cd ../MathType1 # mkfontdir
Most adjuk hozzá az új könyvtárakat a betűtípusok könyvtáraihoz:
# xset fp+ /usr/X11R6/lib/X11/fonts/X # xset fp+ /usr/X11R6/lib/X11/fonts/MathType1 # xset fp rehash
Ha az Xorg szervert használjuk, akkor az xorg.conf állományban megadhatjuk ezen könyvtárak automatikus betöltését is.
Megjegyzés: Az XFree86 típusú szerverek esetén az XF86Config konfigurációs állományt kell módosítanunk.
Ha még nincs /usr/X11R6/lib/X11/fonts/Type1 nevű könyvtárunk, akkor a példában szereplő MathType1 könyvtárat nyugodtan átnevezhetjük Type1 nevűre.
A Maple™ egy Mathematicahoz hasonló kereskedelmi alkalmazás. A használatához először meg kell vásárolni a http://www.maplesoft.com/ címről, majd a licenc megszerzéséhez ugyanott regisztrálni. FreeBSD-re a szoftvert a következő egyszerű lépéseken keresztül tudjuk telepíteni.
Indítsuk el a termékhez mellékelt INSTALL nevű szkriptet. Válasszuk a telepítőprogram által felkínált opciók közül a “RedHat” címkéjűt. A telepítés célkönyvtára legyen a /usr/local/maple.
Ha eddig még nem tettük volna meg, rendeljük meg a Maple licencét a Maple Waterloo Software-től (http://register.maplesoft.com/) és másoljuk az /usr/local/maple/license/license.dat állományba.
Az Maple-höz mellékelt INSTALL_LIC szkript elindításával telepítsük a FLEXlm licenckezelőt. A szervernek adjuk meg a számítógépünk hálózati nevét.
Javítsuk át a /usr/local/maple/bin/maple.system.type állományt a következő módon:
----- itt kezdődik a módosítás --------- *** maple.system.type.orig Sun Jul 8 16:35:33 2001 --- maple.system.type Sun Jul 8 16:35:51 2001 *************** *** 72,77 **** --- 72,78 ---- # the IBM RS/6000 AIX case MAPLE_BIN="bin.IBM_RISC_UNIX" ;; + "FreeBSD"|\ "Linux") # the Linux/x86 case # We have two Linux implementations, one for Red Hat and ----- módosítás vége -------------------
Vigyázzunk, hogy a "FreeBSD"|\ kezdetű sor végén nem szabad semmilyen további whitespace karakternek lennie.
Ez a javítás arra utasítja a Maple-t, hogy a “FreeBSD”-t Linux rendszerként ismerje fel. A bin/maple szkript hívja a bin/maple.system.type szkriptet, amely pedig a uname -a hívással próbálja kideríteni az operációs rendszer nevét. Ettől függően választja ki, hogy milyen típusú binárisokat fog futtatni.
Indítsuk el a licenckezelő szervert.
A most következő szkripttel könnyedén el tudjuk indítani az lmgrd programot. A szkriptet /usr/local/etc/rc.d/lmgrd.sh néven hozzuk létre:
----- nyissz ----------- #! /bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX export PATH LICENSE_FILE=/usr/local/maple/license/license.dat LOG=/var/log/lmgrd.log case "$1" in start) lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2 echo -n " lmgrd" ;; stop) lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2 ;; *) echo "Usage: `basename $0` {start|stop}" 1>&2 exit 64 ;; esac exit 0 ----- nyissz -----------
Próbáljuk meg elindítani a Maple-t:
% cd /usr/local/maple/bin % ./xmaple
Szerencsés esetben innentől kezdve már minden működik. És ne felejtsünk el írni a Maplesoftnak, hogy szeretnénk egy natív FreeBSD verziót a termékükből!
A FLEXlm licenckezelővel esetenként nehéz lehet elboldogulni. Erről a témáról bővebben a http://www.globetrotter.com/ címen találunk leírásokat.
Az lmgrd nagyon válogatós a licencállományokat illetően és bármilyen apróságra kiakad. Egy szabályos licencállomány valahogy így néz ki:
# ======================================================= # License File for UNIX Installations ("Pointer File") # ======================================================= SERVER chillig ANY #USE_SERVER VENDOR maplelmg FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \ PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \ ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \ SN=XXXXXXXXX
Megjegyzés: A sorozatszámot természetesen eltávolítottuk. Itt a chillig a számítógép neve.
Az itt megadott licencállomány remekül használható egészen addig a pontig, amíg békén hagyjuk a “FEATURE” kezdetű sort (melyet a licenckulcs véd).
Ez a leírás azt mutatja be, hogyan telepítsük FreeBSD rendszerekre a MATLAB® version 6.5 Linux változatát. A Java Virtual Machine™ (lásd 10.5.3 Szakasz) használatától eltekintve meglepően jól működik.
A MATLAB Linux változata közvetlenül megrendelhető a The MathWorks-től, a http://www.mathworks.com címen. Ne felejtsük el beszerezni a licencállományt és az elkészítéséhez szükséges útmutatót. Ha már úgyis arra járunk, jelezzük a fejlesztőknek, hogy igényt tartanánk a termékük natív FreeBSD-s változatára is!
A MATLAB telepítéséhez a következőket kell tennünk:
Helyezzük be a telepítő CD-t és csatlakoztassuk. A telepítőszkript javaslatának megfelelően váltsunk át a root felhasználóra. A szóbanforgó szkript elindításához gépeljük be a következőt:
# /compat/linux/bin/sh /cdrom/install
Tipp: A telepítő grafikus. Ha a megjelenítő használatáról szóló hibaüzeneteket kapunk, akkor adjuk ki a setenv HOME ~FELHASZNÁLÓ parancsot, ahol a FELHASZNÁLÓ annak a felhasználónak a neve legyen, amivel az imént meghívtuk a su(1) programot.
Amikor a MATLAB könyvtárát kell megadnunk, ezt írjuk be: /compat/linux/usr/local/matlab.
Tipp: A telepítés további részeinek megkönnyítése érdekében írjuk be ezt a parancssorba: set MATLAB=/compat/linux/usr/local/matlab
Miután megkaptuk a MATLAB licencét, az útmutatás szerint szerkesszük át.
Tipp: A licencállományt a kedvenc szövegszerkesztőnkkel akár már korábban elő is készíthetjük, és majd amikor a telepítőnek szüksége lesz rá, másoljuk be $MATLAB/license.dat helyre.
Futtassuk le a telepítést.
Ezzel befejeződött a MATLAB hagyományos telepítése. Innentől már csak a FreeBSD rendszer “hozzátapasztásán” fogunk dolgozni.
Hozzunk létre szimbolikus linkeket a licenckezelő szkriptjeire:
# ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW # ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW
Hozzunk létre egy indítószkriptet /usr/local/etc/rc.d/flexlm.sh néven. A lentebb látható minta a MATLABhoz mellékelt $MATLAB/etc/rc.lm.glnx86 állomány egy módosított változata. Benne az állományok helyét és a licenckezelő indításának körülményeit változtattuk meg (hogy Linux emuláció alatt fusson).
#!/bin/sh case "$1" in start) if [ -f /usr/local/etc/lmboot_TMW ]; then /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u felhasználó && echo 'MATLAB_lmgrd' fi ;; stop) if [ -f /usr/local/etc/lmdown_TMW ]; then /compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&1 fi ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac exit 0
Fontos: Tegyük ezt az állományt végrehajthatóvá:
# chmod +x /usr/local/etc/rc.d/flexlm.shA fenti szkriptben cseréljük ki a felhasználó nevét a rendszerünkben levő egyik felhasználó nevére (ami persze nem a root).
A licenckezelőt az alábbi paranccsal indítsuk el:
# /usr/local/etc/rc.d/flexlm.sh start
A Java futtató környezet (Java Runtime Environment, JRE) linkjét irányítsuk át egy FreeBSD alatt működő változatéra:
# cd $MATLAB/sys/java/jre/glnx86/ # unlink jre; ln -s ./jre1.1.8 ./jre
Hozzunk létre egy ilyen indítószkriptet a /usr/local/bin/matlab könyvtárban:
#!/bin/sh /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"
Futtassuk le a chmod +x /usr/local/bin/matlab parancsot.
Tipp: A szkript lefutása során az emulators/linux_base verziójától függően hibákat is kaphatunk. Ha el akarjuk kerülni ezeket, akkor szerkesszük át a /compat/linux/usr/local/matlab/bin/matlab állomány következő sorát:
if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then(a 13.0.1 számú verzióban ez 410. sor) erre:
if test -L $newbase; then
A MATLAB szabálytalan kilépéseit az alábbi utasítások nyomán tudjuk megszüntetni.
Hozzunk létre egy $MATLAB/toolbox/local/finish.m nevű állományt, majd írjuk bele ezt a sort:
! $MATLAB/bin/finish.sh
Megjegyzés: A $MATLAB szöveget pontosan így írjuk be.
Tipp: Ugyanebben a könyvtárban találjuk a beállításaink kilépés előtti mentéséért felelős finishsav.m és finishdlg.m állományokat. Ha ezek valamelyikét módosítjuk, akkor az előbbi parancsot közvetlenül a save után szúrjuk be.
Hozzunk létre egy $MATLAB/bin/finish.sh állományt, amelyben szerepeljen a következő:
#!/usr/compat/linux/bin/sh (sleep 5; killall -1 matlab_helper) & exit 0
Tegyük végrehajthatóvá:
# chmod +x $MATLAB/bin/finish.sh
Ez a leírás azt mutatja be, hogyan telepítsük FreeBSD-re az Oracle 8.0.5 és Oracle 8.0.5.1 Enterprise Edition Linux változatait.
Telepítsük az emulators/linux_base és devel/linux_devtools portokat a Portgyűjteményből. Amennyiben ennek során nehézségekbe ütköznénk, próbálkozzunk a korábbi változataikkal.
Fel kell raknunk a Red Hat Tcl csomagját is, ha az alkalmazáshoz tartozó intelligens ügynököt is futtatni szeretnénk. Ez a tcl-8.0.3-20.i386.rpm. A hivatalos RPM port segítségével az alábbi általános parancson keresztül tudunk csomagokat telepíteni:
# rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm csomag
A csomag telepítésének semmilyen hibát nem kellene okoznia.
Az Oracle telepítéséhez először ki kell alakítanunk a megfelelő környezetet. Ez a leírás kifejezetten arról szól, hogy FreeBSD-n hogyan futtassuk a linuxos Oracle-t, nem pedig az Oracle telepítési útmutatójában bemutatottakat taglalja.
Ahogy az Oracle telepítési útmutatójában is olvashatjuk, be kell állítanunk az osztott memória maximális méretét. FreeBSD alatt erre a célra ne használjuk az SHMMAX értéket, mivel az SHMMAX az SHMMAXPGS és PGSIZE értékekből számolódik ki. Ezért nekünk itt a SHMMAXPGS értékét kell meghatároznunk. Minden egyéb beállítás történhet az útmutatóban megadottak szerint. Például:
options SHMMAXPGS=10000 options SHMMNI=100 options SHMSEG=10 options SEMMNS=200 options SEMMNI=70 options SEMMSL=61
Hangoljuk be ezeket az értékeket az Oracle tervezett használatához.
Emellett a konfigurációs állományban ne feledkezzünk meg az alábbi beállítások megadásáról sem:
options SYSVSHM #SysV osztott memória options SYSVSEM #SysV szemaforok options SYSVMSG #SysV folyamatok közti kommunikáció
Egy rendes hozzáféréshez hasonlóan hozzunk létre egy külön oracle hozzáférést is rendszerünkön. Az oracle hozzáférés csak annyiban különleges, hogy linuxos parancsértelmezőt kell társítanunk hozzá. Ehhez vegyük fel /compat/linux/bin/bash sort az /etc/shells állományba, majd állítsuk át az oracle nevű felhasználó parancsértelmezőjét a /compat/linux/bin/bash programra.
A megszokott Oracle környezeti változók, mint például az ORACLE_HOME és ORACLE_SID mellett még definiálnunk kell a következőket is:
Változó | Érték |
---|---|
LD_LIBRARY_PATH | $ORACLE_HOME/lib |
CLASSPATH | $ORACLE_HOME/jdbc/lib/classes111.zip |
PATH | /compat/linux/bin /compat/linux/sbin /compat/linux/usr/bin /compat/linux/usr/sbin /bin /sbin /usr/bin /usr/sbin /usr/local/bin $ORACLE_HOME/bin |
Javasoljuk, hogy az összes környezeti változót a .profile állományban adjuk meg. Ennek megfelelően a példa beállításai így fognak kinézni benne:
ORACLE_BASE=/oracle; export ORACLE_BASE ORACLE_HOME=/oracle; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib export LD_LIBRARY_PATH ORACLE_SID=ORCL; export ORACLE_SID ORACLE_TERM=386x; export ORACLE_TERM CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip export CLASSPATH PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin export PATH
A Linux emulátorban meghúzódó apró egyenletlenségek miatt a telepítés előtt létre kell hoznunk egy .oracle nevű alkönyvtárat a /var/tmp könyvtárban. Helyezzük ezt az oracle felhasználó tulajdonába. Ezt követően minden további gond nélkül képesek leszünk az Oracle telepítésére. Ha netalán mégis problémákba ütköznénk, először mindig az Oracle telepítési és konfigurációs állományait ellenőrizzük! Az Oracle telepítése után rakjuk fel a következő szakaszokban bemutatandó javításokat.
Gyakran problémát okoz, ha a TCP protokollt még nem telepítettük. Ennek következményeképpen ugyanis nem tudnak elindulni a TCP alapú szolgáltatások. Az alábbi műveletek ebben igyekeznek segíteni:
# cd $ORACLE_HOME/network/lib # make -f ins_network.mk ntcontab.o # cd $ORACLE_HOME/lib # ar r libnetwork.a ntcontab.o # cd $ORACLE_HOME/network/lib # make -f ins_network.mk install
Ne felejtsük el ismét elindítani a root.sh szkriptet!
Az Oracle telepítése során root (privilegizált) felhasználóként elvégzendő műveleteket a root.sh elnevezésű szkriptben találjuk. Ez a szkript az orainst könyvtárba kerül. A chown parancs helyes lefutásához alkalmazzuk az alább mellékelt javítást, vagy az egész szkriptet egy linuxos parancsértelmezőből indítsuk el.
*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998 --- orainst/root.sh Mon Dec 28 15:58:53 1998 *************** *** 31,37 **** # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/bin/chown # # Define variables to be used in this script --- 31,37 ---- # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/usr/sbin/chown # # Define variables to be used in this script
Ha nem CD-ről telepítjük az Oracle-t, akkor akár a root.sh forrását is kijavíthatjuk. A neve rthd.sh, és a forrásfa orainst könyvtárában találhatjuk.
A genclntsh szkript a kliensek által használt osztott könyvtár létrehozására alkalmazható. Általában demók fordításához van rá szükség. Az alábbi javítás alkalmazásával a PATH változó értéke törölhető:
*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998 --- bin/genclntsh Tue Dec 22 15:36:49 1998 *************** *** 32,38 **** # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst --- 32,38 ---- # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst
Ha rendesen követtük az iménti utasításokat, akkor most már úgy tudjuk futtatni az Oracle-t, mintha csak Linuxon futna.
Az SAP típusú rendszerek telepítéséhez FreeBSD-re hivatalosan nem kaphatunk műszaki segélynyújtást — csak a minősített platformokat támogatják.
Ez a leírás az SAP R/3 rendszer és Oracle adatbázis Linux változatainak telepítését mutatja be FreeBSD-n, beleértve a FreeBSD és az Oracle telepítését. Kétféle konfigurációt írunk le:
SAP R/3 4.6B (IDES) és Oracle 8.0.5, FreeBSD 4.3-STABLE
SAP R/3 4.6C és Oracle 8.1.7, FreeBSD 4.5-STABLE
Habár ez a dokumentum igyekszik az összes fontos lépést a lehető legrészletesebb módon tárgyalni, semmiképpen sem célja az Oracle és az SAP R/3 alkalmazásokhoz mellékelt telepítési útmutatók kiváltása.
A kifejezetten az SAP vagy az Oracle Linux változataira vonatkozó kérdések, valamint az Oracle és az SAP OSS konkrét használatával kapcsolatos leírások tekintetében a saját dokumentációjukat olvassuk el.
Az SAP telepítéséhez az alábbi CD-ket használtuk fel:
Név | Szám | Leírás |
---|---|---|
KERNEL | 51009113 | SAP Kernel Oracle / telepítő / AIX, Linux, Solaris |
RDBMS | 51007558 | Oracle / RDBMS 8.0.5.X / Linux |
EXPORT1 | 51010208 | IDES / DB-Export / 1. lemez |
EXPORT2 | 51010209 | IDES / DB-Export / 2. lemez |
EXPORT3 | 51010210 | IDES / DB-Export / 3. lemez |
EXPORT4 | 51010211 | IDES / DB-Export / 4. lemez |
EXPORT5 | 51010212 | IDES / DB-Export / 5. lemez |
EXPORT6 | 51010213 | IDES / DB-Export / 6. (utolsó) lemez |
Emellett még használtuk az Oracle 8 Server (az előzetes 8.0.5 változat a Linux 2.0.33 verziójához) CD-jét is, amely igazából nem feltétlenül szükséges, valamint a FreeBSD (a 4.3 RELEASE kiadása után nem sokkal levő) 4.3-STABLE változatát.
Név | Szám | Leírás |
---|---|---|
KERNEL | 51014004 | SAP Kernel Oracle / SAP Kernel 4.6D változat / DEC, Linux |
RDBMS | 51012930 | Oracle 8.1.7/ RDBMS / Linux |
EXPORT1 | 51013953 | 4.6C kiadás SR2 / Export / 1. lemez |
EXPORT1 | 51013953 | 4.6C kiadás SR2 / Export / 2. lemez |
EXPORT1 | 51013953 | 4.6C kiadás SR2 / Export / 3. lemez |
EXPORT1 | 51013953 | 4.6C kiadás SR2 / Export / 4. (utolsó) lemez |
LANG1 | 51013954 | 4.6C kiadás SR2 / Nyelvi támogatás / német, angol, francia / 1. lemez |
A telepítendő nyelvtől függően egyéb nyelvi támogatást tartalmazó CD használata is szükségessé válhat. Itt most csak a német és angol nyelveket használjuk, ezért elegendő az első CD. Csendben hozzátesszük, hogy mind a négy EXPORT CD száma megegyezik. Ugyanígy a három nyelvi CD-nek is megegyeznek a számai (ez eltér a 4.6B IDES kiadás CD számozásától). Az írás pillanatában a FreeBSD 4.5-STABLE (2002.03.20-i) változatát használjuk.
Az SAP R/3 telepítésével kapcsolatban az alábbi füzetek bizonyultak hasznosnak:
Szám | Cím |
---|---|
0171356 | SAP Software on Linux: Essential Comments |
0201147 | INST: 4.6C R/3 Inst. on UNIX - Oracle |
0373203 | Update / Migration Oracle 8.0.5 --> 8.0.6/8.1.6 LINUX |
0072984 | Release of Digital UNIX 4.0B for Oracle |
0130581 | R3SETUP step DIPGNTAB terminates |
0144978 | Your system has not been installed correctly |
0162266 | Questions and tips for R3SETUP on Windows NT / W2K |
Szám | Cím |
---|---|
0015023 | Initializing table TCPDB (RSXP0004) (EBCDIC) |
0045619 | R/3 with several languages or typefaces |
0171356 | SAP Software on Linux: Essential Comments |
0195603 | RedHat 6.1 Enterprise version: Known problems |
0212876 | The new archiving tool SAPCAR |
0300900 | Linux: Released DELL Hardware |
0377187 | RedHat 6.2: important remarks |
0387074 | INST: R/3 4.6C SR2 Installation on UNIX |
0387077 | INST: R/3 4.6C SR2 Inst. on UNIX - Oracle |
0387078 | SAP Software on UNIX: OS Dependencies 4.6C SR2 |
Az alábbi hardvereszközök szükségesek az SAP R/3 rendszer telepítéséhez. Az éles használathoz ennél természetesen valamivel több kell majd:
Változat | 4.6B | 4.6C |
---|---|---|
Processzor | Két Pentium III 800MHz | Két Pentium III 800MHz |
Memória | 1GB ECC | 2GB ECC |
Szabad hely a merevlemezen | 50 - 60GB (IDES) | 50 - 60GB (IDES) |
Éles használatra nagyobb gyorsítótárral rendelkező Xeon processzorokat, nagysebességű háttértárakat (SCSI, hardveres RAID vezérlővel), USV és ECC memória modulok ajánlottak. A nagy tárigényt egyébként az előre beállított IDES rendszer indokolja, ami egy 27 GB méretű adatbázist hoz létre a telepítés során. Ez a terület általában elegendő egy frissen induló rendszer és hozzá tartozó alkalmazásadatok tárolására.
A következő hardverkonfigurációt használtuk: két 800 MHz-es Pentium III processzor és a hozzájuk tartozó alaplap, egy Adaptec® 29160 Ultra160 SCSI-vezérlő (a 40/80 GB méretű DLT szalagos meghajtó és CD-meghajtó használatához) és egy Mylex® AcceleRAID™ RAID-vezérlő (2 csatorna, 6.00-1-00 verziójú firmware és 32 MB memória), amihez két 17 GB-os (tükrözött) merevlemez és négy 36 GB-os merevlemez (RAID 5) csatlakozik.
Itt a hardver egy Dell™ PowerEdge™ 2500 volt: kétprocesszoros alaplap, két darab 1000 MHz-es Pentium III processzorral (fejenként 256 KB gyorsítótárral), 2 GB PC133-as ECC SDRAM memóriával, PERC/3 DC PCI RAID-vezérlővel (128 MB memória), valamint egy EIDE DVD-meghajtóval. A RAID-vezérlőre két, egyenként 18 GB méretű merevlemezt (tükrözve) és négy 36 GB méretű merevlemezt csatlakoztattunk (RAID 5-ben).
Először is telepítenünk kell a FreeBSD-t. Ez több módon is lehetséges, ezekről a 2.13 Szakaszban olvashatunk bővebben.
Az egyszerűség kedvéért az SAP R/3 46B és SAP R/3 46C SR2 telepítése során is ugyanazt a felosztást használtuk. Egyedül az eszközök nevei változtak, mivel a telepítés eltérő hardvereken történt (/dev/da) és /dev/amr, tehát ha az AMI MegaRAID® esetén a /dev/da0s1a helyett a /dev/amr0s1a eszközt láthatjuk):
Állományrendszer | Méret | Csatlakozási pont | |
---|---|---|---|
/dev/da0s1a | 1 GB | / | |
/dev/da0s1b | 6 GB | lapozóállomány | |
/dev/da0s1e | 2 GB | /var | |
/dev/da0s1f | 8 GB | /usr | |
/dev/da1s1e | 45 GB | /compat/linux/oracle | |
/dev/da1s1f | 2 GB | /compat/linux/sapmnt | |
/dev/da1s1g | 2 GB | /compat/linux/usr/sap |
Előre állítsuk be és inicializáljuk a két logikai meghajtót a Mylex és a PERC/3 RAID-vezérlőkön. A hozzá tartozó szoftver a BIOS indításának fázisában hívható be.
A lemezek felosztása némileg eltér az SAP által javasoltaktól, mivel az SAP szerint az Oracle könyvtárait (néhány másikkal együtt) külön-külön érdemes csatlakoztatni — mi most az egyszerűsítés kedvéért csak létrehoztuk ezeket.
Töltsük le a legfrissebb -STABLE forrásokat. Fordítsuk újra az összes forrást (make world) és a beállításainak elvégzése után a saját rendszermagunkat is. Itt ne felejtsük el megadni az SAP R/3 és az Oracle működéséhez szükséges paramétereket.
Elsőként a linux_base portot kell felraknunk (root felhasználóként):
# cd /usr/ports/emulators/linux_base-fc4 # make install distclean
Ha az Oracle-t FreeBSD-re a 10.6 Szakaszban leírtak szerint akarjuk telepíteni, akkor szükségünk lesz a linuxos fejlesztőeszközökre is:
# cd /usr/ports/devel/linux_devtools # make install distclean
A linuxos fejlesztőkörnyezetet csak az SAP R/3 46B IDES telepítésénél raktuk fel. Nincs rá szükségünk, ha a FreeBSD rendszeren nem akarjuk újralinkelni az Oracle adatbázist. Pontosan ez a helyzet, amikor egy Linux rendszerhez gyártott Oracle készletet használunk.
Az R3SETUP elindításához PAM támogatásra is szükségünk lesz. Amikor először próbáltuk meg telepíteni a FreeBSD 4.3-STABLE változatára az SAP-t, felraktuk a PAM-et és az összes hozzá tartozó csomagot, majd végül úgy bírtuk működésre, hogy kényszerítettük a PAM telepítését is. Az SAP R/3 4.6C SR2 esetén szintén sikerült önmagában felrakni a PAM RPM csomagját is, tehát úgy néz ki, hogy a függőségeit már nem kell telepíteni:
# rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \ pam-0.68-7.i386.rpm
Az Oracle 8.0.5 verziójához mellékelt intelligens ügynök futtatásához fel kell rakni a RedHat tcl-8.0.5-30.i386.rpm nevű Tcl csomagját is (máskülönben a az Oracle telepítése közben szükséges újralinkelés nem fog működni). Vannak ugyan egyébként is gondok az Oracle újralinkelésével, azonban ez linuxos probléma, nem pedig FreeBSD-s.
Hasznos lehet, ha felvesszük a linprocfs bejegyzést az /etc/fstab állományba. Ennek pontos részleteit a linprocfs(5) man oldalon találjuk meg. Másik fontos paraméter a kern.fallback_elf_brand=3, amelyet az /etc/sysctl.conf állományba kell beszúrnunk.
Egy egyszerűbb telepítéshez elég csupán a következő állományrendszereket elkészíteni:
csatlakozási pont | méret GB-ban |
---|---|
/compat/linux/oracle | 45 GB |
/compat/linux/sapmnt | 2 GB |
/compat/linux/usr/sap | 2 GB |
Készítenünk kell még néhány linket is, különben az SAP telepítője panaszkodni fogni az ellenőrzésük során:
# ln -s /compat/linux/oracle /oracle # ln -s /compat/linux/sapmnt /sapmnt # ln -s /compat/linux/usr/sap /usr/sap
Az egyik ilyen telepítés közben megjelenő hibaüzenet (a PRD rendszer és az SAP R/3 4.6C SR2 telepítése esetén):
INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200 Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to /sapmnt/PRD/exe. Creating if it does not exist... WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400 Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file /compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The program cannot go on as long as this link exists at this location. Move the link to another location. ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0 can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content '/sapmnt/PRD/exe'
Az SAP R/3 rendszernek két felhasználóra és három csoportra van szüksége. Az igényelt felhasználók nevei az SAP rendszer azonosítójától (System ID, SID) függenek, amely három betűből áll. Egyes ilyen rendszerazonosítók az SAP számára vannak fenntartva. (Például a SAP és a NIX. Ezek teljes listáját az SAP dokumentációjában találjuk meg.) Erre az IDES telepítéséhez az IDS, a 4.6C SR2 telepítésénél a PRD neveket adtuk, mivel ezeket a rendszereket éles használatra szánták. Ennélfogva a következő csoportokat hoztuk létre hozzájuk (a csoportok azonosítói ugyan eltérhetnek az általunk használtaktól):
csoport azonosítója | csoport neve | leírás |
---|---|---|
100 | dba | Adatbázis adminisztrátor |
101 | sapsys | SAP rendszer |
102 | oper | Adatbázis operátor |
Az Oracle alapértelmezett telepítésénél csak a dba csoport jön létre. A dba csoportot oper csoportként is használhatjuk (bővebb információkért lásd az Oracle és az SAP dokumentációját).
Ezenkívül az alábbi felhasználókra van még szükségünk:
felhasználói azonosító | felhasználói név | általános név | csoport | egyéb csoportok | leírás |
---|---|---|---|---|---|
1000 | idsadm/prdadm | sidadm | sapsys | oper | SAP adminisztrátor |
1002 | oraids/oraprd | orasid | dba | oper | Oracle adminisztrátor |
Az adduser(8) parancs használata során a következőkre lesz szükségünk egy “SAP Administrator” létrehozásához (figyeljük a parancsértelmezőt (shell) és a felhasználói könyvtárat (home directory)):
Name: sidadm Password: ****** Fullname: SAP Administrator SID Uid: 1000 Gid: 101 (sapsys) Class: Groups: sapsys dba HOME: /home/sidadm Shell: bash (/compat/linux/bin/bash)
Ugyanígy az “Oracle Administrator” esetében:
Name: orasid Password: ****** Fullname: Oracle Administrator SID Uid: 1002 Gid: 100 (dba) Class: Groups: dba HOME: /oracle/sid Shell: bash (/compat/linux/bin/bash)
A dba és oper csoportok használata során ne felejtsük el megadni az oper csoportot sem.
A könyvtárakat általában külön állományrendszerekként hozzák létre, de ez teljesen az igényeinken múlik. Mi most egyszerű könyvtárakként alakítottuk ki ezeket, ezért tulajdonképpen ugyanazon a RAID 5 tömbön találhatóak meg:
Ehhez először beállítjuk az egyes könyvtárak tulajdonosait és engedélyeit (root felhasználóként):
# chmod 775 /oracle # chmod 777 /sapmnt # chown root:dba /oracle # chown sidadm:sapsys /compat/linux/usr/sap # chmod 775 /compat/linux/usr/sap
Másodsorban orasid felhasználóként hozzuk létre az /oracle/SID alkönyvtárait:
# su - orasid # cd /oracle/SID # mkdir mirrlogA mirrlogB origlogA origlogB # mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6 # mkdir saparch sapreorg # exit
Az Oracle 8.1.7 telepítésénél még további könyvtárakra is szükségünk lesz:
# su - orasid # cd /oracle # mkdir 805_32 # mkdir client stage # mkdir client/80x_32 # mkdir stage/817_32 # cd /oracle/SID # mkdir 817_32
Megjegyzés: A client/80x_32 könyvtárnak pontosan ilyen névvel kell rendelkeznie. Ne cseréljük ki a benne szereplő x-et semmire se!
A harmadik lépésben létrehozzuk a sidadm felhasználóhoz tartozó könyvtárakat:
# su - sidadm # cd /usr/sap # mkdir SID # mkdir trans # exit
A SAP R/3 működéséhez fel kell vennünk néhány olyan bejegyzést is az /etc/services állományba, amelyek a FreeBSD telepítése során nem jönnek létre. Így tehát írjuk be az alábbi sorokat (legalább a használni kívánt példány számához illő sorokat adjuk meg — ez jelen esetünkben most a 00. Természetesen az sem okoz gondot, ha a dp, gw, sp és ms esetén beírjuk az összes példánynak megfelelő portot 00-tól 99-ig). Amennyiben a SAProuter vagy az SAP OSS használatára lenne szükségünk, akkor adjuk meg a SAProuter által lefoglalt 99-es példánynak megfelelő 3299-es portot a rendszerünkön:
sapdp00 3200/tcp # SAP menetirányító 3200 + a példány száma sapgw00 3300/tcp # SAP átjáró 3300 + a példány száma sapsp00 3400/tcp # 3400 + a példány száma sapms00 3500/tcp # 3500 + a példány száma sapmsSID 3600/tcp # SAP üzenetkezelő szerver 3600 + a példány száma sapgw00s 4800/tcp # biztonságos SAP átjáró 4800 + a példány száma
Az SAP-nek legalább két olyan nyelvre van szüksége, amely nem része az alap RedHat telepítéseknek. Az SAP a saját FTP szervereiről elérhetővé tette az ehhez szükséges RPM csomagokat (amelyek viszont csak OSS típusú hozzáférés birtokában tölthetőek le). A 0171356 számú jegyzet tartalmazza a beszerzendő RPM-ek listáját.
Megcsinálhatjuk úgy is, hogy egyszerűen csak linkeket hozunk létre (például a de_DE és en_US könyvtárakra), habár ezt egy éles rendszer esetében semmiképpen sem ajánljuk (az IDES rendszerrel tapasztalataink szerint eddig még remekül működött). Az alábbi nyelvi beállítások fognak tehát nekünk kelleni:
de_DE.ISO-8859-1 en_US.ISO-8859-1
Így hozzuk létre hozzájuk a linkeket:
# cd /compat/linux/usr/share/locale # ln -s de_DE de_DE.ISO-8859-1 # ln -s en_US en_US.ISO-8859-1
A telepítés során az iméntiek hiánya gondokat okozhat. Ha folyamatosan figyelmen kívül hagyjuk az ezekből fakadó hibákat (vagyis a CENTRDB.R3S állományban a gondot okozó lépések STATUS értékét OK-ra állítjuk), akkor komolyabb erőfeszítések megtétele nélkül majd képtelenek leszünk bejelentkezni a frissen telepített SAP rendszerünkbe.
Az SAP R/3 rendszerek temérdek mennyiségű erőforrást igényelnek. Ennek kielégítésére az alábbi paramétereket adjuk hozzá a rendszermag beállításait tartalmazó állományhoz:
# Adjunk a memóriazabálóknak (SAP és Oracle): options MAXDSIZ="(1024*1024*1024)" options DFLDSIZ="(1024*1024*1024)" # Kell néhány System V beállítás is: options SYSVSHM # SYSV típusú osztott memória be options SHMMAXPGS=262144 # a megosztható memória maximális mérete lapokban #options SHMMAXPGS=393216 # a 46C telepítésekor ezt használjuk options SHMMNI=256 # az osztott memóriákhoz tartozó azonosítók maximális száma options SHMSEG=100 # a futó programonként megosztható szegmensek maximuma options SYSVMSG # SYSV típusú üzenetsorok options MSGSEG=32767 # a rendszerben keringő üzenetszegmensek maximális száma options MSGSSZ=32 # az üzenetszegmensek mérete. 2 hatványa LEGYEN options MSGMNB=65535 # maximális karakter üzenetsoronként options MSGTQL=2046 # a rendszerben levő üzenetek maximuma options SYSVSEM # SYSV típusú szemaforok options SEMMNU=256 # a szemaforok UNDO struktúráinak száma options SEMMNS=1024 # a rendszerben levő szemaforok száma options SEMMNI=520 # a szemaforok azonosítóinak mennyisége options SEMUME=100 # az UNDO kulcsok száma
Az itt megadott minimum értékek az SAP által kiadott dokumentációkból származnak. Mivel a Linux változathoz erről nincs külön leírás, ezért a (32 bites) HP-UX változat dokumentációi között érdemes ennek utánanézni. Mivel a 4.6C SR2 telepítéséhez használt rendszeren valamivel több fizikai memória állt rendelkezésünkre, ezért az osztott szegmensek méretét nagyobbra tudtuk megválasztani mind az SAP, mind az Oracle esetében, ami magyarázza a megosztható lapok nagyobb számát.
Megjegyzés: A FreeBSD i386 változatának telepítése során hagyjuk meg a MAXDSIZ és DFLDSIZ értékek alapértelmezett 1 GB-os maximumát. Ellenkező esetben ezekhez hasonló furcsa hibaüzeneteket láthatunk: “ORA-27102: out of memory” vagy “Linux Error: 12: Cannot allocate memory”.
Sok CD-t kell a telepítés során mozgatni, tehát csatlakoztatni és leválasztani. Ha viszont elegendő meghajtóval rendelkezünk, akkor akár csatlakoztathatjuk egyszerre is az összeset. Vagy felmásolhatjuk a CD-k tartalmát a nekik megfelelő könyvtárakba:
/oracle/SID/sapreorg/cd-neve
ahol a cd-neve a
következők valamelyike: KERNEL,
RDBMS, EXPORT1,
EXPORT2, EXPORT3,
EXPORT4, EXPORT5
és EXPORT6 (4.6B/IDES), valamint
KERNEL, RDBMS,
DISK1, DISK2,
DISK3, DISK4
és LANG (4.6C SR2). A
csatlakoztatott CD-ken található
állományok neveinek nagybetűseknek kell
lenniük. Ha nem így lenne, akkor a
csatlakoztatásnál adjuk meg a
-g
opciót. Így tehát a
következő parancsokat kell kiadnunk:
# mount_cd9660 -g /dev/cd0a /mnt # cp -R /mnt/* /oracle/SID/sapreorg/cd-neve # umount /mnt
Elsőként egy install nevű könyvtárat kell előkészítenünk:
# cd /oracle/SID/sapreorg # mkdir install # cd install
Ezután futtassuk le a telepítőszkriptet, ami pedig bemásolja az install könyvtárba szinte az összes fontos állományt:
# /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH
Az IDES (4.6B) változathoz egy teljes SAP R/3 bemutató rendszer is tartozik, ezért a megszokott három CD helyett hat EXPORT típusú CD-ből áll. Itt a CENTRDB.R3S telepítősablon csak a szabvány központi példányt hozza létre (R/3 és az adatbázis), az IDES központi példányát már nem. Ezért az EXPORT1 könyvtárból ki kell másolnunk a CENTRDB.R3S állományt, különben az R3SETUP csak három EXPORT CD-t fog kérni.
Az újabb SAP 4.6 SR2 kiadáshoz négy EXPORT CD tartozik. A telepítés folyamatát a CENTRAL.R3S állományban levő paraméterek vezérlik. A korábbi kiadásokkal ellentétben nincsenek külön sablonok az adatbázissal és a nélküle telepítendő központi példányok számára. Az SAP az adatbázisok telepítésére külön sablont használ. Újrakezdéskor a telepítést ettől függetlenül elegendő az eredeti állománnyal újraindítani.
A telepítés közben és után az SAP-nek a hostname paranccsal csak a gép saját nevét, nem pedig a teljes hálózati nevét kell megadnunk. Ilyenkor ezt vagy egyenként begépeljük, vagy létrehozunk rá egy álnevet az orasid és sidadm (valamint a megfelelő lépésekben a root) felhasználóknak: alias hostname='hostname -s'. Ezenkívül még az SAP telepítésekor létrehozott mindkét felhasználó .profile és .login állományait is beállíthatjuk ennek megfelelően.
Ne felejtsük el jól beállítani az LD_LIBRARY_PATH környezeti változót:
# export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib
A telepítés könyvtárában root felhasználóként indítsuk el az R3SETUP programot:
# cd /oracle/IDS/sapreorg/install # ./R3SETUP -f CENTRDB.R3S
A szkript ezek után feltesz néhány kérdést (az alapértelmezett válaszok zárójelben, közvetlenül a megadottak után):
Kérdés | Alapértelmezés | Válasz |
---|---|---|
Enter SAP System ID | [C11] | IDSEnter |
Enter SAP Instance Number | [00] | Enter |
Enter SAPMOUNT Directory | [/sapmnt] | Enter |
Enter name of SAP central host | [troubadix.domain.de] | Enter |
Enter name of SAP db host | [troubadix] | Enter |
Select character set | [1] (WE8DEC) | Enter |
Enter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.6 | 1Enter | |
Extract Oracle Client archive | [1] (Yes, extract) | Enter |
Enter path to KERNEL CD | [/sapcd] | /oracle/IDS/sapreorg/KERNEL |
Enter path to RDBMS CD | [/sapcd] | /oracle/IDS/sapreorg/RDBMS |
Enter path to EXPORT1 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT1 |
Directory to copy EXPORT1 CD | [/oracle/IDS/sapreorg/CD4_DIR] | Enter |
Enter path to EXPORT2 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT2 |
Directory to copy EXPORT2 CD | [/oracle/IDS/sapreorg/CD5_DIR] | Enter |
Enter path to EXPORT3 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT3 |
Directory to copy EXPORT3 CD | [/oracle/IDS/sapreorg/CD6_DIR] | Enter |
Enter path to EXPORT4 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT4 |
Directory to copy EXPORT4 CD | [/oracle/IDS/sapreorg/CD7_DIR] | Enter |
Enter path to EXPORT5 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT5 |
Directory to copy EXPORT5 CD | [/oracle/IDS/sapreorg/CD8_DIR] | Enter |
Enter path to EXPORT6 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT6 |
Directory to copy EXPORT6 CD | [/oracle/IDS/sapreorg/CD9_DIR] | Enter |
Enter amount of RAM for SAP + DB | 850Enter (megabyte) | |
Service Entry Message Server | [3600] | Enter |
Enter Group-ID of sapsys | [101] | Enter |
Enter Group-ID of oper | [102] | Enter |
Enter Group-ID of dba | [100] | Enter |
Enter User-ID of sidadm | [1000] | Enter |
Enter User-ID of orasid | [1002] | Enter |
Number of parallel procs | [2] | Enter |
Ha a CD-ket nem különböző helyekre másoltuk, akkor az SAP telepítője nem fogja megtalálni ezeket (a rajtuk levő LABEL.ASC segít neki az azonosításban) és kérni fogja a CD csatlakoztatását, illetve a csatlakozási pontjának megadását.
A CENTRDB.R3S sem minden esetben mentes a hibáktól. A tapasztalataink szerint az EXPORT4 címkéjű CD-t kérte újra, miközben a helyes kulcsokat jelezte ki (6_LOCATION, majd 7_LOCATION stb.), így egyszerűen csak lépjünk tovább az értékek meghagyásával.
Függetlenül az imént említett problémáktól, egészen az Oracle adatbáziskezelő telepítéséig mindennek működnie kellene.
Állítsuk be jól az LD_LIBRARY_PATH környezeti változó értékét. Ez némileg eltér a 4.6B és az Oracle 8.0.5 párosának beállításától:
# export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib
A telepítés könyvtárából root felhasználóként indítsuk el az R3SETUP programot:
# cd /oracle/PRD/sapreorg/install # ./R3SETUP -f CENTRAL.R3S
A szkript ezek után feltesz néhány kérdést (az alapértelmezett válaszok zárójelben, közvetlenül a megadottak után):
Kérdés | Alapértelmezés | Válasz |
---|---|---|
Enter SAP System ID | [C11] | PRDEnter |
Enter SAP Instance Number | [00] | Enter |
Enter SAPMOUNT Directory | [/sapmnt] | Enter |
Enter name of SAP central host | [majestix] | Enter |
Enter Database System ID | [PRD] | PRDEnter |
Enter name of SAP db host | [majestix] | Enter |
Select character set | [1] (WE8DEC) | Enter |
Enter Oracle server version (2) Oracle 8.1.7 | 2Enter | |
Extract Oracle Client archive | [1] (Yes, extract) | Enter |
Enter path to KERNEL CD | [/sapcd] | /oracle/PRD/sapreorg/KERNEL |
Enter amount of RAM for SAP + DB | 2044 | 1800Enter (megabyte) |
Service Entry Message Server | [3600] | Enter |
Enter Group-ID of sapsys | [100] | Enter |
Enter Group-ID of oper | [101] | Enter |
Enter Group-ID of dba | [102] | Enter |
Enter User-ID of oraprd | [1002] | Enter |
Enter User-ID of prdadm | [1000] | Enter |
LDAP support | 3Enter (nincs támogatás) | |
Installation step completed | [1] (continue) | Enter |
Choose installation service | [1] (DB inst,file) | Enter |
Az OSUSERDBSID_IND_ORA és OSUSERIDADM_IND_ORA lépésekben az orasid és sidadm felhasználók létrehozása hibákra futhat.
Függetlenül az említett problémáktól, az Oracle adatbáziskezelő telepítéséig mindennek remekül kell működnie.
Az Oracle Linux változatának telepítése során felmerülő problémák tekintetében keressük fel az SAP füzeteket és az Oracle Readme állományait. A legtöbb, ha nem is az összes gondot az egymással nem kompatibilis függvénykönyvtárak okozzák.
Az Oracle telepítésének részleteit a Az Oracle telepítése című szakaszban találjuk.
Az Oracle 8.0.5 verziójának használata esetén néhány további függvénykönyvtár újralinkelésére is szükség lesz, mivel az Oracle 8.0.5 még a régi glibc könyvtárral lett fordítva (RedHat 6.0), viszont a RedHat 6.1 már a glibc újabb verzióját használja. A linkelés működéséhez az alábbi csomagokat kell még telepítenünk:
compat-libs-5.2-2.i386.rpm
compat-glibc-5.2-2.0.7.2.i386.rpm
compat-egcs-5.2-1.0.3a.1.i386.rpm
compat-egcs-c++-5.2-1.0.3a.1.i386.rpm
compat-binutils-5.2-2.9.1.0.23.1.i386.rpm
A részleteket lásd az SAP füzeteiben vagy az Oracle Readme állományaiban. Amennyiben ez nem oldható meg, akkor az eredeti binárisok, esetleg az eredeti RedHat rendszerből származó újralinkelt binárisok is használhatóak (habár a telepítés pillanatában személyesen ezt nem tudtuk ellenőrizni).
Az intelligens ügynök lefordításához fel kell raknunk a RedHat saját Tcl csomagját. Ha ehhez nem tudjuk beszerezni a tcl-8.0.3-20.i386.rpm csomagot, akkor a RedHat 6.1 változatához készült tcl-8.0.5-30.i386.rpm is megteszi.
Az újralinkeléstől eltekintve a telepítés többi része szinte adja magát:
# su - oraids # export TERM=xterm # export ORACLE_TERM=xterm # export ORACLE_HOME=/oracle/IDS # cd $ORACLE_HOME/orainst_sap # ./orainst
Az Oracle On-Line Text Viewer kikapcsolásán (mivel az jelenleg Linux alatt sem érhető el) kívül mindegyik képernyőt hagyjuk jóvá az Enter billentyű lenyomásával. Az Oracle ezután a rendelkezésre álló gcc, egcs vagy i386-redhat-linux-gcc helyett a i386-glibc20-linux-gcc használatával újra akarja linkelni magát.
Idő hiányában az Oracle 8.0.5 PreProduction kiadásából emeltünk ki binárisokat, de az adatbáziskezelő rendszer felélesztésére tett első kísérleteink kudarcba fulladtak, és ezután a megfelelő RPM-ek összeszedése valódi rémálomnak bizonyult.
A telepítés nagyon könnyű. Csatlakoztassuk a CD-t, majd indítsuk el a telepítőt. Ezután meg kell adnunk az Oracle felhasználói könyvtárát és a telepítő odamásolja az összes binárist. Habár a telepítés megkezdése előtt a korábbi kísérleteink nyomát nem tüntettük el.
Ezt követően az Oracle adatbázisrendszer minden további gond nélkül elindítható.
Szedjük le az oracle8172.tgz állományt a Linux rendszeren létrehozott könyvtárából, és bontsuk ki a /oracle/SID/817_32/ könyvtárba.
Először is ellenőrizzük az isamd (sidadm) és oraids (orasid) felhasználók környezeti beállításait. A .profile, .login és .cshrc állományaikban a korábbi beállítások szerint kell szerepelnie a hostname parancsnak. Ha még mindig a teljes hálózati név lenne meg bennük, akkor a hostname parancsot át kell írni mind a három állományban a hostname -s parancsra.
Ezután az R3SETUP folytatható vagy újraindítható (attól függően, hogy a kilépést választottuk-e vagy sem). Az R3SETUP ekkor létrehozza az adatbázisban a táblákat és az R3load meghívásával feltölti ezeket adatokkal (a 46B IDES változat esetében az EXPORT1 - EXPORT6, a 46C esetében pedig a DISK1 - DISK4 lemezekről).
Amikor a feltöltés befejeződött (ami akár órákig is eltarthat), szükség lesz még néhány jelszó megadására is. A próbatelepítéseknél nyugodtan használhatjuk a jól ismert alapértelmezett jelszavakat (azonban mindenképpen változtassuk meg ezeket, ha egy kicsit is számít a biztonság!):
Kérdés | Válasz |
---|---|
Enter Password for sapr3 | sapEnter |
Confirum Password for sapr3 | sapEnter |
Enter Password for sys | change_on_installEnter |
Confirm Password for sys | change_on_installEnter |
Enter Password for system | managerEnter |
Confirm Password for system | managerEnter |
A 4.6B telepítése során még gondjaink akadtak a dipgntab használatával.
Így kell elindítani az orasid felhasználóval az Oracle Listenert:
% umask 0; lsnrctl start
Ha máshogy próbálkozunk, akkor az ORA-12546 kódú hibát fogjuk kapni, mert a hálózati portok socketei nem rendelkeznek a szükséges engedélyekkel. Lásd a 072984-es SAP füzet.
Ha nem Latin 1 kódolású nyelveket akarunk importálni az SAP rendszerbe, akkor frissítenünk kell a többnyelvű nyelvi támogatáshoz (Multi National Language Support, MNLS) tartozó táblázatokat. Ezek bemutatását a 15023 és 45619 számú SAP OSS füzetekben olvashatjuk. Minden más esetben az SAP telepítésekor nyugodtan kihagyhatjuk.
Megjegyzés: Ha még nincs is konkrétan szükségünk az MNLS-re, akkor is ellenőriznünk és inicializálnunk kell a TCPDB táblát. A 0015023 és 0045619 számú SAP füzetekben tudhatunk meg erről többet.
Az SAP R/3 licenckulcsát külön kell kérni. Fontos, mert a telepítéshez használatos ideiglenes licenc csak négy hétig érvényes. Először szerezzük meg a hardverkulcsot. Jelentkezzünk be az idsadm felhasználóval és adjuk ki a saplicense parancsot:
# /sapmnt/IDS/exe/saplicense -get
A saplicense paraméter nélkül meghívására válaszul opciókat listáz ki. A licenckulcsot megérkezése után így tudjuk élesíteni:
# /sapmnt/IDS/exe/saplicense -install
Ezután a következő értékeket kell megadni:
SAP SYSTEM ID = SID, 3 karakter CUSTOMER KEY = hardverkulcs, 11 karakter INSTALLATION NO = telepítés száma, 10 számjegy EXPIRATION DATE = ééééhhnn, tehát "99991231" LICENSE KEY = licenckulcs, 24 karakter
Hozzunk létre egy felhasználót a 000 kliensen belül (a csak rajta belül elvégezhető feladatokhoz, aki különbözik a sap* és ddic felhasználóktól). Felhasználónévként általában a wartung nevet választottuk (ami angolul a service névnek, avagy szolgáltatásnak felel meg). A sap_new és sap_all nevű profilok is kellenek. A biztonságosság kedvéért a kliens összes alapértelmezett felhasználójának (beleértve a sap* és ddic felhasználókat is) változtassuk meg a jelszavát.
A ddic és sap* felhasználóktól eltérő nevű felhasználóval a 000 kliensen belül legalább a következőket végezzük el:
Feladat | Tranzakció |
---|---|
A szállítási rendszer (Transport System) beállítása, például a Stand-Alone Transport Domain Entity értékre | STMS |
A rendszer profiljának létrehozása és szerkesztése | RZ10 |
A működési módok és példányok karbantartása | RZ04 |
Az iménti és az összes többi telepítés utáni lépések leírása teljes egészében megtalálható az SAP telepítési útmutatóiban.
Az /oracle/IDS/dbs/initIDS.sap állomány tartalmazza a SAP tartalék profilját. Itt többek közt a használni kívánt szalag méretét, a tömörítés típusát és hasonló paramétereket kell definiálni. A sapdba / brbackup futtatásához a következő értékeket változtattuk meg:
compress = hardware archive_function = copy_delete_save cpio_flags = "-ov --format=newc --block-size=128 --quiet" cpio_in_flags = "-iuv --block-size=128 --quiet" tape_size = 38000M tape_address = /dev/nsa0 tape_address_rew = /dev/sa0
Magyarázat:
compress
(tömörítés): HP DLT1
típusú szalagot használtunk, ami tud
hardveres tömörítést.
archive_function
(archiválási házirend): Ez adja meg, hogy
alapértelmezés szerint mi történjen
az Oracle archivált naplóival: az új
naplóállományok először a
szalagra mentődnek, majd a már lementett
naplók ismét mentésre kerülnek
és végül törlődnek. Ezzel sok
fejfájástól menekülünk meg,
mivel ilyenkor az archiváló szalagok esetleges
sérülése esetén is
valószínűleg képesek leszünk
visszaállítani az adatbázist.
cpio_flags
(a cpio
beállítása): A -B
használata alapértelmezés, amivel a
blokkok mérete 5120 byte-ra
állítódik. A DLT típusú
szalagokhoz a HP legalább 32 KB-os
blokkméretet javasolt, ezért a
--block-size=128
beállítással ezt 64 KB-ra
növeltük. Szükségünk volt a
--format=newc
beállításra is, mivel 65535-nél
több inode számunk van. Az utolsó
beállítás a --quiet
,
amivel megakadályozzuk, hogy a cpio
lementett blokkokat összefoglaló
kijelzésére begerjedjen a
brbackup.
cpio_in_flags
(a cpio bemeneti
beállításai): A szalagok
visszatöltésénél használt
beállítások. A formátumot
automatikusan felismeri.
tape_size
(szalagméret): Ezzel
adjuk meg általában a szalag nyers
kapacitását. Biztonsági okokból
(hardveres tömörítést
használunk) ez az érték a
ténylegesnél valamivel kisebb.
tape_address
(szalagos eszköz): a
cpio által használható
nem visszatekerhető eszköz.
tape_address_rew
(visszatekerhető
szalagos eszköz): A cpio által
használható visszatekerhető
eszköz.
Az SAP alábbi paramétereit kell beállítani a telepítés után (IDES 46B, 1 GB memóriával):
Név | Érték |
---|---|
ztta/roll_extension | 250000000 |
abap/heap_area_dia | 300000000 |
abap/heap_area_nondia | 400000000 |
em/initial_size_MB | 256 |
em/blocksize_kB | 1024 |
ipc/shm_psize_40 | 70000000 |
0013026 SAP füzet:
0157246 SAP füzet:
Megjegyzés: A fenti paraméterek használatával egy 1 gigabyte fizikai memóriával rendelkező rendszer esetén nagyjából így alakul a memóriahasználat:
Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free(547 MB aktív, 305 MB inaktív, 109 MB rögzített, 40 MB gyorsítótár, 112 MB puffer, 3492 KB szabad)
Az R3SETUP hiba esetén leáll. Miután átnéztük a hibára utaló naplókat és elhárítottuk a hiba okát, újra el kell indítanunk az R3SETUP programot, majd a REPEAT opció kiválasztásával próbáljuk megismételni az R3SETUP által kifogásolt legutóbbi műveletet.
Az R3SETUP újraindításához egyszerűen adjuk meg a megfelelő R3S állományt:
# ./R3SETUP -f CENTRDB.R3S
a 4.6B verzió esetén, vagy a
# ./R3SETUP -f CENTRAL.R3S
a 4.6C verzió esetén, függetlenül attól, hogy a hiba a CENTRAL.R3S vagy DATABASE.R3S állományoknál keletkezett.
Megjegyzés: Egyes lépéseknél az R3SETUP úgy véli, hogy az SAP programjai működnek (mivel a hozzájuk tartozó lépéseket már megtettük), így a hibák miatt az adatbázist esetleg korábban nem tudta elindítani. Ezért a hibák kijavításának végeztével az R3SETUP ismételt indítása előtt nekünk kell beindítani mind az adatbázist, mind pedig az SAP rendszert.
Ne felejtsük el újra elindítani az Oracle Listener segédprogramját sem (az orasid felhasználóval adjuk ki a umask 0; lsnrctl start parancsot), ha az időközben leállt volna (például a rendszer kényszerű újraindítása miatt).
Ha az R3SETUP panaszkodik ebben a lépésben, akkor írjuk át az általa ekkor használt sablont (a 4.6B esetén ez a CENTRDB.R3S, illetve a 4.6C esetén ez a CENTRAL.R3S vagy a DATABASE.R3S). Keressük a [OSUSERSIDADM_IND_ORA] szöveget, vagy csak a STATUS=ERROR bejegyzést, majd írjuk be a következő értékeket:
HOME=/home/sidadm (üres volt) STATUS=OK (ERROR státusza volt)
Ezután indítsuk újra az R3SETUP programot.
Az R3SETUP ebben a lépésben is hajlamos panaszkodni. Az itt felbukkanó hiba hasonló az OSUSERSIDADM_IND_ORA lépésben jelentkezőhöz. Szerkesszük át az R3SETUP által ilyenkor használt sablont (4.6B verzió esetén ez a CENTRDB.R3S, illetve 4.6C verziónál a CENTRAL.R3S vagy DATABASE.R3S). Keressük meg a [OSUSERDBSID_IND_ORA] részt, vagy csak a STATUS=ERROR bejegyzést, majd írjuk át az ebben a szakaszban szereplő értéket így:
STATUS=OK
Indítsuk újra az R3SETUP programot.
A telepítés megkezdése előtt nem tiltottuk le az Oracle On-Line Text Viewer felrakását. Habár Linux esetén ez nem használható, alapértelmezés szerint mégis ki van választva. Az Oracle telepítő menüjében tiltsuk le ezt és nélküle kezdjük újra a telepítést.
Ha ilyen hibával kerülünk szembe, akkor hiányoznak a megfelelő nyelvi állományok. A 0171356 SAP füzet tartalmazza a telepítendő RPM csomagok felsorolását (például a RedHat 6.1 esetén a saplocales-1.0-3 és saposcheck-1.0-1). Amennyiben figyelmen kívül hagyjuk az ilyen hibákat, és az R3SETUP minden kiakadásánál átírjuk (a CENTRDB.R3S állományban) az STATUS értékét az ERROR értékről az OK értékre és újraindítjuk, az SAP nem állítódik be jól és nem tudunk a SAPgui alkalmazással rácsatlakozni a frissen telepített rendszerre még akkor sem, ha el tudtuk indítani. Amikor a régebbi linuxos SAPgui alkalmazással csatlakozunk, a következő üzeneteket kapjuk:
Sat May 5 14:23:14 2001 *** ERROR => no valid userarea given [trgmsgo. 0401] Sat May 5 14:23:22 2001 *** ERROR => ERROR NR 24 occured [trgmsgi. 0410] *** ERROR => Error when generating text environment. [trgmsgi. 0435] *** ERROR => function failed [trgmsgi. 0447] *** ERROR => no socket operation allowed [trxio.c 3363] Speicherzugriffsfehler
Ez a viselkedés annak köszönhető, hogy az SAP R/3 nem képes jól összerendelni a nyelvi beállításokat, sőt, magát sem képes jól beállítani (hiányoznak némely bejegyzések az adatbázis egyes tábláiban). Az SAP-hez úgy tudunk ilyenkor csatlakozni, ha a DEFAULT.PFL állományba felvesszük a következő bejegyzéseket (lásd 0043288 füzet):
abap/set_etct_env_at_new_mode = 0 install/collate/active = 0 rscp/TCP0B = TCP0B
Majd indítsuk újra az egész SAP rendszert. Ezután már tudunk csatlakozni hozzá, még ha az országra jellemző nyelvi beállítások nem is működnek tökéletesen. Miután korrigáltuk az ország beállításait (és felraktuk a megfelelő nyelvi állományokat), távolítsuk el az iménti bejegyzéseket a DEFAULT.PFL állományból és indítsuk újra az SAP rendszert.
Ez a hiba FreeBSD alatt az Oracle 8.1.7 használata során következhet be. Akkor történik, amikor az Oracle adatbázis nem volt képes rendesen inicializálni magát és összeomlott, aminek révén szemaforokat és memóriát hagyott megosztva a rendszerben. Így az adatbázis következő indításakor kapunk egy kövér ORA-00001 hibát.
Az ipcs -a paranccsal keressük meg ezeket, majd az ipcrm segítségével pedig számoljuk fel.
Ez a hiba az Oracle 8.1.7 használatakor következhet be. Akkor kapjuk ezt a hibát, amikor prdadm felhasználóként a elindítjuk startsap szkriptet (például startsap_majestix_00).
Erre gyógyír lehet, ha ehelyette az adatbázis elindításához az oraprd felhasználóval adjuk ki az svrmgrl parancsot:
% svrmgrl SVRMGR> connect internal; SVRMGR> startup; SVRMGR> exit
Az Oracle Listener alkalmazását oraids felhasználóként az alábbi paranccsal indítsuk el:
# umask 0; lsnrctl start
Máskülönben ORA-12546 hibát kapunk, mivel a hálózati portokhoz tartozó socketek nem rendelkeznek a megfelelő engedélyekkel. Lásd 0072984 SAP füzet.
Akkor fordul elő ilyen hiba, amikor a MAXDSIZ és DFLDSIZ értékeit 1 GB-nál (1024 x 1024 x 1024-nél) nagyobbra állítottuk. Mellé még kapunk egy “Linux Error 12: Cannot allocate memory” hibát is.
Erről alapvetően a 0130581 számú SAP füzet ad tájékoztatást (az R3SETUP DIPGNTAB lépése hibára fut). Az IDES telepítése során az SAP rendszer valamiért az “IDS” név helyett egy üres karakterláncot használ. Ez a könyvtárak elérésében kisebb gondokat okoz, mivel az elérési útvonaluk a SID-ből generálódik (ami ebben az esetben az IDS). Tehát a
/usr/sap/IDS/SYS/... /usr/sap/IDS/DVMGS00
helyett a következőt próbálja meg elérni:
/usr/sap//SYS/... /usr/sap/D00
A telepítés folytatásához létrehoztunk egy linket és egy másik könyvtárat:
# pwd /compat/linux/usr/sap # ls -l total 4 drwxr-xr-x 3 idsadm sapsys 512 May 5 11:20 D00 drwxr-x--x 5 idsadm sapsys 512 May 5 11:35 IDS lrwxr-xr-x 1 root sapsys 7 May 5 11:35 SYS -> IDS/SYS drwxrwxr-x 2 idsadm sapsys 512 May 5 13:00 tmp drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 trans
Észrevettük, hogy a SAP füzetekben (0029227 és 0008401) ugyanezt a viselkedést írják le. Az SAP 4.6C telepítésénél azonban ilyen hibával nem találkoztunk.
Az SAP 4.6C telepítése folyamán ez a hiba csupán egy korábban bekövetkezett másik hiba utóhatása volt. Itt át kell néznünk az összes érintett naplót és ki kell javítanunk a tényleges problémát.
Amennyiben a naplók átvizsgálása után csak ezt találjuk egyedüli hibának (lásd SAP füzetek), állítsuk át (a CENTRDB.R3S állományban) a STATUS értékét az OK értékre, majd indítsuk újra az R3SETUP programot. A telepítés befejezése után hajtsuk végre az SE38 tranzakcióból az RSWBOINS riportot. A további RFCRSWBOINI és RFCRADDBDIF lépésekkel kapcsolatban lásd a 0162266 SAP füzetet.
Itt az előbbihez hasonló feltételek élnek: mindenképpen ellenőrizzük a naplókban, hogy a hibát nem egy korábban keletkezett hiba okozta.
Ha tényleg csak az 0162266 SAP füzetben leírtak érvényesek, akkor (a CENTRDB.R3S állományban) állítsuk a gondot okozó lépés STATUS értékét az ERROR értékről az OK értékre, és indítsuk újra az R3SETUP programot. A telepítés után pedig hajtsuk végre az SE38 tranzakciból az RADDBDIF riportot.
Ez a disp és work SAP programok indítása során történhet meg. Az SAP rendszert indító startsap szkriptről leválva indulnak el a többi SAP program elindításáért felelős alfolyamatok. Ennek eredményeképpen a szkript maga nem fogja észrevenni a hibát.
Az SAP programok elindulását az ps ax | grep SID paranccsal tudjuk ellenőrizni. Az eredményül kapott listában az összes aktív Oracle és SAP programnak szerepelnie kell. Ha ebből az tűnik ki, hogy bizonyos programok hiányoznak, vagy nem képesek kapcsolódni az SAP rendszerhez, akkor az /usr/sap/SID/DVEBMGSnr/work/ könyvtárban nézzük át a hozzájuk tartozó naplóállományokat. Elsősorban a dev_ms és a dev_disp állományok fontosak számunkra.
A 31-es jelzés akkor keletkezik, ha az Oracle és az SAP által használt osztott memória mértéke meghaladja a rendszermag beállításai közt megadott értéket. Ezt tehát ennek növelésével lehet orvosolni:
# az éles 46C rendszereknek több kell: options SHMMAXPGS=393216 # a 46B beéri kevesebbel is: #options SHMMAXPGS=262144
A saposcol (4.6D verzió) programmal akad néhány probléma. Az SAP rendszer az saposcol segítségével próbál adatokat gyűjteni a rendszer teljesítményéről. Mivel ez a program nem feltétlenül szükséges az SAP rendszer működéséhez, ez a probléma nem tekinthető komolynak. A korábbi (4.6B) verziókban ugyan működik, de semmilyen adatot nem képes begyűjteni (mivel a legtöbb hívás, például a processzorhasználat függvénye, egyszerűen csak nullát ad vissza).
Ha kíváncsiak vagyunk a Linux
emuláció működésére,
olvassuk el ezt a szakaszt. Az itt leírtak
leginkább Terry Lambert
(<tlambert@primenet.com>
) FreeBSD chat levelezési lista
címére írt levele nyomán kerülnek
bemutatásra (Az üzenet azonosítója:
<199906020108.SAA07001@usr09.primenet.com>).
A FreeBSD rendelkezik egy ún. “végrehajtási osztály betöltővel” (execution class loader). Ez lényegében a execve(2) rendszerhívás alatt meghúzódó absztrakciós réteg.
A FreeBSD-nek a #! karaktersorozat hatására parancsértelmezők vagy a hozzájuk tartozó szkriptek betöltésére utasító biztonsági betöltő helyett van egy listája az alkalmas betöltőkről.
A UNIX rendszerek a hagyományok szerint egyetlen betöltővel rendelkeznek, ami először megvizsgálja a betölteni kívánt állomány bűvös számát (ami általában az első 4 vagy 8 byte) és ez alapján eldönti, hogy az adott formátum támogatott-e. Amennyiben ez így van, meghívja a betöltőt.
Ha a bináris típusa nem ismert a rendszer számára, akkor az execve(2) hívás hibával tér vissza, és a parancsértelmező próbálja meg a saját parancsaiként értelmezni.
Eddig ez volt az alapértelmezés, “akármilyen parancsértelmezőnk is volt”.
Később az sh(1) kódjába bekerült egy aprócska okosítás, amivel megnézte az állomány első két karakterét, és ha az :\n volt, akkor a futtatáshoz maga helyett a csh(1) parancsértelmezőt hívta meg (ezt állítólag először a SCO csinálta).
A FreeBSD viszont végignézi a betöltők teljes listáját, amiben a sor végén szerepel egy általános #! formátumú betöltő. Ez az állomány futtatásához használatos értelmezők kódját keresi, és ha egyet sem sikerül azonosítania, akkor a /bin/sh programot indítja el.
A Linux ABI támogatását a FreeBSD úgy oldja meg, hogy először észleli az ELF bináris bűvös számát (ekkor még nem tesz különbséget a FreeBSD, Solaris, Linux vagy más ELF típusú binárisokat használó operációs rendszerek közt).
Ezután az ELF formátum betöltője az ELF állomány megjegyzéseket tároló szakaszában bélyegek (brand) után kutat, ami SVR4 és Solaris ELF binárisok esetén nem létezik.
A Linux binárisokat működésükhöz a brandelf(1) segítségével Linux típusúnak kell megbélyegezni:
# brandelf -t Linux állomány
Miután ezt megcsináltuk, az ELF betöltő észre fogja venni az állomány Linux típusát.
Mikor az ELF betöltő észleli, hogy az állomány Linux típusú, kicseréli egy mutató értékét a proc struktúrában. Minden rendszerhívás ezen a mutatón keresztül érhető el (a hagyományos UNIX rendszerekben ez a rendszerhívásokat tartalmazó sysent[] struktúratömb). Emellett a frissen elindított program szoftveres megszakításait tartalmazó tömbjéhez beállítja a speciális jelzések kezelését, valamint a Linux modul által végzett néhány további (kisebb) javítást.
A Linux rendszerhívásokat tartalmazó tömb többek közt tartalmazza a sysent[] bejegyzések egy listáját, amelyek címei a rendszermag Linux moduljára mutatnak.
Amikor a Linux bináris hív egy rendszerhívást, a hozzá tartozó szoftveres megszakítás kódja a proc struktúrából a neki megfelelő rendszerhívás kódját hivatkozza, így FreeBSD rendszerhívás belépési pontja helyett a Linuxét kapja meg.
Ráadásul Linux módban a
különböző állományok
hivatkozásai is
átirányítódnak.
Ez lényegében olyan, mint amit az
állományrendszerek
csatlakoztatásánál a union
beállítás csinál (ami
nem egyezik meg az
unionfs állományrendszerrel!).
Ilyenkor az állományokat először a
/compat/linux/eredeti-hely
könyvtárában keresi, és
majd ha ott nem találja, csak akkor
kezdi el keresni az
/eredeti-hely
ponton. Ezzel oldhatjuk meg, hogy más binárisok
futtatását igénylő binárisok is
képesek legyenek rendesen működni
(például így az egész linuxos
eszköztár tud futni a Linux ABI-n keresztül).
Egyúttal arra is utal, hogy ha a Linux binárisok
számára nem áll rendelkezésre a
megfelelő bináris, akkor FreeBSD binárisokat is
el tudnak indítani. Ha a uname(1) programot pedig
bemásoljuk a /compat/linux
könyvtáron belülre, akkor a Linux
binárisok képtelenek lesznek megmondani, hogy nem
Linux alatt futnak.
Így lényegében egy Linux magot találunk a FreeBSD rendszermagjában. A benne megtalálható különböző szolgáltatásokat megvalósító függvények: az állományműveletek, a virtuális memória kezelése, a jelzések küldése és System V típusú folyamatok közti kommunikáció stb. megegyeznek a FreeBSD és a Linux hívásai esetén egyaránt. Egyetlen eltérés, hogy a FreeBSD binárisok a FreeBSD segédfüggvényein (glue function), a Linux binárisok pedig a Linux segédfüggvényein keresztül férnek hozzájuk (a legelső operációs rendszerek tulajdonképpen csak a saját segédfüggvényeiket tartalmazták: a hívást kezdeményező program proc struktúrájában a függvények dinamikusan beállított címe helyett egy globális sysent[] struktúratömbben tárolták a meghívható függvényeket).
Melyik közülük a FreeBSD natív ABI-ja? Ez teljesen lényegtelen. Alapvetően az egyetlen különbség csupán annyi (pillanatnyilag, de ez a jövőben még változhat, valószínűleg hamarosan), hogy a FreeBSD segédfüggvényei statikusan megtalálhatóak a rendszermagban, míg a Linux segédfüggvényei egyaránt elérhetőek modulból vagy statikus linkeléssel.
Na igen, de akkor ez most emuláció? Nem. Ez egy ABI, nem emuláció. Itt szó sincs emulátorról (ahogy szimulátorról sincs).
De akkor mégis miért hívják ezt sokszor “Linux emulációnak”? Hát hogy nehezebb legyen eladni a FreeBSD-t! Komolyra fordítva a szót: ennek a kezdeti változata akkoriban született meg, amikor erre még nem volt rendes szó. Nem mondhattuk, hogy a FreeBSD befordítás vagy egy modul betöltése nélkül képes lett volna Linux binárisokat futtatni, ezért valamilyen módon meg kellett neveznünk az ilyenkor betöltött kódot — ebből lett “a Linux emulátor”.
A FreeBSD kézikönyv fennmaradó fejezeteiben a FreeBSD rendszerek adminisztrációjának különböző aspektusait mutatjuk be. Mindegyik fejezet elején megtudhatjuk mit is fogunk megismerni a fejezet elolvasása során, illetve arról is információkat kapunk, hogy mivel kell már tisztában lennünk a tárgyalt anyag feldolgozásához.
Ezeket a fejezeteket annak érdekében alakítottuk ki, hogy az adott témákban ismereteket adjunk. Nincs köztük semmilyen sorrendi kötöttség, sőt, ezeket egyáltalán nem is szükséges elolvasni a FreeBSD alapvető használatához.
A FreeBSD egyik fontos szempontja a rendszer megfelelő beállítása, aminek segítségével elkerülhetjük a későbbi frissítések során keletkező kellemetlenségeket. Ez a fejezet a FreeBSD beállítási folyamatából kíván minél többet bemutatni, köztük a FreeBSD rendszerek finomhangolására szánt paramétereket.
A fejezet elolvasása során megismerjük:
hogyan dolgozzunk hatékonyan az állományrendszerekkel és a lapozóállományokkal;
az rc.conf beállításának alapjait és a /usr/local/etc/rc.d könyvtárban található indítási rendszert;
hogyan állítsunk be és próbáljunk ki egy hálózati kártyát;
hogyan állítsunk be virtuális címeket a hálózati eszközeinken;
hogyan használjuk az /etc könyvtárban megtalálható különféle konfigurációs állományokat;
hogyan hangoljuk a FreeBSD működését a sysctl változóinak segítségével;
hogyan hangoljuk a lemezek teljesítményét és módosítsuk a rendszermag korlátozásait.
A fejezet elolvasásához ajánlott:
Amikor a bsdlabel(8) vagy a sysinstall(8) segítségével állományrendszereket telepítünk, nem szabad figyelmen kívül hagynunk a tényt, hogy a merevlemezes egységekben a külső sávokból gyorsabban lehet hozzáférni az adatokhoz, mint a belsőkből. Emiatt a kisebb és gyakrabban elérni kívánt állományrendszereket a meghajtó lemezének külsejéhez közel kell létrehozni, míg például a /usr partícióhoz hasonló nagyobb partíciókat annak belső része felé. A partíciókat a következő sorrendben érdemes kialakítani: gyökér (rendszerindító), lapozóállomány, /var és /usr.
A /var méretének tükröznie kell a számítógép szándékolt használatát. A /var partíción foglalnak helyet a felhasználók postaládái, a naplóállományok és a nyomtatási sorok. A postaládák és a naplóállományok egészen váratlan mértékben is képesek megnövekedni attól függően, hogy mennyi felhasználónk van a rendszerben és hogy mekkora naplókat tartunk meg. Itt a legtöbb felhasználónak soha nem lesz szüksége egy gigabyte-nál több helyre.
Megjegyzés: Bizonyos esetekben a /var/tmp könyvtárban azért ennél több tárterület szükségeltetik. Amikor a pkg_add(1) segítségével egy friss szoftvert telepítünk a rendszerünkre, akkor a program a /var/tmp könyvtárba tömöríti ki a hozzá tartozó csomag tartalmát. Ezért a nagyobb szoftvercsomagok, mint például a Firefox vagy az OpenOffice esetén gondok merülhetnek fel, ha nem rendelkezünk elegendő szabad területtel a /var/tmp könyvtárban.
A /usr partíció tartalmaz számos, a rendszer működéséhez elengedhetetlenül fontos állományt, többek közt a portok gyűjteményét (ajánlott, lásd ports(7)) és a forráskódot (választható). A portok és az alaprendszer forrásai telepítés során választhatóak, de telepítésük esetén akkor ezen a partíción legalább két gigabyte-nyi hely ajánlott.
Vegyük figyelembe a tárbeli igényeket, amikor megválasztjuk a partíciók méretét. Igen kellemetlen lehet, amikor úgy futunk ki az egyik partíción a szabad helyből, hogy a másikat alig használjuk.
Megjegyzés: Egyes felhasználók szerint előfordulhat, hogy a sysinstall(8) Auto-defaults opciója a /var és / partíciók méretét túl kicsire választja. Particionáljunk okosan és nagylelkűen!
Általános szabály, hogy a lapozóállományt tároló partíció mérete legyen a rendszer fizikai memóriájának (RAM) kétszerese. Például, ha a számítógépünk 128 megabyte memóriával rendelkezik, akkor a lapozóállomány méretének 256 megabyte-nak kell lennie. Az ennél kevesebb memóriát maguknak tudó rendszerek több lapozóállománnyal jobban teljesítenek. 256 megabyte-nál kevesebb lapozóállományt semmiképpen sem ajánlunk, és inkább a fizikai memóriát érdemes bővítenünk. A rendszermag virtuális memóriát kezelő lapozási algoritmusait úgy állították be, hogy abban az esetben teljesítsenek a legjobban, ha a lapozóállomány mérete legalább kétszerese a központi memória mennyiségének. A túl kicsi lapozóállomány beállítása rontja a virtuális memória lapkeresésési rutinjának hatékonyságát és a memória bővítése esetén még további gondokat is okozhat.
A több SCSI-lemezzel (vagy a különböző vezérlőkre csatlakoztatott több IDE-lemezzel) bíró nagyobb rendszerek esetében érdemes minden egyes (de legfeljebb négy) meghajtóra beállítani lapozóállományt. A lapozóállományoknak közel azonos méretűnek kell lenniük. A rendszermag tetszőleges méretűeket képes kezelni, azonban a belsejében alkalmazott adatszerkezetek a legnagyobb lapozóállomány méretének négyszereséig képesek növekedni. Ha a lapozóállományokat nagyjából ugyanazon a méreten tartjuk, akkor a rendszermag képes lesz a lapozáshoz felhasznált területet optimálisan elosztani a lemezek között. A nagyobb lapozóállományok használata még akkor is jól jön, ha nem is használjuk annyira. Segítségével sokkal könnyebben talpra tudunk állni egy elszabadult program tombolásából, és nem kell rögtön újraindítanunk a rendszert.
Egyes felhasználók úgy gondolják, hogy egyetlen nagyobb méretű partíció mindenre megfelel, ám ez a gondolat több okból is helytelennek tekinthető. Először is, minden egyes partíciónak eltér a működési jellemzője, és különválasztásukkal lehetővé válik az állományrendszerek megfelelő behangolása. Például a rendszerindításhoz használt és a /usr partíciókat többségében csak olvasásra használják, és nem sokat írnak rájuk. Eközben a /var és /var/tmp könyvtárakban zajlik az írások és olvasások túlnyomó része.
A rendszer megfelelő felosztásával a kisebb, intenzívebben írt partíciókon megjelenő töredezettség nem szivárog át a többségében csak olvasásra használt partíciókra. Ha a sokat írt partíciókat közel tartjuk a lemez széléhez, akkor azokon a partíciókon növekszik az I/O teljesítménye, ahol az a leggyakrabban megjelenik. Mivel mostanság az I/O teljesítményére inkább a nagyobb partíciók esetén van szükség, azzal nem érünk el ebben különösebb mértékű növekedést, ha a /var partíciót a lemez szélére toljuk. Befejezésképpen hozzátesszük, hogy ennek vannak biztonsági megfontolásai is. Egy kisebb és takarosabb rendszerindító partíció, ami többnyire írásvédett, nagyobb eséllyel él túl egy csúfos rendszerösszeomlást.
A rendszer beállításaira vonatkozó információk központi lelőhelye az /etc/rc.conf állomány. Ez az állomány tartalmazza a beállításokra vonatkozó adatok széles körét, amelyet elsősorban a rendszer indulása során a rendszer beállítására használnak. Erre a neve is utal: ez az rc* állományok konfigurációs állománya.
A rendszergazda az rc.conf állományban tudja felülbírálni az /etc/defaults/rc.conf állományban szereplő alapértelmezett beállításokat. Az alapértelmezéseket tartalmazó állományt nem szabad közvetlenül átmásolni az /etc könyvtárba, hiszen alapértelmezett értékeket tartalmaz, nem pedig mintákat. Minden rendszerfüggő beállítást magában az rc.conf állományban kell elvégezni.
Számos stratégia létezik a tömegesen adminisztrált számítógépeknél a közös és rendszerfüggő beállítások különválasztására, ezáltal a karbantartási költségek csökkentésére. A közös beállításokat ajánlott egy másik helyre, például az /etc/rc.conf.site állományba rakni, majd hivatkozni erre a kizárólag csak rendszerfüggő információkat tartalmazó /etc/rc.conf állományból.
Mivel az rc.conf állományt az sh(1) dolgozza fel, ezt elég könnyen el tudjuk érni. Például:
rc.conf:
. /etc/rc.conf.site hostname="node15.example.com" network_interfaces="fxp0 lo0" ifconfig_fxp0="inet 10.1.1.1"
rc.conf.site:
defaultrouter="10.1.1.254" saver="daemon" blanktime="100"
Az rc.conf.site állomány ezt követően az rsync parancs használatával már szétszórható a rendszerben, miközben az rc.conf állomány mindenkinél egyedi marad.
Ha a rendszert a sysinstall(8) vagy a make world használatával frissítjük, akkor az rc.conf tartalma nem íródik felül, így a rendszer beállításairól szóló adatok nem vesznek el.
A telepített alkalmazások általában saját konfigurációs állományokkal, azok pedig saját formátummal stb. rendelkeznek. Fontos, hogy ezeket az állományokat az alaprendszertől elkülönítve tároljuk, ezáltal a csomagkezelő eszközök könnyen rájuk tudjanak találni és dolgozni velük.
Ezeket az állományokat általában a /usr/local/etc könyvtárban találjuk meg. Amennyiben egy alkalmazáshoz több konfigurációs állomány is tartozik, akkor ahhoz ezen belül egy külön alkönyvtár jön létre.
Normális esetben, amikor egy portot vagy csomagot telepítünk, minta konfigurációs állományokat is kapunk. Ezek nevében többnyire a .default utótag szerepel. Ha még nincs konfigurációs állomány az adott alkalmazáshoz, akkor a .default jelzésű állományokból ez létrehozható.
Példaképpen most tekintsük a /usr/local/etc/apache könyvtár tartalmát:
-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf -rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf.default -rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf -rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf.default -rw-r--r-- 1 root wheel 12205 May 20 1998 magic -rw-r--r-- 1 root wheel 12205 May 20 1998 magic.default -rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types -rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types.default -rw-r--r-- 1 root wheel 7980 May 20 1998 srm.conf -rw-r--r-- 1 root wheel 7933 May 20 1998 srm.conf.default
Az állományok mérete jól mutatja, hogy csak az srm.conf változott meg. Az Apache későbbi frissítései ezt az állományt nem fogják felülírni.
A felhasználók közül sokan választják a FreeBSD Portgyűjteményében található külső szoftverek telepítését. A telepített szoftvert ilyenkor gyakran úgy kell beállítani, hogy a rendszer indulásával együtt induljon. Az olyan szolgáltatások, mint például a mail/postfix vagy a www/apache13 csupán két olyan szoftvercsomag, amelyet a rendszerrel együtt kell elindítani. Ebben a szakaszban a külső szoftverek indítására használatos eljárásokkal foglalkozunk.
A FreeBSD-ben megjelenő legtöbb szolgáltatás, mint például a cron(8), a rendszerindító szkripteken keresztül kel életre. Habár ezek a szkriptek a FreeBSD egyes verziói vagy az egyes gyártók esetén különbözhetnek, azonban az mindegyikükben közös, hogy az elindításukra vonatkozó beállítások egyszerű indítószkriptekkel adhatóak meg.
Most miután a FreeBSD rendelkezik egy rc.d könyvtárral, az alkalmazások indításának beállítása is könnyebbé és ügyesebbé vált. Az rc.d működéséről szóló szakaszban megismert kulcsszavak segítségével az alkalmazások mostantól kezdve a többi szolgáltatás, például a DNS után indulnak el, és az rc.conf állományon keresztül a szkriptekbe huzalozottak helyett most már tetszőleges paramétereket is átadhatunk stb. Egy egyszerű szkript ehhez hasonlóan néz ki:
#!/bin/sh # # PROVIDE: utility # REQUIRE: DAEMON # KEYWORD: shutdown . /etc/rc.subr name=utility rcvar=utility_enable command="/usr/local/sbin/utility" load_rc_config $name # # NE VÁLTOZTASSUK MEG AZ ITT LÉVő ALAPÉRTELMEZÉSEKET, # INKÁBB AZ /etc/rc.conf ÁLLOMÁNYBAN ÁLLÍTSUK BE EZEKET # utility_enable=${utility_enable-"NO"} pidfile=${utility_pidfile-"/var/run/utility.pid"} run_rc_command "$1"
Ez a szkript gondoskodik arról, hogy a utility nevű alkalmazás a DAEMON szolgáltatás után induljon el. Emellett még felkínál egy módszert a PID avagy futó programok azonosítójának beállítására és nyomonkövetésére is.
Ezt követően az /etc/rc.conf állományból az alkalmazás elindítható az alábbi sor hozzáadásával:
utility_enable="YES"
Ez a módszer megkönnyíti a parancssorban átadott paraméterek módosítását, az /etc/rc.subr állományban szereplő alapértelmezett függvények használatát, az rcorder(8) segédprogrammal szembeni kompatibilitást és az rc.conf állomány könnyebb beállítását.
Más szolgáltatások, mint például a POP3 vagy IMAP szerverek démonai stb. az inetd(8) segítségével indíthatóak el. Ez a Portgyűjteményből telepített szolgáltatások esetén magával vonja az adott segédprogram felvételét vagy a hozzá tartozó sor engedélyezését az /etc/inetd.conf állományban. Az inetd működésével és annak beállításával mélyrehatóbban az inetd szakasza foglalkozik.
A legtöbb esetben a cron(8) démon használata kézenfekvő a rendszerszintű szolgáltatások elindításában. Ez a megközelítés számos előnyt tartogat, mivel a cron ezeket a programokat a felhasználó crontab állománya alapján futtatja. Ezzel a mezei felhasználók számára is lehetővé válik, hogy elindítsanak és karbantartsanak alkalmazásokat.
A cron segédprogramnak van egy olyan speciális lehetősége, hogy az idő helyett a @reboot értéket adhatjuk meg. Ennek hatására a feladat a cron(8) indításával együtt fut le, tehát megszokott esetben a rendszer indítása során.
A cron(8) a FreeBSD egyik leghasznosabb segédprogramja. A cron segédprogram a háttérben fut és folyamatosan figyeli az /etc/crontab állományt. Emellett a cron új crontab állományok után kutatva folyamatosan ellenőrzi a /var/cron/tabs könyvtárat. Ezek a crontab állományok olyan feladatokról tárolnak adatokat, amelyeket a cron programnak egy adott pillanatban el kell végeznie.
A cron a konfigurációs állományok két külön fajtáját, a rendszer- és felhasználói crontabokat használja. A két típus között levő egyetlen különbség a hatodik mezőben található. A rendszerszintű crontabok esetében a hatodik mező annak a felhasználónak a nevét tartalmazza, amivel a program fut. Ezzel a rendszer szintjén működő crontaboknak megadatott az a képesség, hogy tetszőleges felhasználó nevében futtassanak programokat. A felhasználók crontabjaiban a hatodik mező a futtatandó parancsot tartalmazza, és ilyenkor az összes parancs a crontabot létrehozó felhasználó nevében hajtódik végre. Ez utóbbi egy fontos biztonsági jellemző.
Megjegyzés: A felhasználói crontabok lehetővé teszik az egyes felhasználók számára, hogy a root felhasználó jogosultságai nélkül képesek legyenek feladatokat ütemezni, ugyanis a felhasználóhoz tartozó crontabban szereplő parancsok mindegyike a tulajdonosának engedélyeivel fut.
Az átlagos felhasználókhoz hasonlóan a root felhasználónak is lehet crontabja, ami nem ugyanaz, mint az /etc/crontab (a rendszer saját crontab állománya). De mivel a rendszernek külön crontabja van, ezért a root felhasználónak nem kell külön crontabot létrehozni.
Vessünk egy pillanatást az /etc/crontab (a rendszer crontabjának) tartalmára:
# /etc/crontab - a root crontabja FreeBSD alatt # # $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $ # # SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/var/log # # #minute hour day month wday who command # # */5 * * * * root /usr/libexec/atrun
Az itt szereplő parancsoknak tetszőleges mennyiségű paraméter adható át, azonban a több soron keresztül átívelő parancsok tördelését a sor végén a “\” karakterrel kell jelezni.
Ez mindegyik crontab állomány alapbeállítása, habár ettől általában egy dologban eltérnek. A hatodik mező, ahol a felhasználót adtuk meg, csak a rendszer /etc/crontab állományában jelenik meg. Ez a mező a felhasználók crontab állományaiból kimarad.
Fontos: Nem kötelező az itt ismertetésre kerülő módon szerkeszteni vagy telepíteni a rendszer crontabját. Egyszerűen nyissuk meg a kedvenc szövegszerkesztőnkkel, és a cron segédprogram majd észreveszi, hogy az állomány megváltozott, majd ennek megfelelően neki is lát a módosított változat használatának. Erről a GYIK-ban (angolul) többet is megtudhatunk.
Egy frissen készített felhasználói crontab telepítéséhez először a kedvenc szövegszerkesztőnk segítségével létre kell hoznunk a megfelelő formátumú állományt, majd használnunk a crontab segédprogramot. Ennek általános alakja:
% crontab crontab_állomány
Ebben a példában a crontab_állomány a korábban létrehozott crontab neve lesz.
Lehetőségünk van lekérdezni a
telepített crontab
állományokat: egyszerűen adjuk át a
-l
kapcsolót a
crontab parancsnak, és
nézzük meg, mit ad vissza.
A crontab -e használata olyan felhasználók számára ajánlott, akik sablon alkalmazása nélkül szeretnének teljesen maguktól megírni egy crontab állományt. Ennek hatására a kiválasztott szövegszerkesztő egy üres állományt kap. Miután ezt az állományt elmentettük, a crontab programmal magától telepítésre kerül.
Ha a későbbiekben törölni akarjuk a
felhasználónkhoz tartozó
crontab állományt, akkor erre
a célra használjuk a crontab
-r
kapcsolóját.
A rendszer indítására a FreeBSD 2002-ben
átvette a NetBSD rc.d
rendszerét. Ezt a felhasználók könnyen
felismerhetik az /etc/rc.d
könyvtárban található
állományokról. A legtöbbjük olyan
alapvető szolgáltatás, amelyet a
start
, stop
és
restart
paraméterekkel lehet
vezérelni. Például az sshd(8) az
alábbi paranccsal indítható
újra:
# /etc/rc.d/sshd restart
Ez az eljárás hasonló a többi szolgáltatás esetén is. Természetesen ezek a szolgáltatások általában maguktól indulnak el a rendszer indítása során az rc.conf(5) állományban megadottak szerint. Például ha a rendszerünk indulásakor szeretnénk aktiválni a hálózati címfordítással foglalatoskodó démont, akkor csak adjuk hozzá az /etc/rc.conf állományhoz a következő sort:
natd_enable="YES"
Amennyiben a natd_enable="NO"
sor már
szerepel benne, akkor egyszerűen írjuk át a
NO
értéket YES
-re.
Ezután az rc szkriptek a rendszer következő
indításakor a lentieknek megfelelően
automatikusan elindítják a hozzá
tartozó szolgáltatásokat is.
Mivel az rc.d rendszert elsősorban
arra használják, hogy szolgáltatásokat
indítsanak el vagy állítsanak le az
operációs rendszerrel együtt, a
szabványos start
, stop
és restart
paraméterek csak abban
az esetben látják el a feladatukat, ha a nekik
megfelelő változókat beállítottuk
az /etc/rc.conf állományban.
Tehát például az sshd
restart csak abban az esetben fog bármit is
csinálni, ha az /etc/rc.conf
állományban az sshd_enable
változót a YES
értékre állítottuk. Ha az
/etc/rc.conf
beállításaitól függetlenül
kívánunk egy szolgáltatásnak
start
, stop
vagy
restart
parancsot adni, akkor elé kell
tennünk egy “one” szót.
Például ha az sshd
szolgáltatás
újraindításához az
/etc/rc.conf tartalmát figyelmen
kívül akarjuk hagyni, akkor ezt a parancsot kell
kiadnunk:
# /etc/rc.d/sshd onerestart
Könnyen ellenőrizni tudjuk, hogy az adott
szolgáltatás az /etc/rc.conf
részéről engedélyezett-e, ha a neki
megfelelő rc.d szkriptnek megadjuk az
rcvar
paramétert. Ennek
segítségével például a
rendszergazda így képes ellenőrizni, hogy az
sshd szolgáltatást
engedélyezi-e az /etc/rc.conf:
# /etc/rc.d/sshd rcvar # sshd $sshd_enable=YES
Megjegyzés: A második sor (# sshd) az sshd parancs kimenete, nem pedig a root parancssora.
A status
paraméterrel
kideríthetjük, hogy egy szolgáltatás
aktív-e. Ezzel például így tudjuk
ellenőrizni az sshd
szolgáltatás
működését:
# /etc/rc.d/sshd status sshd is running as pid 433.
Az üzenet:
Az sshd a 433-as azonosítóval fut.
Bizonyos esetekben a reload
paraméter
használatával lehetőségünk van a
szolgáltatások
újraindítására is. Ilyenkor a
rendszer megpróbál egy olyan jelzést
küldeni a szolgáltatásnak, amivel a
konfigurációs állományainak
újraolvasását kéri. A
legtöbbször lényegében ez a
SIGHUP jelzés
kiküldését rejti magában. Ez a
lehetőség azonban nem mindegyik
szolgáltatás esetén érhető
el.
Az rc.d rendszer nem csupán hálózati szolgáltatások esetén használatos, hanem nagyrészben hozzájárul a rendszer indításához is. Erre vegyük példának a bgfsck állományt. Amikor ez a szkript lefut, a következő üzenetet jeleníti meg:
Starting background file system checks in 60 seconds.
Az üzenet fordítása:
A háttérben 60 másodperc múlva megkezdődik az állományrendszerek ellenőrzése.
Ennek megfelelően tehát ezt az állományt az állományrendszerek háttérben folyó ellenőrzésére használják, ami pedig a rendszer indítása során fut le.
Számos rendszerszolgáltatás igényel a működéséhez további szolgáltatásokat. Például a NIS és más egyéb távoli eljáráshíváson alapú szolgáltatások egészen addig nem képesek elindulni, amíg az rpcbind (portmapper) szolgáltatást el nem indítjuk. Az ilyen jellegű gondok feloldására az indítószkriptek elején levő megjegyzésekben található egy kevés metainformáció a szkript működéséhez szükséges elemekre (függőségeire) vonatkozóan. A rendszer indítása közben az rcorder(8) nevű program képes a megjegyzések közt ezeket az információkat feldolgozni és ebből megállapítani, hogy a függőségi viszonyok betartásával milyen sorrendben kell elindítani a rendszer által felkínált szolgáltatásokat.
Ehhez a következő kulcsszavakat kell megadni az egyes indító szkriptek elején (az rc.subr(8) így tudja “engedélyezni” az indító szkriptet):
PROVIDE: segítségével megmondjuk, hogy ez az állomány milyen szolgáltatásokat nyújt.
A következő kulcsszavak az egyes indítóállományok elején szerepelhetnek. Nem kell feltétlenül használnunk ezeket, de velük az rcorder(8) munkáját segíthetjük:
REQUIRE: felsoroljuk azokat a szolgáltatásokat, amelyek a futásához kellenek. Az állomány tehát az itt megadott szolgáltatások után fog lefutni.
BEFORE: felsoroljuk azokat a szolgáltatásokat, amelyek előtt futtatni kell ezt az állományt.
Az indító szkriptekben a kulcsszavak ügyes megválasztásával a rendszergazda nagyon finoman képes az indításkor végrehajtódó szkriptek sorrendjét szabályozni és a többi UNIX alapú operációs rendszerből ismert “futtatási szintek” használata nélkül vezérelni a rendszerben megjelenő szolgáltatásokat.
Az rc.d rendszerről bővebben az rc(8) és rc.subr(8) man oldalakon olvashatunk. Ha szeretnénk saját rc.d szkripteket írni vagy javítani a már meglévőkön, akkor ez a cikk (angolul) segítségünkre lehet.
Manapság már el sem tudunk képzelni számítógépet hálózati csatlakozás nélkül. A hálózati csatolókártyák hozzáadása és beállítása egy FreeBSD rendszergazda mindennapos feladata.
Mielőtt bárminek is nekikezdenénk, érdemes tisztában lennünk azzal, hogy a rendelkezésünkre álló kártya milyen típusú, milyen chipet használ és hogy PCI vagy ISA buszon csatlakozik-e. A FreeBSD a PCI és ISA csatolós kártyák széles spektrumát ismeri. Az egyes kiadásokhoz mellékelt “Hardware Compatibility List” (Hardverkompatibilitási lista) dokumentumokban tudjuk ellenőrizni, hogy a kártyákat ismeri a rendszer.
Miután meggyőződtünk róla, hogy a kártyánkat ismeri a rendszer, meg kell keresnünk a hozzá tartozó meghajtót. A /usr/src/sys/conf/NOTES és a /usr/src/sys/arch/conf/NOTES állományok tartalmazzák a hálózati kártyák meghajtóinak rövid leírását, benne a támogatott chipsetek és kártyák típusaival. Ha ez alapján nem tudjuk teljes biztosággal eldönteni, hogy melyik a számunkra megfelelő meghajtó, nézzük meg a saját man oldalát. Ezen a man oldalon megtaláljuk az általa ismert összes eszközt és a velük kapcsolatban előforduló jellemző problémákat.
Ha egy elterjedt típust sikerült beszereznünk, akkor nem kell különösebben sokáig keresnünk a neki megfelelő meghajtót. Az ismertebb hálózati kártyák meghajtói ugyanis alapból benne vannak a GENERIC rendszermagban, ezért a rendszer indítása során ehhez hasonlóan meg is jelennek a kártyák:
dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38 000ff irq 15 at device 11.0 on pci0 miibus0: <MII bus> on dc0 bmtphy0: <BCM5201 10/100baseTX PHY> PHY 1 on miibus0 bmtphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto dc0: Ethernet address: 00:a0:cc:da:da:da dc0: [ITHREAD] dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30 000ff irq 11 at device 12.0 on pci0 miibus1: <MII bus> on dc1 bmtphy1: <BCM5201 10/100baseTX PHY> PHY 1 on miibus1 bmtphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto dc1: Ethernet address: 00:a0:cc:da:da:db dc1: [ITHREAD]
Ebben a példában láthatunk is két olyan kártyát, amelyek a dc(4) meghajtót használják.
Ha a hálózati kártyánk meghajtója nem szerepel a GENERIC konfigurációban, akkor a működéséhez be kell tölteni a megfelelő meghajtót. Ezt alapvetően kétféleképpen érhetjük el:
Ennek legegyszerűbb módja, ha a kldload(8) használatával alkalmanként vagy a /boot/loader.conf állományban a megfelelő sor hozzáadásával a rendszer indításával együtt betöltjük a hálózati kártya meghajtójához tartozó modult. Nem mindegyik hálózati kártya meghajtója érhető el modul formájában. Erre konkrét például szolgálnak az ISA kártyákhoz tartozó modulok.
Másik lehetőségünk, ha statikusan beépítjük a kártyánk támogatását a rendszermagba. A /usr/src/sys/conf/NOTES és az /usr/src/sys/arch/conf/NOTES állományok, valamint a meghajtóhoz tartozó man oldal elolvasásából megtudhatjuk a rendszermag beállításait tartalmazó állományban megadandó paramétereket. A rendszermag újrafordítását lásd 8 fejezet. Ha a rendszermag (GENERIC) az indulás során észlelte a kártyánkat, nem kell újat készítenünk.
Sajnos még mindig sok olyan gyártó akad, akik a nyílt forrású közösség számára nem adják ki a meghajtóik működésének alapjait, mivel az ilyen adatokat szakmai titoknak tekintik. Ebből következik, hogy a FreeBSD és más operációs rendszerek fejlesztői számára két választás marad: vagy a gyári meghajtók visszafejtésének hosszú és fájdalmas útján haladva fejlesztik ki a saját meghajtójukat, vagy pedig a Microsoft Windows platformra kiadott meghajtók binárisait hasznosítják. A legtöbb fejlesztő, köztük a FreeBSD fejlesztői is, ez utóbbi megközelítést választották.
Bill Paul (wpaul) jóvoltából a FreeBSD 5.3-RELEASE változatában megjelent a “Network Driver Interface Specification” (NDIS, avagy hálózati meghajtók szabványos felülete) “natív” támogatása. A FreeBSD NDISulator (másnéven Project Evil, a Gonosz terve) nevű komponense fog egy Windows-os meghajtót és elhiteti vele, hogy a Windows operációs rendszerrel kommunikál. Mivel az ndis(4) meghajtó Windows binárisokat használ fel, ezért csak i386 és amd64 rendszerek esetén érhető el.
Megjegyzés: Az ndis(4) meghajtó leginkább a PCI, CardBus és PCMCIA csatolójú eszközök támogatására lett kitalálva, az USB eszközöket még nem ismeri.
Az NDISulator használatához három tényezőre van szükségünk:
A rendszermag forrása
a Windows XP meghajtó binárisa (.SYS a kiterjesztése)
a Windows XP meghajtó konfigurációs állománya (.INF a kiterjesztése)
Keressük meg az említett állományokat az adott kártyához. Ezeket általában a mellékelt CD-n vagy a gyártó honlapján találjuk meg. A most következő példákban a W32DRIVER.SYS és a W32DRIVER.INF neveket fogjuk használni.
Megjegyzés: A Windows i386 architektúrájú verziójához készült meghajtóprogramokat nem tudjuk a FreeBSD/amd64 verziójával használni. A működéshez amd64-re készült Windows-os meghajtókra van szükség.
A következő lépés a meghajtó binárisainak betölthető modulba fordítása. Ennek eléréséhez használjuk az ndisgen(8) parancsot a root felhasználóval:
# ndisgen /windowsos/meghajtó/W32DRIVER.INF /windowsos/meghajtó/W32DRIVER.SYS
Az ndisgen(8) egy interaktív segédprogram, amely működése közben még rákérdez néhány szükséges információra. Az aktuális könyvtárban létrehoz egy rendszermagmodult, amelyet az alábbi módon tudunk betölteni:
# kldload ./W32DRIVER_SYS.ko
Az előállított modul mellé be kell töltenünk még az ndis.ko és az if_ndis.ko modulokat is. Ez általában minden olyan modul esetén megtörténik magától, amely függ az ndis(4) használatától. Kézileg a következő parancsokkal tudjuk ezeket betölteni:
# kldload ndis # kldload if_ndis
Itt az első parancs betölti az NDIS miniport meghajtó burkolására szánt kódot, valamint a második a tényleges hálózati csatolófelületet.
Most pedig a dmesg(8) kimenetében ellenőrizzük, hogy történt-e valamilyen hiba a betöltés során. Ha minden jól ment, akkor az alábbiakhoz hasonló kimenetet produkált:
ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1 ndis0: NDIS API version: 5.0 ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5 ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps
Innentől kezdve az ndis0 nevű eszközt úgy tudjuk használni, mint bármelyik más hálózati felületet (például dc0).
A többi modulhoz hasonló módon be tudjuk állítani, hogy a rendszer indulásával együtt betöltődjenek az NDIS modulok. Ehhez először másoljuk az imént létrehozott modult, az W32DRIVER_SYS.ko állományt a /boot/modules könyvtárba. Ezután adjuk hozzá a következő sort a /boot/loader.conf állomány tartalmához:
W32DRIVER_SYS_load="YES"
Ahogy betöltődött a megfelelő meghajtó a hálózati kártyánkhoz, be is kell állítanunk a kártyát. A hálózati kártyák sok más dologgal együtt beállíthatóak a telepítés során a sysinstall segítségével.
A rendszerünkben beállított hálózati csatolófelületek megjelenítéséhez gépeljük be a következő parancsot:
% ifconfig dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> ether 00:a0:cc:da:da:da inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255 media: Ethernet autoselect (100baseTX <full-duplex>) status: active dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> ether 00:a0:cc:da:da:db inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255 media: Ethernet 10baseT/UTP status: no carrier plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=3<RXCSUM,TXCSUM> inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 nd6 options=8010<POINTOPOINT,MULTICAST> mtu 1500
Az előbbi parancs kimenetében a következő eszközök jelentek meg:
dc0: az első Ethernet felület
dc1: a második Ethernet felület
plilp0: a párhuzamos port felülete (amennyiben található párhuzamos port a számítógépben)
lo0: a loopback eszköz
A FreeBSD a kártyához tartozó meghajtó nevével és egy sorszámmal azonosítja a rendszermag indulása során talált eszközöket. Például az sis2 a rendszerben található harmadik olyan eszköz, amely a sis(4) meghajtót használja.
A példában a dc0 eszköz aktív és működőképes. Ennek legfontosabb jelei:
Az UP szó mutatja, hogy a kártyát sikerült beállítani és készen áll a használatra.
A kártya internet (inet) címe (jelen esetünkben ez 192.168.1.3).
Érvényes hálózati maszkkal rendelkezik (netmask, ahol a 0xffffff00 a 255.255.255.0 címnek felel meg).
Érvényes broadcast (üzenetszóró) címmel rendelkezik (ami itt most 192.168.1.255).
A kártya MAC-címe (ether) 00:a0:cc:da:da:da.
A hozzá tartozó fizikai eszköz kiválasztása automatikus (media: Ethernet autoselect (100baseTX <full-duplex>)). Láthatjuk, hogy a dc1 eszközt egy 10baseT/UTP típusú fizikai eszközhöz állítottuk be. Az egyes meghajtókhoz tartozó fizikai módokról a nekik megfelelő man oldalakon olvashatunk.
A kapcsolat állapota (status) active értékű, tehát van vonal. A dc1 esetén láthatjuk, hogy a status: no carrier (nincs vonal). Ez teljesen normálisnak tekinthető minden olyan esetben, amikor a kártyába még nem dugtunk Ethernet-kábelt.
Amennyiben az ifconfig(8) kimenete valami ilyesmi:
dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=80008<VLAN_MTU,LINKSTATE> ether 00:a0:cc:da:da:da media: Ethernet autoselect (100baseTX <full-duplex>) status: active
akkor az arra utal, hogy a kártyát nem állítottuk be.
A kártya beállításához a root felhasználó jogosultságaira van szükségünk. A hálózati kártyák beállítása az ifconfig(8) segítségével elvégezhető parancssorból is, de a gép újraindításakor az így megadott értékek elvesznek. Ezért az /etc/rc.conf állományba kell felvennünk a hálózati kártyák érvényes beállításait.
A kedvenc szövegszerkesztőnkben nyissuk meg az /etc/rc.conf állományt. Minden egyes hálózati csatolóhoz fel kell vennünk benne egy sort, ennek megfelelően most a példához tartozó módon az alábbiakat:
ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0" ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"
A dc0 és dc1 neveket kell a rendszerünkben ténylegesen megtalálható eszközök neveire kicserélni, valamint megadni a nekik megfelelő címeket. A kártya meghajtójának és az ifconfig(8) man oldalának elolvasásával kideríthetjük az itt megadható további beállításokat, valamint az rc.conf(5) man oldalán részletesebben megismerhetjük az /etc/rc.conf formai követelményeit.
Ha a telepítés során beállítottuk volna a hálózati kapcsolatokat, akkor tapasztalhatjuk, hogy egyes hálózati kártyák sorai itt már szerepelnek. Ellenőrizzük az /etc/rc.conf tartalmát, mielőtt bővítenénk!
Mindezek mellett az /etc/hosts állományba is be kell írnunk a helyi hálózatunkon található különféle gépek neveit és IP-címeit, ha még nem szerepelnének ott. Erről további részleteket a hosts(5) man oldalról és az /usr/share/examples/etc/hosts állományból tudhatunk meg.
Megjegyzés: Ha a géppel szeretnénk majd csatlakozni az internetre, akkor ne felejtsük el manuálisan beállítani az alapértelmezett átjárót és a névfeloldáshoz szükséges kiszolgálót:
# echo 'defaultrouter="alapertelmezett_atjaro"' >> /etc/rc.conf # echo 'nameserver DNS_kiszolgalo' >> /etc/resolv.conf
Miután az /etc/rc.conf állományban elvégeztük a szükséges változtatásokat, érdemes újraindítanunk a rendszerünket. Ennek révén érvényesítjük a csatolófelületekkel kapcsolatos változtatásainkat és ellenőrizzük, hogy így a rendszer mindenféle hibaüzenet nélkül képes elindulni. A másik lehetőség, ha csak magát a hálózati alrendszer konfigurációját indítjuk el újra:
# /etc/rc.d/netif restart
Megjegyzés: Ha az /etc/rc.conf állományban már beállítottuk az alapértelmezett átjárót, akkor elegendő csupán ez a parancs:
# /etc/rc.d/routing restart
Ahogy újrakonfiguráltuk a hálózati alrendszert, ki is tudjuk próbálni a hálózati felületeket.
Az Ethernet kártyák helyes beállításának vizsgálatához két dolgot kell kipróbálnunk. Először is pingeljük magát a felületet, majd ezután pingeljünk meg a helyi hálózaton egy másik számítógépet.
Elsőként tehát próbáljuk meg a helyi felületet:
% ping -c5 192.168.1.3 PING 192.168.1.3 (192.168.1.3): 56 data bytes 64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms 64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms 64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms 64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms 64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms --- 192.168.1.3 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms
Most pedig pingeljünk meg egy másik számítógépet a helyi hálózaton:
% ping -c5 192.168.1.2 PING 192.168.1.2 (192.168.1.2): 56 data bytes 64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms 64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms --- 192.168.1.2 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms
Ha beállítottuk az /etc/hosts állományt, akkor a 192.168.1.2 helyett a gép nevét is megadhatjuk.
A hardverek és szoftverek beállításaiban mindig is valódi kín megtalálni a hibákat, és ezeket a kínokat többnyire úgy tudjuk enyhíteni, ha először az egyszerű hibaforrásokat szűrjük ki. Csatlakoztattuk a hálózati kábelt? Tisztességesen beállítottuk a hálózati szolgáltatásokat? Jól állítottuk be a tűzfalat? A FreeBSD képes kezelni a kártyát? A hibajelentések elküldése előtt mindig bújjuk át a támogatott hardvereszközök listáját. A FreeBSD verziókat frissítsük a legújabb STABLE változatra. Olvassuk át a levelezési listák archívumait vagy legalább keressünk rá a témára az interneten.
Ha a kártya működik, de a teljesítménye nem kielégítő, érdemes ennek utánanézni a tuning(7) man oldalon. Ilyenkor érdemes ellenőrizni a hálózati beállításainkat is, mivel a helytelen beállítások gyakran okoznak teljesítményvesztést.
Bizonyos esetekben láthatunk egy vagy két “device timeout” típusú hibát is, ami a kártyák egyes fajtáinál elfogadható. Ha azonban folyamatosan megjelennek vagy zavaróvá válnak, érdemes utánanéznünk, hogy az eszköz nem ütközik-e valamelyik másikkal. Mindenképpen győződjünk meg a kábelek épségéről és csatlakoztatásáról. Még az is elképzelhető, hogy egyszerűen csak egy másik hálózati kártyára van szükségünk.
Néha felbukkanak “watchdog timeout” jellegű hibák is. Ilyenkor elsőként mindig a hálózati kábelt ellenőrizzük. Egyes kártyáknak olyan PCI foglalatra van szükségük, ami támogatja a Bus Mastering opciót. Néhány régebbi alaplapon csak ilyen PCI bővítőhely található (ami általában a 0. foglalat). Olvassunk utána a hálózati kártya és az alaplap dokumentációjában, hátha ezek okozzák a problémát.
A “No route to host” üzenet akkor jelenik meg, ha a rendszer képtelen megállapítani, milyen úton juttassa el a csomagokat a megadott célhoz. Ez többnyire olyankor történik meg, amikor nem adtunk meg alapértelmezett kézbesítési irányt (default route) vagy nem dugtuk be a hálózati kábelt. A netstat -rn kimenetéből meg tudjuk állapítani, hogy létezik-e érvényes út az elérni kívánt cél felé. Ha nincs, akkor haladjunk tovább a 31 fejezetre.
A “ping: sendto: Permission denied” jellegű üzeneteket többségében egy helytelenül beállított tűzfal okozza. Ha az ipfw működését engedélyeztük a rendszermagban, de nem adtunk meg hozzá szabályokat, akkor az alapértelmezett házirend szerint minden forgalmat blokkolni fog, tehát még a pingeket is! Ezzel kapcsolatban a 30 fejezet elolvasását ajánljuk.
Előfordulhat, hogy a kártya teljesítménye igen gyenge vagy az átlagos alatt van. Ilyenkor a fizikai eszköz autoselect (automatikus) típusú kiválasztása helyett érdemes megadnunk a konkrét eszköznek megfelelő típust. Habár ez a legtöbb hardver esetén beválik, nem mindenki számára jelent megoldást. Ismételten csak annyit tudunk ehhez hozzátenni, hogy ellenőrizzük a hálózati beállításainkat és olvassuk el a tuning(7) man oldalt.
A FreeBSD alkalmazása során igen gyakori a virtuális címek használata, aminek segítségével egyetlen szerver több szerverként képes látszódni a hálózaton. Ezt úgy érik el, hogy egyetlen felülethez több hálózati címet rendelnek hozzá.
Az adott hálózati csatolófelületnek van egy “valódi címe” és tetszőleges számú “álcíme”. Ezeket az álcímeket általában az /etc/rc.conf állományban kell feltüntetni.
Az fxp0 felület esetén az álcímek megadása valahogy így néz ki:
ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"
Figyeljük meg, hogy az álcímekhez tartozó bejegyzések az alias0 névvel kezdődnek és szám szerint növekvőleg következnek egymás után (például, _alias1, _alias2 és így tovább). A beállítás a sorozat első kimaradó tagjánál megszakad.
Az álcímek hálózati maszkjának pontos meghatározása nagyon fontos, de szerencsére nem különösebben bonyolult. Minden felület esetén lennie kell egy olyan címnek, amely helyesen reprezentálja a hálózat hálózati maszkját. Minden egyéb olyan címnek, ami ugyanabba az alhálózatba esik, végig 1-esekből álló hálózati maszkkal kell rendelkezniük (ami felírható 255.255.255.255 vagy 0xffffffff formájában is).
Például vegyük azt, hogy az fxp0 felületen keresztül két hálózathoz csatlakozunk, melyek közül az egyik a 10.1.1.0, amelynek hálózati maszkja 255.255.255.0, és a 202.0.75.16, amelynek hálózati maszkja 255.255.255.240. Azt szeretnénk elérni, hogy a rendszerünk a 10.1.1.1 címtől a 10.1.1.5 címig, valamint a 202.0.75.17 címtől a 202.0.75.20 címig jelenjen meg a nekik megfelelő hálózatokon. Ahogy arra már fentebb is utaltunk, az adott hálózati tartományban csak az első címnek (ebben az esetben ez a 10.0.1.1 és a 202.0.75.17) kell valódi hálózati maszkkal rendelkeznie. Minden további címnek (a 10.1.1.2 és 10.1.1.5 között, valamint a 202.0.75.18 és 202.0.75.20 között) legyen 255.255.255.255 a hálózati maszkja.
Az alábbi /etc/rc.conf bejegyzések ennek az elrendezésnek megfelelően állítják be a kártyát:
ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0" ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255" ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255" ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255" ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255" ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240" ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255" ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255" ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"
A beállításokkal kapcsolatos információk számos könyvtárban tárolódnak. Többek közt:
/etc | Általános rendszerszintű beállítások. Az itt levő adatok a rendszer egészére vonatkoznak. |
/etc/defaults | A rendszer konfigurációs állományainak alapértelmezett változatai. |
/etc/mail | A sendmail(8) beállításához tartozó további állományok, egyéb levélküldéshez használt adatok. |
/etc/ppp | A felhasználói és rendszermag szintű ppp programok beállításai. |
/etc/namedb | A named(8) működéséhez szükséges adatok alapértelmezett helye. Általában a named.conf és a zónák leírását tároló állományok kerülnek ide. |
/usr/local/etc | A telepített alkalmazások konfigurációs állományai. Néha alkalmazásonként külön könyvtárakba kerülnek a benne található állományok. |
/usr/local/etc/rc.d | A telepített alkalmazások indításával és leállításával kapcsolatos szkriptek. |
/var/db | Automatikusan generált rendszerszintű adatbázisok a csomagokkal, a programok helyével stb. kapcsolatosan. |
Az /etc/resolv.conf határozza meg, hogy a FreeBSD névfeloldója miként fér hozzá az internet tartománynév rendszeréhez (a DNS-hez).
Az resolv.conf állományban leggyakrabban a következő bejegyzések fordulnak elő:
nameserver | Annak a névszernek az IP-címe, ahova a névfeloldó küldi a kéréseit. A névszervereket a felírás sorrendjében kérdezi meg, maximum hármat. |
search | A hálózati nevek keresőlistája. Ezt általában a helyi hálózati nevek tartománya határozza meg. |
domain | A helyi tartomány neve. |
Egy átlagos resolv.conf tartalma:
search example.com nameserver 147.11.1.11 nameserver 147.11.100.30
Megjegyzés: Csak egy search és domain opciót szabad megadni.
A DHCP használatakor a dhclient(8) felül szokta írni a resolv.conf tartalmát a DHCP szervertől kapott információkkal.
Az /etc/hosts az internet kezdeti napjaira emlékeztető egyszerű szöveges adatbázis. A nevek és IP-címek közti leképzéseket a DNS és NIS rendszerekkel karöltve oldja fel. Ide a helyi hálózaton csatlakozó számítógépek neveit lehet beírni ahelyett, hogy erre a célra beállítanánk egy külön named(8) szervert. Ezenkívül még az /etc/hosts állományba internetes nevek rekordját is felvehetjük, amivel így csökkenthetjük a gyakran használt nevek feloldására irányuló külső kéréseket.
# $FreeBSD$ # # # A hálózati nevek adatbázisa # # Ebbe az állományba rakjuk a helyi hálózaton található címeket és # a hozzájuk tartozó hálózati neveket, ahol szinte ugyanez az # adatbázis megtalálható. A 'my.domain' helyére a saját gépünk # nevét írjuk be. # # A DNS vagy NIS alkalmazása esetén ez az állomány nem feltétlenül kerül # felhasználásra. A névfeloldás sorrendjét az /etc/nsswitch.conf # állományban adhatjuk meg. # ::1 localhost localhost.my.domain 127.0.0.1 localhost localhost.my.domain # # Egy képzeletbeli hálózat. #10.0.0.2 myname.my.domain myname #10.0.0.3 myfriend.my.domain myfriend # # Az RFC 1918-nak megfelelően a következő IP-címekkel rendelkező # alhálózatok sosem csatlakozhatnak közvetlenül az internetre: # # 10.0.0.0 - 10.255.255.255 # 172.16.0.0 - 172.31.255.255 # 192.168.0.0 - 192.168.255.255 # # Amikor csatlakozunk az internethez, egy valódi, hivatalosan # kiosztott számra lesz szükségünk. Ne találjunk ki magunknak # hálózati címeket, hanem használjuk az internetszolgáltatótól # kapott címet (amennyiben rendelkezünk # ilyennel) vagy az # regionális internetes nyilvántartásban szereplő címek közül # valamelyiket (ARIN, APNIC, LACNIC, RIPE NCC vagy AfriNIC).
Az /etc/hosts formai felépítése igen egyszerű:
[internetes cím] [hivatalos hálózati név] [álnév1] [álnév2] ...
Tehát például:
10.0.0.1 azEnValodiNevem.aHalozaton.hu azEnValodiNevem izemize1 izemize2
A részletekért keressük fel a hosts(5) man oldalt.
A syslog.conf állomány a syslogd(8) program beállításait tartalmazza. Segítségével megadhatjuk, hogy a syslog által generált üzenetek egyes típusait milyen naplóállományokba mentsük.
# $FreeBSD$ # # Ebben az állományban HASZNÁLHATÓAK szóközök a mezők elválasztására, # habár a többi *nix-típusú rendszer inkább tabulátorokat használ # erre a célra. Ha több rendszeren is használni akarjuk ezt az # állományt, akkor ne használjunk szóközöket. # # A többit lásd a syslog.conf(5) man oldalon. # .err;kern.debug;auth.notice;mail.crit /dev/console *.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages security.* /var/log/security mail.info /var/log/maillog lpr.info /var/log/lpd-errs cron.* /var/log/cron *.err root *.notice;news.err root *.alert root *.emerg * # Tegyük vissza ezt a sort, ha a /dev/console eszközre kiírt # üzeneteket át akarjuk irányítani az /var/log/console.log állományba. #console.info /var/log/console.log # Ha az összes üzenetet a /var/log/all.log állományba akarjuk menteni, # akkor tegyük vissza ezt a sort. #*.* /var/log/all.log # Ha egy "loghost" nevű gépre szeretnénk naplózni, akkor tegyük vissza # ezt a sort. #*.* @loghost # Az inn használatakor tegyük vissza ezeket a sorokat. # news.crit /var/log/news/news.crit # news.err /var/log/news/news.err # news.notice /var/log/news/news.notice !startslip *.* /var/log/slip.log !ppp *.* /var/log/ppp.log
A syslog.conf(5) man oldalának elolvasásával tudhatunk meg többet ezekről.
A newsyslog.conf a newsyslog(8) beállításait tároló állomány. Ez egy olyan program, amelyet általában a cron(8) futtat le. A newsyslog(8) dönti el, hogy mikor van szükség a naplók archiválására és átrendezésére. Ennek során a logfile állományból logfile.0 lesz, a logfile.0 állományból pedig logfile.1 és így tovább. Beállíthatjuk úgy is, hogy a naplóállományokat archiválja gzip(1) formátumban, aminek megfelelően ezek logfile.0.gz, logfile.1.gz és ehhez hasonló névvel jönnek létre.
A newsyslog.conf megadja, hogy melyik naplóállományokat kell felügyelni, mennyi példányt tartsunk meg belőlük és mikor kell velük foglalkozni. A naplóállományok átrendezhetőek és/vagy archiválhatóak egy adott méret elérésekor vagy egy adott idő eltelte után.
# A newsyslog konfigurációs állománya # $FreeBSD$ # # állománynév [tulajdonos:csoport] mód darab méret mikor [ZB] [/pid_állomány] [jelzés] /var/log/cron 600 3 100 * Z /var/log/amd.log 644 7 100 * Z /var/log/kerberos.log 644 7 100 * Z /var/log/lpd-errs 644 7 100 * Z /var/log/maillog 644 7 * @T00 Z /var/log/sendmail.st 644 10 * 168 B /var/log/messages 644 5 100 * Z /var/log/all.log 600 7 * @T00 Z /var/log/slip.log 600 3 100 * Z /var/log/ppp.log 600 3 100 * Z /var/log/security 600 10 100 * Z /var/log/wtmp 644 3 * @01T05 B /var/log/daily.log 640 7 * @T00 Z /var/log/weekly.log 640 5 1 $W6D0 Z /var/log/monthly.log 640 12 * $M1D0 Z /var/log/console.log 640 5 100 * Z
További információkat a newsyslog(8) man oldaláról nyerhetünk.
A sysctl.conf állomány leginkább az rc.conf állományhoz hasonlít, benne az értékeket változó=érték párokban adhatjuk meg. Az itt definiált értékek akkor kerülnek ténylegesen beállításra, amikor a rendszer többfelhasználós módba vált. Ezen a módon nem mindegyik változó értékét tudjuk átállítani.
A sysctl.conf állományban az alábbi érték beállításával tudjuk beállítani, hogy a rendszer ne naplózza, amikor a programok végzetes jelzéssel fejeződnek be, valamint azt, hogy a felhasználók láthassák egymás futó programjait:
# Ne naplózzuk a végzetes jelzésekhez (például sig 11) tartozó kilépéseket. kern.logsigexit=0 # Ne engedjük a felhasználóknak, hogy lássák egy másik felhasználó # azonosítójával futó programokat. security.bsd.see_other_uids=0
A sysctl(8) egy olyan felület, amely lehetőséget biztosít egy működő FreeBSD rendszer megváltoztatására. Segítségével többek közt hozzáférhetünk a TCP/IP protokollkészlet és a virtuális memóriát kezelő alrendszer rengeteg apró opciójához, melyek megfelelő beállításával egy tapasztalt rendszergazda kezében drasztikusan növelhető a rendszer teljesítménye. A sysctl(8) alkalmazásával több mint ötszáz rendszerszintű változó kérdezhető le és állítható be.
A sysctl(8) két funkciót rejt magában: a rendszer beállításainak lekérdezését és módosítását.
Így nézhetjük meg az összes lekérdezhetó változót:
% sysctl -a
Így kérhetjük egy konkrét
változó, például a
kern.maxproc
értékét:
% sysctl kern.maxproc kern.maxproc: 1044
Egy adott változó értékének módosításához pedig használjuk a változó=érték felírást:
# sysctl kern.maxfiles=5000 kern.maxfiles: 2088 -> 5000
A sysctl változók értékei lehetnek karakterláncok, számok és logikai értékek (ahol az 1 az igennek, a 0 a nemnek felel meg).
Ha a számítógép indításakor automatikusan be akarunk állítani bizonyos változókat, akkor vegyük fel ezeket az /etc/sysctl.conf állományba. Ennek pontosabb részleteit a sysctl.conf(5) man oldalon és a 11.10.4 Szakaszban találhatjuk meg.
Egyes esetekben szükséges lehet a sysctl(8) írásvédett változóinak módosítása. Habár gyakran elengedhetetlen, ezt kizárólag csak a rendszer (újra)indításakor tudjuk megtenni.
Például egyes laptopoknál a cardbus(4) eszköz nem próbálkozik több memóriaterület használatával, ezért egy ehhez hasonló hibával leáll:
cbb0: Could not map register memory device_probe_and_attach: cbb0 attach returned 12
Az ilyen és ehhez hasonló esetekben gyakran olyan sysctl(8) változók alapértelmezett értékeit kellene megváltoztatnunk, amelyek írásvédettek. Ilyenkor tegyük az érintett sysctl(8) változó “objektumazonosítóját” (OID) és a hozzá tartozó értéket a /boot/loader.conf állományunkba. Az alapértelmezéseket a /boot/defaults/loader.conf állományban találjuk meg.
A fentebb tárgyalt probléma
megoldásához a felhasználónak a
hw.pci.allow_unsupported_io_range=1
értéket kell beállítania az előbb
említett állományban. Ezután
már a cardbus(4) megfelelően fog
működni.
vfs.vmiodirenable
A vfs.vmiodirenable
sysctl
változó értéke lehet 0 (ki) vagy 1
(be, és ez az alapértelmezés is). Ez a
változó vezérli a könyvtárak
gyorsítótárazását a
rendszerben. A könyvtárak többsége
kis méretű, így az
állományrendszerből csak egyetlen
(általában 1 KB méretű)
darabkát használnak és még
ennél is kevesebbet (általában
512 byte-ot) a pufferben. A változó
kikapcsolt (avagy 0) értéke mellett a puffer
csak rögzített számú
könyvtárat táraz be még abban az
esetben is, amikor temérdek mennyiségű
memória áll a rendelkezésére. Ha
viszont (az 1 értékkel)
engedélyezzük, akkor a rendszer a
könyvtárak tárazására
felhasználja a virtuális
memóriában pufferelt lapokat is, amivel
lényegében az összes elérhető
memóriát a könyvtárak
tárazására fordítja. Ilyenkor
azonban az egyes könyvtárak
tárazására használt legkisebb
memóriaterület a fizikai lapmérettel
egyezik meg (ami általában 4 KB) és
nem 512 byte. Abban az esetben javasoljuk ennek a
beállításnak a használatát,
ha olyan szolgáltatásokkal dolgozunk, amelyek
nagy számú állománnyal dolgoznak
egyszerre. Ilyen szolgáltatások többek
közt a webes gyorsítótárak, nagyobb
levelezőrendszerek és hírrendszerek. Az
opció engedélyezése alapvetően nem
veti vissza a rendszer teljesítményét
még akkor sem, ha ezzel memóriát
pazarlunk el, de ezt igazából érdemes
kikísérletezni.
vfs.write_behind
A vfs.write_behind
sysctl
változó alapértelmezett
értéke 1 (bekapcsolt). Ez
arra utasítja az állományrendszert, hogy
csak akkor küldje ki az adatokat az eszközre, ha
belőlük teljes fürtök gyűltek
össze. Ez jellemző módon nagyobb
szekvenciális állományok
írása esetén kedvező. Arra
szolgál, hogy segítségével el
lehessen kerülni az I/O túlságosan gyakori
módosítások okozta
terhelését. Bizonyos
körülmények közt ez azonban
lassíthatja a futó programok
működését, ezért ilyenkor
érdemes megfontolni a
kikapcsolását.
vfs.hirunningspace
A vfs.hirunningspace
sysctl
változó értéke azt adja meg, hogy
tetszőleges számú
példánynál rendszerszinten mekkora
mértékű írási művelet
irányítható át a
lemezvezérlők soraiba. Az
alapértelmezés többnyire elegendő, de
olyan gépeken, ahol sok lemez dolgozik egyszerre, ez az
érték négy vagy öt
megabyte-ra is felszökhet!
Hozzátennénk, hogy ha ezt az
értéket túlságosan nagyra
állítjuk (és így
túllépjük a puffer írási
küszöbértékét), akkor ezzel
hihetetlenül gyenge fürtözési
teljesítményt nyerünk. Semmiképp se
állítsuk túlzottan nagy
értékre! A nagyobb írási
értékek a velük párhuzamos
olvasások számára
késleltetést is jelentenek.
Találhatunk még más egyéb pufferelési és gyorsítótárazási sysctl változókat, azonban ezek megváltoztatását egyáltalán nem javasoljuk, mivel a virtuális memória alrendszer kiválóan tudja önállóan állítani ezeket a paramétereit.
vm.swap_idle_enabled
A vm.swap_idle_enabled
sysctl
változó módosítása olyan
nagyobb többfelhasználós rendszerekben
bizonyulhat hasznosnak, ahol sok felhasználó
lép be és lép ki a rendszerbe és
sok az üresjáratban futó program. Az ilyen
jellegű rendszerek hajlamosak nagy mennyiségű
folyamatos terhelést mérni a tartalékolt
szabad memóriára. A
beállítás
engedélyezésével, valamint a
vm.swap_idle_threshold1
és a
vm.swap_idle_threshold2
változókon keresztül a kilapozás
“reakcióidejének” alkalmas
behangolásával a megszokottnál gyorsabban
lenyomhatjuk az üresjáratban dolgozó
programokhoz tartozó memórialapok
prioritását, amivel a kilapozásokat
vezérlő démon kezére
játszunk. Azonban tényleg csak akkor
engedélyezzük ezt a lehetőséget, ha
valóban szükségünk van rá,
mivel így a memóriát jóval
előbb lapozzuk ki és ezzel több
lapozóállományt és
lemezteljesítményt emésztünk fel.
Kisebb rendszerekben jól behatárolható a
hatása, azonban a nagyobb rendszerekben, ahol
már eleve visszafogott mértékű
lapozás történik, ez a
beállítás lehetővé teszi a
virtuális memóriát kezelő alrendszer
számára, hogy könnyedén ki-
és be rakosgasson komplett futó programokat a
memóriába.
hw.ata.wc
A FreeBSD 4.3 egyszer már kacérkodott az
IDE-lemezek írási pufferének
kikapcsolásával. Ez ugyan csökkentette az
IDE-lemezek írási
sávszélességét, azonban bizonyos
merevlemezgyártók
gondatlanságából eredő súlyos
adatvesztések miatt szükséges volt a
használata. A gond ezzel kapcsolatban ott van, hogy
egyes IDE-meghajtók hazudnak az írások
teljesítéséről. A lemezek
írási
gyorsítótárazásának
bekapcsolásával az IDE-meghajtók nem csak
az írások sorrendjét rendezik át,
hanem nagyobb terhelés esetén egyes blokkokat
jóval később is rögzítenek.
Ezért a rendszer esetleges összeomlása vagy
egy áramkimaradás súlyos károkat
okozhat az állományrendszerben. A FreeBSD
úgy döntött, hogy a
megbízhatóságot választja. Sajnos
ez olyan nagyságú
teljesítményvesztést okozott, hogy a
következő kiadásban már
kénytelenek voltunk alapértelmezés
szerint is visszakapcsolni ezt a lehetőséget. A
hw.ata.wc
nevű sysctl
változó vizsgálatával
ellenőrizhetjük a rendszerünkön
érvényes alapértelmezett
beállítást. Amennyiben az IDE
írások
gyorsítótárazása nem
engedélyezett, akkor ezt a változó
értékének 1-re
állításával
állíthatjuk vissza. Ezt a rendszer
indításakor a rendszerbetöltőben
tehetjük meg. A rendszermag indítása
után ennek már nincs hatása.
A részleteket a ata(4) man oldalon tudhatjuk meg.
kern.cam.scsi_delay
)A rendszermag SCSI_DELAY nevű
beállítása a rendszer
indulásának idejét hivatott
mérsékelni. Az alapértelmezett
értéke viszonylag magas, innen származik
a rendszer indítása során keletkező
15 másodperces
csúszás. Általában az is
megfelelő, ha ezt visszavesszük az
5 értékre (főleg a
modernebb meghajtók számára). A FreeBSD
újabb (5.0 vagy későbbi)
változataiban ez az érték már a
kern.cam.scsi_delay
sysctl
változó értékével is
megadható a rendszer indításakor.
Azonban ügyeljünk rá, hogy mind a
finomhangoláshoz használt változó,
mind pedig rendszermag beállítása
ezredmásodpercben és
nem
másodpercben értelmezi ezt
az értéket.
A tunefs(8) nevű program használható az állományrendszerek finomhangolására. Nagyon sok opciót találhatunk benne, de itt most csak a “Soft Updates” ki- és bekapcsolásával foglalkozunk, amit a következő módon tehetünk meg:
# tunefs -n enable /allomanyrendszer # tunefs -n disable /allomanyrendszer
Amíg egy állományrendszer csatlakoztatott állapotban van, addig nem módosítható a tunefs(8) paranccsal. A Soft Updates bekapcsolására ezért az a legalkalmasabb időpont, amikor egyfelhasználós módban vagyunk és még egyetlen partíciót sem csatlakoztattunk.
A Soft Updates beállítás engedélyezése a memóriában pufferelt gyorsítótáron keresztül jelentős mértékben fokozza a metaadatok teljesítményét, elsősorban az állományok létrehozását és törlését. A Soft Updates használatát ezért minden állományrendszer esetén ajánljuk. A Soft Updates alkalmazásának két rossz oldalára kell tekintettel lennünk. Először is a Soft Updates a rendszer összeomlása esetén ugyan garantálja az állományrendszer konzisztenciáját, de könnyen elképzelhető, hogy több másodperccel (vagy akár egy egész perccel!) hátrébb jár a fizikai lemez frissítésében. Másodszor a Soft Updates késlelteti az állományrendszer blokkjainak felszabadítását. Ha van egy olyan állományrendszerünk (mint például a rendszer indításához használt gyökér partíció), ami már majdnem betelt, akkor egy nagyobb frissítés, például a make installworld parancs kiadása, során az állományrendszer egyszerűen kifogy a helyből és így a frissítés meghiúsul.
Két hagyományos megközelítés létezik az állományrendszerek metaadatainak visszaírására. (A metaadatok módosításakor olyan nem adatot tartalmazó blokkok változnak meg, mint például az állományokra vonatkozó információk vagy a könyvtárak.)
Eredetileg alapértelmezés szerint a metaadatok változásait szinkron módon írták ki. Amikor egy könyvtár megváltozott, a rendszer egészen addig várt, amíg ez a változás a lemezre nem íródott. Ugyanekkor az állományok adatait tartalmazó pufferek (az állományok tartalma) átkerültek a pufferelt gyorsítótárba, hogy majd később, aszinkron módon kerüljenek kiírásra. Ennek az implementációnak a biztonságos működés volt az előnye, mivel így a metaadatok még akkor is konzisztens állapotban maradtak, amikor valamilyen hiba következett be. Tehát egy állomány vagy teljesen létrejött vagy egyáltalán nem. Ha az állományhoz tartozó blokkok már nem tudtak kijutni a gyorsítótárból az összeomlás ideje előtt, akkor az fsck(8) felismerte ezt a helyzetet és az állományrendszer ilyen jellegű hibáját úgy orvosolta, hogy az adott állomány méretét nullára állította. Ezenkívül még az implementációs részletek is tiszták és egyszerűek maradtak. Ennek viszont hátránya, hogy a metaadatok kezelése lassú. Ha például kiadunk egy rm -r parancsot, akkor az a könyvtárban levő állományokat szekvenciálisan dolgozza fel, de minden egyes változtatást (az állományok törlését) csak szinkron módon rögzíti a lemezre. Ezek a frissítések érintik magát a könyvtárat, az állományokkal kapcsolatos információkat tároló táblázatot (az ún. inode táblát) és minden valószínűség szerint az állományok által lefoglalt blokkokat is közvetve. Hasonló megfontolások élnek a nagyobb könyvtárszerkezetek kibontása esetén is (tar -x).
A második lehetőség a metaadatok aszinkron frissítése. Ez az alapértelmezés a Linux ext2fs és BSD-k mount -o async opcióval csatlakoztatott UFS állományrendszerei esetén. Ilyenkor minden metaadattal kapcsolatos aktualizálás egyszerűen bekerült a pufferelt gyorsítótárba, tehát az állományok adatai és ezek a típusú frissítések keverednek. Ennek a megvalósításnak az az előnye, hogy nem kell megvárni, amíg a metaadatok is kiíródnak a lemezre, ezért a metaadatok óriási mennyiségű változásával járó műveletek sokkal gyorsabban hajtódnak végre, mint a szinkron esetben. Sőt, maga az implementáció is tiszta és egyszerű marad, ezért a kódban megjelenő hibák beszivárgásának kockázata alacsony. A módszer hátránya, hogy egyáltalán semmilyen garanciát nem kapunk az állományrendszer konzisztenciájára. Ha tehát egy rengeteg metaadat megváltozásával együttjáró művelet közben történik valamilyen probléma (áramkimaradás, vagy valaki egyszerűen megnyomja a reset gombot), akkor az állományrendszer előre kiszámíthatatlan állapotba kerül. A rendszer újbóli indításakor ezért nincs lehetőségünk megvizsgálni az állományrendszer állapotát. Elképzelhető, hogy az állományokhoz tartozó adatok már kikerültek a lemezre, miközben a rá vonatkozó inode- vagy könyvtári bejegyzések még nem. Így lényegében lehetetlen olyan fsck implementációt készíteni, ami képes lenne eltüntetni ezt a káoszt (hiszen az ehhez szükséges adatok nem állnak rendelkezésre). Ha az állományrendszer helyrehozhatatlanul károsodott, akkor csak a newfs(8) és a biztonsági mentés visszaállítása segíthet rajta.
Ezt általában úgy küszöbölik ki, hogy az egészhez hozzáteszik még a módosított területek feljegyzését, amit gyakran csak naplózásnak (journaling) neveznek, habár ezt az elnevezést nem mindenhol ilyen értelemben használják, ezért a tranzakciók naplózásának más formáira is utalhat. A metaadatok frissítése ebben az esetben is csak szinkron módon történik, de csak a lemez egy kisebb területére. Később ez a megfelelő helyére kerül. Mivel a lemez naplózásra fordított része egy viszonylag kis méretű, folytonos terület, a lemez fejének még a megterhelőbb műveletek esetén sem kell sokat mozognia, ezért valójában ez a megoldás gyorsabb, mint a mezei szinkron frissítések. Az implementáció bonyolultsága továbbra is jól behatárolható, a velejáró hibalehetőségek kockázata alacsony. Hátránya, hogy minden metaadat kétszer íródik ki (egyszer a naplózási területre, aztán a megfelelő helyre), ezért a hétköznapi használat során “visszaesés” tapasztalható a teljesítményben. Másrészről azonban egy összeomlás esetén a naplózási terület segítségével minden függőben levő metaadattal kapcsolatos művelet könnyen visszafordítható vagy lezárható a rendszer következő indításakor, így ezzel egy gyors helyreállítást nyerünk.
Kirk McKusick, a Berkeley FFS fejlesztője ezt a problémát a Soft Updates segítségével hidalta át: a metaadatokkal kapcsolatos minden függőben levő frissítést a memóriában tart, majd ezeket rendezett sorrendben írja ki a lemezre (“a metaadatok rendezett frissítése”). Ennek következményeképpen a metaadatok komolyabb frissítése során a később érkező módosításoknak lehetőségük van “elkapni” a memóriában levő korábbi változataikat, ha azok még nem kerültek ki a lemezre. Így az összes, például könyvtárakon végzett, művelet a lemezre írás előtt általában először a memóriában játszódik le (az adatblokkok a pozíciójuknak megfelelően kerülnek rendezésre, ezért a rájuk vonatkozó metaadatok előtt nem jutnak ki a lemezre). Ha eközben a rendszer összeomlik, akkor így implicit módon a “napló visszalapozását” eredményezi: minden olyan művelet, ami már nem tudott kijutni a lemezre, meg nem történtnek számít. Ezen a módon az állományrendszernek egy 30 és 60 másodperc közti korábbi állapota marad fenn. Az algoritmus garantálja, hogy az összes használt erőforrás a nekik megfelelő bittérképekben helyesen jelölődik, a blokkokban és az inode-okban. Az összeomlás után az erőforrások kiosztásával kapcsolatban csak egyetlen hiba léphet fel: amikor olyan erőforrások jelölődnek “használtnak”, amelyek igazából “szabadok”. Az fsck(8) azonban képes felismerni ezeket a helyzeteket és felszabadítani a nem használt erőforrásokat. A mount -f parancs kiadásával minden további következmény nélkül figyelmen kívül hagyhatjuk az állományrendszer félkész állapotát és csatlakoztathatjuk az állományrendszereket. A használatban már nem levő erőforrások felszabadításához az fsck(8) parancsot később kell futtatni. Ez az alapötlet húzódik meg a háttérben végzett lemezellenőrzés mögött. A rendszer indításakor az állományrendszernek csupán egy pillanatképét rögzítjük, és az fsck tényleges lefuttatását későbbre toljuk. Mivel mindegyik állományrendszer csatlakoztatható “félkész” állapotban, ezért a rendszer képes elindulni többfelhasználós módban. Eközben a háttérben az fsck beütemezhető minden olyan állományrendszer számára, ahol arra szükség van, hogy szabadítsa fel az esetlegesen már nem használt erőforrásokat. (Így a Soft Updates opciót nem alkalmazó állományrendszerek esetén továbbra is szükség van az előtérben elvégzett fsck parancsra.)
A módszer előnye, hogy így a metaadatokkal kapcsolatos műveletek közel olyan gyorsak, mint az aszinkron módon végzett frissítések (tehát gyorsabb, mintha naplóznánk, ami ugye minden metaadatot kétszer ír ki). A hátránya a bonyolultabb kód (ami miatt növekszik az olyan hibák lehetősége, amelyek érzékenyen befolyásolhatják a felhasználói adatok elvesztését) és a nagyobb memóriaigény. Ezenkívül még van néhány olyan egyéni jellemzője, amelyet meg kell szokni. A rendszer összeomlása után az állományrendszer valamivel “régebbi” lesz. Amikor pedig megszokott szinkron megközelítés szerint az fsck lefutása után nulla méretű állományok jönnének létre, ezek az állományok a Soft Updates esetén egyáltalán meg sem jelennek, mivel sem a rájuk vonatkozó metaadatok, sem pedig a tartalmuk nem került ki a lemezre. Egy rm lefuttatása után a lemezterület addig nem kerül felszabadításra, amíg a frissítések teljesen rá nem kerülnek a lemezre. Ez nagyobb mennyiségű adat telepítésekor gondokat okozhat egy olyan állományrendszeren, ahol nincs elegendő hely az állományok kétszeri tárolására.
kern.maxfiles
A kern.maxfiles
értéke a
rendszerünk igényeinek megfelelően
növelhető vagy csökkenthető. Ez a
változó adja meg a rendszerünkben levő
állományleírók maximális
számát. Amikor az
állományleírókat
tároló táblázat megtelik, a
rendszer üzenetpufferében egy “file:
table is full” üzenet jelenik meg, amit a
dmesg paranccsal tudunk
megnézni.
Minden megnyitott állomány, csatlakozás vagy FIFO elhasznál egy állományleírót. Egy nagyméretű szerver könnyen felemészthet több ezernyi állományleírót attól függően, hogy milyen és mennyi szolgáltatást futtat egymás mellett.
A FreeBSD korábbi kiadásaiban a
kern.maxfiles
a rendszermag
beállításait tartalmazó
állomány maxusers
(a
rendszerben egyszerre jelenlevő
felhasználók maximumának)
értékéből származott,
tehát a kern.maxfiles
a
maxusers
értékével
arányosan növekszik. Amikor
készítünk egy saját rendszermagot,
mindig érdemes a rendszerünk
használatának megfelelően
beállítani ezt az értéket, mivel a
rendszermag ebből a számból
határozza meg a legtöbb előre
meghatározott korlátait. Mivel még egy
komoly szerveren sem jelentkeznek be egyszerre 256
felhasználónál többen,
nagyjából ugyanannyi erőforrásra van
szüksége, mint egy nagyobb webszervernek.
A kern.maxusers
értéke a
rendelkezésre álló
memóriának megfelelően
magától méreteződik a rendszer
indításakor, és amit futás
közben csak a kern.maxusers
sysctl
változó írásvédett
értékének
lekérdezéséből tudhatunk meg. Egyes
oldalak üzemeltetése a
kern.maxusers
így
megállapított
értékétől nagyobbat vagy
éppen kisebbet igényel, ezért a
betöltéskor minden gond nélkül
át lehet állítani 64, 128 vagy 256
értékűre. Senkinek sem ajánljuk,
hogy 256 felé menjen, hacsak tényleg nincs
szüksége ekkora mennyiségű
állományleíróra. A
kern.maxusers
függvényében beállított
alapértelmezett értékek tetszőleges
módon átállíthatóak a
rendszer indításakor vagy futás
közben a /boot/loader.conf
módosításával (az ide
kapcsolódó javaslatokról bővebben
lásd a loader.conf(5) man oldalt vagy a
/boot/defaults/loader.conf
állományt) illetve a leírás
más részén megadott módok
szerint.
A korábbi kiadásokban úgy lehet önszabályozóra állítani a maxusers beállítást, ha explicit módon 0 értéket adtunk meg neki [5]. A maxusers paraméter beállításakor érdemes legalább 4-et megadni, különösen akkor, ha használjuk az X Window Systemet vagy szoftvereket fordítunk le. Azért van erre szükség, mert a maxusers értéke által szabályozott legfontosabb mennyiség az egyszerre futtatható programok táblázatának maximális mérete, amelyet így számolunk ki: 20 + 16 * maxusers. Tehát ha a maxusers értékét 1-re állítjuk be, akkor az előbbi képlet értelmében csak 36 programunk futhat egymással párhuzamosan, beleértve mindazt a kb. 18 programot, amelyek a rendszerrel együtt indulnak, illetve még azt a további 15 programot, amelyeket az X Window System használatával indítunk el. Még egy olyan egyszerű dolog is, mint például egy man oldal megnézése, legalább kilenc programot indít el a szűréshez, kitömörítéshez és megnézéshez. Azonban ha a maxusers értékét 64-re állítjuk, akkor egyszerre akár már 1044 programot futtathatunk, ami szinte mindenre elegendő. Ha persze egy új program indításakor kapunk egy proc table full típusú üzenetet vagy nagy számú konkurens felhasználóval futtatunk szervert (ilyen például az ftp.FreeBSD.org), akkor érdemes növelni ezt a számot és újrafordítani a rendszermagot.
Megjegyzés: A maxusers nem korlátozza a számítógépre egyszerre bejelentkezni képes felhasználók számát. Egyszerűen csak beállítja néhány táblázat méretét és az egyszerre futtatható programok mennyiségét a rendszert egyidejűleg használni kívánó felhasználók maximális számának figyelembevételével.
kern.ipc.somaxconn
Az kern.ipc.somaxconn
sysctl
változó a beérkező TCP kapcsolatokat
fogadó sor hosszát határozza meg. Ennek
az alapértelmezett értéke
128, ami az új kapcsolatok
megbízható kezeléséhez
általában kevés egy erősen leterhelt
webszerver számára. Ilyen helyzetekben ezt az
értéket javasolt 1024-re vagy
még annál is nagyobbra állítani.
Az egyes szolgáltatások démonai ugyan
szintén korlátozni szokták a
fogadósoruk méretét
(például a sendmail(8) vagy az
Apache), de gyakran találunk
a beállításai között olyat,
amivel ennek a sornak a mérete növelhető. A
nagyobb fogadósorok mellesleg jó
szolgálatot tesznek a Denial of Service
(DoS) típusú
támadásokkal szemben is.
A rendszermag NMBCLUSTERS nevű
beállítása szab határt a rendszer
részére elérhető
memóriapufferek mennyiségének. Egy nagyobb
forgalmú szerver esetén a pufferek alacsony
száma gátat szabhat a FreeBSD
képességeinek. Minden klaszter
nagyjából 2 KB memóriát takar,
így az 1024-es érték azt jelenti, hogy a
rendszermag memóriájából 2
megabyte-ot fordítunk a hálózati
pufferelésre. Egyszerűen
kiszámítható, mennyire is van
szükségünk: ha van egy webszerverünk,
amely egyszerre legfeljebb 1000 párhuzamos kapcsolatot
fogad, és minden kapcsolat lefoglal 16 KB-ot a
fogadó-, valamint újabb 16 KB-ot a
küldőpuffer számára, akkor
megközelítőleg 32 MB-nyi
hálózati pufferre lesz szükségünk
a webszerver hatékony
működéséhez. Ezt az
értéket gyakran még érdemes
megszorozni kettővel, így
2 x 32 MB / 2 KB =
64 MB / 2 KB = 32768. Több
memóriával rendelkező
számítógépek esetén egy 4096
és 32768 közti értéket javaslunk.
Semmilyen körülmények között ne
adjunk meg ennél nagyobb értéket, mert
ezzel a rendszer már az indítása
során összeomolhat. A netstat(1)
-m
beállításával
ellenőrizhetjük a hálózati klaszterek
kihasználtságát.
A kern.ipc.nmbclusters
változó értékét a rendszer
indításakor érdemes megváltoztatni.
A FreeBSD korábbi változataiban ehhez a rendszermag
NMBCLUSTERS nevű config(8)
paraméterének
módosítására van
szükségünk.
Az olyan forgalmasabb szervereken, ahol sokat
használják a sendfile(2)
rendszerhívást, szükségünk lehet
a sendfile(2) által használt pufferek
számának növelésére a
rendszermag NFSBUFS nevű
konfigurációs paraméterén vagy a
/boot/loader.conf állományon
keresztül (lásd loader(8)). Amikor a
futó programok közül sokan vannak
sfbufa állapotban, akkor az
egyértelműen annak a jele, hogy ezen a
paraméteren állítanunk kell. A
kern.ipc.nsfbufs
egy
írásvédett változót, amelyet
a rendszermag állít be. Ez a paraméter
névlegesen a kern.maxusers
változó értékének
megfelelően változik, de bizonyos esetekben
ettől függetlenül önállóan
kell behangolni.
Fontos: Annak ellenére, hogy egy socketet blokkolásmentesnek jelöltünk meg, a sendfile(2) meghívása egy blokkolásmentes socketre blokkolódást eredményezhet egészen addig, amíg a használatához elegendő struct sf_buf struktúra össze nem gyűlik.
net.inet.ip.portrange.*
A net.inet.ip.portrange.*
sysctl
változók vezérlik a TCP és UDP
csatlakozásokhoz automatikusan hozzárendelt
portszámok tartományát. Három
ilyen tartomány létezik: az alsó, az
alapértelmezett és a felső
tartomány. A legtöbb hálózati
program a net.inet.ip.portrange.first
és net.inet.ip.portrange.last
változók által rendre az 1024-től
5000-ig kijelölt alapértelmezett tartományt
használja. A kimenő kapcsolatok is
rögzített porttartományokat követnek,
és adott körülmények mellett be lehet
állítani úgy a rendszerünket, hogy
ezen kívül osszon ki portokat. Ez a
legtöbbször akkor fordul elő, amikor egy
erősen leterhelt webproxyt működtetünk. A
porttartományok nem okoznak gondot olyan
szervereknél, ahol általában
bejövő kapcsolatokra lehet számítani,
tehát például webszerverek esetén,
vagy ahol korlátozott a kimenő kapcsolatok
száma, mint például a levelek
továbbításánál. Ha olyan
helyzetbe keverednénk, ahol már kifutunk a
felhasználható portokból, a
net.inet.ip.portrange.last
mérsékelt növelésével
javasolt kitörni. Ilyenkor a 10000,
20000 vagy 30000
értékek elfogadhatóak. Amikor
megváltoztatjuk a porttartományok
határait, előtte mindig gondoljuk át,
milyen hatással lehet ez a tűzfalra. Egyes
tűzfalak blokkolhatnak bizonyos tartományokat
(általában az alacsonyabbakat) és arra
számítanak, hogy a rendszerek a kimenő
kapcsolatokhoz a nagyobb számú portokat
használják — ebből kifolyólag
nem ajánlott csökkenteni a
net.inet.ip.portrange.first
értékét.
A TCP
sávszélesség-késleltetés
szorzat korlátozása hasonlít a NetBSD-ben
megtalálható TCP/Vegas
implementációhoz. A
net.inet.tcp.inflight.enable
sysctl
változó 1-re
állításával lehet
engedélyezni. A rendszer ilyenkor minden egyes
kapcsolathoz megpróbálja
kiszámítani a
sávszélesség-késleltetés
szorzatot és az optimális átviteli
sebesség fenntartásához illeszkedően
korlátozni a hálózat felé
küldött adatok sorának hosszát.
Ez a lehetőség még olyankor bizonyulhat
hasznosnak, amikor modemen, Gigabit Etherneten vagy
nagysebességű WAN (vagy bármilyen
más nagy
sávszélesség-késleltetés
szorzattal bíró)
összeköttetéseken keresztül
küldünk át adatokat, különösen
abban az esetben, amikor ablakméretezést is
használnunk vagy nagy küldési ablakot
állítottunk be. Az
engedélyezésekor ne felejtsük el
net.inet.tcp.infligt.debug
változót sem beállítani
0-ra (amivel így kikapcsoljuk a
nyomkövetést),éles használat
esetén pedig előnyös lehet a
net.inet.cp.inflight.min
változót legalább
6144-re állítani. Azonban
hozzátesszük, hogy
összeköttetéstől függően a
nagy minimum értékek tulajdonképpen
kikapcsolják a
sávszélességkorlátozást.
Ez a korlátozási lehetőség
csökkenti a közbenső út adatainak
és csomagváltásokhoz tartozó
soroknak a méretét, miközben csökkenti
a helyi számítógép
felületén felépülő sorok
méretét is. Ha kevesebb csomagot rakunk be a
sorba, akkor az interaktív kapcsolatok,
különösen a lassabb modemek esetében,
kisebb körbejárási
idővel (Round Trip Time) működnek.
Továbbá megemlítenénk, hogy ez a
lehetőség csak az adatok
küldésére (feltöltésére,
szerveroldalra) van hatással. Semmilyen
befolyása nincs az adatok fogadására
(letöltésére).
A net.inet.tcp.inflight.stab
állítgatása nem
ajánlott. A paraméter értéke
alapértelmezés szerint 20, ami legfeljebb 2
csomag hozzáadását jelenti a
sávszélesség-késleltetés
szorzat ablakának kiszámításakor.
Erre a kiegészítő ablakra azért van
szükség, hogy stabilizálni tudjuk vele az
algoritmust és javítani tudjuk a
változó feltételekre adott
reakciót, de lassabb összeköttetések
esetében nagyobb ping időket is
eredményezhet (habár ezek még így
kisebbek, mint ha nem használnánk az
algoritmust). Ilyen esetekben megpróbálhatjuk
15-re, 10-re vagy esetleg 5-re visszavenni a paraméter
értékét, de ekkor a kívánt
hatás eléréséhez minden bizonnyal
a net.inet.tcp.inflight.min
értékét is redukálunk kell majd
(például 3500-ra). Ezen paraméterek
megváltoztatását csak végső
esetben ajánljuk!
kern.maxvnodes
A vnode egy állomány vagy könyvtár belső ábrázolása. Ennek megfelelően a vnode-ok számának növelésével az operációs rendszer spórolni tud a lemezműveletekkel. Ezt általában maga az operációs rendszer szabályozza, és nincs szükség a finomhangolására. Néhány esetben, amikor a lemezműveletek jelentik a rendszerben a szűk keresztmetszetet és kezdenek elfogyni a vnode-ok, szükség lehet ennek a számnak a növelésére. Ehhez az inaktív és szabad fizikai memória mennyiségét kell számításba vennünk.
Így kérhetjük le a pillanatnyilag használatban levő vnode-ok mennyiségét:
# sysctl vfs.numvnodes vfs.numvnodes: 91349
Így tudhatjuk meg a vnode-ok maximális számát:
# sysctl kern.maxvnodes kern.maxvnodes: 100000
Ha a vnode-ok aktuális kihasználtsága
megközelíti a csúcsértéket,
nagyjából ezerrel javasolt megnövelni a
kern.maxvnodes
értékét. Ezután figyeljük
továbbra is a vfs.numvnodes
változását. Ha ismét
felkúszik a maximális értékre,
akkor növeljük megint egy keveset a
kern.maxvnodes
értékén. Eközben a top(1)
használatával figyelhetjük a memória
kihasználtságának
növekedését is, ilyenkor tehát
több memóriának kell használatban
lennie.
Nem számít, mennyire tervezünk jól előre, mindig előfordulhat, hogy a rendszerünk mégsem teljesíti a kitűzött elvárásokat. Amennyiben további lapozóterület hozzáadására lenne szükségünk, azt igen könnyen megtehetjük. Háromféleképpen növelhetjük a lapozásra szánt területet: hozzáadunk a rendszerhez egy újabb merevlemezes meghajtót, NFS-en keresztül lapozunk, vagy egy már meglevő partíción hozunk létre lapozóállományt.
A lapozóterület titkosításával, valamint annak lehetőségeivel és okaival kapcsolatban lapozzuk fel a kézikönyv 18.17 Szakaszát.
A lapozóterület bővítésének legjobb módja természetesen remek indok egy új merevlemez beszerzésére is. Elvégre egy merevlemezt mindig fel tudunk ilyen célra használni. Ha ezt a megoldást választjuk, előtte ajánlott (újra) elolvasni a kézikönyv 11.2 Szakaszában a lapozóterületek elrendezésére vonatkozó javaslatokat.
NFS-en keresztül csak akkor lapozzunk, ha ezt helyi lemezek segítségével nem tudjuk megtenni. Az NFS alapú lapozás hatékonyságát erősen behatárolja a rendelkezésre álló hálózati sávszélesség és további terheket ró az NFS szerverünkre is.
Lapozóállománynak egy adott méretű állományt hozzunk létre. Ebben a példában erre egy /usr/swap0 nevű, 64 MB méretű állományt fogunk használni. Természetesen bármilyen más nevet is választhatunk.
Példa 11-1. Lapozóállomány létrehozása FreeBSD-ben
Győződjünk meg róla, hogy a rendszermagunk beállításai között megtalálható a memórialemez meghajtójának (md(4)) használata. Ez a GENERIC rendszermag alapból tartalmazza.
device md # Memória "lemezek"
Hozzunk létre egy lapozóállományt (/usr/swap0):
# dd if=/dev/zero of=/usr/swap0 bs=1024k count=64
Állítsuk be rá a megfelelő engedélyeket (/usr/swap0):
# chmod 0600 /usr/swap0
Adjuk meg a lapozóállományt az /etc/rc.conf állományban:
swapfile="/usr/swap0" # Állítsuk be swapfile értékét, ha külső lapozóállományra van szükségünk.
Indítsuk újra a számítógépünket, vagy a lapozóállomány azonnali használtba vételéhez írjuk be:
# mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0
Fontos a hardveres erőforrásaink hatékony kihasználása. Az ACPI megjelenése előtt az operációs rendszerek csak nehézkesen és rugalmatlanul tudták kezelni a rendszer energiafelhasználási és hőszabályzási lehetőségeit. A hardvert a BIOS kezelte, ezért a felhasználó kevesebbet tudott látni és irányítani az energiagazdálkodási beállításokból. Az Fejlett energiagazdálkodás (Advanced Power Management, APM) ehhez nyújtott egy erősen korlátozott felületet. Napjaink operációs rendszereiben az energia- és erőforráskezelés az egyik legfontosabb alkotóelem. Például, ha az operációs rendszerrel folyamatosan figyelni akarjuk a rendszer hőmérsékletének váratlan növekedését (és erről figyelmeztetést kérni).
A FreeBSD kézikönyvének ezen szakaszában az ACPI-ről adunk egy átfogó áttekintést, a végén pedig összefoglaljuk a témához tartozó irodalmat.
A speciális energia- és konfigurációs illesztő felület (Advanced Configuration and Power Interface, avagy ACPI) gyártók egy csoportja által létrehozott szabvány, amely a hardveres erőforrások és az energiagazdálkodás egységes felületét rögzíti (innen a neve). Döntő szerepet játszik a Beállítások és az energiagazdálkodás operációs rendszerek áltai vezérlésében, vagyis segítségével az operációs rendszer még nagyobb mértékben és rugalmassággal tudja irányítani ezeket a lehetőségeket. A modern operációs rendszerek az ACPI felbukkanásával “kitolták” a jelenleg meglevő Plug and Play felületek korlátait. Az ACPI az APM közvetlen leszármazottja.
A Fejlett energiagazdálkodás (APM) a rendszer által felhasznált energiát annak elfoglaltsága alapján vezérli. Az APM-et támogató BIOS-t a (rendszert) gyártó állítja elő és az adott hardverplatformra jellemző. Az APM operációs rendszerben levő meghajtója hozzáférést biztosít az APM szoftveres felületéhez, amivel lehetőség nyílik az energiaszintek kezelésére. Az APM-et 2000 előtt és körül még mindig használták egyes rendszerek gyártásánál.
Az APM használata négy nagyobb gondot rejt magában. Először is, az energiagazdálkodást a (gyártófüggő) BIOS végzi el, és az operációs rendszernek erről semmilyen ismerete nincsen. Ennek egyik példája az, amikor a felhasználó az APM-et ismerő BIOS-ban beállítja a merevlemezek automatikus kikapcsolásának idejét, majd amikor ez letelik, a BIOS az operációs rendszer tudta nélkül egyszerűen leállítja a lemezt. Másodszor: az APM működését a BIOS-ban programozták le, és teljesen az operációs rendszer hatáskörén túl tevékenykedik. Ez azt jelenti, hogy a felhasználó csak úgy tudja korrigálni az APM-es BIOS-ok problémáit, ha frissíti az alaplapi ROM-ot. Ez viszont egy nagyon kockázatos folyamat, amelynek hibája révén a rendszerünk helyrehozhatatlan állapotba kerülhet. Harmadszor: az APM alapvetően egy gyártófüggő megoldás, ami azt vonja maga után, hogy sok az átfedés (ugyanazt valósítják meg több módon), és ha az egyik gyártó BIOS-ában hibát találnak, akkor a másikéban az nem feltétlenül javítható. Végül, de nem utolsósorban, az APM alapú BIOS-okban nincs elég hely az igazán kifinomult energiagazdálkodási sémák vagy bármi más kialakítására, amivel a felhasználók képesek lennének az igényeikhez alakítani a számítógépet.
A Plug and Play BIOS (PNPBIOS) sok szempontból megbízhatatlannak bizonyult. A PNPBIOS ráadásul egy 16 bites megoldás, ezért az operációs rendszereknek 16 bites emulációt kell használniuk a PNPBIOS eszközeinek “eléréséhez”.
A FreeBSD APM meghajtójának dokumentációját az apm(4) man oldalon találjuk.
Az acpi.ko meghajtó alapértelmezés szerint a loader(8) segítségével töltődik be, és ne is fordítsuk bele a rendszermagba. Ezt azzal tudnánk magyarázni, hogy modulokkal könnyebb dolgozni, például ha a rendszermag újrafordítása nélkül egy másik acpi.ko modult akarunk használni. Ezzel a lényegében a tesztelés is egyszerűbbé válik. Másik magyarázat, hogy a rendszer ACPI támogatása nem minden esetben működik rendesen. Ha a rendszer indítása során valamilyen problémát tapasztalunk, akkor próbálkozzunk meg az ACPI kikapcsolásával. Ezt a meghajtót nem lehet és nem is szabad kidobni a memóriából, mivel a hardverrel a rendszerbuszon keresztül tartja a kapcsolatot. Az ACPI a hint.acpi.0.disabled="1" sor megadásával kapcsolható a /boot/loader.conf állományban vagy a loader(8) parancssorában.
Megjegyzés: Az ACPI és az APM nem használató egyszerre. Közülük a később betöltött magától kilép, ha észreveszi, hogy a másikuk már működésbe lépett.
Az ACPI és az acpiconf(8)
használatával a rendszerünk
készenléti módba helyezhető az
-s
valamint az 1-5
paraméterek megadásával. Ezek
közül is a legtöbb felhasználó
számára csak az 1 vagy a
3 (állapot mentése a fizikai
memóriába) érdekes. Az
5 opció egy szoftveres
kikapcsolást eredményez, ehhez
hasonlóan:
# halt -p
A további opciók a sysctl(8) man oldaláról érhetőek el. Ezen kívül még olvassuk el az acpi(4) és acpiconf(8) man oldalakat is.
Az ACPI az eszközök felderítésének, energiagazdálkodásának és a korábban a BIOS által kezelt hardverek szabványosított hozzáférésének alapjaiban új módja. Az ACPI folyamatosan fejlődik, de útját az egyes alaplapok ACPI Machine Language (AML) bytekód implementációjában megjelenő hibák, a FreeBSD rendszermag alrendszereinek befejezetlensége és az Intel ACPI-CA értelmezőjében levő hibák lassítják.
Ez a leírás azzal a szándékkal készült, hogy segítsünk a felhasználóknak megtalálni az általuk tapasztalt problémák gyökerét és ezzel segíteni az ACPI fejlesztőket a nyomonkövetésében és kijavításában. A fejlesztők köszönik, hogy ezt elolvassuk és segédkezünk a rendszerünkkel kapcsolatban felmerülő problémák orvosolásában!
Megjegyzés: Mielőtt beküldenénk bármilyen problémát is, gondoskodjunk róla, hogy a BIOS-unk, és ha lehetséges, akkor a beágyazott vezérlők, legfrissebb verzióját használjuk.
Megkérnénk azokat, akik hibát akarnak bejelenteni, hogy a következő információkat küldjék a freebsd-acpi@FreeBSD.org címre:
A hibás működés leírása, beleértve a rendszer típusát és gyártmányát, illetve minden olyat, aminek köze lehet a hibához. Ha eddig még nem tapasztaltuk, igyekezzünk minél pontosabban leírni a hiba keletkezésének folyamatát.
A boot -v paranccsal indított rendszer dmesg(8) kimenetét, beleértve a vizsgálni kívánt hiba által okozott összes hibaüzenetet.
A boot -v paranccsal és az ACPI használata nélkül indított rendszer dmesg(8) kimenete abban az esetben, ha ez segít megoldani a problémát.
A sysctl hw.acpi parancs kimenete. Ezzel egyébként kitűnően kideríthető, milyen lehetőségeket is kínál fel a rendszerünk.
Az általunk használt ACPI forrásnyelvének (ACPI Source Language, ASL) elérhetősége az interneten. Mivel ezek akár igen nagyok is lehetnek, ezért a listára közvetlenül ne küldjünk ASL kódokat! Az ASL másolatát az alábbi parancs kiadásával hozhatjuk létre:
# acpidump -dt > név-rendszer.asl
(Adjuk meg a név helyett a bejelentkezéshez használt nevünket, a rendszer helyett pedig a gyártót/típust. Például: njl-FooCo6000.asl)
Habár a legtöbb fejlesztő a FreeBSD-CURRENT levelezési listat figyeli, a problémáink leírását mindenképpen a freebsd-acpi listára küldjük, hogy biztosan észrevegyék. A fejlesztők azt kérik, hogy legyünk türelmesek, hiszen emellett mindannyian teljes állásban is dolgoznak. Ha az általunk felfedezett hiba nem teljesen egyértelmű, akkor a fejlesztők valószínűleg meg fognak kérni arra, hogy a send-pr(1) használatával hozzunk róla létre egy hivatalos hibajelentést. A hibajelentés készítésekor lehetőleg a fentebb megadott információkat ugyanúgy adjuk meg. Ez segít a probléma szemmel tartásában és elhárításában. Az freebsd-acpi lista kihagyása nélkül közvetlenül ne küldjünk hibajelentést, mivel a hibabejelentő rendszert elsősorban emlékeztetőnek használjuk, nem pedig a hibák tényleges bejelentésére. Gyakran előfordul, hogy valaki korábban már találkozott az adott problémával.
Az ACPI minden olyan modern számítógépben megtalálható, mely megfelel az ia32 (x86), ia64 (Itanium) vagy amd64 (AMD) architektúrának. A teljes szabvány rengeteg lehetőséget biztosít, többek közt a processzor teljesítményének kezelését, az energiaszintek vezérlését, hőzónákat, különféle akkumulátor rendszereket, beágyazott vezérlők és a buszok felsorolását. A legtöbb rendszer általában nem a teljes szabványt valósítja meg. Például egy asztali rendszer általában csak a buszok felsorolásával kapcsolatos részeket tartalmazza, miközben egy laptop felajánlhatja a hűtés és az akkumulátor kezelését is. A laptopokban gyakorta találunk készenléti üzemmódot a maguk elbonyolított formájában.
Egy ACPI-nak megfelelő rendszert számos összetevő alkot. A BIOS-ok és chipkészletek gyártói a memóriában egy előre rögzített ponton elhelyeznek bizonyos táblázatokat (például FADT), amelyekkel megadják például az APIC összerendeléseit (ezt az SMP rendszerek használják), a konfigurációs regisztereket és az egyszerűbb konfigurációs értékeket. Itt ezenkívül még bytekódok egy táblázata (amit Differenciált rendszerleírtó táblának, Differentiated System Description Table, DSDT nevezünk) is megtalálható, ahol az eszközök és módszerek nevei szerepelnek faszerű elrendezésben.
Az ACPI-hoz tartozó meghajtónak képesnek kell lennie értelmezni ezeket a rögzített táblázatokat, implementálni egy bytekód-értelmezőt, módosítani az eszközmeghajtókat és a rendszermagot az ACPI alrendszerből érkező információk befogadásához. A Linuxszal és a NetBSD-vel közösen a FreeBSD kapott egy ilyen értelmezőt az Inteltől (ACPI-CA). Az ACPI-CA forráskódja a rendszer forrásai között, a src/sys/dev/acpica könyvtárban található. A src/sys/dev/acpica/0sd könyvtárban található források pedig lehetővé teszik, hogy az ACPI-CA működhessen FreeBSD-n. Végezetül, az ACPI eszközöket megvalósító meghajtók a src/sys/dev/acpica könyvtárban találhatóak.
Az ACPI megfelelő működéséhez minden alkotórésznek helyesen kell működnie. A most következendőkben előfordulásuk gyakorisága szerint felsorolunk néhány ismert problémát, valamint a hozzájuk tartozó javításokat vagy elkerülésük módszerét.
Egyes esetekben felfüggesztett állapotból visszatérve az egerünk nem hajlandó működni. Ezt úgy lehet elkerülni, ha /boot/loader.conf állományba beírjuk a hint.psm.0.flags="0x3000" sort. Ha ez nem segít, akkor a fentieknek megfelelően küldjünk be egy hibajelentést.
Az ACPI három (STR) állapotban képes a fizikai memória segítségével készenléti módba váltani, ezek az S1-S3, és egy állapotban használja a lemezt (STD), amelyet S4-nek hívnak. Az S5 neve a “szoftveres kikapcsolás”, ami egy olyan állapotot takar, amikor a rendszerünk áram alatt van, de még nem üzemel. Az S4BIOS állapot a BIOS segítségével a lemezre menti a rendszert, az S4OS állapotot pedig teljes egészében az operációs rendszer valósítja meg.
A rendszerünk által ismert készenléti módokat a sysctl hw.acpi paranccsal ellenőrizhetjük. Íme mindez egy Thinkpad esetén:
hw.acpi.supported_sleep_state: S3 S4 S5 hw.acpi.s4bios: 0
Ez azt jelenti, hogy az acpiconf -s
parancs kiadásával kipróbálhatjuk
az S3,
S4OS, és
S5 állapotokat. Ha az
s4bios
értéke egy
(1), akkor az
S4BIOS
támogatása helyett az S4
OS állapotot kapjuk.
A felfüggesztés és folytatás kipróbálása során kezdjük az S1 állapottal, már amennyiben az támogatott a rendszerünkön. Ez az állapot többnyire használható, mivel nem igényel túlságosan sok támogatást a meghajtó részéről. Eddig még senki sem implementálta az S2 állapotot, de ha ezt is tudja a rendszerünk, akkor az S1-hez hasonlót nyerünk vele. A következő próba az S3 állapoté. Ez a legmélyebb STR állapot, és a hardver megfelelő újraélesztéséhez rengeteg támogatás szükségeltetik a meghajtó részéről. Ha gondjaink lennének a rendszerünk felébresztésével, nyugodtan írjunk egy levelet a freebsd-acpi listára, ám a probléma gyors megoldódásában ne reménykedjünk, hiszen ehhez még temérdek meghajtón és hardveren kell tesztelni és kell dolgozni.
Felfüggesztés és folytatás esetén gyakori probléma, hogy sok eszközmeghajtó nem menti el, nem állítja vissza vagy éppen nem hozza újra rendesen működésbe az adott eszközön található firmware-t, a regisztereket vagy memóriát. Az okok felderítéséhez először érdemes a következőket kipróbálni:
# sysctl debug.bootverbose=1 # sysctl debug.acpi.suspend_bounce=1 # acpiconf -s 3
Ezzel a módszerrel tesztelni tudjuk az összes meghajtó felfüggesztési és folytatási rutinjait anélkül, hogy ténylegesen S3 állapotba helyeznénk az eszközt. Bizonyos esetekben ezzel könnyen elcsíphető a hiba (például a firmware állapotának elvesztése, watchdog time out, megállás nélküli újrapróbálkozások). A rendszer ilyenkor nem vált S3 állapotra, vagyis az eszköz nem kerül energiatakarékos állapotba, és eltérően a valós S3 állapottól továbbra is működik még abban az esetben is, amikor a szükséges felfüggesztési és folytatási rutinok teljesen hiányoznak.
Komolyabb esetben további segédeszközökre lesz szükségünk, vagyis soros portra és kábelre a soros vonali nyomkövetéshez, vagy Firewire portra és kábelre a dcons(4) használatához, valamint némi tapasztalatra a rendszermagon belüli hibakeresésben.
A problémát nagy mértékben
segíti különválasztani, ha
igyekszünk minél több meghajtót
kivenni a rendszermagból. Ha így javul a
helyzet, akkor már könnyen le lehet
szűkíteni arra a meghajtóra a kört,
aminek betöltésével esetleg gondok
akadhatnak. Általában ilyenek a bináris
meghajtók, mint például az
nvidia.ko, az X11
megjelenítésért felelős és az
USB eszközök meghajtói,
miközben az Ethernet eszközök remekül
szoktak működni. Ha különösebb gond
nélkül képesek vagyunk betölteni
és eltávolítani ezeket a
meghajtókat, akkor ezt a folyamatot
önállósítani is tudjuk úgy,
hogy az /etc/rc.suspend és
/etc/rc.resume szkriptekbe
beillesztjük az ehhez szükséges parancsokat.
Ezekben egyébként találunk is egy
megjegyzésbe rakott példát a
meghajtók betöltéséről
és eltávolításáról.
Ha az ébresztés után elszemetelődik
a képernyő tartalma, akkor állítsuk
át a hw.acpi.reset_video
változó értékét
nullára (0). Sokat segíthet
meg az is, ha a hw.acpi.sleep_delay
értékét csökkentjük vagy
növeljük.
Megpróbálhatjuk azt is, hogy elindítunk egy frissebb Linux disztribúciót ACPI támogatással és ugyanazon a hardveren kipróbáljuk az általa felkínált felfüggesztési és folytatási lehetőséget. Ha Linux alatt ez megbízhatóan működik, akkor nagy a valószínűsége, hogy ez FreeBSD alatt az egyik meghajtó hibájából fakadóan nem használható. Így fokozatosan le is tudjuk szűkíteni, hogy pontosan melyikkel lehet a gond, és ezzel a fejlesztők munkáját segítjük. Megjegyeznénk, hogy az ACPI-t karbantartó fejlesztők általában nem foglalkoznak más meghajtókkal (például hangkártya vagy ATA stb.), ezért az adott meghajtóval kapcsolatos hibáról javasolt értesíteni a freebsd-current listát és a meghajtóért felelős fejlesztőt is. Ha van egy kis kedvünk és időnk, mi magunk is belebiggyeszthetünk a meghajtóba néhány printf(3) függvényt annak kiderítésére, pontosan hol is fagy le a folytatási funkció.
Végül megpróbálkozhatunk az ACPI kikapcsolásával is, és áttérhetünk helyette az APM használatára. Ha az APM-mel működnek a készenléti állapotok, akkor érdemes inkább azzal dolgozni, különösen a régebbi (2000 előtti) hardverek esetében. A gyártóknak eltartott egy ideig, amíg rendes ACPI támogatást voltak képesek adni, ezért a régebbi hardvereknél inkább a BIOS-nak akadnak gondjai az ACPI-val.
A legtöbb rendszer olyankor akad meg, amikor sok megszakítás elveszik, vagy amikor éppen sok megszakítás érkezik egyszerre. A chipkészleteknek számos baja származik abból, hogy a BIOS milyen módon állítja be a rendszer indítása előtt a megszakításokat, mennyire helyes az APIC (MADT) táblázata és hogyan vezérli a Rendszervezérlő megszakítást (System Control Interrupt, SCI).
A megszakítás-viharok a vmstat -i parancs kimenetében szereplő elveszett megszakításokból azonosíthatók be, ahol keressünk rá az acpi0 sorra. Ha ez a számláló másodpercenként kettőnél többel növekszik, akkor a megszakításaink viharba keveredtek. Ha a rendszer látszólag lefagyott, próbáljuk meg előhívni a DDB-t (konzolban a CTRL+ALT+ESC) és gépeljük be, hogy show interrupts.
A megszakítási problémákkal kapcsolatban egyetlen reményünk az APIC támogatás kikapcsolása lehet a loader.conf állományban a hint.apic.0.disabled="1" sor hozzáadásával.
Az ACPI-vel kapcsolatos végzetes hibák viszonylag ritkák, és javításuk a legfontosabb. Ilyenkor az első teendőnk elkülöníteni a hiba reprodukálásának egyes lépéseit és (ha lehetséges) lekérni a hívási láncot. Kövessük az options DDB és a soros vonali konzol beállításához adott tanácsokat (lásd 26.6.5.3 Szakasz) vagy hozzunk létre egy dump(8) partíciót. A DDB-ben a hívási láncot a tr parancs segítségével kérhetjük le. Ha kézzel írjuk le láncot, akkor legalább az alsó öt (5) és a felső öt (5) sorát mindenképpen jegyezzük fel!
Ezután próbáljuk meg úgy
szűkíteni a probléma
lehetőségét, hogy az
ACPI használata nélkül
indítjuk a rendszert. Ha ezzel nincs semmi gond, akkor
a debug.acpi.disable
változó
értékének megfelelő
beállításával egyenként meg
tudjuk figyelni az ACPI alrendszer egyes
részeit. Ehhez példákat az acpi(4)
man oldalon találunk.
Először is próbáljuk meg a hw.acpi.disable_on_poweroff változó értékét 0-ra állítani a loader.conf(5) állományban. Ezzel távoltartjuk az ACPI alrendszert a rendszer leállítási folyamatától. Egyes rendszereknek valamilyen okból kifolyólag szükségük van itt az 1 (az alapértelmezett) értékre. Ez többnyire megoldja a problémát, amikor a rendszer váratlanul elindul a készenléti mód aktiválásákor vagy kikapcsoláskor.
Ha más gondjaink lennének az ACPI-val (dokkoló állomásunk van, egyes eszközöket nem vesz észre stb.), akkor természetesen erről is küldjünk egy leírást a levelezési listára. Azonban vegyük figyelembe, hogy egyes problémák a ACPI alrendszer eddig még nem implementált, befejezetlen részeihez kötődnek, ezért azok megoldása még várat magára. Kérünk mindenkit, hogy legyen türelemmel és álljon készen a kiküldött javítások tesztelésére!
A problémák leggyakoribb forrása, hogy a BIOS-gyártók rossz (vagy kifejezetten hibás!) bytekódokat adnak. Ez általában a következőhöz hasonló rendszerüzenetből derül ki:
ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\ (Node 0xc3f6d160), AE_NOT_FOUND
Az ilyen jellegű hibákat gyakran úgy
lehet orvosolni, ha a BIOS-unkat
frissítjük a legújabb verzióra. A
legtöbb ilyen üzenet teljesen ártalmatlan, de
ha vannak más problémáink is,
például az akkumulátor állapota nem
olvasható le, akkor először az
AML környékén
érdemes kutakodnunk. A bytekód, más
néven AML, az ASL
elnevezésű forrásnyelvből
származik. Az AML egy
DSDT néven ismert
táblázatban található meg. Az
ASL másolatát az
acpidump(8) paranccsal készíthetjük el.
Paraméterként egyaránt adjuk meg a
-t
(megmutatja a rögzített
táblák tartalmát) és
-d
(visszafejti az AML
kódokat az ASL nyelvére)
kapcsolókat. A felírás pontos
formátumát a A
nyomkövetési információk
beküldése című szakaszban
olvashatjuk.
Elsőként próbáljuk meg újrafordítani az így nyert ASL programot és keressünk benne hibákat. A figyelmeztetések általában nyugodtan figyelmen kívül hagyhatóak, azonban a hibák olyan implementációs hibákra utalnak, amelyek akadályozzák az ACPI helyes működését. Az ASL újrafordítását az alábbi paranccsal tudjuk elvégezni:
# iasl saját.asl
Végeredményben az a célunk, hogy az ACPI megfelelő működéséhez senkinek se kelljen hozzányúlnia semmihez. Azonban még mindig szükség van BIOS-gyártók által elkövetett gyakori hibák elkerülésének kifejlesztésére. A Microsoft értelmezője (acpi.sys és acpiec.sys) nem ellenőrzi szigorúan a szabvány szerinti megfelelést, ezért számos olyan BIOS-gyártó, akik csak Windows alatt tesztelik az ACPI implementációjukat, soha nem fogják kijavítani a ASL kódjukban ejtett hibáikat. Reménykedünk, hogy folyamatosan sikerül felderíteni és dokumentálni a Microsoft értelmezője által eltűrt szabványon kívüli viselkedést és leutánozni FreeBSD alatt is, hogy így ne kelljen a felhasználóknak kézzel a saját ASL forrásaikat javítgatni. Az ebből fakadó hibákat úgy tudjuk elkerülni és segíteni a fejlesztőknek azonosítani a hozzá társuló viselkedést, hogy magunk javítjuk az ASL-ben felfedezett hibákat. Ha ez beválik, akkor küldjük el a régi és új ASL közti diff(1)-et a fejlesztőknek, akik így majd az ACPI-CA-ban ki tudnak dolgozni egy megoldást a hibás viselkedésre, ezzel a javításunk szükségtelenné válik.
Most pedig következzenek a legismertebb hibaüzenetek, az okaik és javításuk:
Néhány AML úgy gondolja, hogy a világ csak a különböző Windows verziókból áll. A FreeBSD-nek megadható, hogy másik operációs rendszernek adja ki magát, és ezzel talán meg is szüntethető pár hiba. Ezt a legegyszerűbb úgy tudjuk megtenni, ha a /boot/loader.conf állományhoz hozzáfűzzük a hw.acpi.osname="Windows 2001" sort, vagy itt egy olyan karakterláncot adunk meg, amit az ASL forrásban láttunk.
Bizonyos módszerek a szabvány szerint
elvártaktól eltérően nem adnak
vissza explicit módon értéket. Mivel az
ACPI-CA ezt nem kezeli le, ezért a
FreeBSD részéről tartalmaz egy olyan
módosítást, amivel implicit módon
is vissza lehet adni értéket. Ha biztosak
akarunk lenni a visszaadni kívánt
értékben, akkor helyezzünk el a
megfelelő helyekre explicit Return
utasításokat. Az iasl a
-f
paraméterrel
kényszeríthető az ilyen
ASL források
lefordítására.
Miután módosítottuk a saját.asl állományunkat, így tudjuk lefordítani:
# iasl saját.asl
Az -f
kapcsoló
megadásával
kikényszeríthetjük az
AML létrehozását
még abban az esetben is, amikor hibákat
tartalmaz. Ügyeljünk rá, hogy bizonyos
hibákat (például a hiányzó
visszatérési értékeket) a
fordító magától
kikerül.
Az iasl alapértelmezett kimenete a DSDT.aml állomány. A /boot/loader.conf átírásával így tudjuk ezzel helyettesíteni a BIOS-unk hibás változatát (ami még mindig megtalálható a flash memóriában):
acpi_dsdt_load="YES" acpi_dsdt_name="/boot/DSDT.aml"
Ehhez ne felejtsük el a saját DSDT.aml állományunkat bemásolni a /boot könyvtárba.
Az ACPI meghajtója nagyon rugalmas nyomkövetési lehetőségekkel rendelkezik. Ennek révén ugyanúgy megadhatjuk a nyomonkövetni kívánt alrendszert, mint ahogy annak mélységét is. A nyomkövetni kívánt alrendszereket “rétegekként” adjuk meg, valamint ezek ACPI-CA komponensekre (ACPI_ALL_COMPONENTS) és ACPI hardvertámogatásra (ACPI_ALL_DRIVERS) bomlanak le. A nyomkövetéskor keletkező kimenet részletességét a “szintként” adjuk meg, ami az ACPI_LV_ERROR-tól (csak a hibák) ACPI_LV_VERBOSE-ig (minden) terjedhet. A “szint” itt egy bitmaszk, ezért szóközzel elválasztva egyszerre több beállítás megadható. Ha túlságosan sok üzenet érkezik a konzol üzenetpufferébe, akkor szükségünk lehet a soros konzol keresztüli nyomkövetésre is. Az összes szint és réteg az acpi(4) man oldalon található meg.
A nyomkövetés alapértelmezés szerint nem engedélyezett. Az engedélyezéséhez hozzá kell adnunk az options ACPI_DEBUG sort a rendszermagunk beállításait tartalmazó állományhoz, amennyiben a rendszermagba fordítjuk az ACPI támogatást. Ha az /etc/make.conf állományba írjuk bele az ACPI_DEBUG=1 sort, akkor azt globálisan engedélyezhetjük. Ha modulként használjuk, elegendő csak a következő módon újrafordítani az acpi.ko modult:
# cd /sys/modules/acpi/acpi && make clean && make ACPI_DEBUG=1
Telepítsük fel a acpi.ko modult a /boot/kernel könyvtárba és állítsuk be a számunkra megfelelő szintet és réteget a loader.conf állományban. Az alábbi példában engedélyezzük az összes ACPI-CA komponens és az összes ACPI hardvermeghajtó (processzor, LID stb.) nyomkövetését. Csak a hibaüzeneteket írja ki részletesen.
debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS" debug.acpi.level="ACPI_LV_ERROR"
Ha az általunk keresett információt egy adott esemény váltja ki (például egy felfüggesztés vagy egy ébresztés), akkor nem is fontos átírnunk hozzá a loader.conf állományt, hanem helyette a rendszer indítása után használjuk a sysctl parancsot a réteg és a szint megadására akkor, amikor a rendszert felkészítjük az eseményre. A sysctl változókat ugyanúgy nevezték el, mint a loader.conf állományban található beállításokat.
Az ACPI-ről az alábbi helyeken találunk részletesebb információkat:
Az ACPI levelezési lista archívuma: http://lists.freebsd.org/pipermail/freebsd-acpi/
A korábbi ACPI levelezési lista archívuma: http://home.jp.FreeBSD.org/mail-list/acpi-jp/
Az ACPI 2.0 specifikációja: http://acpi.info/spec.htm
A FreeBSD következő man oldalai: acpi(4), acpi_thermal(4), acpidump(8), iasl(8), acpidb(8)
A DSDT nyomkövetése (angolul). (Példának a Compaqot hozza fel, de általánosságban véve hasznos.)
A számítógép indulását és a rajta található operációs rendszer betöltődését “rendszerindítási folyamatnak” nevezzük, vagy egyszerűen csak “bootolásnak”. A FreeBSD rendszerindítási folyamata nagymértékű rugalmasságot kínál a rendszer indulását követő események vezérlését illetően, legyen az a számítógépre telepített különféle operációs rendszerek egyikének kiválasztása, vagy pedig ugyanazon operációs rendszer valamelyik változatának vagy rendszermagjának kiválasztása.
Ez a fejezet részleteiben bemutatja a rendszerindításhoz kapcsolódó konfigurációs opciókat, illetve a FreeBSD bootolásának testreszabhatóságát. Ebbe minden beleértendő, ami a FreeBSD rendszermag beindulása és az eszközök keresése során történik, majd az init(8) elindításával zárul. Ha nem vagyunk teljesen biztosak benne, ez pontosan mikor is következik be, figyeljük, amikor a szöveg színe fehérről szürkére vált.
A fejezet elolvasása során megismerjük:
milyen elemekből áll a FreeBSD rendszertöltő alrendszere, és ezek miként kapcsolódnak egymáshoz;
melyek azok a FreeBSD rendszerindításában résztvevő elemeknek átadható opciók, amelyekkel vezérelhető ez a folyamat;
a device.hints(5) alapjait.
Csak x86: Ez a fejezet kizárólag csak az Intel x86 típusú architektúráján futó FreeBSD rendszerindítási folyamatát mutatja be.
Az operációs rendszer elindítása a számítógép bekapcsolása után egy felettébb érdekes problémát vet fel. Definíció szerint a számítógép ugyanis egy lépést sem tud megtenni az operációs rendszer elindulása nélkül. Például nem tud programokat futtatni a lemezről. Eszerint ha a számítógépünk nem képes programokat futtatni a lemezről az operációs rendszer segítsége nélkül, viszont az operációs rendszer programjai a lemezen vannak, mégis hogyan képes elindulni maga az operációs rendszer?
Maga a probléma a Münchhausen báró kalandjai c. könyvben leírtakhoz hasonló. A történet szerint ugyanis a főszereplő egy mocsárban ragadt derék lovával, azonban sikerült kihúznia magát belőle a saját hajánál fogva. Ez a motívum vált a számítógépek hőskorában a rendszerbetöltés alapjává, vagyis ahogyan betöltötték az operációs rendszereket. (Ford.: ezt az angolban bootstrappingnek hívják, mivel a történet angol változata szerint a csizmáján (boot) emelkedett ki. Ebből alakult ki később az elterjedt bootolás szó is.)
Az x86-os konfigurációkon a BIOS (Basic Input/Output System, avagy “alapvető be- és kimeneti rendszer”) felelős az operációs rendszer betöltéséért. Ehhez a BIOS először megkeresi a merevlemez egy speciális helyén található Master Boot Record-ot (MBR). A BIOS elegendő tudással rendelkezik az MBR beolvasásához és lefuttatásához, és feltételezi, hogy az MBR majd elvégzi az operációs rendszer betöltéséhez szükséges további feladatokat, helyenként a BIOS közreműködésével.
Az MBR-ben található programkódot hívják általában boot managernek, kiváltképp abban az esetben, amikor az a felhasználóval is kommunikál. Ilyenkor a boot manager többnyire további kódot tartalmaz a lemez első sávján vagy az egyik állományrendszerben. (A boot managereket néha boot loadernek is nevezzük, de a FreeBSD-s terminológia ezt a kifejezést a rendszerindítás egy későbbi fokozatára használja.) Népszerűbb boot managerek: boot0 (avagy Boot Easy, a FreeBSD alapvető boot managere), GRUB, GAG és a LILO. (Ezek közül egyedül csak a boot0 fér el az MBR-ben.)
Amennyiben merevlemezeinken csupán egyetlen operációs rendszer foglal helyet, akkor egy szabványos MBR tökéletesen megfelelő. Ez az MBR megkeresi az első indítható (más néven aktív) slice-ot a lemezen, majd lefuttatja a benne található indítókódot az operációs rendszer többi részének felélesztéséhez. Az fdisk(8) által alapértelmezés szerint telepített MBR pontosan ilyen. Ennek alapja a /boot/mbr állomány.
Ha viszont több operációs rendszert is telepítettünk a lemezeinkre, akkor egy ettől eltérő boot managert érdemes használnunk, olyat, amely képes felsorolni a rendelkezésre álló operációs rendszereket, lehetővé téve, hogy választani lehessen az indításuk között. Ezek közül kettőről esik szó a következő alfejezetekben.
A FreeBSD rendszertöltő alrendszerének fennmaradó része három fokozatra bontható. Az első fokozatot az MBR indítja el, amely pontosan eleget tud ahhoz, hogy a számítógépet egy előre megadott állapotba hozza és lefuttassa rajta a második fokozatot. A második fokozat ennél már egy kicsivel többre képes, majd ezt követi a harmadik fokozat. Ez a fokozat zárja le végül az operációs rendszer betöltésének feladatát. A munka tehát ezen három fokozat között oszlik meg, mivel a PC-szabványok komoly korlátozásokat tesznek az első, illetve második fokozatban futtatható programok méretére. Ha így fűzzük össze a feladatokat, akkor a FreeBSD számára egy sokkal rugalmasabb betöltőt kapunk.
Ezután beindul a rendszermag (más néven kernel), és nekilát a számítógépben rendelkezésre álló hardvereszközök keresésének, majd előkészíti őket a használatra. Ahogy a rendszermag beindításának folyamata véget ért, az átadja a vezérlést az init(8) nevű felhasználói programnak, amely megbizonyosodik a lemezek használhatóságáról. Az init(8) ezt követően megkezdi az erőforrások felhasználói szintű konfigurálását: csatlakoztatja az állományrendszereket, beállítja a hálózati kártyá(ka)t, és elindítja mindazon programokat, amelyeknek egy FreeBSD rendszer indulásakor futnia kell.
Az MBR-ben található programkódot, avagy boot managert, sokszor csak a rendszerindítás nulladik fokozataként emlegetik. Ez az alfejezet a korábban említett két boot managert tárgyalja: a boot0-t és a LILO-t.
A boot0 boot manager: A FreeBSD telepítője vagy a boot0cfg(8) által kialakított MBR alapértelmezett állapotban a /boot/boot0 állományon alapszik. (A boot0 program nagyon egyszerű, hiszen az MBR-ben elhelyezhető kód csak 446 byte hosszúságú lehet, mert a végében még el kell férnie a slice-táblának és az 0x55AA azonosítónak.) Ha telepítettük a boot0-t és a lemezeinken több operációs rendszer is megtalálható, akkor a rendszerindítás során egy hasonló képet kell látnunk:
Más operációs rendszerek, különösen a Windows, telepítésük során felülírják a már meglevő MBR-t a sajátjukkal. Ha ez történne, vagy egyszerűen csak szeretnénk a meglevő MBR-t lecserélni a FreeBSD MBR-jével, adjuk ki a következő parancsot:
# fdisk -B -b /boot/boot0 eszköznév
ahol az eszköznév annak az eszköznek a neve, ahonnan a rendszert indítani szeretnénk, tehát például ad0 az első IDE-lemez esetén, vagy ad2 a második IDE-vezérlőn található első IDE-lemez esetén, illetve da0 az első SCSI-lemez esetén, és így tovább. Ha testre akarjuk szabni az MBR-t, használjuk a boot0cfg(8)-t.
A LILO boot manager: Ezen boot manager telepítéséhez és beállításához elsőként indítsuk el a Linuxot és vegyük hozzá az alábbi sort a rendszerünkben található /etc/lilo.conf konfigurációs állományhoz:
other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD
A fenti sablont kiegészítve, a linuxos
konvenciók szerint adjuk meg a FreeBSD elsődleges
partícióját és
meghajtóját úgy, hogy az
X-et átírjuk a
linuxos meghajtó betűjelére és az
Y-t átírjuk a Linux
elsődleges partíciójának
számára. Ha
SCSI-meghajtót használunk, a
/dev/hd részt is át
kell írnunk az előbbiek mellett
/dev/sd-re. A
loader=/boot/chain.b
sor elhagyható
abban az esetben, ha mind a két operációs
rendszer ugyanazon a meghajtón található.
Ha befejeztük a módosítást, futtassuk
le a /sbin/lilo -v parancsot a
változtatásaink életbe
léptetéséhez. Ezt
ellenőrizhetjük is a képernyőn
megjelenő üzenetek alapján.
Az első és a második fokozat fogalmilag ugyanannak a programnak a része, a lemezen ugyanott helyezkedik el. A tárbeli megszorítások miatt ugyan el kellett választani őket egymástól, de a telepítésük mindig egy helyre történik. A telepítő vagy a bsdlabel (lásd lentebb) használata során a /boot/boot nevű kombinált állományból másolódnak ki.
Az állományrendszereken kívül találhatóak, az aktív slice első sávjában, annak első szektorától kezdődően. Ez az a hely, ahol a boot0, illetve a többi boot manager is keresi a rendszerindítás folytatására alkalmas programot. A felhasznált szektorok száma könnyedén kideríthető a /boot/boot méretéből.
Legfeljebb 512 byte-os méreténél fogva a boot1 állomány nagyon egyszerű felépítésű, és éppen csak annyit tud a slice-ra vonatkozó információkat tároló FreeBSD bsdlabel-ről, hogy megtalálja a boot2-t és elindítsa.
A boot2 már egy kicsivel ügyesebb, és eléggé ismeri a FreeBSD állományrendszerét ahhoz, hogy megtaláljon rajta állományokat, valamint képes egy egyszerű felületet nyújtani a rendszermag vagy a betöltő megválasztásához.
Mivel a betöltő pedig már ennél is okosabb, és egy könnyen használható rendszerindítási konfigurációt tud a felhasználó számára nyújtani, ezért a boot2 általában ezt indítja el, de előtte közvetlenül a rendszermag futtatását végzi el.
Ha le kellene váltani a korábban telepített boot1 és boot2 fokozatokat, használjuk a bsdlabel(8)-t:
# bsdlabel -B lemezslice
ahol a lemezslice annak a lemeznek és slice-nak a kombinációja, ahonnan indítjuk a rendszerünket, például az első IDE-lemez első slice-a esetén ez az ad0s1.
A veszélyesen dedikált mód (Dangerously Dedicated Mode): Amikor a bsdlabel(8) meghívásakor csak a lemez nevét használjuk, például ad0-t, a parancs egy veszélyesen dedikált lemezt hoz létre, slice-ok nélkül! Szinte biztos, hogy nem ez az, amire szükségünk lenne, ezért mindig ellenőrizzük kiadása előtt a bsdlabel(8) parancsot!
A betöltő a három fokozatú rendszertöltés utolsó állomása. Az állományrendszerben /boot/loader néven találhatjuk meg.
A rendszertöltőt az egyszerű konfigurálhatóságot támogató, felhasználóbarát eszköznek tervezték, és könnyen megtanulható, beépített parancsokat használ, melyek mögött egy összetettebb parancsokat ismerő, erősebb értelmező áll.
Az inicializálás során a rendszertöltő megpróbálja megkeresni a konzolt, és a lemezek közül igyekszik megtalálni azt, amelyikről elindult a rendszer. A keresések eredményének megfelelően beállítja a változókat, majd elindul egy értelmező, ahol vagy szkriptből olvasva, vagy pedig interaktívan feldolgozásra kerülnek a parancsok.
A rendszertöltő ezt követően beolvassa a /boot/loader.rc állományt, az pedig alapértelmezés szerint feldolgozza a /boot/defaults/loader.conf állományt, ahol a változók értelmes kezdőértéket kapnak, valamint feldolgozza még a /boot/loader.conf állományt is, ahol a változók értékeit változtathatjuk meg. Miután ez lezajlott, a loader.rc a változók értékeinek megfelelően cselekszik, betöltve az ily módon kiválasztott rendszermagot és a hozzá választott modulokat.
Végezetül, a rendszertöltő beiktat egy, alapértelmezés szerint 10 másodperces várakozási szünetet, majd elindítja a rendszermagot, ha azt meg nem szakítjuk egy billentyű lenyomásával. Ha megszakítjuk ezt a várakozást, a rendszertöltő egy parancssort ad, amelyen keresztül egyszerű parancsokat adhatunk ki neki: állíthatjuk a változók értékeit, modulokat távolíthatunk el a memóriából, modulokat töltethetünk be, elindíthatjuk a rendszert vagy újraindíthatjuk a számítógépet.
Következzenek a leggyakrabban használt parancsok a rendszertöltőben. Az összes itt elérhető parancsot a loader(8) man oldalon találjuk meg.
Megkezdi a rendszermag betöltését, ha nem szakítjuk meg a várakozást másodpercekben megadott időtartam alatt. Ekkor egy visszaszámlálást láthatunk, ami az alapértelmezés szerint 10 másodperctől indul.
Amennyiben léteznek, a megadott opciókkal azonnal megkezdi a megadott rendszermag betöltését. A rendszermag paraméter csak abban az esetben adható meg, ha előtte kiadtunk egy unload parancsot, máskülönben a korábban betöltött rendszermaggal indul a rendszer.
Végigmegy a modulok ugyanazon automatikus konfigurációján, ahogy az a normális rendszerindítás során is történik. Ezen parancs használatának csak akkor van értelme, ha előtte az unload parancsot használjuk, megváltoztatunk egy-két változót, általában a kernel-t.
A /boot/loader.help állományban fellelhető súgóüzeneteket mutatja meg. Ha témakörnek indexet adunk meg, akkor az elérhető témakörök listáját kapjuk meg.
Feldolgozza a megnevezett állományt: beolvassa, majd sorról sorra értelmezi. Hiba esetén azonnal megállítja a feldolgozást.
-t
típus]
állománynévA név alapján betölti a rendszermagot, modult vagy az adott típusú állományt. Az állománynév után megadott további paraméterek az állománynak adódnak át.
-l
]
[elérési
útvonal]Kilistázza a megadott elérési
útvonalon található
állományokat, vagy ennek
hiányában a gyökér
tartalmát. Ha hozzátesszük a
-l
kapcsolót, az
állományok mérete is
látható válik.
-v
]Kilistázza az összes olyan eszközt,
ahonnan modulokat tölthetünk be. Amennyiben a
-v
kapcsolót is megadjuk,
további részleteket tudhatunk meg
róluk.
-v
]Kilistázza a betöltött modulokat. Ha
többet szeretnénk megtudni róluk, adjuk
meg a -v
kapcsolót.
Megmutatja a megadott állomány
tartalmát, minden LINES
számú sor után szünetet
tartva.
Azonnal újraindítja a számítógépet.
Beállítja a rendszertöltő környezeti változójának értékét.
Eltávolítja a memóriából az összes betöltött modult.
Íme néhány konkrét példa a rendszertöltő használatára:
Így indíthatjuk egyfelhasználós módban az általunk használt rendszermagot:
boot -s
Távolítsuk el a betöltött rendszermagot és a moduljait, és töltsük be helyettük a korábbi (vagy egy másik) rendszermagot:
unload load kernel.old
Itt használhatjuk a kernel.GENERIC nevet is, amely a telepítőlemezen található általános rendszermagra utal, vagy a kernel.old nevet, amely a korábban használt rendszermagot rejti (például amikor rendszermagot frissítettünk vagy készítettünk magunknak).
Megjegyzés: A következőképpen lehet betölteni a szokásos moduljainkat egy másik rendszermaggal:
unload set kernel="kernel.old" boot-conf
Egy rendszermag-konfigurációs szkript (automatizált szkript, amely ugyanazokat a beállításokat végzi el, amelyeket mi magunk tennénk akkor, amikor a rendszermagot indítjuk) betöltése:
load -t userconfig_script /boot/kernel.conf
A rendszertöltés során megjelenő rendszerüzenetek megjelenítése helyett egy sokkal megnyerőbb, látványosabb rendszerindítást tudunk elérni betöltő képernyők használatával. Egy ilyen képet egészen a konzolos bejelentkezésig, vagy az X felett futó valamelyik bejelentkező képernyő megjelenéséig láthatunk.
FreeBSD alatt alapvetően két típusú környezet létezik. Ezek közül az egyik a hagyományos virtuális konzolos parancssoros felület. Ekkor a rendszertöltés befejeződésekor egy szöveges parancssori bejelentkező promptot kapunk. A másik környezet az X11 által felkínált grafikus felület. Miután telepítettük az X11 szervert és valamelyik munkakörnyezetet, tehát például a GNOME, a KDE vagy az XFce környezetek valamelyikét, a startx paranccsal indíthatjuk el a grafikus felületet.
Némely felhasználók a megszokott szöveges bejelentkezés helyett is inkább valamelyik X11 alapú grafikus bejelentkezést szeretnék használni. A különböző bejelentkező képernyők, mint amilyen az Xorg esetén az XDM, a GNOME esetén a gdm, vagy a KDE esetén a kdm (illetve a Portgyűjteményből származó egyéb megoldások) alapvetően a konzolos bejelentkezés helyett nyújtanak egy grafikus bejelentkező felületet. Ilyenkor a sikeres bejelentkezést követően a felhasználó közvetlenül egy grafikus környezetbe kerül.
A parancssoros felület esetén a rendszertöltő képernyő elrejti az összes rendszerüzenetet és a rendszer indításakor futtatott programok üzeneteit. Az X11 használata esetén azonban a felhasználók ezzel együtt már a többi, alapértelmezés szerint grafikus felülettel rendelkező rendszerhez (Microsoft Windows vagy más nem-UNIX operációs rendszer) hasonló élményt nyernek.
A FreeBSD csak BMP (.bmp) vagy ZSoft PCX formátumú, 256 színű rendszerbetöltő képek megjelenítését támogatja. Emellett szabványos VGA kártyákon csak akkor fog működni, ha a kép 320x200 vagy annál kisebb felbontású.
Nagyobb méretű képek esetén, egészen az 1024x768-as felbontásig, a FreeBSD VESA támogatására lesz szükségünk. Ezt vagy a rendszer indításakor a VESA modul betöltésével engedélyezhetjük, vagy ha a rendszermag konfigurációs állományában megadjuk a VESA sort és készítünk egy saját rendszermagot (lásd 8 fejezet). A VESA támogatáson keresztül a felhasználók a teljes képernyőt betöltő rendszerbetöltő képeket is meg tudnak így jeleníteni.
A rendszerbetöltő képernyő a rendszer indítása közben bármikor tetszőlegesen kikapcsolható egy tetszőleges billentyű lenyomásával.
A megadott betöltőképernyő alapértelmezés szerint a képernyővédő szerepét is betölti az X11 felületén kívül. Ha tehát egy ideig nem használjuk a számítógépünket, akkor a képernyő átvált a betöltőképre és folyamatosan változtatni kezdi az intenzitását, a nagyon világosból a nagyon sötétbe, majd újrakezdi. Az alapértelmezett képernyővédő az /etc/rc.conf állományban a saver= sor megadásával állítható át. Ehhez a beállításhoz több különböző beépített képernyővédő tartozik, ezek teljes listáját a splash(4) man oldalon olvashatjuk. Ezek közül az alapértelmezett a “warp”. Az /etc/rc.conf állományban megadható saver= csak a virtuális konzolokra vonatkozik, az X11 bejelentkező képernyőire semmilyen hatással sincs.
A rendszerbetöltő néhány üzenete, valamint a rendszerindítási opciókat tartalmazó menü és a hozzá tartozó visszaszámlálás még a rendszerbetöltő képernyő használata során is meg fog jelenni.
A http://artwork.freebsdgr.org címen találhatunk néhány ilyen betöltőképernyőt. A sysutils/bsd-splash-changer port telepítésével pedig a rendszer egyes indításakor egy előre megadott gyűjteményből tudunk véletlenszerűen választani egyet.
A betöltőképet tartalmazó (.bmp vagy .pcx kiterjesztésű) állományt a rendszerindító partícióra, például a /boot könyvtárba kell tennünk.
A normál (256 szín, legfeljebb 320x200-as felbontású) képek esetén a következő sorokat adjuk hozzá a /boot/loader.conf állományhoz:
splash_bmp_load="YES" bitmap_load="YES" bitmap_name="/boot/betöltőkép.bmp"
Nagyobb felbontás esetén (legfeljebb 1024x768-as méretig) pedig a /boot/loader.conf állománynak a következőket kell tartalmaznia:
vesa_load="YES" splash_bmp_load="YES" bitmap_load="YES" bitmap_name="/boot/betöltőkép.bmp"
Az iménti példában feltételeztük, hogy a /boot/betöltőkép.bmp állományt használjuk betöltőképként. Amikor azonban PCX állományokat akarunk használni, a következő sorokat kell megadnunk, a felbontástól függően a vesa_load="YES" sorral kiegészítve:
splash_pcx_load="YES" bitmap_load="YES" bitmap_name="/boot/betöltőkép.pcx"
Természetesen a kép neve sem csak “betöltőkép” lehet. Tetszőlegesen elnevezhetjük, egyedül csak arra kell ügyelünk, hogy BMP vagy PCX formátumú legyen: splash_640x400.bmp vagy például blue_wave.pcx.
További érdekes beállítások a loader.conf állományból:
Ennek megadásakor nem jelenik meg a rendszerindítási lehetőségeket felkínáló menü, de a visszaszámlálás megmarad. Hiába tiltjuk le a menüt, ilyenkor továbbra is választanunk kell a lehetőségek közül.
Ezzel a beállítással a menüben látható “FreeBSD” feliratot cserélhetjük le a korábbi kiadásokban szereplő színes démonos emblémára.
Ahogy sikerült betölteni (a szokásos módon) a rendszertöltővel vagy (a rendszertöltő átugrásával) a boot2 segítségével, a rendszermag megvizsgálja az esetlegesen átvett rendszerindítási paramétereket, és azoknak megfelelően viselkedik.
A rendszermag leginkább használt paraméterei:
-a
a rendszermag inicializálása során rákérdez a gyökér állományrendszerként csatlakoztatandó eszközre.
-C
a rendszer indítása CD-ről.
-c
a UserConfig, a rendszerindítás során használt rendszermag-beállító, futtatása.
-s
a rendszer indítása egyfelhasználós módban.
-v
részletesebb információk megjelenítése a rendszermag indítása során.
Megjegyzés: Ezeken kívül még számos paraméter létezik, a teljes listát a boot(8) man oldalon találhatjuk meg.
Megjegyzés: Ez a lehetőség csak a FreeBSD 5.0 vagy annál későbbi verzióiban jelenik meg.
A rendszerindítás kezdeti szakaszában a loader(8) beolvassa a device.hints(5) állományt. Ebben az állományban tárolódnak a gyakran csak “eszköz útmutatóknak” nevezett változók, amelyek a rendszermag számára nyújtanak hasznos információkat az indulás során. Ezeket az “útmutatókat” az eszközmeghajtók hasznosítják az általuk ismert eszközök beállítása során.
Az eszközökre vonatkozó ilyen jellegű útmutatások a harmadik fázisban megjelenő parancssorban is megadhatóak. A változókat a set (beállít) parancs segítségével tudjuk felvenni, míg az unset (eltávolít) paranccsal tudunk törölni, valamint a show (megmutat) paranccsal megjeleníteni az értéküket. Sőt, ezen a ponton a /boot/device.hints állománnyal már beállított változókat is felülbírálhatjuk. A rendszerindító parancssorában elvégzett módosítások viszont nem fognak megmaradni, és a következő rendszerindítás alkalmával elvesznek.
Ahogy a rendszerünk használatra kész állapotba került, a kenv(1) parancs használható a változók értékeinek listázásához.
A /boot/device.hints állományban soronként egy-egy változót tudunk megadni, illetve a kettőskereszttel (“#”) bevezetve megjegyzéseket illeszthetünk bele. A sorok szerkezete az alábbi:
útmutató.meghajtó.egység.kulcsszó="érték"
A harmadik fázisban pedig így adhatjuk meg:
set útmutató.meghajtó.egység.kulcsszó=érték
Itt a meghajtó az eszközmeghajtó neve, az egység az eszközmeghajtó által kezelt egyik egység sorszáma, a kulcsszó pedig az útmutatáshoz tartozó kulcsszó. Ez a következők egyike lehet:
at: az útmutatás az eszköz által használt buszra vonatkozik.
port: az útmutatás az eszköz által használt I/O-címre vonatkozik.
irq: az útmutatás az eszköz által használt megszakítás sorszámára vonatkozik.
drq: az útmutatás az eszköz által használt DMA-csatorna sorszámára vonatkozik.
maddr: az útmutatás az eszköz által használt fizikai memóriaterület kezdőcímére vonatkozik.
flags: az eszközhöz tartozó bitek beállítása.
disabled: ha az értéke 1, akkor az adott eszköz használatát letiltjuk.
Az eszközmeghajtók elfogadhatnak (vagy várhatnak) olyan útmutatásokat is, amelyek itt nem szerepelnek, ezért mindegyik esetében érdemes áttekinteni a hozzájuk tartozó man oldalt. Bővebb információért lásd a device.hints(5), kenv(1), loader.conf(5) és loader(8) man oldalakat.
Miután a rendszermag sikeresen elindult, átadja a vezérlést az init(8) felhasználói folyamatnak, amely vagy az /sbin/init, vagy pedig a rendszerindítóban megadott init_path változó által mutatott program.
Az automatikus újraindulási folyamat gondoskodik róla, hogy az indulást követően rendelkezésre álló állományrendszerek ne legyenek sérültek. Amennyiben mégis sérültek és a fsck(8) nem tudja megjavítani őket, az init(8) a rendszert egyfelhasználós módba állítja, ahol a rendszergazdának kell közvetlenül megoldania a fennálló problémákat.
Ezt a módot az automatikus
újraindítási folyamat során
érhetjük el, vagy akkor, ha a rendszert a
-s
kapcsolóval indítjuk, esetleg
a rendszerindítóban beállítjuk a
boot_single változót.
Ezt a módot többfelhasználós
módban, a shutdown(8)
hívásával is aktiválhatjuk, ha nem
adjuk meg az újraindítást
(-r
) vagy leállítást
(-h
) kérő opciók
egyikét sem.
Ha az /etc/ttys állományban a console értékét insecure (nem biztonságos)ra állítjuk, a rendszer az egyfelhasználós módba lépés előtt kérni fogja a root felhasználó jelszavát.
Példa 12-3. Nem biztonságos konzol megadása az /etc/ttys-ben
# name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off insecure
Megjegyzés: Az insecure (nem biztonságos) konzol az, ahol nem tekintjük megbízhatónak a rendszerkonzol fizikai biztonságát, és biztosak akarunk lenni benne, hogy csak az képes használni a rendszert egyfelhasználós módban, aki ismeri a root felhasználó jelszavát. Ez tehát nem arra utal, hogy magát a konzolt akarjuk nem biztonságos módban működtetni. Szóval, ha biztonságot akarunk, az insecure-t válasszuk, ne pedig a secure-t.
Ha az init(8) mindent rendben talál, vagy ha a felhasználó kilépett az egyfelhasználós módból, a rendszer többfelhasználós módba lép át, ahol megkezdi az erőforrások konfigurálását.
Az erőforrásokat konfiguráló alrendszer beolvassa a folyamathoz kapcsolódó változók alapértelmezett értékeit az /etc/defaults/rc.conf állományból, majd módosítja őket a rendszer egyéni beállításai szerint, amit a /etc/rc.conf állományból olvas ki. Ezután elvégzi az /etc/fstab alapján az állományrendszerek csatlakoztatását, elindítja a hálózati szolgáltatásokat, egyéb rendszerdaemonokat, és végezetül lefuttatja a telepített csomagok indítószkriptjeit.
Az erőforrásokat konfiguráló alrendszerről magáról az rc(8) man oldalon, valamint az érintett szkriptek tanulmányozásával tudhatunk meg többet.
A shutdown(8) paranccsal vezérelt leállítás során az init(8) megpróbálja lefuttatni az /etc/rc.shutdown szkriptet, majd ezt követően TERM (befejeztetés) jelzést küld az aktuálisan futó folyamatoknak, kis idő múlva pedig KILL (leállítás) jelzést azoknak, amelyek még nem álltak le addig a pillanatig.
Azokon az architektúrákon és rendszereken, ahol elérhető a fejlett energiagazdálkodás támogatása, a FreeBSD-t a shutdown -p now paranccsal állíthatjuk le, amit közvetlenül a számítógép automatikus kikapcsolása követ. A FreeBSD-s rendszer újraindításához egyszerűen csak adjuk ki a shutdown -r now parancsot. Fontos tudni, hogy alapértelmezés szerint a shutdown(8) használatához root felhasználónak, vagy legalább az operator csoport tagjának kell lennünk. Ezekre a feladatokra egyébként a halt(8) és reboot(8) parancsok is használhatóak. Alkalmazásukról bővebben a hozzájuk, valamint a shutdown(8)-hoz tartozó man oldalakon találhatunk bővebben információkat.
Megjegyzés: Az energiagazdálkodás használatához a rendszermagnak beépítve vagy a megfelelő modul betöltésével bizosítania kell az acpi(4) támogatást.
A FreeBSD lehetővé teszi, hogy egyazon időben egyszerre több felhasználó is dolgozhasson a számítógépen. Közülük nyilvánvalóan csak egy képes előtte ülni [6], de rajta kívül még sok más felhasználó is be tud jelentkezni a munkájához hálózaton keresztül. A rendszer használatához minden egyes felhasználónak hozzáféréssel kell rendelkeznie.
A fejezet elolvasása során megismerjük:
a FreeBSD rendszerben megtalálható különféle felhasználói hozzáférések közti különbségeket;
hogyan készítsünk új felhasználói hozzáféréseket;
hogyan töröljünk felhasználói hozzáféréseket;
hogyan változtassuk meg a hozzáférés adatait, mint például a felhasználók teljes nevét vagy a választott parancsértelmezőjét;
hogyan korlátozzuk az egyes hozzáféréseket vagy hozzáférések egy csoportját az olyan erőforrások, mint például a memória vagy a processzoridő védelmében;
hogyan használjuk csoportokat a hozzáférések karbantartásának megkönnyítésére.
A fejezet elolvasásához ajánlott:
a UNIX és a FreeBSD alapjainak ismerete (3 fejezet).
A rendszert bármilyen fajta módon csak hozzáféréseken keresztül tudjuk elérni, minden programot felhasználók futtatnak, ezért a felhasználók és hozzáférések kezelése a FreeBSD rendszerek szerves része.
A FreeBSD rendszerben minden hozzáférés rendelkezik bizonyos információkkal az azonosításhoz.
A felhasználónevet a login: felirat megjelenésekor kell megadni. A felhasználók neveinek egyedinek kell lenni a számítógépen, tehát két felhasználó nem használhatja ugyanazt a nevet. A passwd(5) man oldalon megtalálhatjuk azokat a szabályokat, amelyek az érvényes felhasználónevek létrehozására vonatkoznak. Általánosságban elmondható, hogy a felhasználóneveknek kisbetűseknek kell lenniük és legfeljebb nyolc karakterből állhatnak.
Minden hozzáféréshez tartozik egy jelszó is. Ez a jelszó lehet akár üres is, ebben az esetben nincs szükség jelszóra a hozzáféréshez. Ez viszont többnyire nagyon rossz ötlet: minden hozzáférést erősen ajánlott jelszóval védeni.
Az UID egy szám, amely hagyományosan 0-tól 65535-ig terjed [7], és a felhasználó rendszeren belüli egyedi azonosítására használatos. A FreeBSD az UID-ot a felhasználók azonosítására használja — bármelyik parancs, amely lehetővé teszi felhasználónevek megadását, át fogja alakítani UID-dé, mielőtt ténylegesen dolgozni kezdene vele. Ez tehát azt jelenti, hogy több hozzáférésünk is lehet több különböző felhasználónévvel, de ugyanazzal az UID-del. Legalább is a FreeBSD ezeket egyetlen felhasználónak tekinti, de nem is valószínű, hogy ilyenre valaha szükségünk is lenne.
A csoportazonosító (Group ID, GID) egy szám, amely általában 0-tól 65535-ig terjed [7], és azt az elsődleges csoportot azonosítja be egyedileg, amelyikhez a felhasználó tartozik. A csoportok segítségével az erőforrások hozzáférésének vezérlését tudjuk megoldani a felhasználók GID-jével az UID-dek helyett. Ezzel jelentős mértékben csökkenthető egyes konfigurációs állományok mérete. Egy felhasználó egyszerre több csoport tagja is lehet.
A bejelentkezési osztályok a csoportszervezés kibővítését célozzák meg, további rugalmasságot nyújtanak, amikor a rendszert az egyes felhasználók igényeihez szabjuk.
Alapértelmezés szerint a FreeBSD nem kényszeríti rá a felhasználókat, hogy rendszeresen megváltoztassák a jelszavukat. Ezt felhasználónként kikényszeríthetjük, és így az egyes, vagy akár az összes felhasználót kötelezhetjük az adott időközönként jelszóváltásra.
A FreeBSD-ben alapértelmezés szerint nem évülnek el a hozzáférések. Ha azonban olyan hozzáféréseket kell létrehoznunk, melyeknek korlátoznunk kell az élettartamukat, mint például egy iskolában a diákok számára, akkor ilyenkor meg tudjuk adni a lejáratuk idejét. Ezen dátum után a hozzáféréssel már nem lehet bejelentkezni a rendszerbe, viszont a hozzá tartozó könyvtárban tárolt állományok továbbra is megmaradnak.
Míg a felhasználónév tökéletesen azonosítja a FreeBSD számára a hozzáférést, nem feltétlenül tükrözi a felhasználó valódi nevét. Ezt az információt is meg lehet adni a hozzáféréshez.
A felhasználói könyvtár a rendszerben található azon könyvtár teljes elérési útvonala, ahová a felhasználó a bejelentkezést követően kerül. Elterjedt megszokás, hogy az összes felhasználó könyvtárát a /home/felhasználónév vagy a /usr/home/felhasználónév könyvtárba teszik. A felhasználók ezekben a könyvtárakban tárolják a személyes állományaikat, és tetszőleges könyvtárakat hozhatnak létre benne.
A parancsértelmező biztosítja azt az alapértelmezett környezetet, amelyben a felhasználó kapcsolatba tud lépni a rendszerrel. Többféle parancsértelmező is akad, és a tapasztaltabb felhasználók ragaszkodnak is némelyikükhöz, ami gyakran látható is a hozzáférésük beállításaiban.
Három fő típusa van a hozzáféréseknek: az adminisztrátori, a rendszer- és a felhasználói hozzáférések. Az adminisztátori hozzáférés, amelyre gyakran rootként hivatkoznak, használatos a rendszer karbantartására, és semmilyen korlátozás nem érvényes rá. A rendszerhozzáférések szolgáltatásokat futtatnak. Végezetül a felhasználói hozzáféréseket használják a valódi emberek, akik bejelentkeznek, leveleket olvasnak és így tovább.
Az adminisztátori hozzáférés, amelyet általában csak rootnak nevezünk, a rendszeradminisztrációs feladatok elvégzéséhez van igazítva, és nem ajánlott az olyan hétköznapi tevékenységek elvégzéséhez, mint például a levelek olvasása és írása, a rendszer bejárása vagy a programozás.
Ezért az adminisztrátor, eltérően az átlagos felhasználói hozzáférésektől, képes mindenféle határok nélkül tevékenykedni, és az adminisztrátori hozzáférés helytelen használata látványos katasztrófákat idézhet elő. A felhasználói hozzáférések képtelenek merő véletlenségből tönkretenni a rendszert, ezért általánosságban véve az a legjobb, ha egyszerű felhasználói hozzáféréseket használunk, amint módunk van rá, hacsak nincs szükségünk kifejezetten különleges jogosultságokra.
Minden esetben érdemes alaposan megfontolni az adminisztrátorként kiadott parancsokat, mivel egyetlen hiányzó szóköz vagy más egyéb karakter helyrehozhatatlan károkat okozhat a rendszerben.
Ezért, ha még nem tettük volna meg korábban, legyen az első dolgunk a fejezet elolvasása után, hogy létrehozunk egy kiemelt jogosultságokkal nem rendelkező felhasználót saját magunk számára a hétköznapi feladatok lebonyolítására. Ez ugyanúgy vonatkozik a többfelhasználós és az egyfelhasználós módban futó rendszerekre is. A fejezet egy későbbi részében leírjuk, hogyan lehet további hozzáféréseket létrehozni, és hogyan kell váltani egy mezei felhasználó és az adminisztrátor hozzáférése között.
A rendszer általi hozzáférések azok, amelyek olyan szolgáltatások futtatásáért felelősek, mint például a DNS, a levelezés, a webszerverek és így tovább. Ennek oka a biztonság: ha minden szolgáltatást adminisztrátorként futtatnánk, bármit meg tudnának tenni a rendszerben.
Ilyen rendszerfelhasználók a daemon, operator, bind (a névfeloldáshoz), news, és a www.
A nobody (“senki”) egy általános jogosultságok nélküli rendszerfelhasználó. Mindazonáltal nem szabad elfelejtenünk, hogy minél több szolgáltatást bízunk a nobody-ra, annál több állomány és program kerül vele kapcsolatba, ennélfogva annál erősebbé válik a rendszer számára ez a felhasználó.
A felhasználói hozzáférések a valós felhasználók elsődleges eszközei a rendszer felé, és ezek a hozzáférések szigetelik el a felhasználókat és a környezeteket, megakadályozva, hogy a felhasználók kárt okozzanak akár a rendszerben, akár egymásnak, valamint lehetővé teszik a felhasználók számára a környezeteik testreszabását anélkül, hogy a többiekét módosítani kellene.
Minden olyan személynek, aki hozzá akar férni a rendszerünkhöz, rendelkeznie kell felhasználói azonosítóval. Ezáltal meg tudjuk állapítani, ki mivel foglalkozik éppen a rendszerben, és meg tudjuk akadályozni, hogy a felhasználók elérjék egymás beállításait, olvassák egymás leveleit és így tovább.
Minden felhasználó alakítani tudja a saját környezetét, és ezzel mintegy berendezkedik a rendszerünkben, különféle parancsértelmezők, szövegszerkesztők, billentyű-hozzárendelések és nyelvek használatával.
Egy UNIX-os környezetben több különböző parancs közül választhatunk a felhasználói hozzáférések módosításakor. A legáltalánosabb parancsokat az alábbiakban foglaljuk össze, amit ezután a használatukat részletesebben bemutató példák követnek.
Parancs | Leírás |
---|---|
adduser(8) | az új felhasználók felvételére ajánlott parancssoros alkalmazás |
rmuser(8) | a felhasználók eltávolítására ajánlott parancssoros alkalmazás |
chpass(1) | rugalmas eszköz a felhasználói adatbázis információinak megváltoztatására |
passwd(1) | egy egyszerű parancssoros segédprogram a felhasználói jelszavak megváltoztatásához |
pw(8) | egy erőteljes és rugalmas segédeszköz a felhasználói hozzáférések teljeskörű módosításához |
Az adduser(8) a felhasználók hozzáadására használható egyszerű program. Bejegyzéseket hoz létre a rendszer passwd és group állományaiban. Ezen kívül még létrehozza az új felhasználó könyvtárát is, odamásolja az alapértelmezett konfigurációs állományokat a /usr/share/skel könyvtárból (ezek a felhasználóknál ponttal kezdődően jelennek meg, de az említett könyvtárban “dot” előtaggal szerepelnek), és opcionálisan küld egy üdvözlőlevelet az újdonsült felhasználónak.
Példa 13-1. Felhasználó hozzáadása a FreeBSD-ben
# adduser Username: jantyik Full name: Jantyik Zsolt Uid (Leave empty for default): Login group [jantyik]: Login group is jantyik. Invite jantyik into other groups? []: wheel Login class [default]: Shell (sh csh tcsh zsh nologin) [sh]: zsh Home directory [/home/jantyik]: Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: Enter password again: Lock out the account after creation? [no]: Username : jantyik Password : **** Full Name : Jantyik Zsolt Uid : 1001 Class : Groups : jantyik wheel Home : /home/jantyik Shell : /usr/local/bin/zsh Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (jantyik) to the user database. Add another user? (yes/no): no Goodbye! #
Megjegyzés: A jelszó a beírás során egyáltalán nem jelenik meg, még csillagokat sem láthatunk a karakterek helyén. Ezért vigyázzunk, nehogy elgépeljük véletlenül a jelszót!
Az rmuser(8) használható a felhasználók teljes eltávolítására a rendszerből. Az rmuser(8) az alábbi lépéseket hajtja végre:
Eltávolítja a felhasználó crontab(1) bejegyzéseit (amennyiben léteznek).
Eltávolítja az at(1) felhasználóhoz tartozó munkáit.
Leállítja a felhasználó által birtokolt összes futó programot.
Eltávolítja a felhasználót a rendszer helyi jelszó állományából.
Eltávolítja a felhasználó könyvtárát (amennyiben az a felhasználó birtokában van).
Eltávolítja a felhasználóhoz tartozó beérkező leveleket tartalmazó állományt a /var/mail könyvtárból.
Eltávolítja a felhasználó tulajdonában levő összes állományt az olyan ideiglenes tárhelyekről, mint például a /tmp könyvtár.
Végezetül eltávolítja a felhasználó nevét az összes olyan csoportból, amelyhez az /etc/group szerint tartozik.
Megjegyzés: Ha menet közben egy csoport üressé válik, és a csoport neve megegyezik a felhasználó nevével, a csoport is eltávolításra kerül. Ez kiegészíti az adduser(8) eszközzel létrehozott felhasználónkénti egyedi csoportokat.
A rmuser(8) nem használható adminisztrátori hozzáférések törlésére, mivel az szinte majdnem mindig a teljes összeomlást vonja maga után.
Alapértelmezés szerint interaktív módban működik, melynek során megpróbál megbizonyosodni róla, hogy tényleg a megfelelő dolgot cselekedjük.
Példa 13-2. rmuser Hozzáférések interaktív eltávolítása
# rmuser jantyik Matching password entry: jantyik:*:1001:1001::0:0:Jantyik Zsolt:/home/jantyik:/usr/local/bin/zsh Is this the entry you wish to remove? y Remove user's home directory (/home/jantyik)? y Updating password file, updating databases, done. Updating group file: trusted (removing group jantyik -- personal group is empty) done. Removing user's incoming mail file /var/mail/jantyik: done. Removing files belonging to jantyik from /tmp: done. Removing files belonging to jantyik from /var/tmp: done. Removing files belonging to jantyik from /var/tmp/vi.recover: done. #
A chpass(1) segítségével meg tudjuk változtatni a felhasználói adatbázisban található információkat, mint például a jelszavakat, parancsértelmezőket és a személyes adatokat.
Csak a rendszeradminisztrátoroknak, mint például magának az adminisztrátornak, szabad megváltoztatnia a felhasználók adatait a chpass(1) programmal.
Amikor az opcionálisan megadható felhasználói névtől eltekintve nem adunk át neki paramétereket, a chpass(1) egy szövegszerkesztőben megnyitja az érintett felhasználó adatait. Miután kiléptünk belőle, a felhasználói adatbázist a megváltoztatott adatoknak megfelelően frissíti.
Megjegyzés: Ha nem adminisztrátorként hívjuk meg, akkor a rendszer kérni fogja a jelszavunkat, miután kiléptünk a szövegszerkesztőből.
Példa 13-3. A chpass interaktív használata adminisztrátorként
# A jantyik nevű felhasználó adatainak módosítása. Login: jantyik Password: * Uid [#]: 1001 Gid [# or name]: 1001 Change [month day year]: Expire [month day year]: Class: Home directory: /home/jantyik Shell: /usr/local/bin/zsh Full Name: Jantyik Zsolt Office Location: Office Phone: Home Phone: Other information:
Egy átlagos felhasználó a bemutatott adatoknak csak igen kis részét képes módosítani, és azokat is csak saját maga számára.
Példa 13-4. A chpass interaktív használata normál felhasználóként
# A jantyik nevű felhasználó adatainak megváltoztatása. Shell: /usr/local/bin/zsh Full Name: Jantyik Zsolt Office Location: Office Phone: Home Phone: Other information:
Megjegyzés: A chfn(1) és chsh(1) parancsok csupán linkek a chpass(1) parancsra, akárcsak a ypchpass(1), ypchfn(1) és az ypchsh(1). A NIS támogatása teljesen magától működik, ezért az yp előtag használata nem kötelező. Ha ez nem érthető, nem kell megijedni, a NIS-t majd a 29 fejezetben bemutatjuk.
Felhasználóként a saját jelszavunkat, adminisztrátorként pedig bármelyik felhasználó jelszavát a passwd(1) segítségével váloztathatjuk meg a megszokott módon.
Megjegyzés: A véletlen balesetek és az illetéktelen változtatások ellen védelmet nyújt, hogy az eredeti jelszót is meg kell adnunk az új jelszó beállításához.
Példa 13-5. A jelszavunk megváltoztatása
% passwd Changing local password for jantyik. Old password: New password: Retype new password: passwd: updating the database... passwd: done
Példa 13-6. Egy másik felhasználó jelszavának megváltoztatása adminisztrátorként
# passwd jantyik Changing local password for jantyik. New password: Retype new password: passwd: updating the database... passwd: done
Megjegyzés: Ahogy a chpass(1), az yppasswd(1) is csak egy link a passwd(1) parancsra, így a NIS mind a két megadási módban működik.
A pw(8) egy olyan parancssori segédprogram, amellyel felhasználókat és csoportokat tudunk létrehozni, törölni, módosítani és megjeleníteni. Ez tulajdonképpen a rendszer felhasználókat és csoportokat tároló állományainak egyfajta kezelőfelülete. A pw(8) kiválóan paraméterezhető, aminek köszönhetően remekül kiaknázható tudása a különféle parancsértelmezők szkriptjeiben, habár a kezdő felhasználók nehézkesebbnek érezhetik a kezelését a korábban mutatott parancsokhoz képest.
Ha már vannak felhasználóink, gyakran szóba kerülhet esetükben a rendszer használatának korlátozása. A FreeBSD rengeteg módon engedi korlátozni a rendszergazdának az egyénenként használható erőforrások mennyiségét a rendszerben. Ezek a korlátok két részre oszthatóak: a lemezkvótákra és egyéb erőforráskorlátokra.
A lemezkvóták a felhasználók lemezhasználatát korlátozzák, és lehetővé teszik, hogy állandó újraszámolás nélkül, gyorsan ellenőrizni tudjuk ennek mértékét. A kvótákat a 18.15 Szakaszban részletezzük.
A többi erőforrás korlátozása magában foglalja a processzoridő, memória és minden olyan erőforrás behatárolását, amihez a felhasználó csak hozzá tud férni. Ezeket bejelentkezési osztályokon keresztül határozzuk meg, ezekről esik itt most szó.
A bejelentkezési osztályokat az /etc/login.conf állományban adhatjuk meg. Ennek pontos ismertetése nem tárgya ennek a szakasznak, de ezt megtalálhatjuk a login.conf(5) man oldalon. Elegendő csak annyit mondanunk, hogy minden felhasználóhoz tartozik egy bejelentkezési osztály (alapértelmezés szerint a default nevű), és minden egyes bejelentkezési osztályhoz tulajdonságok egy halmaza társul. Ezek a bejelentkezési tulajdonságok név=érték párosokból állnak, ahol név egy jól ismert azonosító, illetve az érték egy tetszőleges sztring, melyet a nevétől függő módon dolgozunk fel. A bejelentkezési osztályok és tulajdonságok beállítása eléggé magától értetődő, és a login.conf(5) man oldal is jól leírja.
Megjegyzés: A rendszer általában nem magát az /etc/login.conf állományban található beállításokat olvassa be, hanem az /etc/login.conf.db állományt, amiben gyorsabban lehet keresni. Az /etc/login.conf állományból az /etc/login.conf.db állományt az alábbi paranccsal tudjuk legyártani:
# cap_mkdb /etc/login.conf
Az erőforrások korlátozása két irányban is eltér a sima hétköznapi bejelentkezési tulajdonságoktól. Először is minden korláthoz létezik egy gyenge (aktuális) és egy erős korlát. A gyenge korlátok a felhasználók vagy az alkalmazások részéről még finomíthatóak, de az erős korláton túl már nem. Ez utóbbit mindig tudja csökkenteni a felhasználó, de sose tudja növelni. Másodsorban a legtöbb erőforráskorlát az adott felhasználó által futtatott programokra egyenként vonatkozik, nem pedig az összesre együttesen. Megjegyezzük azonban, hogy ezeket az eltéréseket a korlátok különleges kezelése indokolja, nem pedig a bejelentkezési tulajdonságok rendszerének megvalósítása (tehát a korlátok valójában nem ezen tulajdonságok speciális esetei.)
Így aztán, minden további magyarázkodás nélkül, felsoroljunk alant a leggyakrabban alkalmazott erőforráskorlátokat (a többi, más egyéb bejelentkezési tulajdonságokkal együtt, megtalálható a login.conf(5) man oldalon).
A program által létrehozott memóriakivonat maximális méretét határolja be ez a korlát, értelemszerűen a többi lemezterületre vonatkozó korlátnak (például a filesize vagy a lemezkvóták) alárendelt módon. Mindazonáltal ezt gyakran használjuk egyfajta enyhébb lemezfoglalási korlátként. Mivel nem maguk a felhasználók hozzák létre ezeket az állományokat és sokszor nem is törlik le ezeket, ez a beállítás azonban megmentheti ezeket a nagyobb programok (mint például az emacs) összeomlása során keletkező memóriakivonatok felesleges helyfoglalásától.
Az a maximális processzoridő, amit a felhasználó által futtatott programok egyenként fogyaszthatnak. A vétkező programok futását a rendszermag leállítja.
Megjegyzés: Ez a korlát a processzoridőre vonatkozik, nem pedig a processzor kihasználtságának százalékára, ahogy a top(1) és a ps(1) szokta megjeleníteni. Ez utóbbi alapján korlátozni ugyanis, még ezen leírás készítésének pillanataiban nem lehetséges, és meglehetősen hasztalan is lenne: egy fordítóprogram — ami minden bizonnyal egy szabályosan futó program — könnyen fel tudja emészteni majdnem az egész processzort egy időre.
A felhasználó által birtokolható állományok maximális mérete. Eltérően a lemezkvótáktól, ez a korlát az egyes állományokra vonatkozik, nem pedig a felhasználó összes állományára együttesen.
A felhasználó által egyidőben,
az előtérben és a háttérben
futtatható programok maximális száma.
Érthető okokból ez az érték
nem lehet nagyobb, mint a rendszerben a sysctl(8)
által definiált
kern.maxproc
(a rendszermag által
maximálisan futtatható programok
számának) értéke.
Érdemes még továbbá megjegyezni,
hogy ez a beállítás gátolhatja a
felhasználó munkáját: gyakran
hasznos lehet egyszerre több példányban
is bejelentkezni a rendszerbe vagy csövekkel
összekapcsolt programokat futtatni. Bizonyos
feladatok, mint például egy nagyobb program
lefordítása, több program
futására is szétterjedhetnek
(például a make(1), cc(1) és
egyéb köztes feldolgozókra).
Ezzel korlátozhatjuk az egyes futó programok által zárolható memóriaterület méretét a központi memóriában (lásd mlock(2)). Egyes rendszerkritikus programok, mint például az amd(8), zárolják magukat a központi memóriában, és ezért soha nem lapozódnak ki onnan. Ennek köszönhetően nem érinti ezeket a rendszer lapozásból eredő esetleges lelassulása.
Ez az a maximális memóriamennyiség, amelyet egy futó program egyszerre használhat. Ebbe együttesen beleértendő a központi memóriában és a lapozóállományban elfoglalt hely. Ez ugyan nem minden szempontból korlátozza egy program memóriahasználatát, de indulásnak megfelelő.
A felhasználó egyes futtatott programjai
által egy időben megnyitható
állományok maximális száma.
FreeBSD-ben az állományok közé a
foglalatok és az IPC-csatornák is
beszámítanak. Ezért vigyázzunk,
nehogy véletlenül túlságosan
alacsonyra állítsuk ezt az
értéket. Ezt rendszerszinten a
kern.maxfiles
sysctl(8)
érték határozza meg.
A korlátozás a felhasználó által egyszerre maximálisan elérhető hálózati memória és így a rendszermag puffereire vonatkozik. Eredetileg a régebbi, sok csatlakozást felemésztő DoS (Denial of Service) támadások ellen nyújtana védelmet, de általánosságban alkalmazható a hálózati kommunikáció korlátozására is.
Ez a felhasználó által működtetett egyes programok vermeinek maximális mérete. Önmagában nem elegendő a programok által használt memóriamennyiség korlátozására, így emiatt inkább a többi korláttal együtt érdemes alkalmazni.
Van néhány tényező, amelyekre érdemes odafigyelni az erőforrások korlátainak beállítása során. Most következik pár tipp, javaslat és egyéb megjegyzés a témához.
A rendszerindítás során az /etc/rc által indított programok a daemon bejelentkezési osztályba tartoznak.
Habár a rendszerrel érkező /etc/login.conf állományban remekül be van állítva a legtöbb korlát, de nekünk, mint rendszergazdáknak, kell ismernünk a saját rendszerünk korlátait. Ezen korlátok túlzott tágításával a rendszerünk könnyen leterhelhetővé válik, míg a túlzott szűkítésével akadályozhatjuk a hatékony használatát.
Az X Window System (X11) felhasználóinak a többi felhasználónál valószínűleg jóval több erőforráshoz kell tudniuk hozzáférni. Az X11 már önmagában sok erőforrást eszik, de egyben bátorítja is a felhasználókat több program párhuzamos futtatására.
Ne felejtsük el, hogy sok korlát az egyes
különállóan futó programokra
vonatkozik, nem pedig a felhasználó összes
futtatott programjára. Például ha
beállítjuk 50-re az openfiles
értékét, a felhasználó
által elindított programok mindegyike legfeljebb
50 állományt tud majd megnyitni. Emiatt a
felhasználó által egyszerre
ténylegesen megnyitható állományok
száma az openfiles és a
maxproc aktuális
értékeinek szorzatából
adódik. Ugyanez igaz a
memóriahasználatra is.
Az erőforrások korlátozásáról, a bejelentkezési osztályokról és tulajdonságaikról a hozzájuk tartozó man oldalakon olvashatunk: cap_mkdb(1), getrlimit(2) és login.conf(5).
Egy csoport nem több felhasználók összességénél. A csoportokat a nevük és az azonosítójuk (Group ID, GID) azonosítja be. A FreeBSD-ben (és a legtöbb UNIX-szerű rendszerben) a rendszermag két tényező alapján dönt arról, mit szabad tennie egy futó programnak: ezek közül az egyik a tulajdonosának azonosítója (UID), a másik azon csoportok listája, melyeknek tagja a tulajdonos. Eltérően a UID-től, egy futó programhoz csoportok listája tartozik. Amikor egy felhasználó vagy egy futó program “csoportazonosítójára” hivatkoznak, általában csak a lista első elemére gondolnak.
A csoportok nevei és azonosítói közti megfeleltetéseket az /etc/group állományban találjuk. Ez lényegében egy szimpla szöveges állomány, négy kettősponttal elválasztott mezőt tartalmaz. Ezek közül az első a csoport neve, a második a titkosított jelszó, a harmadik a csoport azonosítója, a negyedik pedig a tagok vesszővel tagolt felsorolása. Akár kézzel is nyugodtan szerkeszthető (feltételezve persze, hogy nem vétünk benne szintaktikai hibát!). A szintaxis teljes leírását a group(5) man oldalon találhatjuk meg.
Ha nem akarjuk magunk szerkeszteni az /etc/group állományt, használhatjuk a pw(8) parancsot is csoportok létrehozására és törlésére. Például hozzuk létre a pg_csoport nevű csoportot és vizsgáljuk meg, valóban létrejött-e:
Példa 13-7. A csoportok tagjainak beállítása a pw(8) használatával
# pw groupadd pg_csoport # pw groupshow pg_csoport pg_csoport:*:1100:
A fent szereplő 1100-as érték a pg_csoport csoportazonosítója. Ebben a pillanatban a pg_csoportnak még egyetlen tagja sincs, ami miatt lényegében haszontalan. Így hát hívjuk meg a pg_csoportba a korábban létrehozott jantyik nevű felhasználót.
Példa 13-8. A csoport tagjainak beállítása a pw(8) használatával
# pw groupmod pg_csoport -M jantyik # pw groupshow pg_csoport pg_csoport:*:1100:jantyik
Az -M
kapcsoló paramétere a
csoportba sorolandó felhasználók neveinek
vesszőkkel tagolt listája. A korábbi szakaszok
alapján már tudjuk, hogy a jelszavakat
tároló állomány egyben azokat a
csoportokat is tartalmazza, ahova az egyes
felhasználók tartoznak. Az utóbbiakat (a
felhasználókat) automatikusan beleteszi a rendszer a
csoportlistába, de az érintett
felhasználó nem fog megjelenni tagként a
pw(8) parancs groupshow
utasításával, azonban az id(1) és
a hozzá hasonló eszközökkel már
látható lesz. Más szavakkal élve, a
pw(8) csak az /etc/group
állományt módosítja, és soha
nem próbál meg további adatokat kiolvasni az
/etc/passwd
állományból.
Példa 13-9. Egy új tag felvétele a csoportba a pw(8) használatával
# pw groupmod pg_csoport -m kisati # pw groupshow pg_csoport pg_csoport:*:1100:jantyik,kisati
Az -m
kapcsoló paramétere azon
felhasználók vesszővel tagolt listája,
akiket fel akarunk venni a csoportba. Tehát
eltérően az előző
példától, ezeket a
felhasználókat felvesszük a csoportba, nem
pedig átírjuk velük a csoport jelenlegi
tagjainak listáját.
Példa 13-10. Az id(1) használata a csoporttagság megállapítására
% id jantyik uid=1001(jantyik) gid=1001(jantyik) groups=1001(jantyik), 1100(pg_csoport)
Ahogy láthatjuk is, a jantyik nevű felhasználó tagja a jantyik nevű csoportnak és a pg_csoportnak is.
A pw(8) működéséről a saját man oldalán, az /etc/group formátumáról pedig a group(5) man oldalon találhatunk több információt.
Ez a fejezet egy alapvető bevezetés a rendszerek biztonsági fogalmaiba, ad néhány általános jótanácsot és a FreeBSD-vel kapcsolatban feldolgoz néhány komolyabb témát. Az itt megfogalmazott témák nagy része egyaránt ráhúzható rendszerünk és általánosságban véve az internet biztonságára is. A internet már nem az “békés” hely, ahol mindenki a kedves szomszéd szerepét játssza. A rendszerünk bebiztosítása elkerülhetetlen az adataink, szellemi tulajdonunk, időnk és még sok minden más megvédésére az internetes banditák és hasonlók ellen.
A FreeBSD segédprogramok és mechanizmusok sorát kínálja fel a rendszerünk és hálózatunk sértetlenségének és biztonságának fenntartására.
A fejezet elolvasása során megismerjük:
az alapvető rendszerbiztonsági fogalmakat, különös tekintettel a FreeBSD-re;
milyen olyan különböző titkosítási mechanizmusok érthetőek el a FreeBSD-ben, mint például a DES és az MD5;
hogyan állítsunk be egyszeri jelszavas azonosítást;
hogyan burkoljunk az inetd segítségével TCP kapcsolatokat;
hogyan állítsuk be a KerberosIV-t a FreeBSD 5.0-nál korábbi változatain;
hogyan állítsuk be a Kerberos5-t a FreeBSD-n;
hogyan állítsuk be az IPsec-et és hozzunk létre VPN-t FreeBSD/Windows gépek között;
hogyan állítsuk be és használjuk az OpenSSH-t, a FreeBSD SSH implementációját;
mik azok az ACL-ek az állományrendszerben és miként kell ezeket használni;
hogyan kell használni a Portaudit segédprogramot a Portgyűjteményből telepített külső szoftvercsomagok biztonságosságának ellenőrzésére;
hogyan hasznosítsuk a FreeBSD biztonsági tanácsait tartalmazó leírásokat
mit jelent a futó programok nyilvántartása és hogyan engedélyezzük azt FreeBSD-n.
A fejezet elolvasásához ajánlott:
az alapvető FreeBSD és internetes fogalmak ismerete.
A könyvben további biztonsági témákról is szó esik, például a 16 fejezetben a Kötelező hozzáférés-vezérlésről (MAC) és a 30 fejezetben pedig az internetes tűzfalakról.
A biztonság egy olyan funkció, ami a rendszergazdától indul és nála is végződik. Míg az összes többfelhasználós BSD UNIX rendszer önmagában is valamennyire biztonságos, a felhasználók “fegyelmezéséhez” szükség további biztonsági mechanizmusok kiépítésére és karbantartására, ami minden bizonnyal egy rendszergazda egyik legfontosabb kötelessége. A számítógépek csak annyira biztonságosak, mint amennyire beállítjuk, és a biztonsági megfontolások állandó versenyben vannak az emberi kényelemmel. A UNIX rendszerek általánosságban véve órási mennyiségű program párhuzamos futtatására képesek, melyek többsége kiszolgálóként fut — ez azt jelenti, hogy hozzájuk kívülről érkező egyedek csatlakozhatnak és társaloghatnak velük. Ahogy a tegnap kicsi és nagy számítógépei napjaink asztali gépeivé váltak és ahogy a számítógépek egyre többen csatlakoznak hálózatra és az internetre, a biztonság fontossága is egyre jobban növekszik.
A rendszerek biztonsága a támadások különböző formáival is foglalkozik, többek közt olyan támadásokkal, amelyek a rendszer összeomlását vagy használhatatlanságát célozzák meg, de nem próbálják meg veszélybe sodorni a root felhasználó hozzáférését (“feltörni a gépet”). A biztonsággal kapcsolatos problémák több kategóriára oszthatóak:
A szolgáltatások működésképtelenné tételére irányuló (DoS, Denial of Service) támadások.
A felhasználói fiókok veszélyeztetése.
Rendszergazdai jogok megszerzése a közeli szervereken keresztül.
Rendszergazdai jogok megszerzése a felhasználói fiókokon keresztül.
Kiskapuk létrehozása a rendszerben.
A szolgáltatások működésképtelenné tételére irányuló támadások olyan tevékenységre utalnak, amelyek képesek megfosztani egy számítógépet az erőforrásaitól. A DoS támadások többnyire nyers erővel kivitelezett technikák, melyek vagy a rendszer összeomlasztását vagy pedig a használhatatlanná tételét veszik célba úgy, hogy túlterhelik az általa felkínált szolgáltatásokat vagy a hálózati alrendszert. Egyes DoS támadások a hálózati alrendszerben rejtőző hibákat igyekeznek kihasználni, amivel akár egyetlen csomaggal is képesek romba dönteni egy számítógépet. Ez utóbbit csak úgy lehet orvosolni, ha a hibát kijavítjuk a rendszermagban. A szerverekre mért csapásokat gyakran ki lehet védeni a paramétereik ügyes beállításával, melyek segítségével korlátozni tudjuk az ezeket ért terhelést egy kellemetlenebb helyezetben. A nyers erőt alkalmazó hálózati támadásokkal a legnehezebb szembenézni. Például az álcázott támadadások, melyeket szinte lehetetlen megállítani, remek eszközök arra, hogy elvágják gépünket az internettől. Ezzel viszont nem csak azt iktatják ki, hanem az internet-csatlakozásunkat is eldugítják.
A DoS támadásoknál még gyakrabban előfordul, hogy feltörik a felhasználók fiókjait. A rendszergazdák többsége még mindig futtat telnetd, rlogin, rshd és ftpd szervereket a gépen. Ezek a szerverek alapértelmezés szerint nem titkosított kapcsolaton keresztül működnek. Ebből következik, hogy ha nincs annyira sok felhasználónk és közülük néhányan távoli helyekről jelentkeznek be (ami az egyik leggyakoribb és legkényelmesebb módja ennek), akkor előfordulhat, hogy valami megneszeli a jelszavaikat. A körültekintő rendszergazdák mindig ellenőrzik a bejelentkezéseket tartalmazó naplókat és igyekeznek kiszűrni a gyanús címeket még abban az esetben is, amikor a bejelentkezés sikeres volt.
Mindig arra kell gondolni, hogy ha a támadónak sikerült megszerezni az egyik felhasználó hozzáférését, akkor akár képes lehet a root felhasználó fiókjának feltörésére is. Azonban a valóságban egy jól őrzött és karbantarott rendszer esetén a felhasználói hozzáférések megszerzése nem feltétlenül adja a támadó kezére a root hozzáférését. Ebben fontos különbséget tenni, hiszen a root felhasználó jogai nélkül a támadó nem képes elrejteni a nyomait és legjobb esetben sem tud többet tenni, mint tönkretenni az adott felhasználó állományait vagy összeomlasztani a rendszert. A felhasználói fiókok feltörése nagyon gyakran megtörténik, mivel a felhasználók messze nem annyira elővigyázatosak, mint egy rendszergazda.
A rendszergazdáknak mindig észben kell tartani, hogy egy számítógépen több módon is meg lehet szerezni a root felhasználó hozzáférését. A támadó megtudhatja a root jelszavát, hibát fedezhet fel az egyik rendszergazdai jogosultsággal futó szerverben és képes feltörni a root hozzáférést egy hálózati kapcsolaton keresztül, vagy a támadó olyan programban talál hibát, aminek segítségével el tudja érni a root fiókját egy felhasználói hozzáférésen keresztül. Miután a támadó megtalálta a rendszergazdai jogok megszerzésének módját, nem feltétlenül kell kiskapukat elhelyeznie a rendszerben. Az eddig talált és javított, rendszergazdai jogok megszerzését lehetővé tevő biztonsági rések egy része esetében viszont a támadónak akkora mennyiségű munkát jelentene eltűntetni maga után a nyomokat, hogy megéri neki egy kiskaput telepíteni. Ennek segítségével a támadó ismét könnyedén hozzájuthat a root felhasználó hozzáféréséhez a rendszerben, de ezen keresztül egy okos rendszergazda képes is a behatolót leleplezni. A kiskapuk lerakásának megakadályozása valójában káros a biztonság szempontjából nézve, mert ezzel nem szüntetjük meg azokat a lyukakat, amin keresztül a támadó először bejutott.
A támadások elleni védelmet mindig több vonalban kell megvalósítani, melyeket így oszthatunk fel:
A rendszergazda és a személyzet hozzáférésének védelme.
A rendszergazdai jogokkal futó szerverek és a suid/sgid engedélyekkel rendelkező programok védelme.
A felhasználói hozzáférések védelme.
A jelszavakat tároló állomány védelme.
A rendszermag belsejének, a nyers eszközök és az állományrendszerek védelme.
A rendszert ért szabálytalan módosítások gyors észlelése.
Állandó paranoia.
A fejezet most következő szakaszában az imént felsorolt elemeket fejtjük ki részletesebben.
Parancs kontra protokoll: A dokumentumban a félkövéren fogjuk szedni az alkalmazásokat, és egyenszélességű betűkkel pedig az adott parancsokra hivatkozunk. A protokollokat nem különböztetjük meg. Ez a tipográfiai elkülönítés hasznos például az ssh egyes vonatkozásainak esetén, mivel ez egyben egy protokoll és egy parancs is.
A most következő szakaszok a FreeBSD védelmének azon módszereit ismertetik, amelyekről a fejezet előző szakaszában már írtunk.
Először is: ne törjük magunkat a személyzeti fiókok biztonságossá tételével, ha még a rendszergazda hozzáférését sem tettük eléggé biztonságossá. A legtöbb rendszerben a root hozzáféréshez tartozik egy jelszó. Elsőként fel kell tennünk, hogy ez a jelszó mindig megszerezhető. Ez természetesen nem arra utal, hogy el kellene távolítanunk. A jelszó szinte mindig szükséges a számítógép konzolon keresztüli eléréséhez. Valójában arra szeretnénk rávilágítani, hogy a konzolon kívül sehol máshol ne lehessen használni ezt a jelszót, még a su(1) paranccsal sem. Például gondoskodjunk róla, hogy az /etc/ttys állományban megadott pszeudó terminálokat “insecure” (nem biztonságos) típusúnak állítottuk be, és így a telnet vagy az rlogin parancsokon keresztül nem lehet rendszergazdaként bejelentkezni. Ha más szolgáltatáson keresztül jelentkezünk be, például az sshd segítségével, akkor ebben az esetben is gondoskodjunk róla, hogy letiltottuk a közvetlen rendszergazdai bejelentkezés lehetőségét. Ezt úgy tudjuk megtenni, ha megnyitjuk az /etc/ssh/sshd_config állományt és a PermitRootLogin paramétert átállítjuk a no értékre. Vegyünk számba minden lehetséges hozzáférési módot — az FTP és a hozzá hasonló módok gyakran átszivárognak a repedéseken. A rendszergazdának csak a rendszerkonzolon keresztül szabad tudnia bejelentkeznie.
Természetesen egy rendszergazdának valahogy el kell érnie a root hozzáférést, ezért ezzel felnyitunk néhány biztonsági rést. De gondoskodjunk róla, hogy ezek a rések további jelszavakat igényelnek a működésükhöz. A root hozzáférés eléréséhez érdemes felvenni tetszőleges személyzeti (staff) hozzáféréseket a wheel csoportba (az /etc/group állományban). Ha a személyzet tagjait a wheel csoportba rakjuk, akkor innen a su paranccsal fel tudjuk venni a root felhasználó jogait. A személyzet tagjait létrehozásukkor közvetlenül sose vegyük fel a wheel csoportba! A személyzet tagjai először kerüljenek egy staff csoportba, és majd csak ezután az /etc/group állományon keresztül a wheel csoportba. A személyzetnek csak azon tagjait tegyük ténylegesen a wheel csoportba, akiknek valóban szükségük van a root felhasználó hozzáférésére. Ha például a Kerberost használjuk hitelesítésre, akkor megcsinálhatjuk azt is, hogy a Kerberos .k5login állományában engedélyezzük a ksu(1) parancson keresztül a root hozzáférés elérését a wheel csoport alkalmazása nélkül. Ez a megoldás talán még jobb is, mivel a wheel használata esetén a behatolónak még mindig lehetősége van hozzájutni a root hozzáféréséhez olyankor, amikor a kezében van a jelszavakat tároló állomány és meg tudja szerezni a személyzet valamelyik tagjának hozzáférését. A wheel csoport által felkínált megoldás ugyan jobb, mint a semmi, de kétségtelenül nem a legbiztonságosabb.
A hozzáférések teljes körű letiltásához a pw(8) parancsot érdemes használni:
# pw lock személyzet
Ezzel meg tudjuk akadályozni, hogy a felhasználó akármilyen módon, beleértve az ssh(1) használatát is, hozzá tudjon férni a rendszerünkhöz.
A hozzáférések blokkolásának másik ilyen módszere a titkosított jelszó átírása egyetlen “*” karakterre. Mivel ez a karakter egyetlen titkosított jelszóra sem illeszkedik, ezért a felhasználó nem lesz képes bejelentkezni. Ahogy például a személyzet alábbi tagja sem:
izemize:R9DT/Fa1/LV9U:1000:1000::0:0:Ize-Mize:/home/izemize:/usr/local/bin/tcsh
Erre cseréljük ki:
izemize:*:1000:1000::0:0:Ize-Mize:/home/izemize:/usr/local/bin/tcsh
Ezzel megakadályozzuk, hogy az izemize nevű felhasználó a hagyományos módszerekkel be tudjon jelentkezni. Ez a megoldás azonban a Kerberost alkalmazó rendszerek esetén nem működik, illetve olyan helyezetekben sem, amikor a felhasználó az ssh(1) paranccsal már létrehozott magának kulcsokat.
Az ilyen védelmi mechanizmusok esetében mindig egy szigorúbb biztonsági szintű gépről jelentkezünk be egy kevésbé biztonságosabb gépre. Például, ha a szerverünk mindenféle szolgáltatásokat futtat, akkor a munkaállomásunknak egyetlen egyet sem lenne szabad. A munkaállomásunk biztonságossá tételéhez a lehető legkevesebb szolgáltatást szabad csak futtatnunk, de ha lehet, egyet sem, és mindig jelszóval védett képernyővédőt használjuk. Természetesen ha a támadó képes fizikailag hozzáférni a munkaállomásunkhoz, akkor szinte bármilyen mélységű védelmet képes áttörni. Ezt mindenképpen számításba kell vennünk, azonban ne felejtsük el, hogy a legtöbb betörési kísérlet távolról, hálózaton keresztülről érkezik olyan emberektől, akik fizikailag nem férnek hozzá a munkaállomásunkhoz vagy a szervereinkhez.
A Kerberos és a hozzá hasonló rendszerek használatával egyszerre tudjuk a személyzet tagjainak jelszavát letiltani vagy megváltoztatni, ami egyből érvényessé válik minden olyan gépen, ahová az adott felhasználónak bármilyen hozzáférése is volt. Nem szabad lebecsülnünk ezt a gyors jelszóváltási lehetőséget abban az esetben, ha a személyzet valamelyik tagjának hozzáférését megszerezték. Hagyományos jelszavak használatával a jelszavak megváltoztatása N gépen igazi káosz. A Kerberosban jelszóváltási megszorításokat is felállíthatunk: nem csak a Kerberos által adott jegyek járnak le idővel, hanem a Kerberos rendszer meg is követelheti a felhasználóktól, hogy egy adott idő (például egy hónap) után változtasson jelszót.
A bölcs rendszergazda mindig csak akkor futtat szervereket, amikor szüksége van rá, se többet, se kevesebbet. Az egyéb fejlesztőktől származó szerverekkel bánjunk különösen óvatosan, mivel gyakran hajlamosak hibákat tartalmazni. Például az imapd vagy a popper használata olyan, mintha az egész világnak ingyenjegyet osztogatnánk a rendszerünk root hozzáféréséhez. Soha ne futtassunk olyan szervert, amelyet nem vizsgáltunk át kellő alapossággal. Sok szervert nem is feltétlenül kell root felhasználóként futtatni. Például az ntalk, comsat és finger démonok egy speciális járókában (sandbox) futnak. Ezek a járókák sem teljesen tökéletesek, hacsak erre külön figyelmet nem fordítunk. Ilyenkor a többvonalas védelem eszménye még mindig él: ha valakinek sikerült betörnie a járókába, akkor onnan ki is tud törni. Minél több védelmi vonalat húzunk a támadó elé, annál jobban csökken a sikerének valószínűsége. A történelem során lényegében minden root jogokkal futó szerverben, beleértve az alapvető rendszerszintű szervereket is, találtak már biztonsági jellegű hibát. Ha a gépünkre csak az sshd szolgáltatáson keresztül tudnak belépni, és soha nem használja senki a telnetd, rshd vagy rlogind szolgáltatásokat, akkor kapcsoljuk is ki ezeket!
A FreeBSD most már alapértelmezés szerint járókában futtatja az ntalkd, comsat és finger szolgáltatásokat. Másik ilyen program, amely szintén esélyes lehet erre, az a named(8). Az /etc/defaults/rc.conf megjegyzésben tartalmazza a named járókában futtatásához szükséges paramétereket. Attól függően, hogy egy új rendszert telepítünk vagy frissítjük a már meglévő rendszerünket, a járókákhoz tartozó speciális felhasználói hozzáférések nem feltétlenül jönnek létre. Amikor csak lehetséges, az előrelátó rendszergazda kikísérletez és létrehoz ilyen járókákat.
Vannak más olyan szerverek, amelyek tipikusan nem járókákban futnak. Ilyen többek közt a sendmail, popper, imapd, ftpd és még sokan mások. Léteznek rájuk alternatívák, de a telepítésük valószínűleg több munkát igényel, mint amennyit megérné számunkra vesződni velük (és itt megint lesújt a kényelmi tényező). Ezeket a szervereket többnyire root felhasználóként kell futtatnunk és a rajtuk keresztül érkező betörési kísérleteket más módokra támaszkodva kell észlelnünk.
A root felhasználó keltette biztonsági rések másik nagy csoportja azok a végrehajtható állományok a rendszerben, amelyek a suid és sgid engedélyekkel rendelkeznek, futtatásuk rendszergazdai jogokkal történik. Az ilyen binárisok többsége, mint például az rlogin, a /bin és /sbin, /usr/bin vagy /usr/sbin könyvtárakban található meg. Habár semmi sem biztonságos 100%-ig, a rendszerben alapértelmezetten suid és sgid engedéllyel rendelkező binárisok ebből a szempontból meglehetősen megbízhatónak tekinhetőek. Alkalmanként azonban találnak a root felhasználót veszélyeztető lyukakat az ilyen binárisokban is. Például 1998-ban az Xlib-ben volt egy olyan rendszergazdai szintű hiba, amellyel az xterm (ez általában suid engedéllyel rendelkezik) sebezhetővé vált. Mivel jobb félni, mint megijedni, ezért az előretekintő rendszergazda mindig igyekszik úgy csökkenteni az ilyen engedélyekkel rendelkező binárisok körét, hogy csak a személyzet tagjai legyenek képesek ezeket futtatni. Ezt egy olyan speciális csoport létrehozásával oldhatjuk meg, amelyhez csak a személyzet tagjai férhetnek hozzá. Az olyan suid binárisoktól pedig, amelyeket senki sem használ, igyekszik teljesen megszabadulni (chmod 000). A monitorral nem rendelkező szervereknek általában nincs szükségük az xterm működtetésére. Az sgid engedéllyel rendelkező binárisok is legalább ugyanennyire veszélyesek. Ha a behatoló képes feltörni egy kmem csoporthoz tartozó sgid binárist, akkor képes lesz olvasni a /dev/kmem állomány tartalmát, ezáltal hozzájut a titkosított jelszavakhoz és így megszerezheti magának akármelyik hozzáférést. Sőt, a kmem csoportot megszerző behatolók figyelni tudják a pszeudó terminálokon keresztül érkező billentyűleütéseket, még abban az esetben is, amikor a felhasználók egyébként biztonságos módszereket használnak. A tty csoportot bezsebelő támadók szinte bármelyik felhasználó termináljára képesek írni. Ha a felhasználó valamilyen terminál programot vagy terminál emulátort használ a billentyűzet szimulációjával, akkor a behatoló tud olyan adatokat generálni, amivel a felhasználó nevében adhat ki parancsokat.
A felhasználók hozzáféréseit szinte a legnehezebb megvédeni. Míg a személyzet tagjaival szemben lehetünk kíméletlenül szigorúak és “ki is csillagozhatjuk” a jelszavukat, addig a felhasználók hozzáféréseivel általánosságban véve ezt nem tehetjük meg. Ha a kezünkben van a megfelelő mértékű irányítás, akkor még győzhetünk és kényelmesen biztonságba helyezethetjük a felhasználók hozzáférését. Ha nincs, akkor nem tehetünk mást, mint állandóan őrködünk a hozzáférések felett. Az ssh és Kerberos használata a felhasználók esetén sokkalta problematikusabb, mivel ilyenkor jóval több adminisztrációra és műszaki segítségnyújtásra van szükség, de még mindig jobb megoldás a titkosított jelszavakhoz képest.
Az a legbiztosabb, ha minél több jelszót kicsillagozunk és a hozzáférések hitelesítésére ssh-t vagy Kerberost használunk. Igaz, a titkosított jelszavakat tároló állományt (/etc/spwd.db) csak a root képes olvasni, de a támadó meg tudja szerezni ezt a jogot még olyankor is, ha root felhasználóként nem feltétlenül tud írni.
A rendszerünkben futó biztonsági szkripteknek a jelszavakat tároló állomány változását folyamatosan tudnia kell figyelnie és jelentie (lásd lentebb a Az állományok sértetlenségének ellenőrzése című fejezetet).
Ha a támadó megszerzi a root hozzáférését, akkor szinte bármit képes megtenni, de vannak bizonyos előnyei. Például a mostanság fejlesztett legtöbb rendszermag tartalmaz valamilyen beépített csomaglehallgatót, amit FreeBSD alatt a bpf eszköz valósít meg. A támadók szinte mindig megpróbálnak valamilyen csomaglehallgatót használni a feltört gépen. A legtöbb rendszeren azonban nem kell feltétlenül megadnunk ezt az örömet, ezért nem is kell beépítenünk a rendszermagba a bpf eszközt.
De ha még ki is iktatjuk a bpf eszközt, még aggódhatunk a /dev/mem és /dev/kmem miatt. Egyébként ami azt illeti, a behatoló még így is képes írni a nyers eszközökre. Sőt, a rendszermagba képesek vagyunk modulokat is betölteni a kldload(8) használatával. A vállalkozó kedvű támadó a rendszermag moduljaként képes telepíteni és használni a saját bpf eszközét vagy bármilyen más, a csomagok lehallgatására alkalmas eszközt. Az ilyen problémák elkerülése érdekében a rendszermagot a legmagasabb védelmi szinten kell üzemeltetni, tehát legalább egyes szinten.
A rendszermag védelmi szintjét több
különböző módon lehet
állítani. A védelmi szintet úgy
lehet a legegyszerűbben növelni, ha a
sysctl paranccsal beállítjuk a
kern.securelevel
nevű,
rendszerszintű változó
értékét:
# sysctl kern.securelevel=1
A FreeBSD rendszermag alapértelmezés szerint a
-1 védelmi szinten indul. Ez
egészen addig -1 marad, amíg a
rendszergazda vagy valamelyik init(8) során
hívott rendszerindító szkript ezt meg nem
változtatja. A rendszer indítása
során úgy tudjuk beállítani a
megfelelő védelmi szintet, ha az
/etc/rc.conf állományban
megadjuk a kern_securelevel_enable
változót a YES
értékkel, illetve
kern_securelevel
értékeként a kívánt
védelmi szintet.
A FreeBSD alapértelmezett védelmi szintje közvetlenül a rendszerindító szkriptek lefutása után -1. Ezt “nem biztonságos módnak” nevezik, mivel az állományok írásáért felelős állományjelzők nem feltétlenül működnek, mindegyik eszköz írható, olvasható és a többi.
Miután a védelmi szintet 1 vagy annál magasabb értékre állítottuk, akkor a rendszer figyelembe veszi a csak hozzáfűzést (append-only) és módosíthatatlanságot (immutable) megszorító állományjelzőket, nem engedélyezi a tiltásukat és az eszközök közvetlenül nem érhetőek el. A különböző védelmi szintek részletesebb bemutatását a security(7) man oldalon olvashatjuk (vagy a FreeBSD 7.0 előtti változataiban a init(8) man oldalon).
Megjegyzés: Az 1 és az afeletti védelmi szinteken többek közt az X11 nem feltétlenül lesz futtatható (mivel a /dev/io eszköz elérése blokkolt), illetve a rendszer frissítése is akadályokba fog ütközni (a installworld futtatása során ideiglenesen ki kell kapcsolni az append-only és immutable állományjelzőket). Az X11 esetében ezt valahogy még ki lehet kerülni úgy, hogy ha az xdm(1) démont még a rendszerindítás elején aktiváljuk (amikor a védelmi szint még kellően alacsony). Az összes védelmi szint és megszorítás esetén azonban nem mindig adható ilyen jellegű javaslat, ezért ilyenkor mindig érdemes előre tervezni egy keveset. Emellett fontos alaposan megismerni a különböző védelmi megszorításokat, mivel jelentős mértékben visszafoghatják a rendszer használhatóságát. Ez segít az adott helyzetben az egyszerűbb megoldást választani és ezáltal elkerülni a kellemetlen meglepetéseket.
Ha a rendszermag védelmi szintjét az 1 érték vagy afelé emeljük, akkor hasznos lehet a fontosabb (lényegében minden olyan programnak, amely a védelmi szint helyes beállítódása előtt lefut) programoknak, könyvtáraknak és szkripteknek beállítani az schg állományjelzőt. Ilyenkor azonban vegyük figyelembe, hogy a rendszer frissítése is nehezebbé válik a magasabb védelmi szinteken. Egy működőképesebb megoldás lehet, ha rendszerünket egy magasabb védelmi szinten használjuk, de nem állítjuk be mindegyik rendszerszintű állományra az schg állományjelzőt. Másik lehetőség még a / és /usr partíciók írásvédett csatlakoztatása. Ne felejtsük el azonban, hogy ha túlságosan szigorúak vagyunk magunkhoz, akkor azzal egyúttal a behatolás észlelését is meg tudjuk nehezíteni!
Ha arról van szó, csak a legfontosabb rendszerszintű konfigurációs- és vezérlőállományokat tudjuk megvédeni, még mielőtt a korábban emlegetett kényelmi tényező kimutatná a foga fehérjét. Például, ha a chflags paranccsal beállítjuk az schg állományjelzőt a / és /usr állományrendszereken található legtöbb állományra, akkor az minden bizonnyal csökkenti a hatékonyságunkat, hiszen az állományok védelmének növekedésével csökken az észlelés lehetősége. A védelmi vonalaink közül ugyanis az utolsó talán az egyik legfontosabb — a detektálás. A felépített biztonsági rendszerünk legnagyobb része szinte teljesen hasztalan (vagy ami még rosszabb, a biztonság hamis érzetét kelti), ha nem vagyunk képesek észrevenni a betörési kísérleteket. A védelmi rendszer egyik részére nem a támadó megállításához, hanem a lelassításához van szükség, hogy így majd munka közben érhessük tetten.
A betörés tényét legjobban a megváltozott, hiányzó vagy éppen váratlanul felbukkanó állományok utáni kutatással tudjuk felismerni. A módosított állományokat általában egy másik (gyakran központosított) korlátozott hozzáférésű rendszerből ellenőrizhetjük a legjobban. Fontos, hogy ha egy korlátozott hozzáférésű, kiemelten védett rendszeren írjuk a védelemért felelős szkripteket, akkor azok szinte teljesen láthatlanok lesznek a támadó számára. A legjobb kihasználás érdekében a korlátozott hozzáférésű gépnek jelentős mértékű rálátással kell rendelkeznie az összes többi gépre, amit írásvédett NFS exportok vagy ssh kulcspárok felhasználásával érhetünk el. A hálózati forgalmat leszámítva az NFS látszik a legkevésbé — segítségével lényegében észrevétlenül tudjuk figyelni az egyes gépek állományrendszereit. Ha a megfigyelésre használt szerver a kliensekhez switchen keresztül csatlakozik, akkor az NFS gyakran jobb választásnak bizonyul. Ha a szerver hubon vagy több hálózati elemen keresztül éri el a megfigyelni kívánt klienseket, akkor az NFS nem eléggé biztonságos (és hatékony), ezért ilyen esetekben az ssh választása lehet a kedvező még az ssh által hagyott nyomokkal együtt is.
Miután a korlátozott hozzáférésű gépünk legalább látja a hozzá tartozó kliensek rendszereit, el kell készítenünk a tényleges monitorozást végző szkripteket. Ha NFS csatlakozást tételezünk fel, akkor az olyan egyszerű rendszereszközökkel, mint például a find(1) és md5(1) képesek vagyunk összerakni ezeket. A szemmel tartott kliensek állományait naponta legalább egyszer érdemes ellenőrizni md5-tel, valamint még ennél gyakrabban is tesztelni az /etc és /usr/local/etc könyvtárakban található konfigurációs és vezérlőállományokat. Ha valamilyen eltérést tapasztal az ellenőrzést végző szerverünk és a rajta levő md5 információk is helyesek, akkor értesítenie kell a rendszergazdát. Egy jó védelmi szkript képes megkeresni az oda nem illő suid binárisokat, valamint az új vagy törölt állományokat a / és a /usr partíciókon.
A védelmi szkriptek megírása valamivel nehezebb feladat, ha ssh-t használunk az NFS helyett. A futtatásukhoz a szkripteket és az általuk használt eszközöket (például find) az scp paranccsal lényegében át kell másolni a kliensekre, amivel így láthatóvá válnak. Ne feledjük továbbá, hogy az ssh kliens már eleve feltört lehet. Szó, ami szó, ha nem megbízható összeköttetésekről beszélünk, akkor az ssh használata elkerülhetetlen, de nem feltétlenül egyszerű.
Egy jó védelmi szkript észreveszi a felhasználók és a személyzet tagjainak hozzáférését vezérlő állományokban, mint például az .rhosts, .shosts, .ssh/authorized_keys és társaiban keletkezett változásokat is, amelyek esetleg elkerülhetik egy MD5 alapú ellenőrzés figyelmét.
Ha netalán órási mennyiségű tárterületettel rendelkeznénk, akkor eltarthat egy ideig, amíg végigsöprünk az összes partíció összes állományán. Ebben az esetben érdemes olyan beállításokat megadni az állományrendszerek csatlakoztatásánál, amivel le tudjuk tiltani a suid engedéllyel rendelkező binárisok futtatását. Ezzel kapcsolatban a mount(8) parancs nosuid opcióját nézzük meg. Hetente legalább egyszer azért mégis érdemes átnézni az ilyen partíciókat is, mivel ez a réteg a betörési kísérletek felderítésével foglalkozik, függetlenül a sikerességüktől.
A futó programok nyilvántartása (lásd accton(8)) egy olyan viszonylag kevés költséggel járó lehetőség az operációs rendszerben, ami segítségünkre lehet a betörés utáni események kiértékelésében. Különösen hasznos olyankor, amikor megpróbáljuk modellezni, miképp is sikerült a támadónak bejutnia a rendszerünkbe, természetesen feltételezve, hogy az ehhez felhasznált feljegyzések a betörés után is érintetlenek maradtak.
Végül a védelmet ellátó szkripteknek javasolt feldolgozni a naplóállományokat is, valamint a naplókat magukat is a lehető legbiztonságosabb formában generálni — ilyenkor nagyon hasznos lehet, ha egy távoli gépre naplózunk. A behatoló megpróbálja majd eltüntetni a nyomait, a naplóállományok viszont nagyon fontosak a rendszergazda számára a betörési kísérletek idejének és módjának megállapításában. A naplókat úgy tudjuk tartósan rögzíteni, ha a rendszerkonzol üzeneteit soros porton keresztül gyűjtjük össze a konzolok felügyeletéért felelős biztonságos gépen.
Egy kis paranoia sosem árt. Elmondható, hogy a rendszergazda tetszőleges számú biztonsági intézkedéssel élhet egészen addig, amíg az nincs hatással a kényelmére, és a kényelmet befolyásoló biztonsági intézkedéseket pedig megfelelő mérlegelés mellett tegye meg. Ami még ennél is fontosabb, hogy mindig változtassunk valamit a biztonsági hálónkon — mivel ha egy az egyben követjük a dokumentumban leírtakat, akkor ezzel együtt kiadjuk a bejutás receptjét annak a leendő támadónknak, aki szintén elolvasta ugyanezt.
Ez a szakasz a szolgáltatások működésképtelenségét elérni kívánó, más néven “Denial of Service” típusú támadásokkal foglalkozik. Noha nem tudunk túlságosan sokat tenni a manapság felbukkanó álcázott, a hálózatunk totális leterhelését célbavevő támadások ellen, akadnak olyan általános érvényű eszközök, amelyekkel elejét vehetjük a szervereink szétbomzásának:
A létjövő szerverpéldányok korlátozása.
Az ugródeszkaszerű támadások (támadás ICMP-válasszal, pingszórás stb.) korlátozása.
A rendszermag útválasztási gyorsítótárának túlterhelése.
A DoS támadások egyik jellemző
sémája szerint egy sokszorozódni
képes szervert támadnak meg, amelynek igyekeznek
minél több példányát
legyártatni, míg végül az ezt
futtató rendszer ki nem fogy a
memóriából,
állományleíróból
satöbbiből és megállásra nem
kényszerül. Az inetd
(lásd inetd(8)) számos
lehetőséget kínál fel ennek
megakadályozására. Ezzel kapcsolatban
szeretnénk megjegyezni, hogy bár ezzel el tudjuk
kerülni a gépünk
leállását, semmilyen garanciát nem
ad arra, hogy a szolgáltatás a
támadás során is zavartalanul üzemel
tovább. Alaposan olvassuk el az
inetd man oldalát és
legyünk különös tekintettel a
-c
, -C
és
-R
kapcsolóira. Vigyázzunk, hogy
az inetd -C
kapcsolóját képesek kijátszani az
álcázott IP-vel érkező
támadások, ezért inkább az
előbbi kapcsolók valamilyen
kombinációja az ajánlott. Egyes
szerverprogramoknál be lehet állítani a
példányainak maximális
számát.
A Sendmail rendelkezik egy
-OMaxDaemonChildren
beállítással, ami a terhelésben
levő késleltetése miatt néha mintha
jobban beválna, mint a
Sendmail
terheléskorlátozó paraméterei. A
Sendmail indításakor
tehát a MaxDaemonChildren
paramétert javasolt megadni egy olyan
értékkel, amely elegendő a
Sendmail számára
betervezett terhelés kiszolgálására,
de még kevés ahhoz, hogy a
Sendmail fűbe harapjon
tőle. Továbbá bölcs dolog a
Sendmailt várakozási
sorral (-ODeliveryMode=queued
) és
démonként (sendmail -bd),
külön feldolgozási menetekkel
(sendmail -q15m) futtatni. Ha
továbbra is valós idejű
kézbesítést akarunk, akkor a
feldolgozást kisebb időközökkel is
lefuttathatjuk (például -q1m
), de
arra mindig ügyeljünk, hogy a
MaxDaemonChildren
beállítása ne okozzon
kaszkádosítási hibákat a
Sendmail
működésében.
A Syslogd közvetlenül
is támadható, ezért határozottan
javasoljuk a -s
használatát,
amikor csak lehet, minden más esetben pedig a
-a
beállítást.
Fordítsunk kellő figyelmet a TCP kapcsolatok burkolását végző TCP Wrapper “reverse-ident” lehetőségére, ami szintén közvetlenül támadható. Ebből az okból kifolyólag valószínűleg nem is akarjuk a TCP Wrapper által felkínált reverse-ident-et használni.
Jól járunk el abban az esetben, ha a
belső szolgáltatásainkat az
útválasztóink mentén tűzfal
segítségével védjük meg a
külső hozzáféréstől. Ezzel
lényegében a helyi hálózatunkat
kívülről fenyegető támadások
ellen védekezünk, de ez nem nyújt
elegendő védelmet a belső
szolgáltatásaink esetén a
root hozzáférés
megszerzésére irányuló
kísérletek ellen. Mindig egy exkluzív,
tehát zárt tűzfalat állítsunk
be, vagyis “tűzfalazzunk mindent
kivéve az A, B, C, D és M-Z
portokat”. Ezen a módon ki tudjuk szűrni az
összes alacsonyabb portot, kivéve bizonyos eseteket,
mint például a named
(ha az adott zónában ez az elsődleges
gép), ntalkd,
sendmail vagy más interneten
keresztül elérhető
szolgáltatásokat. Ha másképpen
állítjuk a tűzfalat — inkluzív,
nyílt avagy megengedő módon, akkor jó
eséllyel elfelejtünk “lezárni”
egy csomó szolgáltatást, vagy úgy
adunk hozzá egy új belső
szolgáltatást, hogy közben elfelejtjük
frissíteni a tűzfalat. Ennél még azon
is jobb, ha a tűzfalon nyitunk egy magasabb
portszámú tartományt, és ott
valósítjuk meg ezt a megengedő jellegű
működést, az alacsonyabb portok
veszélybe sodrása nélkül. Vegyük
azt is számításba, hogy a FreeBSD-ben a
kiosztott portokat dinamikusan állíthatjuk a
net.inet.ip.portrange
sysctl
változókon keresztül (sysctl -a |
fgrep portrange), ami nagyságrendekkel
megkönnyíti a tűzfal
beállítását. Ennek megfelelően
például meg tudjuk adni, hogy a 4000-től
5000-ig terjedő porttartomány a 49152-től
65535-ig húzódó tartományba
kerüljön át, majd a 4000 alatti összes
portot blokkoljuk (természetesen az internetről
szándékosan hozzáférhető portok
kivételével).
A DoS támadások másik elterjedt
fajtája az ún. “ugródeszka
támadás” — ilyenkor a szervert
úgy próbálják túlterhelni,
hogy folyamatosan válaszokat kérnek tőle a
helyi hálózatról vagy egy másik
számítógépről. Az ilyen
természetű támadások közül
is a legnépszerűbb az ICMP
pingszórásos támadás. A
támadó olyan ping csomagokat küld szét
a helyi hálózaton, amelyek
forrásának azt a gépet jelöli meg,
amelyiket meg akarja támadni. Ha a
hálózatokat elválasztó
útválasztók nem fogják meg a
pingszórást, akkor a helyi
hálózatról összes gépe
nekilát válaszolgatni a meghamisított
forrás címére, amivel így teljesen
leterhelik az áldozatot. Ez különösen
akkor hatásos, amikor a támadó ugyanezt a
trükköt eljátssza egyszerre több tucat
különböző hálózatban is. Az
üzenetszórással járó
támadások akár százhúsz
megabitnyi forgalmat is képesek generálni
másodpercenként. A második legelterjedtebb
ugródeszkás támadás az ICMP
hiba-visszajelzési rendszere ellen irányul.
Ilyenkor a támadó ICMP hibaüzeneteket
kiváltó csomagok
készítésével képes
eltömíteni egy szerver bejövő
hálózati kapcsolatát és az ICMP
válaszokkal pedig a szerver maga dugítja el a
kimenő hálózati kapcsolatát. Ez a
fajtájú támadás képes
kinyomni az összes memóriát a szerverből
és ezzel összeomlasztani, különösen
olyankor, amikor a szerver nem tudja elég gyorsan
elnyelni az általa generált ICMP
válaszokat. A net.inet.icmp.icmplim
sysctl változóval tudunk gátat szabni a
támadások ezen fajtájának. Az
ugródeszkás támadások utolsó
nagyobb osztálya az inetd
olyan szolgáltatásait szemeli ki, mint
például az udp echo. A támadó
ilyenkor egyszerűen küld a helyi
hálózatunkon található A és B
szerverünknek egy olyan UDP csomagot, ahol
forrásként az A szerver echo portját adja
meg, célnak pedig a B szerver echo portját.
Ezután a két szerver elkezdi egymás
között passzolgatni ezt az egyetlen csomagot. A
támadó még több ilyen csomag
befecskendezésével pillanatok alatt képes
leterhelni a két szervert és helyi
hálózatot. Hasonló problémák
vannak a belső chargen
portjával is. Egy hozzáértő
rendszergazda ezért kikapcsolja az összes ilyen
inetd-alapú belső tesztelő
szolgáltatást.
Az álcázott csomagok
felhasználhatóak a rendszermag
útválasztó
gyorsítótárának
túlterhelésére is. Ezzel kapcsolatban
nézzük meg a
net.inet.ip.rtexpire
,
rtminexpire
és
rtmaxcache
sysctl változókat.
A véletlenszerű IP-címekkel megcímzett
álcázott csomagok hatására a
rendszermag létrehoz mindegyikőjükhöz egy
ideiglenesen pufferelt utat az útválasztó
táblázatában, amelyet a netstat
-rna | fgrep W3 paranccsal tudunk lekérdezni.
Az ilyen útvonalak nagyjából 1600
másodperc múlva elévülnek. Ha a
rendszermag észleli, hogy a
gyorsítótárazott
útválasztási táblázat
mérete túlságosan megnövekedett, akkor
automatikusan csökkenti az rtexpire
értékét, de soha nem megy a
rtminexpire
alá. Ebből
két probléma adódik:
A rendszermag nem reagál elég gyorsan amikor egy alig terhelt szervert hirtelen megtámadnak.
Az rtminexpire
nem elég kicsi
ahhoz, hogy a rendszermag túléljen egy
tartósabb rohamot.
Ha a szervereink az internethez T3 (kb. 45 Mbit/s) vagy
gyorsabb összeköttetésen keresztül
csatlakoznak, akkor határozottan javasolt kézileg
behangolni a sysctl(8) segítségével az
rtexpire
és az
rtminexpire
értékeket. Soha ne
állítsuk egyiket sem nullára (hacsak nem
akarjuk összeomlasztani a gépünket). Ha
például mind a kettőt 2 másodpercre
állítjuk, akkor az többnyire elegendő az
útválasztási táblázat
megvédéséhez.
Van néhány dolog, amit a Kerberos és az
ssh esetén ajánlatos tisztázni,
mielőtt használjuk ezeket. A Kerberos 5 egy
kifogástalan hitelesítési protokoll. A
telnet és
rlogin Kerberos által
módosított változatában vannak olyan
hibák, amelyek alkalmatlanná teszik ezeket a
bináris adatfolyamok helyes kezelésére.
Sőt, alapértelmezés szerint a Kerberos nem
titkosítja a kapcsolatot, csak ha megadjuk neki a
-x
kapcsolót. Az
ssh alapértelmezés
szerint mindent titkosít.
Az ssh minden szempontból nagyon jól teljesít kivéve, hogy alapértelmezés szerint átküldi a kulcsokat is. Ez azt jelenti, hogy ha van egy olyan biztonságos munkaállomásunk, ahol a rendszer többi részéhez tartozó kulcsainkat tartjuk és egy nem biztonságos gépre akarunk vele ssh-n keresztül belépni, akkor a kulcsaink használatóvá válnak. A tényleges kulcsokat ugyan nem látja senki, de a bejelentkezés során az ssh megnyit egy közvetítéshez használt portot, amit a nem biztonságos gépen a támadó egy feltört root hozzáférés birtokában ki tud használni úgy, hogy a kulcsaink segítségével hozzá tudjon férni egy másik olyan géphez, amelyet a kulcsok nyitnak.
Ha lehetséges, akkor a személyzet bejelentkeztetéséhez az ssh-t és Kerberost együttesen használjuk. Az ssh lefordíható Kerberos támogatással. Ezzel csökkentjük a potenciálisan kiszivárgó ssh kulcsok esélyét, miközben jelszavainkat a Kerberosszal védjük. Az ssh kulcsokat csak biztonságos gépekről és csak automatizált feladatok esetén használjuk (amire a Kerberos lényegében nem alkalmas). Emellett javasoljuk azt is, hogy az ssh beállításai között tiltsuk le a kulcsok átküldését (key forwarding) vagy használjuk az from=IP/DOMAIN opciót, amivel az ssh csak a megadott gépekről engedi az authorized_keys állomány és a így benne levő kulcsok használatát.
Minden UNIX rendszer használójához tartozik egy jelszó is a hozzáféréséhez. Teljesen nyilvánvalónak tűnik, hogy ezt a jelszót csak az adott felhasználó és az adott operációs rendszer ismeri. A jelszavakat a titokban tartásukhoz ún. “csapóajtó függvényekkel” titkosítják, amelyeket könnyű titkosítani, ám nehéz visszafejteni. Tehát amit egy perccel ezelőtt még nyilvalónak tituláltunk, az mostanra már nem is teljesen igaz: valójában az operációs rendszer sem ismeri a jelszót. Az operációs rendszer csak a jelszó titkosított változatát ismeri. A jelszó “titkosítatlan” formáját csak nyers erő igényebevételével tudjuk megkeresni az összes lehetséges jelszó szénakazlában.
Sajnos, annak idején, amikor a jelszavak titkosítása bekerült a UNIX-ba, egyedül a DES, vagy más néven a Data Encryption Standard (Adattitkosítási szabvány) jött szóba. Ez alapvetően nem jelentett problémát az Egyesült Államok állampolgárai számára, de mivel a DES forráskódját nem lehetett kivinni az Egyesült Államokból, a FreeBSD-nek találnia kellett valami olyasmit, ami mind megfelel az Egyesült Államok törvényeinek, mind pedig kompatibilis marad az összes többi DES-t használó UNIX variánssal.
Ezt úgy oldották meg, hogy felosztották a titkosítással foglalkozó függvénykönyvtárakat, így az Egyesült Államokban élő felhasználók tudtak DES könyvtárakat telepíteni és használni, miközben a többi nemzet felhasználói olyan más titkosítási módszert tudtak választani, amit kinn is lehetett alkalmazni. Ennek tulajdonítható, hogy a FreeBSD alapértelmezés szerint az MD5 segítségével titkosít. Az MD5-öt a DES-nél sokkalta biztonságosabbnak tartják, ezért a DES telepítésének lehetőségét leginkább csak kompatibilitási okokból ajánlották fel.
Jelenleg a könyvtár ismeri a DES, MD5 és Blowfish függvényeit. A FreeBSD a jelszavak titkosításához alapból az MD5-öt használja.
Nagyon könnyen meg tudjuk mondani, hogy a FreeBSD éppen melyik titkosítási módszert alkalmazza. Ennek egyik lehetősége, ha az /etc/master.passwd állományt vizsgáljuk meg. Az MD5 függvényével titkosított jelszavak hosszabbak, mint a DES függvényével titkosítottak és a $1$ karakterekkel kezdődnek. A $2a$ karakterekkel kezdődő jelszavakat Blowfish-sel titkosították. A DES kódolású jelszavaknak nincs semmilyen különleges ismertetőjelük, de általánosságban elmondható róluk, hogy rövidebbek az MD5 jelszavaknál és olyan 64 karakteres ábécével kódolják ezeket, amelyek nem tartalmazzák a $ karaktert, így tehát a viszonylag rövid, nem dollárjellel kezdődő karakterláncok minden bizonnyal DES kódolású jelszavak.
Az új jelszavak kódolásához használt formátumot az /etc/login.conf állományban tárolt passwd_format bejelentkezési tulajdonság adja meg, amelynek értékei des, md5 vagy blf lehetnek. A login.conf(5) man oldalon tájékozódhatunk bővebben a bejelentkezési tulajdonságokról.
A FreeBSD alapértelmezés szerint támogatja az OPIE-t (One-time Passwords In Everything, azaz “Egyszeri jelszavak mindenben”), ami alapból az MD5 függvényét használja.
A jelszavak három fajtáját fogjuk a továbbiakban tárgyalni. Az első a megszokott UNIX stílusú avagy Kerberos jelszó. Ezt a továbbiakban “UNIX jelszónak” nevezzük. A második fajtában az OPIE opiekey(1) nevű segédprogramja által generált és a bejelentkezésnél a opiepasswd(1) által elfogadott jelszavak tartoznak. Ezeket “egyszeri jelszavaknak” fogjuk nevezni. A jelszavak utolsó típusa az a titkos jelszó, amit az opiekey programnak (és néha a opiepasswd programnak) adunk meg, ami ebből egyszer használatos jelszavakat állít elő. Ezt innentől “titkos jelszónak” vagy csak egyszerűen “jelszónak” hívjuk.
A titkos jelszónak semmi köze sincs a UNIX jelszavunkhoz. Természetesen megegyezhetnek, de ezt nem ajánljuk. Az OPIE által használt titkos jelszavaknak nem kell a régi UNIX jelszavakhoz hasonlóan legfeljebb 8 karakteresnek lenniük [8], bármekkorát használhatunk. A hat vagy hét szóból álló jelszavak ilyenkor igen gyakoriak. Az OPIE jobbára a UNIX jelszórendszerétől teljesen függetlenül működik.
A jelszavak mellett két másik fajta adat fontos az OPIE számára. Közülük az egyiket “magnak” vagy “kulcsnak” nevezik, ami két betűből és öt számjegyből áll. A másik az “iterációk száma”, ami egy 1 és 100 közötti számot takar. Az OPIE úgy hozza létre az egyszeri jelszavakat, hogy egymás után fűzi a magot és a titkos jelszót, majd az iterációk megadott számának megfelelő mennyiségben kiszámolja rá az MD5 függvény értékét és az eredményt hat rövid angol szóba önti. Ez a hat angol szó lesz a mi egyszeri jelszavunk. A hitelesítéssel foglalkozó rendszer (elsősorban a PAM) figyelemmel kíséri a legutoljára használt egyszeri jelszavunkat, és csak akkor engedi a felhasználót hitelesíteni, ha az általa megadott jelszó kódolt változata megegyezik az előzőleg megadott jelszaváéval. A csapóajtó függvények használata miatt lehetetlen legenerálni a következő egyszeri jelszót, ha a sikerült megszereznünk az egyiket. Az iterációk száma minden egyes sikeres bejelentkezés után csökken eggyel, amivel a felhasználót és a bejelentkeztető programot szinkronban tartja. Amikor így az iterációk száma eléri az egyet, az OPIE-t újra kell inicializálni.
Az említésre kerülő rendszerek mindegyikéhez tartozik néhány program. Az opiekey bekéri az iterációk számát, a magot és a titkos jelszót, majd előállít egy egyszer használatos jelszót vagy azok folytonos listáját. Az opiepasswd az OPIE inicializálásért, a jelszavak, az iterációk számának és a mag megváltoztatásáért felelős. Egyaránt elfogad titkos jelmondatot, iterációs számot vagy magot és egy egyszeri jelszót. Az opieinfo megvizsgálja a felhasználókra vonatkozó adatbázist (/etc/opiekeys) és kiírja az adott felhasználó által használt iterációs számot és magot.
Négyféle különböző műveletről fogunk most itt beszélni. Az elsőben egy biztonságos kapcsolaton keresztül elsőként inicializáljuk az egyszeri jelszavakat, vagy megváltoztatjuk a jelszót vagy a magot az opiepasswd segítségével. A második műveletben ugyanarra adjuk ki az opiepasswd parancsot egy nem biztonságos kapcsolaton keresztül az opiekey paranccsal együtt egy biztonságos kapcsolaton keresztül. A harmadikban az opiekey használatával nem biztonságos kapcsolaton keresztül jelentkezünk be. A negyedikben az opiekey paranccsal létrehozunk egy adott mennyiségű kulcsot, amelyeket aztán leírhatunk vagy kinyomtathatunk, hogy magunkkal tudjuk vinni olyan helyre, ahonnan nem tudnk biztonságos módon csatlakozni.
Az OPIE első inicializálásához adjuk ki az opiepasswd parancsot:
% opiepasswd -c [grimreaper] ~ $ opiepasswd -f -c Adding unfurl: Only use this method from the console; NEVER from remote. If you are using telnet, xterm, or a dial-in, type ^C now or exit with no password. Then run opiepasswd without the -c parameter. Using MD5 to compute responses. Enter new secret pass phrase: Again new secret pass phrase: ID unfurl OTP key is 499 to4268 MOS MALL GOAT ARM AVID COED
A figyelmeztetés fordítása:
Ezt a módszert csak konzolról alkalmazzuk, SOHA ne távoli kapcsolaton keresztül! Ha telnetet, xtermet vagy betárcsázós kapcsolatot használunk, akkor azonnal nyomjunk ^C-t vagy ne adjunk meg jelszót.
Az Enter new secret pass phrase: vagy Enter secret password: kérdések után adjunk meg egy jelmondatot, illetve jelszót. Ne felejtsük el, hogy ez nem bejelentkezéshez használt jelszó lesz, hanem ebből jönnek majd létre az egyszeri kulcsaink. Az “ID” sor adja meg az aktuális példányunk paramétereit: a bejelentkezéshez használt nevünket, az iterációk számát és a magot. Amikor a bejelentkezések során a rendszer emlékszik a paraméterekre és megjeleníti ezeket, nem kell megjegyeznünk. Az utolsó sor adja meg a paramétereinknek és a titkos jelszavunknak megfelelő egyszeri jelszót. Ha most azonnal akarnánk bejelentkezni, akkor ezt az egyszeri jelszót kellene hozzá használnunk.
Ha egy nem biztonságos kapcsolaton keresztül akarjuk inicializálni vagy megváltoztatni a jelszavunkat, akkor szükségünk lesz valahol egy megbízható kapcsolatra, ahol le tudjuk futtatni az opiekey parancsot. Ez lehet egy számunkra biztonsági szempontból elfogadható gép parancssora. Emellett ki kell találnunk egy iterációs számot (erre a 100 egy jó választás) és adnunk egy magot vagy használni egy véletlenszerűen generáltat. Az inicializálás színtere felé vezető nem biztonságos kapcsolaton keresztül adjuk ki az opiepasswd parancsot:
% opiepasswd Updating unfurl: You need the response from an OTP generator. Old secret pass phrase: otp-md5 498 to4268 ext Response: GAME GAG WELT OUT DOWN CHAT New secret pass phrase: otp-md5 499 to4269 Response: LINE PAP MILK NELL BUOY TROY ID mark OTP key is 499 gr4269 LINE PAP MILK NELL BUOY TROY
Az alapértelmezett mag elfogadásához nyomjuk le a Return billentyűt. Mielőtt megadnánk a hozzáférés jelszavát, menjünk át a biztonságos kapcsolatra és adjuk meg neki ugyanezeket a paramétereket:
% opiekey 498 to4268 Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: GAME GAG WELT OUT DOWN CHAT
Most váltsunk vissza a nem biztonságos kapcsolatra és másoljuk be az így generált egyszeri jelszót a megfelelő programba.
Miután sikeresen inicializáltuk az OPIE-t és bejelentkezünk, a következőket láthatjuk:
% telnet example.com Trying 10.0.0.1... Connected to example.com Escape character is '^]'. FreeBSD/i386 (example.com) (ttypa) login: felhasználói_név otp-md5 498 gr4269 ext Password:
Mellékesen megjegyezzük, hogy az OPIE paranccsorának van egy (itt nem látható) hasznos képessége: ha Return billentyűt nyomunk a jelszó bekérésekor, akkor a program megmutatja a begépelt betűket, így láthatjuk pontosan mit is írunk be. Ez nagyon kényelmes lehet olyankor, amikor valahonnan, például egy lapról olvassuk a jelszót.
A bejelentkezéshez ekkor le kell valahogy generálnunk az egyszeri jelszavunkat. Ezt egy megbízható rendszeresen tudjuk megtenni az opiekey lefuttatásával. (Ennek vannak DOS-os, Windows-os és Mac OS-es változatai is.) Paraméterként az iterációs számot és a magot kell megadnunk. Ezt akár közvetlenül át is másolhatjuk annak a gépnek a bejelentkezési képernyőjéről, ahova be akarunk jelentkezni.
A megbízható rendszeren tehát:
% opiekey 498 to4268 Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: GAME GAG WELT OUT DOWN CHAT
Most már megvan a bejelentkezéshez szükséges egyszeri jelszavunk.
Néha olyan helyekre kell mennünk, ahol se egy megbízható gép, sem pedig biztonságos kapcsolat nem található. Ilyen esetekben megadhatjuk az opiekey parancsnak, hogy előre gyártson le több egyszer használatos jelszót, amit később aztán ki tudunk nyomtatni. Például:
% opiekey -n 5 30 zz99999 Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: <secret password> 26: JOAN BORE FOSS DES NAY QUIT 27: LATE BIAS SLAY FOLK MUCH TRIG 28: SALT TIN ANTI LOON NEAL USE 29: RIO ODIN GO BYE FURY TIC 30: GREW JIVE SAN GIRD BOIL PHI
Az -n 5
öt kulcsot kér
egymás után, a 30
pedig megadja
az utolsó iterációs számot.
Vegyük észre, hogy a kulcsokat a
felhasználás sorrendjével
ellentétes sorrendben írja ki
a program. Ha igazán paranoiások vagyunk, akkor
írjuk le kézzel a jelszavakat. Ha viszont annyira
nem, akkor egyszerűen küldjük át ezeket az
lpr parancsnak. Megfigyelhetjük, hogy
minden sorban látható az iterációs
szám és a hozzá tartozó egyszeri
jelszó. Hasznos lehet a felhasználás
szerinti felírni a jelszavakat.
Az OPIE képes a bejelentkezéshez használt IP-címek alapján leszűkíteni a UNIX jelszavak használatát. Ehhez az /etc/opieaccess használható, amely alapból megtalálható a rendszerünkön. Az opieaccess(5) man oldalán találhatjuk meg a rá vonatkozó információkat és az összes vele kapcsolatos biztonsági megfontolást.
Íme egy példa az opieaccess állományra:
permit 192.168.0.0 255.255.0.0
Ezzel a sorral megengedjük a UNIX jelszavak használatát minden olyan felhasználó számára, akinek az IP-je illeszkedik a megadott címre és maszkra (ez viszont álcázással kijátszható).
Ha az opieaccess állományból egyetlen szabály sem illeszkedik, akkor alapértelmezés szerint nem engedélyezettek a nem OPIE típusú jelszavak.
Aki ismeri az inetd(8) programot, az már biztosan hallott a TCP kapcsolatok burkolásáról, eredeti nevén a a TCP wrapperekről. Azonban csak kevesek képesek felfogni ezek valódi hasznát. Úgy néz ki, mindenki csak tűzfalakon keresztül akarja megoldani a hálózati kapcsolatot kezelését. Habár a tűzfalakat sok mindenre fel lehet ugyan használni, egyetlen tűzfal nem képes például szövegesen válaszolni a kapcsolatok kezdeményezőinek. Ellenben bármelyik TCP-wrapper szoftver képes erre, sőt még többre is. A következő néhány szakaszban szemügyre vesszük a TCP wrapperek számos lehetőségét, és ahol lehetséges, ott konfigurációs állományokkal is illusztráljuk ezek használatát.
A TCP burkoló szoftverek kiterjesztik az inetd képességeit minden alatta dolgozó szerverdémon támogatására. Ezzel a módszerrel meg lehet oldani a naplózást, üzenetek küldését a kapcsolatokhoz, a démonok elérhetőségének korlátozását stb. Noha ezen lehetőségek közül néhány tűzfallal is megvalósítható, ezzel nem csupán egy további védelmi réteget húzunk fel a rendszerünk köré, hanem túllépjük mindazt, amit egy tűzfallal irányítani lehet.
A TCP burkolók használatával hozzáadott funkcionalitás azonban nem helyettesít egy jó tűzfalat. A TCP kapcsolatok burkolását tűzfallal vagy más egyéb biztonsági megoldással együtt tudjuk csak eredményesen használni, viszont a rendszerünk biztonságában egy újabb remek védelmi vonalat képvisel.
Mivel lényegében ez az inetd beállításának kibővítése, ezért a szakasz elolvasásához feltételezzük az inetd beállításával kapcsolatos tudnivalók ismeretét.
Megjegyzés: Bár az inetd(8) által indított programok nem egészen tekinthetően “démonoknak”, hagyományosan démonnak hívják ezeket. Ezért rájuk ebben a szakaszban is ezt a kifejezést használjuk.
FreeBSD alatt a TCP burkolók
használatának egyetlen feltétele
csupán annyi, hogy az inetd
parancsot a -Ww
paraméterrel
indítsuk az rc.conf
állományból. Az egyébként az
alapbeállítás. Természetesen nem
árt, ha helyesen állítjuk be az
/etc/hosts.allow állományt
is, ellenkező esetben a syslogd(8)
egyébként dobálni fogja erről az
üzeneteket.
Megjegyzés: Eltérően a TCP burkolók egyéb implementációitól, a hosts.deny állományt itt már nem használjuk. Minden beállítást az /etc/host.allow állományba kell raknunk.
A legegyszerűbb konfiguráció esetén a démonok kapcsolódását egyszerűen engedélyezhetjük vagy letilthatjuk az /etc/hosts.allow állományban szereplő beállításokkal. A FreeBSD alapértelmezett beállításai szerint minden inetd által indított démonhoz lehet kapcsolódni. Ennek megváltoztatásával az alapkonfiguráció áttekintése után foglalkozunk.
Az alapkonfiguráció általában démon : cím : cselekvés alakú. Itt a démon egy olyan démonra utal, amelyet az inetd indított el. A cím egy érvényes hálózati név, IP-cím vagy szögletes zárójelek ([ ]) között megadott IPv6 formátumú cím. A cselekvést tartalmazó mező (action) lehet allow vagy deny annak megfelelően, hogy engedélyezzük vagy tiltjuk a megadott címről a csatlakozást. Nem szabad elfelejtenünk, hogy az így megadott beállítások közül mindig az elsőként illeszkedő érvényesül, ami arra utal, hogy a konfigurációs állományban szereplő szabályok egymás után növekvő sorrendben értékelődnek ki. Ha valamelyikük illeszkedik, akkor a keresés megáll.
Rengeteg egyéb opció is megadható még, de ezekről csak a későbbi szakaszokban fogunk szólni. Egy egyszerű konfigurációs állomány már ennyi információból is könnyedén összeállítható. Például, ha engedélyezni szeretnénk a POP3 kapcsolatokat a mail/qpopper démonon keresztül, akkor a következő sorral kell kiegészítenünk a hosts.allow állományt:
# Ez a sor kell a POP3 kapcsolatokhoz: qpopper : ALL : allow
Miután hozzáadtuk ezt a sort, az
inetd szervert újra kell
indítanunk. Ezt vagy a kill(1) paranccsal, vagy
pedig az /etc/rc.d/inetd szkript
restart
paraméterével
tehetjük meg.
A TCP kapcsolatok burkolásánál is meg lehet adni további opciókat. Segítségükkel még jobban irányítani tudjuk a kapcsolatok kezelésének módját. Néhány esetben az is hasznos lehet, ha küldünk valamilyen választ az egyes gépeknek vagy démonoknak. Máskor szükségünk lehet a csatlakozások naplózására vagy e-mailen keresztüli jelzésére a rendszergazda felé. Teljesen más helyezetekben csak a helyi hálózatunkról engedjük meg a csatlakozást. Ez mind lehetséges a helyettesítő jelekként ismert beállítási opciók, kiterjesztő karakterek és külső parancsok végrehajtásának használatával. A következő két szakasz az ilyen és ehhez hasonló szituációk megoldására íródott.
Tegyük fel, hogy olyan helyezetben vagyunk, amikor a
kapcsolatot tiltani akarjuk, de közben azért
szeretnénk erről értesíteni a
kapcsolatot kezdeményező felet is. Hogyan tudjuk
ezt megcsinálni? Ezt a twist
nevű opcióval tehetjük meg. Amikor
megpróbál valaki csatlakozni, akkor a
twist
hívódik meg és
végrehajt egy megadott parancsot vagy szkriptet. Erre
találunk is egy példát a
hosts.allow
állományban:
# The rest of the daemons are protected. ALL : ALL \ : severity auth.info \ : twist /bin/echo "You are not welcome to use %d from %h."
Ez a példa a következő üzenetet jeleníti meg: “You are not allowd to use a démon neve from hálózati név.” (Jelentése: “A démon neve démont nem érheti el a hálózati név helyről!”) Ez minden olyan démon esetén megjelenik, amiről nem nyilatkoztunk korábban az állományban. Ezzel nagyon könnyen vissza tudunk küldeni egy választ a kapcsolat kezdményezője felé, miután a kapcsolatot eldobtuk. Vegyük észre, hogy a visszaküldendő üzenetet " karakterek közé kell tennünk, ez alól semmi sem kivétel.
Figyelem: DoS támadást lehet előidézni azzal, ha egy támadó vagy támadók egy csoportja csatlakozási kérelmekkel kezdi el bombázni a démonainkat.
Ilyen esetekben használhatjuk a
spawn
opciót is. A
spawn
a twist
opcióhoz hasonlóan implicit módon tiltja
a kapcsolódást és arra
használható, hogy lefuttassunk vele egy
parancsot vagy szkriptet. A spawn
azonban a
twist
opciótól
eltérően nem küld vissza semmilyen
választ a kapcsolatot létrehozni
kívánó egyénnek. Ehhez
példaként vegyük a következő sort
a konfigurációs
állományban:
# We do not allow connections from example.com: ALL : .example.com \ : spawn (/bin/echo %a from %h attempted to access %d >> \ /var/log/connections.log) \ : deny
Ezzel a *.example.com címtartományból érkező összes kapcsolódási kísérlet sikertelen lesz, miközben ezzel egyidőben a /var/log/connections.log állományba rögzítjük a csatlakozni akaró egyén hálózati nevét, IP-címét és a démont.
A korábban már kifejtett helyettesítő karakterek túl, mint például az %a, még léteznek továbbiak is. Róluk a hosts_access(5) man oldalon találhatjuk meg a teljes listát.
Az eddigi példákban folyamatosan csak az ALL opciót adtuk meg. Azonban rajta kívűl léteznek mások is, amivel a megoldás funkcionalitását még egy kicsivel tovább növelhetjük. Például az ALL használható egy démon, egy tartomány vagy egy IP-cím illesztésére. A másik ilyen helyettesítő jel a PARANOID, amelyet olyan gépek IP-címének illesztésekor alkalmazhatunk, ami feltételezhetően hamis. Más szóval a PARANOID olyan cselekvések megadását teszi lehetővé, amelyek akkor hajtódnak végre, amikor a kapcsolatot létrehozó gép IP-címe eltér a hálózati nevétől. A most következő példa valószínűleg segít fényt deríteni ennek lényegére:
# Block possibly spoofed requests to sendmail: sendmail : PARANOID : deny
A példában minden olyan kapcsolatkérést elutasítunk, ami a sendmail felé a hálózati névtől eltérő IP-címről irányul.
Figyelem: Ha rossz DNS beállításokat használunk, a PARANOID megadásával súlyosan mozgásképtelenné tehetjük a kliensünket vagy szerverünket. Ezért legyünk óvatosak vele!
A helyettesítő jelekről és hozzájuk tartozó további lehetőségekről a hosts_access(5) man oldalon tájékozódhatunk.
A hosts.allow állományból ki kell venni az első sort ahhoz, hogy bármilyen egyéb konfigurációs beállítás működőképes legyen. Ezt említettük a szakasz elején is.
A Kerberos egy olyan járulékos rendszer/protokoll, amellyel a felhasználók egy biztonságos szerver szolgáltatásain keresztül tudják hitelesíteni magukat. Ilyen szolgáltatás többek közt a távoli bejelentkezés, távoli másolás, a rendszeren belüli biztonságos másolás és minden olyan egyéb veszélyes feladat, amit számottevően megbízhatóbbá és irányíthatóbbá tettek.
A következő utasítások a FreeBSD-hez mellékelt Kerberos beállításához adnak útmutatást. A teljes leíráshoz azonban érdemes fellapoznunk a menet közben hivatkozott man oldalakat is.
A Kerberos a FreeBSD egyik választható komponense. Legkönnyebben úgy tudjuk feltelepíteni, ha a FreeBSD telepítése során a sysinstall programban kiválasztjuk a krb4 vagy krb5 terjesztések valamelyikét. Ezzel felrakhatjuk a Kerberos “eBones” (KerberosIV) vagy “Heimdal” (Kerberos5) elnevezésű változatait. A FreeBSD azért tartalmazza ezeket az implementációkat, mert nem az Amerikai Egyesült Államokban vagy Kanadában fejlesztették, így az Egyesült Államok titkosításokkal kapcsolatos kiviteli korlátozások korában minden olyan rendszer adminisztrátora el tudta érni, aki nem ezekben az országokban lakott.
A Kerberos MIT által fejlesztett implementációját egyébként a Portgyűjteményből a security/krb5 porton keresztül érhetjük el.
Ezt a lépést csak a Kerberos szerveren kell elvégezni. Először is győződjünk meg róla, hogy semmilyen korábbi Kerberos adatbázis nem található a gépen. Váltsunk az /etc/kerberosIV könyvtárra és ellenőrizzük a következő állományok meglétét:
# cd /etc/kerberosIV # ls README krb.conf krb.realms
Ha rajtuk kívül további állományok is feltűnnének (mint például a principal.* vagy master_key), akkor a kdb_destroy paranccsal pusztítsuk el a régi Kerberos adatbázist, vagy ha nem fut már a Kerberos, akkor egyszerűen csak törüljük le ezeket.
Ezután lássunk neki a krb.conf és krb.realms állományok átírásán keresztül a Kerberos egyes övezeteinek (realm) létrehozásához. Itt most az EXAMPLE.COM lesz a létrehozandó övezet, a hozzá tartozó szerver pedig a grunt.example.com. Így szerkesszük át vagy készítsünk el a neki megfelelő krb.conf állományt:
# cat krb.conf EXAMPLE.COM EXAMPLE.COM grunt.example.com admin server CS.BERKELEY.EDU okeeffe.berkeley.edu ATHENA.MIT.EDU kerberos.mit.edu ATHENA.MIT.EDU kerberos-1.mit.edu ATHENA.MIT.EDU kerberos-2.mit.edu ATHENA.MIT.EDU kerberos-3.mit.edu LCS.MIT.EDU kerberos.lcs.mit.edu TELECOM.MIT.EDU bitsy.mit.edu ARC.NASA.GOV trident.arc.nasa.gov
A többi övezetnek valójában nem feltétlenül kell itt lennie. Ezek csupán azért szerepelnek itt, hogy bemutassák miként lehet egyetlen géphez hozzárendelni egyszerre több övezetet is. Az egyszerűség kedvéért nyugodtan elhagyhatóak.
Az első sor nevezi meg a rendszer által működtetett övezeteket. Az utána következő sorokban övezeteket és hálózati neveket láthatunk. Itt az első elem egy övezetet nevez meg, a második elem pedig az övezet “kulcselosztó központját” (key distribution center). A hálózati nevet követő admin server kulcsszavak arra utalnak, hogy az adott gép adminisztratív szerepet ellátó adatbázist is tartalmaz. Ezeket a fogalmakat részleteiben a Kerberos man oldalain ismerhetjük meg.
Ezután hozzá kell adnunk a grunt.example.com nevű gépet az EXAMPLE.COM övezethez, valamint az .example.com tartományban levő összes géphez létre kell hoznunk egy bejegyzést az EXAMPLE.COM övezetben. A krb.realms állományt ehhez a következőképpen kellene módosítanunk:
# cat krb.realms grunt.example.com EXAMPLE.COM .example.com EXAMPLE.COM .berkeley.edu CS.BERKELEY.EDU .MIT.EDU ATHENA.MIT.EDU .mit.edu ATHENA.MIT.EDU
Ismét hozzátesszük, hogy a többi övezetnek nem kötelező itt szerepelnie. Ezek csupán azt demonstrálják, hogy miként kell egy gépet egyszerre több övezethez is beállítani. Az átláthatóság kedvéért minden további nélkül eltávolíthatjuk ezeket.
Itt az első sor az adott rendszert elhelyezi egy nevesített övezetbe. A többi sor azt mutatja meg, hogyan kell alapértelmezett módon a meghatározott altartományokba tartozó gépeket egy nevesített övezethez hozzárendelni.
Most már készen állunk az adatbázis létrehozására. Ehhez egyedül a Kerberos szerverét (avagy Kulcselosztó központját) kell elindítanunk. Adjuk ki a kdb_init parancsot:
# kdb_init Realm name [default ATHENA.MIT.EDU ]: EXAMPLE.COM You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter Kerberos master key:
Az üzenet fordítása:
Most az adatbázis mesterkulcsát kell megadni. Fontos, hogy NE FELEJTSÜK EL ezt a jelszót.
Most el kell mentenünk a kulcsot, így a helyi gépen futó szerverek fel tudják szedni. Ehhez a kstash parancsra van szükségünk:
# kstash Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE!
Az üzenet fordítása:
A Kerberos mesterkulcsának jelenlegi változata: 1. VIGYÁZAT, megadták a mesterkulcsot!
Ez elmenti a titkosított mesterkulcsot az /etc/kerberosIV/master_key állományba.
Mindegyik Kerberosszal őrzött rendszerrel kapcsolatban két ún. szereplőt (principal) kell még hozzátennünk az adatbázishoz. A nevük kpasswd és rcmd. Minden rendszerhez létre kell hoznunk ezeket a szereplőket, példányonként (instance) az egyes rendszerek neveivel.
A kpasswd és rcmd démonok teszik lehetővé a többi rendszer számára, hogy megváltoztathassák a Kerberos jelszavukat, valamint hogy futtathassák az rcp(1), rlogin(1) és rsh(1) parancsokat.
Vegyük fel ezeket a bejegyzéseket is:
# kdb_edit Opening database... Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Previous or default values are in [brackets] , enter return to leave the same, or new value. Principal name: passwd Instance: grunt <Not found>, Create [y] ? y Principal: passwd, Instance: grunt, kdc_key_ver: 1 New Password: <---- írjuk be, hogy “RANDOM” Verifying password New Password: <---- írjuk be, hogy “RANDOM” Random password [y] ? y Principal's new key version = 1 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? Max ticket lifetime (*5 minutes) [ 255 ] ? Attributes [ 0 ] ? Edit O.K. Principal name: rcmd Instance: grunt <Not found>, Create [y] ? Principal: rcmd, Instance: grunt, kdc_key_ver: 1 New Password: <---- írjuk be, hogy “RANDOM” Verifying password New Password: <---- írjuk be, hogy “RANDOM” Random password [y] ? Principal's new key version = 1 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? Max ticket lifetime (*5 minutes) [ 255 ] ? Attributes [ 0 ] ? Edit O.K. Principal name: <---- ha nem adunk meg semmit, akkor kilép
Most pedig kivonatolni kell azokat a példányokat, amelyek szolgáltatást definiálnak a gépen. Erre az ext_srvtab parancsot használjuk. Ennek eredményeképpen keletkezik egy állományt, amelyet biztonságos eszközökkel át kell másolni vagy át kell mozgatni az egyes Kerberos kliensek /etc könyvtárába. Ennek az állománynak egyaránt jelent kell lennie a szerveren és a kliensen is, nélküle a Kerberos működésképtelen.
# ext_srvtab grunt Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Generating 'grunt-new-srvtab'....
Ez a parancs most létrehozott egy ideiglenes állományt, amit át kell nevezni az srvtab névre, hogy megtalálhassák a szerverek. Az eredeti rendszeren a mv(1) paranccsal tudjuk a helyére rakni:
# mv grunt-new-srvtab srvtab
Ha egy kliensnek szánjuk az állományt és a hálozatunkat nem tekinthetjük biztonságosnak, akkor a kliens-new-srvtab állományt másoljuk egy mozgatható adathordozóra és megbízható módon jutassuk el. Ne felejtsük el az állományt srvtab néven átrakni a kliens /etc könyvtárába és az engedélyeit 600-ra állítani:
# mv grumble-new-srvtab srvtab # chmod 600 srvtab
Ezt követően rögzítenünk kell néhány felhasználót is adatbázisban. Először is hozzunk létre egy bejegyzést a janos nevű felhasználónak. Ezt a kdb_edit parancs kiadásával tesszük meg:
# kdb_edit Opening database... Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Previous or default values are in [brackets] , enter return to leave the same, or new value. Principal name: janos Instance: <Not found>, Create [y] ? y Principal: janos, Instance: , kdc_key_ver: 1 New Password: <---- adjunk meg egy biztonságos jelszót Verifying password New Password: <---- itt ismét adjuk meg a jelszót Principal's new key version = 1 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? Max ticket lifetime (*5 minutes) [ 255 ] ? Attributes [ 0 ] ? Edit O.K. Principal name: <---- ha nem írunk be semmit, akkor kilép
Elsőként a Kerberos démonait kell beindítanunk. Ezzel kapcsolatban megjegyeznénk, hogy ha ehhez megfelelően átírtuk az /etc/rc.conf állományunkat, akkor ez az újraindítással együtt magától lezajlik. Ezt csak a Kerberos szerveren kell megcsinálni. A Kerberos kliensei maguktól összeszedik a működésükhöz szükséges adatokat az /etc/kerberosIV könyvtárból.
# kerberos & Kerberos server starting Sleep forever on error Log file is /var/log/kerberos.log Current Kerberos master key version is 1. Master key entered. BEWARE! Current Kerberos master key version is 1 Local realm: EXAMPLE.COM # kadmind -n & KADM Server KADM0.0A initializing Please do not use 'kill -9' to kill this job, use a regular kill instead Current Kerberos master key version is 1. Master key entered. BEWARE!
A fenti figyelmeztetés fordítása:
A program leállítására ne a 'kill -9' parancsot, hanem a normális kill parancsot használjuk
Ezután a kinit parancs használatával próbáljunk meg az előbb létrehozott janos azonosítónak kérni egy jegyet:
% kinit janos MIT Project Athena (grunt.example.com) Kerberos Initialization for "janos" Password:
A klist paranccsal most próbáljuk meg kilistázni a tokeneket és így ellenőrizni, hogy valóban rendelkezünk velük:
% klist Ticket file: /tmp/tkt245 Principal: janos@EXAMPLE.COM Issued Expires Principal Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.EXAMPLE.COM@EXAMPLE.COM
Ezután a passwd(1) használatával próbáljuk meg megváltoztatni a jelszavunkat. Ezzel tudjuk ellenőrizni, hogy a kpasswd démon hozzáfér a Kerberos adatbázisához:
% passwd realm EXAMPLE.COM Old password for janos: New Password for janos: Verifying password New Password for janos: Password changed.
A Kerberos lehetővé teszi, hogy mindegyik olyan felhasználónak, akinek rendszergazdai jogokra lenne szüksége, a su(1) eléréséhez külön meg tudjunk adni egy jelszót. Most már tudunk mondani egy olyan azonosítót is, amely jogosult a su(1) használatával root jogokat szerezni. Ezt úgy tudjuk megoldani, ha az adott szereplőhöz társítunk egy root példányt. A kdb_edit használatával készíteni tudunk egy janos.root bejegyzést a Kerberos adatbázisában:
# kdb_edit Opening database... Enter Kerberos master key: Current Kerberos master key version is 1. Master key entered. BEWARE! Previous or default values are in [brackets] , enter return to leave the same, or new value. Principal name: janos Instance: root <Not found>, Create [y] ? y Principal: janos, Instance: root, kdc_key_ver: 1 New Password: <---- ide csak egy BIZTONSÁGOS jelszót adjuk meg! Verifying password New Password: <---- adjuk meg ismét a jelszót Principal's new key version = 1 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? Max ticket lifetime (*5 minutes) [ 255 ] ? 12 <--- ne állítsuk nagyon hosszúra! Attributes [ 0 ] ? Edit O.K. Principal name: <---- ha nem adunk meg semmit, akkor kilép
Ezt követően úgy tudunk megbizonyosodni a működéséről, hogy megpróbálunk neki tokeneket szerezni:
# kinit janos.root MIT Project Athena (grunt.example.com) Kerberos Initialization for "janos.root" Password:
Most rakjuk bele a felhasználót a root .klogin állományába:
# cat /root/.klogin janos.root@EXAMPLE.COM
Ezután próbáljunk meg kiadni a su(1) parancsát:
% su Password:
Nézzük meg milyen tokenjeink is vannak:
# klist Ticket file: /tmp/tkt_root_245 Principal: janos.root@EXAMPLE.COM Issued Expires Principal May 2 20:43:12 May 3 04:43:12 krbtgt.EXAMPLE.COM@EXAMPLE.COM
Az iménti példában létrehoztunk egy janos nevű szereplőt, amihez a root egy példányát rendeltük. Ez egy olyan felhasználón alapján történt, akinek a neve megegyezik a hozzá tartozó szereplővel, ami a Kerberosban alapértelmezés. Amennyiben a szükséges megjegyzések megtalálhatóak a root könyvtárában levő .klogin állományban, akkor a felhasználó.root formátumú szereplő.példány azonosító megengedi a felhasználó számára, hogy végrehajtsa a su(1) parancsot.
# cat /root/.klogin janos.root@EXAMPLE.COM
Ehhez hasonlóan, ha a felhasználó saját könyvtárában megtalálható egy ilyen állomány:
% cat ~/.klogin janos@EXAMPLE.COM jozsef@EXAMPLE.COM
Ezzel a konfigurációval bárki, aki janos felhasználóként vagy jozsef felhasználóként (a kinit parancson keresztül) hitelesítette magát EXAMPLE.COM övezetből, ezen a rendszeren (grunt) bejelentkezhet a janos nevű felhasználóként vagy hozzáférhet az állományaihoz az rlogin(1), rsh(1) vagy rcp(1) használatával.
Például janos most egy másik Kerberost használó rendszerre jelentkezik be:
% kinit MIT Project Athena (grunt.example.com) Password: % rlogin grunt Last login: Mon May 1 21:14:47 from grumble Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
Vagy jozsef jelentkezik be ugyanazon a gépen janos hozzáférésével (a janos nevű felhasználónak a fentebb bemutatt .klogin állomány található a könyvtárában és a Kerberos üzemeltetéséért felelős személy létrehozott egy jozsef nevű szereplőt egy null példánnyal):
% kinit % rlogin grunt -l janos MIT Project Athena (grunt.example.com) Password: Last login: Mon May 1 21:16:55 from grumble Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
A FreeBSD 5.1 után következő mindegyik FreeBSD kiadás már csak a Kerberos5 támogatást tartalmaz. Ezért bennük csak a Kerberos5 található meg, és a beállítása sok szempontból hasonlít a KerberosIV beállításához. A most következő információk csak és kizárólag a FreeBSD 5.0 kiadás után következőkben található Kerberos5 változatra vonatkoznak. A KerberosIV szolgáltatásait a felhasználók csomagként, a security/krb4 porton keresztül érhetik el.
A Kerberos egy hálózati kiegészítő rendszer/protokoll, amivel a felhasználók egy biztonságos szerveren keresztül képesek magukat azonosítani. A távoli bejelentkezések, távoli másolások, a rendszer belüli védett másolások valamint egyéb nagyon kockázatos feladatok, szolgáltatások biztonsága és felügyelete így jelentős mértékben javítható.
A Kerberos úgy írható le, mint az személyazonosságok ellenőrzésére feljogosított rendszer. Vagy tekinthetjük egy megbízható külső megfigyelő által végzett hitelesítési rendszernek is. A Kerberos csak egyetlen funkciót kínál fel — ez a felhasználók biztonságos hitelesítése a hálózaton. Viszont nem nyújt semmilyen felhatalmazási (mit csinálhatnak a felhasználók) vagy vizsgálati (mit csináltak végül a felhasználók) lehetőséget. Miután egy kliens és a szerver a Kerberos használatával azonosították egymást, az egymás közt folyó kommunikációjuk titkosításával képesek megőrzi az átáramló adatok sértetlenségét és lehallgathatatlanságát.
Ennek tükrében a Kerberos használata csak más olyan biztonsági módszerekkel együttesen javasolt, amelyek felhatalmazást és vizsgálati szolgáltatásokkal is rendelkeznek.
A most következő utasítások arra igyekeznek útmutatást adni, hogy miként használjuk a FreeBSD-vel együtt terjesztett Kerberos verziót. Azonban a teljes leírást csak a témához tartozó man oldalak átolvasásával együtt kapjuk meg.
A Kerberos telepítésének bemutatásához az alábbi névtereket fogjuk használni:
A DNS tartomány (“zóna”) az example.org lesz.
A Kerberos övezet az EXAMPLE.ORG lesz.
Megjegyzés: Kérjük, hogy még abban az esetben is valódi tartományneveket adjuk meg, amikor a Kerberos használatát csak a belső hálózaton tervezzük. Ezzel elkerülhetjük az egyes Kerberos övezetek együttműködése során felmerülő DNS problémákat.
A Kerberost az MIT hozta létre a hálózati biztonsággal kapcsolatos problémák egyik megoldásaként. A Kerberos erős titkosítást használ, ezért a kliensek képesek egy nem biztonságos hálózaton is azonosítani magukat a szerver felé (és fordítva).
A Kerberos egyaránt utal egy hálózati protokoll nevére és azokra programokra, amelyek implementálják (például Kerberos telnet). Az 5 a protokoll jelenlegi verziója, amit az RFC 1510 ír le.
A protokollnak számos szabad változata létezik, rengeteg típusú operációs rendszerre. A Massachusettsi Műszaki Intézet (Massachusetts Institute of Technology, MIT), ahol a Kerberost eredetileg kifejlesztették, napjainkban is folytatja a saját Kerberos csomagjának fejlesztését. Többnyire az Egyesült Államokban használják titkosításra, mivel régebben az amerikai kiviteli korlátozások voltak rá érvényesek. Az MIT Kerberos változata portként érhető el (security/krb5). A Heimdal Kerberos egy másik 5 verziójú implementáció, amit a kiviteli korlátozások elkerülése érdekében határozottan az Egyesült Államokon kívül fejlesztettek ki (ezért gyakran megtalálhatjuk a különböző nem kereskedelmi UNIX variánsokban). A Heimdal Kerberos terjesztés portként elérhető (security/heimdal) és kisebb méretben a FreeBSD alaptelepítésének is része.
Mivel ezzel az írással a legtöbb felhasználót kívánjuk segíteni, ezért a következő utasítások a FreeBSD telepítésében mellékelt Heimdal terjesztés használatát feltételezik.
A kulcselosztó központ (Key Distribution Center, avagy KDC) az a centralizált hitelesítési szolgáltatás, amit a Kerberos nyújt — lényegében az a számítógép, amely Kerberos-jegyeket bocsájt ki. A KDC “megbízhatónak” tekinthető a Kerberos által kialakított övezetben levő többi számítógép számára, ezért védelme kiemelten fontos.
Itt jegyeznénk meg, hogy habár a Kerberos szerver futtatása nagyon kevés számítógépes erőforrást igényel, ennek ellenére biztonsági szempontból egy külön számítógépet javasoljunk a kulcselosztó szerepének betöltéséhez.
Mielőtt nekifognánk a KDC konfigurálásának, ellenőrizzük, hogy az /etc/rc.conf tartalmazza a KDC működéséhez szükséges beállításokat (az elérési utakat természetesen a saját rendszerünk szerint állítsuk be):
kerberos5_server_enable="YES" kadmind5_server_enable="YES"
A következő lépésben vegyük szemügyre a Kerberos beállításait tartalmazó /etc/krb5.conf állományt:
[libdefaults] default_realm = EXAMPLE.ORG [realms] EXAMPLE.ORG = { kdc = kerberos.example.org admin_server = kerberos.example.org } [domain_realm] .example.org = EXAMPLE.ORG
Vegyük észre, hogy az itt szereplő /etc/krb5.conf állomány szerint a kulcselosztónk teljes hálózati neve kerberos.example.org. Ha a kulcselosztónknak nem ez a neve, akkor a zónákat leíró állományba vegyünk még fel egy ilyen CNAME (álnév) bejegyzést.
Megjegyzés: Ha egy nagyobb hálózatban vagyunk, ahol a DNS szervert is megfelelően beállították, akkor az iménti példa ennyire leszűkíthető:
[libdefaults] default_realm = EXAMPLE.ORGItt már a következő sorokat hozzáadták example.org zónát leíró állományhoz:
_kerberos._udp IN SRV 01 00 88 kerberos.example.org. _kerberos._tcp IN SRV 01 00 88 kerberos.example.org. _kpasswd._udp IN SRV 01 00 464 kerberos.example.org. _kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org. _kerberos IN TXT EXAMPLE.ORG
Megjegyzés: A kliensek csak akkor lesznek képesek elérni a Kerberos szolgáltatásait, ha vagy kötelező jelleggel megadunk egy teljesen beállított /etc/krb5.conf állományt, vagy egy minimális /etc/krb5.conf állományt és egy helyesen beállított DNS szervert használunk.
Ezután létrehozzuk a Kerberos adatbázisát. Ez az adatbázis tartalmazza az összes szereplő kulcsát a mesterkulcssal titkosítva. Erre a jelszóra nem kell feltétlenül emlékeznünk, mivel ez egy állományban tárolódik (/var/heimdal/m-key). A mesterkulcsot a kstash parancs kiadásával és egy jelszó megadásával tudjuk létrehozni.
Ahogy a mesterkulcs elkészült, a kadmin parancs -l (mint “lokális”, azaz helyi) opciójával inicializálni tudjuk az adatbázist. Ez az opció arra utasítja a kadmin programot, hogy ne a kadmind hálózati szolgáltatást használja, hanem közvetlenül az adatbázis állományait módosítsa. Ezzel oldható meg az adatbázis kezdeti létrehozásának problémája. Miután megkaptuk a kadmin parancssorát, az övezetünkhöz tartozó adatbázis inicializálásához adjuk ki az init parancsot.
Végül, még mindig a kadmin parancssorát használva, az add paranccsal hozzuk létre az első szereplőnket. Egyelőre érjük be az alapértelmezett értékekkel, a modify paranccsal később úgyis meg tudjuk változtatni ezeket. Hozzátesszük, hogy itt a ? parancs segítségével bármikor lekérhetjük az opciók ismertetését.
Példa egy adatbázis létrehozására:
# kstash Master key: xxxxxxxx Verifying password - Master key: xxxxxxxx # kadmin -l kadmin> init EXAMPLE.ORG Realm max ticket life [unlimited]: kadmin> add tillman Max ticket life [unlimited]: Max renewable life [unlimited]: Attributes []: Password: xxxxxxxx Verifying password - Password: xxxxxxxx
Most már ideje elindítani a KDC szolgáltatásait. Ezeket az /etc/rc.d/kerberos start és /etc/rc.d/kadmind start parancsok kiadásával tudjuk felhozni. Megjegyezzük, hogy most még semmilyen kerberizált démont nem kell elindítanunk. Ellenben igyekezzünk ellenőrizni a KDC működőképességét azzal, hogy KDC parancssorából kérünk egy jegyet a frissen hozzáadott szereplőnknek (felhasználónknak) és kilistázzuk:
% kinit tillman tillman@EXAMPLE.ORG's Password: % klist Credentials cache: FILE:/tmp/krb5cc_500 Principal: tillman@EXAMPLE.ORG Issued Expires Principal Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG
Miután végeztünk, nyugodtan törölhetjük a jegyet:
% kdestroy
Ehhez először is szükségünk lesz a Kerberos konfigurációs állományának, az /etc/krb5.conf másolatára. Ezt úgy tudjuk megtenni, ha egyszerűen átmásoljuk a kulcselosztóról az egyik kliensre valamilyen megbízható módon (vagy az scp(1) programhoz hasonló hálózati segédprogramok, vagy például fizikailag egy floppy lemez használatával).
Ezután szükségünk lesz egy /etc/krb5.keytab nevű állományra. Ez az alapvető különbség a kerberizált démonokat felkínáló szerver és egy munkaállomás közt — a szervernek rendelkeznie kell egy keytab állománnyal. Ez az állomány tartalmazza a szerver kulcsát, amivel így a kulcselosztóval kölcsönösen azonosítani tudják egymást. Ezt a szerverre biztonságosan kell eljuttatnunk, mivel ennek napvilágra kerülésével a szerver védelme komoly veszélybe kerül. Tehát, ha egy titkosítás nélküli csatornán, például FTP-n keresztül visszük át, akkor kifejezetten rossz ötlet.
A szerverre általában a kadmin program használatával érdemes átvinni a keytab állományt. Ez azért is hasznos, mert ehhez a kadmin segítségével létre kell hoznunk a befogadó szereplőt is (a kulcselosztó a krb5.keytab állomány végén).
Vegyük észre, hogy már kaptunk egy jegyet és ezzel a jeggyel jogosultaknak kell lennünk a kadmind.acl állomány kadmin felület használatára. A hozzáférést vezérlő listák (ACL-ek) tervezésével kapcsolatban olvassuk el Heimdal info oldalán található “Remote administration” című szakaszt (info heimdal). Amennyiben nem kívánjuk engedélyezni a kadmin távoli elérését, egyszerűen csak csatlakozzunk valamilyen biztonságos módon (helyi konzolon, ssh(1) vagy egy kerberizált telnet(1) használatával) a kulcselosztóhoz, és a kadmin -l paranccsal végezzük el helyben az adminisztrációt.
Miután telepítettük az /etc/krb5.conf állományt, a Kerberos szerverről el tudjuk érni a kadmin felületét. Az add --random-key paranccsal most már hozzáadhatjuk a szerver befogadó szereplőjét és az ext paranccsal ki tudjuk vonni a szerver befogadó szereplőjét a saját keytab állományából. Például:
# kadmin kadmin> add --random-key host/myserver.example.org Max ticket life [unlimited]: Max renewable life [unlimited]: Attributes []: kadmin> ext host/myserver.example.org kadmin> exit
Itt jegyeznénk meg, hogy az ext parancs (az “extract” rövdítése) a kivont kulcsot alapértelmezés szerint az /etc/krb5.keytab állományba menti ki.
Ha a kulcselosztón nem fut a kadmind szolgáltatás (valószínűleg biztonsági okokból) és ezért távolról nem tudjuk elérni a kadmin felületét, akkor így tudjuk közvetlenül hozzáadni a befogadó szereplőt (host/myserver.EXAMPLE.ORG), majd kivonatolni azt egy ideiglenes állományba (elkerülve az /etc/krb5.keytab felülírását):
# kadmin kadmin> ext --keytab=/tmp/example.keytab host/myserver.example.org kadmin> exit
Ezután valamilyen biztonságos eszközzel (például scp vagy floppy használatával) át tudjuk másolni keytab állományt a szerverre. A kulcselosztón levő keytab felülírását elkerülendő, ne feledkezzünk el egy megfelelő név megadásáról sem.
Ezen a ponton már a szerver képes felvenni a kapcsolatot a kulcselosztóval (a krb5.conf állomány miatt) és bizonyítani a személyazonosságát (a krb5.keytab állomány miatt). Így tehát készen állunk a szolgáltatások kerberizálására. Ebben a példában most a telnet szolgáltatást vesszük célba úgy, hogy először az /etc/inetd.conf állományba berakjuk az alábbi sort, majd újraindítjuk az inetd(8) szolgáltatást az /etc/rc.d/inetd restart paranccsal:
telnet stream tcp nowait root /usr/libexec/telnetd telnetd -a user
Itt az a legfontosabb, hogy az -a (mint authentication, azaz hitelesítés) paramétert a “user” beállítással adjuk meg. A telnetd(8) man oldalán olvashatunk ennek pontos részleteiről.
A kliensek beállítása szinte majdnem gyerekjáték. A Kerberos beállításához egyedül az /etc/krb5.conf állományra lesz szükségünk. Valamilyen biztonságos eszközzel másoljuk át a kulcselosztóról a kliensre.
Úgy tudjuk letesztelni klienst, ha megpróbáljuk róla kiadni a kinit, klist és kdestroy parancsokat a fentebb létrehozott szereplő jegyének megszerzéséhez, lekérdezéséhez és megsemmisítéséhez. A Kerberos használatával megpróbálkozhatunk csatlakozni valamelyik kerberizált szerverre is, ha viszont ez nem működik még egy jegy megszerzése után sem, akkor a gond többnyire a szerverrel van, nem pedig a klienssel vagy a kulcselosztóval.
Amikor egy telnet vagy egy hozzá
hasonló alkalmazást tesztelünk, egy
csomaglehallgató (mint amilyen például a
tcpdump(1)) elindításával
győzödjünk meg róla, hogy a jelszavak
ilyenkor titkosítva mennek át.
Próbáljuk meg titkosítani a teljes
kommunikációt a telnet
-x
paraméterével
(hasonlóan az ssh parancshoz).
Alapból még számos más kiegészítő Kerberos kliensalkalmazás is telepítődik. Ezeken érezhető meg valójában az alaprendszerhez tartozó Heimdal változat “minimalitása”: ebben a telnet az egyedüli kerberizált szolgáltatás.
A Heimdal port igyekszik pótolni a hiányzó klienseket a kerberizált ftp, rsh, rcp, rlogin és néhány kevéséb ismert program telepítésével. Az MIT változat portja szintén tartalmazza a Kerberos kliensek teljes kelléktárát.
Általában az övezetben található felhasználók mindegyikéhez tartozik egy Kerberos-szereplő (mint például a tillman@EXAMPLE.ORG), ami a felhasználó helyi hozzáférésére mutat (mint például a tillman nevű helyi hozzáférés). A telnet és a hozzá hasonló kliensalkalmazások általában nem igényelnek felhasználót vagy szereplőt.
Előfordulhat azonban, hogy valaki olyan szeretné elérni egy helyi felhasználó hozzáférését, aki nem rendelkezik a hozzá tartozó Kerberos-szereplővel. Például a tillman@EXAMPLE.ORG nevű felhasználó el szeretné érni a helyi számítógépen levő webdevelopers hozzáférést. Más szereplők is elérhetik a helyi hozzáféréseket.
A probléma megoldásához a felhasználók könyvtárában található .k5login és a .k5users állományok használhatóak a .host és .rhosts állományok kombinációjához hasonlóan. Például a .k5login így néz ki:
tillman@example.org jdoe@example.org
Ezt a webdevelopers nevű helyi felhasználó könyvtárában kell elhelyeznünk, így a felsorolt szereplőt megosztott jelszó használata nélkül képesek elérni a hozzáférést.
Az említett parancsok man oldalának elolvasása ajánlott. Megjegyezzük, hogy a ksu man oldal foglalkozik a .k5users állománnyal.
Akár a Kerberos Heimdal vagy az MIT változatát használjuk, ne felejtsük úgy beállítani a PATH környezeti változóban felsorolt elérési utakat, hogy a kliensalkalmazások kerberizált változatai a rendszerben használatos verziók elé kerüljenek.
Az övezetben minden számítógép órája ugyanúgy jár? Ha nem, akkor a hitelesítés csődöt mondhat. A 29.10 Szakaszból tudhatjuk meg hogyan szinkronizáljunk órákat az NTP segítségével.
Az MIT és a Heimdal verziók a kadmin kivételével remekül megvannak egymással, mivel az általa használt protokollt még nem szabványosították.
Ha megváltoztatjuk a gépünk hálózati nevét, akkor a ugyanígy a host/ szereplőnket is meg kell változtatni és frissíteni a keytab állományunkat. Ez olyan speciális keytab bejegyzésekre is vonatkozik, mint például az Apache www/mod_auth_kerb moduljához tartozó www/ szereplő.
Az övezetünkben levő összes számítógépnek (mind a két irányba) feloldható DNS névvel kell rendelkeznie (vagy legalább egy /etc/hosts állománnyal). Erre a CNAME rekord megfelelő, de az A és PTR rekordoknak mindenképpen rendben kell lenniük. Az ilyenkor keletkező hibaüzenet nem éppen fogja meg a lényeget: “Kerberos5 refuses authentication because Read req failed: Key table entry not found”.
A kulcselosztó számára kliensként viselkedő bizonyos operációs rendszerek nem állítják be megfelelően a ksu engedélyeit, ezért nem lehet root jogokkal futtatni. Ezért a ksu parancs nem fog működni, ami alapvetően nem egy rossz ötlet, de idegesítő. Ez nem a kulcselosztó hibája.
Ha a Kerberos
MIT változatát
használjuk és a meg akarjuk
hosszabbítani a szereplőknek kiadott jegyek
élettartamát az alapértelmezett
tíz óráról, akkor a
kadmin felületén a
modify_principal paranccsal tudjuk
megváltoztatni mind a kérdéses
szereplő, mind pedig a krbtgt
jegyeinek élettartamának maximumát.
Ezt követően a szereplő a
kinit -l
opciójával tud egy nagyobb
élettartammal rendelkező jegyet
kérni.
Megjegyzés: Amikor egy kulcselosztóval kapcsolatos hibát próbálunk felderíteni a csomagok lehallgatásával, és a munkaállomásunkról kiadjuk a kinit parancsot, akkor arra lehetünk figyelmesek, hogy a TGT már egyből a kinit indításakor átküldésre kerül — még mielőtt egyáltalán megadtuk volna a jelszavunkat! Ezt azzal lehet magyarázni, hogy a Kerberos szerver bármilyen hitelesítetlen kérésre elküld egy TGT-t (Jegyadó jegy, azaz Ticket Granting Ticket). Azonban mindegyik ilyen TGT a felhasználó jelszavából származtatott kulccsal titkosítódik. Ezért amit a felhasználó jelszóként megad, nem megy el a kulcselosztónak, hanem vele a kinit a már megkapott TGT-t kódolja ki. Amennyiben a visszakódolás egy érvényes időbélyeggel rendelkező, használható jegyet eredményez, akkor a felhasználó érvényes Kerberos hitelesítést szerez. Ez a hitelesítés magában foglal egy kulcsot, amellyel a későbbiekben a Kerberos szerverekkel tudjuk felvenni biztonságos módon a kapcsolatot, és rajta kívül egy újabb jegyadó jegyet, amelyet a Kerberos szerver a saját kulcsával titkosított. A titkosítás második vonala a felhasználó számára ismeretlen, de segítségével a Kerberos szerer képes ellenőrizni az egyes jegyadó jegyek hitelességét.
Ha a jegyeket hosszabb (például egyhetes)
élettartammal akarjuk használni és a
jegyeket tároló géphez
OpenSSH
segítségével csatlakozunk, akkor
mindenképpen ellenőrizzük, hogy az
sshd_config állományban a
Kerberos
TicketCleanup
beállításának
értéke no,
máskülönben a kijelentkezés
után automatikusan törlődnek a
jegyeink.
Ne hagyjuk figyelmen kívül azt sem, hogy a befogadó szereplők is rendelkezhetnek nagyobb élettartamú jegyekkel. Ha a felhasználónkhoz tartozó szereplő jegye például egy hét alatt évül el, de a számítógép, amire bejelentkezük, csupán kilenc óráig tartja életben ezeket, akkor a jegyeket tároló gyorsítótárunkban hamarabb elévül a hozzá tartozó jegy, ami miatt pedig hibák keletkeznek.
Ha a rossz jelszavak használata ellen beállítjuk a krb5.dic állományt (erről a kadmind man oldalán találunk egy rövid leírást), akkor nem szabad elfelejteni, hogy ez csak olyan szereplőkre vonatkozik, akiknek a jelszavára is állítottunk be szabályozásokat. A krb5.dict állományok felépítési nem bonyolult: minden sorban egyetlen karakterlánc szerepel. Érdemes lehet például létrehozni ezen a néven egy szimbolikus linket a /usr/share/dict/words állományra.
A Heimdal és az MIT változatok közti egyik legnagyobb eltérés a kadmin programmal kapcsolatban van, ami eltérő (de egyébként ekivalens) parancskészlettel rendelkezik és más protokollt használ. Ennek komoly következménye, hogy ha az MIT-féle kulcselosztót használjuk, akkor azt a Heimdal kadmin felületével nem tudjuk távolról adminisztrálni (és vica versa).
A kliensalkalmazások paraméterezése is eltérhet ugyanazon feladatoknál. Ezért velük kapcsolatban az MIT Kerberos honlapja (http://web.mit.edu/Kerberos/www/) a mérvadó. Vigyázzunk az elérési utakkal: az MIT port magát alapértelmezés szerint a /usr/local könyvtárba telepíti, ezért az általuk kiváltani kívánt “normális” rendszerprogramokat esetleg hamarabb találja meg a rendszer, ha nem jól állítottuk be a PATH környezeti változónkat.
Megjegyzés: Ha nem értjük, hogy miért működnek olyan furcsán a telnetd és a klogind által kezelt bejelentkezések, akkor olvassuk el a FreeBSD security/krb5 portjával települő MIT változat /usr/local/share/doc/krb5/README.FreeBSD állományt (angolul). Az a legfontosabb, hogy a “incorrect permissions on cache file” hiba eltüntetéséhez a login.krb5 binárist kell használnunk, így a továbbított jogosultságoknak megfelelően át tudja állítani a tulajdonost.
Az rc.conf állományt is módosítani kell a következő beállítás kialakításához:
kerberos5_server="/usr/local/sbin/krb5kdc" kadmind5_server="/usr/local/sbin/kadmind" kerberos5_server_enable="YES" kadmind5_server_enable="YES"
Erre azért van szükség, mert a Kerberos MIT változata a /usr/local könyvtáron belülre telepíti fel a hozzá tartozó alkalmazásokat.
A hálózaton minden szolgáltatást módosítanunk kell ahhoz, hogy együtt tudjanak működni a Kerberosszal (vagy valamilyen más módon védenünk kell ezeket a támadások ellen), különben a felhasználók jogait el lehet lopni vagy újra fel lehet használni. Erre jó példa lehet az összes távoli parancssoros elérés (például az rsh valamint a telnet) kerberizálása, de a jelszavakat titkosítatlanul küldő POP3 levelező szerver kihagyása.
Többfelhasználós környezetben a Kerberos már nem annyira biztonságos. Ez azért mondható el, mert a jegyeket a mindenki által olvasható /tmp könyvtárban tárolja. Ha az adott felhasználó számítógépét egyszerre több emberrel is megosztja (tehát többfelhasználós), akkor a felhasználó jegyeit egy másik felhasználó bármikor lemásolhatja (ellophatja).
Ezt a -c
opció után
megadott állománynévvel vagy
(inkább) a KRB5CCNAME környezeti
változó megfelelő
beállításával tudjuk
áthidalni, habár ezt ritkán teszik is
meg. Ha a felhasználók
könyvtárában és a megfelelő
engedélyekkel tároljuk ezeket a jegyeket, akkor
némileg visszaszoríthatjuk a probléma
kockázatát.
A rendszer kialakításából fakadóan a kulcselosztónak legalább annyira megbízhatónak kell lennie, mint a rajta levő központi jelszóadatbázisnak. A kulcselosztón semmilyen más szolgáltatás nem futhat és fizikailag is biztonságba kell helyezni. A kockázat nagy, mivel a Kerberos az összes jelszót ugyanazzal a kulcssal (a “mesterkulcssal”) titkosítja, amelyet a kulcselosztó egy állományban tárol.
Széljegyzet gyanánt hozzátesszük, hogy a mesterkulcs elvesztése nem annyira rossz, mint azt első gondolnánk. A mesterkulcsot csupán a véletlenszám-generátor inicializálásához használják a Kerberos adatbázisának titkosításakor. Amíg a kulcselosztóhoz nem tudnak illetéktelenek hozzáférni, addig nem tudnak sokat kezdeni a mesterkulccsal.
Mellesleg ha a kulcselosztó nem elérhető (talán pontosan egy DoS támadás vagy éppen hálózati problémák miatt), akkor a hitelesítés nem végezhető el, mivel így a hozzá szükséges hálózati szolgáltatások sem használhatóak. Ez remek eszköz egy DoS támadáshoz. Ezen több (egy központi és egy vagy több alárendelt) kulcselosztó telepítésével, valamint a másodlagos vagy tartalékként használt hitelesítési eszközök (a PAM erre tökéletes) körültekintő megvalósításával enyhíthetünk.
A Kerberos révén a felhasználók, számítógépek és szolgáltatások tudják egymást hitelesíteni. Ellenben semmilyen eszközt nem kínál fel a kulcselosztó hitelességének ellenőrzésére. Így tehát (például) egy eltérített kinit képes ellopni az összes felhasználói nevet és jelszót. Az ilyen incidensek elkerülésére a security/tripwire és a hozzá hasonló segédprogramok segítségével lehet megőrizni a rendszer sértelenségét.
A FreeBSD-hez adott OpenSSL az egyik olyan tényező, amit a legtöbb felhasználó figyelmen kívül hagy. Az OpenSSL egy titkosítási réteget nyújt a hagyományos kommunikációs csatorna felett, így rengeteg hálózati alkalmazásba és szolgáltatásba bele lehet szőni.
Az OpenSSL felhasználható többek közt a levelező kliensek titkosított hitelesítésére, hitelkártyás fizetések weben keresztüli lebonyolítására alkalmas, és még sok minden másra. Sok port, köztük a www/apache13-ssl és a mail/sylpheed-claws is felajánlja az OpenSSL felhasználását.
Megjegyzés: A legtöbb esetben a Portgyűjtemény megpróbálja lefordítani a security/openssl portot, hacsak a WITH_OPENSSL_BASE változót határozottan a “yes” értékre nem állítjuk.
A FreeBSD-hez mellékelt OpenSSL ismeri a Secure Sockets Layer v2/v3 (SSLv2/SSLv3) és Transport Layer Security v1 (TLSv1) hálózatbiztonsági protokollokat, és általános célú titkosítási könyvtárként is alkalmazható.
Megjegyzés: Noha az OpenSSL ismeri az IDEA algoritmusát is, az Egyesült Államokban érvényben levő szabadalmak miatt alapértelmezés szerint nem engedélyezett. A használatához el kell olvasni a hozzá tartozó licencet, és ha elfogadjuk a benne foglaltakat, akkor állítsuk be a MAKE_IDEA változót a make.conf állományban.
Az OpenSSL-t leginkább a szoftverek tanúsítványainak elkészítéséhez használják. Ilyen tanúsítvánnyokkal lehet szavatolni, hogy az érte felelős cég vagy egyén valóban megbízható és nem szélhámos. Amennyiben a kérdéses tanúsítványt nem vizsgálta be valamelyik “tanúsítványok hitelesítésével foglalkozó hatóság” (Certificate Authority, vagy CA), akkor erről általában kap egy figyelmeztetést a felhasználó. A tanúsítványokat hitelesítő cégek, mint például a VeriSign, írják alá ezeket a tanúsítványokat és ezzel érvényesítik az egyes cégek vagy egyének megbízhatóságát. Ez ugyan pénzbe kerül, de használatuk egyáltalán nem is kötelező. Azonban az átlagosnál paranoidabb felhasználók számára megnyugvást jelenthet.
A tanúsítványok létrehozására a következő parancs áll rendelkezésre:
# openssl req -new -nodes -out req.pem -keyout cert.pem Generating a 1024 bit RSA private key ................++++++ .......................................++++++ writing new private key to 'cert.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:országnév (kétbetűs kóddal) State or Province Name (full name) [Some-State]:állam vagy tartomány teljes neve Locality Name (eg, city) []:település neve Organization Name (eg, company) [Internet Widgits Pty Ltd]:szervezet neve Organizational Unit Name (eg, section) []:szervezeti egység neve Common Name (eg, YOUR name) []:általános név (hálózati név!) Email Address []:e-mail cím Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:VALAMILYEN JELSZÓ An optional company name []:egy másik szervezet neve
Az adatok bekérésére előtt megjelenő figyelmeztető üzenet fordítása:
Itt a tanúsítvány igénylésével kapcsolatos információkat kell megadnunk. Itt egy ún. “ismertetőnevet” (Distinguished Name, DN) kell megadnunk. Ezen kívül van még néhány más mező is, de ezeket akár üresen is hagyhatjuk. Néhány mezőnek van alapértelmezett értéke, de ha oda egy pontot írunk, akkor kitöröljük.
A “Common Name” mezőnél ellenőrzési okokból egy hálózati nevet, tehát a szerverünk nevét kell megadnunk. Ha nem így járunk el, akkor lényegében egy használhatatlan tanúsítványt kapunk. További opciók is elérhetőek, mint például a lejárati idő (expire time) megadása, a titkosítási algoritmus megváltoztatása stb. Ezek teljes listája megtalálható az openssl(1) man oldalon.
Az előbbi parancs kiadása után két állománynak kell létrejönnie az aktuális könyvtárban. A tanúsítványkérést, vagyis az req.pem állományt kell eljuttatnunk a tanúsítványok hitelesítésével foglakozó szervhez, aki majd érvényesíti az imént megadott adatainkat. A második, cert.pem nevű állomány a tanúsítványhoz tartozó privát kulcs, amit semmilyen körülmények között sem szabad kiadnunk. Ha ez mások kezébe kerül, akkor el tudnak játszani bennünket (vagy a szerverünket).
Amikor a hitelesítő szerv aláírása nem feltétlenül szükséges, akkor készíthetünk egy saját magunk által aláírt tanúsítványt is. Ehhez először is generálnunk kell egy RSA-kulcsot:
# openssl dsaparam -rand -genkey -out saját_RSA.kulcs 1024
Most pedig készítsünk el a hitelesítő szerv kulcsát is:
# openssl gendsa -des3 -out hitelesítő.kulcs saját_RSA.kulcs
Ezzel a kulccsal most gyártsunk le egy tanúsítványt:
# openssl req -new -x509 -days 365 -key hitelesítő.kulcs -out új.tanúsítvány
Ekkor két új állomány keletkezik a könyvtárunkban: a hitelesítő szerv aláírása, a hitelesítő.kulcs és maga a tanúsítvány, az új.tanúsítvány állomány. Ezeket tegyük az /etc könyvtáron belül egy olyan könyvtárba, amelyet csak a root tud olvasni. A chmod paranccsal állítsunk be rá 0700-as kódú engedélyeket.
Mire is jók ezek az állományok? Például kitűnően alkalmazhatóak a Sendmail levelező szerverhez beérkező kapcsolatot titkosítására. Így lényegében felszámoljuk minden olyan felhasználó titkosítatlan módon zajló hitelesítését, aki a helyi levelező szerveren keresztül küldi a leveleit.
Megjegyzés: Ez általában nem a legjobb megoldás, mivel egyes levelező kliensek hibát jeleneznek a felhasználónak, ha nem rendelkezik a tanúsítvánnyal. A tanúsítványok telepítésével kapcsolatban olvassuk el a szoftverhez adott leírást.
A helyi .mc állományba ezeket a sorokat kell beletenni:
dnl SSL Options define(`confCACERT_PATH',`/etc/certs')dnl define(`confCACERT',`/etc/certs/új.tanúsítvány')dnl define(`confSERVER_CERT',`/etc/certs/új.tanúsítvány')dnl define(`confSERVER_KEY',`/etc/certs/hitelesítő.kulcs')dnl define(`confTLS_SRV_OPTIONS', `V')dnl
Itt a /etc/certs/ az a könyvtár, amit tanúsítványok és kulcsok helyi tárolására használunk. Végezetül még újra kell generálnunk a helyi .cf állományokat. Ezt a /etc/mail könyvtárban a make install parancs kiadásával könnyen elvégezhetjük. Miután ez megtörtént, akkor Sendmailhoz tartozó démont a make restart paraméterével indíthatjuk újra.
Ha minden jól ment, akkor a /var/log/maillog állományban nem találunk egyetlen hibaüzenetet sem, és a Sendmail is megjelenik a futó programok között.
A telnet(1) segédprogrammal így probálhatjuk ki a levelező szervert:
# telnet example.com 25 Trying 192.0.34.166... Connected to example.com. Escape character is '^]'. 220 example.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT) ehlo example.com 250-example.com Hello example.com [192.0.34.166], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH LOGIN PLAIN 250-STARTTLS 250-DELIVERBY 250 HELP quit 221 2.0.0 example.com closing connection Connection closed by foreign host.
Ha itt megjelenik a “STARTTLS” sor, akkor mindent sikerült beállítanunk.
VPN létrehozása FreeBSD átjárók használatával két olyan hálózat között, amelyeket egymástól az internet választ el.
Ebben a szakaszban az IPsec beállításának folyamatát vázoljuk fel. Az IPsec beállításához elengedhetetlen, hogy tisztában legyünk egy saját rendszermag fordításának alapjaival (lásd 8 fejezet).
Az IPsec egy olyan protokoll, amely az Internet Protocol (IP) rétegére épül. Segítségével két vagy több számítógép képes biztonságos módon tartani egymással a kapcsolatot (innen ered a neve). A FreeBSD IPsec “hálózati protokollkészlete” a KAME implementációjára épül, mely egyaránt támogatja az IPv4 és IPv6 protokollcsaládokat.
Az IPsec két alprotokollból tevődik össze:
A hasznos adat biztonságos becsomagolása (Encapsulated Security Payload, ESP) során egy szimmetrikus kriptográfiai algoritmussal (mint például Blowfish, 3DES) titkosítjuk az IP-csomagok tartalmát, ezáltal megvédjük ezeket az illetéktelenektől.
A Hitelesítési fejléc (Authentication Header, AH) használatával megakadályozzuk, hogy az illetéktelenek meghamisítsák az IP csomagok fejlécét. Ezt úgy érjük el, hogy kiszámolunk egy kriptográfiai ellenőrző összeget és az IP-csomagok fejlécének mezőire egy biztonságos függvénnyel generálunk valamilyen ujjlenyomatot. Az ez után következő kiegészítő fejléc tartalmazza ezt az ujjlenyomatot, amellyel a csomag hitelesíthető.
Az ESP és az AH az alkalmazástól függően használható együtt vagy külön-külön.
Az IPsec akár közvetlenül is használható két számítógép forgalmának titkosítására (ezt Szállítási módnak (Transport Mode) nevezik), vagy két alhálózat között építhetünk ki vele “virtuális tunneleket”, ami remekül alkalmas két vállalati hálózat kommunikációjának bebiztosítására (ez a Tunnel mód (Tunnel Mode)). Ez utóbbit egyszerűen csak Virtuális magánhálózatként (Virtual Private Network, VPN) emlegetik. A FreeBSD IPsec alrendszeréről az ipsec(4) man oldalon találhatunk további információkat.
A rendszermag IPsec támogatásának aktiválásához a következő paramétereket kell beletennünk a konfigurációs állományba:
options IPSEC # IP biztonság device crypto
Ha szükségünk van a IPsec nyomkövetésére, a következő beállítást is hozzátehetjük:
options IPSEC_DEBUG # az IP biztonság nyomkövetése
Semmilyen szabvány nem fogalmazza meg mi is számít VPN-nek. A virtuális magánhálózatok tucatnyi különböző technológiával valósíthatóak meg, de mindegyiknek megvan a maga erőssége és gyengesége. Ebben a szakaszban körvonalazunk egy ilyen helyzetet, valamint a benne felépített VPN megvalósításához alkalmazott stratégiákat.
Előfeltételezéseink a következőek:
legalább két hálózatunk van;
magán belül mind a két hálózat IP-t használ;
mind a két hálózat egy FreeBSD átjárón keresztül csatlakozik az internethez;
a hálózatok átjárói legalább egy publikus IP-címmel rendelkeznek;
a hálózatok belső címei lehetnek publikus vagy privát IP-címek, nem számít. Fontos viszont, hogy ezek ne ütközzenek, vagyis ne használja egyszerre mind a kettő a 192.168.1.x címtartományt.
Kezdésképpen a Portgyűjteményből telepítenünk kell a security/ipsec-tools portot. Ez a programcsomag rengeteg olyan alkalmazást tartalmaz, amely segítségünkre lehet a beállítások elvégzése során.
A következő lépésben létre kell hoznunk két gif(4) típusú pszeudoeszközt, melyeken keresztül a két hálózat között egy tunnel segítségével ki tudjuk építeni a szükséges kapcsolatot. Ehhez root felhasználóként futtassuk a következő parancsokat (a belső és külső megnevezésű paramétereket cseréljük ki a valós belső és külső átjárók címeire):
# ifconfig gif0 create
# ifconfig gif0 belső1 belső2
# ifconfig gif0 tunnel külső1 külső2
Tekintsük például, hogy a vállalati LAN publikus IP-címe 172.16.5.4, valamint a privát IP-címe 10.246.38.1. Az otthoni LAN publikus IP-címe legyen most 192.168.1.12, valamint a belső privát IP-címe pedig 10.0.0.5.
Elsőre ez talán még nem teljesen érthető, ezért az ifconfig(8) parancs használatával is nézzük meg a példában szereplő hálózatok konfigurációját:
Az első átjáró: gif0: flags=8051 mtu 1280 tunnel inet 172.16.5.4 --> 192.168.1.12 inet6 fe80::2e0::81ff:fe02:5881%gif0 prefixlen 64 scopeid 0x6 inet 10.246.38.1 --> 10.0.0.5 netmask 0xffffff00 A második átjáró: gif0: flags=8051 mtu 1280 tunnel inet 192.168.1.12 --> 172.16.5.4 inet 10.0.0.5 --> 10.246.38.1 netmask 0xffffff00 inet6 fe80::250:bfff:fe3a:c1f%gif0 prefixlen 64 scopeid 0x4
Miután elvégeztük az iménti beállításokat, a ping(8) paranccsal már mind a két privát IP-tartománynak elérhetőnek kell lennie, ahogy azt az alábbi példa is érzékeltetni kívánja:
otthoni-halo# ping 10.0.0.5 PING 10.0.0.5 (10.0.0.5): 56 data bytes 64 bytes from 10.0.0.5: icmp_seq=0 ttl=64 time=42.786 ms 64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=19.255 ms 64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=20.440 ms 64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=21.036 ms --- 10.0.0.5 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 19.255/25.879/42.786/9.782 ms vallalati-halo# ping 10.246.38.1 PING 10.246.38.1 (10.246.38.1): 56 data bytes 64 bytes from 10.246.38.1: icmp_seq=0 ttl=64 time=28.106 ms 64 bytes from 10.246.38.1: icmp_seq=1 ttl=64 time=42.917 ms 64 bytes from 10.246.38.1: icmp_seq=2 ttl=64 time=127.525 ms 64 bytes from 10.246.38.1: icmp_seq=3 ttl=64 time=119.896 ms 64 bytes from 10.246.38.1: icmp_seq=4 ttl=64 time=154.524 ms --- 10.246.38.1 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 28.106/94.594/154.524/49.814 ms
Az elvárásainknak megfelelően tehát a privát címeken mind a két oldalnak képesnek kell lennie ICMP csomagokat küldenie és fogadnia. A következő lépésben meg kell mondanunk az átjáróknak hogyan irányítsák a csomagokat a két hálózat közti forgalom megfelelő áramlásához. Ezt az alábbi paranccsal elérhetjük el:
# vallalati-halo# route add 10.0.0.0 10.0.0.5 255.255.255.0
# vallalati-halo# route add net 10.0.0.0: gateway 10.0.0.5
# otthoni-halo# route add 10.246.38.0 10.246.38.1 255.255.255.0
# otthoni-halo# route add host 10.246.38.0: gateway 10.246.38.1
Itt már a belső gépeket az átjárókról és az átjárók mögül egyaránt el tudjuk érni. A következő példa alapján erről könnyedén meg is tudunk győződni:
vallalati-halo# ping 10.0.0.8 PING 10.0.0.8 (10.0.0.8): 56 data bytes 64 bytes from 10.0.0.8: icmp_seq=0 ttl=63 time=92.391 ms 64 bytes from 10.0.0.8: icmp_seq=1 ttl=63 time=21.870 ms 64 bytes from 10.0.0.8: icmp_seq=2 ttl=63 time=198.022 ms 64 bytes from 10.0.0.8: icmp_seq=3 ttl=63 time=22.241 ms 64 bytes from 10.0.0.8: icmp_seq=4 ttl=63 time=174.705 ms --- 10.0.0.8 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 21.870/101.846/198.022/74.001 ms otthoni-halo# ping 10.246.38.107 PING 10.246.38.1 (10.246.38.107): 56 data bytes 64 bytes from 10.246.38.107: icmp_seq=0 ttl=64 time=53.491 ms 64 bytes from 10.246.38.107: icmp_seq=1 ttl=64 time=23.395 ms 64 bytes from 10.246.38.107: icmp_seq=2 ttl=64 time=23.865 ms 64 bytes from 10.246.38.107: icmp_seq=3 ttl=64 time=21.145 ms 64 bytes from 10.246.38.107: icmp_seq=4 ttl=64 time=36.708 ms --- 10.246.38.107 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 21.145/31.721/53.491/12.179 ms
A tunnelek beállítása volt igazából a könnyebb rész, egy biztonságos összeköttetés kialakítása azonban már valamivel komolyabb folyamatot rejt magában. A most következő konfigurációban erre “előre ismert” (vagyis pre-shared, PSK) RSA-kulcsokat fogunk használni. A konkrét IP-címektől eltekintve az átjárókon a /usr/local/etc/racoon/racoon.conf állományok hasonlóan fognak kinézni, nagyjából valahogy így:
path pre_shared_key "/usr/local/etc/racoon/psk.txt"; # az ismert kulcsot tartalmazó állomány helye log debug; # a naplózás részletességének beállítása: ha végeztünk a teszteléssel és a hibakereséssel, akkor állítsuk át a 'notify' értékre padding # ezeket ne nagyon változtassuk meg { maximum_length 20; randomize off; strict_check off; exclusive_tail off; } timer # időzítési beállítások, állítsuk be igény szerint { counter 5; interval 20 sec; persend 1; # natt_keepalive 15 sec; phase1 30 sec; phase2 15 sec; } listen # cím [port], ahol a racoon majd válaszolni fog { isakmp 172.16.5.4 [500]; isakmp_natt 172.16.5.4 [4500]; } remote 192.168.1.12 [500] { exchange_mode main,aggressive; doi ipsec_doi; situation identity_only; my_identifier address 172.16.5.4; peers_identifier address 192.168.1.12; lifetime time 8 hour; passive off; proposal_check obey; # nat_traversal off; generate_policy off; proposal { encryption_algorithm blowfish; hash_algorithm md5; authentication_method pre_shared_key; lifetime time 30 sec; dh_group 1; } } sainfo (address 10.246.38.0/24 any address 10.0.0.0/24 any) # address $hálózat/$hálózati_maszk $típus address $hálózat/$hálózati_maszk $típus # (a $típus lehet "any" vagy "esp") { # a $hálózat a két összekapcsolni kívánt belső hálózat legyen pfs_group 1; lifetime time 36000 sec; encryption_algorithm blowfish,3des,des; authentication_algorithm hmac_md5,hmac_sha1; compression_algorithm deflate; }
A példában szereplő összes opció részletes kifejtése jóval meghaladná ezen leírás kereteit, ezért a bővebb információkkal kapcsolatban inkább a racoon beállításaihoz tartozó man oldal elolvasását javasoljuk.
A gépek közti hálózati forgalom titkosításához be kell még állítanunk egy SPD házirendet is, így a FreeBSD és a racoon képes kódolni és dekódolni a csomagokat.
Ezt a most következő, a vállalati átjárón találhatóhoz hasonló egyszerű shell szkripttel tudjuk elvégezni. Ezt az állományt a rendszer indításakor fogjuk felhasználni, melyet /usr/local/etc/racoon/setkey.conf néven mentsünk el:
flush; spdflush; # Az otthoni hálózati felé spdadd 10.246.38.0/24 10.0.0.0/24 any -P out ipsec esp/tunnel/172.16.5.4-192.168.1.12/use; spdadd 10.0.0.0/24 10.246.38.0/24 any -P in ipsec esp/tunnel/192.168.1.12-172.16.5.4/use;
Ahogy ezzel megvagyunk, a racoon az egyes átjárókon a következő paranccsal indítható el:
# /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.log
A parancs eredménye ennek megfelelően nagyjából a következő lesz:
vallalati-halo# /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf Foreground mode. 2006-01-30 01:35:47: INFO: begin Identity Protection mode. 2006-01-30 01:35:48: INFO: received Vendor ID: KAME/racoon 2006-01-30 01:35:55: INFO: received Vendor ID: KAME/racoon 2006-01-30 01:36:04: INFO: ISAKMP-SA established 72.16.5.4[500]-192.168.1.12[500] spi:623b9b3bd2492452:7deab82d54ff704a 2006-01-30 01:36:05: INFO: initiate new phase 2 negotiation: 72.16.5.4[0]192.168.1.12[0] 2006-01-30 01:36:09: INFO: IPsec-SA established: ESP/Tunnel 92.168.1.12[0]->172.16.5.4[0] spi=28496098(0x1b2d0e2) 2006-01-30 01:36:09: INFO: IPsec-SA established: ESP/Tunnel 172.16.5.4[0]->192.168.1.12[0] spi=47784998(0x2d92426) 2006-01-30 01:36:13: INFO: respond new phase 2 negotiation: 172.16.5.4[0]192.168.1.12[0] 2006-01-30 01:36:18: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.12[0]->172.16.5.4[0] spi=124397467(0x76a279b) 2006-01-30 01:36:18: INFO: IPsec-SA established: ESP/Tunnel 172.16.5.4[0]->192.168.1.12[0] spi=175852902(0xa7b4d66)
A tunnel megfelelő működését úgy tudjuk ellenőrizni, ha átváltunk egy másik konzolra és a tcpdump(1) program segítségével figyeljük a hálózati forgalmat. A példában szereplő em0 interfészt természetesen ne felejtsük el kicserélni a megfelelő eszköz nevére.
# tcpdump -i em0 host 172.16.5.4 and dst 192.168.1.12
Ennek hatására az alábbiakhoz hasonló adatoknak kellene megjelennie a konzolon. Amennyiben nem ez történik, valamilyen hiba történt, ezért meg kell keresnünk azt a visszakapott adatok alapján.
01:47:32.021683 IP vallalatihalozat.com > 192.168.1.12.otthonihalozat.com: ESP(spi=0x02acbf9f,seq=0xa) 01:47:33.022442 IP vallalatihalozat.com > 192.168.1.12.otthonihalozat.com: ESP(spi=0x02acbf9f,seq=0xb) 01:47:34.024218 IP vallalatihalozat.com > 192.168.1.12.otthonihalozat.com: ESP(spi=0x02acbf9f,seq=0xc)
Itt már mind a két hálózatnak elérhetőnek kell lennie és egyként kell látszódnia. A hálózatokat ezen felül még érdemes külön védeni egy tűzfallal is. Ilyenkor a csomagok két hálózati közti zavartalan oda-vissza vándorlásához további szabályokat kell még felvennünk a tűzfal szabályrendszerébe. A ipfw(8) tűzfal esetén ez a következő sorok hozzáadását jelenti a tűzfal konfigurációs állományához:
ipfw add 00201 allow log esp from any to any ipfw add 00202 allow log ah from any to any ipfw add 00203 allow log ipencap from any to any ipfw add 00204 allow log udp from any 500 to any
Megjegyzés: A szabályok számozását mindig az adott gép aktuális beállításainak megfelelően kell módosítani.
A pf(4) és ipf(8) felhasználók számára ehhez a következő parancsot javasoljuk:
pass in quick proto esp from any to any pass in quick proto ah from any to any pass in quick proto ipencap from any to any pass in quick proto udp from any port = 500 to any port = 500 pass in quick on gif0 from any to any pass out quick proto esp from any to any pass out quick proto ah from any to any pass out quick proto ipencap from any to any pass out quick proto udp from any port = 500 to any port = 500 pass out quick on gif0 from any to any
Végezetül a következő sor hozzáadásával engedélyezzük az /etc/rc.conf állományban a VPN indítását a rendszer indítása során:
ipsec_enable="YES" ipsec_program="/usr/local/sbin/setkey" ipsec_file="/usr/local/etc/racoon/setkey.conf" # engedélyezzük az spd házirend beállítását a rendszer indításakor racoon_enable="yes"
Az OpenSSH olyan hálózati kapcsolódási eszközök összessége, amivel biztonságos módon érhetünk el távoli számítógépeket. Az rlogin, rsh, rcp és a telnet direkt kiváltására használható. Emellett SSH-n keresztül TCP/IP kapcsolatok is biztonságosan bújtathatóak vagy küldhetőek tovább.
Az OpenSSH-t az OpenBSD projekt tartja karban, és az SSH 1.2.12 verziójára épül hibajavításokkal és frissítésekkel egyetemben. Az SSH 1 és 2 protokollokkal egyaránt kompatibilis.
A hétköznapi esetben, vagyis amikor a telnet(1) vagy rlogin(1) alkalmazásokat használjuk, az adatok titkosítatlan formában közlekednek a hálózaton. A szerver és a kliens közé bárhova becsatlakozó hálózati kíváncsiskodók így könnyedén el tudják lopni a felhasználói nevünket és jelszavunkat, vagy lényegében bármilyen adatot, ami az adott munkamenetben megfordul. Az OpenSSH ennek kivédésére kínál fel különféle hitelesítési és titkosítási eszközöket.
Az sshd a FreeBSD telepítésekor jelentkező Standard lehetőségek egyike. Az sshd engedélyezését úgy tudjuk kideríteni, ha az rc.conf állományban megkeressük a következő sort:
sshd_enable="YES"
Ez tölti be a rendszer indításakor az sshd(8)-t, az OpenSSH démonát. Vagy az /etc/rc.d/sshd rc(8) szkript segítségével is elindíthatjuk az OpenSSH-t:
/etc/rc.d/sshd start
Az ssh(1) segédprogram az rlogin(1) programhoz hasonlóan működik.
# ssh felhasználó@gép.hu Host key not found from the list of known hosts. Are you sure you want to continue connecting (yes/no)? yes Host 'gép.hu' added to the list of known hosts. felhasználó@gép.hu's password: *******
Az üzenetek fordítása:
Nem találtam meg a gépet az ismert gépek között. Biztosan csatlakozni akarunk hozzá (igen/nem)? igen A 'gép.hu' felkerült az ismert gépek közé. Adja meg a felhasználó@gép.hu jelszavát:
Bejelentkezés után minden ugyanolyan, mintha az rlogin vagy a telnet programokat használtuk volna. Az SSH egy kulcs segítségével próbálja azonosítani a számítógépeket, ezzel ellenőrzi a szerver hitelességét a kliensek csatlakozásakor. A felhasználónak ilyenkor először mindig yes választ kell adnia. A későbbi bejelentkezési kísérletek pedig majd mindig az így kapott kulccsal történnek. Ha eltérne a kulcs, akkor az SSH kliens erre figyelmeztetni fog minket. A kulcsok a ~/.ssh/known_hosts vagy az SSH v2 protokoll esetén a ~/.ssh/known_hosts2 állományba kerülnek elmentésre.
Alapértelmezés szerint az
OpenSSH szerverek csak SSH v2
kapcsolatokat fogadnak el. Lehetőség szerint a
kliens is ezt a változatot fogja használni, de ha
nem sikerül, akkor megpróbálkozik a v1-el. A
kliensnek a -1
vagy -2
opciók segítségével elő is
lehet írni, hogy az első vagy a második
változatot használja. A kliensben az első
változat támogatását csupán a
régebbi verziók kompatibilitása miatt
tartják karban.
Az scp(1) parancs az rcp(1) parancshoz hasonlóan működik: egyik gépről másol a másikra, biztonságosan.
# scp felhasználó@gép.hu:/COPYRIGHT COPYRIGHT felhasználó@gép.hu's password: ******* COPYRIGHT 100% |*****************************| 4735 00:00 #
Mivel a kulcsot már ismerjük ehhez a távoli géphez (az előbbi példából), ezért az scp(1) használatakor már ezzel hitelesítünk.
Az scp(1) paraméterei hasonlóak a
cp(1) parancséhoz: első helyen az
állomány vagy állományok neveit
adjuk meg, a másodikon pedig a célt. Mivel az
állományokat a hálózaton SSH-n
keresztül küldik át, ezért az
állományok neveit
felhasználó@gép:elérési_út
formában kell megadni.
Az OpenSSH démon és kliens rendszerszintű konfigurációs állományai az /etc/ssh könyvtárban találhatóak.
Az ssh_config tartalmazza a kliens beállításait, miközben az sshd_config tartalmazza a démonét.
Emellett az rc.conf
állományban megadható
sshd_program
(ez alapból a
/usr/sbin/sshd) és
sshd_flags
opciókkal további
beállítási szinteket
nyújtanak.
Jelszavak helyett az ssh-keygen(1) programmal a felhasználók azonosítására DSA- vagy RSA-kulcsokat tudunk készíteni:
% ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/felhasználó/.ssh/id_dsa): Created directory '/home/felhasználó/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/felhasználó/.ssh/id_dsa. Your public key has been saved in /home/felhasználó/.ssh/id_dsa.pub. The key fingerprint is: bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 felhasználó@gép.hu
Az ssh-keygen(1) ekkor a hitelesítésre létrehoz egy publikus és egy privát kulcsból álló párt. A privát kulcs a ~/.ssh/id_dsa vagy ~/.ssh/id_rsa állományba kerül, miközben a publikus kulcs a ~/.ssh/id_dsa.pub vagy ~/.ssh/id_rsa.pub lesz attól függően, hogy DSA vagy RSA a kulcs típusa. A módszer működéséhez a publikus DSA- vagy RSA-kulcsot a távoli számítógép ~/.ssh/authorized_keys állományába kell bemásolni.
Így tehát a távoli számítógépre jelszavak alkalmazása helyett SSH-kulccsal tudunk belépni.
Ha az ssh-keygen(1) parancsnak megadunk egy jelmondatot is, akkor a felhasználó a privát kulcsát csak ennek megadásával tudja használni. A hosszú jelmondatok állandó beirogatásától a 14.11.7 Szakasz szakaszban hamarosan bemutatásra került ssh-agent(1) igyekszik megkímélni minket.
Figyelem: A különböző opciók és állományok eltérhetnek a számítógépünkre telepített OpenSSH verziójától függően. Ilyen esetben javasolt felkeresni az ssh-keygen(1) man oldalát.
Az ssh-agent(1) és ssh-add(1) segédprogramokkal be tudjuk tölteni az SSH-kulcsokat a memóriába, amivel elkerülhetjük a jelmondat állandó begépelését.
A hitelesítést az ssh-agent(1) program kezeli a betöltött privát kulcsok alapján. Az ssh-agent(1) használatával egy másik programot is elindhatunk, egy parancsértelmezőtől kezdve egy ablakkezelőig szinte bármit.
Az ssh-agent(1) programot úgy tudjuk egy parancsértelmezőben használni, hogy először is elindítjuk vele az adott parancsértelmezőt. Ezután az ssh-add(1) lefuttatásával hozzá kell adnunk egy identitást, annak jelmondatának megadásával. Miután ezeket megtettük, a felhasználó bármelyik olyan távoli gépre be tud jelentkezni, ahol a publikus kulcsát ismerik. Például:
% ssh-agent csh % ssh-add Enter passphrase for /home/felhasználó/.ssh/id_dsa: Identity added: /home/felhasználó/.ssh/id_dsa (/home/felhasználó/.ssh/id_dsa) %
Az ssh-agent(1) programot X11-el úgy tudjuk használni, ha az ~/.xinitrc állományba tesszük bele. Ezzel az ssh-agent(1) az összes X11-ben indított program számára rendelkezésre áll. Példának vegyük ezt az ~/.xinitrc állományt:
exec ssh-agent startxfce4
Így az X11 indulásakor mindig elindul az ssh-agent(1), amely pedig elindítja az XFCE alkalmazást. Miután átírtuk a saját állományunkat, a rendszer életbeléptetéséhez indítsuk újra az X11-et, az ssh-add(1) futtatásával pedig töltsük be az összes SSH-kulcsunkat.
Az OpenSSH-val létre tudunk hozni egy tunnelt, amellyel egy másik protokoll adatait tudjuk titkosított módon becsomagolni.
Az alábbi parancs arra utasítja az ssh(1) programot, hogy hozzon létre egy tunnelt a telnet használatához:
% ssh -2 -N -f -L 5023:localhost:23 felhasználó@izé.mizé.hu %
Az ssh parancsnak a következő kapcsolókat adtuk meg:
-2
Az ssh parancs a protokoll második változatát használja. (Ne adjuk meg, ha régi SSH szerverekkel dolgozunk.)
-N
Tunnel létrehozása. Ha nem adjuk meg, akkor az ssh egy hagyományos munkamenet felépítését kezdi meg.
-f
Az ssh a háttérben fusson.
-L
Egy helyi tunnel a helyiport:távoligép:távoliport felírásban.
felhasználó@izé.mizé.hu
A távoli SSH szerver.
Az SSH által létrehozott járatok úgy működnek, hogy létrehozunk egy csatlakozást a localhost (a helyi gép) megadott portján. Ezután minden olyan kapcsolatot, ami a helyi gép adott portjára érkezik, SSH-n keresztül átirányítunk a távoli gép portjára.
Ebben a példában a helyi gép 5023 portját átirányítjuk a helyi gép 23 portjára. Mivel a 23 a telnet portja, ezért az így definiált SSH járattal egy biztonságos telnet munkamenetet hozunk létre.
Ezen a módon tetszőleges nem biztonságos TCP protokollt, például SMTP-t, POP3-at, FTP-t stb. be tudunk csomagolni.
Példa 14-1. Biztonságos tunnel létrehozása SSH-val SMTP-hez
% ssh -2 -N -f -L 5025:localhost:25 felhasználó@levelező.szerver.hu felhasználó@levelező.szerver.hu's password: ***** % telnet localhost 5025 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 levelező.szerver.hu ESMTP
Az ssh-keygen(1) és további felhasználói hozzáférések alkalmazásával ezen a módon ki tudunk alakítani egy minden további problémától és zűrtől mentes SSH tunnelezési környezetet. A jelszavak helyett kulcsokat használunk és minden tunnel külön felhasználóként is futtatható.
Tegyük fel, hogy a munkahelyünkön van egy SSH szerver, amire kívülről lehet csatlakozni, illetve vele egy hálózatban van egy POP3 levelező szerver is. A munkahelyünk és az otthonunk között levő hálózati útvonalat részben vagy teljesen nem tartjuk megbízhatónak. Ezért az e-mailjeinket valamilyen biztonságos módon szeretnénk elérni. Ezt úgy tudjuk megvalósítani, ha otthonról csatlakozunk a munkahelyen levő SSH szerverre és ezen keresztül érjük a levelező szervert.
% ssh -2 -N -f -L 2110:levél.gép.hu:110 felhasználó@ssh-szerver.gép.hu felhasználó@ssh-szerver.gép.hu's password: ******
Miután a tunnel létrejött és működőképes, állítsuk be a levelező kliensünkben, hogy a POP3 kéréseket a localhost 2110 portjára küldje. Innen pedig biztonságos módon megy tovább a levél.gép.hu címre.
Egyes hálózati adminisztrátorok túlságosan szigorú szabályokat adnak meg a tűzfalban, és nem csak a bejövő kapcsolatokat szűrik, hanem a kimenőket is. A távoli gépekhez csak a 22 (SSH) és 80 (böngészés) portjaikon tudunk csatlakozni.
Mi viszont szeretnénk más (nem egészen a munkánkkal kapcsolatos) szolgáltatásokat is elérni, például egy Ogg Vorbis szerverről zenét hallgatni. Ehhez a szerverhez viszont csak akkor tudnánk csatlakozni, ha a 22 vagy 80 portokon üzemelne.
Ezt a problémát úgy oldhatjuk meg, ha felépítünk egy SSH kapcsolatot a hálózatunk tűzfalán kívül levő számítógéppel és segítségével átbújunk az Ogg Vorbis szerverhez.
% ssh -2 -N -f -L 8888:zene.gép.hu:8000 felhasználó@tűzfalazatlan-rendszer.gép.org felhasználó@tűzfalazatlan-rendszer.gép.org's password: *******
A zenelejátszó kliensüknek adjuk meg a localhost 8888 portját, amely pedig a tűzfal sikeres kijátszásával továbbítódik a zene.gép.hu 8000-res portjára.
AllowUsers
felhasználói
beállításGyakran nem árt korlátozni a felhasználók bejelentkezését. Az AllowUsers erre tökéletesen megfelel. Például, ha csak 192.168.1.32 címről engedjük bejelentkezni a root felhasználót, akkor ehhez valami ilyesmit kell beírnunk az /etc/ssh/sshd_config állományba:
AllowUsers root@192.168.1.32
Ezzel pedig csupán nevének megadásával engedélyezzük az admin felhasználó bejelentkezését (bárhonnan):
AllowUsers admin
Egy sorban több felhasználó is megadható, mint például:
AllowUsers root@192.168.1.32 admin
Megjegyzés: Ilyenkor ne felejtsük el megadni az összes bejelentkezésre (valamilyen formában) jogosult felhasználót megadni, máskülönben kizárjuk ezeket.
Miután elvégeztük a szükséges változtatásokat az /etc/ssh/sshd_config állományban, utasítsuk az sshd(8) démont a konfigurációs állományok újraolvasására:
# /etc/rc.d/sshd reload
A FreeBSD 5.0 és későbbi változatai különböző fejlesztéseket hoztak az állományrendszerekben, például a pillanatképek készítése vagy a hozzáférés-vezérlési listák (Access Control List, ACL-ek) támogatása.
A hozzáférés-vezérlési listák a szabványos UNIX-os engedély modellt bővítik ki egy igen kompatibilis (POSIX.1e) módon. Használatával a rendszergazdák egy sokkal kifinomultabb biztonsági modellt tudhatnak a kezük ügyében.
Az UFS állományrendszerek ACL támogatását úgy tudjuk engedélyezni, ha a rendszermagot az
options UFS_ACL
paraméterrel fordítjuk le. Amennyiben ezt nem fordítottuk bele, akkor az ACL támogatással rendelkező állományrendszerek csatlakoztatása során egy figyelmeztetést kapunk. Ez az opció a GENERIC rendszermag része. Az ACL az állományrendszeren engedélyezett kiterjesztett tulajdonságokra támaszkodik. Ezeket a kiterjesztett tulajdonságokat a következő generációs UNIX állományrendszer, az UFS2 már alapból ismeri.
Megjegyzés: UFS1 típusú állományrendszereken sokkal nagyobb a kiterjesztett tulajdonságok kezelésének költsége, mint az UFS2 esetében. Az UFS2 jóval nagyobb teljesítménnyel képes dolgozni a kiterjesztett tulajdonságokkal. Emiatt a hozzáférés-vezérlési listák használatához az UFS2 sokkal inkább ajánlott, mint az UFS1.
Az ACL használatát a
csatlakoztatáskor megadott acls
beállítással engedélyezhetjük,
amelyet érdemes felvennünk az
/etc/fstab állományba. Ha a
tunefs(8) segédprogrammal az
állományrendszer fejlécében levő
szuperblokk ACL kapcsolóját
átírjuk, akkor ez a beállítás
automatikussá tehető. A szuperblokk használata
több okból is ajánlatos:
A csatlakoztatáskor megadott ACL
beállítás nem változtatható
egy egyszerű újracsatlakoztatással
(mount(8) -u
), csak egy teljes
leválasztással (umount(8)) és egy
friss csatlakoztatással (mount(8)). Ennek
értelmében az ACL-ek a
rendszerindító állományrendszeren
a rendszer indulása után nem
engedélyezhetőek. Ám ez azt is jelenti,
hogy egy már használatban levő
állományrendszer
beállításai sem
változtathatóak meg.
Ha a kapcsolót a szuperblokkban állítjuk be, akkor az állományrendszert még akkor is ACL támogatással csatlakoztatja a rendszer, ha azt nem adtuk meg az fstab állományban vagy az eszközeink átrendeződtek. Így az állományrendszereket még véletlenül sem tudjuk ACL használata nélkül csatlakoztatni, ami egyébként így komoly biztonsági problémákat okozhatna.
Megjegyzés: Beállíthatjuk úgy is ACL kezelését, hogy egy friss csatlakoztatás nélkül is bekapcsolható legyen, azonban az ilyen állományrendszerek ACL nélküli csatlakoztatását nem ajánljuk senkinek, mivel ha egyszer már engedélyeztük a használatukat, majd kikapcsoljuk ezeket és végül a kiterjesztett tulajdonságok törlése nélkül újra engedélyezzük, akkor nagyon könnyen pórul járhatunk. Ha elkezdtük használni az ACL-eket egy állományrendszeren, akkor ne tiltsuk le ezeket, mert az így keletkező állományvédelem nem feltétlenül lesz kompatibilis a felhasználók által beállítottakkal, és az ACL újraengedélyezése a változásaik előtti korábbi ACL engedélyeket fogja visszaállítani az állományokra, aminek hatása kiszámíthatatlan.
A hozzáférés-vezérlési listákat használó állományrendszerek esetén egy + (plusz) jellel ábrázolják a kiterjesztett engedélyeket. Például:
drwx------ 2 robert robert 512 Dec 27 11:54 private drwxrwx---+ 2 robert robert 512 Dec 23 10:57 könyvtár1 drwxrwx---+ 2 robert robert 512 Dec 22 10:20 könyvtár2 drwxrwx---+ 2 robert robert 512 Dec 27 11:57 könyvtár3 drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html
Láthatjuk, hogy a könyvtár1, könyvtár2 és könyvtár3 könyvtárakhoz tartoznak ACL típusú engedélyek, míg a public_html könyvtárhoz nem.
Az állományrendszerben található ACL engedélyeket a getfacl(1) segédprogrammal nézhetjük meg. Például a próba állomány ACL engedélyeit a következő paranccsal tudjuk megnézni:
% getfacl próba #file:próba #owner:1001 #group:1001 user::rw- group::r-- other::r--
Egy állomány ACL engedélyeit a setfacl(1) segédprogrammal tudjuk megváltoztatni. Figyeljük meg:
% setfacl -k próba
A -k
opció törli az összes
ACL alapú engedélyt egy
állományról vagy
állományrendszerről. Ennél viszont
sokkal hasznosabb a -b
opció
használata, mivel az meghagyja az ACL
működéséhez szükséges
alapvető mezőket.
% setfacl -m u:trhodes:rwx,group:web:r--,o::--- próba
Ebben a fenti parancsban a -m
opciót
pedig arra használtuk, hogy módosítsuk az
alapértelmezett ACL
bejegyzéseket. Mivel az ezt megelőző
parancsban teljesen töröltük még az
előredefiniált bejegyzéseket is, ez a parancs
a megadott paraméterekkel kiegészítve
ezeket vissza fogja állítani. Ügyeljünk
arra, hogy ha olyan felhasználót vagy csoportot
adunk meg, ami nem létezik a rendszerben, akkor a
szabvány kimenetre egy “Invalid
argument” hibaüzenetet kapunk.
Az utóbbi években a biztonsági kérdésekkel foglalkozó világban számos fejlesztésre került sor a sebezhetőségi figyelmeztetések feldolgozásában. Manapság tulajdonképpen bármilyen operációs rendszer fokozott veszélynek teszik ki magát a külső programok telepítésével és használatával.
A sebezhetőségekről beszámoló értesítések a biztonság egyik alapköve, azonban a FreeBSD projekt nem tud ilyen jelentéseket kiadni a FreeBSD alaprendszerén kívül minden egyes külső alkalmazáshoz. Azonban lehetőségünk van enyhíteni a külső csomagok sebezhetőségén és figyelmeztetni a rendszergazdákat az ismert biztonsági problémákra. A FreeBSD-nek van egy Portaudit nevű segédprogramja, amit kizárólag erre a célra hoztak létre.
A ports-mgmt/portaudit port egy adatbázist használ, ahol a FreeBSD biztonsági csapata és a portok fejlesztői tartják karban az ismert biztonsági problémákat.
A Portaudit használatának megkezdéséhez telepítsük a Portgyűjteményből:
# cd /usr/ports/ports-mgmt/portaudit && make install clean
A telepítési folyamat során a periodic(8) konfigurációs állományai is frissítődnek, így a Portaudit is lefut a napi biztonsági ellenőrzések folyamán. Gondoskodjunk róla, hogy a root felhasználónak levélben elküldött a napi biztonsági értesítéseket rendesen elolvassuk. Nincs szükségünk további beállításokra.
A telepítés után a rendszergazda a következő paranccsal tudja frissíteni a saját adatbázispéldányát és megnézni a pillanatnyilag telepített csomagok ismert sebezhetőségeit:
# portaudit -Fda
Megjegyzés: Ez az adatbázis a periodic(8) minden egy futásakor magától frissül, ezért ez a parancs lényegében elhagyható. Egyedül a soronkövetkező példákhoz kell kiadni.
A Portgyűjteményből telepített külső alkalmazások megbízhatóságának ellenőrzését az alábbi parancs kiadásával bármikor elvégezhetjük:
# portaudit -a
A Portaudit ennek hatására valahogy így fogja megjeleníteni a sebezhető csomagokat:
Affected package: cups-base-1.1.22.0_1 Type of problem: cups-base -- HPGL buffer overflow vulnerability. Reference: <http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html> 1 problem(s) in your installed packages found. You are advised to update or deinstall the affected package(s) immediately.
Fordítása:
Érintett csomag: cups-base-1.1.22.0_1 A probléma jellege: cups-base -- HPGL puffer túlcsordulási sebezhetőség. Link: <http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html> A telepített csomagokkal kapcsolatban 1 problemát találtam. Javasoljuk, hogy az érintett csomagokat azonnal frissítse vagy távolítsa el.
Ha a böngészőnket az itt megadott címre irányítjuk, akkor megismerhetjük a kérdéses sebezhetőség pontosabb részleteit. Ezen az oldalon megtalálhatjuk a hiba által érintett verziókat a FreeBSD portok verziója szerint, illetve más olyan honlapokat, ahol biztonsági figyelmeztetéseket találhatunk.
Röviden összefoglalva, a Portaudit egy komoly segédeszköz és hitetlenül hasznos kiegészítője a Portupgrade portnak.
A FreeBSD több más kereskedelmi minőségű operációs rendszerhez hasonlóan “Biztonsági figyelmeztéseket” (Security Advisory) ad ki. Ezek a figyelmeztetések általában megjelennek a biztonsággal foglalkozó levelezési listákon és a hivatkozott hibák kijavítása után a megfelelő kiadások hibajegyzékében is. Ebben a szakaszban megismerjük és értelmezzük ezeket a figyelmeztetéseket, valamint megtudhatjuk, milyen lépéseket kell megtennünk a rendszerünk kijavításához.
A FreeBSD biztonsági figyelmeztetései az alább látható formában jelennek meg, amit mi most a freebsd-security-notifications levelezési listáról kölcsönöztünk.
============================================================================= FreeBSD-SA-XX:XX.UTIL Security Advisory The FreeBSD Project Topic: denial of service due to some problem Category: core Module: sys Announced: 2003-09-23 Credits: Person@EMAIL-ADDRESS Affects: All releases of FreeBSD FreeBSD 4-STABLE prior to the correction date Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE) 2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6) 2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15) 2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8) 2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18) 2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21) 2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33) 2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43) 2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39) CVE Name: CVE-XXXX-XXXX For general information regarding FreeBSD Security Advisories, including descriptions of the fields above, security branches, and the following sections, please visit http://www.FreeBSD.org/security/. I. Background II. Problem Description III. Impact IV. Workaround V. Solution VI. Correction details VII. References
A futó programok nyilvántartása olyan biztonsági módszer, ahol a rendszergazda figyelemmel kíséri a rendszer használatban levő erőforrásait, a felhasználók közti megoszlását, gondoskodik a rendszer felügyeletéről és valamennyire nyomon követi a felhasználók parancsait.
Ennek a módszernek egyaránt megvannak a maga előnyei és hátrányai. Az egyik előnye, hogy a használatával a behatolás egészen a betörés pontjáig visszakövethető. Hátranya viszont, hogy a futó programok nyilvántartása rengeteg mennyiségű naplót generál és ehhez sok lemezterületre lesz szükségünk. Ebben a szakaszban végigjárjuk a programok nyilvántartásának alapjait.
A futó programok nyilvántartását először engedélyeznünk kell. Ehhez a következő parancsokat kell kiadnunk:
# touch /var/account/acct # accton /var/account/acct # echo 'accounting_enable="YES"' >> /etc/rc.conf
Miután aktiváltuk, a nyilvántartást elkezdi számbavenni a processzor kihasználtságát, a parancsokat stb. A nyilvántartás emberek számára nem olvasható formátumban készül, ezért csak az sa(8) segédprogrammal tudjuk megnézni. Ha nem adunk meg neki semmilyen opciót, akkor az sa kilistázza a felhasználónkénti hívásokat, az összes eltelt időt percben, a teljes processzor- és felhasználói időt percben, az I/O műveletek átlagos számát stb.
A kiadott parancsokról a lastcomm(1) programmal tudunk tájékozódni. A lastcomm segítségével ki tudjuk íratni a felhasználók adott terminálon kiadott parancsait is, mint például:
# lastcomm ls trhodes ttyp1
Ezzel megjelenik a trhodes nevű felhasználó ttyp1 terminálon kiadott összes ismert ls parancsa.
Számos hasznos beállítást és hozzájuk tartozó leírást találhatunk még a lastcomm(1), acct(5) és sa(8) man oldalakon.
Ez a fejezet a FreeBSD-ben található jail alrendszert, valamint annak használatát mutatja be közelebbről. Az jail, melyet gyakran csak úgy emlegetnek, mint a chroot környezetek továbbfejlesztését, a rendszergazdák számára ajánlott, nagyon sokoldalú eszköz, de a haladó felhasználók is hasznosnak találhatják.
A fejezet elolvasása során megismerjük:
mi is az a jail, milyen célra használható a FreeBSD-ben;
hogyan hozzunk létre, indítsunk el és állítsunk le jaileket;
a létrehozott jailek karbantartásainak alapjait, a jailek belülről és kívülről egyaránt.
A jail alrendszerről még több hasznos információt a következő helyekről tudhatunk meg:
A jail(8) man oldal. Ez tartalmazza a jail segédprogram teljes referenciáját — ez az a karbantartásra használható eszköz, amellyel el tudjuk indítani, le tudjuk állítani és vezérelni tudjuk a jaileket a FreeBSD-ben.
A levelezési listák és azok archívumai. A FreeBSD general questions levelezési lista archívuma és a FreeBSD lista szerveren található többi levelezési lista rengeteg olvasnivalót tartogat a jailekkel kapcsolatban. Mindig érdemes keresni ezekben az archívumokban, vagy beküldeni a kérdésünket a freebsd-questions levelezési listára.
A fejezet további részében a következő fogalmakat fogjuk használni, hogy a FreeBSD jailekhez tartozó egyes részeit és azok belső működését, valamint kapcsolatukat a rendszer többi részével még inkább érthetővé tegyük:
Egy segédprogram, amely a FreeBSD chroot(2) rendszerhívásán keresztül egy program és annak leszármazottjainak futtatásához megváltoztatja a rendszer gyökérkönyvtárát (change root).
A “chroot” módban futó programok környezete. Olyan erőforrásokat foglal magában, mint mondjuk az állományrendszer látható része, az elérhető felhasználói és csoport azonosítók, hálózati csatolók és egyéb folyamatok közti kommunikációs mechanizmusok stb.
Az a rendszerkarbantartó segédprogram, amely lehetővé teszi program elindítását elzárt környezetben.
Az elzárt környezetet irányító rendszer. A befogadó rendszer hozzá tud férni az összes elérhető hardveres erőforráshoz, képes az elzárt környezeten kívül és belül futó programokat vezérelni. Az egyik legfontosabb különbség a befogadó és az elzárt rendszer között, hogy azok a korlátozások, amelyek az elzárt környezetben rendszeradminisztrátori jogokkal futó programokra vonatkoznak, nem feltétlenül érvényesek a befogadó rendszerben futóakra.
Olyan program, felhasználó vagy más egyéb egyed, amely csak egy jailen keresztül, korlátozottan tud hozzáférni az erőforrásokhoz.
Mivel a rendszeradminisztráció egy nehéz és zavarba ejtő feladat, rengeteg komoly eszköz jött létre a rendszergazdák életének megkönnyítésére. Ezek az eszközök többnyire a rendszerek telepítését, beállítását és karbantartását igyekeznek valamilyen módon jobbá tenni. A rendszergazdák egyik feladata úgy gondoskodni a biztonságról, hogy közben a rendszer képes legyen ellátni eredeti feladatát.
A FreeBSD rendszerek biztonságosságának növelését hivatott egyik ilyen eszköz a jails. Először a FreeBSD 4.X verziójában bukkant fel, de jelentős fejlődésen ment keresztül a FreeBSD 5.X verziókban, aminek köszönhetően sokkal erőteljesebb és rugalmasabb alrendszerré vált. A fejlesztése természetesen most is folytatódik tovább, állandóan fejlődik a használhatósága, teljesítménye, megbízhatósága és biztonságossága.
A BSD-szerű operációs rendszerekben már a 4.2BSD óta megtalálható volt a chroot(2). A chroot(8) segédprogrammal meg tudjuk megváltoztatni adott programok számára a gyökérkönyvtárat, és ezzel egy biztonságos környezetet teremteni, távol a rendszer többi részétől. A chroot-tal kialakított környezetben elinduló programok nem tudnak hozzáférni a rajta kívül található állományokhoz és erőforrásokhoz. Ennek okán, ha egy ilyen környezetben futó szolgáltatást megtámadnak, az önmagában még nem teszi lehetővé a támadó számára, hogy elérhesse az egész rendszert. A chroot(8) remekül használható olyan egyszerűbb feladatok megoldására, amelyek nem igényelnek túlságosan sok rugalmasságot vagy bonyolult és fejlett támogatást. A chroot ötletének felmerülése óta azonban számos kiskaput találtak már az általa létrehozott környezetekben, és habár ezek mindegyikét javították a FreeBSD újabb változataiban, teljesen egyértelművé vált, hogy a chroot(2) nem biztosít járható utat a szolgáltatások biztonságossá tételéhez. Erre a feladatra egy új alrendszert kellett kiépíteni.
Ez az egyik oka annak, amiért az jaileket kifejlesztették.
A jailek által képviselt elzárás ötlete több szempontból is a hagyományos chroot(2) környezet elvén alapszik. Egy hagyományos chroot(2) környezetben futó programok korlátozása csupán abban merül ki, hogy az állományrendszer melyik részét láthatják. A rendszer többi erőforrása (mint mondjuk a felhasználók, futó programok vagy a hálózati alrendszer) azonban továbbra is megosztva marad a chroot környezetben és a befogadó rendszerben futó programok között. A jailek által alkalmazott megoldás kibővíti ezt a modellt, és nem csak az állományrendszerre vonatkozó hozzáférést virtualizálja, hanem több más dolog mellett kiterjeszti ezt a felhasználókra és a FreeBSD hálózati alrendszerére is. Az elzárt környezetek beállításaihoz elérhető finomhangolási lehetőségekről bővebben a 15.5 Szakaszban esik szó.
A jaileket az alább négy elem írja le:
A könyvtárszerkezet egy részfája — attól a résztől indulva, ahonnan a jail kezdődik. A jailen belül futó programok nem léphetnek ki ebből a részfából. Az eredeti chroot(2) kialakításában merengő biztonsági hibák lehetőségei nem veszélyeztetik a többi FreeBSD jailt.
A rendszer neve — a név, amelyet a jailen belül használunk. Mivel a jaileket elsősorban hálózati szolgáltatások kordában tartására használjuk, a jailekhez tartozó beszédes rendszernevek sokat tudnak segíteni a rendszergazdák munkájában.
Egy IP-cím — a jailhez tartozik és nem változtatható meg a működése során. Egy jail IP-címe általában egy már létező hálózati csatoló másik címe, de ez nem szükségszerűen igaz minden esetben.
Egy parancs — annak a programnak az elérési útja, amelyet elzártan kívánunk futtatni. Az elzárt környezet gyökerétől mérve relatívan adjuk meg, és az adott környezet típusától függően eltérő lehet.
Ezektől eltekintve a jailek rendelkezhetnek saját felhasználókkal és lehetnek saját root felhasználóik is. Természetesen a root hatásköre csak az elzárt környezetre korlátozódik, és a befogadó rendszer szemszögéből az elzárt root nem mindenható. Ráadásul az elzárt root felhasználó nem hajthat végre semmilyen kritikus műveletet a saját jail(8) környezetén kívül. A root további képességeiről és korlátozásairól lentiekben bővebben is említést teszünk a 15.5 Szakaszban.
Egyes rendszergazdák a jaileket a következő két típusba sorolják: “teljes” jail, mely egy valódi FreeBSD rendszerre emlékeztet, és a “szolgáltatás” jail, mely egyetlen, feltehetően kiemelt jogokkal futó alkalmazás vagy szolgáltatás számára van előkészítve. Ez a besorolás csupán fogalmi szintű, a jail felépítésének módját nem befolyásolja. A jail(8) man oldal részletesen ismerteti a jailek létrehozását:
# setenv D /itt/lesz/a/jail # mkdir -p $D # cd /usr/src # make buildworld # make installworld DESTDIR=$D # make distribution DESTDIR=$D # mount -t devfs devfs $D/dev
Ahogy a jailt telepítettük, a jail(8)
segédprogrammal tudjuk elindítani. A jail(8)
négy kötelező paramétert vár,
melyekre a 15.3.1 Szakaszban ki is
térünk. Más paramétereket is
megadhatunk, például azt, hogy az elzárt
program egy adott felhasználó jogaival fusson. A
command
paraméter használata a jail
típusától függ: egy
virtuális rendszer esetében a
/etc/rc jó választásnak
bizonyulhat, mivel ennek segítségével egy
valódi FreeBSD rendszerindítási
folyamatát játszhatjuk le. Amennyiben elzárt
szolgáltatásról van
szól, az adott szolgáltatástól vagy
alkalmazástól függ.
A jaileket gyakran már a rendszerindítás során elindítják, amit a FreeBSD rc mechanizmusa nagyban meg is könnyít.
A rendszer indítása során aktiválandó jailek listáját vegyük hozzá a rc.conf(5) állományhoz:
jail_enable="YES" # Ide NO-t írjunk, ha ki akarjuk kapcsolni jail_list="www" # Szóközzel elválasztva soroljuk fel a jaileket
Megjegyzés: A
jail_list
értékeként felsorolt jailek nevei csak betűket és számjegyeket tartalmazhatnak.
A jail_list
-ben szereplő
összes jailt meg kell adnunk az ezeket
leíró rc.conf(5)-beli
beállításokat:
jail_www_rootdir="/usr/jail/www" # a jail gyökérkönyvtára jail_www_hostname="www.example.org" # a jail neve jail_www_ip="192.168.0.10" # a jail IP-címe jail_www_devfs_enable="YES" # legyen-e devfs a jailen belül jail_www_devfs_ruleset="www_ruleset" # az alkalmazott devfs szabályrendszer
Az rc.conf(5) állományban szereplő
jailek esetén a /etc/rc szkript
fut le, tehát feltételezi, hogy az így
megadott jail egy teljes virtuális rendszer. A
szolgáltatások jailbe foglalásához
meg kell változtatnunk a jail alapértelmezett
parancsát is. Ezt a
jail_jailnév_exec_start
opció megfelelő
beállításával tudjuk
megtenni.
Megjegyzés: Az összes itt elérhető opciót a rc.conf(5) man oldalon találhatjuk meg.
Ha léteznek a megfelelő bejegyzések az rc.conf állományban, akkor az /etc/rc.d/jail szkript is használható arra, hogy a jaileket kézzel indítsuk el vagy állítsuk le:
# /etc/rc.d/jail start www # /etc/rc.d/jail stop www
A jail(8) leállítására jelen pillanatban még nem érhető el szabályos módszer. Ez azért van, mert a szabályos rendszerleállítást elvégző parancsok nem használhatóak a jailen belül. Emiatt a jaileket a legtisztábban úgy tudjuk leállítani, ha kiadjuk az alábbi parancsot magában a jailben vagy pedig a jexec(8) segédprogrammal a jailen kívülről:
# sh /etc/rc.shutdown
Erről a témáról többet a jail(8) man oldalon olvashatunk.
Számos opció állítható be a jaileknél, és sokféle módon vegyíthetjük a befogadó FreeBSD rendszerünket a jailekkel, ami által magasabb szintű alkalmazásokat hozhatunk létre. Ebben a részben bemutatunk:
Néhány olyan beállítást, amellyel finomhangolhatjuk a telepített jailek által megvalósított biztonsági megszorítások viselkedését.
A jailek kezelésére alkalmas néhány olyan magasabb szintű alkalmazást, amelyek elérhetőek a FreeBSD Portgyűjteményén keresztül, és általános jail alapú megoldások kialakításához használhatóak.
A jailek beállításainak
finomhangolását túlnyomórészt
sysctl(8) változókkal végezhetjük
el. A sysctl-en belül egy speciális
részfában találhatunk erre alkalmas
beállításokat: ez a a FreeBSD rendszermag
opciói között megtalálható
security.jail.*
. Itt közüljük
a jailekre vonatkozó fontosabb sysctl
változók listáját, az
alapértelmezett értékeikkel együtt. A
nevek minden bizonnyal sokat elárulnak, de ha többet
szeretnénk tudni róluk, lapozzuk fel a
jail(8) és sysctl(8) man oldalakat.
security.jail.set_hostname_allowed:
1
security.jail.socket_unixiproute_only:
1
security.jail.sysvipc_allowed:
0
security.jail.enforce_statfs:
2
security.jail.allow_raw_sockets:
0
security.jail.chflags_allowed:
0
security.jail.jailed: 0
Ezekkel a változókkal a
befogadó rendszer
rendszergazdája tud hozzátenni vagy elvenni a
root felhasználó
alapértelmezett határaihoz. Vegyük azonban
észre, hogy egyes korlátozások azonban
semmiképpen sem szüntethetőek meg. A
root nem csatlakoztathat és
választhat le állományrendszereket a
jail(8) környezetben. Az elzárt
root nem tölthet be és
törölhet devfs(8) szabályrendszereket,
tűzfal szabályokat sem, ill. nem végezhet
semmilyen olyan bármilyen más karbantartási
feladatot, amely a rendszermag adataiban
módosítást vonna maga után,
például nem állíthatja a rendszermag
securelevel
(biztonsági
szintjének) értékét.
A FreeBSD alaprendszere tartalmazza azokat a segédeszközöket, amelyekkel a rendszerben aktív jailek információt tudjuk megjeleníteni, vagy csatlakozni tudunk hozzájuk. A jls(8) és jexec(8) parancsok részei az alap FreeBSD rendszernek, segítségükkel elvégezhetőek az alábbi egyszerű feladatokat:
Ki tudjuk íratni az aktív jailek és hozzájuk tartozó azonosítókat (JID-eket), IP-címeket, neveket és útvonalakat.
A befogadó rendszerből hozzá tudunk csatlakozni egy futó jailhez, és parancsokat tudunk futtatni a jailen belül vagy karbantartási feladatokat tudunk elvégezni magán a jailen belül. Ez különösen hasznosnak bizonyulhat, amikor a root felhasználó szabályosan le akarja állítani a jailt. A jexec(8) segédprogrammal el tudunk indítani egy parancsértelmezőt a jailen belül, amiből aztán irányíthatjuk. Példa:
# jexec 1 tcsh
A sok külső karbantartó eszköz közül az egyik legteljesebb és leghasznosabb a sysutils/jailutils. Sok kisebb alkalmazást tartalmaz, melyek kibővítik a jail(8) irányíthatóságát. Bővebb információkért kérjük, látogassa meg a hozzá tartozó honlapot.
Ez a rész eredetileg Simon L. Nielsen <simon@FreeBSD.org>
http://simon.nitro.dk/service-jails.html oldalon
található írásán, valamint
Ken Tom (<locals@gmail.com>
) átdolgozott
cikkén alapul. Itt megismerhetjük, hogyan
állítsunk be a FreeBSD rendszerünkben egy
biztonsági réteget a jail(8)
felhasználásával. Továbbá
feltételezzük, hogy ez a rendszer legalább
RELENG_6_0 verziójú és a fejezetben
korábban tárgyaltakat az olvasó teljes
mértékben megértette.
A jailek egyik legnagyobb gondja a frissítés folyamatának lebonyolítása. Azért jelent ez egyre inkább gondot, mert minden egyes jailt újra fel kell építenünk a frissítése során. Ez többnyire nem okoz gondot egyetlen jail használata során, mivel maga a frissítési folyamat meglehetősen egyszerű, azonban igen időigényessé és fárasztóvá tud válni több jail esetében.
Figyelem: Ez a példa a FreeBSD képességeinek haladó szintű ismeretét követeli meg. Amennyiben az itt bemutatott lépesek túlságosan is bonyolultnak tűnnének, érdemes olyan egyszerűbb rendszerek után nézni, mint mondjuk a sysutils/ezjail, amely egy egyszerűbb módszert kínál fel a FreeBSD-ben használt jailek karbantartására, és nem is annyira bonyolult, mint ez a példa.
A bemutatandó példa célja, hogy feloldja az ilyen jellegű problémákat, és ezért igyekszik a jailek között mindent megosztani, ami csak lehetséges. Mindezt biztonságosan éri el — írásvédett mount_nullfs(8) állományrendszer használatával, aminek köszönhetően a frissítés maga egyszerűbbé, az egyes szolgáltatások különzárása pedig vonzóbbá válik. Ráadásul egyúttal egy nagyon egyszerű módszert mutat az új jailek hozzáadására és a régi törlésére ugyanúgy, mint a frissítésükre.
Megjegyzés: Például ilyen szolgáltatásokat kívánunk szabályozni: egy HTTP szervert, egy DNS szervert, egy SMTP szervert és így tovább.
Az itt szereplő beállítás céljai:
Készítsünk egy egyszerűen és könnyen átlátható jailkezelési rendszert. Ebből tehát következik, hogy ne kelljen lefuttatni a teljes rendszer telepítését minden egyes jailre.
Könnyítsük meg az új jailek hozzáadását és a régiek eltávolítását.
Könnyítsük meg a már létező jailek frissítését és cseréjét.
Tegyük lehetővé saját FreeBSD ágak futtatását.
Legyünk különösen körültekintőek a biztonság tekintetében, és igyekezzünk minél jobban csökkenteni veszély kockázatát.
Takarékoskodjunk a tárhellyel és az állományrendszerrel, amennyire csak lehet.
Ahogy azt már korábban is említettük, ez a kialakítás nagyban építkezik egyetlen fő sablonra, amely írásvédetten kerül csatlakoztatásra (nullfsen keresztül) az egyes jailekben, valamint jailenként egy-egy írható-olvasható eszközre. Ez az eszköz lehet egy külön fizikai lemez, egy partíció vagy egy vnode alapú md(4) eszköz. Ebben a példában írható-olvasható nullfs csatlakozásokat használunk.
Az állományrendszer kiosztása a most következő listában szerepel:
Minden jailt a /home/j könyvtárban csatlakoztatunk.
A /home/j/mroot lesz az összes jail sablonja és mindegyikük számára írásvédett.
Minden jailnek létrehozunk egy üres alkönyvtárat a /home/j könyvtárban.
Minden jailnek lesz egy /s alkönyvtára, amelyet a rendszer írható-olvasható részére irányítunk.
Minden jailnek lesz egy saját írható-olvasható része, amely a /home/j/skel könyvtáron alapszik.
Mindegyik elzárt terület (a jailek írható-olvasható része) a /home/js könyvtárban jön létre.
Megjegyzés: Ez a kiosztás feltételezi, hogy a jaileket a /home partíción hozzuk létre. Ez természetesen bármi másra megváltoztatható, de akkor figyelnünk kell erre minden egyes parancs kiadása előtt.
Ez a rész leírja a fő sablon létrehozásához szükséges lépéseket. Ez a jailek számára írásvédett lesz.
Érdemes mindig frissíteni a FreeBSD rendszerünket a legújabb -RELEASE ágra. Ehhez olvassuk el az ide tartozó fejezetet a kézikönyvből. Abban az esetben, ha a frissítés nem lenne megoldható, egy make buildworld parancsot mindenképpen le kell tudnunk futtatni. Ezenfelül a sysutils/cpdup csomagra is szükségünk van. Használni fogjuk a portsnap(8) segédprogramot is a FreeBSD Portgyűjtemény letöltéséhez. Akik nem ismernék, a kézikönyv erről szóló fejezetében olvashatnak róla.
Először is, készítsük el az írásvédett állományrendszer könyvtárszerkezetét, amely majd tartalmazni fogja a jailek által használt FreeBSD-s programokat. Ezután lépjünk be a FreeBSD forrásfájának könyvtárába és telepítsük fel az írásvédett állományrendszert a sablonba:
# mkdir /home/j /home/j/mroot # cd /usr/src # make installworld DESTDIR=/home/j/mroot
Ezt követően készítsük elő a jailek számára a FreeBSD Portgyűjteményt és FreeBSD forrásfát, melyek kellenek a mergemaster használatához:
# cd /home/j/mroot # mkdir usr/ports # portsnap -p /home/j/mroot/usr/ports fetch extract # cpdup /usr/src /home/j/mroot/usr/src
Hozzuk létre a rendszer írásvédett részének vázát:
# mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles # mv etc /home/j/skel # mv usr/local /home/j/skel/usr-local # mv tmp /home/j/skel # mv var /home/j/skel # mv root /home/j/skel
Használjuk a mergemastert a hiányzó konfigurációs állományok telepítésére. Szabaduljunk meg a mergemaster által készített felesleges könyvtáraktól:
# mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i # cd /home/j/skel # rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev
Most pedig szimbolikusan linkeljük az írható-olvasható állományrendszert az írásvédett állományrendszerre. Ellenőrizzük, hogy a szimbolikus linkek a megfelelő s/ könyvtárakban jöttek létre. Valós vagy rossz helyen létrehozott könyvtárak használata esetén a telepítés nem fog sikerülni.
# cd /home/j/mroot # mkdir s # ln -s s/etc etc # ln -s s/home home # ln -s s/root root # ln -s ../s/usr-local usr/local # ln -s ../s/usr-X11R6 usr/X11R6 # ln -s ../../s/distfiles usr/ports/distfiles # ln -s s/tmp tmp # ln -s s/var var
Utolsó lépésként hozzunk létre egy /home/j/skel/etc/make.conf állományt az alábbi tartalommal:
WRKDIRPREFIX?= /s/portbuild
A WRKDIRPREFIX beállításával lehetővé válik a FreeBSD portok jaileken belüli fordítása. Ne felejtsük el, hogy a portokat tartalmazó könyvtár az írásvédett rendszer része! Az átállított WRKDIRPREFIX azonban megengedi, hogy a fordítások az egyes jailek írható-olvasható részeiben történjenek.
Most, miután teljesen elkészült a FreeBSD jailek sablonja, be is tudjuk állítani és hozzá is tudjuk venni ezeket az /etc/rc.conf állományhoz. Ebben a példában 3 jail létrehozását láthatjuk: “NS”, “MAIL” és “WWW”.
Írjuk bele a következő sorokat az /etc/fstab állományba, aminek köszönhetően az egyes jailek számára elérhetővé válik az írásvédett sablon és a hozzájuk tartozó írható-olvasható területek:
/home/j/mroot /home/j/ns nullfs ro 0 0 /home/j/mroot /home/j/mail nullfs ro 0 0 /home/j/mroot /home/j/www nullfs ro 0 0 /home/js/ns /home/j/ns/s nullfs rw 0 0 /home/js/mail /home/j/mail/s nullfs rw 0 0 /home/js/www /home/j/www/s nullfs rw 0 0
Megjegyzés: Az első helyen nullával jelölt partíciókat a fsck(8) nem fogja ellenőrizni a rendszer indulása során, a második helyen nullával jelölt partíciókat pedig nem fogja menteni a dump(8). Mi egyáltalán nem akarjuk, hogy az fsck ellenőrizze vagy a dump lementse a jailjeinkhez tartozó írásvédett nullfs-partícióinkat. Ezért szerepel végig “0 0” a fentebb szereplő fstab-bejegyzések utolsó két oszlopában.
Állítsuk be a jaileket az /etc/rc.conf-ban:
jail_enable="YES" jail_set_hostname_allow="NO" jail_list="ns mail www" jail_ns_hostname="ns.example.org" jail_ns_ip="192.168.3.17" jail_ns_rootdir="/usr/home/j/ns" jail_ns_devfs_enable="YES" jail_mail_hostname="mail.example.org" jail_mail_ip="192.168.3.18" jail_mail_rootdir="/usr/home/j/mail" jail_mail_devfs_enable="YES" jail_www_hostname="www.example.org" jail_www_ip="62.123.43.14" jail_www_rootdir="/usr/home/j/www" jail_www_devfs_enable="YES"
Figyelem: Azért állítottuk a
jail_név_rootdir
változó értékét a /usr/home könyvtárra a /home könyvtár helyett, mert a FreeBSD alaptelepítésében a /home könyvtár fizikailag a /usr/home könyvtárral egyezik meg. Ajail_név_rootdir
változó értékeként megadott könyvtár nem tartalmazhat szimbolikus linket, máskülönben a jailek nem lesznek hajlandóak létrejönni. Ennek megállapításában a realpath(1) segédprogram lehet segítségünkre. A korlátozás részleteiről a FreeBSD-SA-07:01.jail biztonsági figyelmeztetésben olvashatunk.
Hozzuk létre az egyes jailek írásvédett állományrendszereihez szükséges csatlakozási pontokat:
# mkdir /home/j/ns /home/j/mail /home/j/www
Telepítsük az írható-olvasható sablont az egyes jailekbe. Figyeljük meg a sysutils/cpdup használatát, amellyel az egyes könyvtárak pontos másolatait hozhatjuk létre:
# mkdir /home/js # cpdup /home/j/skel /home/js/ns # cpdup /home/j/skel /home/js/mail # cpdup /home/j/skel /home/js/www
Ebben a fázisban a jailek már elkészültek és készen állnak a futásra. Először csatlakoztassuk az egyes jailekhez szükséges állományrendszereket, majd indítsuk el ezeket a /etc/rc.d/jail szkripttel:
# mount -a # /etc/rc.d/jail start
A jailek most már futnak. Az elindulásuk ellenőrzéséhez használjuk a jls(8) parancsot. Valami ilyesmit láthatunk a kiadása után:
# jls JID IP Address Hostname Path 3 192.168.3.17 ns.example.org /home/j/ns 2 192.168.3.18 mail.example.org /home/j/mail 1 62.123.43.14 www.example.org /home/j/www
Itt már be tudunk jelentkezni az egyes jailekbe, új felhasználókat tudunk készíteni vagy démonokat tudunk beállítani. A JID oszlop mutatja az egyes jailek azonosítási számát. A 3-as JID számú jailben az alábbi parancs használatával karbantartási feladatokat elvégezni:
# jexec 3 tcsh
Időről időre adódhat, hogy frissítenünk kell a rendszert a FreeBSD egy újabb változatára, vagy egy biztonsági hiba javítása miatt, vagy pedig a már meglevő jailek számára hasznos újítások bevezetése miatt. Ez a kialakítás megkönnyíti a korábban létrehozott jailjeink frissítését. Továbbá igyekszik minimalizálni a kiesésüket is, mivel a jaileket csak a legutolsó pillanatban fogjuk leállítani. Sőt, még az is lehetővé válik, hogy visszaállítsuk a korábbi verziót, ha véletlenül valami rosszul sülne el menetközben.
Első lépéseként frissítsük magát a befogadó rendszert a megszokott módon. Ezután hozzunk létre egy új írásvédett sablont a /home/j/mroot2 könyvtárban.
# mkdir /home/j/mroot2 # cd /usr/src # make installworld DESTDIR=/home/j/mroot2 # cd /home/j/mroot2 # cpdup /usr/src usr/src # mkdir s
A installworld lefuttatása létrehoz néhány felesleges könyvtárat, melyeket takarítsunk is el:
# chflags -R 0 var # rm -R etc var root usr/local tmp
Hozzuk újra létre az írható-olvasható szimbolikus linkjeinket a fő állományrendszerre:
# ln -s s/etc etc # ln -s s/root root # ln -s s/home home # ln -s ../s/usr-local usr/local # ln -s ../s/usr-X11R6 usr/X11R6 # ln -s s/tmp tmp # ln -s s/var var
Most érkezett el az idő, hogy leállítsuk a jaileket:
# /etc/rc.d/jail stop
Válasszuk le az eredeti állományrendszereket:
# umount /home/j/ns/s # umount /home/j/ns # umount /home/j/mail/s # umount /home/j/mail # umount /home/j/www/s # umount /home/j/www
Megjegyzés: Az írható-olvasható állományrendszerek hozzá vannak kapcsolva az írásvédett állományrendszerhez (/s), ezért azokat először le kell választani.
Mozgassuk el az útból a régi írásvédett állományrendszerünket és váltsuk fel az újjal. Így biztonsági mentésként és a régi írásvédett rendszer archívumaként továbbra is rendelkezésre áll, ha valami baj történne. Az itt használt elnevezés az újonnan létrehozott írásvédett állományrendszer dátumából ered. Mozgassuk át az eredeti FreeBSD Portgyűjteményt az új állományrendszerre, hogy megtakarítsunk némi tárhelyet és állományleírót:
# cd /home/j # mv mroot mroot.20060601 # mv mroot2 mroot # mv mroot.20060601/usr/ports mroot/usr
Most már készen áll az új írásvédett sablon, így már csak az állományrendszerek újracsatlakoztatása és a jailek újraindítása maradt:
# mount -a # /etc/rc.d/jail start
A jls(8) használatával ellenőrizzük, hogy a jailek rendesen elindultak. Ne felejtsük el jailenként lefuttatni a mergemastert sem. A konfigurációs állományokat és az rc.d szkripteket is frissítenünk kell majd.
A FreeBSD 5.X változata új biztonsági bővítéseket vett át a TrustedBSD projektből a POSIX.1e nyomán. A két legjelentősebb új biztonsági mechanizmus az állományrendszerekben megtalálható hozzáférés-vezérlési listák (Access Control List, ACL) és a kötelező hozzáférés-vezérlés (Mandatory Access Control, MAC). A kötelező hozzáférés-vezérlés segítségével olyan új hozzáférés-vezérlési modulok tölthetőek be, amelyek új biztonsági házirendeket implementálnak. Némelyek közülük védelmet nyújtanak a rendszer egy szűk részének, amivel így egy adott szolgáltatást bástyáznak alá. Mások minden részletre kiterjedő címkézett biztonságot szolgáltatnak alanyokon és objektumokon keresztül. A meghatározás “kötelező” része onnan fakad, hogy a szabályok betartatását a rendszergazdák és a rendszer végzik, és nem bízzák a felhasználókra, ahogy azt a System V típusú rendszerekben a szabványos állományokra és IPC-re érvényes engedélyeken keresztül a tetszés szerinti hozzáférés-vezérlés (Discretionary Access Control, DAC) teszi.
Ebben a fejezetben a kötelező hozzáférés-vezérlést övező keretrendszerre (MAC Framework) és a különböző biztonsági házirendeket megvalósító, beilleszthető modulokra fogunk összpontosítani.
A fejezet elolvasása során megismerjük:
hogy a FreeBSD jelen pillanatban milyen modulokat tartalmaz a MAC rendszeren belül és milyen mechanizmusok tartoznak hozzájuk;
hogy a MAC biztonsági házirendjeit képező modulok miket valósítanak meg, valamint mi a különbség a címkézett és címkézetlen házirendek között;
hogyan kell hatékonyan beállítani és használni rendszerünkben a MAC rendszert;
hogyan állítsuk be a MAC rendszerben található különféle biztonsági házirendeket képező modulokat;
hogyan hozzunk létre a MAC rendszer segítségével egy biztonságosabb környezetet, amire példákat is mutatunk;
hogyan teszteljük le a MAC rendszer beállításait és bizonyosodjunk meg működésének helyességéről.
A fejezet elolvasásához ajánlott:
a UNIX és a FreeBSD alapjainak ismerete (3 fejezet)
a rendszermag beállításának és lefordításának ismerete (8 fejezet)
tisztában lenni az alapvető biztonsági kérdésekkel és azok hatásával a FreeBSD-n belül (14 fejezet)
Figyelem: Az itt ismertetésre kerülő információk helytelen alkalmazása a rendszer hozzáférhetőségének teljes elvesztését, a felhasználók bosszantását vagy az X11 által felkínált lehetőségek kirekesztését eredményezheti. Ami viszont ennél is fontosabb, hogy a MAC rendszerre nem úgy kell tekinteni, mint amitől a rendszerünk tökéletesen biztonságossá válik. A MAC segítségével csupán a meglevő biztonsági házirendeket gyarapítjuk. A szilárd biztonsági rutin és a rendszeres ellenőrzések elvégzése nélkül a rendszerünk valójában sosem lesz teljesen biztonságos.
Hozzá kell tennünk, hogy a fejezetben bemutatott példák tényleg csak példák. Senkinek sem tanácsoljuk, hogy az itt említett beállításokat egy éles rendszerre is kiterjessze. A különböző biztonsági modulok felépítése rengeteg gondolkodást és próbálgatást igényel. Aki nem érti meg az egész működését, könnyen azon kaphatja magát, hogy újra végig kell mennie a rendszeren és egyenként be kell állítania minden könyvtárat és állományt.
Ebben a fejezetben a MAC rendszerrel kapcsolatban rengeteg biztonsági kérdéssel foglalkozni fogunk. Az új MAC biztonsági modulok kifejlesztését azonban már nem érintjük. Számos olyan biztonsági modul található a MAC rendszerben, amelyek rendelkeznek az új modulok kialakításához és teszteléséhez szükséges jellemzőkkel. Ilyenek többek közt a mac_test(4), mac_stub(4) és a mac_none(4). Ezekről a biztonsági modulokról és az általuk szolgáltatott mechnanizmusokról a man oldalaik tudnak bővebb tájékoztatást adni.
A fejezet tartalmának kifejtéséhez szükségünk lesz néhány fontosabb alapfogalom tisztázására. Segítségükkel vélhetően sikerül eloszlatni a téma feldolgozása során felmerülő félreértéseket, illetve elkerülni az új fogalmak és információk váratlan felbukkanását.
alany: Alanynak tekintünk a rendszerben minden olyan aktív egyedet, amely információt áramoltat az objektumok, tehát a felhasználók, a processzorok, a rendszerben futó programok stb. között. A FreeBSD-ben majdnem minden esetben a felhasználók egy szálon keresztül vezérlik a futó programokat.
címke: A címke egy olyan biztonsági tulajdonság, ami vonatkozhat állományokra, könyvtárakra vagy a rendszer más elemeire. Egy címke tekinthető a bizalmasságot jelző pecsétnek is: ha egy állományra címkét teszünk, akkor benne megadjuk a rá vonatkozó biztonsági jellemzőket, és csak a hozzá hasonló biztonsági beállításokkal rendelkező állományok, felhasználók, erőforrások stb. érhetik el. A címkék jelentését és értelmezését a házirendek beállítása határozza meg: míg egyes házirendek a címkéket egy objektum sértetlenségének vagy titkosságának tekintik, addig mások a hozzáféréssel kapcsolatos szabályokat rögzítik bennük.
egycímkés:
Egycímkés esetről akkor
beszélünk, amikor az adat
áramlásának
szabályozására az egész
állományrendszer egyetlen címkét
alkalmaz. Ha ezt beállítjuk egy
állományrendszernél, de nem adjuk meg
vele együtt a multilabel
opciót,
akkor az összes állományra ugyanaz a
címke érvényes.
erős vízjel: Az erős vízjel házirendje szerint a biztonsági szint akkor növelhető, ha magasabb szintű információkhoz akarunk hozzájutni. A legtöbb esetben a folyamatok befejeződése után visszaállítódik az eredeti szint. A FreeBSD MAC rendszere pillanatnyilag ehhez nem tartalmaz házirendet, de a teljesség kedvéért megadtuk ennek a definícióját is.
gyenge vízjel: A gyenge vízjel házirendje szerint a biztonsági szint csökkenthető az alacsonyabb szintű információk elérése érdekében. A legtöbb esetben a folyamatok befejeződése után visszaállítódik az eredeti szint. A FreeBSD-ben ezt a házirendet egyedül a mac_lomac(4) alkalmazza.
házirend: Szabályok olyan gyűjteménye, amely megadja, hogy miként kell a célokat teljesíteni. Egy házirend általában az egyes elemek kezelését rögzíti. Ebben a fejezetben a házirend kifejezés alatt a biztonsági házirendet értjük, tehát olyan szabályok gyűjteményét, amelyek az adatok és az információ áramlását határozzák meg, továbbá megadják, hogy közülük ki mihez férhet hozzá.
kényesség: Általában az MLS tárgyalásakor kerül elő. Az kényesség szintjével az adatok fontosságát vagy titkosságát szokták jelölni. A kényességi szint növekedésével növekszik az adat titkosságának vagy bizalmasságának szintje.
objektum: Objektum vagy rendszerobjektum minden olyan egyed, amelyen információ folyik keresztül az alanyok irányításával. Ezek lehetnek többek közt könyvtárak, állományok, mezők, képernyők, billentyűzetek, a memória, mágneses tárolóeszközök, nyomtatók vagy bármilyen más adattároló/hordozó eszköz. Az objektumok alapvetően adattárolók vagy a rendszer erőforrásai. Egy objektum elérésén gyakorlatilag az adatok elérését értjük.
rekesz: Egy rekeszbe soroljuk az elrekeszteni vagy elkülöníteni kívánt programok és adatok összeségét, ahol a felhasználók explicit módon képesek hozzáférni a rendszer bizonyos komponenseihez. Emellett a rekesz utalhat egy tetszőleges csoportosításra is, például munkacsoportra, osztályra, projektre vagy témára. A rekeszek használata elengedhetetlen a biztonsági házirendek kialakításához.
sértetlenség: A sértetlenség, mint kulcsfogalom, az adatok megbízhatóságának szintje. Minél sértetlenebb az adat, annál inkább tekinthetjük megbízhatónak.
szint: Egy biztonsági tulajdonság megnövelt vagy lecsökkentett beállítása. A szint növekedésével együtt a biztonság mértéke is növekszik.
többcímkés: A
multilabel
vagyis
többcímkés jellemző az
állományrendszerek esetén fordulhat
elő, és a tunefs(8) segédprogrammal
állítható be
egyfelhasználós módban vagy a rendszer
indítása során az fstab(5)
állományon keresztül, esetleg egy új
állományrendszer létrehozásakor.
Ezzel a beállítással a rendszergazda
különféle MAC
címkéket rendelhet különböző
objektumokhoz. Ez a beállítás
természetesen csak olyan biztonsági modulok
esetén él, amelyek tudnak
címkézni.
Az imént definiált új fogalmak tükrében most nézzük meg, hogy a MAC rendszer alkalmazásával miként javíthatunk rendszerünk biztonságán. A MAC rendszerhez készített különböző biztonsági modulok alkalmasak a hálózat és az állományrendszerek védelmére, valamint segítségükkel megakadályozhatjuk, hogy a felhasználók elérhessenek bizonyos portokat és socketeket stb. A házirendeket formázó modulokat talán együttesen tudjuk a leghatékonyabban alkalmazni, és ha egyszerre több modul betöltésével egy többrétegű védelmi rendszert alakítunk ki. Ez nem ugyanaz, mint a rendszer megerősítése, ahol a rendszer összetevőit jellemző módon csak bizonyos célok tekintetében edzzük meg. A módszer egyedüli hátulütői a többszörös állományrendszeri címkékkel, a felhasználónként beállítandó hálózati eléréssel stb. járó adminisztrációs költségek.
Ezek a hátrányok azonban eltörpülnek a létrehozott rendszer tartósságával szemben. Például, ha képesek vagyunk megmondani, hogy az adott konfigurációban milyen házirendek alkalmazására van szükség, akkor ezzel az adminisztrációs költségek visszaszoríthatóak. A szükségtelen házirendek eltávolításával még növelhetjük is a rendszer összteljesítményét, valamint az így felkínált rugalmasságot. Egy jó kialakításban figyelembe kell venni az összes biztonsági előírást, és hatékonyan megvalósítani ezeket a rendszer által felajánlott különféle biztonsági modulokkal.
Ezért tehát a MAC lehetőségeit kihasználó rendszerekben legalább annyit meg kell tudni oldani, hogy a felhasználók ne változtathassák kedvükre a biztonsági tulajdonságokat. Az összes felhasználói segédprogramnak, programnak és szkriptnek a kiválasztott biztonsági modulokban szereplő hozzáférési szabályokkal kifeszített kereten belül kell mozognia. A MAC totális irányítása pedig a rendszergazda kezében van.
A rendszergazda így egyedül csak a megfelelő biztonsági modulok gondos összeválogatásáért felelős. Bizonyos környezetekben szükséges lehet a hálózaton keresztüli hozzáférések korlátozása is. Ilyen esetekben a mac_portacl(4), mac_ifoff(4) vagy a mac_biba(4) moduloktól érdemes elindulnunk. Más esetekben az állományrendszerek objektumainak bizalmasságát kell csupán megőriznünk. Erre a célra a mac_bsdextended(4) és mac_mls(4) modulok a legalkalmasabbak.
A házirendekhez kapcsolódó döntések a hálózati beállítások alapján is meghozhatóak. Elképzelhető, hogy csak bizonyos felhasználók férhetnek hozzá az ssh(1) szolgáltatásain keresztül a hálózathoz vagy az internethez. A mac_portacl(4) pontosan ilyen helyzetekben tud a segítségünkre sietni. Mit tegyünk viszont az állományrendszerek esetén? Vágjunk el adott felhasználókat vagy csoportokat bizonyos könyvtáraktól? Vagy korlátozzuk a felhasználók vagy segédprogramok hozzáférését adott állományokhoz bizonyos objektumok bizalmassá tételével?
Az állományrendszerek esetében az objektumokat néhány felhasználó elérheti, mások pedig nem. Például egy nagyobb fejlesztőcsapat kisebb csoportokra bontható. Az A projektben résztvevő fejlesztők nem férhetnek hozzá a B projektben dolgozó fejlesztők munkájához. Ellenben szükségük lehet a C projekten munkálkodó fejlesztők által létrehozott objektumokra. Ez egy igen érdekes helyzet. A MAC rendszer által felkínált különböző biztonsági modulokra építkezve azonban könnyedén csoportokba tudjuk szervezni a felhasználókat, és a megfelelő területekhez az információ kiszivárgása nélkül hozzá tudjuk őket engedni.
Ennek következtében minden egyes biztonsági modul a maga módján gondoskodik az egész rendszer biztonságáról. A céljainknak megfelelő modulokat egy jól átgondolt biztonsági házirend alapján válasszuk ki. Sok esetben az egész házirendet át kell tekinteni és újra kell alkalmazni a rendszerben. A MAC által felajánlott különböző biztonsági modulok megértése segít a rendszergazdáknak megválasztani az adott helyzetben legjobban alkalmazható házirendeket.
A FreeBSD rendszermagja alapból nem tartalmazza a MAC rendszert. Ezért a fejezetben szereplő példák vagy az itt leírtak kipróbálásához az alábbi beállítást kell hozzátennünk a rendszermag beállításait tartalmazó állományhoz:
options MAC
Majd fordítsuk és telepítsük újra a rendszermagot.
Figyelem: Miközben a MAC rendszerhez készült különböző modulok a saját man oldalaik szerint igénylik a beépítésüket, vigyázzunk velük, mert ezzel a rendszerüket pillanatok alatt ki tudjuk zárni a hálózatból és így tovább. A MAC alapú védelem felépítése leginkább egy tűzfal összeállításához hasonlítható, ahol ugyanígy számolni kell azzal, hogy egy óvatlan paranccsal kizárhatjuk magunkat a rendszerből. Valamilyen módon mindig próbáljunk gondoskodni a rendszer előző állapotának visszaállíthatóságáról, és a MAC távoli adminisztrációját mindig nagyfokú körültekintéssel végezzük.
A MAC-címke egy olyan biztonsági tulajdonság, amelyet a rendszerben található alanyokhoz és objektumokhoz rendelhetünk.
Egy címke beállításához a felhasználónak pontosan ismernie kell, hogy ilyenkor mi történik. Az objektumokhoz tartozó tulajdonságok a betöltött moduloktól függenek, és az egyes modulok eltérő módon értelmezik ezeket a tulajdonságokat. Ha a precíz megértésük hiányában helytelenül állítjuk be ezeket, vagy nem vagyunk képesek tisztázni a velük járó következményeket, akkor az a rendszerünk kiszámíthatatlan és valószínűleg kedvezőtlen viselkedését eredményezi.
A házirendek az objektumhoz rendelt biztonsági címkéket a hozzáféréssel kapcsolatos döntések meghozásában használják fel. Bizonyos házirendek esetében már maga a címke elegendő információt tartalmaz a döntés megformálásához. Máshol viszont a címkék egy nagyobb szabályrendszer részeként dolgozódnak fel stb.
Például, ha egy állományra beállítjuk a biba/low címkét, akkor az arra fog utalni, hogy a címkét a Biba nevű biztonsági modul kezeli és értéke “low”.
Az a néhány modul, amely a FreeBSD-ben támogatja a címkézés lehetőségét, három speciális címkét definiál előre. Ezek rendre a “low” (alacsony), “high” (magas) és “equal” (egyező) címkék. Habár az egyes modulok esetén eltérő módon képesek vezérelni a hozzáférést, azt mindig biztosra vehetjük, hogy a “low” a legalacsonyabb érték, az “equal” címke hatására az adott alanyt vagy objektumot érintetlenül hagyják, és a “high” értékű címke a Biba és MLS modulok esetében a legmagasabb beállítást jelenti.
Az egycímkés állományrendszerek
használata során az egyes objektumonkhoz csak
egyetlen címkét rendelhetünk hozzá.
Ezzel az egész rendszerben csak egyfajta engedélyt
alkalmazunk, ami sok esetben pontosan elegendő.
Létezik néhány különleges eset,
amikor az állományrendszerben levő alanyokhoz
vagy objektumokhoz egyszerre több címkét is
hozzá kell rendelnünk. Ilyenkor a
multilabel
opciót kell átadnunk a
tunefs(8) segédprogramnak.
A Biba és az MLS esetében előfordulhat, hogy egy numerikus címkével fogjuk jelölni a hierarchikus irányítás pontos szintjét. A numerikus szintek használatával tudjuk az információt különböző csoportokba szétosztani vagy elrendezni, például úgy, hogy csak az adott szintű vagy a felette álló csoportok számára engedélyezzük a hozzáférést.
Az esetek többségében a rendszergazdának csak egyetlen címkét kell beállítania az egész állományrendszerre.
Hé, álljunk csak meg! Akkor ez viszont pont olyan, mint a DAC! Én azt hittem, hogy a MAC szigorúan a rendszergazda kezébe adja az irányítást. Ez az állítás továbbra is fennáll, mivel bizonyos értelemben a root lesz az, aki beállítja a házirendeket, tehát ő mondja meg, hogy a felhasználók milyen kategóriákba vagy hozzáférési szintekbe sorolódnak. Sajnos, sok biztonsági modul még magát a root felhasználót is korlátozza. Az objektumok feletti irányítás ilyenkor a csoportra száll, de a root bármikor visszavonhatja vagy módosíthatja a beállításokat. Ezzel a hierarchikus/engedély alapú modellel a Biba és az MLS nevű házirendek foglalkoznak.
A címkézéshez kapcsolódó összes beállítást gyakorlatilag az alapvető rendszerprogramokkal végezhetjük el. Ezek a parancsok az objektumok és az alanyok szabályozásához, valamint a konfiguráció módosításához és ellenőrzéséhez adnak egy egyszerű kezelőfelületet.
Az összes konfigurációs beállítást a setfmac(8) és setpmac(8) segédprogramokkal végezhetjük el. A setfmac segítségével a rendszerszintű objektumokhoz tudunk hozzárendelni a MAC-címkéket, míg a setpmac paranccsal a rendszerben levő alanyokhoz tudunk címkéket rendelni. Vegyük például ezt:
# setfmac biba/high próba
Amennyiben az iménti parancs hibátlanul lefutott, visszakapjuk a paranccsort. Ezek a parancsok csak olyankor maradnak nyugodtan, amikor semmilyen hiba nem történt. Működésük hasonló a chmod(1) és chown(8) parancsokéhoz. Bizonyos esetekben “Permission denied” (“A hozzáférés nem engedélyezett”) hibát kapunk, ami általában akkor bukkan fel, ha egy korlátozott objektummal kapcsolatban próbálunk meg címkét beállítani vagy módosítani [9]. A rendszergazda a következő paranccsal tudja feloldani az ilyen helyzeteket:
# setfmac biba/high próba “Permission denied” # setpmac biba/low setfmac biba/high próba # getfmac próba próba: biba/high
Ahogy az itt tetten is érhető, a
setpmac használható a modul
beállításainak
felülbírálására úgy,
hogy a meghívott programban egy másik
címkét állít be. A
getpmac segédprogram
általában a sendmailhez
hasonló háttérben futó programok
esetében alkalmazható: ilyenkor a konkrét
parancs helyett a futó program
azonosítóját kell megadnunk, de
működése ugyanaz. Ha a
felhasználók a hatókörükön
túl levő állományokat
próbálnak meg módosítani, akkor a
betöltött modulok szabályainak megfelelően
a mac_set_link
függvény
“Operation not permitted” (“A
művelet nem engedélyezett”) hibát
fog adni.
A mac_biba(4), mac_mls(4) és mac_lomac(4) moduloknál használhatunk címkéket. Értékük lehet “high”, “equal” vagy “low”, melyek rövid magyarázata a következő:
A low címke az objektumra vagy alanyra érvényes leggyengébb beállítást jelenti. Az ilyen címkéjű objektumok vagy alanyok nem érhetik el a “high” címkéjűeket.
Az equal címke használható minden olyan objektum vagy alany esetében, amelyeket ki akarunk vonni az adott házirend hatálya alól.
A high címke adja az objektumhoz vagy alanyhoz tartozó legerősebb beállítást.
Az egyes moduloktól függően ezek az értékek az információ áramoltatásának különböző irányait írhatják le. A megfelelő man oldalak elolvasásával még jobban megismerhetjük az egyes címketípusok beállításának jellegzetességeit.
A numerikus osztályozó címkék összehasonlítás:rekesz+rekesz alakban használatosak, tehát a
biba/10:2+3+6(5:2+3-20:2+3+4+5+6)
kifejezés így értelmezhető:
“A Biba házirend címkéje”/“10 osztály” :“2, 3 és 6 rekeszek”: (“5 osztály...”)
Ebben a példában az első osztály tekinthető “valódi osztálynak”, amely a “valódi rekeszeket” jelenti, a második osztály egy alacsonyabb besorolás, míg az utolsó egy magasabb szintű. A legtöbb konfigurációban nem lesz szükségünk ennyire összetett beállításokra, noha képesek vagyunk felírni ezeket.
Ha ezt kivetítjük a rendszer objektumaira, akkor a rendszerben levő alanyokat illetően csupán az aktuális osztály/rekeszek számítanak, mivel a rendszerben és hálózati csatolófelületeken elérhető hozzáférés-vezérlési jogokat tükrözi.
Az alany-objektum párokban megadott osztályzatok és rekeszek használhatóak fel egy olyan kapcsolat kiépítésére, amit “dominanciának” nevezünk. Ilyenkor egy alany ural egy objektumot, vagy egy objektum ural egy alanyt, vagy egyikük sem uralja a másikat, esetleg mind a kettő uralja egymást. A “kettős dominancia” esete akkor forog fenn, amikor a két címke megegyezik. A Biba információáramoltatási sajátosságaiból adódóan jogunk van rekeszeket létrehozni, “tudunk kell”, hogy ezek projekteknek feleltethetőek meg, de az objektumok is rendelkezhetnek rekeszekkel. A felhasználók ilyenkor csak úgy tudnak elérni egyes objektumokat, ha az su vagy a setpmac használatával leszűkítik a jogaikat egy olyan rekeszre, ahol már nem érvényesülnek rájuk korlátozások.
Maguknak a felhasználóknak is szükségük van címkékre, mivel csak ezek segítségével tudnak az állományaik és programjaik megfelelő módon együttműködni a rendszerben érvényes biztonsági házirenddel. Ezt a login.conf állományban megadható bejelentkezési osztályokkal állíthatjuk be. Minden címkéket használó modulban a felhasználóknak is van címkéjük.
Lentebb látható egy ilyen minta bejegyzés, amely minden modulhoz tartalmaz beállítást:
default:\ :copyright=/etc/COPYRIGHT:\ :welcome=/etc/motd:\ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\ :path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:\ :manpath=/usr/share/man /usr/local/man:\ :nologin=/usr/sbin/nologin:\ :cputime=1h30m:\ :datasize=8M:\ :vmemoryuse=100M:\ :stacksize=2M:\ :memorylocked=4M:\ :memoryuse=8M:\ :filesize=8M:\ :coredumpsize=8M:\ :openfiles=24:\ :maxproc=32:\ :priority=0:\ :requirehome:\ :passwordtime=91d:\ :umask=022:\ :ignoretime@:\ :label=partition/13,mls/5,biba/10(5-15),lomac/10[2]:
Itt a label opciót használtuk a felhasználói osztályhoz tartozó alapértelmezett címkék beállításához, amit majd a MAC betartat. A felhasználók nem módosíthatják ezt az értéket, ezért ez a felhasználók számára nem tekinthető tetszőlegesen elhagyható beállításnak. Egy valós konfigurációban azonban a rendszergazda valószínűleg nem akarja majd egyszerre az összes modult használni. Javasoljuk, hogy mielőtt egy ilyen jellegű konfigurációt adnánk meg, olvassuk el az egész fejezetet.
Megjegyzés: A felhasználók ezt a címkét meg tudják változtatni az első bejelentkezés után, de csak a házirend keretein belül. A fenti példában úgy állítjuk be a Biba házirendet, hogy a futó programok sértetlenségi foka legalább 5, legfeljebb 15 lehet, de az alapértéke 10. Tehát a programok egészen addig 10-es szinten futnak, amíg a programok a Biba bejelentkezéskor megadott tartományában meg nem változtatják ezt a címkét, feltehetően a setpmac parancs hatására.
Mindig, amikor megváltozatjuk a login.conf beállításait, a cap_mkdb paranccsal újra kell generálni a bejelentkezési osztályokhoz tartozó adatbázist, amire a későbbi példákban vagy részekben igyekszünk is mindig felhívni a figyelmet.
Nem árt hozzátennünk, hogy sok rendszerben kifejezetten sok felhasználót kell kezelnünk, amihez több különböző bejelentkezési osztályra is szükségünk lehet. Mivel később már csak egyre jobban bonyolódni fog a felhasználók kezelése, ezért soha ne felejtsünk el komolyan előre tervezni.
A FreeBSD következő változataiban meg fognak jelenni más módszerek is a felhasználók és címkék közti kapcsolatok kezelésére. A FreeBSD 5.3 előtt azonban ez még semmiképpen sem várható.
A hálózati csatlakozások esetében is állíthatunk be címkéket, melyek a hálózaton keresztül folyó adatok áramlását határozzák meg. Minden esetben ugyanúgy működnek, mint ahogy a házirendek az objektumokra. Például a biba esetében a magas beállításokkal rendelkező felhasználók nem férhetnek hozzá az alacsonyabb címkéjű hálózati csatolófelületekhez.
Ha MAC-címkéket akarunk
rendelni egy hálózati felülethez, akkor az
ifconfig parancsnak adjuk meg a
maclabel
paramétert.
Például a
# ifconfig bge0 maclabel biba/equal
parancs beállítja a biba/equal MAC-címkét a bge(4) felületre. A biba/high(low-high) alakú címkéket átadásukhoz idézőjelek közé kell tenni, különben hibát kapunk.
Minden címkézést
támogató modulhoz tartoznak futási
időben állítható paraméterek,
amelyekkel akár le is tudjuk tiltani a
MAC-címkéket a
hálózati csatolófelületeken.
Ugyanezt jelenti egyébként, ha
equal
értéket adunk meg a
címkének. Ezt behatóbban úgy
ismerhetjük meg, ha kielemezzük a
sysctl parancs kimenetét, a
megfelelő modul man oldalát vagy a fejezetben
további részében található,
erre vonatkozó információkat.
Alapértelmezés szerint a rendszer a
singlelabel
beállítást
használja. Ez vajon mit tartogat a rendszergazda
számára? Számos olyan
eltérést, aminek megvannak a saját
előnyei és hátrányai a rendszer
védelmi modelljének rugalmassága
szempontjából.
A singlelabel
beállítás minden alany vagy objektum
esetében csupán egyetlen címke,
például a biba/high
használatát engedi. Kevesebb
adminisztrációs költséggel jár,
azonban csökkenteni a címkézést
támogató modulok
testreszabhatóságát. Ezért sok
rendszergazda inkább a multilabel
beállítást választja a
biztonsági házirend kialakítása
során.
A multilabel
beállítás
lehetővé teszi, hogy mindegyik alanyhoz és
objektumhoz a szabványos singlelabel
beállítás lehetőségeivel
szemben egymástól függetlenül
külön-külön rendelhessünk
címkéket a partíciókon. Az egy-
és többcímkés opciónak csak
olyan modulok esetében van értelme, amelyek
támogatják a címkézést, mint
például a Biba, Lomac, MLS
és a SEBSD házirendek.
Sokszor egyáltalán nincs is
szükségünk a multilabel
használatára. Tekintsük
például a következő helyzetet és
biztonsági modellt:
Adott egy FreeBSD webszerver, ahol a MAC rendszert több biztonsági házirenddel alkalmazzuk.
A gépen egyedül csak a
biba/high címkére van
szükségünk mindenhez a rendszerben. Itt
egyszerűen csak nem adjuk meg az
állományrendszernek a
multilabel
beállítást,
mivel az egycímkés rendszer mindig
rendelkezésünkre áll.
Mivel azonban erre a gépre telepíteni akarunk egy webszervert is, ilyenkor a biba/low címke használatával igyekszünk korlátozni a szerver feldolgozási képességeit. A Biba házirendről és annak működéséről csak a későbbiekben fogunk írni, ezért ha az előbbi megjegyzést még nem teljesen értjük, akkor egyszerűen csak olvassunk tovább és térjünk vissza ide. A szerver futása alatt, vagy legalább is idejének nagy részében egy külön partíciót használhatna, amire a biba/low címkét állítanánk be. Természetesen ez a példa korántsem teljes, hiszen hiányoznak belőle az adatokra érvényes korlátozások, a konfigurációs és felhasználói beállítások. Ez csupán az iménti gondolatmenet gyors illusztrációja.
Amennyiben címkézést nem
támogató modulokat alkalmazunk, a
multilabel
beállításra
szinte sosem lesz szükségünk. Ilyenek
például a seeotheruids,
portacl és
partition házirendek.
A multilabel
opció használata
és így speciális,
többcímkés védelmi modell
létrehozása képes elbonyolítani a
rendszer karbantartását, mert ilyenkor az
állományrendszerben mindennek lennie kell
címkéjének: könyvtáraknak,
állományok és még az
eszközleíróknak is.
A most következő paranccsal
beállítjuk az állományrendszerre a
multilabel
opciót. Ez csak
egyfelhasználós módban tehető
meg:
# tunefs -l enable /
A lapozópartíció esetében erre nincs szükség.
Megjegyzés: Előfordulhat, hogy néhány felhasználónak nem sikerül a
multilabel
opciót beállítania a rendszerindító partícióra. Ha ez történne, akkor olvassuk el a fejezet 16.17 Szakaszát.
Mindig hasznos időt szánni a tervezésre, amikor nekilátunk egy új technológia alkalmazásához. A tervezés közben a rendszergazdának “egyben kell látnia a képet”, lehetőleg az alábbiak figyelembevételével:
Elvárások a modell felé
A modell célkitűzései
Továbbá a MAC használata esetén:
Miként osztályozzuk a célrendszeren rendelkezésre álló információt és erőforrásokat
Milyen információt vagy erőforrást kell korlátoznunk és milyen típusú korlátozást alkalmazzunk rájuk
A MAC melyik moduljain keresztül tudjuk elérni céljainkat
Habár mindig módunkban áll megváltoztatni és újra konfigurálni a rendszerben található erőforrásokat és biztonsági beállításokat, sokszor azért igen kényelmetlen utánanézni a rendszerben és állítgatni az állományok, illetve felhasználói hozzáférések paramétereit. A beállításainkat valamint azok konfigurációját először külön próbáljuk ki, mielőtt a MAC alapú megvalósításunkat egy éles rendszeren kezdjük el használni. Ennek elhagyása szinte biztosan kudarcra ítél minket.
A különböző környezetek igényei és elvárásai eltérnek. Egy alaposan és minden részletében átgondolt védelmi profil megalapozása csökkenti a rendszer üzembehelyezése után elvégzendő módosítások számát. Mint olyanokra, a következő szakaszokban kitérünk a rendszergazdák számára elérhető modulokra, bemutatjuk a használatukat és beállításukat és egyes esetekben betekintést is adunk olyan helyzetekbe, ahol a legjobban kiaknázhatóak a képességeik. Például egy webszerver esetén hasznos lehet a mac_biba(4) és mac_bsdextended(4) házirendek alkalmazása. Más esetekben, például egy kevés felhasználóval működő számítógépen, a mac_partition(4) modul lehet jó választás.
A MAC rendszerben megtalálható összes modul a korábban leírtak szerint beépíthető a rendszermagba vagy menet közben is betölthető modulként. A használni kívánt modulokat a /boot/loader.conf állományba javasolt felvenni, így azok be tudnak töltődni a rendszer indítása folyamán.
A soron következő szakaszokban a
különböző MAC-modulokat
dolgozzuk fel és foglaljuk össze a
lehetőségeiket. Továbbá a fejezet
szeretne szólni ezek alkalmazásáról
speciális helyzetekben is. Egyes modulokkal
címkézni is tudunk, aminek révén a
hozzáféréseket címkékkel
szabályozzuk, például úgy, hogy
megmondjuk “mit szabad és mit nem”. A
címkék beállításait
tartalmazó állomány vezérli az
állományok elérését, a
hálózati kommunikációt és
még sok minden mást. Az előző szakaszban
már megismerhettük, hogy a multilabel
opció segítségével hogyan
állíthatjuk be az
állományonkénti vagy
partíciónkénti
hozzáférés-vezérlést.
Az egycímkés konfigurációban az
egész rendszerben csupán egyetlen címke
használatára nyílik mód, ezért
is hívják a tunefs
beállítását
multilabel
nek.
A modul neve: mac_seeotheruids.ko
A rendszermag konfigurációs beállítása: options MAC_SEEOTHERUIDS
Rendszerindítási beállítás: mac_seeotheruids_load="YES"
A mac_seeotheruids(4) modul a security.bsd.see_other_uids és security.bsd.see_other_gids sysctl-változókat utánozza és terjeszti ki. A használatához semmilyen címkét nem kell beállítani és transzparens módon képes együttműködni a többi modullal.
A modult betöltése után az alábbi sysctl-változókkal tudjuk vezérelni:
A security.mac.seeotheruids.enabled engedélyezi a modult és az alapértelmezett beállításokat használja. Alapértelmezés szerint egyik felhasználó sem láthatja a többiek futó programjait és csatlakozásait.
A security.mac.seeotheruids.specificgid_enabled egy adott csoportot mentesít a házirend szabályozásai alól. Tehát ki akarunk vonni egy csoportot a házirend alkalmazásából, akkor állítsuk be a security.mac.seeotheruids.specificgid=XXX sysctl-változót, ahol az XXX a mentesíteni kívánt csoport numerikus azonosítója.
A security.mac.seeotheruids.primarygroup_enabled segítségével adott elsődleges csoportokat vonhatunk ki a házirend hatálya alól. Ezt a változót nem használhatjuk a security.mac.seeotheruids.specificgid_enabled változóval együtt.
A modul neve: mac_bsdextended.ko
A rendszermag konfigurációs beállítása: options MAC_BSDEXTENDED
Rendszerindítási beállítás: mac_bsdextended_load="YES"
A mac_bsdextended(4) modul segítségével egy állományrendszer szintjén működő tűzfalat tudunk kialakítani. Ez a modul a szabványos állományrendszeri engedély alapú modelljét bővíti ki, lehetővé téve, hogy a rendszergazda tűzfalszerű szabályokkal nyújtson védelmet a könyvtárszerkezetben található állományoknak, segédprogramoknak és könyvtáraknak. Amikor egy állományrendszerbeli objektumhoz próbálunk meg hozzáférni, a modul illeszti ezt egy szabályrendszerre, amiben vagy talál egy hozzá tartozó szabályt vagy kifut belőle. Ez a viselkedés a security.mac.bsdextended.firstmatch_enabled sysctl(8) paraméter segítségével változtatható meg. Hasonlóan a FreeBSD-ben található többi tűzfalmodulhoz, az állományok elérését definiáló szabályok a rendszerindítás során egy rc.conf(5) változóból olvasódnak be.
A szabályokat a ugidfw(8) segédprogrammal adhatjuk meg, amelynek a formai szabályai hasonlóak az ipfw(8) programéhoz. A libugidfw(3) függvénykönyvtár felhasználásával azonban további segédprogramok is írhatóak hozzá.
A modul használata során igyekezzünk minél jobban odafigyelni, mert helytelen alkalmazásával el tudjuk vágni magunkat az állományrendszer bizonyos részeitől.
Miután sikerült betölteni a mac_bsdextended(4) modult, a következő paranccsal tudjuk lekérdezni a jelenleg érvényes szabályokat:
# ugidfw list 0 slots, 0 rules
Ahogy az várható is volt, pillanatnyilag még egyetlen szabályt sem adtunk meg. Ennek értelmében tehát mindent el tudunk érni. A következő paranccsal tudunk olyan szabályt létrehozni, ahol a root kivételével elutasítjuk az összes felhasználó hozzáférését:
# ugidfw add subject not uid root new object not uid root mode n
Ez egyébként egy nagyon buta ötlet, mivel így a felhasználók még a legegyszerűbb parancsokat, mint például az ls-t, sem tudják rájuk kiadni. Ennél sokkal humánusabb lesz, ha:
# ugidfw set 2 subject uid felhasználó1 object uid felhasználó2 mode n # ugidfw set 3 subject uid felhasználó1 object gid felhasználó2 mode n
Ilyenkor a felhasználó1 nevű felhasználótól megvonjuk a felhasználó2 felhasználói könyvtárának összes hozzáférését, beleértve a listázhatóságot is.
A felhasználó1 helyett
megadhatjuk a not uid
felhasználó2
opciót is. Ebben az esetben egy
felhasználó helyett az összes
felhasználóra ugyanaz a korlátozás
fog érvényesülni.
Megjegyzés: A root felhasználóra ezek a beállítások nem vonatkoznak.
Ezzel felvázoltuk, miként lehet a mac_bsdextended(4) modult felhasználni az állományrendszerek megerősítésére. Részletesebb információkért járuljunk a mac_bsdextended(4) és ugidfw(8) man oldalakhoz.
A modul neve: mac_ifoff.ko
A rendszermag konfigurációs beállítása: options MAC_IFOFF
Rendszerindítási beállítás: mac_ifoff_load="YES"
A mac_ifoff(4) modul kizárólag abból a célból készült, hogy segítségével menet közben le tudjuk tiltani bizonyos hálózati csatolófelületek beállítását a rendszerindítás közben. Sem címkékre, sem pedig a többi MAC-modulra nincs szükségünk a használatához.
A vezérlést nagyrészt az alábbi sysctl-változókkal tudjuk megoldani.
A security.mac.ifoff.lo_enabled engedélyezi vagy letiltja a (lo(4)) helyi loopback felületen az összes forgalmat.
A security.mac.ifoff.bpfrecv_enabled engedélyezi vagy letiltja a Berkeley csomagszűrő (BPF, Berkeley Packet Filter) felületén az összes forgalmat.
A security.mac.ifoff.other_enabled engedélyezi vagy letiltja az összes többi csatolófelületen az összes forgalmat.
A mac_ifoff(4) modult általában olyan környezetek monitorozásakor szokták használni, ahol a rendszer indítása során még nem szabad hálózati forgalomnak keletkeznie. Vagy például a security/aide porttal együtt használva automatikusan el tudjuk zárni a rendszerünket, ha a védett könyvtárakban új állományok keletkeznek vagy megváltoznak a régiek.
A modul neve: mac_portacl.ko
A rendszermag konfigurációs beállítása: MAC_PORTACL
Rendszerindítási beállítás: mac_portacl_load="YES"
A mac_portacl(4) modul a helyi TCP és UDP portok kiosztásának korlátozását teszi lehetővé különféle sysctl-változókon keresztül. A mac_portacl(4) segítségével lényegében a nem-root felhasználók is használhatnak privilegizált, tehát 1024 alatti portokat.
Miután betöltöttük, a modul az összes csatlakozásra alkalmazza a MAC-házirendet. Ezután az alábbi változókkal hangolhatjuk a viselkedését:
A security.mac.portacl.enabled totálisan engedélyezi vagy letiltja a házirend használatát.
A security.mac.portacl.port_high megadja azt a legmagasabb portot, amelyre még kiterjed a mac_portacl(4) védelme.
Ha a security.mac.portacl.suser_exempt változónak nem nulla értéket adunk meg, akkor azzal a root felhasználót kivonjuk a szabályozások alól.
A security.mac.portacl.rules az érvényes mac_portacl házirendet adja meg, lásd lentebb.
A security.mac.portacl.rules
változó által megadott aktuális
mac_portacl házirend formátuma a
következő:
szabály[,szabály,...], ahol ezen
a módon tetszőleges számú
szabályt adhatunk meg. Az egyes szabályok pedig
így írhatóak fel:
azonosítótípus:
azonosító:
protokoll:
port. Az
azonosítótípus
értéke uid vagy
gid lehet, amivel megadjuk, hogy az
azonosító
paraméter
felhasználóra vagy csoportra hivatkozik. A
protokoll
paraméter adja meg, hogy a
szabályt TCP vagy UDP
típusú kapcsolatra értjük, és
ennek megfelelően az értéke is
tcp vagy udp lehet. A sort
végül a port
paraméter
zárja, ahol annak a portnak számát adjuk meg,
amelyhez az adott felhasználót vagy csoportot
akarjuk kötni.
Megjegyzés: Mivel a szabályokat közvetlenül maga a rendszermag dolgozza fel, ezért a felhasználók illetve csoportok azonosítója, valamint a port értéke kizárólag numerikus érték lehet. Tehát a szabályokban név szerint nem hivatkozhatunk felhasználókra, csoportokra vagy szolgáltatásokra.
A UNIX-szerű rendszereken alapértelmezés szerint az 1024 alatti portokat csak privilegizált programok kaphatják meg és használhatják, tehát a root felhasználó neve alatt kell futniuk. A mac_portacl(4) azonban a nem privilegizált programok számára is lehetővé teszi, hogy elfoglalhassanak 1024 alatti portokat, amihez viszont először le kell tiltani ezt a szabvány UNIX-os korlátozást. Ezt úgy érhetjük el, ha a net.inet.ip.portrange.reservedlow és net.inet.ip.portrange.reservedhigh változókat egyaránt nullára állítjuk.
A mac_portacl(4) működésének részleteiről a példákon keresztül vagy a megfelelő man oldalakból tudhatunk meg többet.
A következő példák az iméntieket igyekeznek jobban megvilágítani:
# sysctl security.mac.portacl.port_high=1023 # sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0
Elsőként beállítjuk, hogy a mac_portacl(4) vegye át a szabványos privilegizált portok vezérlését és letiltjuk a normál UNIX-os korlátozásokat.
# sysctl security.mac.portacl.suser_exempt=1
A root felhasználót azonban nem akarjuk kitenni a házirendnek, ezért a security.mac.portacl.suser_exempt változónak egy nem nulla értéket adunk meg. A mac_portacl(4) modul most pontosan ugyanúgy működik, mint a UNIX-szerű rendszerek alapértelmezés szerint.
# sysctl security.mac.portacl.rules=uid:80:tcp:80
A 80-as azonosítóval rendelkező felhasználó (aki általában a www) számára engedélyezzük a 80-as port használatát. Így a www felhasználó anélkül képes webszervert futtatni, hogy szüksége lenne a root jogosultságaira.
# sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995
Az 1001-es azonosítóval rendelkező felhasználónak megengedjük, hogy elfoglalhassa a 110-es (“pop3”) és 995-ös (“pop3s”) portokat. Ennek köszönhetően az adott felhasználó el tud indítani egy szervert, amihez a 110-es és 995-ös portokon lehet kapcsolódni.
A modul neve: mac_partition.ko
A rendszermag konfigurációs beállítása: options MAC_PARTITION
Rendszerindítási beállítás: mac_partition_load="YES"
A mac_partition(4) házirend a futó programokat címkéjük szerint adott “partíciókra” osztja szét. Ezt leginkább egy speciális jail(8) megoldásként tudjuk elképzelni, noha teljesen felesleges összehasonlítani a kettőt.
Ez egy olyan modul, amelyet a loader.conf(5) állományba kell felvenni, hogy a rendszerindítása közben be tudjon töltődni.
Ezt a házirendet többségében a setpmac(8) segédprogrammal tudjuk állítgatni, ahogy az majd lentebb látható lesz. A következő sysctl-változó tartozik még a modulhoz:
A security.mac.partition.enabled engedélyezi a futó programok MAC rendszeren keresztüli felosztását.
A házirend engedélyezésével a felhasználók csak a saját programjaikat láthatják, illetve mindazokat, amelyek az övékével egy partícióba tartoznak, de a rajta kívül levő programokkal már nem dolgozhatnak. Például, ha egy felhasználó az insecure (“nem biztonságos”) osztály tagja, akkor ne engedjük, hogy hozzáférhessen a top vagy bármilyen más olyan parancshoz, amely további futó programokat hoz létre.
A setpmac használatával tudunk címkéket készíteni a partíciókhoz és programokat rendelni hozzájuk:
# setpmac partition/13 top
Így a top parancsot hozzáadjuk az insecure osztályban levő felhasználókhoz rendelt címkéhez. Vegyük észre, hogy az insecure osztályba tartozó felhasználók által elindított összes program a partition/13 címkét fogja használni.
A következő parancs megmutatja a partíciók címkéit és a futó programok listáját:
# ps Zax
Ezzel paranccsal pedig megnézhetjük egy másik felhasználó programjainak címkéit és a felhasználó által futtatott programokat:
# ps -ZU trhodes
Megjegyzés: A felhasználók látják a root címkéjével futó programokat is, hacsak be nem töltjük a mac_seeotheruids(4) házirendet.
Ezt a megoldást úgy tudnánk igazán ravaszul felhasználni, ha például az /etc/rc.conf állományban letiltanánk az összes szolgáltatást és egy olyan szkripttel indítanánk el ezeket, amely futtatásuk előtt beállítja hozzájuk a megfelelő címkét.
Megjegyzés: A most következő házirendek a három alapértelmezett címkeérték helyett egész számokat használnak. Ezekről, valamint a rájuk vonatkozó korlátozásokról a megfelelő modulok man oldalain ismerhetünk meg többet.
A modul neve: mac_mls.ko
A rendszermag konfigurációs beállítása: options MAC_MLS
Rendszerindítási beállítás: mac_mls_load="YES"
A mac_mls(4) (MLS, Multi-Level Security) házirend az információ szigorú áramoltatásával vezérli a rendszerben található alanyok és objektumok közti elérést.
A MLS megoldását alkalmazó környezetekben a rekeszek mellett minden alanyra és objektumra be kell még állítanunk egy adott szintű “engedélyt” is. Mivel az engedélyek avagy az érzékenység szintje akár a hatezret is meghaladhatja, egy rendszergazda számára valódi rémálommá válthat az egyes alanyok és objektumok precíz beállítása. Szerencsére a házirend erre a célra tartalmaz három előre definiált “instant” címkét.
Ezek az mls/low, mls/equal és mls/high. Mivel a man oldal elég részletesen kifejti ezeket, ezért itt csak érintőlegesen foglalkozunk velük:
Az mls/low címke egy olyan alacsony szintű beállítást képvisel, amely lehetővé teszi, hogy az összes többi objektum uralja. Tehát bárminek is adjuk az mls/low címkét, alacsony szintű engedéllyel fog rendelkezni és nem lesz képes elérni a magasabb szinten levő információt. Ráadásul a címke a magasabb szintű objektumok számára se fogja engedni, hogy információt közöljön vagy adjon át az alacsonyabb szintek felé.
Az mls/equal címke olyan objektumok esetében ajánlott, amelyeket ki akarunk hagyni a házirend szabályozásaiból.
Az mls/high címke az elérhető legmagasabb szintű engedélyt ábrázolja. Az ilyen címkével ellátott objektumok a rendszer összes többi objektuma felett uralommal rendelkeznek, habár az alacsonyabb szintű objektumok felé nem képesek információt közvetíteni.
Az MLS:
Egy hierarchikus védelmi szinteket épít fel nem hierarchikus kategóriákkal.
Szabályai rögzítettek: a felsőbb szintek olvasása és az alsóbb szintek írása egyaránt tiltott (az alanyok csak a saját vagy az alatta levő szinteken levő objektumokat képesek olvasni, de a felette állókat már nem. Ehhez hasonlóan az alanyok a velük egyező vagy a felsőbb szinteket tudják írni, de az alattuk levőket már nem).
Megőrzi a titkokat (megakadályozza az adatok alkalmatlan közzétételét).
Megadja mindazt az alapot, ami szükséges ahhoz, hogy az adatokat több kényességi szinten, párhuzamosan is kezelni tudjuk (anélkül, hogy titkos és bizalmas információkat szivárogtatnánk ki).
A speciális szolgáltatások és felületek beállításához az alábbi sysctl-változók használhatóak:
A security.mac.mls.enabled engedélyezi vagy tiltja le az MLS házirend alkalmazását.
A security.mac.mls.ptys_equal hatására látja el mls/equal címkével az összes pty(4) eszközt létrehozásuk során.
A security.mac.mls.revocation_enabled használható az alacsonyabb szintre minősített objektumok hozzáférésének megvonására.
A security.mac.mls.max_compartments segítségével adható meg az objektumok által használt rekeszek szintjének maximális száma. Lényegében a rekeszek rendszerben engedélyezett maximuma.
Az MLS címkéit a setfmac(8) paranccsal tudjuk módosítani. Egy ehhez hasonló paranccsal tudunk egy objektumhoz címkét rendelni:
# setfmac mls/5 próba
A próba állomány MLS-címkéjét az alábbi paranccsal kérhetjük le:
# getfmac próba
Ezzel össze is foglaltuk az MLS házirend lehetőségeit. Az eddigiket úgy is megoldhatjuk, hogy létrehozunk egy központi házirendet az /etc könyvtárban, amelyben megadjuk az MLS házirendhez tartozó információkat, majd átadjuk a setfmac parancsnak. Erre a módszerre majd a házirendek bemutatása után kerül sor.
A többszintű biztonsági házirend használatával a rendszergazda a kényes információk áramlásának irányát tudja befolyásolni. A megoldás “felfele nem lehet olvasni, lefele nem lehet írni” jellege folytán alapból mindent a legalacsonyabb szintre helyez. Így tehát kezdetben minden elérhető, és a rendszergazdának lassanként ebből az állapotból elindulva kell behangolnia az erre alapozó védelmi rendszert az információ bizalmasságának megfelelően.
A fentebb említett három alapvető címke mellett a rendszergazdának valószínűleg szüksége lesz a felhasználók csoportosítására és a csoportok közti információáramlás szabályozására. A információ bizalmasságának szintjeit minden bizonnyal könnyebb szavakkal beazonosítani, például Confidential (bizalmas), Secret (titkos) vagy Top Secret (szigorúan bizalmas). Bizonyos helyzetekben elég csak a futó projekteknek megfelelően kialakítani csoportokat. Az osztályozás konkrét módszerétől függetlenül azonban mindig elmondható, hogy előzetes tervezés nélkül sose állítsunk össze ilyen fajsúlyú házirendet.
Ezt a biztonsági modult például webes üzletek esetén érdemes használnunk, ahol egy állományszerver tárolja a cég fontos adatait és pénzügyi információit. Viszont egy két vagy három felhasználóval üzemelő munkaállomás esetében szinte teljesen felesleges gondolkodni rajta.
A modul neve: mac_biba.ko
A rendszermag konfigurációs beállítása: options MAC_BIBA
Rendszerindítási beállítás: mac_biba_load="YES"
A mac_biba(4) modul a MAC Biba elnevezésű házirendjét tölti be. Ez leginkább az MLS házirendhez hasonlít, azzal a kivétellel, hogy az információ áramoltatására vonatkozó szabályok némileg visszafelé működnek. Tehát míg az MLS házirend a kényes információ áramlását felfelé nem engedi, addig ez a lefelé irányuló áramlást állítja meg. Emiatt ez a szakasz tulajdonképpen mind a két házirendre érvényesül.
A Biba alkalmazása során minden alany és objektum egy “sértetlenséget” jelképező címkét visel. Ezek a címkék hierarchikus osztályokból, nem peidg hiearchikus összetevőkből származnak. Egy objektum vagy alany sértetlensége a besorolásával növekszik.
A modul a biba/low, biba/equal és biba/high címkéket ismeri, vagyis bővebben:
A biba/low címke tekinthető az alanyok és objektumok legkisebb sértetlenségének. Ha beállítjuk egy objektumra vagy alanyra, akkor ezzel megakadályozzuk, hogy nagyobb sértetlenségű objektumokat vagy alanyokat tudjanak írni. Ettől függetlenül azonban még képesek olvasni ezeket.
A biba/equal címke használata kizárólag olyan objektumok esetében javasolt, amelyeket ki akarunk vonni a házirend alól.
A biba/high címke megengedi az alacsonyabb szinteken levő objektumokat írását, de az olvasását viszont már nem. Ezt a címkét olyan objektumra érdemes ragasztani, amelyek hatással vannak az egész rendszer sértetlenségére.
A Biba:
Hierarchikus sértetlenségi szinteket épít fel nem hiearchikus sértetlenségi kategóriákkal kiegészítve.
Szabályai rögzítettek: az felsőbb szintek írása és az alsóbb szintek olvasása egyaránt tilos (pontosan az MLS ellentéte). Egy alany csak a saját vagy az alatta álló szinteken szereplő objektumokat tudja írni. Ehhez hasonló módon egy alany csak a saját vagy az afeletti szinten található objektumokat képes olvasni.
Az adatok sértetlenségét biztosítja (megakadályozza az alkalmatlan módosításukat)
Sértetlenségi szinteket határoz meg (szemben az MLS kényességi szintjeivel).
Az alábbi sysctl-változókkal vezérlhetjük a Biba házirend működését:
A security.mac.biba.enabled használható a célrendszeren a Biba házirend engedélyezére vagy letiltására.
A security.mac.biba.ptys_equal segítségével kapcsolhatjuk ki a Biba házirend alkalmazását a pty(4) eszközökön.
A security.mac.biba.revocation_enabled hatására visszavonódik az objektumok hozzáférése, ha az rájuk vonatkozó címke megváltozik.
A rendszer objektumain a Biba házirendet a setfmac és getfmac paranccsal állíthatjuk be:
# setfmac biba/low próba # getfmac próba próba: biba/low
A sértetlenség a kényességtől eltérően azt igyekszik szavatolni, hogy az információt illetéktelenek nem módosítják. Ez egyaránt vonatkozik az alanyok, objektumok és a kettő között átadott adatokra. Gondoskodik róla, hogy a felhasználók csak olyan információkat változtathathassanak meg, sőt csak olyat érhessenek el, amire ténylegesen szükségük van.
A mac_biba(4) biztonsági modul megengedi a rendszergazda számára, hogy megmondja milyen állományokat és programokat láthat vagy hívhat meg a felhasználó vagy felhasználók egy csoportja, miközben biztosítja, hogy az állományok és a programok nincsenek kitéve semmilyen fenyegetésnek, és a rendszer az adott felhasználóban vagy felhasználói csoportban megbízik.
A kezdeti tervezési fázis során a rendszergazdának fel kell készülnie arra, hogy a felhasználókat osztályokra, szintekre és területekre kell osztania. A felhasználók nem csak adatokhoz, hanem programokhoz és segédprogramokhoz sem lesznek képesek hozzáférni, mind az indításuk előtt és után. A modul aktiválás után a rendszer alapból rögtön a legmagasabb címkét kapja meg, és teljesen a rendszergazdára hárul, hogy a felhasználókhoz beállítsa a különféle osztályokat és szinteket. A fentebb leírt engedélyszintek helyett akár témák alapján is tervezhetünk. Például kizárólag csak a fejlesztők számára engedjük meg a forráskód módosítását, a forráskód lefordítását és a többi fejlesztőeszköz használatát. Eközben a többi felhasználót felosztjuk további csoportokba, például tesztelőkre és tervezőkre, vagy meghagyjuk ezeket átlagos felhasználóknak, akik csak olvasási joggal rendelkeznek.
A megvalósított biztonsági modell természetéből fakadóan egy kevésbé sértetlenebb alany nem írhatja a sokkal sértetlenebb alanyokat, a sokkal sértetlenebb alanyok pedig nem érhetik el vagy olvashatják a kevésbé sértetlen objektumokat. A lehető legkisebb osztályú címke beállításával gyakorlatilag elérhetetlenné teszük az alanyok számára. A modult valószínűleg egy korlátozott webszerver, fejlesztői- és tesztgépek vagy forráskód tárolására szánt környezetben érdemes bevetni. Annál esélytelenebb a használata viszont egy munkaállomás, útválasztó vagy hálózati tűzfal esetében.
A modul neve: mac_lomac.ko
A rendszermag konfigurációs beállítása: options MAC_LOMAC
Rendszerindítás beállítás: mac_lomac_load="YES"
Eltérően a MAC Biba házirendjétől, a mac_lomac(4) egyedül csak azután engedi elérni az kevésbé sértetlenebb objektumokat, miután csökkentjük a sértetlenség szintjét és ezzel betartjuk a sértetlenségre vonatkozó szabályokat.
A gyenge vízjeles sértetlenségi házirend MAC alapú változatát nem szabad összetéveszteni a korábbi lomac(4) implementációval, amely majdnem ugyanúgy működik, mint a Biba, azzal az a kivétellel, hogy a lebegő címkékkel támogatjuk az alanyok lefokozását egy kisegítő osztály rekeszén keresztül. Ez a másodlagos rekesz [kisegítő_osztály] alakú. Tehát amikor egy kisegítő osztállyal adjuk meg a lomac házirendet, valahogy így néz ki: lomac/10[2], ahol a kettes (2) szám ez a kisegítésre használt osztály.
A MAC LOMAC házirendje az összes rendszerszintű objektum esetében jelenlevő sértetlenségi címkézésen alapszik, megengedve az alanyok számára, hogy az kevésbé sértetlen objektumokat olvasni tudják, majd a címke leminősítésével az alany meg tudja akadályozni a sokkal sértetlenebbnek ítélt objektumok jövőbeni írását. Ez az a fentebb tárgyalt [kisegítő_osztály] opció, ezért ez a modul a Bibáénál több kompatibilitást és kevesebb kezdeti beállítást igényel.
Hasonlóan a Biba és MLS házirendeknél megszokottakhoz, a setfmac és setpmac segédprogramok használhatóak a címkék hozzárendeléséhez:
# setfmac /usr/home/trhodes lomac/high[low] # getfmac /usr/home/trhodes lomac/high[low]
Itt a kisegítő osztály a low. Ezt csak a LOMAC MAC-házirendnél adhatjuk meg.
A most következő bemutatóban a MAC moduljainak és a megfelelően beállított házirendek használatával fogunk kialakítani egy biztonságos környezetet. Ne feledjük azonban, hogy ez csupán egy ártatlan próba és nem pedig a mindenki biztonsági aggályait kielégítő legvégső megoldás. Ha egy házirendet vakon építünk fel és nem értjük meg a működését, az soha nem válik hasznunkra, és egy éles helyzetben katasztrofális hatással járhat.
A folyamat megkezdése előtt be kell állítanunk a multilabel opciót mindegyik állományrendszerre, a fejezet elején leírtaknak megfelelően. Ha ezt a lépést kihagyjuk, akkor hibákat kapunk. Továbbá még az előkészület részeként ne felejtsünk el gondoskodni a net-mngt/nagios-plugins, net-mngt/nagios és www/apache13 portok telepítéséről, beállításáról és megfelelő működéséről sem.
Az eljárást kezdjük az alábbi (insecure) felhasználói osztály hozzáadásával az /etc/login.conf állományban:
insecure:\ :copyright=/etc/COPYRIGHT:\ :welcome=/etc/motd:\ :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\ :path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin :manpath=/usr/share/man /usr/local/man:\ :nologin=/usr/sbin/nologin:\ :cputime=1h30m:\ :datasize=8M:\ :vmemoryuse=100M:\ :stacksize=2M:\ :memorylocked=4M:\ :memoryuse=8M:\ :filesize=8M:\ :coredumpsize=8M:\ :openfiles=24:\ :maxproc=32:\ :priority=0:\ :requirehome:\ :passwordtime=91d:\ :umask=022:\ :ignoretime@:\ :label=biba/10(10-10):
Valamint egészítsük ki az alapértelmezett (default) felhasználói osztályt a következő sorral:
:label=biba/high:
Ahogy ezzel elkészültünk, az hozzá tartozó adatbázis újbóli legyártásához a következő parancsot kell kiadnunk:
# cap_mkdb /etc/login.conf
Még ne indítsuk újra a számítógépet, csupán a szükséges modulok betöltéséhez bővítsük ki a /boot/loader.conf állományt az alábbi sorokkal:
mac_biba_load="YES" mac_seeotheruids_load="YES"
Soroljuk be a root felhasználót a default osztályba:
# pw usermod root -L default
Az összes root felhasználón kívüli hozzáférésnek vagy rendszerfelhasználónak most kelleni fog egy bejelentkezési osztály. A bejelentkezési osztályra egyébként is szükség lesz, mert ennek hiányában a felhasználók még az olyan egyszerű parancsokat sem tudják kiadni, mint például a vi(1). A következő sh szkript nekünk erre pontosan megfelel:
# for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \ /etc/passwd`; do pw usermod $x -L default; done;
Helyezzük át a nagios és www felhasználókat az insecure osztályba:
# pw usermod nagios -L insecure
# pw usermod www -L insecure
Most csinálnunk kell egy contexts állományt. Ebben példában az /etc/policy.contexts állományt használjuk.
# Ez a rendszer alapértelmezett BIBA házirendje. # Rendszer: /var/run biba/equal /var/run/* biba/equal /dev biba/equal /dev/* biba/equal /var biba/equal /var/spool biba/equal /var/spool/* biba/equal /var/log biba/equal /var/log/* biba/equal /tmp biba/equal /tmp/* biba/equal /var/tmp biba/equal /var/tmp/* biba/equal /var/spool/mqueue biba/equal /var/spool/clientmqueue biba/equal # Nagios: /usr/local/etc/nagios /usr/local/etc/nagios/* biba/10 /var/spool/nagios biba/10 /var/spool/nagios/* biba/10 # Apache: /usr/local/etc/apache biba/10 /usr/local/etc/apache/* biba/10
Ezzel a házirenddel az információ áramlását szabályozzuk. Ebben a konkrét konfigurációban a felhasználók, a root és társai, nem férhetnek hozzá a Nagioshoz. A Nagios beállításait tároló állományok és a neve alatt futó programok így teljesen különválnak vagyis elzáródnak a rendszer többi részétől.
Ez az iménti állomány a következő parancs hatására kerül be a rendszerünkbe:
# setfsmac -ef /etc/policy.contexts / # setfsmac -ef /etc/policy.contexts /
Megjegyzés: A fenti állományrendszer felépítése a környezettől függően eltérhet, habár ezt minden egyes állományrendszeren le kell futtatni.
Az /etc/mac.conf állományt törzsét a következőképpen kell még átírnunk:
default_labels file ?biba default_labels ifnet ?biba default_labels process ?biba default_labels socket ?biba
Tegyük hozzá a következő sort az /boot/loader.conf állományhoz:
security.mac.biba.trust_all_interfaces=1
Ezt az alábbi beállítást pedig szúrjuk be az rc.conf állományba a hálózati kártya konfigurációjához. Amennyiben az internetet DHCP segítségével érjük el, ezt a beállítást manuálisan kell megtenni minden rendszerindítás alkalmával:
maclabel biba/equal
Gondoskodjunk róla, hogy a webszerver és a Nagios nem fog elindulni a rendszer indításakor, majd indítsuk újra a gépet. Ezenkívül még ellenőrizzük, hogy a root ne tudjon hozzáférni a Nagios beállításait tartalmazó könyvtárhoz. Ha a root képes kiadni egy ls(1) parancsot a /var/spool/nagios könyvtárra, akkor valamit elronthattunk. Normális esetben egy “permission denied” üzenetet kell kapnunk.
Ha minden jónak tűnik, akkor a Nagios, Apache és Sendmail most már elindítható a biztonsági házirend szabályozásai szerint. Ezt a következő parancsokkal tehetjük meg:
# cd /etc/mail && make stop && \ setpmac biba/equal make start && setpmac biba/10\(10-10\) apachectl start && \ setpmac biba/10\(10-10\) /usr/local/etc/rc.d/nagios.sh forcestart
Kétszer is ellenőrizzük, hogy minden a megfelelő módon viselkedik-e. Ha valamilyen furcsaságot tapasztalunk, akkor nézzük át a naplókat vagy a hibaüzeneteket. A sysctl(8) használatával tiltsuk le a mac_biba(4) biztonsági modult és próbáljunk meg mindent a szokott módon újraindítani.
Megjegyzés: A root felhasználó különösebb aggodalom nélkül képes megváltoztatni a biztonsági rend betartatását és átírni a konfigurációs állományokat. Egy frissen indított parancsértelmező számára ezzel a paranccsal tudjuk csökkenteni a biztonsági besorolást:
# setpmac biba/10 cshEnnek kivédésére a felhasználókat a login.conf(5) beállításaival le kell korlátozni. Ha a setpmac(8) megpróbál a rekesz határain túl futtatni egy parancsot, akkor hibát ad vissza és a parancs nem fut le. Ebben az esetben a root felhasználót tegyük a biba/high(high-high) értékek közé.
Ebben a példában egy viszonylag kicsi, nagyjából mindössze ötven felhasználós, adattárolásra használatos rendszert veszünk alapul. A felhasználók rendelkezhetnek bizonyos bejelentkezési tulajdonságokkal, és nem csak adatokat tudnak tárolni, hanem az erőforrásokhoz is hozzá tudnak férni.
Itt most a mac_bsdextended(4) és a mac_seeotheruids(4) modulokat vetjük be együttesen, és nem csak a rendszer objektumainak elérését tudjuk megakadályozni, hanem az egyes felhasználók futó programjait is elrejtjük.
A műveletet kezdjük azzal, hogy a /boot/loader.conf állományt kibővítjük a következő módon:
mac_seeotheruids_load="YES"
A mac_bsdextended(4) biztonsági modul az alábbi rc.conf-változóval hozható működésbe:
ugidfw_enable="YES"
A hozzá tartozó alapértelmezett szabálykészlet az /etc/rc.bsdextended állományban tárolódik, amely pedig a rendszer indítása során töltődik be. Ezeket némileg módosítanunk kell majd. Mivel a példában szereplő számítógép csak a felhasználók kiszolgálását hivatott ellátni, az utolsó kettő kivételével mindent hagyhatunk megjegyzésben. Így kikényszerítjük felhasználók által birtokolt rendszerobjektumok alapértelmezés szerinti betöltését.
Vegyük fel a szükséges felhasználókat a számítógépre és indítsuk újra. Tesztelési célból próbáljunk meg különböző felhasználókként bejelentkezni két konzolon. Futassuk le a ps aux parancsot, és így meg tudjuk figyelni, hogy mennyire látjuk a többi felhasználót. Amikor megpróbáljuk kiadni a ls(1) parancsot a többiek felhasználói könyvtáraira, akkor hibát kell kapnunk.
Ne próbálgassunk a root felhasználóval, hacsak a megfelelő sysctl változókban be nem állítottuk az ő hozzáférésének blokkolását is.
Megjegyzés: Amikor felveszük egy felhasználót a rendszerbe, a hozzá tartozó mac_bsdextended(4) szabály nem fog szerepelni a szabályrendszerben. A szabályrendszer gyors frissítését úgy tudjuk megoldani, ha a kldunload(8) használatával egyszerűen eltávolítjuk a biztonsági modult a memóriából és újratöltjük a kldload(8) paranccsal.
A fejlesztés fázisában bizonyos normál konfigurációval rendelkező felhasználók gondokat jeleztek. Ezeket foglaljuk most itt össze:
multilabel
beállítás nem adható meg a
/ állományrendszerreA multilabel
beállítás
nem marad meg a rendszerindító
(/) partíciómon!
A tapasztalatok szerint körülbelül minden ötvenedik felhasználó szembesül ezzel a problémával, és mi is találkozunk vele a kezdeti konfigurációk kialakítása során. Ennek az úgynevezett “hibának” a behatóbb tanulmányozása során arra jutottunk, hogy ez többnyire vagy a hibás dokumentálásból vagy a dokumentáció félreértelmezéséből ered. Független attól, hogy ez mitől is következett be, a következő lépések megtételével orvosolhatjuk:
Nyissuk meg az /etc/fstab
állományt és adjuk meg a
rendszerindító partíciónak az
ro
, vagyis az
írásvédett (read-only)
beállítást.
Indítsuk újra a gépet egyfelhasználós módban.
A tunefs -l enable
parancsot futtassuk le a /
állományrendszeren.
Indítsuk újra a rendszert normál módban.
Adjuk ki a mount
-urw
/ parancsot, majd
az /etc/fstab állományban
írjuk át a ro
beállítást az rw
értékre és megint indítsuk
újra a rendszert.
Alaposan nézzük át a
mount parancs kimenetét és
győzödjünk meg róla, hogy a
multilabel
opció valóban
beállítódott a
rendszerindító
állományrendszerre.
Nem indul az X, miután MAC-kel kialakítottunk egy biztonságos környezetet!
Ezt vagy a MAC partition házirendje okozza, vagy az egyik címkékeket használó házirend helytelen beállítása. A következő módon deríthetjük ki az okát:
Figyelmesen olvassuk el a hibaüzenetet: ha a felhasználó az insecure osztály tagja, akkor a partition házirend lesz a bűnös. Próbáljuk meg a felhasználót visszatenni a default osztályba és a cap_mkdb paranccsal újragenerálni az adatbázist. Ha ez nem segít a problémán, akkor haladjunk tovább.
Alaposan ellenőrizzük a címkékhez tartozó házirendeket. Vizsgáljuk meg, hogy a kérdeses felhasználó esetében a házirendet és az X11 alkalmazást, valamint a /dev eszközöket tényleg jól állítottuk be.
Ha az iméntiek egyik sem oldja meg gondunkat, küldjük el a hibaüzenetet és a környezetünk rövid leírását a a TrustedBSD honlapjáról elérhető TrustedBSD levelezési lista vagy a FreeBSD general questions levelezési lista címére.
Amikor a rendszerben megpróbálok a root felhasználóról átváltani egy másik felhasználóra, a “_secure_path: unable to state .login_conf” hibaüzenet jelenik meg.
Ez az üzenet általában akkor látható, amikor a felhasználó nagyobb értékű címkével rendelkezik annál, mint akivé válni akar. Például vegyük a joska nevű felhasználót a rendszerben, aki az alap biba/low címkével rendelkezik. A root felhasználó, akinek biba/high címkéje van, nem láthatja joska felhasználói könyvtárát. Ez attól függetlenül megtörténik, hogy a root a su paranccsal váltott át a joska nevű felhasználóra vagy sem. Egy ilyen helyzetben a Biba sértetlenségi modellje nem fogja engedni a root felhasználóra számára, hogy láthassa a kevésbé sértetlen objektumokat.
A rendszer normál vagy egyfelhasználós módban sem ismeri fel a root felhasználót. A whoami parancs 0 (nullát) ad vissza és a su parancs pedig annyit mond: “who are you?” (“ki vagy?”). Mi történhetett?
Ez csak olyankor történhet, ha a
címkézési házirendet nem
engedélyezzük, vagy a sysctl(8)
használatával, vagy pedig a modul
eltávolításával. Ha a
házirendet letiltjuk vagy ideiglenesen letiltódik,
akkor a bejelentkezési tulajdonságokat
tároló adatbázist a label
beállítás
eltávolításával kell
újrakonfigurálni. A
login.conf állományból
ne felejtsük el kivenni az összes
label
beállítást és
a cap_mkdb paranccsal
újragenerálni az adatbázist.
Ilyen akkor is előfordulhat, amikor a házirend valamilyen módon korlátozza a master.passwd állomány vagy adatbázis elérhetőségét. Ezt általában az okozza, hogy a rendszergazda az állományt olyan címke alatt módosítja, amely ütközik a rendszerben alkalmazott általános házirenddel. Ebben az esetekben a rendszer próbálja meg beolvasni a felhasználók adatait, azonban mivel közben az állomány új címkét örökölt, nem fér hozzá. Ha a sysctl(8) paranccsal letiltjuk a házirendet, minden vissza fog térni a rendes kerékvágásba.
A FreeBSD támogatja a biztonsági események aprólékos vizsgálatát. Ezzel egy megbízható, részletes és jól konfigurálható naplózási rendszert nyújtanak a rendszerben található biztonságot igénylő események széles köréhez, beleértve a bejelentkezéseket, a konfigurációs állományokban bekövetkező változásokat, állomány- és hálózati hozzáféréseket. Az így létrehozott naplóbejegyzések felbecsülhetetlen értékűnek bizonyulhatnak egy élő rendszer felügyelete során, vagy egy hálózati támadás észleléséhez, esetleg egy összeomlás okainak kielemezéséhez. A FreeBSD ehhez a Sun által kifejlesztett BSM technológia API-ját és állományformátumát valósítja meg, és így képes együttműködni a Sun Solaris valamint az Apple Mac OS X bizonsági rendszereivel egyaránt.
Ebben a fejezetben a biztonsági események vizsgálatának telepítéséhez és beállításához szükséges ismeretek tekintjük át. Ennek keretében szó esik a vizsgálati házirendekről, valamint mutatunk egy példát a vizsgálatok beállítására.
A fejezet elolvasása során megismerjük:
mit jelent az események vizsgálata és hogyan működik;
hogyan kell beállítani az események vizsgálatát FreeBSD-n a különböző felhasználók és programok esetén;
hogyan értelmezzük a vizsgálati nyomokat a vizsgálatot szűkítő és -elemző segédprogramok segítségével.
A fejezet elolvasásához ajánlott:
alapvető UNIX-os és FreeBSD-s ismeretek (3 fejezet);
a rendszermag konfigurálásával és fordításával kapcsolatos tudnivalók alapszintű ismerete (8 fejezet);
az informatikai biztonság alapfogalmainak és annak a FreeBSD-re vonatkozó részleteinek minimális ismerete (14 fejezet).
Figyelem: Az események vizsgálatával kapcsolatos ismert korlátozások: nem mindegyik biztonságot érintő esemény vizsgálható, mint például az egyes bejelentkezési típusok, mivel azok nem megfelelően hitelesítik a belépő felhasználókat. Ilyenek például az X11-alapú felületek és az egyéb, erre a célra alkalmas, más által fejlesztett démonok.
A biztonsági események vizsgálata során a rendszer képes nagyon részletes naplókat készíteni az érintett tevékenységekről. Így egy kellően forgalmas rendszeren az állománymozgások alapos nyomonkövetése bizonyos konfigurációkon akár gigabyte-okat is kitehet hetente. A rendszergazdáknak ezért mindig javasolt számolniuk a nagy forgalmú események biztonsági vizsgálatának tárigényével. Például, emiatt érdemes lehet egy egész állományrendszert szánni erre a feladatra a /var/audit könyvtárban, és így a többi állományrendszer nem látja kárát, ha véletlenül betelne ez a terület.
A fejezet elolvasása előtt meg kell ismernünk néhány fontos alapfogalmat:
esemény: Vizsgálható eseménynek azt az eseményt nevezzük, amely egy vizsgálati alrendszerben naplózható. Biztonsági események lehetnek például: egy állomány létrehozása, egy hálózati kapcsolat felépítése, vagy egy felhasználó bejelentkezése. Egy esemény “jellegzetes”, ha visszakövethető valamelyik hitelesített felhasználóhoz, vagy “nem jellegzetes”, ha ez nem lehetséges. Nem jellegzetes esemény lehet minden olyan esemény, amely egy bejelentkezési folyamat hitelesítési lépése előtt történik, például egy belépési kísérlet hibás jelszóval.
osztály: Eseményosztálynak az összefüggő események névvel ellátott halmazát tekintjük, és szűrési feltételekben használjuk ezeket. Általában alkalmazott osztályok: “file creation” (fc, állománylétrehozás), “exec” (ex, programindítás), és “login_logout” (lo, ki- és bejelentkezés).
rekord: Rekordnak nevezzük a biztonsági eseményeket leíró biztonsági naplóbejegyzéseket. A rekordok tartalmazhatják a feljegyzett esemény típusát, az eseményt kiváltó tevékenységet (felhasználót), a dátumot és az időt, tetszőleges objektum vagy paraméter értékét, feltételek teljesülését vagy meghiúsulását.
nyom: Vizsgálati nyomnak vagy naplóállománynak nevezzük a különféle biztonsági eseményeket leíró vizsgálati rekordok sorozatát. A nyomok többnyire nagyjából az események bekövetkezése szerinti időrendben következnek. Csak és kizárólag az erre felhatalmazott programok hozhatnak létre rekordokat a vizsgálati nyomban.
szűrési feltétel: Szűrési feltételnek nevezünk egy olyan karakterláncot, amelyet események szűrésére használunk, és módosítókat valamint eseményosztályok neveit tartalmazza.
előválogatás: Előválogatásnak nevezzük a folyamatot, amelynek során a rendszer beazonosítja azokat az eseményeket, amelyek a rendszergazda számára fontosak. Ezáltal elkerülhetjük olyan vizsgálati rekordok generálását, amelyek számunkra érdektelen eseményekről számolnak be. Az előválogatás szűrési feltételek sorát használja az adott felhasználókhoz tartozó adott biztonsági események vizsgálatának beállításához, akárcsak a hitelesített és a nem hitelesített programokat értintő globális beállítások meghatározásához.
leszűkítés: Leszűkítésnek nevezzük a folyamatot, amelynek során a már meglevő biztonsági rekordokból válogatunk le tárolásra, nyomtatásra vagy elemzésre. Hasonlóan ez a folyamat, ahol a szükségtelen rekordokat eltávolítjuk a vizsgálatai nyomból. A leszűkítés segítségével a rendszergazdák a vizsgálati adatok eltárolására alakíthatnak ki házirendet. Például a részletesebb vizsgálati nyomokat érdemes egy hónapig megtartani, ennek lejártával viszont már inkább ajánlott leszűkíteni ezeket és archiválásra csak a bejelentkezési információkat megtartani.
A eseményvizsgálathoz szükséges felhasználói programok a FreeBSD alaprendszer részét képezik. Az eseményvizsgálat támogatása alapértelmezés szerint megtalálható a rendszermagban, azonban egy saját rendszermag esetén már külön be kell kapcsolnunk a megfelelő támogatást, mégpedig a rendszermag konfigurációs állományában az alábbi sor hozzáadásával:
options AUDIT
Fordítsuk és telepítsük újra a rendszermagot az 8 fejezetben ismertetett folyamat szerint.
Ahogy a rendszermagot a bekapcsolt eseményvizsgálati támogatással sikerült lefordítanunk és telepítenünk, valamint a rendszerünk is újraindult, indítsuk el a vizsgáló démont a következő sor hozzáadásával az rc.conf(5) állományban:
auditd_enable="YES"
A vizsgálatot innentől ténylegesen egy ismételt újraindítással vagy pedig az előbb említett démon manuális elindításával aktiválhatjuk:
/etc/rc.d/auditd start
A vizsgálatok beállításához szükséges összes konfigurációs állomány a /etc/security könyvtárban található. A következő állományok vannak itt a démon indítása előtt:
audit_class - a vizsgálati osztályok definícióit tartalmazza.
audit_control - a vizsgálati alrendszer különböző területeit vezérli, többek közt az alapértelmezett vizsgálati osztályokat, az vizsgálati adatok tárhelyén fenntartandó minimális lemezterületet, a vizsgálati nyom maximális méretét, stb.
audit_event - a rendszerben jelenlevő vizsgálati események szöveges megnevezése és leírása, valamint a lista, hogy melyikük mely osztályban található.
audit_user - felhasználónként változó vizsgálati elvárások, kombinálva a bejelentkezéskor érvényes globálisan alapértelmezett beállításokkal.
audit_warn - az auditd által használt testreszabható shell szkript, aminek segítségével a szélsőséges helyzetekben figyelmeztető üzeneteket tudunk generálni, mint például amikor a rekordok számára fenntartott hely hamarosan elfogy, vagy amikor a nyomokat tartalmazó állományt archiváltuk.
Figyelem: Az eseményvizsgálat konfigurációs állományait alapos körültekintés mellett szabad szerkeszteni és karbantartani, mivel a bennük keletkező hibák az események helytelen naplózását eredményezhetik.
Az eseményvizsgálati beállítások során számtalan helyen felbukkanak a vizsgálni kívánt eseményeket meghatározó szűrési feltételek. Ezen feltételek eseményosztályok felsorolását tartalmazzák, mindegyiküket egy módosító vezeti be, ezzel jelezve, hogy az adott eseményosztályba tartozó rekordokat tartsuk meg vagy vessük el. Esetleg utalhatnak arra is, hogy vagy csak a sikerességet jelző rekordokat, vagy csak a sikertelenséget jelző rekordokat szűrjük ki. A szűrési feltételek balról jobbra értékelődnek ki, és két kifejezés összefűzéssel kombinálható.
A most következő lista tartalmazza a audit_class állományban található alapértelmezett eseményvizsgálati osztályokat:
all - all (mind) - Minden eseményosztályra vonatkozik.
ad - administrive (adminisztrációs) - olyan adminisztrációs tevékenységek, amelyek egyben az egész rendszeren végrehajtódnak.
ap - application (alkalmazás) - az alkalmazások által meghatározott tevékenység.
cl - file close
(állomány lezárása) -
a close
rendszerhívás
meghívásának vizsgálata.
ex - exec (programindítás) - egy program indításának vizsgálata. A parancssorban átadott paraméterek és a környezeti változók vizsgálatát az audit_control(5) vezérli a policy beállításhoz tartozó argv és envv paraméterek segítségével.
fa - file attribute access (állományjellemzők hozzáférése) - a rendszerbeli objektumok jellemzőinek hozzáférésnek vizsgálata, mint például a stat(1), pathconf(2) és ehhez hasonló események.
fc - file create (állomány létrehozása) - állományt eredményező események vizsgálata.
fd - file delete (állomány törlése) - állományt törlő események vizsgálata.
fm - file attribute modify (állományjellemzők módosítása) - állományok jellemzőit megváltoztató események vizsgálata, mint például a chown(8), chflags(1), flock(2), stb.
fr - file read (állományolvasás) - állományok megnyitásával olvasásra, olvasásával, stb. kapcsolatos események vizsgálata.
fw - file write (állományírás) - állományok megnyitásával írásra, írásával, módosításával, stb. kapcsolatos események vizsgálata.
io - ioctl - az ioctl(2) rendszerhívást használó események vizsgálata.
ip - ipc - a folyamatok közti kommunikáció különféle formáinak, beleértve a POSIX csövek és System V IPC műveleteinek vizsgálata.
lo - login_logout (ki- és bejelentkezés) - a rendszerben megjelenő login(1) és logout(1) események vizsgálata.
na - non attributable (nem jellegzetes) - a nem jellegzetes események vizsgálata.
no - invalid class (érvénytelen osztály) - egyetlen biztonsági eseményt sem tartalmaz.
nt - network (hálózat) - a hálózathoz tartozó események vizsgálata, mint például a connect(2) és az accept(2).
ot - other (egyéb) - más egyéb események vizsgálata.
pc - process (folyamat) - a folyamatokkal kapcsolatos műveletek, mint például az exec(3) és az exit(3) vizsgálata.
Az imént felsorolt eseményosztályok az audit_class és az audit_event állományok módosításával igény szerint testreszabhatóak.
A listában szereplő minden egyes eseményosztályhoz tartozik még egy módosító is, amely jelzi, hogy a sikeres vagy a sikertelen műveleteket kell-e szűrnünk, valamint hogy a bejegyzés az adott típust vagy osztályt hozzáadja vagy elveszi az adott szűrésből.
(üres) az adott típusból mind a sikereseket és mind a sikerteleneket feljegyzi.
+ az eseményosztályba tartozó sikeres eseményeket vizsgálja csak.
- az eseményosztályba tartozó sikertelen eseményeket vizsgálja csak.
^ az eseményosztályból sem a sikereseket, sem pedig a sikerteleneket nem vizsgálja.
^+ az eseményosztályból nem vizsgálja a sikeres eseményeket.
^- az eseményosztályból nem vizsgálja a sikertelen eseményeket.
Az alábbi példa egy olyan szűrési feltételt mutat be, amely a ki- és bejelentkezések közül megadja a sikereset és a sikerteleneket, viszont a programindítások közül csak a sikereseket:
lo,+ex
A vizsgálati rendszer beállításához az esetek túlnyomó részében a rendszergazdáknak csupán két állományt kell módosítaniuk: ezek az audit_control és az audit_user. Az előbbi felelős a rendszerszintű vizsgálati jellemzőkért és házirendekért, míg az utóbbi az igények felhasználókénti finomhangolásához használható.
Az audit_control állomány határozza meg a vizsgálati alrendszer alapértelmezéseit. Ezt az állományt megnyitva a következőket láthatjuk:
dir:/var/audit flags:lo minfree:20 naflags:lo policy:cnt filesz:0
A dir
opciót használjuk a
vizsgálati naplók
tárolására szolgáló egy
vagy több könyvtár megadására.
Ha egynél több könyvtárra
vonatkozó bejegyzés található az
állományban, akkor azok a megadás
sorrendjében kerülnek feltöltésre.
Nagyon gyakori az a beállítás, ahol a
vizsgálati naplókat egy erre a célra
külön kialakított
állományrendszeren tárolják,
megelőzve ezzel az állományrendszer
betelésekor keletkező problémákat a
többi alrendszerben.
A flags
mező egy rendszerszintű
alapértelmezett előválogatási
maszkot határoz meg a jellegzetes események
számára. A fenti példában a
sikeres és sikertelen ki- és
bejelentkezéseket mindegyik felhasználó
esetén vizsgáljuk.
A minfree
opció megszabja a
vizsgálati nyom tárolására
szánt állományrendszeren a
minimális szabad helyet, a teljes kapacitás
százalékában. Amint ezt a
küszöböt túllépjük, egy
figyelmeztetés fog generálódni. A fenti
példa a minimálisan szükséges
rendelkezésre álló helyet húsz
százalékra állítja.
A naflags
opció megadja azokat az
eseményosztályokat, amelyeket vizsgálni
kell a nem jellegzetes események, mind
például a bejelentkezési folyamatok vagy
rendszerdémonok esetén.
A policy
opció a vizsgálat
különböző szempontjait
irányító házirendbeli
beállítások vesszővel
elválasztott listáját tartalmazza. Az
alapértelmezett cnt
beállítás azt adja meg, hogy a rendszer a
felmerülő vizsgálati hibák
ellenére is folytassa tovább a
működését (erősen javasolt a
használata). A másik gyakorta alkalmazott
beállítás az argv,
amellyel a rendszer a parancsvégrehajtás
részeként az execve(2)
rendszerhívás parancssori paramétereit is
megvizsgálja.
A filesz
opció határozza
meg a vizsgálati nyom automatikus
szétvágása és
archiválása előtti maximális
méretét, byte-ban. Az alapértelmezett
értéke a 0, amely kikapcsolja ezt az
archiválást. Ha az itt megadott
állományméret nem nulla és a
minimálisan elvárt 512 KB alatt van, akkor
a rendszer figyelmen kívül hagyja és
erről egy figyelmeztetést ad.
Az audit_user állomány lehetővé teszi a rendszergazda számára, hogy az egyes felhasználók számára további vizsgálati szigorításokat határozzon meg. Minden sor egy-egy felhasználó vizsgálatának pontosítását adja meg két mező segítségével: az első közülük az alwaysaudit mező, mely felsorolja azokat az eseményeket, amelyeket minden esetben vizsgáni kell az adott felhasználó esetén, valamint a második a neveraudit mező, mely az adott felhasználó esetén a nem vizsgálandó eseményeket adja meg.
A most következő audit_user példában vizsgáljuk a root felhasználó ki- és bejelentkezéseit és sikeres programindításait, valamint a www felhasználó állománylétrehozásait és sikeres programindításait. Ha a korábban bemutatott audit_control példával együtt használjuk, akkor észrevehetjük, hogy a lo bejegyzés a root felhasználó esetén redundáns, illetve ilyenkor a ki/bejelentkezést a www felhasználó esetén is vizsgáljuk.
root:lo,+ex:no www:fc,+ex:no
A vizsgálati nyomok a BSM bináris formátumban tárolódnak, ezért a tartalmának konvertálásához és módosításához külön segédprogramokra van szükség. A praudit(1) parancs a nyomállományokat egyszerű szöveges formátumra alakítja, az auditreduce(1) parancs pedig a nyomok elemzéséhez, archiválásához vagy nyomtatásához szükséges leszűkítéséket végzi el. Az auditreduce a szűrési feltételek paramétereinek széles skáláját kezeli, beleértve az eseménytípusokat, -osztályokat, felhasználókat, események dátumát vagy időpontját, állományok elérési útvonalát vagy az általuk érintett objektumokat.
Például a praudit segédprogram képes kilistázni szövegesen egy adott vizsgálati napló teljes tartalmát:
# praudit /var/audit/AUDITFILE
ahol az AUDITFILE a kiírandó vizsgálati napló.
A vizsgálati nyomok tokenekből összeállított vizsgálati rekordok, amelyeket a praudit egymás után soronként megjelenít. Minden token adott típusú, például a header egy vizsgálati rekord fejlécét tartalmazza, vagy a path, amely a névfeloldásból származó elérési utat tartalmaz. A következő példa egy execve eseményt mutat be:
header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec exec arg,finger,doug path,/usr/bin/finger attribute,555,root,wheel,90,24918,104944 subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100 return,success,0 trailer,133
Ez a vizsgálat egy sikeres execve hívást rögzít, ahol a finger doug parancs futott le. A paramétereket tartalmazó token magában foglalja a shell által a rendszermag felé jelzett parancsot és annak paraméterét egyaránt. A path token tárolja a végrehajtott állomány rendszermag által feloldott elérési útját. A attribute token erről a binárisról ad további információkat, különösen az állomány módjáról, amely segít megállapítani, hogy az adott alkalmazásnál be volt-e állítva a setuid bit. A subject token leírja az érintett folyamatot és rendre megjegyzi a vizsgált felhasználó azonosítóját, az aktuálisan érvényben levő felhasználó és csoport azonosítóját, a valós felhasználói és csoport azonosítót, a folyamat azonosítóját, a munkamenet azonosítóját, a port azonosítóját és a bejelentkezéshez használt hálózati címet. Vegyük észre, hogy a vizsgált felhasználó azonosítója és a valódi azonosítója eltér egymástól: a robert nevű felhasználó a root accountjára váltott a parancs futattása előtt, de az eredetileg hitelesített felhasználójaként lett vizsgálva. Végezetül a return token jelzi a sikeres végrehajtást, és a trailer pedig zárja a rekordot.
Mivel a vizsgálatokhoz tartozó naplók akár egészen nagyok is lehetnek, ezért a rendszergazdának minden bizonnyal szüksége lehet a számára fontos, például egy adott felhasználóhoz tartozó rekordok kiválogatására:
# auditreduce -u trhodes /var/audit/AUDITFILE | praudit
Ezzel ki tudjuk szűrni a trhodes nevű felhasználóhoz tartozó összes vizsgálati rekordot az AUDITFILE állományból.
Az audit csoport tagjai olvashatják a /var/audit könyvtárban található vizsgálati nyomokat. Alapértelmezés szerint ez a csoport üres, ezért csak a root képes ekkor vizsgálni a nyomokat. A többi felhasználó számára úgy tudunk olvasási jogot biztosítani, ha felvesszük őket az audit csoportba. Mivel a vizsgálati naplók tartalmának figyelése jelentős rálátást adhat a rendszerben jelenlevő felhasználók és folyamatok viselkedésére, ajánlott körültekintően kiosztani az olvasási jogokat.
A vizsgálati csövek az eszközök állományabsztrakcióit klónozzák le, és ezzel teszik lehetővé az alkalmazások számára, hogy menet közben megcsapolhassák a megfigyelt eszközök adatait. Ez az elsődleges célja a különböző betörésfigyelő és rendszerfelügyeleti eszközök készítőinek. A rendszergazda számára azonban a vizsgálati csövek megkönnyítik az élő megfigyelést, mert itt nem merülnek fel a nyomok jogosultságaiból vagy az archiválás miatt megszakadó eseményfolyamokból adódó problémák. Az élő eseményfolyamra az alábbi parancs kiadásával lehet rácsatlakozni:
# praudit /dev/auditpipe
Alapértelmezés szerint a vizsgálati csőhöz tartozó csomópontok kizárólag csak a root felhasználó részére érhetőek el. Az audit csoport tagjai úgy tudnak majd hozzáférni, ha felvesszük a következő devfs szabályt a devfs.rules állományba:
add path 'auditpipe*' mode 0440 group audit
A devfs állományrendszer beállításáről bővebben lásd a devfs.rules(5) oldalt.
Figyelem: Könnyen gerjedést lehet előidézni a vizsgált események megfigyelésével, amikor is az egyes események megtekintése újabb vizsgálandó események sorozatát indítják el. Például, ha az összes hálózati forgalmat egyszerre vizsgáljuk és a praudit(1) egy SSH-munkameneten keresztül fut, akkor a vizsgálati események töméntelen áradata indul meg, mivel minden kiírandó esemény egy újabb eseményt indukál. Ennek elkerülése érdekében ajánlott a praudit parancsot részletes forgalmat nem figyelő vizsgálati csővel ellátott munkameneten keresztül elindítani.
A vizsgálati nyomokat egyedül a rendszermag képes írni, illetve csak a vizsgálati démon, az auditd képes felügyelni. A rendszergazdáknak ebben az esetben tehát nem szabad használniuk a newsyslog.conf(5) vagy a hozzá hasonló eszközök használatát a vizsgálati naplók archiválásához. Helyettük a audit segédprogramot javasolt használni a vizsgálatok leállítására, a vizsgálati rendszer újrakonfigurálására vagy a napló archiválásának elvégzésére. Az alábbi parancs utasítja a vizsgálati démont, hogy hozzon létre egy új vizsgálati naplót és jelzi a rendszermagnak, hogy váltson erre az új naplóra. Az eddig használt naplót lezárja és átnevezi, ami ezután a rendszergazda által tetszőlegesen feldolgozható.
# audit -n
Figyelem: Ha az auditd démon a parancs kiadásánák pillanatában nem futna, akkor hiba történik és erről hibaüzenetet kapunk.
A cron(8) segítségével tizenként óránként kikényszeríthetjük a naplók váltását, ha felvesszük a /etc/crontab állományba az alábbi sort:
0 */12 * * * root /usr/sbin/audit -n
Ez a változtatás akkor fog érvénybe lépni, ha elmentjük az új /etc/crontab állományt.
A vizsgálati nyomok mérete szerinti
automatikus váltás is
megvalósítható az audit_control(5)
állományban szereplő filesz
opció beállításával, amit meg
is találhatunk ebben a fejezetben, a
konfigurációs állományok
beállításánál.
Mivel a vizsgálati nyomok óriásira is megnőhetnek, sokszor felmerül az igény, hogy lehessen őket tömöríteni vagy más egyéb módon archiválni a vizsgálati démon által lezárt nyomokat. Az audit_warn szkript használható a különböző vizsgálatokhoz kapcsolódó események esetén elvégzendő műveletek megadásához, beleértve ebbe a vizsgálati nyomok váltásakor elvégzett szabályos lezárását. Például a következőket kell beleírnunk az audit_warn szkriptbe a nyomok lezárását követő tömörítéséhez:
# # Lezáráskor tömöríti a vizsgálati nyomot. # if [ "$1" = closefile ]; then gzip -9 $2 fi
Egyéb archiválási tevékenységek lehetnek még: a nyomok felmásolása egy központi szerverre, a régebbi nyomok törlése, vagy a meglevő nyomok leszűkítése csak a fontos információkra. A szkript csak akkor fog lefutni, ha a vizsgálati nyomot sikerült szabályosan lezárni, így tehát a szabálytalan leálláskor megmaradó nyomok esetén nem.
A FreeBSD 6.3 és későbbi
verzióiban, a praudit XML kimeneti
formátumot is támogat, amely az
-x
kapcsolóval érhető
el.
Ez a fejezet arról szól, hogy miként használjuk a lemezeinket a FreeBSD-vel. Itt többek közt szó esik a memória (alapú) lemezekről, a hálózaton keresztül csatlakoztatott meghajtókról, a szabványos SCSI/IDE tárolóeszközökről és az USB felületet használó eszközökről.
A fejezet elolvasása során megismerjük:
a FreeBSD által alkalmazott terminológiát, amivel a fizikai lemezeken elhelyezkedő adatokat írja le (partíciók és slice-ok);
hogyan bővítsük rendszerünket további merevlemezekkel;
hogyan állítsuk be a FreeBSD-t USB tárolóeszközök használatára;
hogyan állítsunk be virtuális állományrendszereket, például memórialemezeket;
hogyan használjuk a kvótákat a lemezterület használatának korlátozására;
hogyan védjüket meg lemezeinket titkosítással az illetéktelenektől;
FreeBSD alatt hogyan készítsünk és írjuk CD-ket, DVD-ket;
a biztonsági mentések készítésének különböző lehetőségeit;
hogyan használjuk a FreeBSD alatt rendelkezésünkre álló, biztonsági mentést készítő programokat;
hogyan mentsünk floppy lemezekre;
mik az állományrendszerek pillanatképei és hogyan kell ezeket hatékonyan használni.
A fejezet elolvasásához ajánlott:
a FreeBSD rendszermag beállításának és telepítésének ismerete (8 fejezet)
A most következő listában felsoroljuk a FreeBSD által ismert fizikai tárolóeszközöket és a hozzájuk tartozó elnevezéseket.
Táblázat 18-1. A fizikai lemezek elnevezésének szabályai
A meghajtó típusa | A meghajtóeszköz neve |
---|---|
IDE merevlemezek | ad |
IDE CD-meghajtók | acd |
SCSI merevlemezek és USB tárolóeszközök | da |
SCSI CD-meghajtók | cd |
Különböző nem szabványos CD-meghajtók | mcd (Mitsumi CD-ROM) és scd (Sony CD-ROM) |
Floppy meghajtók | fd |
SCSI szalagos meghajtók | sa |
IDE szalagos meghajtók | ast |
Flash meghajtó | fla (DiskOnChip® Flash eszköz) |
RAID meghajtók | aacd (Adaptec AdvancedRAID), mlxd és mlyd (Mylex), amrd (AMI MegaRAID), idad (Compaq Smart RAID), twed (3ware® RAID). |
Ebben a szakaszban arról lesz szó, hogy a jelenleg egyetlen meghajtót tartalmazó rendszerünket hogyan tudjuk bővíteni egy új SCSI-lemez hozzáadásával. Ehhez elsőként kapcsoljuk ki a számítógépünket és szereljük be a helyére az új meghajtót a számítógép, a lemezvezérlő és a meghajtó gyártójának utasításai alapján. Mivel ezt a műveletet rengeteg módon lehet elvégezni, ezért ennek pontos részleteivel ez a leírás most nem foglalkozik.
Jelentkezzünk be root felhasználóként. Miután beszereltük a meghajtót, a /var/run/dmesg.boot állomány végignézésével bizonyosodjuk meg róla, hogy a rendszer valóban megtalálta a lemezt. A példánk szerint ez a meghajtó tehát a da1 nevet fogja viselni, amelyet a /1 könyvtárba akarunk csatlakoztatni (ha IDE-meghajtót telepítünk, akkor a hozzá tartozó eszköz neve ad1 lesz).
Mivel a FreeBSD IBM PC kompatibilis számítógépeken fut, ezért nem szabad figyelmen kívül hagynunk a PC BIOS partícióit is. Ezek eltérnek a hagyományos BSD partícióktól. Egy PC-s lemeznek négy BIOS-os partícióbejegyzése lehet. Ha egy lemezt tényleg csak a FreeBSD-nek szánunk, akkor használhatjuk az ún. dedikált módot. Minden más esetben a FreeBSD-nek egy PC BIOS partícióban kell elhelyezkednie. A FreeBSD a PC BIOS partícióit slice-nak nevezi, ezzel különbözteti ezeket a hagyományos BSD partícióktól. Dedikált esetekben is használhatjuk, de elsősorban akkor kap fontosabb szerepet, amikor a FreeBSD-nek más operációs rendszerekkel kell megosztani a helyet. Ezzel el tudjuk kerülni, hogy a más operációs rendszerekben megtalálható, nem FreeBSD alapú fdisk parancs megzavarodjon.
A slice-ok használatakor a meghajtó /dev/da1s1e néven kerül hozzáadásra. Így kell olvasni: egyes SCSI lemezes egység (második SCSI lemez), első slice (első PC BIOS partíció) és e BSD partíció. A dedikált esetben a meghajtó neve viszont egyszerűen csak /dev/da1e.
Mivel a bsdlabel(8) 32 bites egész számokat használ a szektorok számának tárolására, ezért lemezenként csak 2^32-1 szektort tud ábrázolni, ami az esetek többségében 2 TB méretű címezhető területet jelent. Az fdisk(8) formátuma szerint sem a kezdőszektor, sem a hossz nem lehet 2^32-1-nél több, amivel így a partíciókat 2 TB, a lemezeket pedig 4 TB méretűre korlátozza. A sunlabel(8) formátuma partíciónként 2^32-1 szektort enged meg és összesen 8 partíciót, amely ezáltal 16 TB terület lefedését teszi lehetővé. Nagyobb lemezekhez gpt(8) partíciók használatosak.
Közlekedés a sysinstall programban
A sysinstall könnyen használható menüinek segítségével az új lemezen pillanatok alatt létre tudunk hozni partíciókat és megcímkézni ezeket. Ehhez vagy root felhasználóként jelentkezzünk be a rendszerbe, vagy adjuk ki a su parancsot. A sysinstall parancs kiadása után lépjünk be a Configure (Beállítások) menübe. A FreeBSD Configuration Menu menüben ezután keressük meg és válasszuk ki az Fdisk menüpontot.
Az fdisk partíciószerkesztő
Miután eljutottunk az fdisk alkalmazáshoz, az A lenyomásával felajánlhatjuk az egész lemezt a FreeBSD számára. Amikor előkerül a kérdés, hogy “remain cooperative with any future possible operating systems” (“működőképes maradjon-e a későbbiekben telepítendő operációs rendszerekkel”), akkor válaszoljuk rá YES-szel (tehát igen). A W gomb lenyomásával írjuk a lemezre a most elvégzett változtatásokat. Ezután már a Q használatával ki is léphetünk az FDISK szerkesztőből. A következő lépésben a “Master Boot Record”-ról fognak minket megkérdezni. Mivel most egy már működő rendszert bővítünk, ezért a válaszunk erre None lesz.
A lemezcímkék szerkesztése
Most lépjünk ki a sysinstall alkalmazásból és indítsuk el újra. Kövessük az iménti útmutatásokat, de ezúttal a Label menüpontot válasszuk ki. Ezzel a Disk Label Editor-ba vagyis a lemezcímkék szerkesztőjéhez jutunk. Itt fogjuk létrehozni a hagyományos BSD partíciókat. Egy lemezen nyolc ilyen partíció lehet, a-tól h-ig. Közülük néhány partíció címkéjét megkülönböztetjük. Az a partíció jelöli a rendszer indításához használt partíciót, a gyökérpartíciót (/). Tehát a partíció csak a rendszerlemezünkön szerepelhet (tehát ahonnan indul a rendszer). A b partíció a lapozáshoz használt partíciókat jelöli és több lemezen is szerepelhet. A c partíción keresztül lehet elérni az egészt lemezt dedikált módban vagy az egész FreeBSD slice-ot slice módban. A többi partíció tetszőlegesen felhasználható.
A sysinstall címkeszerkesztője az e betűvel szereti megjelölni a sem nem rendszerindító, sem nem lapozó partíciókat. A címkeszerkesztőben egyetlen állományrendszert a C lenyomásával lehet készíteni. Amikor erre válaszul megkérdezi a típusát (FS (állományrendszer) vagy swap (lapozóterület) legyen), akkor válasszuk az FS beállítást és adjuk meg a csatlakozási pontját (például /mnt). Amikor a lemezt telepítés után (post-install) adjuk hozzá, akkor a sysinstall valójában nem hoz létre hozzá bejegyzéseket az /etc/fstab állományban, ezért a csatlakozási pont megadása nem is feltétlenül fontos.
Most már készen állunk arra, hogy rögzítsük az új címkét a lemezre és létrehozzunk vele egy állományrendszert. Ehhez nyomjuk le a W gombot. Ne foglalkozzunk vele, ha a sysinstall nem képes csatlakoztatni az új partíciót. Ha ezzel megvagyunk, akkor lépjünk ki a címkeszerkesztőből és a sysinstallból is.
Befejezés
Most már csak annyi teendőnk maradt, hogy felvegyük az /etc/fstab állományba az új lemezhez tartozó bejegyzést.
Ezzel a beállítással a lemezünkre később más operációs rendszereket is telepíthetünk, és nem okoz gondot a saját fdisk segédprogramjaik működésében. Az új lemezek telepítésénél ezt a módszer ajánlatos követni. A dedikált módot viszont csak abban az esetben használjuk, ha erre nyomós okunk van!
# dd if=/dev/zero of=/dev/da1 bs=1k count=1 # fdisk -BI da1 # inicializáljuk az új lemezt # bsdlabel -B -w da1s1 auto # címkézzük meg # bsdlabel -e da1s1 # szerkeszzük át a frissen létrehozott címkét és vegyünk fel egy új partíciót # mkdir -p /1 # newfs /dev/da1s1e # ismételjük meg minden létrehozott partícióhoz # mount /dev/da1s1e /1 # csatlakoztassuk a partíció(ka)t # vi /etc/fstab # vegyük fel a megfelelő bejegyzés(eke)t az /etc/fstab állományba
IDE-lemezek esetén azad eszközt a da eszközzel helyettesítsük.
Amennyiben az új meghajtót nem akarjuk megosztani egyetlen más operációs rendszerrel sem, használhatjuk a dedicated (dedikált) módot. Ne felejtsük el azonban, hogy ez képes összezavarni a Microsoft operációs rendszereit, habár ebből semmilyen kárunk nem fog származni. Az IBM OS/2 operációs rendszere azonban “kisajátít” minden olyan partíciót, amelyet nem tud olvasni.
# dd if=/dev/zero of=/dev/da1 bs=1k count=1 # bsdlabel -Bw da1 auto # bsdlabel -e da1 # létrehozzuk az `e' partíciót # newfs /dev/da1e # mkdir -p /1 # vi /etc/fstab # felvesszük a /dev/da1e partíciót # mount /1
Egy másik megoldás:
# dd if=/dev/zero of=/dev/da1 count=2 # bsdlabel /dev/da1 | bsdlabel -BR da1 /dev/stdin # newfs /dev/da1e # mkdir -p /1 # vi /etc/fstab # felvesszük a /dev/da1e partíciót # mount /1
A nagyobb méretű háttértárolók kiválasztásánál a legfontosabb tényezők a sebesség, megbízhatóság és a költség. Nagyon ritkán lehet csak ezt a hármat egyensúlyba hozni: általában a gyors és megbízható tárolóeszközök sok pénzbe kerülnek, valamint a költségek megtakarításához vagy a sebességet vagy pedig a megbízhatóságot kell feláldoznunk.
A továbbiakban egy olyan rendszert mutatunk be, ahol a elsősorban a költségek, majd csak ezután a sebesség és megbízhatóság kerültek előtérben. A rendszer adatátviteli sebességét a hálózat korlátozza. Habár emellett a megbízhatóság is nagyon fontos, a tárgyalt összefűzött meghajtó (Concenated Disk, CCD) csak adatokat szolgáltat és a teljes tartalma bármikor visszaállítható, mivel rendelkezésre áll CD-n.
A feladat elvégzésére alkalmas háttértároló kiválasztásában elsőként a saját elvárásainkat kell tudnunk megfogalmazni. Ha nekünk jobban számít az árnál a sebesség vagy a megbízhatóság, akkor a mostaniaktól némileg eltérő konfigurációt kell majd építenünk.
A rendszert tartalmazó IDE-lemez mellett három darab, egyenként 30 GB-os 5400-as percenkénti fordulatszámú Western Digital gyártmányú merevlemez alkotja majd a létrehozni kívánt, kb. 90 GB összméretű összefűzött lemezt. Ideális esetben minden IDE-lemez saját külön vezérlőn és kábelen van, de a költségek csökkentése miatt nem használtunk további IDE-vezérlőket. Ehelyett inkább jumperekkel úgy állítottuk be a lemezeket, hogy minden vezérlőre egy mester (master) és egy szolga (slave) módú merevlemez kapcsolódjon.
A beszerelés után beállítottuk a rendszer BIOS-át, hogy automatikusan felismerje a csatlakoztatott lemezeket. De ami még fontosabb, hogy a FreeBSD is észlelte ezeket az indítás során:
ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33 ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33 ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33 ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33
Megjegyzés: Ha a FreeBSD nem látná az összes lemezt, akkor ellenőrizzük a jumperek helyes beállítását. Napjainkban a legtöbb IDE-meghajtón találunk egy “Cable Select” jumpert is. Ezzel nem a mester/szolga módot állítjuk be! A megfelelő jumper beazonosításához olvassuk el a meghajtóhoz tartozó dokumentációt.
A következő lépésben azt vesszük nagyító alá, hogyan lehet ezeket az állományrendszer részévé tenni. Ezzel kapcsolatban a vinum(8) (21 fejezet) és a ccd(4) elolvasása ajánlatos. Erre a célra itt most a ccd(4) használatát választottuk.
A ccd(4) meghajtó segítségével több ugyanolyan lemezt tudunk összefűzni egyetlen logikai állományrendszerré. A ccd(4) használatához arra is szükségünk van, hogy a ccd(4) támogatása jelen legyen a rendszermagban. A következő sor tegyük bele a rendszermag konfigurációs állományába, fordítsuk újra és telepítsük a rendszermagot:
device ccd
A ccd(4) támogatása modulként is betölthető.
A ccd(4) beállításához először a bsdlabel(8) programmal meg fel kell címkéznünk a lemezeket:
bsdlabel -w ad1 auto bsdlabel -w ad2 auto bsdlabel -w ad3 auto
Így létrejön egy-egy BSD típusú címke a ad1c, ad2c és ad3c eszközökre, amely így lefedi a lemez egész területét.
Most pedig változtassuk meg a lemezcímke típusát. Ehhez használjuk ismét a bsdlabel(8) programot:
bsdlabel -e ad1 bsdlabel -e ad2 bsdlabel -e ad3
Az EDITOR környezeti változóban megadott szövegszerkesztővel (ez általában a vi(1)) megnyílik minden egyes lemezhez a jelenlegi lemezcímke.
Egy módosítatlan lemezcímke valahogy így néz ki:
8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)
A ccd(4) számára hozzunk létre
egy új e partíciót.
Ezt lényegében a c
partíció lemásolásával
keletkezik, de nála az fstype
(az
állományrendszer típusa) oszlopban
mindenképpen 4.2BSD
szerepeljen! A lemezcímke most már valahogy
így fog kinézni:
8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597) e: 60074784 0 4.2BSD 0 0 0 # (Cyl. 0 - 59597)
Most, miután felcímkéztük az összes lemezünket, lássunk neki a ccd(4) kiépítésének. Ezt a ccdconfig(8) meghívásával és az alábbihoz hasonló paraméterek átadásával tehetjük meg:
ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e
A paraméterek rövid leírása és használata:
A ccdconfig(8) futtatása után a ccd(4) beállítódik. Most már állományrendszert is rakhatunk rá. A newfs(8) man oldalról szedjük össze a szükséges paraméterezést, vagy egyszerűen csak gépeljünk be ennyit:
newfs /dev/ccd0c
A ccd(4) eszközt általában minden egyes indítás után használni akarjuk. Ennek eléréséhez először ezt be kell állítanunk. Az alábbi parancs kiadásával írassuk be a jelenlegi beállítasainkat tükröző /etc/ccd.conf állományt:
ccdconfig -g > /etc/ccd.conf
Az újraindítás során az /etc/rc parancs futtatja le a ccdconfig -C parancsot, ha az /etc/ccd.conf állomány létezik. Ez automatikusan beállítja a ccd(4) eszközöket, így ilyenkor tudjuk csatlakoztatni is ezeket.
Megjegyzés: Ha egyfelhasználós módban indítjuk a rendszert, mielőtt még a mount(8) paranccsal csatlakoztatni tudnánk a ccd(4) eszközt, a tömb beállításához meg kell hívnunk a következő parancsot:
ccdconfig -C
Ha a rendszerindításkor automatikusan csatlakoztatni akarjuk a ccd(4) eszközt, akkor az /etc/fstab állományba helyezzünk el egy hozzá tartozó bejegyzést:
/dev/ccd0c /media ufs rw 2 2
A Vinum kötetkezelő egy blokkos eszközmeghajtó, ami virtuális lemezes meghajtókat valósít meg. Elkülöníti a lemezes hardvereszközöket a blokkos eszközmeghajtók felületétől és a kettő között úgy képezi le az adatokat, hogy a hagyományos lemezes tárolással szemben megnövekedett rugalmasságot, teljesítményt és megbízhatóságot kapunk. A vinum(8) ismeri a RAID-0, RAID-1 és RAID-5 modelleket egyaránt, melyeket önmagukban és együttesen kombinálva is használhatunk.
A 21 fejezet bővebben ismerteti a vinum(8) rendszerét.
A FreeBSD rengeteg különböző típusú hardveres RAID-vezérlőt ismer. Ezek az eszközök a FreeBSD külön erre a célra szánt támogatása nélkül képesek vezérelni a RAID-alrendszert.
A rajta levő BIOS segítségével a kártya a legtöbb lemezműveletet egyedül kezeli. A következőkben egy Promise IDE RAID vezérlőt alkalmazó rendszert fogunk beállítani. Miután telepítettük a kártyát és indítjuk a rendszert, bekéri a szükséges információkat. Kövessük az utasításokat és lépjünk be a kártya beállító képernyőjére. Itt tudjuk kombinálni az összes csatlakoztatott meghajtónkat. Amikor ezzel a végeztünk, a lemezek egyetlen lemezként fognak a FreeBSD számára viselkedni. A többi RAID-szint is ehhez hasonlóan állítható be.
A FreeBSD lehetőséget a tömbben levő meghibásodott eszközök menet közben elvégezhető cseréjére. Ehhez arra van szükségünk, hogy még újraindítás előtt elcsípjük a hibát.
Hiba esetén valami hasonlót fogunk látni a /var/log/messages állományban vagy a dmesg(8) kimenetében:
ad6 on monster1 suffered a hard error. ad6: READ command timeout tag=0 serv=0 - resetting ad6: trying fallback to PIO mode ata3: resetting devices .. done ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\ status=59 error=40 ar0: WARNING - mirror lost
További információkat az atacontrol(8) programtól szerezhetünk:
# atacontrol list ATA channel 0: Master: no device present Slave: acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0 ATA channel 1: Master: no device present Slave: no device present ATA channel 2: Master: ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present ATA channel 3: Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present # atacontrol status ar0 ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED
A lemez biztonságos eltávolításához először válasszuk le (detach) a meghibásodott lemezhez tartozó csatornát:
# atacontrol detach ata3
Cseréljük ki a lemezt.
Csatlakoztassuk újra (attach) az ATA csatornát:
# atacontrol attach ata3 Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present
Tartalékként (spare) adjuk hozzá az új lemezt a tömbhöz:
# atacontrol addspare ar0 ad6
Szervezzük újra (rebuild) a tömböt:
# atacontrol rebuild ar0
A folyamat előrehaladását a következő parancs begépelésével tudjuk figyelni:
# dmesg | tail -10 [a kimenet többi része] ad6: removed from configuration ad6: deleted from ar0 disk1 ad6: inserted into ar0 disk1 as spare # atacontrol status ar0 ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed
Várjunk a művelet befejeződéséig.
Manapság már számos külső tárolóeszköz az USB (Universal Serial Bus) közvetítésével csatlakozik a számítógéphez: merevlemezek, pen drive-ok, CD-írók stb. A FreeBSD ezeket az eszközöket is ismeri.
A USB tárolóeszközöket kezelő meghajtó, az umass(4) felelős az USB alapú tárolóeszközök támogatásáért. Ha a GENERIC rendszermagot használjuk, akkor semmit sem kell változtatnunk. Ha saját rendszermagunk van, akkor gondoskodjunk róla, hogy a következő sorokat beraktuk a rendszermag beállításait tartalmazó állományba:
device scbus device da device pass device uhci device ehci device usb device umass
Az umass(4) meghajtó a SCSI alrendszeren keresztül éri el az USB tárolóeszközöket, tehát az USB eszközeinket a rendszer SCSI eszközként látja. Az alaplapon található USB chipkészlet típusától függően vagy csak a device uhci, vagy USB 1.X esetén pedig a device ohci bejegyzésre lesz szükségünk. De abból sem származik kárunk, ha mind a kettőt meghagyjuk. Az USB 2.0 szabványú vezérlőket a ehci(4) meghajtó (device ehci) támogatja. Ha módosítani kellett a konfigurációs állományt, akkor ne felejtsük el újrafordítani és telepíteni sem a rendszermagot.
Megjegyzés: Ha az USB eszközünk egy CD- vagy DVD-író, akkor a következő sorral a SCSI CD-meghajtók meghajtóját, a cd(4) eszközt kell beépítenünk a rendszermagba:
device cdMivel az író is SCSI eszközként látszik, ezért az atapicam(4) nem szerepelhet a rendszermag beállításai között.
A beállításaink készen állnak a kipróbálásra: csatlakoztassuk a számítógéphez az USB eszközünket és a rendszerüzeneteket tároló pufferben (dmesg(8)) hamarosan meg is jelenik a hozzá tartozó meghajtó:
umass0: USB Solid state disk, rev 1.10/1.00, addr 2 GEOM: create disk da0 dp=0xc2d74850 da0 at umass-sim0 bus 0 target 0 lun 0 da0: <Generic Traveling Disk 1.11> Removable Direct Access SCSI-2 device da0: 1.000MB/s transfers da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C)
Természetesen a gyártóra, márkára, az eszköz leírójára (da0) és egyebekre vonatkozó részletek eltérhetnek.
Mivel az USB eszköz SCSI eszközként látszik, ezért a camcontrol parancs használható a rendszerhez csatlakoztatott USB tárolóeszközök listázásához:
# camcontrol devlist <Generic Traveling Disk 1.11> at scbus0 target 0 lun 0 (da0,pass0)
Ha a meghajtón állományrendszer is található, akkor képesek vagyunk csatlakoztatni. A 18.3 Szakasz elolvasása segíthet az USB meghajtón partíciókat kialakítani és formázni, amennyiben szükséges.
Figyelem: A rendszer biztonsága szempontjából nem tekinthető megbízhatónak, ha olyan felhasználók számára is engedélyezzük tetszőleges meghajtók csatlakoztatását (például a vfs.usermount engedelyézesével), amelyekben nem bízunk meg. A FreeBSD által támogatott állományrendszerek döntő többsége nem nyújt védelmet a káros szándékkal telepített eszközök ellen.
Ha az eszközt normál felhasználókkal is csatlakoztathatóvá akarjuk tenni, akkor további lépések megtételére is szükségünk lesz. Először is a felhasználóknak valahogy el kell tudniuk érniük az USB tárolóeszköz csatlakoztatásakor keletkező eszközöket. Ezt úgy tudjuk megoldani, ha az érintett felhasználókat felvesszük az operator csoportba. Ebben a pw(8) lehet a segítségünkre. Másodsorban amikor ezek az eszközök létrejönnek, az operator csoportnak tudniuk kell ezeket olvasniuk és írniuk. Ezt úgy tudjuk megvalósítani, ha felvesszük a következő sorokat az /etc/devfs.rules állományba:
[localrules=5] add path 'da*' mode 0660 group operator
Megjegyzés: Ha viszont vannak SCSI lemezeink is rendszerben, akkor a helyzet egy kicsit megváltozik. Tehát például a rendszerben már eleve vannak da0, da1 és da2 néven lemezek, akkor a második sort ennek megfelelően változtassuk meg:
add path 'da[3-9]*' mode 0660 group operatorEzzel kizárunk minden, korábban már létező lemezt az operator csoportból.
Emellett még az /etc/rc.conf állományban engedélyeznünk kell a saját devfs.rules(5) szabályrendszerünket is:
devfs_system_ruleset="usb_rules"
Ezt követően be kell állítanunk a rendszermagban, hogy a hagyományos felhasználók képesek legyenek állományrendszereket csatlakoztatni. Ezt a legkönnyebb úgy tudjuk megtenni, ha az /etc/sysctl.conf állományba felvesszük a következő sort:
vfs.usermount=1
Azonban ne felejtsük el, hogy ez csak a rendszer következő indításától él. De a sysctl(8) parancs használatával is beállíthatjuk ezt az értéket.
Az utolsó lépésben hozzunk létre egy könyvtárat az állományrendszer csatlakoztatásához. Ezt a könyvtárat az a felhasználó fogja birtokolni, aki az állományrendszert csatlakoztatnia akarja. Ez például root felhasználóként úgy tudjuk megtenni, ha a felhasználónak létrehozunk egy könyvtárat /mnt/felhasználó néven (ahol a felhasználó nevet cseréljük a tényleges felhasználó nevére, a csoport nevet pedig a felhasználóhoz tartozó elsődleges csoport nevére):
# mkdir /mnt/felhasználó # chown felhasználó:csoport /mnt/felhasználó
Most tegyük fel, hogy csatlakoztatnuk egy USB pen drive-ot és ennek megfelelően megjelenik a /dev/da0s1 eszköz. Mivel az ilyen eszközökre általában gyárilag FAT állományrendszert tesznek, ezért így kell ezeket csatlakoztatni a mount(8) paranccsal:
% mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/felhasználó
Ha leválasztjuk az eszközt (miután kiadtuk a umount(8) parancsot), akkor a rendszerüzenetek között valami ilyesmit fogunk látni:
umass0: at uhub0 port 1 (addr 2) disconnected (da0:umass-sim0:0:0:0): lost device (da0:umass-sim0:0:0:0): removing device entry GEOM: destroy disk da0 dp=0xc2d74850 umass0: detached
A Lemezek hozzáadása és az Állományrendszerek csatlakoztatása és leválasztása című szakaszok elolvasása mellett a következő man oldalakat is ajánljuk: umass(4), camcontrol(8) és usbconfig(8) FreeBSD 8.X esetében, vagy usbdevs(8) a FreeBSD korábbi változatainál.
A CD-k számos lehetőségünkben eltérnek a hagyományos lemezektől. Kezdetben a felhasználók nem is voltak képesek írni ezeket. Olyannak tervezték, hogy a fejek sávok közti mozgásából fakadó késleltetés nélkül lehessen folyamatosan olvasni. A szállítása a maga idejében sokkal könnyebb volt minden vele egyforma méretű eszköznél.
A CD-ken is találhatunk sávokat, azonban ez csak a folyamatosan olvasható adat egy szakaszát jelenti, nem pedig a lemez fizikai tulajdonságát. Ha FreeBSD-n akarunk CD-t készíteni, akkor ehhez először össze kell állítanunk a CD egyes sávjaira kerülő adatokat és ezután rögzíteni ezeket a sávokat a CD-n.
Az ISO 9660 állományrendszert úgy tervezték, hogy megbirkózzon ezekkel az eltérésekkel. Sajnos ezzel együtt kőbe vésték az állományrendszerek akkoriban érvényes korlátozásait is. Szerencsére lehetőséget ad bővítésre, ezáltal a helyesen megírt CD-k képesek úgy átlépni ezeket a határokat, hogy közben az általuk alkalmazott kiterjesztéseket nem ismerő rendszerekkel is együtt tudnak működni.
A sysutils/cdrtools port tartalmaz egy mkisofs(8) nevű programot, amellyel létre tudunk hozni ISO 9660 típusú állományrendszert tartalmazó adatállományt. Többféle kiterjesztést is ismer, amit majd a lentebb ismertett opciókkal érhetünk el.
A CD írásához használt konkrét segédeszköz attól függ, hogy ATAPI vagy esetleg másmilyen írónk van. Az ATAPI CD-írók az alaprendszer részeként elérhető burncd programon keresztül használhatóak. A SCSI és USB CD-írók esetén pedig a sysutils/cdrtools portban megtalálható cdrecord programot használhatjuk. Az ATAPI/CAM modul segítségével a cdrecord és más SCSI-írókra készült programokat is tudunk használni ATAPI hardvereken.
Ha a CD-író szoftverünket grafikus felhasználói felületen keresztül szeretnénk használni, akkor az X-CD-Roast vagy a K3b alkalmazásokat érdemes szemügyre vennünk. Ezek az eszközök elérhetőek csomagként vagy a sysutils/xcdroast és sysutils/k3b portokból. ATAPI hardver esetén az X-CD-Roast és a K3b alkalmazások használatához szükségünk lesz az ATAPI/CAM modulra.
A sysutils/cdrtools port részeként elérhető mkisofs(8) program képes a UNIX típusú állományrendszer könyvtárszerkezete alapján egy ISO 9660 típusú állományrendszert tartalmazó image-et készíteni. Legegyszerűbb módon így használhatjuk:
# mkisofs -o image.iso /az/elérési/út
Ezzel a paranccsal egy olyan image.iso nevű állományt hozunk létre, amely /az/elérési/út által megadott helyen található könyvtárszerkezetet mintázza ISO 9660 állományrendszer formájában. A folyamat során minden olyan állományt leképez szabványos ISO 9660 állományrendszerbeli névre, amely megfelel a szabvány elvárásainak, és kihagy minden olyan állományt, amely nem jellemző az ISO állományrendszerekre.
Számos opció lehet
segítségünkre az ilyenkor felbukkanó
akadályok leküzdésében. Ezek
közül különösen fontos az
-R
, amely a UNIX rendszerek
számára megszokott Rock Ridge
kiterjesztéseket, valamint a -J
, amely a
Microsoft rendszerekben használt Joliet
kiterjesztéseit, és végül a
-hfs
, amely a Mac OS alatt létrehozott
HFS állományrendszerek kiterjesztéseit
engedélyezi.
A kizárólag csak FreeBSD rendszereken
használt CD-k esetében a -U
megadásával kapcsolhatjuk ki az
állománynevek mindenféle
korlátozását. Az -R
beállítás használatával olyan
állományrendszer képét hozzuk
létre, amely teljesen megegyezik a parancsban megadott
könyvtárból induló fa
tartalmával, habár több módon is
sérti az ISO 9660 szabvány
előírásait.
Az utolsó általános jelleggel
használható beállítás a
-b
. Ezzel lehet megadni az “El
Torito” szabványnak megfelelő
rendszerindító CD
készítéséhez szükséges
rendszerindító image
elérését. Ennél a
beállításnál tehát meg kell
adni a rendszerindításhoz használt lemez
image-ét, amely a CD tartalmát magában
foglaló könyvtárszerkezetben
található valahol. A mkisofs(8)
alapértelmezés szerint egy ún.
“floppy emulációs” módban
hozza létre az ISO image-et, ezért a
rendszerindításhoz használatos lemez
image-ének pontosan 1200, 1440 vagy 2880 KB
méretűnek kell lennie. Egyes
rendszerbetöltők, mint amilyen például a
FreeBSD terjesztéséhez használt lemezeken
található, nem használják ezt az
emulációt. Ilyen helyzetekben a
-no-emul-boot
kapcsolót kell megadni.
Tehát ha a
/tmp/sajátboot
könyvtárban van egy indítható FreeBSD
rendszerünk, amelyben a
/tmp/sajátboot/boot/cdboot
a rendszerindító lemez image-e, akkor egy
/tmp/indítható.iso
nevű ISO 9660 formátumú
állományrendszert tartalmazó image-et
például így tudunk
elkészíteni:
# mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/indítható.iso /tmp/sajátboot
Miután ezt megtettük, és a rendszermagunkban benne van az md eszköz támogatása, csatlakoztathatjuk is az állományrendszert:
# mdconfig -a -t vnode -f /tmp/indítható.iso -u 0 # mount -t cd9660 /dev/md0 /mnt
Ezután már össze tudjuk vetni az /mnt és /tmp/sajátboot könyvtárak egyezőségét.
A mkisofs(8) viselkedését több más opcióval tudjuk finomhangolni, mint például az ISO 9660 kiosztás módosítása vagy a Joliet és HFS lemezek készítése. A mkisofs(8) man oldalon mindezekről bővebben olvashatunk.
Ha ATAPI CD-írónk van, akkor a burncd paranccsal írhatjuk az ISO image-et a lemezre. A burncd az alaprendszer része, és /usr/sbin/burncd néven érhető el. A használata igen egyszerű, csupán pár paramétere van:
# burncd -f eszköz data image.iso fixate
Ezzel a paranccsal rámásoljuk az image.iso állományt az eszköz eszközre. Az alapértelmezett eszköz a /dev/acd0. A burncd(8) man oldalán találjuk meg az írási sebességgel, a CD írás utáni kiadásával és az audio lemezek írásával kapcsolatos beállításokat.
Ha nincs ATAPI CD-írónk, akkor az íráshoz a cdrecord parancsot kell használnunk. A cdrecord nem az alaprendszer része: vagy a sysutils/cdrtools portból vagy a neki megfelelő csomagból kell telepítenünk. Az alaprendszerben végbemenő változások miatt a program bináris változatai hibázhatnak, aminek következtében csak “poháralátéteket” fogunk tudni gyártani. Ezért a rendszerrel együtt érdemes frissíteni ezt a portot is. Vagy ha a -STABLE verziót használjuk, akkor mindig érdemes a port elérhető legújabb verziójára frissíteni.
Miközben a cdrecord számos paraméterrel rendelkezik, az alapvető használata mégis egyszerűbb a burncd parancsénál. Egy ISO 9660 formátumú image-et ugyanis a következő módon tudunk felírni lemezre:
# cdrecord dev=eszköz image.iso
A cdrecord használatának
trükkös része a megfelelő eszköz
megtalálása, tehát a dev
beállítás helyes megadása. Ehhez
használjuk a cdrecord
-scanbus
paraméterét, amely az
alábbihoz hasonló eredményt fog
produkálni:
# cdrecord -scanbus Cdrecord-Clone 2.01 (i386-unknown-freebsd7.0) Copyright (C) 1995-2004 Jörg Schilling Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk 0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk 0,2,0 2) * 0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk 0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM 0,5,0 5) * 0,6,0 6) * 0,7,0 7) * scsibus1: 1,0,0 100) * 1,1,0 101) * 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM 1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner 1,7,0 107) *
Itt felsorolásra kerülnek a dev
beállítás értékeként
felhasználható eszközök. Keressük
meg köztük a CD írónkat és a
dev
értékének a
három vesszővel elválasztott számot
adjuk meg. Ebben az esetben a CD-író eszköz
most az 1,5,0 lesz, tehát itt a helyes
paraméterezés dev=1,5,0
. Ezt az
értékét könnyebben is meg lehet adni.
Ennek részleteiről a cdrecord(1) man
oldalán olvashatunk. Abban az esetben is érdemes
fellapoznunk, ha az audio sávok
írásáról, az írási
sebesség korlátozásáról vagy
más hasonló dolgokról akarunk
olvasni.
Audio CD-t úgy tudunk másolni, ha először állományok sorozatába mentjük a lemez tartalmát, majd ezeket az állományokat egy üres CD-re írjuk. Ennek konkrét folyamata azonban némileg eltér az ATAPI- és SCSI-meghajtók használata során.
SCSI-meghajtók esetén
A cdda2wav programmal mentsük le a lemez tartalmát.
% cdda2wav -vall -D2,0 -B -Owav
A cdrecord paranccsal írjuk fel a .wav kiterjesztésű állományokat.
% cdrecord -v dev=2,0 -dao -useinfo *.wav
Gondoskodjunk róla, hogy a 2,0 értéket a 18.6.4 Szakasznak megfelelően helyesen állítottuk be.
ATAPI-meghajtók esetén
Megjegyzés: Az ATAPI/CAM modul segítségével a cdda2wav parancs ATAPI meghajtókkal is használható. Ez a megoldás általában kedvezőbb (a hibák és bytesorrend ügyesebb kezelése, stb.) a legtöbb felhasználó számára, mint az itt ismertetett.
Az ATAPI CD meghajtója az egyes sávokat /dev/acddtnn néven teszi elérhetővé, ahol a d a meghajtó sorszáma, a nn a sáv két számjeggyel kiírt sorszáma, amelyet szükség szerint balról nullával egészítenek ki. Így tehát az első meghajtó első sávja a /dev/acd0t01, a második a /dev/acd0t02, a harmadik a /dev/acd0t03 és így tovább.
Ellenőrizzük, hogy ezek az eszközök jelen vannak a /dev könyvtárban. Amennyiben hiányoznának, kényszerítsük ki a lemez újbóli beolvasását:
# dd if=/dev/acd0 of=/dev/null count=1
Szedjük le az egyes sávokat a dd(1) használatával. A parancs kiadásakor meg kell adnunk egy blokkméretet is:
# dd if=/dev/acd0t01 of=track1.cdr bs=2352 # dd if=/dev/acd0t02 of=track2.cdr bs=2352 ...
A burncd használatával írjuk fel a lemezre az imént lementett állományokat. Meg kell adnunk, hogy ezek audio állományok, és hogy a burncd a munka befejeztével zárja le (fixate) a lemezt.
# burncd -f /dev/acd0 audio track1.cdr track2.cdr ... fixate
Az adatot tartalmazó CD-ket le tudjuk másolni egy olyan image-be, amely funkcionálisan megegyezik egy mkisofs(8) által létrehozott image-dzsel és amivel le tudunk másolni bármilyen adat CD-t. Az itt megadott példa azt feltételezi, hogy a CD-meghajtónk neve acd0. Helyére a saját CD-meghajtónk nevét kell behelyettesíteni.
# dd if=/dev/acd0 of=állomány.iso bs=2048
Most miután lementettük az image-et, írjuk fel CD-re a fentiek szerint.
Most, hogy már készítettünk egy szabványos adat CD-t, valószínűleg szeretnénk is valamilyen csatlakoztatni és elérni a rajta levő adatokat. Alapértelmezés szerint a mount(8) mindig azt feltételezi, hogy az állományrendszerek ufs típusúak. Ezért ha valami ilyesmivel próbálkozunk:
# mount /dev/cd0 /mnt
akkor egy “Incorrect super block”
szövegű hibaüzenetet lesz a jutalmunk, és
természetesen nem tudjuk csatlakoztatni a CD-t. Mivel a
CD nem UFS állományrendszert
tartalmaz, ezért az ilyen jellegű
kísérleteink mind kudarcba fognak fulladni.
Valahogy fel kell világosítanunk a mount(8)
parancsot arról, hogy itt most egy
ISO9660 típusú
állományrendszert akarunk csatlakoztatni,
és akkor minden a helyére kerül. Ezt
úgy tudjuk megtenni, ha a mount(8) parancsnak
megadjuk a -t cd9660
paramétert.
Például, ha a /dev/acd0
néven elérhető CD-meghajtóban
levő lemezt akarjuk a /mnt
könyvtárba csatlakoztatni, akkor ezt kell
begépelnünk:
# mount -t cd9660 /dev/cd0 /mnt
Vegyük észre, hogy az eszköz neve (ez ebben
a példában most /dev/cd0)
lehet más is attól függően, hogy milyen
csatolófelületet használ a
CD-meghajtónk. Sőt, a -t cd9660
valójában csak a mount_cd9660(8) parancsot
indítja el. Ennek tükrében tehát az
előbbi példát így
rövidíthetjük le:
# mount_cd9660 /dev/cd0 /mnt
Ezen a módon bármilyen
gyártmányú adat CD-t képesek vagyunk
csatlakoztatni. Egyes ISO 9660 kiterjesztéseket
használó lemezek azonban esetleg furcsán
működhetnek. Például Joliet lemezek az
összes állomány nevét
kétbyte-os Unicode karakterben tárolják. A
FreeBSD rendszermagja ugyan nem beszéli a Unicode-ot, de a
FreeBSD CD9660 meghajtója képes menetközben
átkonvertálni a Unicode karaktereket. Ha bizonyos
nem angol karakterek kérdőjelekként
jelennének meg, akkor a -C
beállítás használatával
még egy helyi kódlapot is meg kell adnunk. Ezzel
kapcsolatban bővebb
tájékoztatásért forduljunk a
mount_cd9660(8) man oldalhoz.
Megjegyzés: A
-C
beállítás segítségével csak akkor lesz képes a rendszermag elvégezni ezt az átalakítást, ha előtte betöltjük a cd9660_iconv.ko modult. Ezt megtehetjük úgy, hogy ha felvesszük a következő sort a loader.conf állományba:cd9660_iconv_load="YES"Indítsuk újra a számítógépünket, vagy közvetlenül töltsük be a modult a kldload(8) használatával.
Estenként előfordulhat, hogy kapunk egy “Device not configured” hibaüzenetet a CD-k csatlakoztatásakor. Ez általában arra utal, hogy a CD-meghajtó nem érzékeli a berakott lemezt, vagy éppen a meghajtó nem látható a buszon. A CD-meghajtók esetében pár másodpercig eltarthat, amíg felismeri a berakott lemezt, ilyenkor mindig legyünk türelemmel.
Néha a SCSI CD-meghajtó nem látható, mert nem volt elég ideje válaszolni busz újraindítása előtt. Ha SCSI CD-meghajtónk van, akkor a következő beállítást tegyük hozzá a rendszermagunk konfigurációjához és fordítsuk újra a rendszermagukat.
options SCSI_DELAY=15000
Ezzel utasítjuk a SCSI buszunkat egy 15 másodperces várakozásra a rendszer indítása során, és így ezzel elég esélyt adunk arra, hogy a CD-meghajtó válaszolni tudjon a busz újraindítása előtt.
Írhatunk közvetlenül is állományokat a CD-re, ISO 9660 formátumú állományrendszer használata nélkül. Sokan így oldják meg a mentést. Ezt sokkal gyorsabban lebonyolítható egy szabványos CD esetében:
# burncd -f /dev/acd1 -s 12 data archive.tar.gz fixate
Az ezen a módon megírt CD-ket szintén nyers módon kell olvasnunk:
# tar xzvf /dev/acd1
Az ilyen lemezeket nem tudjuk a normális CD-khez hasonlóan csatlakoztatni. Sőt, az ilyen CD-ket csak FreeBSD alatt tudjuk olvasni. Ha csatlakoztathatóvá akarjuk tenni a lemezt, vagy más operációs rendszerek alól is szeretnénk olvasni, akkor erre a célra a fentebb bemutatott mkisofs(8) parancsot kell használnunk.
Ez a meghajtó lehetővé teszi az ATAPI eszközök (CD-ROM, CD-RW, DVD meghajtók stb...) számára, hogy a SCSI alrendszeren keresztül legyenek elérhetőek, így esetünkben is használhatóvá válnak olyan alkalmazások, mint például sysutils/cdrdao vagy a cdrecord(1).
A meghajtó használatához a következő sort kell a /boot/loader.conf állományba illeszteni:
atapicam_load="YES"
Indítsuk újra a számítógépet.
Megjegyzés: Amennyiben a rendszermagban az atapicam(4) statikus támogatását szeretnénk használni, úgy a következő sort kell a rendszermag konfigurációs állományába felvenni:
device atapicamTovábbá a következő sorokra lesz még szükségünk:
device ata device scbus device cd device passEzeknek már eleve ott kell szerepelnie. Ezután fordítsuk újra és telepítsük a rendszermagot, majd indítsuk újra a számítógépet.
A rendszer indulásakor az írónak ehhez hasonló módon kell megjelennie:
acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4 cd0 at ata1 bus 0 target 0 lun 0 cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device cd0: 16.000MB/s transfers cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed
A meghajtó most már elérhető a /dev/cd0 eszközön keresztül, és például ennyi begépelésével csatlakoztatni tudunk róla egy CD-t a /mnt könyvtárba:
# mount -t cd9660 /dev/cd0 /mnt
root felhasználóként a következő paranccsal tudjuk lekérdezi az író SCSI címét:
# camcontrol devlist <MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0)
Eszerint a 1,0,0 lesz az eszköz SCSI címe, amelyet a cdrecord(1) és más SCSI alkalmazások esetén adunk meg.
Az ATAPI/CAM és SCSI rendszerek tekintetében olvassuk el az atapicam(4) és cam(4) man oldalakat.
A DVD a CD-hez képest a lézeres tárolóeszközök technológiájának újabb generációját képviseli. A DVD bármelyik CD-nél több adatot képes tárolni és napjaink ez a videók kiadásának szabványa.
Öt fizikailag írható formátummal határozhatjuk meg az írható DVD fogalmát:
DVD-R: Ez volt az első elérhető írható DVD formátum. A DVD-R szabványát a DVD Fórum fektette le. Ez a formátum csak egyszer írható.
DVD-RW: Ez a DVD-R szabvány újraírható változata. A DVD-RW körülbelül 1000 alkalommal írható újra.
DVD-RAM: Ez is a DVD Fórum által támogatott újraírható formátum. A DVD-RAM cserélhető merevlemeznek látzsik. Azonban ez típusú adathordozó nem kompatibilis legtöbb DVD-ROM hajtóval és DVD-Video lejátszóval. Csupán csak néhány DVD-író ismeri a DVD-RAM formátumot. A DVD-RAM használatáról a 18.7.9 Szakaszban találunk bővebben információkat.
DVD+RW: Ezt az újraírható formátumot a DVD+RW szövetség alkotta meg. A DVD+RW lemezek nagyjából 1000 alkalommal írhatóak újra.
DVD+R: Ez a formátum a DVD+RW formátum egyszer írható változata.
Az egyrétegű írható DVD-k összesen 4 700 000 000 byte-ot képesek rögzíteni, ami 4,38 GB vagy 4 485 MB (1 kilobyte itt 1024 byte).
Megjegyzés: Meg kell különböztetnünk fizikai tárolóeszközt és az alkalmazást. Például a DVD-Video állományok olyan jellegű elrendezését írja elő, ami bármelyik írható fizikai DVD eszközön megjelenhet: DVD-R, DVD+R, DVD-RW stb. Mielőtt kiválasztanánk az eszköz típusát, biztosnak kell lennünk benne, hogy az író és a DVD-Video lejátszó (ez lehet egy önálló lejátszó vagy egy számítógép DVD-ROM meghajtója) kompatibilis a szóbanforgó lemezzel.
A growisofs(1) programot fogjuk a DVD rögzítésére használni. Ez a program a dvd+rw-tools segédprogramok (sysutils/dvd+rw-tools) gyűjteményének része. A dvd+rw-tools az összes DVD médium típusát ismeri.
Ezek a segédprogramok a SCSI alrendszeren keresztül érik az eszközöket, ezért a használhatukhoz a rendszermagban szükségünk lesz az ATAPI/CAM támogatásra. Ha az írónk USB felületen csatlakozik, akkor mindez szükségtelen, és ehelyett a 18.5 Szakaszt kell elolvasnunk az USB eszközök beállításához.
Engedélyeznünk kell az ATAPI eszközök DMA hozzáférését is, amit a /boot/loader.conf állományban a következő sor hozzáadásával tudunk megtenni:
hw.ata.atapi_dma="1"
A dvd+rw-tools használatának megkezdése előtt a DVD-írónkkal kapcsolatban érdemes átolvasnunk a dvd+rw-tools hardverkompatibilitási jegyzeteit (angolul).
Megjegyzés: Ha grafikus felületet szeretnénk használni, akkor érdemes egy pillanatást vetnünk a K3bre (sysutils/k3b), amely egy felhasználóbarát felületet ad a growisofs(1) és sok más íróprogram felé.
A growisofs(1) a mkisofs parancs előlapja, tehát az állományrendszer létrehozásához a mkisofs(8) programot fogja meghívni és ezt írja fel a DVD-re. Ez azt jelenti, hogy az írási folyamat megkezdése előtt nem kell semmilyen image-et létrehoznunk.
A /az/elérési/út könyvtárból a következő paranccsal tudjuk kiírni az adatokat DVD+R vagy DVD-R lemezre:
# growisofs -dvd-compat -Z /dev/cd0 -J -R /az/elérési/út
A -J -R
beállítások a
mkisofs(8) programhoz kerülnek át az
állományrendszer létrehozásakor (itt
most egy ISO 9660 állományrendszert hozunk
létre, Joliet és Rock Ridge
kiterjesztésekkel), használatának
részleteit lásd mkisofs(8).
A -Z
beállítást a
kezdőmenetek létrehozásakor
használjuk: több menetben akarjuk írni a
lemezt vagy sem. A DVD eszközt, amely itt most a
/dev/cd0, a saját
konfigurációnknak megfelelően kell megadni.
A -dvd-compat
paraméterrel
lezárjuk a lemezt, így ezután
további írás már nem
lehetséges. Ezért cserébe jobb
kompatibilitást kapunk a DVD-ROM
meghajtókkal.
Előre legyártott image-dzsel is dolgozhatunk, tehát például, ha az image.iso állományt akarjuk kiírni, akkor ezt kell lefuttatnunk:
# growisofs -dvd-compat -Z /dev/cd0=image.iso
Az írási sebességet
magától beállítja a lemez és
meghajtó képességeinek megfelelően.
Az írási sebesség
felülbírálásához
használjuk a -speed=
paramétert.
A paraméterek lehetőségeiről a
growisofs(1) man oldaláról tudhatunk meg
többet.
Megjegyzés: 4,38 GB-nál több adat írásához egy hibrid UDF/ISO-9660 típusú állományrendszert kell létrehoznunk. Ezt úgy tudjuk elérni, ha mkisofs(8) és a többi hasonló program (például growisofs(1)) hívásakor még hozzátesszük az
-udf -iso-level 3
paramétereket. Ezekre csak lemezképek készítésekor vagy az állományok közvetlen lemezre írásakor van szükségünk. Az így létrehozott lemezeket a mount_udf(8) segédprogram segítségével UDF állományrendszerként tudjuk csatlakoztatni. Ezért csak olyan operációs rendszereken használható, amelyek ismerik ezt a formátumot, ellenkező esetben csak hibás állományokat fogunk látni a lemezen.Példa ilyen lemezkép létrehozására:
# growisofs -dvd-compat -udf -iso-level 3 -Z /dev/cd0 -J -R /az/új/adat/helyeHa a lemezkép már eleve nagyobb méretű állományokat tartalmaz, a lemez írásakor a growisofs(1) programnak már nem kell további paramétereket átadnunk.
Lehetőleg mindig a sysutils/cdrtools legfrissebb verzióját használjuk (amely a mkisofs(8) programot is tartalmazza), mivel a régebbi verziók nem támogatják a nagyobb méretű állományokat. Ha problémák adódnak a programok használata során, akkor próbálkozzunk a fejlesztői változattal (sysutils/cdrtools-devel) és olvassuk el a mkisofs(8) man oldalát.
A DVD-Video az állományok speciális szervezésére utal, amely az ISO 9660 és az mikró UDF (M-UDF) specifikációkon alapszik. A DVD-Video emellett egy adott adatszerkezeti hierarchiát is takar, ezért kell egy külön programmal, például a multimedia/dvdauthor segítségével összeállítani egy DVD-t.
Ha már a birtokunkban van egy DVD-Video állományrendszer képe, akkor az eddigiek szerint egyszerűen csak írjuk fel egy lemezre, ahogy azt az előző szakaszban is láthattuk. Ha összeállítottuk a DVD anyagát és például a /a/videó/elérési/útja könyvtárba raktuk, akkor a következő paranccsal írathatjuk ki a DVD-Video formátumú lemezt:
# growisofs -Z /dev/cd0 -dvd-video /a/videó/elérési/útja
A -dvd-video
paramétert kell
átadni a mkisofs(8) programnak, amelynek
hatására létrehoz egy DVD-Video
formátumú állományrendszert.
Emellett a -dvd-video
beállítás maga után vonja a
growisofs(1) -dvd-compat
beállítását is.
Eltérően a CD-RW-től, egy érintetlen DVD+RW-t az első használat előtt meg kell formázni. A growisofs(1) program erről az első adandó alkalommal gondoskodik, és ez az ajánlott. Azonban a DVD+RW formázására használhatjuk a dvd+rw-format parancsot is:
# dvd+rw-format /dev/cd0
Ezt a műveletet csak egyszer kell elvégezni, hiszen ne feledjük, hogy csak a szűz DVD+RW lemezeket kell megformázni. Ezután a DVD+RW-t a korábbi szakaszoknak megfelelően tudjuk írni.
Ha a DVD+RW-re új adatot akarunk írni (egy teljesen új állományrendszert, nem pedig adatokat hozzáfűzni), akkor nem kell üressé tenni a lemezt, egyszerűen csak elegendő felülírni az előzőeket (egy új kezdőmenet létrehozásával) valahogy így:
# growisofs -Z /dev/cd0 -J -R /az/új/adat/helye
A DVD+RW formátum felajánlja annak lehetőségét is, hogy könnyedén hozzá lehessen fűzni adatokat az előző íráshoz. A művelet során az új menetet összefűzi a meglévővel, tehát ez nem egy többmenetes írás, hanem a growisofs(1) megnöveli a lemezen található ISO 9660 állományrendszert.
Például, ha egy korábban megírt DVD+RW lemezen levő adatokhoz akarunk hozzáírni, akkor a következő parancsot kell kiadnunk:
# growisofs -M /dev/cd0 -J -R /az/új/adat/helye
A mkisofs(8) beállításainál a kezőmenetnél megadottakat érdemes ismét megadni.
Megjegyzés: Ha kompatibilisek akarunk maradni a többi DVD-meghajtóval, akkor adjuk meg
-dvd-compat
paramétert. Ez a DVD+RW esetében annyit jelent, hogy nem tudunk további adatokat hozzáfűzni.
Ha valamilyen okból mégis üressé szeretnénk tenni a lemez, akkor ír járhatunk el:
# growisofs -Z /dev/cd0=/dev/zero
A DVD-RW két lemezformátumot fogad el: a inkrementális soros hozzáférést és a korlátozott felülírást. Alapértelmezés szerint a DVD-RW lemezek soros elérésűek.
A még fel nem használt DVD-RW lemezek közvetlenül írhatóak külön formázás nélkül, habár a korábban már soros formátumban használt DVD-RW lemezeket egy új kezdőmenet létrehozása előtt üressé kell tenni.
Soros módban így kell letörölni egy DVD-RW lemezt:
# dvd+rw-format -blank=full /dev/cd0
Megjegyzés: A teljes törlés (
-blank=full
) egy 1x média esetén körülbelül egy órát vesz igénybe. A-blank
beállítással egy gyorsított törlés zajlik le, amennyiben a DVD-RW lemezt Disk-At-Once (DAO) módban írjuk. A DVD-RW lemezeket az alábbi paranccsal tudjuk DAO módban írni:# growisofs -use-the-force-luke=dao -Z /dev/cd0=image.isoA
-use-the-force-luke=dao
beállítást nem kötelező megadni, mivel a growisofs(1) igyekszik a lehető leggyorsabban törölni a lemezt és megkezdeni a DAO módú írást.A DVD-RW esetében valójában a korlátozott felülírást lenne érdemes használnunk, mivel ez a formátum sokkal rugalmasabb az alapértelmezés szerint felkínált inkrementális soros elérésnél.
A soros DVD-RW lemezekre ugyanúgy tudunk adatokat rögzíteni, mint az összes többi formátum esetében:
# growisofs -Z /dev/cd0 -J -R /az/adat/helye
Ha az előző íráshoz akarunk
még hozzáfűzni adatokat, akkor ehhez a
growisofs(1) -M
beállítását kell használnunk.
Azonban ha a DVD-RW lemezhet inkrementális soros
módban adunk hozzá adatot, akkor ezzel egy
új menetet hozunk létre a lemezen és
így egy többmenetes lemezt kapunk.
A korlátozott felülírású
DVD-RW formátum használata esetén nem kell
mindegyik kezdőmenet előtt törölni a lemezt,
egyszerűen csak felül kell írni a
-Z
beállítással,
hasonlóan a DVD+RW esetéhez. A DVD+RW
-M
beállításához
hasonlóan lehetőségünk van a lemezen
található ISO 9660 formátumú
állományrendszer növelésére.
Ennek az eredménye egy egymenetes DVD.
A következő paranccsal tudjuk a DVD-RW lemezt korlátozott felülírású módba tenni:
# dvd+rw-format /dev/cd0
Így tudunk visszaváltani a soros formátum használatára:
# dvd+rw-format -blank=full /dev/cd0
Nagyon kevés DVD-ROM meghajtó ismeri a többmenetes DVD-ket, és legtöbbször is csak általában az első menetet olvassák. A DVD+R, DVD-R és DVD-RW formátumok soros formátumban képesek több mentetet is befogadni, viszont a DVD+RW és DVD-RW korlátozott felülírású formátuma esetén nem létezik több menet.
Az alábbi parancs egy újabb menetet ad hozzá egy megkezdett (le nem zárt) DVD+R, DVD-R vagy DVD-RW soros formátumú lemezhez:
# growisofs -M /dev/cd0 -J -R /az/új/adat/helye
Ha ezt a parancsot egy korlátozott felülírású DVD+RW vagy DVD-RW lemez esetén adjuk ki, akkor az új adatokat úgy fűzi hozzá, hogy egy új menetet összefésüli a meglévővel. Ezzel egy egymenetes lemez keletkezik. Ilyenkor így bővítik a megkezdett lemezeket.
Megjegyzés: A menetek kezdése és befejezése általában felhasznál valamennyi helyet a lemezen. Ezért úgy tudjuk optimalizálni a lemez helykihasználtságát, hogy kevés menetben sok adatot viszünk fel rá. A DVD+R esetén 154, a DVD-R-nél körülbelül 2000, és a dupla rétegű DVD+R lemezeknél 127 menetet tudunk létrehozni.
A DVD lemezről részletesebb információkat a dvd+rw-mediainfo /dev/cd0 parancs kiadásával tudunk lekérdezni.
A dvd+rw-tools használatáról a growisofs(1) man oldalon találunk információt, valamint a dvd+rw-tools honlapján (angolul) és a cdwrite levelezési lista archívumaiban (angolul).
Megjegyzés: Futassuk dvd+rw-mediainfo parancsot minden olyan esetben, amikor gondunk akad valamilyen lemez írásával. A kimenete nélkül szinte lehetetlen segítenünk bárkinek is.
A DVD-RAM írók SCSI vagy ATAPI csatolófelülettel rendelkeznek. Az ATAPI eszközök esetén engedélyezni kell a DMA elérését, amit a /boot/loader.conf állományban az alábbi sor hozzáadásával tudunk megtenni:
hw.ata.atapi_dma="1"
Ahogy arra már korábban utaltunk a fejezet bevezetésében, a DVD-RAM úgy látható, mint egy cserélhető merevlemez. A hagyományos merevlemezekhez hasonlóan a DVD-RAM-ot is “elő kell készíteni” az első használatához. Ebben a példában a lemez teljes területét egy szabványos UFS2 állományrendszerrel töltjük fel:
# dd if=/dev/zero of=/dev/acd0 bs=2k count=1 # bsdlabel -Bw acd0 # newfs /dev/acd0
A DVD eszköz nevét, vagyis az acd0 eszközt a saját rendszerünknek megfelelően kell módosítani.
Miután az előbbi műveletet elvégeztük a DVD-RAM lemezen, már tudjuk is normális merevlemezként csatlakoztatni:
# mount /dev/acd0 /mnt
Ezt követően a DVD-RAM egyaránt olvasható és írható.
Néha hasznos lehet, ha az adatokat floppy lemezeken tároljuk, például olyankor, amikor más cserélhető tárolóeszköz már nem jöhet számításba, vagy amikor kis mennyiségű adatot kell átvinnünk az egyik számítógépről a másikra.
Ebben a szakaszban bemutatjuk hogyan kell FreeBSD alatt floppy lemezeket használni. Elsősorban a 3,5 colos DOS lemezek formázásával és használatával foglalkozik, de ezek fogalmak a többi hajlékonylemezes formátum esetében is hasonlóak.
A floppy lemezek a többi eszközhöz hasonlóan a /dev könyvtárban érhetőek el. A nyers floppy lemezek eléréséhez egyszerűen csak használjuk a /dev/fdN hivatkozást.
Használat előtt a floppy lemezeket alacsony szinten meg kell formázni. Ezt általában maga a gyártó végzi el, de a formázás gyakran hasznos lehet a lemez sértetlenségének ellenőrzésére. A legtöbb floppy lemez hivatalos kapacitása 1440 KB, de használhatjuk nagyobb (és kisebb) méretekben is.
A floppy lemezek alacsony szintű formázására az fdformat(1) parancsot használhatjuk. Ez a segédprogram paraméterként az eszköz nevét várja.
Figyeljünk a menetközben megjelenő hibaüzenetekre, mivel ezek segítik eldönteni, hogy a lemez használható vagy sem.
A /dev/fdN eszközök segítségével tudunk megformázni egy floppy lemezt. Tegyünk be egy 3,5 colos floppy lemezt a meghajtóba, majd adjuk ki a következő parancsot:
# /usr/sbin/fdformat -f 1440 /dev/fd0
Miután alacsony szinten formáztuk a lemezt, tennünk kell rá egy lemezcímkét is. Ez a lemezcímke később meg fog semmisülni, de a rendszernek szüksége van rá, hogy pontosan meg tudja állapítani a lemez méretét és geometriáját.
Az új lemezcímke lefedi az egész lemezt, és tartalmazni fogja az összes információt a floppy geometriájáról. A lemezcímkék geometriaértékeit az /etc/disktab állományban találjuk meg felsorolva.
Most már futtathatjuk is a bsdlabel(8) parancsot:
# /sbin/bsdlabel -B -w /dev/fd0 fd1440
A hajlékonylemez most már készen áll a magas szintű formázásra. Ennek során egy új állományrendszert teszünk rá, amelyet a FreeBSD képes írni és olvasni. Miután létrejött ez az új állományrendszer, a lemezcímke megsemmisül, így tehát ha újra meg akarjuk formázni a lemezt, akkor újra létre kell majd hoznunk a lemezcímkét.
A floppy állományrendszere lehet UFS vagy FAT. A FAT általánosságban véve jobb választás a floppy lemezek számára.
Az alábbi módon tudunk új állományrendszert tenni a floppyra:
# /sbin/newfs_msdos /dev/fd0
A lemez most már készen áll a használatra.
A floppy lemezt használatához a mount_msdosfs(8) paranccsal kell csatlakoztatnunk. Ugyanerre a célra használhatjuk a Portgyűjteményből elérhető emulators/mtools portot is.
A legfontosabb szalagos adathordozók a 4 mm-es, 8 mm-es, QIC, a minikazettás és a DLT.
A 4 mm-es szalagok a QIC-szalagokat váltják fel a munkaállomások biztonsági mentésének eszközeként. Ez a tendencia csak tovább növekedett, ahogy a Conner felvásárolta az Archive-ot, a QIC típusú meghajtók legnagyobb gyártóját, majd leállított a QIC-meghajtók gyártását. A 4 mm-es meghajtók mérete kicsi és csendben is dolgoznak, de a megbízhatóság terén nem tudhatják maguknak mindazt a sikert, amit a 8 mm-es társaiknál könyvelhettünk el. A kazetták is sokkal olcsóbbak és kisebbek (3 x 2 x 0,5 col, ami 76 x 51 x 12 mm) a 8 mm-es kiadásénál. A 4 mm-es feje, hasonlóan a 8 mm-eséhez, valamilyen okból szintén viszonylag rövid ideig bírja, és mind a kettő spirális pásztázást használ.
Ezeknél a meghajtóknál az adatátvitel nagyjából 150 KB/mp-nél kezdődik és 500 KB/mp-nél végződik. Az adattárolási képességük 1,3 GB-tól indul és 2,0 GB-ig tart. A hardveres tömörítés, ami a legtöbb ilyen típusú meghajtónál elérhető, közel megduplázza a kapacitást. A többmeghajtós szalagos könyvtár egységek egyetlen szekrényben 6 meghajtót képes befogadni, a szalagok automatikus cserélgetésével. Az ilyen könyvtárak kapacitása a 240 GB-ot is elérheti.
A DDS-3 szabvány most már akár 12 GB (vagy tömörítve 24 GB) kapacitást is elérhetővé tesz.
A 4 mm-es meghajtók, hasonlóan a 8 mm-es meghajtókhoz, spirális pásztázást alkalmaznak. A spirális pásztázás összes előnye és hátránya ezért egyaránt él a 4 mm-es és 8 mm-es meghajtók esetén.
A szalagok 2 000 menet vagy 100 teljes mentes után kopnak el.
A 8 mm-es szalagok a legelterjedtebb szalagos SCSI-meghajtók. A szalagok használatára ez a legjobb választás. Szinte mindegyik rendszerben egy 2 GB-os 8 mm-es Exabyte szalagos meghajtót használnak. A 8 mm-es meghajtók megbízhatóak, kényelmesek és csendesek. A kazetták olcsók és kicsik (4,8 x 3,3 x 0,6 col, azaz 122 x 84 x 15 mm). A 8 mm-es szalagok feje viszonylag csak rövid ideig bírja a szalag nagy mértékű oda-vissza mozgása miatt.
Az adatátvitel sebessége 250 KB/mp-től 500 KB/mp-ig terjed, valamint a 300 MB-tól egészen 7 GB-os méretig találkozhatunk velük. A meghajtókban elérhető hardveres tömörítés képes közel megduplázni a kapacitást. Ezek a meghajtók önálló egységként is beszerezhetőek vagy egy 6 egységből álló és 120 szalagos szalagos könyvtár részeként. Ezek az egységek önállóan váltják a szalagokat. Az ilyen könyvtárak kapacitása eléri a közel 840 GB-ot.
Az Exabyte “Mammoth” modellje szalagonként 12 GB (tömörítéssel pedig 24 GB) adatot képes tárolni, viszont a hagyományos szalagos meghajtóknál nagyjából kétszer többe kerül.
Az adatok spirális pásztázással kerülnek a szalagra, és a fejek adott (nagyjából 6 fokos) szögben állnak a szalag felett. A szalag a fejeket tartó orsó köré tekeredik, körülbelül 270 fokban. Ennek eredményképpen nagyobb adatsűrűség és szorosan zárt sávok jönnek létre, ahogy ebben a szögben a fej eljut a szalag egyik éléről a másikra.
A QIC-150 meghajtók és szalagok talán a legelterjedtebb szalagos egységek és adathordozók. A QIC szalagos meghajtók a legolcsóbb “komolynak tekinthető” biztonsági mentésre alkalmas meghajtók. Az olcsóság azonban megköveteli a maga árát. A QIC-szalagok a 4 és 8 mm-es szalagokkal szemben akár ötször is drágábbak lehetnek gigabyte-onként. De ha megelégszünk csupán féltucat szalaggal is, akkor a QIC jó vásárnak tűnhet. A QIC a leginkább elterjedtebb szalagos meghajtó. Minden rendszerben biztonsan találunk valamilyen minőségben QIC-meghajtót. A QIC fizikailag hasonló (és gyakran azonos) felépítésű szalagokat gyárt rengeteg különböző adatsűrűséggel. Az ilyenkor keletkező súrlódások miatt a QIC-meghajtók egyáltalán nem nevezhetőek csendesnek. Az ilyen típusú meghajtók az adatok rögzítése előtt külön hangjelenség kíséretében keresik meg a megfelelő pozíciót és tisztán hallható, ahogy olvasnak, írnak és keresnek. A QIC-szalagok mérete 6 x 4 x 0,7 col (avagy 152 x 102 x 17 mm).
Az adatátviteli sebesség nagyjából 150 KB/mp-től 500 KB/mp-ig terjedhet. A kapacitás szalagonként 40 MB és 15 GB között változhat. A legtöbb újabb QIC-meghajtó támogatja a hardveres tömörítést. QIC-meghajtókat azonban egyre kevésbé találhatunk, helyüket szépen lassan mindenhol átveszik a DAT-meghajtók.
A szalagokra sávokban rögzítik az adatokat. Ezek a sávok szalag felületének hosszanti tengelyén futnak az egyik végétől a másikig. A sávok száma valamint a sávok vastagsága a szalagok kapacitásától függően változnak. Ha nem is összes legújabb, de a legtöbb meghajtó legalább olvasás szintjén kompatibilis a régebbi típusokkal (de gyakran írásban is). A QIC híresen megbízható az adatbiztonság tekintetében (a mechanikája sokkal egyszerűbb és strapabíróbb a spirális pásztázással működő meghajtókénál).
A szalagokat 5000 mentés után érdemes lecserélni.
A DLT rendelkezik a legnagyobb adatátviteli sebességgel az itt összefoglalt mezőnyben. A 1/2 colos (12,5 mm-es) szalag egy egyorsós tokban foglal helyet (mérete 4 x 4 x 1 col, azaz 100 x 100 x 25 mm). A tok egyik oldalán végig egy csúszó kapu található. A meghajtó ezt a kaput nyitja ki és ezen keresztül húzza be a szalagot. A szalag elején található egy ovális lyuk, amibe a meghajtó “bele tud akaszkodni”. A feszítő orsó a szalagos meghajtóban foglal helyet. Az összes többi szalag esetén (kivéve egyedül a 9 sávos szalagokat) mind a segéd- és feszítő orsók magában a kazettában találhatóak.
Az adatátviteli sebessége megközelítőleg 1,5 MB/mp, tehát háromszor nagyobb bármelyik 4 mm-es, 8 mm-es vagy QIC-szalagos egységénél. Az adattároló képessége kazettánként 10 GB-tól 20 GB-ig terjedhet. A meghajtók egyaránt elérhetőek többkazettás, cserélgetős és többkazettás, többmeghajtós könyvtárakban is, melyek 5 kazettától egészen 900 kazettáig, illetve 1 meghajtótól 20 meghajtóig képesek befogadni, így teljes tárterületük 50 GB-tól 9 TB-ig terjed.
A DLT Type V formátum tömörítéssel közel 70 GB-os kapacitást képes elérni.
A szalagra az adatok a haladási iránnyal párhuzamosan kerülnek fel (akárcsak a QIC-szalagok esetében). Egyszerre két sávot rögzít. A író/olvasó fejek élettartama viszonylag nagy. Ahogy a szalag megáll, a fej és a szalag között nincs szükség további relatív mozgásra.
Az AIT a Sony új formátuma, ami egészen 50 GB mennyiségű adatot képes tárolni (tömörítéssel) egyetlen szalagon. A szalagokat memóriachipekkel látják el, melyek a szalag tartalmát indexelik. Az indexek felhasználásával aztán a szalagos meghajtó villámgyorsan képes meghatározni a szalagon található állományok helyét, szemben az ilyenkor megszokott többperces művelettel. A SAMS:Alexandria és a hozzá hasonló szoftverek negyven vagy több AIT-szalagos könyvtárral is képesek egyszerre dolgozni, és közvetlenül a szalagok memóriájával veszik fel a kapcsolatot a tartalmuk megjelenítéséhez, a mentett állományok rendszerezéséhez, a helyes szalag megkereséséhez, betöltéséhez és visszatöltéséhez.
Az ilyen könyvtárak a 20 000 dolláros (kb. 3,5 millió forintos) árkategóriába tartoznak, ami miatt csak egy kicsivel csúsznak ki a hobbi kategóriából.
Amikor az első alkalommal akarunk beolvasni vagy írni egy új, teljesen üres szalagot, hibára fogunk futni. Egy ehhez hasonló konzolüzenet fog megjelenni:
sa0(ncr1:4:0): NOT READY asc:4,1 sa0(ncr1:4:0): Logical unit is in process of becoming ready
A szalag nem tartalmaz azonosító blokkot (Identifier Block) a nulladik blokkban. A QIC-525 szabvány átvétele óta mindegyik QIC szalagos meghajtó létrehozza ezt az azonosító blokkot. Tehát két megoldás létezik:
Az mt fsf 1 paranccsal felírunk egy ilyen azonosító blokkot a szalagra.
A meghajtó előlapján található gomb segítségével dobassuk ki a szalagot.
Rakjuk vissza a szalagot és hajtsunk végre rajta egy dump parancsot.
A dump parancs erre egy “DUMP: End of tape detected” (“szalag vége”) hibaüzenetet ad, majd a következő jelenik meg a konzolon: “HARDWARE FAILURE info:280 asc:80,96”.
Tekertessük vissza a szalagot az mt rewind paranccsal.
A szalag következő művelete most már sikeres lesz.
A floppy lemezek nem igazán felelnek meg biztonsági mentés készítésére, mivel:
Nem megbízható adathordozók, különösen hosszabb időre.
Esetükben a mentés és visszaállítás nagyon lassú.
Kapacitásuk erősen korlátozott (annak már régen elmúlt az ideje, amikor egész merevlemezeket tudtunk lementeni egy tucat floppyra).
Habár ha máshogy nem tudunk biztonsági mentést készíteni, akkor a floppy lemezekkel még mindig jobban járunk, mint nélkülük.
Ha már mindenképpen floppy lemezeket kell használnunk, akkor igyekezzünk minél jobb minőségűeket beszerezni. Tehát az olyan floppyk, amik már évek óta kavarognak az irodában, erre a célra nem éppen bizonyulnak a legjobb választásnak. Ideális esetben egy megbízható gyártótól származó új floppykat használunk.
Legegyszerűbban a tar(1) -M
(többkötetes) opciójával tudunk floppy
lemezre menteni, aminek használatával több
floppyra kiterjedő mentéseket is
készíthetünk.
Az aktuális könyvtár és a benne levő alkönyvtárak tartalmát (root) felhasználóként a következő paranccsal tudjuk lementeni:
# tar Mcvf /dev/fd0 *
Amikor az első floppy megtelik, a tar(1) kérni fogja a következő kötetet (volume) (mivel a tar(1) adathordozótól független módon hivatkozik a kötetekre, tehát ebben a környezetben a kötet egy floppy lemezt jelent):
Prepare volume #2 for /dev/fd0 and hit return:
Az üzenet fordítása:
Készítse elő a 2. kötetet a /dev/fd0 eszközön és nyomja le a return billentyűt
A folyamat egészen addig ismétlődik (a kötetek számának növekedésével), amíg az összes állomány lementésre nem kerül.
Sajnos a tar(1) többkötetes mentések
esetén nem engedi a -z
beállítás használatát.
Természetesen ettől függetlenül a
gzip(1) segítségével még be
tudjuk tömöríteni az összes
állományt, a tar(1) paranccsal floppyra
menteni ezeket, majd a gunzip(1) paranccsal
kitömöríteni.
Az egész mentés visszaállításához adjuk ki a következő parancsot:
# tar Mxvf /dev/fd0
Két módon tudunk csak bizonyos állományokat visszaállítani. Először is, tegyük be a mentés első lemezét és adjuk ki a következő parancsot:
# tar Mxvf /dev/fd0 állomány
A tar(1) segédprogram ezután sorban kérni fogja a többi lemezt egészen addig, amíg meg nem találja a keresett állományt.
Vagy ha pontosan tudjuk, hogy melyik lemezen található a keresett állomány, akkor az iménti parancs használatát azzal a lemezzel kezdjük. Vigyázzunk, mert ha a lemezen található első állomány az előző lemezen kezdődik, akkor a tar(1) figyelmeztetni fog minket, hogy nem állítja vissza még akkor sem, ha erre nem is kértük!
Egy biztonsági mentés kidolgozása során az első követelmény gondoskodnunk az alábbi problémákról:
Lemezhiba
Az állományok véletlen törlése
Az állományok véletlenszerű károsodása
Számítógépek teljes megsemmisülése (például tűz által), belértve a közelében tárolt összes biztonsági mentést
Tökéletesen megoldható, hogy egyes rendszerek a fentebb felsorolt problémák mindegyikét teljesen eltérő technikával oldják meg. A nagyon személyes rendszerektől és a nagyon értéktelen adatoktól eltekintve szinte egyértelműen kizárt, hogy egyetlen technika képes lefedni az összes problémát.
Kelléktárunk néhány alapvető eszköze:
Az egész rendszer mentése, amit egy megbízható helyre elzárt, tartós adattárolóra készítünk. Ez tulajdonképpen védelmet biztosít a fentebb megemlített összes probléma esetében, de lassú és kényelmetlen róla visszaállítani az adatokat. A közelben és/vagy neten is tarthatunk erről másolatokat, de még így is kényelmetlen az állományok visszaállítása, különösen az egyszerű felhasználók számára.
Pillanatképek készítése az állományrendszerről. Ez valójában csak olyan esetekben lehet a segítségünkre, amikor véletlenül töröltünk állományokat, ám ilyenkor határozottan jól jön, mivel igen gyorsan és könnyen lehet vele dolgozni.
Az egész állományrendszer és/vagy az összes lemez másolata (például az rsync(1) időszakos alkalmazása a komplett gépre). Az általában az egyedi igényekkel bíró hálózatok esetében eshet a kezünkre. A lemezhiba ellen védelemben ez a megoldás általában a RAID alatt áll. A véletlenül törölt állományok visszaállításának tekintetében az UFS pillanatképeivel mérhető össze, de ez leginkább a saját igényeinktől függ.
RAID alkalmazása. A lemezek meghibásodása esetén segíti minimalizálni vagy elkerülni a kiesést, ugyan gyakori lemezhibák árán (mivel ilyenkor több lemezt használunk) de kisebb sürgősséggel.
Az állományok ujjlenyomatának ellenőrzése. Az mtree(8) segédprogram nagyon hasznos tud lenni ebben az esetben. Habár ez nem egy mentési technika, mégis segít megállapítani, hogy mikor kell nyugdíjba küldenünk a biztonsági mentéseinket. Ez különösen az aktív nem használt mentésekre vonatkozik, ezeket bizonyos idő elteltével mindig érdemes ellenőrizni.
Nagyon könnyű lenne további technikákat is felsorolni, melyek legtöbbje az iméntiek valamilyen kombinációja lenne. A speciális igények általában speciális technikákat eredményeznek (például egy éles adatbázis biztonsági mentése általában az adott adatbáziskezelő rendszer közreműködését is elvárja). Mindig fontos tudni, hogy milyen veszélyek ellen védekezünk és hogyan kezeljük le ezeket.
A dump(8), tar(1) és cpio(1) a három legfontosabb biztonsági mentésekkel kapcsolatos program.
A UNIX típusú rendszerekben a biztonsági mentést hagyományosan a dump és restore programok végzik. A meghajtókat lemezblokkok összeségeként kezelik, az állományrendszerek által létrehozott állományok, linkek és könyvtárak szintje alatt. Eltérően más, biztonsági mentést végző szoftverektől, a dump az adott eszközön egy egész állományrendszert képes lementeni. Nem képes csak az állományrendszer vagy egy több állományrendszerre kiterjedő könyvtárszerkezet egy részét lementeni. A dump nem állományokat és könyvtárakat ír a szalagra, hanem nyers adatblokkokat, amelyek állományokat és könyvtárakat formáznak. A restore parancs az adatokat alapértelmezés szerint a /tmp könyvtárba tömöríti ki. Ha nem lenne elegendő helyünk a /tmp könyvtárban, akkor a TMPDIR környezeti változó átállításával ehelyett megadhatunk egy olyat, ahol már kellő mennyiségű terület áll rendelkezésre a restore akadálytalan lefutásához.
Megjegyzés: Ha a dump parancsot a gyökér könyvtárban adjuk ki, akkor nem fogja lementeni a /home vagy /usr vagy bármilyen más könyvtárat, mivel ezek jellemző módon más állományrendszerek csatlakozási pontja vagy más állományrendszerekre mutató szimbolikus linkek.
A dump parancsnak vannak olyan rigolyái, amelyek még az AT&T UNIX 6. verziójából (1975 környékéről) maradtak vissza. Az alapértelmezett paraméterezése 9 sávos szalagokat feltételezi (6250 bpi), nem pedig a napjainkban elterjedt nagy írássűrűsségű (egészen 62 182 ftpi-s) adathordozókat. Ezek az alapértelmezések természetesen paranccsorból felülbírálhatóak, és így a manapság alkalmazott szalagos meghajtók teljes kapacitása is kihasználható vele.
Emellett az rdump és rrestore programok segítségével hálózaton keresztül is le tudjuk menteni az adatainkat egy másik számítógépre csatlakoztatott szalagos egységre. Mind a két program az rcmd(3) és a ruserok(3) parancsokat használja a távoli szalagos meghajtó eléréséhez. Az rdump és rrestore paramétereinek a távoli számítógép használatához kell illeszkedniük. Amikor egy FreeBSD rendszerű számítógépet az rdump paranccsal egy Sun rendszerű, komodo nevű számítógépre mentünk, amelyhez egy Exabyte szalagos meghajtó csatlakozik, akkor ezt a írjuk be:
# /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1
Figyelem: az .rhosts állományon keresztül hitelesítésnek megvannak a maga biztonsági kockázatai. Ne felejtsük el felmérni ezt a saját környezetünkben sem.
A dump és restore parancsokat az ssh használatával még biztonságosabbá tehetjük.
Példa 18-1. A dump használata az ssh alkalmazással
# /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \ célfelhasználó@cél.gép.hu dd of=/nagyállományok/dump-usr-l0.gz
Vagy az RSH környezeti változó megfelelő beállításával használhatjuk a dump beépített módszerét:
A tar(1) is az AT&T UNIX 6. verziójáig nyúlik vissza (tehát nagyjából 1975-ig). A tar az állományrendszerrel szoros együttműködésben dolgozik, állományokat és könyvtárakat ír a szalagra. A tar ugyan nem ismeri a cpio(1) által felkínált összes lehetőséget, de nincs is szüksége olyan szokatlan paranccsoros összekapcsolásokra, mint a cpio parancsnak.
A FreeBSD 5.3 vagy későbbi változataiban a GNU tar és az alapértelmezés szerinti bsdtar egyaránt elérhető. A GNU változat a gtar paranccsal hívható meg. Az rdump parancshoz hasonló felírásban képes kezelni a távoli eszközöket. Tehát így tudjuk használni a tar parancsot a komodo nevű Sun számítógép Exabíte szalagos meghajtójának elérésére:
# /usr/bin/gtar cf komodo:/dev/nsa8 . 2>&1
Ugyanez eltérhető a bsdtar használatával is, amikor az rsh programmal összekapcsolva küldünk át a távoli szalagos egységre.
# tar cf - . | rsh hálózati-név dd of=szalagos-eszköz obs=20b
Ha a hálózaton keresztül mentés során fontos számunkra a biztonság, akkor az rsh parancs helyett az ssh parancsot használjuk.
A cpio(1) eredetileg a UNIX szalagos programjai és szalagos egységei között közvetített. A cpio parancs (többek közt) képes a byte-ok sorrendjének felcserélésére, több különböző archívum formátuma szerint írni és adatokat közvetíteni más programok felé. Ez utóbbi lehetősége miatt a cpio kíválóan alkalmas a telepítőeszközök számára. A cpio nem képes bejárni a könyvtárszerkezetet, és az állományok listáját a szabványos bemeneten keresztül kell megadni neki.
A cpio nem támogatja a biztonsági mentés átküldését a hálózaton. Programok összekapcsolásával és az rsh használatával tudunk adatokat küldeni távoli szalagos meghajtókra.
# for f in könyvtár_lista; do find $f >> mentési.lista done # cpio -v -o --format=newc < backup.list | ssh felhasználó@gép "cat > mentőeszköz"
Ahol a könyvtár_lista a menteni kívánt könyvtárak listája, a felhasználó@gép a mentést végző gép felhasználójának és hálózati nevének együttese, valamint a mentőeszköz, ahova a mentés kerül (például /dev/nsa0).
A pax(1) az IEEE/POSIX válasza a tar és cpio programokra. Az évek során a tar és a cpio különböző változatai egy kissé inkompatibilissé váltak. Ezért a szabványosításuk kiharcolása helyett inkább a POSIX létrehozott egy új archiváló segédprogramot. A pax megpróbálja írni és olvasni a cpio és tar formátumok legtöbb változatát, valamint emellett további saját formátumokat is kezel. A parancskészlete inkább a cpio parancséra emlékeztet, mintsem a tar parancséra.
Az Amanda (Advanced Maryland Network Disk Archiver) egy kliens-szerver alapú mentési rendszer, nem pedig egy önálló program. Az Amanda szerver menti tetszőleges számú számítógép adatát egyetlen szalagra, melyek az Amanda klienst futtatják és hálózaton keresztül hozzá csatlakoznak. A nagy mennyiségű és nagy kapacitású lemezekkel rendelkező rendszerekben közvetlenül a mentéshez szükséges idő nem áll rendelkezésre a feladat elvégzéséhez. Az Amanda viszont képes megoldani ezt a problémát. Az Amanda képes egy “saját lemez” használatával egyszerre több állományrendszerről is biztonsági mentést készíteni. Az Amanda “archívumkészleteket” hoz létre: az Amanda konfigurációs állományában megadott állományrendszerekről készít teljes mentést egy adott idő alatt egy adott mennyiségű szalagra. Az “archívumkészlet” ezenkívül még tartalmaz egy napi inkrementális (vagy különbözeti) mentést is minden egyes állományrendszerről. A sérült állományrendszerek visszaállításához mindig a legújabb teljes biztonsági mentésre és a hozzá tartozó inkrementális mentésekre van szükségünk.
A konfigurációs állomány segítségével precíz irányítást gyakorolhatunk a létrehozott mentések és az Amanda által keltett hálózati forgalom felett. Az Amanda a fentiek közül bármelyik programmal képes az adatokat szalagra rögzíteni. Az Amanda portként vagy csomagként is elérhető, alapértelmezés szerint nem települ.
A “Ne csináljunk semmit” nem egy újabb számítógépes program, hanem egy igen gyakran alkalmazott mentési stratégia. Nem kell beruházni. Nem kell semmilyen biztonsági mentési rendet követni. Egyszerűen semmit se csinálunk. Ha véletlenül valami történne az adatainkkal, akkor csak mosolyogjunk és törődjünk bele!
Amennyiben az időnk és adataink keveset vagy éppen semmit se érnek, akkor a “Ne csináljunk semmit” az elérhető legjobb biztonsági mentési megoldás számítógépünk számára. De legyünk óvatosak, mert a UNIX egy igen hasznos eszköz, és fél éven belül könnyen úgy találhatjuk magunkat, hogy mégis csak vannak értékes adataink.
A “Ne csináljunk semmit” tökéletesen megfelelő mentési módszer a /usr/obj és a hozzá hasonló módon a számítógépen automatikusan generált könyvtárak és állományok esetében. Ugyanilyen példa lehetne a kézikönyv HTML vagy PostScript változata. Ezek a formátumok ugyanis az SGML források alapján keletkeznek, így a HTML vagy PostScript állományok mentése nem életbevágó. Az SGML állományokat viszont már annál inkább mentsük!
dump(8) Pont. Elizabeth D. Zwicky komolyan letesztelte az itt felsorolt összes programot. A UNIX állományrendszerek jellegzetességeinek és rajtuk az összes adatunk megőrzésének egyértelműen a dump felel meg a legjobban. Elizabeth a minden egyes program tesztjéhez olyan állományrendszereket hozott létre, amelyek rengeteg különféle szokatlan helyzetet tartalmaztak (valamint néhány nem annyira szokatlant). Az érintett jellegzetességek: lyukas állományok, lyukas állományok és egy halom nulla, állományok érdekes karakterekkel a nevükben, olvashatatlan és írhatatlan állományok, eszközök, a mentés közben méretüket változtató állományok, a mentés közben keletkező és megszűnő állományok és még sok minden más. Az eredményeit a LISA V-ben jelentette meg 1991 októberében. Lásd A biztonsági mentéshez és archiváláshoz használt programok tesztje (angolul).
Csupán négy lépést kell megtennünk az esetleges katasztrófák bekövetkezésének esetére.
Először is két példányban nyomtassuk ki az egyes lemezek lemezcímkéjét (például a bsdlabel da0 | lpr paranccsal) valamint az állományrendszerek táblázatát (az /etc/fstab állományt) és az összes rendszerindításkor megjelenő üzenetet.
A második lépésben készítenünk kell egy “élő” rendszerrel rendelkező CD-lemezt. Ezen a lemezen megtalálható minden, ami el tudunk indítani egy helyreállításhoz elegendő rendszert. Ekkor a felhasználó futtatni tudja például a dump(8), restore(8), fdisk(8), bsdlabel(8), newfs(8), mount(8) és a többi segédprogramot. Ez az image a FreeBSD/i386 8.1-RELEASE kiadáshoz az ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.1/FreeBSD-8.1-RELEASE-i386-livefs.iso címről tölthető le.
A harmadik lépésben igyekezzünk minél gyakrabban szalagra menteni. Mindig gondoljuk arra, hogy a legutolsó mentés óta létrehozott változatásaink teljesen el fognak veszni. A mentéseket tartalmazó szalagokat tegyük írásvédetté.
A negyedik lépésben ellenőrizzük a a második lépésben készített helyreállító lemezünket és a biztonsági mentéseket tartalmazó szalagokat. Jegyezzük le az eljárást. Ezeket a jegyzeteket is rakjuk el rendszerindító lemezzel, a kinyomtatott adatokkal és a mentéseket tartalmazó szalagokkal együtt. Ezek a jegyzetek megvédenek minket attól, hogy a helyreállítás közbeni kétségbeesésünkben nehogy véletlenül tönkretegyük a biztonsági mentéseinket. (Hogy miként is? Például ha a tar xvf /dev/sa0 parancs helyett izgalmunkban a tar cvf /dev/sa0 parancsot gépeljük be, akkor azzal felülírjuk a biztonsági mentéseinket).
A fokozott biztonság kedvéért minden alkalommal készítsünk rendszerindító lemezt és legalább két mentést. Az egyiket valamilyen távoli helyen tároljuk. Ez a távoli hely NE ugyanannak az épületnek az alagsora legyen! Számos cég alaposan megtanulta ezt a szabályt a Világkereskedelmi központ tragédiája kapcsán. Ez a távoli hely számítógépeinkből és merevlemezes meghajtóinkól is fizikailag jól elkülöníthető, jelentős távolságban legyen.
Az alapvető kérdés: a hardver túlélte? Ha rendszeresen készítettünk biztonsági mentéseket, akkor a szoftverek miatt egyáltalán nem kell aggódnunk.
Ha a hardver megsérült, akkor a számítógép használatának újból megkezdése előtt javasolt cserélni a meghibásodott alkatrészeket.
Ha a hardverrel minden rendben találtunk, akkor helyzezzük be a helyreállításhoz használatos “élő” rendszert tartalmazó lemezt a CD-meghajtóba, és indítsuk el vele a számítógépet. Ezután nemsokára a telepítési menü jelenik meg. Itt a megfelelő ország után a
(“Helyreállítás CD/DVD/floppy használatával, vagy parancssor indítása”), majd a (“A CD/DVD-n található élő rendszer használata”) menüpontokat válasszuk. A restore és a többi segédprogram a /mnt2/rescue könyvtárban lesznek elérhetőek.Egyenként állítsuk vissza az egyes állományrendszereket.
A mount paranccsal próbáljuk meg csatlakoztatni az első lemezünk rendszerindító partícióját (például mount /dev/da0a /mt). Ha a lemezcímke megsérült, akkor bsdlabel alkalmazásával partícionáljuk újra a lemezt és címkézzük meg a korábban kinyomtatott címke adatainak megfelelően. A newfs segítségével újra hozzuk létre az állományrendszereket. Írható-olvasható módban csatlakoztassuk újra a lemez rendszerinító partícióját (mount -u -o rw /mnt). A biztonság mentést végző program és a biztonsági mentést tartalmazó szalagok használatával állítsuk helyre az állományrendszer tartalmát (például restore vrf /dev/sa0). Válasszuk le az állományrendszert (például umount /mnt). Mindegyik sérült állományrendszerre ismételjük a folyamatot.
Ahogy működőképessé vált a rendszerünk, mentsük az adatainkat új szalagokra. Akármi is okozta a rendszer összeomlását vagy az adatvesztést, ismét lecsaphat. Ha most áldozunk erre még egy órát, akkor azzal a későbbiekben számos kellemetlenségtől óvhatjuk meg magunkat.
A számítógépünkben létező fizikai lemezek, például floppyk, CD-k, merevlemezek és egyebek mellett a lemezek egy másik formáját is képes megérteni a FreeBSD — a virtuális lemezeket.
A virtuális lemeznek tekinthetőek többek közt az olyan hálózati állományrendszerek, mint például a Hálózati állományrendszer (Network File System, NFS) és a Coda, valamint a memóriában és állományokban létrehozott állományrendszerek.
Attól függően, hogy a FreeBSD melyik változatát használjuk, az állomány és memória alapú állományrendszerek létrehozásához, illetve használatához különböző segédprogramokra lesz szükségünk.
Megjegyzés: A devfs(5) a felhasználó számára láthatatlan módon hozza létre az eszközök leíróit.
FreeBSD alatt az mdconfig(8) segédprogram segítségével tudunk memórialemezeket (md(4)) beállítani és engedélyezni. Az mdconfig(8) használatához be kell töltenünk az md(4) modult vagy hozzá kell tennünk a rendszermagunk beállításait tartalmazó állományhoz:
device md
Az mdconfig(8) parancs háromféle memória alapú virtuális lemezt ismer: a malloc(9), állományok vagy lapozóterület használatával létrehozott memórialemezeket. Így lehet például csatlakoztatni a floppyk vagy CD-k állományokban tárolt image-eit.
Egy meglevő állományrendszer image-ének csatlakoztatása:
Példa 18-3. Egy meglevő állományrendszer image-ének csatlakoztatása az mdconfig paranccsal
# mdconfig -a -t vnode -f image -u 0 # mount /dev/md0 /mnt
Új állományrendszer létrehozása az mdconfig(8) használatával:
Példa 18-4. Új állomány alapú lemez létrehozása az mdconfig paranccsal
# dd if=/dev/zero of=új-image bs=1k count=5k 5120+0 records in 5120+0 records out # mdconfig -a -t vnode -f új-image -u 0 # bsdlabel -w md0 auto # newfs md0a /dev/md0a: 5.0MB (10224 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 1.25MB, 80 blks, 192 inodes. super-block backups (for fsck -b #) at: 160, 2720, 5280, 7840 # mount /dev/md0a /mnt # df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0a 4710 4 4330 0% /mnt
Ha az -u
beállítással
nem adjuk meg az egység számát, akkor az
mdconfig(8) az md(4) automatikus
kiosztásán keresztül fog egy
használatban még nem levő eszközt
kiválasztani. Az így kiosztott egység neve
az md4 névhez hasonlóan
jelenik meg a szabványos kimeneten. Az mdconfig(8)
használatának részleteiről olvassuk el
a hozzá tartozó man oldalt.
Az mdconfig(8) egy nagyon sokoldalú segédeszköz, habár használatakor viszonylag sok parancsot kell kiadni egy állomány alapú állományrendszer létrehozásához. A FreeBSD azonban alapból tartalmaz még egy mdmfs(8) nevű segédprogramot is, ami az md(4) lemezeket az mdconfig(8) segítségével állítja be, létrehoz rajtuk egy UFS típusú állományrendszert a newfs(8) segítségével és csatlakoztatja a mount(8) paranccsal. Így például, ha az iménti állományrendszert akarjuk létrehozni és csatlakoztatni, akkor egyszerűen csak gépeljünk be ennyit:
Példa 18-5. Állomány alapú lemezek beállítása és csatlakoztatása az mdmfs paranccsal
# dd if=/dev/zero of=új-image bs=1k count=5k 5120+0 records in 5120+0 records out # mdmfs -F új-image -s 5m md0 /mnt # df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0 4718 4 4338 0% /mnt
Ha az md
paramétert az egység
száma nélkül adjuk meg, akkor mdmfs(8)
az md(4) automatikus kiosztására
támaszkodva fog egy addig még nem használt
eszközt kiválasztani. A mdmfs(8)
használatának pontos részleteivel
kapcsolatban lásd a hozzá tartozó man
oldalt.
A memória alapú állományrendszerek esetében általában a “lapozóállomány alapú” megközelítést alkalmazzák. A lapozóállomány alapúság nem arra utal, hogy a memórialemezt alapból kilapozzák lemezre, hanem inkább arra, hogy a memórialemez olyan területen jön létre, amelyet szükség esetén lemezre lehet lapozni. Memória alapú lemezeket a (rendszermag szintű) malloc(9) használatával is létre lehet hozni, de a malloc alapú memórialemezeknél, különösen a nagyon nagyok esetében, a rendszer könnyen össze tud omlani, ha kifut a rendelkezésére álló memóriából.
Példa 18-6. Új memória alapú lemez létrehozása az mdconfig paranccsal
# mdconfig -a -t swap -s 5m -u 1 # newfs -U md1 /dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 1.27MB, 81 blks, 192 inodes. with soft updates super-block backups (for fsck -b #) at: 160, 2752, 5344, 7936 # mount /dev/md1 /mnt # df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md1 4718 4 4338 0% /mnt
Amikor már nem akarunk tovább használni egy memória vagy állomány alapú állományrendszert, érdemes visszaadnunk az általuk felhasznált erőforrásokat a rendszernek. Elsőként válasszuk le magát az állományrendszert, majd az mdconfig(8) segítségével kapcsoljuk le a lemezt a rendszerről és szabadítsuk fel az általa felhasznált erőforrásokat.
Például az /dev/md4 eszközt így lehet lekapcsolni és felszabadítani:
# mdconfig -d -u 4
A beállított md(4) eszközökkel kapcsolatos többi információt az mdconfig -l paranccsal tudjuk lekérdezni.
A FreeBSD a Soft Updates mellett felkínál egy másik lehetőséget: az állományrendszerekről készíthető pillanatfelvételeket.
Ezek a pillanatképek lehetővé teszik a felhasználók számára, hogy adott állományrendszerekről képeket hozzanak létre és azt állományként kezeljék. A pillanatképeket az adott állományrendszerben kell létrehozni, és a felhasználók állományrendszerenként húsznál többet nem hozhatnak belőlük létre. Az aktív pillanatképek a szuperblokkban kerülnek rögzítésre, ezért az állományrendszerek leválasztása és újracsatlakoztatása esetén is megmaradnak, még újraindítás után is. Amikor egy pillanatképre már nincs tovább szükségünk, egy szimpla rm(1) paranccsal eltávolítható. A pillanatképek tetszőleges sorrendben eltávolíthatóak, habár ilyenkor az összes általuk lefoglalt hely nem szabadul fel, mivel más pillanatképeknek még szüksége lehet bizonyos blokkjaira.
Miután az mksnap_ffs(8) paranccsal
létrehoztunk egy pillanatképet tartalmazó
állományt, beállítódik
rá a módosíthatatlanságot
jelentő snapshot
állományjelző. Egyedül az
unlink(1) parancs képez ez alól
kivételt, mivel segítségével a
pillanatképek
eltávolíthatóak.
A pillanatképek a mount(8) paranccsal hozhatóak létre. A következő módon tudjuk a /var egy pillanatképét elkészíteni a /var/snapshot/snap állományban:
# mount -u -o snapshot /var/snapshot/snap /var
Vagy a mksnap_ffs(8) meghívásával is készíthetünk pillanatképeket:
# mksnap_ffs /var /var/snapshot/snap
Az állományrendszeren (például /var) a pillanatképeket tartalmazó állományokat a find(1) paranccsal kereshetjük meg:
# find /var -flags snapshot
Ahogy elkészítettünk egy pillanatképet, több mindenre is felhasználhatjuk:
Egyes rendszergazdák a pillanatképeket biztonsági mentésekhez használják, mivel ezek gond nélkül áttehetőek CD-re vagy szalagra.
Az állományrendszerek sértetlenségét ellenőrző program, az fsck(8) is lefuttatható egy ilyen pillanatképen. Feltéve, hogy az állományrendszer csatlakoztatásakor tiszta volt, mindig egy tiszta (és változásokat nem tartalmazó) eredményt kell kapnunk. Ennek megléte elengedhetetlen a háttérben futtatható fsck(8) működéséhez.
Futassuk le a dump(8) segédprogramot a
pillanatképen. Az így létrehozott
mentés megegyezik az állományrendszer
adott pillanatban felvett állapotával. Az
-L
beállítás
megadásával maga a dump(8) is
képes egyetlen parancsban pillanatfelvételt
készíteni, ebből létrehozni a
mentést, majd eltávolítani.
A pillanatképet képesek vagyunk a mount(8) paranccsal az állományrendszer befagyasztott változataként csatlakoztatni:
# mdconfig -a -t vnode -f /var/snapshot/snap -u 4 # mount -r /dev/md4 /mnt
Így már a /mnt könyvtárba csatlakoztatva be tudjuk járni a befagyasztott /var állományrendszert. Minden a pillanatfelvétel készítésének időpontjának megfelelő állapotban fog maradni. Az egyetlen kivétel talán annyi, hogy korábbi pillanatképek nulla méretű állományként fognak megjelenni. Mikor befejeztük a pillanatképek használatát, a umount(8) paranccsal le tudjuk választani:
# umount /mnt # mdconfig -d -u 4
A softupdates
és az
állományrendszerek pillanatképeinek
használatával, illetve műszaki
leírásukkal kapcsolatban látogassuk meg
Marshall Kirk McKusick honlapját a http://www.mckusick.com/ címen
(angolul).
A kvóták használata az operációs rendszerben egy olyan választható lehetőség, aminek segítségével állományrendszerenként korlátozni tudjuk az egyes felhasználók vagy csoporttagok által elhasznált lemezterület és/vagy állományok mennyiségét. Ezt leggyakrabban olyan időosztásos rendszerekben használják ki, ahol szükség lehet az egyes felhasználókra vagy csoportokra eső erőforrások mennyiségének szabályozására. Ezzel tudjuk megakadályozni, hogy a felhasználók vagy csoportok elfogyasszák az összes rendelkezésre álló lemezterületet.
Mielőtt nekilátnánk a kvóták használatának, meg kell győződnünk róla, hogy a rendszermagunkban megvan hozzá a szükséges támogatás. A kvótákat a következő sorral lehet engedélyezni a rendszermag beállításait tartalmazó állományban:
options QUOTA
A gyári GENERIC rendszermag ezt alapból nem engedélyezi, ezért ehhez mindenképpen be kell állítani, le kell fordítani és telepíteni egy kell saját rendszermagot. A saját rendszermag létrehozásához kövessük a 8 fejezet utasításait.
Ha ezzel megvagyunk, akkor a következő sorral bővítsük ki az /etc/rc.conf állományt:
enable_quotas="YES"
A kvótákat kezelő rendszer indításának finomabb szabályozására létezik még egy további beállítási lehetőség is. A rendszer indítása során általában az egyes állományrendszerek kvótáját a quotacheck(8) program ellenőrzi. A quotacheck(8) gondoskodik róla, hogy a kvótákat tároló adatbázis ténylegesen az állományrendszeren található adatokat tükrözi. Ez egy nagyon időigényes folyamat, ami rányomja bélyegét a rendszer elindulásához szükséges idő mennyiségére is. Amennyiben szeretnénk megtakarítani ezt a lépést, tegyük bele az /etc/rc.conf állományba a direkt erre a célra kialakított beállítást:
check_quotas="NO"
Végezetül az állományrendszereken az /etc/fstab megfelelő módosításával tudjuk egyenként engedélyezni a lemezkvóták használatát. Itt lehet bekapcsolni az állományrendszerek felhasználókra vagy csoportokra, esetleg mind a kettőjükre vonatkozó kvótáikat.
Ha felhasználói szintű
kvótákat akarunk engedélyezni egy
állományrendszeren, akkor az
/etc/fstab állományban az
állományrendszer beállításai
közé vegyük fel a userquota
opciót. Például így:
/dev/da1s2g /home ufs rw,userquota 1 2
Ehhez hasonlóan tudjuk engedélyezni a
userquota
helyett a groupquota
opció használatával a csoportszintű
kvótákat is. A felhasználói-
és csoportszintű kvóták együttes
engedélyezéséhez így kell
átírni az állományrendszer
bejegyzését:
/dev/da1s2g /home ufs rw,userquota,groupquota 1 2
Alapértelmezés szerint az állományrendszerekhez tartozó kvóták a gyökerükben található quota.user valamint quota.group állományokban tárolódnak. Erről részletesebben az fstab(5) man oldalon olvashatunk. Noha még az fstab(5) man oldala szerint is megadható más elérési út a kvótákat tároló állományokhoz, semmiképpen sem javasoljuk ezt, mert úgy tűnik, hogy a kvótákat kezelő különböző segédprogramok ezzel nem képesek rendesen megbirkózni.
Most kell újraindítani a rendszerünket az új rendszermaggal. Az /etc/rc magától le fogja futtatni a kezdeti kvótaállományok létrehozásához szükséges parancsokat az /etc/fstab állományban megadott állományrendszereken. Ennek megfelelően tehát nem nekünk kell kézzel létrehoznunk ezeket az állományokat.
Hétköznapi esetben egyáltalán nem kell manuális futtatnunk a quotacheck(8), quotaon(8) vagy quotaoff(8) parancsokat. Habár ha tisztában szeretnénk lenni a pontos működésükkel, akkor mindenképpen lapozzuk fel a hozzájuk tartozó man oldalakat.
Ahogy sikerült beállítani a kvóták használatát, egyből ellenőrizzük is a működőképességüket. Ezt legegyszerűbben a következő paranccsal tehetjük meg:
# quota -v
Itt egy sorban összefoglalva láthatjuk a jelenlegi lemezhasználatot és az egyes állományrendszereken engedélyezett kvóták korlátait.
Most már készenállunk arra, hogy az edquota(8) paranccsal végre korlátokat is beállítsunk a kvótákhoz.
Számos beállítás áll rendelkezésünkre a felhasználók vagy csoportok által lefoglalható lemezterület vagy a létrehozható állományok számának korlátozását illetően. A helyfoglalást szabályozhatjuk lemezterület alapján (blokk kvóta) vagy az állományok száma szerint (állományleíró kvóta), esetleg a kettő kombinációjával. A korlátok további két kategóriára bonthatóak: erősre és gyengére.
Az erős korlátot (hard limit) nem lehet túllépni. Ahogy a felhasználó eléri a számára kiszabott erős korlátot, semmilyen további területet nem használhat fel a kérdéses állományrendszeren. Például, ha a felhasználónak az állományrendszeren 500 kilobyte-os erős korlátot állítottunk be, és éppen 490 kilobyte-nál tart, akkor a felhasználó innen már csak 10 kilobyte-nyi helyet foglalhat le. 11 kilobyte lefoglalása már nem fog sikerrel járni.
Ezzel szemben a gyenge korlátok (soft limit) egy adott ideig átléphetőek. Ezt az időt türelmi időnek (grace period) nevezik, ami alapértelmezés szerint egy hét. Ha a felhasználó a gyenge korláton felül marad a türelmi idő után is, akkor ezt a gyenge korlát erőssé válik és semmilyen további helyfoglalásra nem lesz lehetősége. Amikor a felhasználók újra a gyenge korlát alá kerül, a türelmi idő is visszaáll a beállított értékére.
A most következő példában az edquota(8) parancsot mutatjuk be. Amikor meghívjuk az edquota(8) parancsot, akkor elindul az EDITOR környezeti változónak megfelelő szövegszerkesztő, illetve ennek hiányában a vi, és lehetőségünk nyílik a kvóta korlátainak módosítására.
# edquota -u teszt
Quotas for user teszt: /usr: kbytes in use: 65, limits (soft = 50, hard = 75) inodes in use: 7, limits (soft = 50, hard = 60) /usr/var: kbytes in use: 0, limits (soft = 50, hard = 75) inodes in use: 0, limits (soft = 50, hard = 60)
Normális esetben minden kvótával rendelkező állományrendszerhez két sort kapunk. Közülük az egyik sorban szerepelnek a blokkok korlátai, a másikban az állományleírók korlátai. Ha valamelyiküket meg akarjuk változtatni, akkor egyszerűen csak át kell írnunk az adott korlát értékét. Például növeljük meg a felhasználók 50-es gyenge és 75-ös erős blokk korlátját 500-as gyenge és 600-as erős korlátra. Ehhez szerkesszük át a
/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
sort erre:
/usr: kbytes in use: 65, limits (soft = 500, hard = 600)
Az új korlátok akkor fognak érvénybe lépni, miután kiléptünk a szövegszerkesztőből.
Néha hasznos lehet a korlátokat adott
felhasználói azonosítókhoz
beállítani. Ezt az edquota(8) parancs
-p
paraméterével tudjuk
elvégezni. Először is állítsuk
be egy felhasználónak a beállítani
kívánt korlátokat, majd futtassuk le az
edquota -p teszt
kezdőuid-véguid
parancsot. Például ha a
teszt nevű
felhasználónak állítottuk be a
számunkra megfelelő korlátokat, akkor a
következő paranccsal lehet a rá
vonatkozó korlátokat kiterjeszteni a 10 000
és 19 999 közötti
azonosítójú
felhasználókra:
# edquota -p teszt 10000-19999
Erről bővebben az edquota(8) man oldalán kaphatunk felvilágosítást.
A kvóták korlátait és a lemez jelenlegi kihasználtságát a quota(1) vagy repquota(8) parancsokkal is ellenőrizhetjük. A quota(1) parancs segítségével ellenőrizhető az egyes felhasználók vagy csoportok kvótája és lemezhasználata. A felhasználók csak a saját adataikhoz férhetnek hozzá, illetve mindazon csoportokéhoz, aminek tagjai. Egyedül a rendszeradminisztrátor képes látni az összes felhasználó és csoport kvótáját. A repquota(8) paranccsal kérdezhető le az összes kvóta és lemezhasználat rövid kimutatása minden olyan állományrendszeren, ahol azok engedélyezettek.
A következő kimenet a quota -v parancstól származik, ahol a felhasználónak két állományrendszeren is vannak kvótái:
Disk quotas for user teszt (uid 1002): Filesystem usage quota limit grace files quota limit grace /usr 65* 50 75 5days 7 50 60 /usr/var 0 50 75 0 50 60
A fenti példában látható, hogy a felhasználó a /usr állományrendszeren pillanatnyilag 15 kilobyte-tal van az 50 kilobyte-os gyenge korlátja felett és 5 napja van hátra a türelmi időből. Vegyük észre a szám mellett levő csillagot (*), amivel a rendszer jelzi, hogy a felhasználó túllépte a korlátját.
A quota(1) parancs kimenetében
általában nem jelennek meg azok az
állományrendszerek, amelyeken a
felhasználónak ugyan vannak kvótái,
de nem foglal rajtuk lemezterületet. A -v
beállítás megadásával ezek az
állományrendszerek is
láthatóvá válnak, mint ahogy azt a
fenti példában is megfigyelhettük a
/usr/var esetében.
A kvóták az NFS szerver kvótákért felelős alrendszerében is engedélyezhetőek. Az rpc.rquotad(8) démon teszi az NFS klienseken futtatott quota(1) parancsok számára elérhetővé a kvótákkal kapcsolatos információkat, aminek köszönhetően a felhasználók távolról is képesek lekérdezni a kvótáikat.
Az rpc.rquotad aktivilásához a következőt kell beállítani az /etc/inetd.conf állományban:
rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad
Majd ne felejtsük el újraindítani az inetd démont sem:
# /etc/rc.d/inetd restart
A FreeBSD kitűnő futásközbeni védelmet ajánl fel az adatok illetéktelen hozzáférése ellen. Az állományok engedélyei és a kötelező hozzáférés-vezérlés (Mandatory Access Control, MAC, lásd 16 fejezet) segítenek megvédeni érzékeny adatainkat az illéktelenek ellen az operációs rendszer futása és a számítógép működése során. Azonban az operációs rendszerben kezelt engedélyek teljesen hatástalanok abban az esetben, ha a támadó fizikailag is képes hozzáférni a számítógépünkhöz, eltávolítani a merevlemezt és egy másik operációs rendszer segítségével kielemezni a rajta található fontos adatainkat.
Függetlenül attól, hogy a támadó valójában miként is férkőzött hozzá a merevlemezünkhöz, vagy miként kapcsolta le a számítógépünket, a FreeBSD megtalálható GEOM alapú lemeztitkosítás (gbde) és a geli titkosítási alrendszer egyaránt képes védelmet nyújtani a számítógépen található állományrendszerek számára az értékes adatok után kutató igen motivált betörők ellen. A csupán egyes állományokra kiterjedő körmönfont titkosítási módszerekkel szemben a gbde és a geli az egész állományrendszert észrevétlen módon titkosítja. Titkosítatlan adat nem is kerül a merevlemezre.
Váljunk root felhasználóvá
A gbde beállításához rendszeradminisztrátori jogosultságokra lesz szükségünk.
% su - Password:
Adjuk hozzá a gbde(4) támogatását a rendszermag konfigurációs állományához
Tegyük a következő sort a rendszermag beállításait tartalmazó állományba:
options GEOM_BDE
Fordítsuk újra a rendszermagot a 8 fejezetben leírtak szerint.
Indítsuk el a számítógépet az új rendszermaggal.
A rendszermag újrafordítása helyett a kldload paranccsal is betölthetjük a gbde(4) modulját:
# kldload geom_bde
A következő példa azt feltételezi, hogy a rendszerünkhöz egy új merevlemezt adunk hozzá, amin egyetlen titkosított partíció foglal helyet. Ezt a partíciót a /private könyvtárba fogjuk csatlakoztatni. A gbde használható a /home és a /var/mail titkosítására is, de ennek megvalósítása olyan bonyolult utasításokat igényel, amelyek meghaladják ennek a bevezetésnek a kereteit.
Az új merevlemez hozzáadása
A 18.3 Szakaszban bemutatottak szerint adjuk hozzá a rendszerünkhöz az új merevlemezt. A példában az új lemez partícióját a /dev/ad4s1c néven fogjuk tudni elérni. A /dev/ad0s1* eszközök a példában szereplő FreeBSD rendszer szabványos partícióit jelölik.
# ls /dev/ad* /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1 /dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c /dev/ad0s1a /dev/ad0s1d /dev/ad4
Hozzunk létre egy könyvtárat a gbde zárolásainak tárolásához
# mkdir /etc/gbde
A gbdenek azért van szüksége a zárolásokat rögzítő állományokra, hogy hozzá tudjon férni a titkosított partíciókhoz. Amennyiben ezt nem tudja megtenni, a gbde anélkül nem lesz képes visszafejteni a titkosított partíciókon tárolt adatokat, hogy az ezeket elérni akaró szoftvereknek ne kelljen jelentősebb mértékben manuálisan beavatkoznia. Mindegyik titkosított partíció külön zároló állományt használ.
A gbde partíció inicializálása
A gbde által használt partíciókat használatuk előtt inicializálni kell. Ezt a műveletet azonban csak egyszer kell elvégezni:
# gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c.lock
A gbde(8) ekkor elindít egy szövegszerkesztőt és benne egy sablon segítségével be tudjuk állítani a különböző konfigurációs értékeket. Az UFS1 vagy UFS2 használata esetén állítsuk a szektorméretet 2048-ra:
$FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $ # # Sector size is the smallest unit of data which can be read or written. # Making it too small decreases performance and decreases available space. # Making it too large may prevent filesystems from working. 512 is the # minimum and always safe. For UFS, use the fragment size # sector_size = 2048 [...]
A megjegyzés fordítása:
A szektorméret az adatok írásának és olvasásának legkisebb egysége. Ha túlságosan kicsire választjuk meg, akkor csökken a teljesítmény és csökken a rendelkezésre álló hely. Ha viszont túlságosan nagyra hagyjuk, akkor azzal akadályozzuk az állományrendszerek munkáját. 512 a legkisebb érték, amely mindig megbízható. Az UFS esetén használjuk a fragmensek méretét.
A gbde(8) kétszer is rá fog kérdeni az adatok titkosítására használt jelmondatra. A jelmondatnak természetesen mind a kétszer ugyanannak kell lennie. A gbde védelmének hatékonysága teljesen mértékben az általunk választott jelmondat minőségétől függ [10].
A gbde init parancs létrehoz egy zároló állományt a gbde partícióhoz, amely ebben a példában az /etc/gbde/ad4s1c.lock néven keletkezett. A gbde zároló állományainak “.lock” névre kell végződniük, mivel az /etc/rc.d/gbde indítószkript csak ebben az esetben észleli rendesen.
Figyelem: A gbde zároló állományait a titkosított partíciók tartalmával együtt kell lementeni. Miközben a zároló állomány törlése nem tudja megakadályozni, hogy az elszánt támadó visszafejtse a gbde által titkosított partíciót, addig a zároló állomány nélkül a jogos tulajdonos órási mennyiségű munka befektetése nélkül képtelen lesz hozzáférni a rajta levő adatokhoz. Ez utóbbitól egyébként a gbde(8) és a rendszer tervezője is totálisan elhatárolja magát.
A titkosított partíció illesztése a rendszermaghoz
# gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock
Ekkor a titkosított partíció illesztéséhez a rendszer kérni fogja az inicializálás során választott jelmondatot. Ezután az új titkosított eszköz megjelenik a /dev könyvtárban /dev/eszköznév.bde néven:
# ls /dev/ad* /dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1 /dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c /dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bde
Állományrendszer kialakítása egy titkosított eszközön
Ahogy sikerült a titkosított eszközt
illeszteni a rendszermaghoz, létre is tudunk hozni
egy állományrendszert rajta. Erre a
célra a newfs(8) remekül
használható. Mivel egy új UFS2
állományrendszerek
inicializálása sokkal gyorsabb a régi
UFS1 állományrendszerek
inicializálásánál, ezért
a newfs(8) használata esetén az
-O2
beállítás
megadása ajánlott.
# newfs -U -O2 /dev/ad4s1c.bde
Megjegyzés: A newfs(8) parancsot egy illesztett gbde partíción kell végrehajtani, amit onnan ismerhetünk meg, hogy az eszköz nevében szerepel a *.bde kiterjesztés.
A titkosított partíció csatlakoztatása
Hozzunk létre egy csatlakozási pontot a titkosított állományrendszer számára.
# mkdir /privát
Csatlakoztassuk a titkosított állományrendszert.
# mount /dev/ad4s1c.bde /privát
Ellenőrizzük a titkosított állományrendszer működőképességét
A titkosított állományrendszert most már látja a df(1) program és készen áll a használatra.
% df -H Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 1037M 72M 883M 8% / /devfs 1.0K 1.0K 0B 100% /dev /dev/ad0s1f 8.1G 55K 7.5G 0% /home /dev/ad0s1e 1037M 1.1M 953M 0% /tmp /dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr /dev/ad4s1c.bde 150G 4.1K 138G 0% /private
A rendszer minden egyes indítása után az összes titkosított állományrendszert tényleges használata előtt újra illeszteni kell a rendszermaghoz, ellenőrizni az épségét és csatlakoztatni. Az ehhez szükséges parancsokat root felhasználóként kell kiadni.
A gbde partíció illesztése a rendszermaghoz
# gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock
A gbde partíció inicializálása során megadott jelmondatot kell megadnunk a művelet elvégzéséhez.
Az állományrendszer épségének ellenőrzése
Mivel a titkosított állományrendszerek az automatikus csatlakoztatáshoz még nem szerepeltethetőek az /etc/fstab állományban, ezért az ilyen állományrendszereket csatlakoztatásuk előtt manuálisan ellenőriztetni kell a fsck(8) lefuttatásával.
# fsck -p -t ffs /dev/ad4s1c.bde
A titkosított állományrendszer csatlakoztatása
# mount /dev/ad4s1c.bde /privát
A titkosított állományrendszer most már készen áll a használatra.
Lehet írni olyan szkriptet, amely a titkosított partíciókat magától illeszti, ellenőrzi és csatlakoztatja, de biztonsági megfontolásokból semmi esetben sem szabad tartalmaznia a gbde(8) jelszavát. Ehelyett azt javasoljuk, hogy az ilyen szkripteknek külön meg kelljen adni a jelszót konzolon vagy az ssh(1) használatán keresztül.
De használhatjuk a mellékelt rc.d szkriptet is. A szkript paramétereit az rc.conf(5) állományon keresztül adhatjuk meg, például:
gbde_autoattach_all="YES" gbde_devices="ad4s1c" gbde_lockdir="/etc/gbde"
Ilyenkor a gbde által használt jelmondatot a rendszer indításakor kell megadni. Miután begépeltük a megfelelő jelmondatot, a titkosított gbde partíció magától csatlakoztatásra kerül. Ez akkor lehet hasznos, ha a gbde megoldását hordozható számítógépeken alkalmazzuk.
A gbde(8) a szektorok tartalmát 128 bites AES használatával CBC módban titkosítja. A lemezen található minden egyes szektort eltérő AES kulccsal kódolja. A gbde kriptográfiai felépítését, valamint mindazt, hogy az egyes szektorok kulcsai miként származtathatóak a felhasználó által megadott jelmondatból, a gbde(4) man oldalán olvashatjuk.
A sysinstall(8) nem kompatibilis a gbde által titkosított eszközökkel. A sysinstall(8) indítása előtt minden *.bde eszközt ki kell iktatni a rendszermagból, különben az eszközök keresése során össze fog omlani. A példánkban használt titkosított eszközt a következő paranccsal kell lekapcsolni:
# gbde detach /dev/ad4s1c
Továbbá megjegyezzük azt is, hogy a vinum(4) nem használja a geom(4) alrendszert, ezért a gbde alkalmazása során nem használhatunk Vinum-köteteket.
A FreeBSD 6.0 változatától kezdve egy
új kriptográfiai GEOM osztály is a
rendelkezésünkre áll, melyet pillanatnyilag
Pawel Jakub Dawidek <pjd@FreeBSD.org>
fejleszt. A geli segédprogram
némileg különböző a
gbde megoldásától
— más lehetőségeket kínál
fel és a titkosítást is egy
eltérő séma mentén
valósítja meg.
A geli(8) legfontosabb jellemzői a következők:
A crypto(9) keretrendszerét használja — tehát ha rendelkezünk kriptográfiai hardverrel, akkor a geli automatikusan használni fogja.
Több kriptográfiai algoritmust is ismer (melyek jelenleg az AES, Blowfish és a 3DES).
Segítségével a rendszerindításhoz használt (gyökér) partíció is titkosítható. Ilyenkor a szükséges jelmondatot a rendszer indításakor kell megadni.
Két független kulcsot (például egy “kulcsot” és egy “céges kulcsot”) is használhatunk vele.
A geli gyors — egyszerűen csak szektorról szektorra titkosít.
Lehetővé teszi a mesterkulcsok mentését is visszaállítását. Ha a felhasználó véletlenül megsemmisítené a kulcsát, akkor a biztonsági mentésből helyreállított kulcsok segítségével vissza tudjuk szerezni az adatainkat is.
Segítségével a lemezeket véletlenszerű, egyszeri jelszavakkal is illeszthetjük — ez különösen fontos lapozóterületek és ideiglenes állományrendszerek esetében.
A geli által felkínált lehetőségekről a geli(8) man oldalán találhatunk többet.
A következő lépések bemutatják, hogyan lehet a FreeBSD rendszermagjában engedélyezni a geli támogatását, és hogyan lehet létrehozni és használni egy geli titkosítással rendelkező adathordozót.
A geli alkalmazásához legalább a FreeBSD 6.0-RELEASE vagy későbbi változatára van szükségünk. Mivel a rendszermagot is módosítanunk kell, ezért rendszeradminisztrátori jogosultságok kellenek a műveletek elvégzéséhez.
A geli támogatásának hozzáadása a rendszermaghoz
Vegyük hozzá a következő sorokat a rendszermag beállításait tartalmazó állományhoz:
options GEOM_ELI device crypto
Fordítsuk újra a rendszermagot a 8 fejezetben leírtak szerint.
Betölthetjük a geli modulját is a rendszer indításakor. Ehhez a következő sort kell betenni a /boot/loader.conf állományba:
geom_eli_load="YES"
A geli(8) most már használható a rendszermagban.
A mesterkulcs legenerálása
A most következő példában egy kulcsot tartalmazó állomány létrehozását illusztráljuk, amit a /privát könyvtárba csatlakoztatott titkosított adathordozó mesterkulcsához fogunk használni. A kulcs állomány a mesterkulcs titkosításához felhasznált véletlenszerű adatot fogja tartalmazni, valamint rajta kívül még a mesterkulcsot egy jelmondattal is védjük. Az adathordozó szektormérete 4 kilobyte-os lesz. Emellett még bemutatjuk, hogyan kell illeszteni egy geli-adathordozót, állományrendszert létrehozni rajta, csatlakoztatni, dolgozni vele és lekapcsolni.
A nagyobb teljesítmény érdekében javasolt nagyobb szektorméretet választani (mint például 4 kilobyte).
A mesterkulcsot egy jelmondattal fogjuk védeni és a kulcsok készítéséhez használt adatforrás a /dev/random lesz. A /dev/da2.eli, amelyet mit csak adathordozónak fogunk csak hívni, szektorainak mérete 4 kilobyte lesz.
# dd if=/dev/random of=/root/da2.key bs=64 count=1 # geli init -s 4096 -K /root/da2.key /dev/da2 Enter new passphrase: Reenter new passphrase:
Nem kötelező egyszerre használni a jelmondatot és a kulcs állományt. A mesterkulcs elzárásának bebiztosítására bármelyik módszer alkalmas.
Ha a kulcs állomány a “-” paraméterrel adjuk meg, akkor a szabványos bemenetről olvassa be a program. Ez a példa több kulcs használatát mutatja be.
# cat kulcs1 kulcs2 kulcs3 | geli init -K - /dev/da2
Az adathordozó illesztése a generált kulccsal
# geli attach -k /root/da2.key /dev/da2 Enter passphrase:
Az új titkosítatlan eszköz neve /dev/da2.eli lesz.
# ls /dev/da2* /dev/da2 /dev/da2.eli
Az új állományrendszer kialakítása
# dd if=/dev/random of=/dev/da2.eli bs=1m # newfs /dev/da2.eli # mount /dev/da2.eli /privát
A titkosított állományrendszer most már df(1) számára is látszik és használható:
# df -H Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 248M 89M 139M 38% / /devfs 1.0K 1.0K 0B 100% /dev /dev/ad0s1f 7.7G 2.3G 4.9G 32% /usr /dev/ad0s1d 989M 1.5M 909M 0% /tmp /dev/ad0s1e 3.9G 1.3G 2.3G 35% /var /dev/da2.eli 150G 4.1K 138G 0% /private
Az adathordozó leválasztása és lekapcsolása
Miután befejeztük a munkát a titkosított partíción, és a /privát partícióra már nincs tovább szükségünk, érdemes leválasztanunk és kiiktatnunk a geli titkosítású partíciót a rendszermagból.
# umount /privát # geli detach da2.eli
A geli(8) használatáról bővebben a saját man oldalán tájékozódhatunk.
A geli mellett találhatunk egy saját rc.d szkriptet, amely jelentősen leegyszerűsíti a geli használatát. A geli például így paraméterezhető az rc.conf(5) állományon keresztül:
geli_devices="da2" geli_da2_flags="-p -k /root/da2.key"
Ennek segítségével a
/dev/da2 eszközt
geli adathordozóként
állítjuk be a /root/da2.key
állományban található mesterkulcs
felhasználásával, de az
illesztéskor a geli nem kér
jelmondatot (ezt csak akkor fogja tenni, ha a geli
init parancs kiadásához
hozzátesszük a -P
beállítást). A rendszer
leállítása előtt pedig a
geli adathordozó így
automatikusan leválasztásra kerül.
Az rc.d beállításával kapcsolatos tudnivalókat a kézikönyv rc.d szkriptekről szóló szakaszában ismerhetjük meg.
A FreeBSD-ben a lapozóterület titkosítása nagyon könnyen beállítható és már a FreeBSD 5.3-RELEASE változata óta elérhető. Attól függően, hogy konkrétan a FreeBSD melyik verzióját használjuk, a konfigurációhoz kapcsolódó beállítások némileg eltérhetnek. A FreeBSD 6.0-RELEASE változatától kezdődően a gbde(8) és a geli(8) alrendszerek is használhatóak a lapozóterület titkosítására. A korábbi verziókban egyedül csak a gbde(8) érhető el. Mind a két rendszer az encswap rc.d szkriptet használja.
Az előző szakaszban, vagyis a A lemezpartíciók titkosításában már röviden összefoglaltuk a különböző titkosítással foglalkozó alrendszereket.
Hasonlóan a lemezpartíciók titkosításához, a lapozóterület titkosításának is az a célja, hogy védjük az érzékeny információkat. Képzeljük el, hogy egy olyan alkalmazással dolgozunk, amely jelszavakat kezel. Amíg ezek a jelszavak a memóriában maradnak, addig minden a legnagyobb rendben van. Azonban amikor az operációs rendszer nekilát a fizikai memória felszabadításához kilapozni ezeket az adatokat, a jelszavak titkosítatlanul kerülnek a lemez felületére és egy támadó számára könnyű prédává válnak. Ilyen helyzetekben csak lapozóterület titkosítása jelenthet megoldást.
Megjegyzés: A szakasz további részében a ad0s1b lesz a lapozásra használt partíció.
Egészen mostanáig nem titkosítottuk a lapozóterületet. Így elképzelhető, hogy a lemezre már titkosítatlanul kikerültek jelszavak vagy bármilyen más érzékeny adatok. A csorba kiköszörülésére a lapozóterületen található összes adatot írjuk felül véletlenszerűen generált szeméttel:
# dd if=/dev/random of=/dev/ad0s1b bs=1m
Ha a FreeBSD 6.0-RELEASE vagy újabb változatát használjuk, akkor az /etc/fstab állományban tegyük hozzá a .bde utótagot az a lapozóterülethez tartozó eszköz nevéhez.
# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b.bde none swap sw 0 0
A FreeBSD 6.0-RELEASE előtti kiadások esetében a következő sort is hozzá kell tennünk az /etc/rc.conf állományhoz:
gbde_swap_enable="YES"
A gbde(8) használatához hasonlóan a geli(8) által felajánlott titkosítást is alkalmazhatjuk a lapozóterület védelmére. Ilyenkor az /etc/fstab állományban az .eli utótagot kell hozzátenni a lapozóterülethez tartozó eszköz névhez.
# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b.eli none swap sw 0 0
Az geli(8) az AES algoritmust alapértelmezés szerint 256 bites kulccsal használja.
Ezek az alapértelmezések megváltoztathatóak az /etc/rc.conf állományban a geli_swap_flags beállítás használatával. A következő sor arra utasítja az encswap rc.d szkriptet, hogy a geli(8) és a Blowfish algoritmus használatával hozzon létre egy lapozópartíciót 128 bites kulccsal, 4 kilobyte-os szektormérettel és a “detach on last close” (“lekapcsolás használat után”) beállítással:
geli_swap_flags="-e blowfish -l 128 -s 4096 -d"
A FreeBSD 6.2-RELEASE verzió előtti rendszerekben a következő sort kell használni:
geli_swap_flags="-a blowfish -l 128 -s 4096 -d"
A többi beállításhoz a geli(8) man oldalán a onetime parancs leírását érdemes áttanulmányozni.
Miután újraindítottuk a rendszert, a titkosított lapozóterület helyes működését a swapinfo paranccsal ellenőrizhetjük le.
A gbde(8) esetében:
% swapinfo Device 1K-blocks Used Avail Capacity /dev/ad0s1b.bde 542720 0 542720 0%
Valamint a geli(8) esetében:
% swapinfo Device 1K-blocks Used Avail Capacity /dev/ad0s1b.eli 542720 0 542720 0%
Ez a fejezet a FreeBSD-ben található GEOM rendszert mutatja be. Ez a rendszer tömöríti az általa is alkalmazott fontosabb RAID-vezérlő segédprogramokat. A fejezet nem részletezi, hogy a GEOM konkrétan milyen módon kezeli és vezérli az I/O-t, ahogy azt sem, hogyan működik az alapjául szolgáló alrendszer vagy hogy néz ki annak forráskódja. Az ilyen jellegű információk a geom(4) man oldalon, valamint az ott felsorolt helyeken találhatóak meg. Továbbá, ez a fejezet magukról a RAID-konfigurációkról sem ad pontos tájékoztatást. Kizárólag csak a GEOM által is támogatott RAID-besorolásokról esik szó.
A fejezet elolvasása során megismerjük:
a GEOM segítségével milyen fajtájú RAID támogatást érhetünk el;
hogyan kell használni a rendszer által nyújtott alapvető segédeszközöket a különféle RAID-szintek konfigurálásához, karbantartásához és kezeléséhez;
hogyan kell a GEOM-on keresztül tükrözni, csíkozni, titkosítani és távolról összekapcsolni lemezes eszközöket;
hogyan kell a GEOM rendszerben összekapcsolt lemezeknél felmerülő hibákat felderíteni.
A fejezet elolvasásához ajánlott:
megérteni, hogyan kezeli a FreeBSD a lemezes eszközöket (18 fejezet);
ismerni, hogyan konfiguráljunk és telepítsünk egy új FreeBSD rendszermagot (8 fejezet).
A GEOM rendszer adatszolgáltatókon vagy speciális /dev-állományokon keresztül hozzáférést és vezérlést tesz lehetővé bizonyos osztályokhoz — Master Boot Recordokhoz, BSD-címkékhez stb. Számos szoftveres RAID konfiguráció támogatásával a GEOM transzparens elérést tesz lehetővé mind az operációs rendszer, mind pedig az általa felkínált segédprogramok számára.
A csíkozás módszerét használjuk abban az esetben, amikor több lemezmeghajtót akarunk egyetlen kötetté összevonni. A GEOM lemezalrendszer szoftveres támogatást nyújt a RAID0, más néven a lemezcsíkozás megvalósításához.
Egy RAID0 rendszerben az adatokat blokkokra bontva írjuk fel a tömbben található lemezek között szétosztva. Így ahelyett, hogy meg kellene várnunk 256 kb-nyi adat egyetlen lemezre írását, egy RAID0 rendszerben egyszerre íródik 64 kb-nyi adat négy különböző lemezre, és ezáltal gyorsabb elérést szolgáltat. Ez a gyorsaság további lemezvezérlők használatával még jobban fokozható.
Az egy RAID0-csíkozásban résztvevő lemezek mindegyikének azonos méretűnek kell lennie, mivel az írásra és olvasásra irányuló I/O-kérések a párhuzamos kiszolgálás érdekében összefésülődnek.
Csíkozás kialakítása formázatlan ATA-lemezekkel
Töltsük be a geom_stripe.ko modult:
# kldload geom_stripe
Bizonyosodjuk meg róla, hogy a rendszerünkben található egy szabad csatlakozási pont. Ha majd ezt a kötetet szánjuk rendszerünk gyökérpartíciójának, használjunk erre a célra egy másik könyvtárat, például a /mnt-ot:
# mkdir /mnt
Keressük meg a csíkozásra felhasználni kívánt lemezek eszközneveit, és hozzunk létre belőlük egy új csíkozott eszközt. Például, ha két használatban nem levő, particionálatlan ATA-lemezt, név szerint a /dev/ad2 és /dev/ad3 eszközöket akarjunk csíkozni:
# gstripe label -v st0 /dev/ad2 /dev/ad3 Metadata value stored on /dev/ad2. Metadata value stored on /dev/ad3. Done.
Az így létrejött új köteten most hozzunk létre egy általános címkét, vagy más néven egy partíciós táblát, és telepítsük fel rá a rendszer alapértelmezett rendszerindító programját:
# bsdlabel -wB /dev/stripe/st0
Ezzel meg kellett jelennie további másik két eszköznek is a /dev/stripe könyvtárban, a st0 eszköz mellett. Ezek többek közt az st0a és az st0c. Itt már ki is tudunk alakítani egy állományrendszert az st0a eszközön a newfs használatával:
# newfs -U /dev/stripe/st0a
Sok-sok számot fogunk látni cikázni a képernyőn, majd néhány másodperc múlva befejeződik a folyamat. Létrehoztuk a kötetet, ami most már készen áll a becsatolásra.
A kialakított lemezcsíkozást így tudjuk kézzel csatlakoztatni:
# mount /dev/stripe/st0a /mnt
A csíkozott állományrendszert a rendszerindítás folyamán automatikusan becsatlakoztathatjuk, ha elhelyezzük az alábbi kötetinformációkat az /etc/fstab állományba. Erre a célra stripe néven létrehozunk egy állandó csatlakozási pontot:
# mkdir /stripe # echo "/dev/stripe/st0a /stripe ufs rw 2 2" \ >> /etc/fstab
A geom_stripe.ko modult is automatikusan be kell tölteni a rendszerindítás során. Ehhez a következő sort kell hozzáadni a /boot/loader.conf állományhoz:
# echo 'geom_stripe_load="YES"' >> /boot/loader.conf
A tükrözés számos vállalatnál és háztartásban alkalmazott technológia, amely az adatok megszakítás nélküli lementésére használatos. Amikor tükrözést használunk, az egyszerűen csak arra utal, hogy a B lemez ugyanazokat az adatokat tartalmazza, mint az A lemez. Vagy amikor a C és D lemez tartalma egyezik meg az A és B lemezekével. Függetlenül a lemezek kiosztásától, itt az a lényeg, hogy az egyik lemez teljes területe vagy az egyik partíciója le van másolva. Később az ezen a módon lementett adatok könnyen visszaállíthatóak anélkül, hogy ez a szolgáltatásban vagy az elérhetőségben bármilyen kimaradást okozna, és akár még fizikailag is biztonságosan tárolhatóak.
Először is szereznünk kell két egyforma méretű lemezt, valamint a példák feltételezik, hogy ezek a lemezek közvetlen elérésű (da(4)) SCSI-lemezek.
Tegyük fel, hogy a FreeBSD az első, da0 nevű lemezmeghajtón található, és a gmirror(8) számára ezt szeretnénk megadni az elsődleges adatok tárolásához.
A tükrözés
létrehozásának megkezdése előtt a
kern.geom.debugflags
sysctl(8)
változó megfelelő
beállításával
engedélyezzünk további
nyomkövetési információkat és
hozzáférést az eszközhöz:
# sysctl kern.geom.debugflags=17
Most építsük fel a tükrözést. Kezdjük az egészet a metaadatok elhelyezésével az elsődleges lemezmeghajtón, tehát tulajdonképpen az alábbi parancs segítségével hozzuk létre a /dev/mirror/gm eszközt:
Figyelem: A rendszerindító meghajtóról készített tükrözés adatvesztést okozhat a lemez utolsó szektorában. Ennek kockázata csökkenthető, ha közvetlenül a FreeBSD friss telepítése után állítjuk be a tükrözést.
# gmirror label -vb round-robin gm0 /dev/da0
Erre a rendszernek a következő módon kell reagálnia:
Metadata value stored on /dev/da0. Done.
A GEOM inicializálásához szükségünk lesz a /boot/kernel/geom_mirror.ko modul betöltésére:
# gmirror load
Megjegyzés: A parancs sikeres lefutása után a /dev/mirror könyvtárban létrehoz egy gm0 eszközleírót.
A geom_mirror.ko modul betöltését így tudjuk engedélyezni a rendszer indításakor:
# echo 'geom_mirror_load="YES"' >> /boot/loader.conf
Nyissuk meg az /etc/fstab állományt, és cseréljük le benne az összes korábbi da0 hivatkozást az újonnan kialakított gm0 tükrözés eszközleírójával.
Megjegyzés: Ha vi(1) szövegszerkesztőt használjuk, akkor a következő módon tudjuk ezt egyszerűen megtenni:
# vi /etc/fstabA vi(1) indítása után a :w /etc/fstab.bak kiadásával készítsünk az fstab állomány jelenlegi tartalmáról másolatot. Ezután a :%s/da/mirror\/gm/g parancs használatával cseréljük ki az összes da0 hivatkozást a gm0 eszköz nevére.
Az így keletkező fstab állomány nagyjából következő módon fog kinézni. Most teljesen független, hogy SCSI vagy ATA meghajtókkal dolgozunk, a RAID eszköz neve mindig gm lesz:
# Eszköz Csatlakozási pont Típus Beállítások Dump Menet /dev/mirror/gm0s1b none swap sw 0 0 /dev/mirror/gm0s1a / ufs rw 1 1 /dev/mirror/gm0s1d /usr ufs rw 0 0 /dev/mirror/gm0s1f /home ufs rw 2 2 #/dev/mirror/gm0s2d /store ufs rw 2 2 /dev/mirror/gm0s1e /var ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0
Indítsuk újra a rendszert:
# shutdown -r now
Ennek megfelelően a rendszer indítása közben a da0 eszköz helyett a gm0 eszközt fogjuk használni. Miután sikeresen befejeződött a rendszerindítás, a mount parancs kiadásával a saját szemünkkel is meggyőződhetünk az eredményről:
# mount Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/mirror/gm0s1a 1012974 224604 707334 24% / devfs 1 1 0 100% /dev /dev/mirror/gm0s1f 45970182 28596 42263972 0% /home /dev/mirror/gm0s1d 6090094 1348356 4254532 24% /usr /dev/mirror/gm0s1e 3045006 2241420 559986 80% /var devfs 1 1 0 100% /var/named/dev
A parancs kimenete az elvárásainknak megfelelően remekül néz ki. Zárásképpen a szinkronizálás megkezdéséhez a következő paranccsal illesszük be a da1 eszközt a tükrözésbe:
# gmirror insert gm0 /dev/da1
A tükrözés állapota a létrejöttét követően az alábbi paranccsal ellenőrizhető:
# gmirror status
Az iménti parancs eredményének nagyjából a következőnek kell lennie miután a felépítettük a tükrözést és szinkronizáltuk az adatokat:
Name Status Components mirror/gm0 COMPLETE da0 da1
Hiba esetén a tükrözés továbbra is folytatódik, azonban ilyenkor a példában szereplő COMPLETE helyett a DEGRADED jelzést fogjuk látni.
Ha a rendszerünk ehhez hasonló módon indul:
ffs_mountroot: can't find rootvp Root mount failed: 6 mountroot>
Indítsuk újra a gépünket a kikapcsoló gomb vagy a reset segítségével. A rendszerindító menüben válasszuk a hatodik opciót (6). Ennek eredményeképpen megkapjuk a loader(8) parancssorát. Töltsük be a modult manuálisan:
OK? load geom_mirror OK? boot
Ha ez beválik, akkor valamiért a modult nem sikerült rendesen betölteni. Ellenőrizzük, hogy a /boot/loader.conf állományban a neki szereplő megfelelő bejegyzés helyesen szerepel. Amennyiben a probléma továbbra is fennáll, helyezzük el a következő sort a rendszermag konfigurációs állományába, majd fordítsuk újra és telepítsük:
options GEOM_MIRROR
Ezzel várhatóan orvosoltuk a problémát.
A lemezek tükrözésének egyik legcsodálatosabb előnye, hogy a menet közben meghibásodott meghajtókat gond, és így feltehetően adatvesztés nélkül ki tudjuk cserélni.
Vegyük az iménti RAID-1 konfigurációt, és tételezzük fel, hogy a da1 eszköz felmondta a szolgáltatot és cserére szorul. A meghajtó leváltásához keressük meg a hibás eszközt, majd állítsuk le a rendszert. Tegyük be a helyére az újat és indítsuk újra a rendszerünket. Miután elindult az operációs rendszer, a következő parancsok kiadásával tudjuk logikailag is lecserélni a meghibásodott lemezt:
# gmirror forget gm0 # gmirror insert gm0 /dev/da1
Innen a gmirror status
parancsával kísérhetjük figyelemmel a
tükrözés újraszervezésének
menetét. Csupán ennyi az egész.
A GEOM távoli eszközök, például lemezek, CD-meghajtók stb. használatát is támogatja a hálózati illesztést szolgáló segédprogramjaival, hasonlóan az NFS-hez.
Kezdésként létre kell hozni a megosztást elősegítő állományt. Ez az állomány határozza meg, ki és milyen szinten jogosult használni a megosztott erőforrásokat. Például ha megosztjuk az első SCSI-lemezen a negyedik slice-ot, az alábbi /etc/gg.exports állomány tökéletesen megfelel:
192.168.1.0/24 RW /dev/da0s4d
Ezzel a belső hálózaton levő összes számítógép képes lesz elérni a da0s4d partíción található állományrendszert.
Az eszköz megosztásához először gondoskodnunk kell róla, hogy ne legyen csatlakoztatva, majd ezután indítsuk el a ggated(8) szerver démonját:
# ggated
Ezt követően a mount felhasználásával csatoljuk az eszközt a kliensen, az alábbi parancs kiadásával:
# ggatec create -o rw 192.168.1.1 /dev/da0s4d ggate0 # mount /dev/ggate0 /mnt
Innentől kezdve az eszköz elérhető lesz a /mnt csatlakozási ponton keresztül.
Megjegyzés: Fontos kiemelnünk, hogy ez a művelet eredménytelen, ha az adott eszközt vagy maga a szerver, vagy pedig valamelyik másik kliens már korábban csatolta.
Amikor az eszközre már nincs tovább szükségünk, biztonságosan le tudjuk választani az umount(8) paranccsal, hasonlóan bármelyik más lemezes eszközhöz.
A rendszer indítása közben a FreeBSD rendszermagja a talált eszközöknek megfelelően mindegyiknek létrehoz egy-egy eszközleírót. Ezzel a próbálgatásos módszerrel együtt jár néhány gond, például mi történik akkor, ha az új lemezes eszközt USB-n keresztül adjuk a rendszerhez? Nagyon valószínű, hogy ez az eszköz megkapja a da0 nevet és ezzel az eredeti da0 eszköz eltolódik a da1 névhez. Ennek köszönhetően az /etc/fstab állományban felsorolt állományrendszerek csatolása veszélybe kerül, aminek következtében akár meghiúsulhat a rendszerindulás is.
Az egyik lehetséges megoldása a problémának, ha sorbafűzzük a SCSI eszközeinket, és így a SCSI-kártyához kapcsolt újabb eszköz egy addig nem használt számot fog birtokba venni. Mi helyzet azonban az USB-s eszközökkel, amelyek kiüthetik az elsődleges SCSI-lemezeinket? Ez egyébként azért történhet meg, mert az USB-s eszközöket általában hamarabb keresi a rendszer, mint a SCSI kártyán levő eszközöket. Megoldhatjuk úgy ezt a gondot, hogy csak azután csatlakoztatjuk az említett eszközöket, miután a rendszer elindult. Megoldhatjuk viszont úgy is, hogy csak egyetlen ATA-meghajtót használunk és soha nem soroljuk fel a SCSI eszközöket az /etc/fstab állományban.
Ezeknél kínálkozik azonban egy jobb megoldás! A glabel nevű segédprogrammal a rendszergazda vagy a felhasználó úgy tudja címkézni a lemezmeghajtókat, hogy azok a /etc/fstab állományban szereplő címkéket használják. Mivel a glabel a címkét az adott szolgáltató utolsó szektorában tárolja el, ez a címke megmarad az újraindítás után is. Ha ezt a címkét eszközként használjuk, az állományrendszerek mindig ugyanarról a meghajtóról fognak csatolódni, függetlenül attól, hogy milyen eszközleírón keresztül érjük el ezeket.
Megjegyzés: Egyáltalán nem állítottuk, hogy egy címke csak állandó lehet. A glabel segítségével egyaránt létre lehet hozni állandó és átmeneti címkéket, de csak az állandó címke képes az újraindítás után is megmaradni. A két címketípus közti különbségeket a glabel(8) man oldal tárgyalja részletesebben.
A címkéknek két típusa létezik, az általános címke és az állományrendszer-címke. A címkék lehetnek állandóak vagy ideiglenesek. Az állandó címkék a tunefs(8) vagy newfs(8) parancsokkal hozhatóak létre. Ezek a címkék az adott állományrendszer típusa alapján elnevezett alkönyvtárakban jönnek létre a /dev könyvtáron belül. Például az UFS2 állományrendszer-címkék a /dev/ufs könyvtárban keletkeznek. Állandó címkék a glabel label paranccsal hozhatóak létre. Az ilyen címkék nem függenek az állományrendszerek típusától, a /dev/label könyvtárban jönnek létre.
Az ideiglenes címkék a következő induláskor elvesznek. Ezek a címkék a /dev/label könyvtárban keletkeznek, és ideálisak a kísérletezgetésre. Ideiglenes címkéket a glabel create paranccsal hozhatunk létre. Ezzel kapcsolatosan részletesebb felvilágosítást a glabel(8) man oldalon találhatunk.
Ha egy UFS2 állományrendszerre szeretnénk tenni egy állandó címkét az adataink megsemmisítése nélkül, adjuk ki a következő parancsot:
# tunefs -L home /dev/da3
Figyelem: Ha az érintett állományrendszeren nincs üres hely, ennek a parancsnak a használata adatvesztéshez vezethet. Ilyen esetben inkább a felesleges állományok eltávolításával kellene törődnünk, nem pedig címkék hozzáadásával.
Ezután egy címkének kell megjelennie a /dev/ufs könyvtárban, amelyet vegyünk is fel az /etc/fstab állományba:
/dev/ufs/home /home ufs rw 2 2
Megjegyzés: Az állományrendszert tilos csatolni a tunefs futtatása alatt!
Most már a megszokott módon csatolhatjuk az állományrendszert:
# mount /home
Ettől a ponttól kezdve, amíg a geom_label.ko modul betöltődik a rendszerindítás során a /boot/loader.conf állományon keresztül, vagy a GEOM_LABEL opció megtalálható a rendszermag konfigurációs állományában, az eszközleíró a rendszerre nézve minden komolyabb következmény nélkül megváltozhat.
Állományrendszereket létrehozhatunk
alapértelmezett címkével is a
newfs -L
paraméterével. Erről részletesebben a
newfs(8) man oldalon olvashatunk.
Az alábbi paranccsal tudjuk törölni a címkét:
# glabel destroy home
A következő példában azt láthatjuk, hogyan címkézzük fel a rendszerindító lemezünk partícióit.
Példa 19-1. Partíciók címkézése a rendszerindító lemezen
A rendszerindításra használt lemezen levő partíciók felcímkézésével a rendszer képes lesz akkor is minden probléma nélkül elindulni, amikor áthelyezzük egy másik vezérlőre vagy átrakjuk egy másik számítógépbe. Például most tegyük fel, hogy van egy ATA csatolós lemezünk, amelyet a rendszer ad0 néven ismert fel. Továbbá azt is feltételezzük, hogy a FreeBSD telepítése esetén megszokott partícionálási sémát választottuk, ahol /, /var, /usr és /tmp állományrendszereink, valamint egy lapozóterületünk van.
Indítsuk újra a rendszerünket és a loader(8) menüjében a 4 billentyű lenyomásával válasszuk az egyfelhasználós módot. Ezt követően adjuk ki a következő parancsokat:
# glabel label rootfs /dev/ad0s1a GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs # glabel label var /dev/ad0s1d GEOM_LABEL: Label for provider /dev/ad0s1d is label/var # glabel label usr /dev/ad0s1f GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr # glabel label tmp /dev/ad0s1e GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp # glabel label swap /dev/ad0s1b GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap # exit
A rendszer indítása ezután többfelhasználós módban folytatódik. A rendszerindítás befejeződése után nyissuk meg az /etc/fstab állományt és írjuk át a hagyományos eszközneveket a hozzájuk tartozó címkékre. Az /etc/fstab végleges változata ennek megfelelően körülbelül így fog kinézni:
# Eszköz Csatlakozási pont Típus Beállítások Dump Menet /dev/label/swap none swap sw 0 0 /dev/label/rootfs / ufs rw 1 1 /dev/label/tmp /tmp ufs rw 2 2 /dev/label/usr /usr ufs rw 2 2 /dev/label/var /var ufs rw 2 2
A rendszer most már újraindítható. Ha mindent jól csináltunk, akkor a rendszer indítása problémáktól mentesen fog zajlani és a mount parancs eredménye a következő lesz:
# mount /dev/label/rootfs on / (ufs, local) devfs on /dev (devfs, local) /dev/label/tmp on /tmp (ufs, local, soft-updates) /dev/label/usr on /usr (ufs, local, soft-updates) /dev/label/var on /var (ufs, local, soft-updates)
A FreeBSD 7.2 kiadásától kezdődően a glabel(8) osztály az UFS esetén támogatja az ufsid, az állományrendszer egyedi rendszerszintű azonosítójából származtatott új címketípus használatát. Ezek a címkék a rendszer indítása során a /dev/ufsid könyvtárban jönnek automatikusan létre. Az ufsid címkéken keresztül tudunk az /etc/fstab állományban állományrendszereket csatlakoztatni. A jelenleg aktív állományrendszereket és azok ufsid azonosítóit a glabel status paranccsal tudjuk lekérdezni:
% glabel status Name Status Components ufsid/486b6fc38d330916 N/A ad4s1d ufsid/486b6fc16926168e N/A ad4s1f
Ebben a példában az ad4s1d képviseli a /var állományrendszert, míg a ad4s1f a /usr állományrendszert. Az adott ufsid értékek megadásával az /etc/fstab állományban a következőképpen tudjuk csatlakoztatni ezeket az állományrendszereket:
/dev/ufsid/486b6fc38d330916 /var ufs rw 2 2 /dev/ufsid/486b6fc16926168e /usr ufs rw 2 2
Minden ufsid címkével rendelkező partíció csatlakoztatható ezen a módon. Ekkor nem kell manuálisan létrehoznunk a számunkra állandó címkéket, így automatikusan élvethezhetjük az eszköznévtől független csatlakoztatás előnyeit.
A FreeBSD 7.0-ás verziójának megjelenésével egy rég várt kiegészítés, a naplózás vált végre elérhetővé vált. Maga az implementáció a GEOM alrendszeren keresztül érhető el, és a gjournal(8) segédprogram segítségével könnyedén beállítható.
Mit is jelent a naplózás? A naplózás támogatásával a rendszer egy naplót vezet az állományrendszert érintő tranzakciókról — például az olyan változtatásokról, amelyek egy komplett írási műveletet eredményeznek — mielőtt még a metaadatok és lemezírási műveletek szabályosan befejeződnének. Ez a könyvelés később visszajátszható az állományrendszerben lezajlott tranzakciók reprodukálásához, és ezzel megelőzhetőek az állományrendszerben keletkező esetleges ellentmondások.
Ez egy újabb módszer az adatvesztés és az állományrendszerben előforduló ellentmondások elkerülésére. Eltérően a Soft Updates módszertől, ahol a metaadatok frissítését biztosítják és követik nyomon, vagy a Snapshots módszertől, ahol pillanatképeket tárolunk az állományrendszerről, itt egy konkrét naplót tárolunk a lemez erre a célra fenntartott részén, amely bizonyos esetekben akár egy teljes külön merevlemez is lehet.
Ellentétben a többi naplózó állományrendszertől, a gjournal módszere blokk alapú és nem az állományrendszer részeként került implementálásra — csupán a GEOM egyik bővítménye.
A gjournal támogatásához a FreeBSD rendszermag konfigurációs állományában be kell állítani a következő opciót — amely a 7.0 és későbbi rendszereken alapbeállítás:
options UFS_GJOURNAL
Amennyiben naplózással rendelkező köteteket szeretnénk a rendszerindítás során csatlakoztatni, a /boot/loader.conf állományban következő sor hozzáadásával töltessük be a geom_journal.ko modult:
geom_journal_load="YES"
Szükség esetén ezt a funkciót akár a rendszermagba is beépíthetjük, ha felvesszük a következő sort a rendszermag konfigurációs állományába:
options GEOM_JOURNAL
Ha ezt aktiváltuk, egy szabad állományrendszeren az alábbi lépéseken keresztül tudunk létrehozni egy naplót, feltéve, hogy a da4 egy új SCSI-meghajtó:
# gjournal load # gjournal label /dev/ad4
Ennél a pontnál lennie kell egy /dev/da4 és egy /dev/da4.journal eszközleírónak. Hozzunk létre egy állományrendszert ezen az eszközön:
# newfs -O 2 -J /dev/da4.journal
Ez a parancs létrehoz egy UFS2 állományrendszert a naplóval rendelkező eszközön.
Csatoljuk is be a mount segítségével az eszközt kívánt csatlakozási pontra:
# mount /dev/da4.journal /mnt
Megjegyzés: Ha több slice-unk is van, akkor a napló mindegyik slice-hoz külön létrejön. Például, ha az ad4s1 és ad4s2 egyaránt slice-ok, akkor a gjournal legyártja az ad4s1.journal és ad4s2.journal eszközleírókat.
A jobb teljesítmény elérése érdekében kívánatos lehet a naplót egy másik lemezen tartani. Ilyen esetekben a naplózás bekapcsolásához a naplót biztosító szolgáltatót vagy tárolóeszközt a naplózni kívánt eszköz után kell szerepeltetni. A naplózás akár az aktuálisan használt állományrendszeren is aktiválható a tunefs használatával. Az állományrendszer módosításakor viszont mindig érdemes biztonsági másolatot készíteni! Az esetek többségében a gjournal hibát fog jelezni, mivel nem tudja létrehozni a naplót, azonban ez nem védi meg az adatainkat a tunefs helytelen használata által okozott sérülésektől.
A rendszerindító lemezen is lehet naplózást használni. Ennek részleit a Naplózó UFS használata asztali számítógépeken című cikkből ismerhetjük meg.
Az állományrendszerek szerves részét képezik napjaink operációs rendszereinek. Segítségükkel a felhasználók adatokat tölthetnek fel és tárolhatnak a számítógépen, szabályozhatják a hozzáférésüket, és természetesen működtethetik a merevlemezeiket. A különféle operációs rendszerekben általában azért annyi közös, hogy mindannyiukhoz tartozik egy natív, vagyis általuk alapból ismert állományrendszer. A FreeBSD esetében ezt konkrétan a Fast File System vagy röviden FFS, amely az eredeti Unix™ File System, vagy más néven UFS megoldásain alapszik. A FreeBSD tehát a merevlemezeken ebben a natív állományrendszerben tárol adatokat.
A FreeBSD természetesen ezen kívül még ismer számos egyéb állományrendszert, ezáltal képes adatokat olvasni más operációs rendszerek részéről is kezelhető partíciókról, például helyi USB-eszközökről, flashkártyákról és merevlemezekről. Továbbá ismeri néhány más operációs rendszer natív állományrendszerét, mint például a Linux Extended File System (EXT) vagy éppen a Sun Z File System (ZFS).
FreeBSD alatt az egyes állományrendszerek ismerete változó. Bizonyos esetekben elegendő csupán egy megfelelő modul betöltése, máskor viszont egy komplett eszközkészlet segítségével tudunk velük dolgozni. Ez a fejezet igyekszik a Sun-féle Z állományrendszerrel kezdődően bemutatni a FreeBSD felhasználói számára más állományrendszerek használatát.
A fejezet elolvasása során megismerjük:
a natív és támogatott állományrendszerek közti különbségeket;
a FreeBSD által ismert állományrendszereket;
hogyan engedélyezzünk, állítsunk be és érjünk el nem natív állományrendszereket.
A fejezet elolvasásához ajánlott:
a UNIX és FreeBSD alapjainak ismerete (3 fejezet);
a rendszermag konfigurációjának és fordításának alapvető fogásainak ismerete (8 fejezet);
a különböző külső fejlesztésű szoftverek telepítésének ismerete (4 fejezet);
a lemezek és egyéb tárolóeszközök, valamint a FreeBSD alatt az eszközök elnevezésének minimális ismerete (18 fejezet).
A Sun Z állományrendszere egy új, közös tárolási módszeren nyugvó technológia. Ez annyit jelent a gyakorlatban, hogy mindig csak annyi helyet foglal, amennyire az adatoknak közvetlenül szüksége van. Emellett úgy alakították ki, hogy az adatok épségét minél inkább védje, ezért például megtalálhatjuk benne a pillanatképek készítését, a másolatok létrehozását és az adatok sértetlenségének ellenőrzését. Továbbá egy RAID-Z néven bemutatott új replikációs modellt is támogat. A RAID-Z alapvetően a RAID-5 megoldásához hasonlít, azonban írás során keletkező hibák ellen igyekszik védelmet nyújtani.
A ZFS funkcióit megvalósító alrendszer alapértelmezés szerint meglehetősen sok erőforrást kíván, ezért nem árt a legjobb hatékonyságra behangolnunk a mindennapokban felmerülő igények mentén. Mivel ez még egy fejlesztés és tesztelés alatt álló része a FreeBSD-nek, elképzelhető, hogy ez a jövőben változik, viszont jelen pillanatban a következő lépéseket javasoljuk.
Hasznos, ha a rendszerünkben legalább 1 GB memória található, de inkább 2 vagy több az ajánlott. Az itt szereplő példákban ehelyett azonban mindenhol csupán 1 GB-ot feltételezünk.
Néhányaknak sikerült 1 GB-nál kevesebb központi memóriával is használni ezt az állományrendszert, azonban ilyenkor nagyon könnyen előfordulhat, hogy komolyabb terhelés esetén a FreeBSD a memória elfogyása miatt egyszerűen összeomlik.
A rendszermag konfigurációs állományából javasolt eltávolítani az összes nem használt meghajtót és funkciót. A legtöbb meghajtó egyébként is elérhető modul formájában, és a /boot/loader.conf állományon keresztül minden gond nélkül betölthetőek.
Az i386 architektúránál szükségünk lesz az alábbi konfigurációs beállítás megadására, majd a rendszermag újrafordítására, végül a rendszer újraindítására:
options KVA_PAGES=512
Ezzel az opcióval a rendszermag
címterét növeljük meg, aminek
eredményeképpen a vm.kvm_size
változót immáron az eredetileg
1 GB-os (PAE használata
esetén pedig 2 GB-os) határ felé
tudjuk állítani. Az itt megadandó
értéket úgy tudjuk meghatározni,
ha a beállítani kívánt
méret MB-okban számolt
értékét elosztjuk néggyel. A
példában tehát az 512
egy 2 GB nagyságú címteret ad
meg.
A kmem címterét az összes FreeBSD által ismert architektúra esetében érdemes megnövelnünk. A teszteléshez használt rendszeren 1 GB fizikai memória állt rendelkezésre, itt a /boot/loader.conf állományban a következő értékek megadásával minden remekül működött:
vm.kmem_size="330M" vm.kmem_size_max="330M" vfs.zfs.arc_max="40M" vfs.zfs.vdev.cache.size="5M"
A ZFS finomhangolásával kapcsolatos további javasolatokat a http://wiki.freebsd.org/ZFSTuningGuide címen olvashatunk.
A Z állományrendszerhez létezik egy olyan mechanizmus, amelyen keresztül már a FreeBSD indítása során el tudjuk végezni a közös tárolók csatlakoztatását:
# echo 'zfs_enable="YES"' >> /etc/rc.conf # /etc/rc.d/zfs start
A leírás fennmaradó részében feltételezzük, hogy három SCSI-lemezünk van, amelyeket rendre a da0, da1 és da2 eszközök formájában tudunk elérni. Az IDE lemezek tulajdonosainak értelemszerűen itt majd az ad eszközneveket kell használniuk a SCSI-eszközök hivatkozásai helyett.
A zpool kiadásával egyetlen lemezen is létre tudunk hozni egy egyszerű, nem redundáns ZFS partíciót:
# zpool create minta /dev/da0
Az új közös tárterület a df parancs felhasználásával rögtön láthatóvá válik:
# df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1a 2026030 235230 1628718 13% / devfs 1 1 0 100% /dev /dev/ad0s1d 54098308 1032846 48737598 2% /usr minta 17547136 0 17547136 0% /minta
A parancs kimenetében tisztán láthatjuk, hogy a minta nevű tároló nem csak egyszerűen elkészült, hanem egyúttal csatolódott. Innentől már a többi állományrendszerhez hasonlóan tetszőlegesen elérhető, az alábbi példához hasonlóan állományok hozhatóak rajta létre vagy listázható a tartalma:
# cd /minta # ls # touch proba # ls -al total 4 drwxr-xr-x 2 root wheel 3 Aug 29 23:15 . drwxr-xr-x 21 root wheel 512 Aug 29 23:12 .. -rw-r--r-- 1 root wheel 0 Aug 29 23:15 proba
Sajnos azonban ez a tároló még ki sem használja a ZFS által felkínált lehetőségeket. Ezért most hozzunk létre egy állományrendszert ezen a tárolón belül és engedélyezzük rajta a tömörítést:
# zfs create minta/tomoritett # zfs set compression=gzip minta/tomoritett
A minta/tomoritett most már egy tömörített Z állományrendszer. Próbáljuk ki mit tud, és másoljunk néhány nagyobb méretű állományt a /minta/tomoritett könyvtárba.
Ezután a tömörítés akár ki is kapcsolható:
# zfs set compression=off minta/tomoritett
Az állományrendszer leválasztásához adjuk ki a lenti parancsot, majd ellenőrizzük az eredményét a df használatával:
# zfs umount minta/tomoritett # df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1a 2026030 235232 1628716 13% / devfs 1 1 0 100% /dev /dev/ad0s1d 54098308 1032864 48737580 2% /usr minta 17547008 0 17547008 0% /minta
Tegyük ismét elérhetővé és csatlakoztassuk újra az állományrendszert, majd nézzük meg az eredményt a df paranccsal:
# zfs mount minta/tomoritett # df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1a 2026030 235234 1628714 13% / devfs 1 1 0 100% /dev /dev/ad0s1d 54098308 1032864 48737580 2% /usr minta 17547008 0 17547008 0% /minta minta/tomoritett 17547008 0 17547008 0% /minta/tomoritett
A közös terület és az állományrendszer mellesleg a mount parancs kimenetéből is megfigyelhető:
# mount /dev/ad0s1a on / (ufs, local) devfs on /dev (devfs, local) /dev/ad0s1d on /usr (ufs, local, soft-updates) minta on /minta (zfs, local) minta/tomoritett on /minta/tomoritett (zfs, local)
Látható, hogy a létrehozásuk után a Z állományrendszerek teljesen hétköznapi módon viselkednek, de természetesen további lehetőségek is elérhetőek hozzájuk. A következő példában adat néven készítünk egy új állományrendszert. Mivel ide majd nagyon fontos állományokat akarunk elhelyezni, állítsuk be, hogy minden adatblokkból két példány legyen:
# zfs create minta/adat # zfs set copies=2 minta/adat
A df újbóli kiadásával most már látható is ez az állományrendszer és annak tárfoglalása:
# df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1a 2026030 235234 1628714 13% / devfs 1 1 0 100% /dev /dev/ad0s1d 54098308 1032864 48737580 2% /usr minta 17547008 0 17547008 0% /minta minta/tomoritett 17547008 0 17547008 0% /minta/tomoritett minta/adat 17547008 0 17547008 0% /minta/adat
Vegyük észre, hogy a közös területen levő állományrendszerek mindegyikén ugyanannyi szabad terület van. A df segítségével a későbbiekben remekül megfigyelhető lesz, hogy az egyes állományrendszerek mindig csak annyi területet foglalnak el a közös területből, amennyire abban a pillanatban ténylegesen szükségünk van. A Z állományrendszerek esetén megszűnik a partíciók és kötetek fogalma, és több állományrendszer tárolódik egyazon közös területen. Ha már nem akarjuk használni, egyszerűen csak töröljük le az állományrendszereket és ezt a közös tárolót:
# zfs destroy minta/tomoritett # zfs destroy minta/adat # zpool destroy minta
Nyilván tapasztalhattunk már, hogy a lemezeink olykor menthetetlenül meghibásodnak. Amikor egy lemezes meghajtó tönkremegy, a rajta tárolt adatok általában elvesznek. Az ilyen jellegű kellemetlenségek elkerülésének egyik módja az ún. RAID-tömbök építése. A következő szakaszban bemutatjuk, hogy a Z állományrendszerek esetén hogyan tudunk ilyen tömböket készíteni.
Korábban már utaltunk rá, hogy ebben a szakaszban három SCSI-lemez, vagyis a da0, da1 és da2 eszközök használatát feltételezzük (vagy természetesen ad0 és így tovább, ha IDE-lemezeket használunk). Egy RAID-Z formátumú közös tároló készítéséhez a következő parancsot kell kiadni:
# zpool create tarolo raidz da0 da1 da2
Megjegyzés: A Sun ajánlása szerint egy RAID-Z konfigurációban legalább három, legfeljebb kilenc lemezt javasolt alkalmazni. Ha egyetlen közös tárolóban esetleg tíznél több lemezt szeretnénk felhasználni, akkor érdemes inkább kisebb RAID-Z csoportokra felosztani ezeket. Ha viszont csak két lemezünk van, de továbbra is redundanciára lenne szükségünk, hozzunk helyette létre egy ZFS tükrözést. Ezzel kapcsolatban részletesebben a zpool(8) man oldalon keresztül tájékozódhatunk.
Ennek hatására tehát keletkezik egy tarolo nevű Z-tároló. Ez a korábbiakhoz hasonló módon ellenőrizhető is a mount(8) és df(1) parancsokon keresztül. Természetesen az iménti listába további lemezeszközök tetszőlegesen felvehetőek. Most hozzunk létre ezen a közös területen egy felhasznalok nevű állományrendszert, ahová majd a felhasználók adatait fogjuk tenni:
# zfs create tarolo/felhasznalok
Miután ezzel megvagyunk, az imént létrehozott állományrendszerre nyugodtan beállíthatunk tömörítést és biztonsági másolatokat. Ebben az alábbi parancsok lesznek a segítségünkre:
# zfs set copies=2 tarolo/felhasznalok # zfs set compression=gzip tarolo/felhasznalok
Ezt követően költöztessük át a felhasználókat, vagyis másoljuk át az adataikat ide és hozzuk létre a megfelelő szimbolikus linkeket:
# cp -rp /home/* /tarolo/felhasznalok # rm -rf /home /usr/home # ln -s /tarolo/felhasznalok /home # ln -s /tarolo/felhasznalok /usr/home
A felhasználók adatai immáron a frissen létrehozott /tarolo/felhasznalok állományrendszeren tárolódnak. Próbáljuk ki, hozzunk létre egy új felhasználót és jelentkezzünk be vele.
Készítsünk most egy pillanatképet is, amelyet aztán később szükség esetén vissza tudunk állítani:
# zfs snapshot tarolo/felhasznalok@08-08-30
A snapshot csak valós állományrendszerekkel működik, könyvtárakra vagy állományokra nem. A nevében a @ karakter választja el egymástól a hozzá tartozó címkét az állományrendszer vagy kötet nevétől. Ha netalán a felhasználói könyvtárak valamiért megsérültek volna, a következő paranccsal állíthatóak vissza:
# zfs rollback tarolo/felhasznalok@08-08-30
Az adott időpontban aktív pillanatképeket az adott állományrendszer .zfs/snapshot könyvtárában találhatjuk meg. Például az előbb készített pillanatkép az alábbi paranccsal nézhető meg:
# ls /tarolo/felhasznalok/.zfs/snapshot
Ha ebből elindulunk, akkor pillanatok alatt írható egy olyan szkript, amely a felhasználók adatairól havonta készít egy pillanatképet. Ilyenkor azonban fontos számításba vennünk, hogy az idővel felgyülemlő pillanatképek rengeteg helyet el tudnak foglalni. A korábbi pillanatkép így távolítható el:
# zfs destroy tarolo/felhasznalok@08-08-30
Miután alaposan kipróbáltuk a /tarolo/felhasznalok néven létrehozott állományrendszerünket, állítsuk be véglegesen ez eddigi /home állományrendszer helyére:
# zfs set mountpoint=/home tarolo/felhasznalok
Ekkor a df és mount parancsok használatával meggyőződhetünk róla, hogy ezt az állományrendszert innentől már valóban a /home könyvtárnak tekintjük:
# mount /dev/ad0s1a on / (ufs, local) devfs on /dev (devfs, local) /dev/ad0s1d on /usr (ufs, local, soft-updates) tarolo on /tarolo (zfs, local) tarolo/felhasznalok on /home (zfs, local) # df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1a 2026030 235240 1628708 13% / devfs 1 1 0 100% /dev /dev/ad0s1d 54098308 1032826 48737618 2% /usr tarolo 26320512 0 26320512 0% /tarolo tarolo/felhasznalok 26320512 0 26320512 0% /home
Ezzel lényegében befejeztük a RAID-Z tömb konfigurációját. Az állományrendszerek állapotára vonatkozóan a periodic(8) alkalmazásával akár naponta kérhetünk ellenőrzést:
# echo 'daily_status_zfs_enable="YES"' >> /etc/periodic.conf
Minden szoftveres RAID implementáció kínál valamilyen megoldást az állapotának ellenőrzésére, ez alól tulajdonképpen a ZFS sem kivétel. A RAID-Z eszközök állapota a következő paranccsal kérdezhető le:
# zpool status -x
Ezt az üzenetet láthatjuk, amikor minden tároló kifogástalanul működik és semmilyen probléma sincs:
all pools are healthy
Ha viszont valamilyen gond lenne valamelyik lemezzel, például leállt, akkor az előbbi parancs eredménye ehhez lesz hasonló:
pool: tarolo state: DEGRADED status: One or more devices has been taken offline by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. scrub: none requested config: NAME STATE READ WRITE CKSUM tarolo DEGRADED 0 0 0 raidz1 DEGRADED 0 0 0 da0 ONLINE 0 0 0 da1 OFFLINE 0 0 0 da2 ONLINE 0 0 0 errors: No known data errors
A válasz szerint az eszközt az adminisztrátor állította le. Ez ennél a példánál valóban igaz. Lemezeket a következő módon lehet leállítani:
# zpool offline tarolo da1
Így miután leállítottuk a rendszert, a da1 eszköz cserélhető. A rendszer soron következő indításakor ezzel a paranccsal tudjuk jelezni logikailag is a lemez cseréjét:
# zpool replace tarolo da1
Nézzük meg újra a tömb
állapotát, de ezúttal a -x
kapcsoló megadása nélkül, mivel csak
így fogjuk látni:
# zpool status tarolo pool: tarolo state: ONLINE scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008 config: NAME STATE READ WRITE CKSUM tarolo ONLINE 0 0 0 raidz1 ONLINE 0 0 0 da0 ONLINE 0 0 0 da1 ONLINE 0 0 0 da2 ONLINE 0 0 0 errors: No known data errors
A példa szerint minden megfelelően működik.
Előzetesen már szó esett róla, hogy a ZFS képes a tárolt adatok sértetlenségének ellenőrzésére. Az új állományrendszerek létrehozásánál ez a lehetőség automatikusan aktiválódik, de tetszés szerint letiltható:
# zfs set checksum=off tarolo/felhasznalok
Ez a lépés viszont nem feltétlenül jó döntés, mivel az adatintegritás megtartásához felhasznált ellenőrző összegek nagyon kevés helyet foglalnak és meglehetősen hasznosak. Emellett semmilyen észlelhető lassulást nem okoznak az állományrendszer használata során. Ha engedélyezzük, a ZFS ilyen ellenőrző összegek segítségével folyamatosan figyelni tudja az adatok épségét. Ezt az ellenőrzést a scrub paranccsal válthatjuk ki. Nézzük meg például a tarolo esetében:
# zpool scrub tarolo
Ez a vizsgálat a tárolt adatok mennyiségétől függően nagyon sokáig is eltarthat, illetve rengeteg lemezműveletet foglal magában, ezért egyszerre csak egy ilyen futtatása javasolt. Miután befejeződött, a tároló állapota az eredményének megfelelően frissül, amelyet közvetlenül utána le is kérdezhetünk:
# zpool status tarolo pool: tarolo state: ONLINE scrub: scrub completed with 0 errors on Sat Aug 30 19:57:37 2008 config: NAME STATE READ WRITE CKSUM tarolo ONLINE 0 0 0 raidz1 ONLINE 0 0 0 da0 ONLINE 0 0 0 da1 ONLINE 0 0 0 da2 ONLINE 0 0 0 errors: No known data errors
A példában látható az utolsó ellenőrzés ideje. Ezen lehetőség használatával hosszú időn keresztül szavatolni tudjuk az adataink épségét.
A Z állományrendszerrel kapcsolatos további beállítási lehetőségekről a zfs(8) és zpool(8) man oldalakon olvashatunk.
Nem számít, milyen lemezeink is vannak, ugyanis mindig adódnak velük kapcsolatban gondjaink:
Kicsik.
Lassúk.
Nem elég megbízhatóak.
Ezekre a problémákra javasoltak és meg is valósítottak számos megoldást. A felhasználók egy része általában úgy védekezik ellenük, hogy több, gyakran redundánsan tároló lemezt használ. A különféle kártyák és hardveres RAID-vezérlők támogatása mellett a FreeBSD alaprendszerében megtalálható egy blokkos eszközmeghajtóként a Vinum kötetkezelő is, amellyel virtuális lemezmeghajtókat lehet létrehozni. Tehát a Vinum egy olyan ún. kötetkezelő, vagyis virtuális lemezkezelő, ami az említett három problémára próbál megoldást adni. A Vinum a hagyományos lemezes tárolásnál jóval nagyobb rugalmasságot, teljesítményt és megbízhatóságot biztosít, valamint ismeri a RAID-0, RAID-1 és RAID-5 modelleket külön-külön és kombinálva is.
Ebben a fejezetben összefoglaljuk a hagyományos lemezes tárolás jellegzetes problémáit és bemutatjuk a Vinum kötetkezelőt.
Megjegyzés: A FreeBSD 5-ös verziójától kezdve a Vinumot újraírták a GEOM-nak megfelelően (19 fejezet), megtartva az eredeti elgondolásokat, elnevezéseket és a lemezen tárolt metaadatok formátumát. Ezt az újraírt változatot nevezik gvinumnak (GEOM vinum). A szövegben a Vinumra kizárólag csak általánosságban hivatkozunk, függetlenül az implementációjától. Most már az összes parancsot a gvinum használatával kell kiadni, illetve a hozzá tartozó modul neve vinum.ko-ról geom_vinum.ko-ra változott és a megfelelő eszközleírók a /dev/vinum könyvtár helyett a /dev/gvinum könyvtárban találhatóak. A FreeBSD 6. verziójától pedig a régi Vinum implementáció többé már nem is része az alaprendszernek.
A lemezek kapacitása ugyan növekszik, de velük együtt a tárigények is. Ezért gyakran érezzük úgy, hogy a rendelkezésünkre álló lemezek tárkapacitását meghaladó állományrendszerre lenne szükségünk. Kétségtelen, hogy ez a probléma messze nem akkora jelentőségű, mint például tíz évvel ezelőtt, de még mindig fennáll. Egyes rendszerek ezt úgy hidalták át, hogy létrehoztak egy olyan absztrakt eszközt, amely az adatokat több lemezen tárolja el.
Napjaink rendszerei szinte állandóan egyszerre több adathoz is hozzá akarnak férni. Például egy nagy forgalmú FTP vagy HTTP szerver több 100 Mbit/s sebességű kapcsolattal is csatlakozhat a világhálóhoz, amelyeken keresztül párhuzamosan többezernyi tranzakciót is folytathat, ami jelentősen meghaladja a legtöbb lemez átlagos átviteli sebességét.
A jelenleg kapható lemezek soros adatátviteli sebessége egészen 70 MB/s-ig is terjedhet, de ennek az értéknek kevés a jelentősége olyan környezetekben, ahol több, egymástól függetlenül futó program próbál egyszerre hozzáférni, hiszen ilyen esetekben csak a töredékét képesek elérni. Ilyenkor sokkal érdekesebb a lemezt kezelő alrendszer szempontjából nézni a problémát: így az egyes adatátviteli kérések terhelése lesz a meghatározó paraméter, vagyis az az idő, amit a kérés teljesítésében érintett meghajtók eltöltenek a feldolgozással.
Bármelyik kérést is vesszük, a kiszolgáláshoz a meghajtónak először a megfelelő helyre kell mozgatnia az író/olvasó fejeket, meg kell várni a fej alatt elhaladó első szektort, majd végrehajtani a megfelelő műveletet. Ezek a műveletek szétválaszthatatlanok: semmi értelme nincs megszakítani ezeket.
Tekintsünk egy átlagosnak mondható, nagyjából 10 kB méretű adatátvitelt: a legújabb nagyteljesítményű lemezek átlagosan 3,5 ms alatt képesek pozicionálni a fejeket. A leggyorsabb lemezek 15 000 fordulatot tesznek meg percenként (RPM), így az átlagos forgási késleltetés (egy fél fordulat ideje) 2 ms. 70 MB/s-os sebesség mellett az átvitel maga megközelítőleg 150 μs, ami szinte elhanyagolható a pozicionálás idejéhez képest. Ilyen esetekben a tényleges adatátviteli sebesség 1 MB/s-nél alig valamivel többre esik vissza, és tisztán látszik, hogy erősen függ az átvitt adat mennyiségétől.
A hagyományos és kézenfekvő megoldása ennek a problémának “még több cséve” használata: egyetlen nagy lemez helyett alkalmazzunk több kisebb, de azonos tárkapacitású lemezt. Mindegyik lemez képes egymástól függetlenül mozgatni a fejeiket és az adatokat, aminek köszönhetően a tényleges adatátvitel mértéke nagyjából a lemezek számával arányosan növekszik.
Az adatátvitelben bekövetkező javulás pontos aránya természetesen kisebb, mint a lemezek száma: habár az egyes meghajtók képesek párhuzamosan mozgatni az adatokat, semmilyen módon garantálhatjuk, hogy a kérések egyenletesen oszlanak el köztük. Emiatt szinte elkerülhetetlen, hogy az egyik meghajtót nagyobb terhelés érje, mint a másikat.
A lemezekre eső terhelés egyenletessége erősen függ attól, hogyan osztjuk el az adatokat a meghajtók között. Az itt használt példában a lemezen tárolt adatokat egy könyv oldalaiként érdemes elképzelni, vagyis rengeteg szám szerint címezhető adatszektorként. A virtuális lemezt ennek megfelelően a legegyszerűbben úgy tudjuk felosztani az egymás után következő független fizikai lemezek mérete szerint és így használni, mintha egy nagy könyvet kisebb részekre téptünk volna. Ezt a módszert nevezik összefűzésnek, és előnye, hogy a résztvevő lemezeknek nem kell azonos méretűeknek lenniük. Ez a megoldás remekül működik abban az esetben, amikor a virtuális lemez hozzáférései egyenletesen oszlanak el annak teljes területén. Amikor viszont az elérés csak egy kisebb területre korlátozódik, kevesebb javulás tapasztalható. A 21-1 Ábra mutatja be lemezek egy ilyen összefűzött konfigurációját.
Feloszthatjuk a virtuális lemezünket kisebb azonos méretű darabokra is, melyeket különböző eszközökön sorosan tárolunk el. Például az első 256 szektort eltároljuk az első lemezen, majd a következő 256 szektort a következő lemezen és így tovább. Az utolsó lemez kitöltése után az egész folyamat ismétlődik, egészen az összes lemez megtöltéséig. Ezt a leképezést csíkozásnak (“striping”) vagy RAID-0-nak nevezzük [11]. A csíkozás használata során valamivel bonyolultabbá válik az adatok megtalálása és többletmunkát is jelenthet olyan esetekben, amikor az adatátvitel több lemezt is érint, de ezzel egyidőben sokkal jobban szétosztja a terhelést a lemezek között. A 21-2 Ábra mutatja be a lemezek csíkozott szervezését.
A modern lemezhajtók utolsó fontos problémája, hogy nem eléggé megbízhatóak. Annak ellenére, hogy a lemezek ezen a téren meglehetősen sokat fejlődtek az utóbbi pár évben, egy szervernek még mindig ezek azok a központi részei, amelyek a leginkább hajlamosak a meghibásodásra. Amikor ez bekövetkezik, a hatása akár egy katasztrófával is felérhet: a sérült lemezmeghajtók cseréje és az adatok visszaállítása napokat is igénybe vehet.
Ennek a problémának a hagyományos megközelítése lenne a tükrözés (“mirroring”), vagyis amikor ugyanarról az adatról tartunk két példányt két eltérő fizikai hardveren. A RAID-szintek beköszöntével ezt a technikát RAID level 1-nak vagy RAID-1-nek is nevezik. Amikor írunk a kötetre, mindenhova írunk, az olvasás pedig bármelyik eszközről elvégezhető. Így ha az egyik meghajtó tönkremenne, egy másikon még mindig megtalálható az összes adat.
A tükrözés két problémát vet fel:
Ár. Legalább kétszer annyiba kerül, mint a nem redundánsan tároló megoldások.
Teljesítménycsökkenés. Mivel az írást minden meghajtón végre kell hajtani, legalább kétszer annyi sávszélességet is felémeszt, mint a nem tükrözött kötetek esetén. Az olvasás viszont nem veszít a sebességéből: sőt, még gyorsabbnak is tűnhet.
Az adatintegritás megőrzésére egy másik megoldás a paritás használata, melyet a 2, 3, 4 és 5 RAID-szintek valósítanak meg. Ezek közül talán a RAID-5 a legérdekesebb. A Vinumban egy olyan csíkozott szervezési módként valósították meg, ahol minden csíkból egy blokk az összes többi paritási információját tartalmazza. A RAID-5 által megvalósított szervezés hasonlít a csíkozáshoz, azonban a RAID-5-ben mindegyik csík tartalmaz egy paritási információt is. Tehát a Vinumban, ahogy azt RAID-5 a megköveteli, a paritást tároló blokkok helye az egyik csíkról a másikra változik. Az adatblokkokban található számok relatív blokkszámokat jelölnek.
A RAID-5-nek a tükrözéshez képest megvan az az előnye, hogy jelentősen kevesebb tárhelyet igényel. Az olvasás hasonló a csíkozott szervezésekéhez, azonban az írás jóval lassabb, közel 25%-a az olvasás sebességének. Az egyik meghajtó meghibásodása esetén a tömb csökkentett módban még képes folytatni a működést: a fennmaradó meghajtókról továbbra is a megszokott módon lehet olvasni, viszont a sérült meghajtóról olvasott adatokat folyamatosan javítani kell a többiről származó segédinformációk szerint.
A tárgyalt problémák orvoslására a Vinumban egy négyszintű objektumhierarchiát alakítottak ki:
A legjobban észlelhető objektum a virtuális lemez, amelyet kötetnek (volume) nevezünk. Ez a kötet lényegében ugyanazokkal a tulajdonságokkal rendelkezik, mint egy UNIX-os lemezmeghajtó, habár akadnak finomabb különbségek. Mérete korlátlan lehet.
A kötetek erekből (plex) állnak, melyek a kötet teljes területét képviselik. Ennélfogva a hierarchia ezen szintje nyújtja a redundanciát. Az ereket legegyszerűbben a tükrözött tömbben helyet foglaló lemezekként tudjuk elképzelni, melyek ugyanazt az adatot tartalmazzák.
Mivel a Vinum a UNIX lemezes tárolást megvalósító alrendszerében helyezkedik el, a többlemezes erek felépítéséhez használhatnánk a UNIX-os partíciókat, azonban ehhez a feladathoz nem eléggé rugalmasak, mivel a UNIX-os lemezek csak korlátozott számú partíciót tartalmazhatnak. A Vinum ehelyett allemeznek (subdisk) nevezett folytonos területekre osztja fel az egyes UNIX-os partíciókat (a meghajtókat), melyeket aztán az erek létrehozására használ fel.
A Vinum által létrehozott meghajtókon (drive) levő allemezek lesznek valódi UNIX-os partíciók. A Vinum-meghajtók tetszőleges számú allemezt tartalmazhatnak. Eltekintve a meghajtó elején található apró területtől, melyen a beállításokra és az állapotra vonatkozó információk tárolódnak, az egész meghajtó felhasználható adatok tárolására.
A most következő szakaszokban ismertetjük, hogy ezek az objektumok milyen módon szolgáltatják a Vinum részéről elvárt funkciókat.
Az erek képesek a Vinum konfigurációjában található több különböző meghajtón elhelyezkedő allemezeket is nyalábba kötni. Ennek következményeképpen az egyes meghajtók mérete nem korlátozza az erek méretét, emiatt a kötetét sem.
A Vinum a tükrözést több ér egyetlen kötetté olvasztásával hozza létre. Az erek mindegyike a köteten található adatokat képviseli. Egy kötet legalább egy, legfeljebb nyolc eret tartalmazhat.
Habár egy ér egy kötet teljes adatát ábrázolja, előfordulhat olyan eset, hogy bizonyos részei hiányoznak fizikai, kialakítási (nem társítottunk allemezeket hozzájuk) okokból adódóan vagy véletlenül (a hozzá tartozó lemezterületek sérültek). Amíg legalább egy ér képes a kötet teljes tartalmát szolgáltatni, addig a kötet teljesen épnek tekinthető.
A Vinum az összefűzést és a csíkozást is egyaránt megvalósítja az erek szintjén:
Az összefűzött ér allemezek területeiből építkezik.
A csíkozott ér felosztja az adatokat az allemezek között. Az allemezek mindegyikének ugyanakkorának kell lennie, és legalább két allemeznek lennie kell, hogy eltérjen az összefűzött értől.
A FreeBSD 8.1 verziójában két fajta erezési megoldást találhatunk:
Az összefűzött erek a legrugalmasabbak: tetszőleges számú allemezt tartalmazhatnak, az allemezek mérete pedig eltérhet. Az ér újabb allemezek hozzáadásával tovább bővíthető. Kevesebb processzoridőt igényel, mint egy csíkozott ér, habár a kettő többletköltsége közti eltérés nem mérhető. Másrészről azonban nagyon érzékenyek a forgalmasabb pontokra, vagyis amikor az egyik lemez folyamatosan használatban van, miközben a többi üresen jár.
A csíkozott (RAID-0) erek legnagyobb előnye, hogy csökkentik a forgalmasabb pontok kialakulását: a megfelelő méretű csíkszélesség (ami kb. 256 kB) választásával el tudjuk egyengetni a tömbben dolgozó meghajtók terhelését. Ennek a megközelítésnek a hátránya (részben) a sokkal összetettebb kód, valamint az allemezekre vonatkozó megszorítás, amely szerint meg kell egyezniük a méretüknek, illetve az érhez annyira bonyolult újabb allemezeket kapcsolni, hogy a Vinum jelenleg nem is képes rá. Ezeken kívü a Vinum még támaszt egy triviális igényt is: a csíkozott érben legalább két allemeznek lennie kell, mivel másképp nem tér el egy összefűzött értől.
A 21-1 Táblázat foglalja össze az egyes erezések előnyeit és hátrányait.
A Vinum a rendszerben ismert objektumokkal kapcsolatos információkat egy konfigurációs adatbázisban tartja fenn. Kezdetben a felhasználó egy vagy több konfigurációs állomány segítségével hozza létre ezt az adatbázist a gvinum(8) segédprogrammal. A Vinum ezt a konfigurációs adatbázist bemásolja mindegyik irányítása alatt álló slice-ba (melyek a Vinum eszköznek hív). Az adatbázis minden egyes állapotváltás folyamán frissül, így egy újraindítás után minden egyes Vinum-objektum állapota pontosan helyreállítódik.
A konfigurációs állomány írja le az egyes objektumokat. Egy egyszerűbb kötet definíciója így nézhet ki:
drive a device /dev/da3h volume myvol plex org concat sd length 512m drive a
Ez az állomány négy Vinum-objektumot definiál:
A drive kezdetű sor adja meg a lemez partícióját (meghajtóját) és a hardveren levő elhelyezkedését. Az a szimbolikus nevet kapta. A szimbolikus és a konkrét eszköznevek szétválasztásával lehetővé válik, hogy a lemezek félreértések nélkül átkerülhessek egyik helyről a másikra.
A volume kezdetű sor adja meg a kötetet. Itt az egyetlen szükséges jellemző a név, ami ebben az esetben a myvol.
A plex kezdetű sor adja meg az eret. Itt az egyetlen szükséges paraméter a szervezési mód, ami ebben az esetben a concat (összefűzött). Nevet nem kell megadnunk, mivel a rendszer automatikusan létrehoz egy nevet a kötet nevéből a .px utótag hozzáadásával, ahol az x az ér száma lesz a köteten belül. Emiatt a most definiált ér neve myvol.p0 lesz.
Az sd kezdetű sor adja meg az allemezt. Itt legalább meg kell adnunk a meghajtónak a nevét, ahol tárolni akarjuk, ill. a méretét. Ahogy már említettük az ereknél is, nevet nem kötelező megadnunk, mivel a rendszer magától rendel hozzá nevet, amit a hozzá tartozó ér nevéből származtat, hozzáadja a .sx utótagot, ahol az x az allemez éren belüli sorszáma lesz. Ennek következtében a Vinum ennek az allemeznek a myvol.p0.s0 nevet adja.
Miután a gvinum(8) feldolgozta ezt az állományt, az alábbi kimenetet fogja adni:
# gvinum -> create config1 Configuration summary Drives: 1 (4 configured) Volumes: 1 (4 configured) Plexes: 1 (8 configured) Subdisks: 1 (16 configured) D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%) V myvol State: up Plexes: 1 Size: 512 MB P myvol.p0 C State: up Subdisks: 1 Size: 512 MB S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
Ez a kimenet a gvinum(8) egyszerű listázási formátumát mutatja. Grafikusan a 21-4 Ábra mutatja be.
Ezen és az ezt követő ábrán egy kötetet láthatunk, amely ereket tartalmaz, amelyek pedig allemezeket. Ebben az alapvető példában a kötet egyetlen eret tartalmaz, amiben pedig egyetlen allemez van.
Az itt bemutatott kötetnek nincs semmilyen előnye a hagyományos lemezpartícionáláshoz képest. Egyetlen eret tartalmaz, tehát nem is redundáns. Az ér egyetlen allemezt tartalmaz, tehát nem tér el a megszokott lemezpartíciók helyfoglalásától sem. A következő szakaszokban sokkal érdekesebb konfigurációs módszereket is illusztrálunk.
A kötetek rugalmassága tükrözéssel növelhető. Egy tükrözött kötet kiosztása során feltétlenül gondoskodnunk kell arról, hogy az egyes erekhez tartozó allemezek eltérő meghajtókon találhatóak, így az esetleges meghibásodások nem károsítják mind a két eret. Az alábbi konfigurációban egy kötetet tükrözünk:
drive b device /dev/da4h volume mirror plex org concat sd length 512m drive a plex org concat sd length 512m drive b
Ebben a példában már nem kellett újra megadnunk az a meghajtót, mivel a Vinum figyelemmel kíséri az összes objektumot a saját konfigurációs adatbázisában. A definíció feldolgozása után a konfiguráció így fog kinézni:
Drives: 2 (4 configured) Volumes: 2 (4 configured) Plexes: 3 (8 configured) Subdisks: 3 (16 configured) D a State: up Device /dev/da3h Avail: 1549/2573 MB (60%) D b State: up Device /dev/da4h Avail: 2061/2573 MB (80%) V myvol State: up Plexes: 1 Size: 512 MB V mirror State: up Plexes: 2 Size: 512 MB P myvol.p0 C State: up Subdisks: 1 Size: 512 MB P mirror.p0 C State: up Subdisks: 1 Size: 512 MB P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB S myvol.p0.s0 State: up PO: 0 B Size: 512 MB S mirror.p0.s0 State: up PO: 0 B Size: 512 MB S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB
A 21-5 Ábra ugyanezt a szerkezetet grafikusan is.
Ebben a példában minden ér tartalmazza a teljes 512 MB-os területet. Ahogy a korábbi példa esetén, itt is mindegyik ér csak egyetlen allemezt tartalmaz.
Az előbbi példában szereplő tükrözött kötet egy tükrözetlen kötetnél már jobban ellenáll a hibáknak, azonban a teljesítménye is kisebb. A köteten minden egyes írás mind a két meghajtóra érvényesül, ezáltal a lemezek teljes sávszélességét nagyobb arányban használja. A teljesítményre vonatkozó megfontolásaink egy másik megközelítést kívánnak meg: a tükrözés helyett inkább csíkozzuk szét az adatot a lehető legtöbb lemezen. Az alábbi konfiguráció egy olyan kötetet mutat be, ahol egy eret négy lemezmeghajtóan keresztül csíkozunk:
drive c device /dev/da5h drive d device /dev/da6h volume stripe plex org striped 512k sd length 128m drive a sd length 128m drive b sd length 128m drive c sd length 128m drive d
Mint ahogy azt már korábban is említettük, nem szükséges még egyszer megadni azokat a meghajtókat, amiket a Vinum már ismer. A definíció feldolgozása után a konfigurációnk nagyjából így néz ki:
Drives: 4 (4 configured) Volumes: 3 (4 configured) Plexes: 4 (8 configured) Subdisks: 7 (16 configured) D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%) D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%) D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%) D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%) V myvol State: up Plexes: 1 Size: 512 MB V mirror State: up Plexes: 2 Size: 512 MB V striped State: up Plexes: 1 Size: 512 MB P myvol.p0 C State: up Subdisks: 1 Size: 512 MB P mirror.p0 C State: up Subdisks: 1 Size: 512 MB P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB P striped.p1 State: up Subdisks: 1 Size: 512 MB S myvol.p0.s0 State: up PO: 0 B Size: 512 MB S mirror.p0.s0 State: up PO: 0 B Size: 512 MB S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB S striped.p0.s0 State: up PO: 0 B Size: 128 MB S striped.p0.s1 State: up PO: 512 kB Size: 128 MB S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB S striped.p0.s3 State: up PO: 1536 kB Size: 128 MB
Ez a kötet a 21-6 Ábraban látható. A csíkok sötétedése jelzi a helyüket az ér területében: a világosabbak elöl, a sötétebbek hátul szerepelnek.
Megfelelő hardver birtokában lehet olyan köteteket is építeni, amelyek mind megnövelt rugalmasságot, mind pedig megnövelt teljesítményt mutatnak a szabványos UNIX-os partíciókhoz képest. Ennek a konfigurációs állománya így nézne ki:
volume raid10 plex org striped 512k sd length 102480k drive a sd length 102480k drive b sd length 102480k drive c sd length 102480k drive d sd length 102480k drive e plex org striped 512k sd length 102480k drive c sd length 102480k drive d sd length 102480k drive e sd length 102480k drive a sd length 102480k drive b
A második ér allemezei el vannak tolva az első ér allemezeitől két meghajtónyival. Ez segít megelőzni, hogy az írási műveletek ne ugyanarra az allemezre vonatkozznak, még akkor is, ha az adatátvitel két meghajtón is keresztülível.
A 21-7 Ábra illusztrálja ennek a kötetnek a szerkezetét.
Korábban már megismerhettük, hogy a Vinum alapértelmezett neveket társít az erekhez és az allemezekhez, habár ezek a nevek felülbírálhatóak. Ez viszont egyáltalán nem ajánlott, mivel már a VERITAS kötetkezelő, ahol tetszőleges neveket rendelhetünk az objektumokhoz, használata során kiderült, hogy akkora mértékű rugalmasságot nem kínál fel, mint amennyi zavart képes okozni.
A nevek tartalmazhatnak bármilyen nem üres karaktert, azonban érdemes inkább csak betűket, számjegyeket és az aláhúzást használni. A kötetek, erek és allemezek nevei akár 64 karakteresek is lehetnek, a meghajtók nevei pedig 32 karakteresek.
A Vinum objektumai a /dev/gvinum könyvtáron belüli hierarchiában helyezkednek el eszközleírókként. Az imént említett példakonfiguráció hatására a következő eszközleírók jönnek létre:
Megjegyzés: Ez a rész csak a Vinum korábbi, elavult implementációjára vonatkozik.
A /dev/vinum/control és /dev/vinum/controld nevű vezérlőeszközök, melyeket a gvinum(8) és a Vinum démon használ.
Mindegyik kötethez egy eszközleíró tartozik. Ezek a Vinum számára a központi eszközök, ezért az előbbi konfiguráció révén megjelennek a /dev/gvinum/myvol, /dev/gvinum/mirror, /dev/gvinum/striped, /dev/gvinum/raid5 és /dev/gvinum/raid10 eszközök.
Megjegyzés: Ez a rész csak a Vinum korábbi, elavult implementációjára vonatkozik.
Az egyes meghajtókhoz tartozó leírók a /dev/vinum/drive könyvtárban találhatóak. Ezek valójában szimbolikus linkek a megfelelő lemezes eszközökre.
Minden kötethez közvetlen leírók tartoznak /dev/gvinum könyvtárban.
Az egyes erek és allemezek eszközleírói a /dev/gvinum/plex és /dev/gvinum/sd könyvtárakban jelennek meg.
Például tekintsük most az alábbi konfigurációs állományt:
drive drive1 device /dev/sd1h drive drive2 device /dev/sd2h drive drive3 device /dev/sd3h drive drive4 device /dev/sd4h volume s64 setupstate plex org striped 64k sd length 100m drive drive1 sd length 100m drive drive2 sd length 100m drive drive3 sd length 100m drive drive4
Az állomány feldolgozása után az eszközleírókat a gvinum(8) az alábbi módon szervezi a /dev/gvinum könyvtárban:
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 plex crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64 drwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd /dev/vinum/plex: total 0 crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0 /dev/vinum/sd: total 0 crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0 crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1 crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2 crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3
Jóllehet, az ereket és allemezeket nem ajánlott külön-külön elnevezni, a Vinum meghajtóknak nevet kell adni. Ezzel megoldhatóvá válik, hogy az egyes meghajtók automatikusan felismerhetőek legyenek abban az esetben is, amikor fizikailag áthelyezzük ezeket. A meghajtók nevei legfeljebb 32 karakteresek lehetnek.
A kötetek egyetlen kivétellel teljesen azonosak a lemezekkel a rendszer számára. Ugyanis a UNIX-os meghajtóktól eltérően a Vinum nem particionálja a köteteket, és ezért nem is tárolnak partíciós táblát. Ez megkövetelte néhány lemezkezelő segédprogram, leginkább a newfs(8) módosítását, mivel azok korábban megpróbálták a Vinum-kötetek nevének utolsó betűit egy partíció azonosítójaként értelmezni. Például egy lemezes meghajtó neve /dev/ad0a vagy /dev/da2h alakú. Az előbbi az első (0) IDE lemez első (a) partícióját, míg az utóbbi a harmadik (2) SCSI lemez nyolcadik (h) partícióját jelöli. Ezzel szemben azonban a Vinum-kötetek neve /dev/gvinum/concat alakú lesz, ahol a név semmilyen kapcsolatban nem áll a partíció nevével.
Hétköznapi esetben a newfs(8) megpróbálja a lemez nevét értelmezni, és panaszkodik, ha nem sikerül. Például:
# newfs /dev/gvinum/concat newfs: /dev/gvinum/concat: can't figure out file system partition
A köteten a newfs(8) parancs kiadásával tudunk állományrendszert létrehozni:
# newfs /dev/gvinum/concat
Megjegyzés: A FreeBSD 5.0 előtt verzióiban a newfs(8) parancsnak a régi elnevezési séma használata mellett még át kell adni egy -v kapcsolót is:
# newfs -v /dev/vinum/concat
A GENERIC rendszermag nem tartalmazza a Vinumot. Habár készíteni lehet olyan rendszermagot, amelyik támogatja a Vinumot, mégsem ajánlott. A Vinumot a szabványos módon modulként (kld) indíthatjuk el. Még a kldload(8) használatára sincs szükség, mivel a gvinum(8) indulása során ellenőrzi a modul jelenlétét és betölti, ha még nem lenne jelen.
A Vinum alapvetően ugyanúgy tárolja a konfigurációkat a slice-okban, mint maguk a konfigurációs állományok. A konfigurációs adatbázis beolvasása során a Vinum felismeri azokat a kulcsszavakat, amelyeknek nem szabad előfordulniuk az állományokban. Például a lemezek beállítása tartalmazhatja a következő szöveget:
volume myvol state up volume bigraid state down plex name myvol.p0 state up org concat vol myvol plex name myvol.p1 state up org concat vol myvol plex name myvol.p2 state init org striped 512b vol myvol plex name bigraid.p0 state initializing org raid5 512b vol bigraid sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216b
Az előbbiektől nyilvánvalóan eltér abban, hogy itt már megjelennek a konkrét pozíciókra és elnevezésekre vonatkozó információk (melyeket a felhasználó is megadhat, azonban ezt nem tanácsoljuk), valamint az állapotok (ezeket nem láthatja a felhasználó). A Vinum a konfigurációban nem tárolja a meghajtókat, helyette a beállított lemezes meghajtók partícióin fog Vinum-címkéket keresni. Ennek köszönhetően a Vinum még akkor is képes pontosan megtalálni a meghajtókat, amikor megváltoznak a hozzá tartozó UNIX-os meghajtók azonosítói.
Megjegyzés: Ez a rész csak a Vinum elavult implementációjára vonatkozik. A loader.conf(5) közvetítésével a Gvinum mindig automatikusan elindul a hozzá tartozó modul betöltésével együtt. Ha a rendszerindításkor be akarjuk tölteni a Gvinum modult, akkor a /boot/loader.conf állományba vegyük fel a geom_vinum_load="YES" sort.
Az alábbi sort mindenképpen hozzá kell adnunk az /etc/rc.conf állományhoz, hogy a Vinum a rendszerindítás során automatikusan elinduljon:
start_vinum="YES" # állítsuk YES-re az indításhoz
Hozzuk létre és írjuk bele, ha nem lenne /etc/rc.conf nevű állományunk. Ennek hatására a rendszer az indulás során betölti a Vinum kld modult, és a konfigurációban szereplő objektumokat elindítja. Ez még az állományrendszerek csatlakoztatása előtt történik meg, aminek révén a Vinum-köteteken található állományrendszereket a rendszer automatikusan át tudja vizsgálni az fsck(8) segítségével, majd csatlakoztatja ezeket.
Amikor a Vinumot a vinum start paranccsal indítjuk el, a Vinum beolvassa a konfigurációs adatbázist a Vinum-meghajtók egyikéről. Normál körülmények között mindegyik meghajtón megtalálható a konfigurációs adatbázis egy példánya, ezért szinte teljesen mindegy, melyik meghajtót is olvassa. Egy rendszer-összeomlás után azonban a Vinumnak meg kell tudnia állapítania, melyik meghajtón található meg az adatbázis legfrissebb példánya, és ezt kell beolvasnia. Ezután a lemaradt meghajtókon található adatbázispéldányokat szinkronizálja ehhez a változathoz.
Olyan számítógépeknél, ahol a teljesen tükrözött Vinum-alapú állományrendszereket használunk, kívánatos lehet magát a rendszerindításhoz használt állományrendszert is tükrözni. Egy ilyen konfiguráció összeállítása már messze nem annyira egyszerű, mint egy tetszőleges állományrendszer esetén, mivel:
Az indításhoz használt állományrendszernek már a folyamat nagyon korai szakaszában rendelkezésre kell állnia, ezért a Vinumnak már itt elérhetőnek kell lennie.
A rendszerindító állományrendszert tartalmazó köteten még ott kell lennie a rendszerindító kódnak és a rendszermagnak is, melyeket a rendszer saját eszközein (például ilyen a BIOS a PC-knél) keresztül kell tudnunk beolvasni, amiket viszont nem tudunk felkészíteni a Vinumra.
A soronkövetkező szakaszokban “rendszerindító kötetként” (root volume) fogunk általánosságban véve hivatkozni a rendszerindításhoz használt állományrendszert tartalmazó Vinum-kötetre. Ennek megfelelően valószínűleg jó ötlet a "root" névvel azonosítani ezt a kötetet, habár technikai szempontból ezt semmi nem követeli meg. Az itt felsorakozó példákban azonban ezt a nevet fogjuk használni.
Ennek kiváltásához számos lépést kell megtennünk:
A rendszermagnak már el kell érnie a Vinumot a rendszerindítás során. Emiatt a 21.8.1.1 Szakaszban leírt automatikus indítási módszer nem alkalmazható erre a feladatra, és a start_vinum paramétert nem is szabad használni a most ismertetendő konfigurációban. A Vinumot statikusan bele is építhetjük a rendszermagba és így állandóan elérhető, de ez általában nem kielégítő megoldás. Megoldhatjuk úgy is, ha a /boot/loader-re (12.3.3 Szakasz) bízzuk a vinum modul betöltését, még a rendszermag előtt. Ezt az alábbi sorral válthatjuk ki a /boot/loader.conf állományban:
geom_vinum_load="YES"
Megjegyzés: A Gvinum használata során az összes többi beállítás automatikusan végrehajtódik, amint a modul betöltődik, ezért ilyenkor csak a fentebb leírt eljárásra van szükség. Az itt felsoroltak csak az elavult Vinum implementációra vonatkoznak, csupán a régebbi típusú rendszerek kedvéért említjük meg.
A Vinumot nagyon korán életre kell keltenünk, hiszen a rendszerindításhoz használt állományrendszert tartalmazó kötetet kell élesítenünk. Alapértelmezés szerint a Vinum rendszerszinten futó része nem keres addig semmilyen Vinum-kötetinformációval rendelkező meghajtót, amíg a rendszergazda (vagy valamelyik rendszerindító szkript) ki nem adja a vinum start parancsot.
Megjegyzés: A most következő bekezdések mutatják be a szükséges lépéseket.
Ha hozzáadjuk a következő sort a /boot/loader.conf állományhoz, akkor azzal utasíthatjuk a Vinumot, hogy a rendszermag indítása során vizsgálja át az összes meghajtót:
vinum.autostart="YES"
Nem szükséges megmondani a rendszermagnak, merre keresse a rendszerindításhoz használt állományrendszert. A /boot/loader megkeresi a hozzá tartozó eszközt a /etc/fstab állományban és átadja ezt az információt a rendszermagnak. Amikor a csatlakoztatására kerül sor, a rendszermag az eszköz nevéből meg tudja állapítani, melyik eszközmeghajtót kérje meg a belső (fő- és al)eszközazonosító leképzéséhez.
Mivel a jelenlegi FreeBSD rendszertöltő csak 7,5 KB méretű és egyébként is csak az UFS állományrendszerről tud állományokat beolvasni (mint például a /boot/loadert), teljesen lehetetlen még a Vinum belső szerkezetére is megtanítani, tehát a Vinum-konfigurációk értelmezésére és magának a rendszerindító kötet elemeinek kielemzésére. Ezért be kell vetnünk néhány trükköt ahhoz, hogy a rendszerindító kód számára a rendszerindításhoz használható szabványos "a" partíció képzetét keltsük.
Mindez csak akkor válik elérhetővé, ha az alábbi követelményeket teljesíti a rendszerindító kötet:
Nem lehet csíkozott vagy RAID-5 típusú.
Erenként nem tartalmazhat egynél több összefűzött allemezt.
Láthatjuk, hogy hasznos és lehetséges is több eret használni, melyek mindegyike a rendszerindító állományrendszer egy-egy másolatát tartalmazza. Az indulás folyamán azonban ezen példányok közül csak az egyiken fogja keresni a rendszer a rendszertöltőt és a többi állományt egészen addig, amíg a rendszermag magát az állományrendszert nem csatlakoztatja. A látszat kedvéért az ereken belül található allemezek mindegyikének lennie kell egy saját "a" partíciójának, amivel lényegében alkalmassá válik a rendszerindításra. Ezeknek a hamis "a" partícióknak nem kell feltétlenül a többiekkel megegyező pozíciókon elhelyezkedniük, azonban a tévedések elkerülése érdekében valószínűleg hasznos olyan Vinum-köteteket létrehozni, ahol a keletkező tükrözött eszközök szimmetrikusak.
A rendszerindító kötet egyes eszközökön található "a" partícióit az alábbiak segítségével állíthatjuk be:
A rendszerindító kötet részeként megjelenő eszközön található allemez helyét (az eszköz elejétől számított eltolását) és méretét ellenőrizni kell az alábbi parancs segítségével:
# gvinum l -rv root
Ne felejtsük el, hogy a Vinum az eltolásokat és méreteket byte-okban méri. Ezekből tehát úgy nyerünk a bsdlabel használatához szükséges blokkszámokat, ha ezeket elosztjuk 512-vel.
Futassuk le a
# bsdlabel -e eszköznév
parancsot minden olyan eszközön, amelyik részt vesz a rendszerindító kötet kialakításában. Az eszköznév legyen a slice (fdisk)-táblát nem tartalmazó lemezek esetén a lemez neve (mint például da0), vagy ellenkező esetben a slice neve (például ad0s1).
Ha már lenne egy "a" partíció az eszközön (valószínűleg egy Vinum előtti rendszeríndító állományrendszert tartalmaz), nevezzük át valami másra és így továbbra is elérhető marad (biztos, ami biztos), viszont többé már nem lesz a rendszer számára alapértelmezett rendszerindító eszköz. Az aktív partíciók (mint például az éppen csatlakoztatott rendszerindító állományrendszer) nem nevezhetőek át, ezért ezt a lépést csak akkor tudjuk megtenni, ha a rendszerünket egy “Fixit” (Helyreállító) eszközről indítjuk, vagy egy olyan kétlépéses folyamat során, ahol (tükrözés esetén) a lemezről még nem indítottuk el a rendszert.
Ezt követően az eszközön található Vinum-partíciót (amennyiben létezik) az eszközön levő allemez eltolásához kell helyezni. Ennek eredménye lesz az új "a" partíció "offset" értéke. A partíció "size" (méret) értéke szó szerint átemelhető a fenti számításból. Az "fstype" legyen 4.2BSD. Az "fsize", "bsize" és "cpg" értékeket a jelenlegi állományrendszerhez mérten ajánlott megválasztani, azonban itt most egyáltalán nem bírnak jelentőséggel.
Ezzel a módszerrel létesítettünk egy olyan új "a" partíciót, amely lefedi az eszközön található Vinum-partíciót. Jegyezzük meg, hogy a bsdlabel kizárolag csak abban az esetben fogja megengedi ezt az átfedést, ha a Vinum-partíciónk "vinum" típussal van megjelölve.
Készen is vagyunk! Most már van minden eszközön egy hamisított "a" partíciónk, amelyeken megtalálható a rendszerindító kötet egy-egy másolata. Határozottan ajánlott még egyszer ellenőrizni a munkánkat az alábbi parancs kiadásával:
# fsck -n /dev/eszköznéva
Figyeljünk arra, hogy az összes vezérlési információt tartalmazó állománynak a Vinum-köteten található rendszerindító állományrendszerre kell vonatkoznia, ami viszont egy új Vinum rendszerindító kötet beállítása után nem feltétlenül egyezik meg a jelenlegi aktív állományrendszerrel. Különösen az /etc/fstab és /boot/loader.conf állományokat kell ilyen szempontból ellenőriznünk.
A következő indítás során a rendszertöltő már az új Vinum-alapú rendszerindító állományrendszerről fogja összeszedni a működéséhez szükséges adatokat és ezeknek megfelelően cselekedni. Végül, a rendszermag inicializálója után, mikor az összes eszközt felismerte, egy ehhez hasonló feltűnő üzenet fogja jelezni a beállítás sikerességét:
Mounting root from ufs:/dev/gvinum/root
Miután sikeresen konfiguráltuk a rendszerindító Vinum-kötetet, a gvinum l -rv root kimenete nagyjából így fog kinézni:
... Subdisk root.p0.s0: Size: 125829120 bytes (120 MB) State: up Plex root.p0 at offset 0 (0 B) Drive disk0 (/dev/da0h) at offset 135680 (132 kB) Subdisk root.p1.s0: Size: 125829120 bytes (120 MB) State: up Plex root.p1 at offset 0 (0 B) Drive disk1 (/dev/da1h) at offset 135680 (132 kB)
Itt (a /dev/da0h partícióhoz képesti) 135680-as eltoltás értékekre kell figyelnünk. Ez képződik le a bsdlabel fogalmi rendszerében aztán 265 darab 512 byte-os blokkra a lemezen. Ehhez hasonlóan a rendszerindító kötet mérete 245 760 darab 512 byte-os blokk lesz. A rendszerindító kötet másodpéldányát tartalmazó /dev/da1h ugyanilyen beállításokkal rendelkezik.
Az említett eszközök valahogy így jelennek meg a bsdlabel szerint:
... 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 245760 281 4.2BSD 2048 16384 0 # (Cyl. 0*- 15*) c: 71771688 0 unused 0 0 # (Cyl. 0 - 4467*) h: 71771672 16 vinum # (Cyl. 0*- 4467*)
Megfigyelhető, hogy a hamis "a" partíció "size" paraméter értéke megegyezik a fentebb becsült értékkel, miközben az "offset" paraméter értéke egyenlő lesz a "h" Vinum-partíción belüli eltolás és az eszközön (vagy slice-on) belüli eltolás összegével. Ez jellemzően egy olyan beállítás, amivel szükségszerűen el tudjuk kerülni a 21.9.4.3 Szakaszban leírt hibajelenséget. Látható továbbá az is, hogy az egész "a" partíció végig az eszköz összes Vinum adatát tartalmazó "h" partíciójában foglal helyet.
A példával kapcsolatban megjegyezzük, hogy itt az egész eszközt a Vinum felügyelete alá bocsátottuk, tehát nem marad hátra semmilyen Vinum előtt használt rendszerindító partíció, hiszen ez egy olyan lemez, amelyet eleve egy Vinum-konfigurációba szántunk.
Fontos tudunk, hogy probléma esetén hogyan tudjuk helyreállítani a rendszerünket. A következő felsorolásban bemutatunk néhány ismert buktatót és a megoldásaikat.
Ha valamilyen okból a rendszer nem indulna el, a 10 másodpercig tartó visszaszámlálás során a rendszertöltőt még meg tudjuk állítani a szóköz lenyomásával. Ekkor a betöltő által használt változók (mint például a vinum.autostart) a show segítségével megvizsgálhatóak és a set vagy unset parancsokkal módosíthatóak.
Ha mindössze az volt a probléma, hogy a Vinum modulja nem szerepelt az automatikusan betöltendő modulok között, a load geom_vinum parancs kiadásával betölthetjük azt.
Miután végeztünk, a
rendszerindítás folyamata a boot
-as paranccsal folytatható. A
-as
kapcsolók jelzik a rendszermag
számára, hogy kérdezzen rá a
rendszerindító állományrendszerre
a csatlakoztatása előtt (-a
)
és csak egyfelhasználós módban
indítsa a rendszert (-s
), ahol a
rendszerindító állományrendszer
írásvédett. Így, ha csak egyetlen
eret csatlakoztattunk egy többeres kötetből, az
erek még véletlenül sem tudnak
egymásnak ellentmondó állapotba
kerülni.
Amikor megjelenik a csatlakoztatandó rendszerindító állományrendszert bekérése, bármelyik érvényes rendszerindításra alkalmas állományrendszer megadható. Amennyiben az /etc/fstab állományt jól beállítottuk, az alapértelmezett érték egy ufs:/dev/gvinum/root értékhez hasonló alakú lesz. Itt általában egy ufs:da0d formátumú értéket láthatunk, amely feltehetően egy Vinum használata előtti rendszerindító állományrendszert tartalmazó partíció. Legyünk óvatosak, ha itt egy olyan "a" partíciót adunk meg, amely valójában egy rendszerindító Vinum-eszköz allemezeire hivatkozik, mivel egy tükrözött konfiguráció esetén csak az eszköz egyik részét fogjuk csatlakoztatni. Ha a későbbiekben ezt az állományrendszert már nem csak írásvédett módban csatlakoztatjuk, mindenképpen el kell távolítanunk a rendszerindító Vinum-kötetből a többi eret, mivel máskülönben nagy valószínűséggel eltérő adatokat fognak tartalmazni.
Amikor az elsődleges rendszertöltő még elindul, viszont a /boot/loader már nem tud betöltődni (ezt rendszerindítás megkezdése után bal oldalt rögtön megjelenő forgó vonalból vehetjük észre), a szóköz lenyomásával itt még tehetünk egy kísérletet a betöltés megszakítására. Ennek hatására a rendszertöltés megáll a második fázisban, lásd 12.3.2 Szakasz. Itt a rendszerindításhoz megpróbálhatunk megadni egy másik partíciót, például egy olyat, amely a korábbi rendszerindító állományrendszert tartalmazza és amelyet az előbb átneveztünk az "a"-ról.
Ez a helyzet akkor állhat elő, ha a Vinum telepítése során tönkretettük volna a rendszertöltőt. Sajnos a Vinum minden esetben 4 KB helyet hagy szabadon a partíció elején, a saját fejléc információjának rögzítése előtt. Az ide kerülő első és második fázisú rendszertöltők, illetve a bsdlabel adatai azonban jelenleg 8 KB helyet kívánnak meg. Így ha a Vinum-partíció egy rendszerindításra szánt slice vagy lemez 0. eltolásánál kezdődik, a Vinum beállításai felül fogják írni a rendszertöltőt.
A rendszertöltő is ugyanígy felülírja a Vinum fejlécét és akkor a Vinum nem találja a lemezeit, ha a fenti problémát orvosolva, például egy “Fixit” (Helyreállító) lemez segítségével, újratelepítjük a rendszertöltőt a 12.3.2 Szakaszban bemutatott bsdlabel -B parancs segítségével. Noha a Vinum egyetlen konkrét konfigurációs beállítása vagy a kötetekben tárolt adat sem sérül meg és vissza tudjuk állítani az összes elveszett információt ugyannak a Vinum-konfigurációnak az újbóli megadásával, a helyzetet magát nehéz megoldani. A Vinum-fejléc és a rendszertöltő ütközésének megszüntetéséhez ugyanis legalább 4 KB-tal arrébb kell mozgatnunk az egész Vinum-partíciót.
A virtualizációs szoftverek lehetővé teszik, hogy ugyanazon a számítógépen egyszerre több operációs rendszert is futassunk. Ezeknek a programcsomagoknak gyakorta részük egy gazda operációs rendszer is, amely a virtualizációs szoftvert futattja és ismer bizonyos vendég operációs rendszereket.
A fejezet elolvasása során megismerjük:
a gazda- és a vendég operációs rendszerek közti különbségeket;
hogyan telepítsünk FreeBSD-t egy Intel-alapú Apple Macintosh számítógépre;
hogyan telepítsünk a Virtual PC használatával FreeBSD-t Microsoft Windows-ra;
hogyan hozzuk ki a legtöbbet FreeBSD rendszerünkből virtualizáció alatt.
A fejezet elolvasásához ajánlott:
alapvető UNIX-os és FreeBSD-s ismeretek (3 fejezet);
a FreeBSD telepítésének ismerete (2 fejezet);
a hálózati kapcsolatok beállításának ismerete (31 fejezet);
külsős alkalmazások telepítésének ismerete (4 fejezet).
A Parallels Desktop a Mac OS 10.4.6, vagy afeletti verzióját futattó, Intel-alapú Apple Mac személyi számítógépekre fejlesztett kereskedelmi alkalmazás. A FreeBSD-t teljes mértékben támogatja vendégként. Miután telepítettük a Parallels-t a Mac OS X-re, be kell állítanunk egy virtuális gépet, majd erre felraknunk a kívánt vendég operációs rendszert.
A FreeBSD Mac OS X/Parallels párosra telepítéséhez első lépésként készítenünk kell egy új virtuális számítógépet. A létrehozás során válasszuk a -nak (a vendég operációs rendszer típusának) a -t:
Ezután adjunk meg egy nagyjából elfogadható méretet a virtuális merevlemezünknek, valamint annyi memóriát, amennyire szükségünk lehet a virtuális FreeBSD-nk használata során. Egy 4 GB-os lemez és 512 MB rendszermemória a legtöbb esetben jó választásnak bizonyulhat a FreeBSD Parallels alatti használata során:
Válasszuk ki a hálózatkezelés típusát és a hálózati csatolót.
Mentsük el és fejezzük be a konfigurálást.
Miután a FreeBSD-s virtuális gépünk elkészült, telepítenünk kell rá magát az operációs rendszert is. Ezt a legegyszerűbben a hivatalosan FreeBSD telepítő CD-ről, vagy a hivatalos FTP oldalról letölthető CD-képpel tehetjük meg. Ha lemásoltuk a megfelelő CD-képet a Mac helyi állományrendszerére, vagy behelyeztük a telepítő CD-t a CD-meghajtóba, kattintsunk a FreeBSD-s Parallels ablakunk jobb alsó sarkában található lemez ikonjára. Ekkor feljön egy párbeszédablak, ahol összerendelhetjük a virtuális gépünk CD-meghajtóját egy lemezen található képpel, vagy éppen a valódi CD-meghajtónkkal.
Ahogy megtettük az imént említett összerendelést, indítsuk is újra a FreeBSD-s virtuális gépünket a megszokott módon, az újraindítás ikonjára kattintva.
Ekkor a rendszer megtalálja a FreeBSD telepítőlemezt és a sysinstall segítségével megkezdi a telepítést a 2 fejezetben leírtak szerint. Ha szükségünk van rá, telepíthetjük az X11-et is, de egyelőre még ne próbáljuk beállítani.
A telepítés befejezését követően indítsuk újra a frissen telepített FreeBSD-s virtuális gépünket.
Miután telepítettük a FreeBSD-t Mac OS X/Parallels-re, még vár ránk néhány konfigurációs lépés a rendszer virtuálizált működésének optimalizálása érdekében.
A rendszerbetöltő változóinak beállítása
A legfontosabb lépés a
kern.hz
változó
értékének csökkentése,
amivel így a FreeBSD
processzor-kihasználtságát is
csökkentjük a
Parallels alatt. Ezt a
következő sor hozzadásával
tehetjük meg a
/boot/loader.conf
állományban:
kern.hz=100
Enélkül egy üresjáratban levő FreeBSD Parallels-vendég az iMac® egy processzorának durván 15%-át foglalja le. A változtatás életbe léptetése után azonban ez megközelítően 5%-ra redukálható.
Egy új konfigurációs állomány létrehozása a rendszermaghoz
Nyugodtan eltávolíthatjuk az összes SCSI, FireWire és USB eszközmeghajtót. A Parallels által felkínált virtuális hálózati csatolót az ed(4) meghajtón keresztül tudjuk elérni, ezért az ed(4) és miibus(4) meghajtókon kívül az összes többi elhagyható.
A hálózati kapcsolat beállítása
Az alapvető hálózati beállítás a virtuális gépünkön a DHCP aktiválása, aminek segítségével csatlakozni tudunk arra a helyi hálózatra, amelyen maga a gazda Mac is megtalálható. Ezt az alábbi sor felvételével tudjuk megoldani az /etc/rc.conf állományba: ifconfig_ed0="DHCP". Bővebb információkért járuljunk a 31 fejezet fejezethez.
A Windows-ra fejlesztett Virtual PC a Microsoft egyik szabadon letölthető szoftverterméke. A rendszerkövetelményeit bővebben lásd a http://www.microsoft.com/windows/downloads/virtualpc/sysreq.mspx linken. Miután telepítettük a Microsoft Windows-ra a Virtual PC alkalmazást, be kell állítanunk egy virtuális gépet, majd telepítenünk kell rá a kívánt vendég operációs rendszert.
Amikor a FreeBSD-t a Microsoft Windows és Virtual PC párosra akarjuk telepíteni, akkor kezdjünk egy egy új virtuális gép létrehozásával. Ehhez válasszuk ki a menüből a (Virtuális gép létrehozása) pontot.
Majd válasszuk az
(Operációs rendszer) beállításánál az (Egyéb) opciót.Ezután válasszuk ki a szándékainknak megfelelően a telepítendő FreeBSD példányhoz mért memória és lemezterület mennyiségét. Ahhoz, hogy a FreeBSD fusson Virtual PC alatt, 4 GB-nyi lemezterület és 512 MB RAM beállítása a legtöbb esetben kiválóan megfelelő.
Mentsük el és fejezzük be a konfigurációt.
Válasszuk ki a FreeBSD-s virtuális gépünket, majd kattintsunk a
(Beállítások) menüre és állítsuk be hálózati csatoló és hálózatkezelés típusát.A FreeBSD-nek otthont adó virtuális gépünk létrehozása után telepítenünk is kell rá a rendszert. Ez legegyszerűbben a hivatalos FreeBSD telepítő CD-vel vagy a hivatalos FTP oldalról letölthető CD-képpel tehetjük meg. Amikor letöltöttük a megfelelő CD-képet a helyi Windows-os állományrendszerünkre vagy behelyeztük a telepítéshez használható CD-t a CD-meghajtónkba, a FreeBSD-s virtuális gépünk elindításához kattintsunk rá duplán. Ezt követően a Virtual PC ablakában kattintsunk a menüre és válasszuk ki belőle a (Lemezkép használata...) pontot. Ennek hatására megjelenik egy ablak, amiben a virtuális gépünk CD-meghajtóihoz tudunk csatlakoztatni lemezképeket vagy akár létező CD-meghajtókat.
Miután sikeresen beállítottuk a telepítő CD forrását, indítsuk újra a virtuális gépet az
(Művelet) menün belül a (Újraindítás) pont kiválasztásával. Így a Virtual PC újraindítja a virtuális rendszert egy olyan speciális BIOS használatával, amely a normális BIOS-hoz hasonlóan először megkeresi az elérhető CD-meghajtókat.Ebben az esetben a FreeBSD telepítőeszközét fogja megtalálni és megkezdi a 2 fejezetben ismertetett szokásos, sysinstall programra alapuló telepítési eljárást. Ennek során az X11-et is feltelepíthetjük, habár egyelőre még ne állítsuk be.
Ne felejtsük el kivenni a meghajtóból a telepítéshez használt CD-t vagy elengedni a megfelelő lemezképet, amikor befejeződőtt a telepítés. Végezetül indítsuk ismét újra a frissen telepített FreeBSD-s virtuális gépünket.
Miután a FreeBSD-t minden gond nélkül telepítettük a Microsoft Windows-on futó Virtual PC-re, még további beállítási lépéseket is meg kell tennünk a rendszer virtualizált működésének finomhangolásához.
A rendszertöltő változóinak beállítása
A legfontosabb teendőnk csökkenteni a
kern.hz
konfigurációs
beállítás értéket,
aminek köszönhetően vissza tudjuk fogni a
Virtual PC alatt futó
FreeBSD processzorhasználatát. Ezt
úgy tudjuk megtenni, ha a
/boot/loader.conf
állományba felvesszük a
következő sort:
kern.hz=100
Enélkül a Virtual PC alatt üresjáratban futó FreeBSD vendég operációs rendszer egy egyprocesszoros számítógép idejének durván 40%-át foglalja le. A változtatás után azonban ez az érték pusztán közel 3%-ra csökken le.
Új konfigurációs állomány létrehozása a rendszermaghoz
Nyugodtan eltávolíthatjuk a SCSI, FireWire és USB eszközmeghajtókat. A Virtual PC által felajánlott virtuális hálózati csatolót a de(4) meghajtón keresztül tudjuk használni, ezért a de(4) és miibus(4) eszközön kívül az összes többi hálózati eszköz támogatása kiszedhető a rendszermagból.
A hálózati kapcsolat beállítása
A legalapvetőbb hálózati beállítás csupán annyiból áll, hogy DHCP-n keresztül csatlakoztatjuk a virtuális gépünket ugyanahhoz a helyi hálózathoz, amiben a gazda Microsoft Windows-os gépünk is megtalálható. Ezt úgy tudjuk elérni, ha a /etc/rc.conf állományba megadjuk a ifconfig_de0="DHCP" sort. A komolyabb hálózati beállításokat a 31 fejezetben találhatjuk.
A Mac-ek számára fejlesztett VMWare Fusion egy olyan kereskedelmi termék, amit az Intel alapú Apple Mac gépekre tudunk telepíteni a Mac OS 10.4.9 és későbbi változatain. A FreeBSD itt egy teljesen támogatott vendég operációs rendszer. Miután a VMWare Fusion felkerült a Mac OS X rendszerünkre, be kell állítanunk a virtuális gépet és telepítenünk rá a vendég operációs rendszert.
Először indítsuk el a VMWare Fusion-t, aminek eredményeképpen betöltődik a Virtual Machine Library. Egy új virtuális gépre létrehozásához kattintsunk a "New" gombra:
Ekkor bejön az új gép összeállítását segítő New Virtual Machine Assistant, ahol a továbblépéshez kattintsunk a Continue gombra:
Az operációs rendszerek (
) közül válasszuk az “egyéb” ( ) kategóriát, majd a fülön a vagy a változatot attól függően, hogy 32 bites vagy 64 bites támogatásra van szükségünk:Adjuk meg a virtuális gép képének nevét és a könyvtárat, ahova el akarjuk menteni:
Válasszuk meg a virtuális géphez tartozó virtuális merevlemez méretét is:
Mondjuk meg, hogy milyen módon szeretnénk telepíteni a virtuális gépre, ISO formátumú lemezképről vagy CD-ről:
Ahogy a Finish feliratú gombra kattintunk, a virtuális gép máris elindul:
Telepítsük fel a FreeBSD-t a megszokott módon vagy a 2 fejezet utasításai mentén:
Miután befejeződött a telepítés, módosítsuk a virtuális gép beállításait, például a memória mennyiségét:
Megjegyzés: A virtuális gép hardveres beállításai a futása alatt nem változtathatóak meg.
A virtuális gép által használható processzorok számát:
A CD-meghajtó állapotát. Általában lehetőségünk van a virtuális gépet leválasztani a CD-meghajtóról vagy ISO lemezképről, ha már nem használjuk.
A hálózati csatlakozás a virtuális géppel kapcsolatban utolsóként beállítandó tényező. Ha a befogadó gépen kívül még más gépeket is el akarunk érni a virtuális gépről, akkor ehhez mindenképpen a
opciót válasszuk. Minden más esetben a az ajánlott, mivel így a virtuális gép eléri az internetet, de a hálózatról nem lehet azt elérni.Miután befejeztük a beállítások finomhangolását, indítsuk is el a frissen telepített FreeBSD-s virtuális gépünket.
Ahogy a FreeBSD-t sikeresen telepítettük a Mac OS X alatt futó VMWare-re, néhány konfigurációs lépést még meg kell tennünk a virtualizált rendszer teljesítmények optimalizálása érdekében.
A rendszertöltő változóinak beállítása
A legfontosabb lépés talán a
kern.hz
változó
értékének csökkentése,
amivel a VMWare alatt
futó FreeBSD processzorhasználatát
szoríthatjuk vissza. Ezt a következő sor
hozzáadásával érhetjük el
a /boot/loader.conf
állományban:
kern.hz=100
Enélkül az üresjáratban zakatoló FreeBSD-s VMWare vendég nagyjából az iMac egyik processzorának 15%-át emészti fel. Ezzel a módosítással azonban ez lenyomható közel 5%-ra.
Új konfigurációs állomány létrehozása a rendszermaghoz
Nyugodtan törölhetjük az összes FireWire és USB eszköz meghajtóját. A VMWare egy em(4) meghajtón keresztül elérhető virtuális hálózati kártyát biztosít, így az em(4) kivételével az összes hálózati eszköz meghajtóját kivehetjük a rendszermagból.
A hálózat beállítása
A legegyszerűbb hálózati beállítás mindösszesen a DHCP használatát igényli, aminek révén a virtuális gépünk a befogadó Mac-kel egy helyi hálózatra kerül. Ezt úgy tudjuk engedélyezni, ha az /etc/rc.conf állományba felvesszük az ifconfig_em0="DHCP" sort. Ha ennél komolyabb hálózati beállítások is érdekelnek minket, akkor olvassuk el a 31 fejezetet.
Gazda operációs rendszerként a FreeBSD évekig nem kapott hivatalosan támogatást egyetlen elterjedtebb virtualizációs megoldás részéről sem. Sokan erre a célra eddig a VMWare korábbi és inkább már elavult, a Linux kompatibilitási rétegre épülő változatait (mint például emulators/vmware3) használták. Nem sokkal azonban a FreeBSD 7.2 megjelenése után a Sun VirtualBox™ OSE (Open Source Edition) natív FreeBSD alkalmazásként bukkant fel a Portgyűjteményben.
A VirtualBox egy folyamatos fejlesztés alatt álló, komplett virtualizációs csomag, amely immáron elérhető a legtöbb népszerű operációs rendszerre, mint a Windows, Mac OS, Linux és a FreeBSD. Egyaránt képes Windows és UNIX fajtájú vendégrendszerek futattására. Nyílt- és zárt forráskódú változatban is elérhető. A felhasználók szempontjából a kettő közti talán legfontosabb eltérés, hogy a nyílt forráskódú változat nem tartalmaz USB támogatást. A különbségek teljes listája megtalálható a VirtualBox wiki “Editions” oldalán, a http://www.virtualbox.org/wiki/Editions címen. FreeBSD alatt jelenleg csak a nyílt forráskódú változat érhető el.
A VirtualBox a emulators/virtualbox-ose könyvtárból érhető el portként, és onnan a következő parancsokkal telepíthető:
# cd /usr/ports/emulators/virtualbox-ose # make install clean
A beállítások közt az egyik leghasznosabb a GuestAdditions nevű programcsomag telepítése. A benne található programokon keresztül a vendégként futó operációs rendszer számos hasznos szolgáltatását el tudjuk érni, úgy mint az egérmutató integrációját (ekkor az egérkurzor zökkenőmentesen használható a gazda és a vendég rendszerben is) vagy a videomemória gyorsabb elérését (különösen Windows esetében). A vendégekhez telepíthető ilyen jellegű kiegészítések az adott rendszer telepítése után a menüből érhetőek el.
A VirtualBox első indítása előtt el kell még végeznünk néhány további beállítást. Fontos tudnunk, hogy a port a telepítés során a /boot/modules könyvtárba tesz még egy rendszermagmodult is, amelyet még külön be kell töltenünk:
# kldload vboxdrv
Ehhez még vegyük fel a következő sort a /boot/loader.conf állományba, így a modul a rendszer minden egyes indításakor magától betöltődik:
vboxdrv_load="YES"
A VirtualBox 3.1.2 előtti változatai ezenkívül még igénylik a proc állományrendszer csatlakoztatását is. Az újabb változatokban erre már nincs szükség, mivel ezekben helyette már a sysctl(3) könyvtár függvényeit használják.
Ha viszont a port valamelyik korábbi változatát használjuk, akkor kövessük a lentebb szereplő utasításokat és csatlakoztassuk a proc állományrendszert:
# mount -t procfs proc /proc
Ha hozzáadjuk az alábbi sort a /etc/fstab állományhoz, akkor ez a beállítás is megmarad a rendszer újraindítása után:
proc /proc procfs rw 0 0
Megjegyzés: Nagyon valószínű, hogy proc állományrendszerrel van gondunk, amikor a következő hibaüzenetet kapjuk a VirtualBox indításakor:
VirtualBox: supR3HardenedExecDir: couldn't read "", errno=2 cchLink=-1Ilyenkor a mount parancs kiadásával ellenőrizzük az állományrendszer sikeres csatlakoztatását.
A VirtualBox telepítése során keletkezik még egy vboxusers nevű csoport. Ide azokat a felhasználókat vegyük fel, akik részére szeretnénk engedélyezni a VirtualBox használatát. A csoportba új tagokat például a pw paranccsal tudunk felvenni:
# pw groupmod vboxusers -m felhasználónév
Ezek után a VirtualBox indításához válasszuk a grafikus környezetünk menüjében található menüpontot, vagy egy terminálban gépeljük be ezt a parancsot:
% VirtualBox
A VirtualBox beállításának további lehetőségeiről a http://www.virtualbox.org/ címen elérhető hivatalos holnapon olvashatunk. Tekintettel arra, hogy a FreeBSD port még viszonylag friss és folyamatos fejlesztés alatt áll, ehhez még érdemes átolvasnunk a FreeBSD wikiben szereplő http://wiki.FreeBSD.org/VirtualBox/ oldalt is, ahol a vele kapcsolatos legfrissebb információkat és egyéb tudnivalókat találhatjuk.
A FreeBSD felhasználói földrajzi elhelyezkedésüket tekintve mindenhol megtalálhatóak a világon. Ebben a fejezetben ismertetjük a FreeBSD honosításához és idegennyelvre fordításához alkalmazható eszközöket, amelyek segítségével az angolt nem, vagy csak kevésbé ismerő felhasználók is képesek lesznek komolyabban használni. Az i18n megvalósítása rengeteg szemszögből megközelíthető rendszer és alkalmazás szintjén egyaránt, ezért ahol szükséges, hivatkozni fogunk az odaillő forrásokra.
A fejezet elolvasása során megismerjük:
milyen nyelveket és nyelvi beállításokat találhatunk napjaink operációs rendszereiben;
hogyan használjuk a nyelvi beállításokat a saját parancsértelmezőnkben;
hogyan állítsuk be a konzolt az angolon kívül más nyelvekhez;
hogyan használjuk ténylegesen az X Window Systemet a különböző nyelvekkel;
hol olvashatunk többet az I18N-kompatibilis alkalmazások fejlesztéséről.
A fejezet elolvasásához ajánlott:
külső alkalmazáok telepítésének ismerete (4 fejezet).
A fejlesztők az I18N elnevezést az angol “internationalization” (idegennyelvűség) szóból származtatják, amiben a szám az első és utolsó betű (az “I” és “N”) közt állók mennyiségére utal. Ehhez hasonlóan keletkezett az L10N a “localization” (honosítás) kifejezésből. Ezek házasságából jöttek létre az I18N/L10N módszerei, protokolljai és mindazon alkalmazásai, melyekkel a felhasználók a választott nyelvüket használni tudják.
Az I18N alkalmazások céljak eléréséhez függvénykönyvtárakban implementált I18N készleteket használnak. Ezzel lehetővé válik a fejlesztőik számára, hogy összegyűjtsék a programukban megjelenő összes szöveget egyetlen állományba, majd azt külön lefordítsák a különböző nyelvekre. Mi is ezen konvenció követésére szeretnénk bíztatni minden programozót.
Az I18N/L10N mindenhol jól jöhet, ahol idegennyelvű adatot akarunk megjeleníteni, bekérni vagy feldolgozni.
Az I18N és L10N nem korlátozódik a FreeBSD tudására. Jelenleg a világban beszélt legelterjedtebb nyelvek mindegyikét használhatjuk bennük. Csak hogy néhányat említsünk közülük: kínai, német, japán, koreai, francia, orosz, vietnámi és még sok más.
Az I18N minden adottságával együtt független a FreeBSD-től, egy egyezményes rendszer. Mindenkit bátorítunk arra, hogy segítse a FreeBSD-t ennek az egyezménynek a betartásában.
A honosítás beállításai három főbb részre tagolhatóak: a nyelv kódja, az ország kódja és a kódolás. A nyelvi beállítások nevei is ezekből állnak össze, az alábbi séma szerint:
NyelviKód_OrszágKód.Kódolás
Ha a FreeBSD (vagy bármilyen más, az I18N-t ismerő) rendszert honosítani akarunk az adott nyelvre, akkor a felhasználónak ismernie kell az adott országra és nyelvre vonatkozó kódokat (az országkód fogja elárulni az alkalmazásnak, hogy a nyelv melyik változatát használja). Ezenkívül a böngészők, SMTP/POP szerverek és webszerverek stb. is ennek alapján fognak döntéseket hozni. Íme néhány nyelv/ország kódja:
Bizonyos nyelvek 8 bites, széles vagy több byte-os, nem ASCII kódolású karaktereket használnak, melyekről a multibyte(3) man oldalán olvashatunk részletesebben. Ezeket régebbi alkalmazások egyáltalán nem ismerik fel, és hibásan vezérlőkaraktereknek tulajdonítják. Az újabbak általában már felismerik a 8 bites karaktereket. A felhasználóknak az alkalmazásokat a széles vagy a több byte-os karakterek használatához vagy újra kell fordítaniuk, vagy pedig megfelelően be kell állítaniuk, az implementációtól függően. A széles vagy több byte-os karakterek beolvasásához és feldolgozásához a FreeBSD Portgyűjtemény nyelvenként tartalmaz különféle programokat. A konkrét részletek megértéséhez olvassuk el az érintett FreeBSD portok I18N dokumentációját.
Vagyis a felhasználóknak át kell nézniük az alkalmazáshoz tartozó dokumentációt, mivel ebből tudhatják meg, hogyan állítsák be ezeket megfelelően vagy milyen értékeket adjanak át a configure/Makefile/fordító hármasnak.
Amiket esetleg érdemes lehet ezzel kapcsolatban észben tartanunk:
A nyelvfüggő egyszerű karakteres készletek (lásd multibyte(3)), például ISO8859-1, ISO8859-15, KOI8-R, CP437.
A széles vagy több byte-os kódolások, például az EUC, Big5.
A karakterkészletek jelenleg elérhető listáját meg tudjuk tekinteni az IANA adatbázisában.
Megjegyzés: A FreeBSD helyettük X11-kompatibilis nyelvi kódolásokat használ.
A FreeBSD port- és csomagrendszerében az I18N alkalmazások a könnyebb felismerhetőség érdekében a nevükben tartalmazzák az I18N megnevezést. Nem minden esetben támogatják a szükséges nyelvet.
Általában elegendő annyi, hogy a kívánt nyelvi beállítás nevét exportáljuk az általunk használt parancsértelmező LANG környezeti változójába. Ez megtehető a felhasználói könyvtárunkban található ~/.login_conf, vagy a felhasználói parancsértelmező indító állományában (~/.profile, ~/.bashrc, ~/.cshrc). Nem szükséges a nyelvi beállítások részleteit, mint például az LC_CTYPE, LC_CTIME változókat, megadni. A pontosabb részleteket a FreeBSD adott nyelvre vonatkozó dokumentációjában találjuk meg.
A következő két környezeti változót kell megadnunk az említett konfigurációs állományokban:
A LANG változót a POSIX setlocale(3) családjának
A MM_CHARSET változót az alkalmazás MIME karakterkészletéhez
Ez magában foglalja a felhasználói parancsértelmező, az adott alkalmazás és az X11 beállítását.
Két módszer létezik a nyelvi beállítások megadására, ezen kettőről fogunk a továbbiakban beszélni. Az első (és egyben ajánlott) ezek közül a bejelentkezési osztályban levő környezeti változók beállítása, a második pedig környezeti változók hozzáadása a parancsértelmező rendszerszintű indító állományához.
Ezzel a módszerrel a nyelvi beállítás nevéhez és a MIME karakterkészlethez kötődő környezeti változókat az összes létező parancsértelmező számára csak egyszer kell megadnunk ahelyett, hogy külön mindegyikük indítóállományában szerepeltetnénk. A felhasználó a saját részét maga is elvégezheti, míg a rendszer szintjén adminisztrátori jogosultságokat igényel.
Íme példa gyanánt a felhasználó könyvtárában egy egyszerű .login_conf állomány, amiben mind a két változót Latin-1 kódolásra állítottuk:
me:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:
Ebben a .login_conf példában a változókat BIG-5 kódolású hagyomános kínai nyelvre állítjuk. Észrevehetjük, hogy itt sokkal több változó beállítására van szükségünk, mivel egyes szoftverek nem kezelik megfelelően a nyelvi beállításokat kínai, japán és koreai nyelvek esetén.
# Azok a felhasználók, akik nem kívánnak tajvani pénz- vagy idő formátumot # használni, egyenként írják át a változókat me:\ :lang=zh_TW.Big5:\ :setenv=LC_ALL=zh_TW.Big5:\ :setenv=LC_COLLATE=zh_TW.Big5:\ :setenv=LC_CTYPE=zh_TW.Big5:\ :setenv=LC_MESSAGES=zh_TW.Big5:\ :setenv=LC_MONETARY=zh_TW.Big5:\ :setenv=LC_NUMERIC=zh_TW.Big5:\ :setenv=LC_TIME=zh_TW.Big5:\ :charset=big5:\ :xmodifiers="@im=gcin": # a gcin beállítása XIM szerverként
A többit lásd a Rendszergazdai szintű beállítások résznél és a login.conf(5) man oldalon.
Ellenőrizzük, hogy a felhasználó /etc/login.conf állományban szereplő bejelentkezési osztálya a megfelelő nyelvet állítja be. Győződjünk meg róla, hogy az alábbi beállítások helyet kapnak az /etc/login.conf állományban:
nyelv_neve|A hozzáférés típusának leírása:\ :charset=MIME_karakterkészlet:\ :lang=nyelvi_beállítás_neve:\ :tc=default:
Folytassuk tovább az előbbi Latin-1-es példánk szerint:
nemet|Nemet felhasznalok hozzaferesei:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:\ :tc=default:
Mielőtt megváltoztatnánk a felhasználók bejelentkezési osztályait, adjuk ki a következő parancsot:
# cap_mkdb /etc/login.conf
Ezzel a /etc/login.conf új tartalma láthatóvá válik a rendszer számára.
A vipw segédprogramot új felhasználók hozzáadására használjuk, aminek eredményeképpen egy ehhez hasonló bejegyzést tudunk létrehozni:
felhasznalo:jelszo:1111:11:nyelv:0:0:Felhasznalo neve:/home/felhasznalo:/bin/sh
Az adduser-rel az alábbiak szerint tudunk új felhasználókat felvenni a rendszerbe:
Adjuk hozzá a defaultclass = nyelv sort az /etc/adduser.conf-hoz. Ne felejtsük el, hogy ezután minden olyan felhasználónál a default bejelentkezési osztályt meg kell adni, akik nem ezt a nyelvet használják.
Egy másik megoldás lehet, hogy a adduser(8) használata során minden felhasználó esetén külön megadjuk a nyelvet az
Enter login class: default []:
rész megjelenésekor.
Vagy használhatjuk az alábbit az egyes eltérő nyelvű felhasználók hozzáadásánál:
# adduser -class nyelv
Amennyiben a pw(8)-t használjuk új felhasználók hozzáadására, így érdemes meghívnunk:
# pw useradd felhasználó_neve -L nyelv
Megjegyzés: Ezt a módszert nem javasoljuk, mivel parancsértelmezőnként eltérő beállítást kíván. Használjuk helyette a bejelentkezési osztályokkal megvalósított módszert.
A nyelvi beállítás nevének és a MIME karakterkészlet beállításához egyszerűen csak adjuk meg a lenti /etc/profile és/vagy /etc/csh.login parancsértelmező indító állományokban bemutatott környezeti változót. Továbbra is a német nyelvet használjuk a példánkban:
Az /etc/profile esetén:
LANG=de_DE.ISO8859-1; export LANG MM_CHARSET=ISO-8859-1; export MM_CHARSET
Vagy a /etc/csh.login esetén:
setenv LANG de_DE.ISO8859-1 setenv MM_CHARSET ISO-8859-1
Úgy is megoldhatjuk ezt a feladatot, ha fenti utasításokat a /usr/share/skel/dot.profile (hasonló a fentebb említett /etc/profile állományhoz) vagy /usr/share/skel/dot.login (hasonló a fentebb említett /etc/csh.login állományhoz) esetén hajtjuk végre.
X11 esetén:
Adjuk meg a $HOME/.xinitrc állományban:
LANG=de_DE.ISO8859-1; export LANG
Vagy:
setenv LANG de_DE.ISO8859-1
Attól függően, milyen parancsértelmezőt használunk (lásd fentebb).
Az összes egyszerű karakteres készlet esetén a kérdéses nyelvhez megfelelő konzolos betűtípust az /etc/rc.conf állományban tudjuk beállítani:
font8x16=betűtípus_neve font8x14=betűtípus_neve font8x8=betűtípus_neve
Itt a betűtípus_neve az .fnt kiterjesztés elhagyásával a /usr/share/syscons/fonts könyvtárban található állományok nevéből adható meg.
Ha szükséges állítsuk még be a megfelelő billentyű- és betűkiosztást is a sysinstall segítségével. Ahogy sikerült elindítanunk a sysinstallt, válasszuk a
(Beállítások) pontot, majd a (Konzol)-t! Vagy ehelyett beírhatjuk az alábbi sorokat a /etc/rc.conf állományba:scrnmap=betűkiosztás_neve keymap=billentyűkiosztás_neve keychange="funkcióbillentyű_sorszáma szekvencia"
Itt a betűkiosztás_neve a /usr/share/syscons/scrnmaps könyvtárban található állományok nevéből származtatható az .scm kiterjesztés elhagyásával. A betűkiosztásokat általában a 9 bites karaktermátrixszal rendelkező VGA megjelenítők problémáinak megoldására lehet használni, mivel így az eredetileg 8 bittel ábrázolt betűket ki lehet tolni az ilyen típusú kártyák pszeudografikus területéről.
Ha aktiváltuk a moused egérkezelő démont az /etc/rc.conf állományban az alábbi sor megadásával:
moused_enable="YES"
akkor a következő bekezdésben rá is térhetünk az egérmutató adatainak vizsgálatára.
A syscons(4) meghajtóban található egérmutató alapértelmezés szerint a 0xd0 - 0xd3 karaktereket foglalja el a karakterkészletben. Ha a nyelv ezeket használja, arrébb kell költöztetnünk ezt az egérmutató által elfoglalt sávot. A FreeBSD-ben az /etc/rc.conf állományon keresztül érhetjük el:
mousechar_start=3
A billentyűkiosztás_neve a /usr/share/syscons/keymaps könyvtárból, a .kbd kiterjesztés elhagyásával keletkezik. Ha nem vagyunk benne biztosak, melyik kiosztást is kellene használnunk, a kbdmap(1) segítségével a rendszer újraindítása nélkül kipróbálhatjuk a rendelkezésre álló billentyűkiosztásokat.
A keychange használatára többnyire a funkcióbillentyűk adott termináltípushoz egyeztetéséhez van szükség, mert a funkcióbillentyűk szekvenciái nem adhatóak meg a billentyűkiosztásban.
Ezeken felül érdemes megbizonyosodnunk róla, hogy a /etc/ttys állományban jól állítjuk be a terminál típusát minden ttyv* bejegyzés esetén. Az aktuálisan előre beállított kapcsolatok a következők:
Karakterkészlet | Termináltípus |
---|---|
ISO8859-1 vagy ISO8859-15 | cons25l1 |
ISO8859-2 | cons25l2 |
ISO8859-7 | cons25l7 |
KOI8-R | cons25r |
KOI8-U | cons25u |
CP437 (alapértelmezett VGA) | cons25 |
US-ASCII | cons25w |
A széles és több byte-os karaktereket használó nyelvek esetén használjuk a /usr/ports/nyelv könyvtárban megfelelő FreeBSD portot. Egyes portok konzolosként jelennek meg, miközben a rendszer soros virtuális terminálként látja ezeket, ezért fenn kell tartanunk elegendő virtuális terminált mind az X11, mind pedig pszeudo-soros konzol számára. Itt látható a konzolon más nyelvet használó alkalmazások részleges listája:
Nyelv | Hely |
---|---|
Hagyományos kínai (BIG-5) | chinese/big5con |
Japán | japanese/kon2-16dot vagy japanese/mule-freewnn |
Koreai | korean/han |
Habár az X11 nem része a FreeBSD projektnek, megemlítünk vele kapcsolatban néhány hasznos információt a FreeBSD felhasználók számára is. Még több részletet a Xorg honlapjáról vagy az általunk használt X11 szerver dokumentációjából tudhatunk meg.
Az ~/.Xresources állományban további I18N beállításokat finomíthatunk alkalmazásonként (például betűtípusok, menük stb.).
Telepítsük fel az Xorg (x11-servers/xorg-server) vagy az XFree86 (x11-servers/XFree86-4-Server) szerverek valamelyikét, majd telepítsük a nyelvhez tartozó TrueType betűtípusokat. Ezután a megfelelő nyelvi beállítása megadása révén már látni fogjuk a kiválasztott nyelven megjelenő menüket és egyéb szövegeket.
Az X11 beviteli módszerének (X11 Input Method, XIM) protokollja egy új szabvány az összes X11 klienshez. Minden X11 alkalmazást olyan XIM-kliensként kell elkészíteni, amelyek a bemenő adatokat az XIM beviteli szerverektől kapják. Különböző XIM szerverek érhetőek el az eltérő nyelvekhez.
Egyes egyszerű karakteres készletek általában hardveresen beépítve megtalálhatóak a nyomtatókban. A széles és több byte-os karakterkészletek azonban külön beállítást igényelnek, amire az apsfilter használatát javasoljuk. A megfelelő nyelvhez szabott eszközökkel át is lehet konvertálni PostScript vagy PDF formátumba a nyomtatni kívánt dokumentumot.
A FreeBSD gyors állományrendszere (Fast File System, FFS) szabályosan kezeli a 8 bites karaktereket, tehát tetszőleges egyszerű karakteres készlet (lásd multibyte(3)) használható vele, viszont a karakterkészlet nevét nem tárolja el az állományrendszerben. Emiatt a neveket nyersen kezeli, semmit sem tud a kódolásukról. Az FFS hivatalosan még nem támogat semmilyen fajta széles vagy több byte-os karakterkészletet. Léteznek azonban független javítások az FFS-hez, amelyek lehetővé teszik ilyen széles vagy több byte-os karakterek használatát. Ezek csak átmeneti és nem hordozható megoldások, olyan módosítások, amelyekről úgy döntöttünk, nem vesszük fel ezeket a forrásfába. Az érintett nyelvek honlapjain elérhetjük ezeket a javításokat és többet megtudhatunk róluk.
A FreeBSD MS-DOS állományrendszere konfigurálható úgy, hogy képes legyen konvertálni az MS-DOS Unicode és a kiválasztott FreeBSD állományrendszerének karakterkészlete között. Erről bővebben a mount_msdosfs(8) man oldalon olvashatunk.
Számos FreeBSD port rendelkezik I18N támogatással. Ezek egy részének nevében szerepel az -I18N jelzés. Az ilyen és sok más hasonló program beépítetten ismeri az I18N-t, így nem igényelnek külön beállításokat.
Néhány alkalmazás azonban, mint például a MySQL, esetén az adott karakterkészletnek megfelelő módon kell beállítani a Makefile állományt. Ezt általában magában a Makefile állományban tudjuk megtenni, vagy pedig a configure megfelelő paraméterezésével.
A KOI8-R kódolásról bővebben a KOI8-R oldalán (orosz hálózati karakterkészlet) tájékozódhatunk.
Írjuk a következő sorokat a ~/.login_conf állományunkba:
me:Az en hozzaferesem:\ :charset=KOI8-R:\ :lang=ru_RU.KOI8-R:
Valamint lásd a fejezet korábbi részeiben említett példákat a nyelvi beállítások megadására.
Tegyük hozzá a következő sort az /etc/rc.conf állományunkhoz:
mousechar_start=3
Illetve használjuk az /etc/rc.conf állományban még a következő beállításokat is:
keymap="ru.koi8-r" scrnmap="koi8-r2cp866" font8x16="cp866b-8x16" font8x14="cp866-8x14" font8x8="cp866-8x8"
A /etc/ttys állományban szereplő mindegyik ttyv* bejegyzésnél adjuk meg termináltípusnak a cons25r-t.
Valamint lásd a fejezet korábbi részében bemutatott példákat a konzol beállítására.
Mivel a legtöbb nyomtató hardveresen tartalmazza a CP866 kódlapot az orosz karakterek támogatásához, használnunk kell egy kimeneti szűrőt a KOI8-R kódolású karakterek CP866 kódolásúra konvertálásához. Egy ilyen szűrő alapértelmezés szerint telepítésre kerül a /usr/libexec/lpr/ru/koi2alt állományba. Az orosz nyomtatóhoz tartozó bejegyzés valahogy így néz ki az /etc/printcap állományban:
lp|Orosz helyi sornyomtato:\ :sh:of=/usr/libexec/lpr/ru/koi2alt:\ :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:
A bővebben magyarázathoz lásd a printcap(5) man oldalt.
A most következő példa fstab(5) bejegyzés azt mutatja meg, hogy lehet bekapcsolni az orosz állománynevek támogatását a csatlakoztatandó MS-DOS állományrendszereken:
/dev/ad0s2 /dos/c msdos rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0
Az -L
kapcsolóval
kiválasztjuk a használni kívánt
nyelvi beállítás nevét, és
a -W
kapcsolóval megadjuk a karakterek
átváltásához szükséges
táblázatot. A -W
kapcsoló használata során
mindenképpen csatlakoztassuk a
/usr állományrendszert
még az MS-DOS partíció előtt,
mivel az átváltáshoz használt
táblázatok a
/usr/libdata/msdosfs
könyvtárban találhatóak meg! A
részleteket a mount_msdosfs(8) man oldalon
találhatjuk meg.
Adjuk meg először a leírtak szerint a nem X-es nyelvi beállításokat.
Ha Xorg-ot használunk, telepítsük a x11-fonts/xorg-fonts-cyrillic csomagot.
Ellenőrizzük a /etc/X11/xorg.conf állományban a "Files" szakaszt. Az alábbi sort mindegyik más FontPath bejegyzés előtt kell szerepeltetnünk:
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic"
Megjegyzés: A portok között találhatunk még további cirill betűtípusokat.
Az orosz billentyűzet életre keltéséhez írjuk be a következőket az xorg.conf állomány "Keyboard" szakaszába:
Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:toggle"
Ellenőrizzük, hogy a XkbDisable ki van kapcsolva (ki van kommentezve) ebben a szakaszban.
A grp:toggle beállítás esetén az orosz/latin (RUS/LAT) átkapcsolás gombja a jobb Alt lesz, míg a grp:ctrl_shift_toggle beállításnál a Ctrl+Shift. A grp:caps_toggle esetén az orosz/latin váltás a CapsLock billentyűvel történik. Ilyenkor (de csak latin módban) a megszokott CapsLock funkció továbbra is elérhető a Shift+CapsLock kombinációval. A grp:caps_toggle valamiért nem működik az Xorgban.
Ha van “Windows” billentyűnk a billentyűzeten és azt tapasztaljuk, hogy egyes nem-alfabetikus billentyűk rosszul kerülnek kiosztásra orosz módban, adjuk hozzá a következő sort az xorg.conf állományhoz:
Option "XkbVariant" ",winkeys"
Megjegyzés: Az orosz XKB billentyűzet egyes nem honosított alkalmazások esetén nem működik.
Megjegyzés: A kis mértékben honosított alkalmazások esetén javasolt meghívni a
XtSetLanuageProc(NULL, NULL, NULL);
függvényt valahol a program elején.Az X11 alkalmazások honosításához további útmutatásokat a KOI8-R X Window-ra című leírásban találhatunk.
A FreeBSD-Taiwan projekt készített a FreeBSD-hez egy
kínainak szóló hogyant, amely
elérhető a http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/
címen és számos kínai portot
használ. A FreeBSD kínai hogyan
jelenlegi szerkesztője Shen Chuan-Hsing
(<statue@freebsd.sinica.edu.tw>
).
Chuan-Hsing Shen
(<statue@freebsd.sinica.edu.tw>
) létrehozta
a
Kínai FreeBSD gyűjteményt (Chinese FreeBSD
Collection, CFC) a FreeBSD-Taiwan
zh-L10N-tut munkáját
felhasználva. A hozzá tartozó csomagok
és szkriptek elérhetőek a ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/CFC/
címen.
Slaven Rezic (<eserte@cs.tu-berlin.de>
)
készített egy írást, amely
elmagyarázza, hogyan használjunk német
nemzeti karaktereket a FreeBSD alatt. Ez a leírás
németül készült és a http://user.cs.tu-berlin.de/~eserte/FreeBSD/doc/umlaute/umlaute.html
címen érhető el.
Nikos Kokkalis <nickkokkalis@gmail.com>
egy
teljes cikket írt a FreeBSD görög nyelvi
támogatásáról. Ez
elérhető a FreeBSD hivatalos görög
nyelvű dokumentációjában, a ../../../../doc/el_GR.ISO8859-7/articles/greek-language-support/index.html
címen. Felhívjuk a figyelmet, hogy az
csak görög nyelven
érhető el.
A japán honosításhoz lásd http://www.jp.FreeBSD.org/, a koreaihoz pedig lásd http://www.kr.FreeBSD.org/.
Néhány FreeBSD felhasználó lefordította a FreeBSD dokumentációjának egyes részeit más nyelvekre is. Munkájuk elérhető a főoldalon található linkeken keresztül vagy a /usr/share/doc könyvtárban.
A FreeBSD a kiadások közt is állandó fejlődésben van. Vannak felhasználók, akik a hivatalosan kiadott változatokat használják, és vannak, akik szeretik folyamatosan nyomonkövetni a fejlesztéseket. Emellett viszont a hivatalos kiadások esetében szükség lehet bizonyos biztonsági frissítések és kritikus javítások alkalmazására. Függetlenül a pillanatnyilag használt változattól, a FreeBSD alaprendszerében megtalálható minden olyan eszköz, amellyel könnyedén frissíteni tudunk a különböző verziók között. Ebben a fejezetben segítünk dönteni a fejlesztői változat és a kiadások használata között. Továbbá megismerhetjük a rendszer frissítéséhez használható alapvető eszközöket.
A fejezet elolvasása során megismerjük:
milyen segédprogramokkal tudjuk frissíteni az alaprendszert és a Portgyűjteményt;
hogyan tartsuk naprakészen rendszerünket a freebsd-update, CVSup, CVS vagy CTM használatával;
hogyan vessük össze a telepített rendszerünk aktuális állapotát egy ismert eredeti változattal;
hogyan frissítsük a dokumentációt CVSup vagy dokumentációs portok segítségével.
a két fejlesztői ág, a FreeBSD-STABLE és a FreeBSD-CURRENT közti különbséget;
a make buildworld (stb.) segítségével hogyan fordítsuk és telepítsük újra az egész alaprendszert.
A fejezet elolvasásához ajánlott:
a hálózati kapcsolatunk helyes beállítása (31 fejezet);
a külső szoftverek telepítésének ismerete (4 fejezet).
Megjegyzés: A fejezetben a FreeBSD forrásainak frissítését a cvsup parancs segítségével fogjuk elvégezni. Ehhez telepítsük a net/cvsup portot vagy csomagot (ha a cvsup parancsot nem akarjuk grafikus felületen keresztül használni, akkor elegendő csak a net/cvsup-without-gui portot). Ha a FreeBSD 6.2-RELEASE vagy későbbi változatával rendelkezünk, akkor elegendő csak az alaprendszer részeként elérhető csup(1) programot használnunk.
A biztonsági javítások telepítése minden számítógépes szoftver, különösen az operációs rendszerek számára lényeges mozzanat. Nagyon hosszú ideig ez a FreeBSD esetében nem volt könnyen megoldható: a javításokat közvetlenül a forráskódon kellett elvégezni, ezekből újrafordítani a rendszert, majd telepíteni.
Ez a nehézség mostanra viszont már elhárult, mivel a FreeBSD legfrissebb verziói már tartalmaznak egy freebsd-update nevű segédprogramot, amellyel mindez leegyszerűsödik. Ez a program két külön funkciót lát el. Először is, lehetővé teszi, hogy a FreeBSD alaprendszer újrafordítása és -telepítése nélkül javítsunk biztonsági és egyéb apró hibákat, valamint másodsorban támogatja a kisebb és nagyobb verziójú kiadások közti váltást.
Megjegyzés: Ezek a bináris frissítések azonban csak a FreeBSD biztonsági csapata által is felügyelt architektúrák és kiadások esetén érhetőek el. Emellett bizonyos lehetőségek használatához, például a FreeBSD verziói közti átállás támogatásához a freebsd-update(8) legújabb változata szükségeltetik. Ezért ne felejtsük el alaposan átolvasni a legújabb kiadásokról szóló bejelentéseket mielőtt frissítenénk rájuk, mivel ezzel kapcsolatban fontos információkat tartalmazhatnak. Az említett bejelentések a http://www.FreeBSD.org/releases/ címen érhetőek el.
Ha a crontab már hivatkozik a freebsd-update programra, akkor a most következő művelet elkezdése előtt tiltsuk le.
Ha változtatnénk szeretnénk a frissítési folyamaton, ekkor a programhoz tartozó, /etc/freebsd-update.conf nevű konfigurációs állományt kell módosítanunk. Az opciók részletes ismertetéssel rendelkeznek, habár némelyiknél még további magyarázat kellhet:
# Az alaprendszerben frissíteni kívánt komponensek Components src world kernel
Ezzel a paraméterrel határozhatjuk meg, hogy a FreeBSD mely részei kerüljenek frissítésre. Alapértelmezés szerint a program frissíti a forrásokat, a teljes alaprendszert és a rendszermagot. Komponensként a telepítésnél választható elemeket adhatjuk meg, például "world/games" hozzáadásakor a games kategória elemei is folyamatosan frissülni fognak. Az "src/bin" megadásakor pedig az src/bin könyvtár tartalma frissül.
Ezt a beállítást a legjobb meghagyni az alapértelmezett értéken, mivel a további elemek megadásánál egyenként fel kell sorolni a frissítendő komponenseket. Ha itt viszont kifelejtünk valamit, akkor könnyen megeshet, hogy a források és a binárisok verziója elcsúszik egymástól.
# Az IgnorePaths beállítás után megadott szövegre illeszkedő összes # bejegyzés frissítése kimarad IgnorePaths
Ennél a beállításnál azokat a könyvtárakat kell megadnunk, amelyeket (és tartalmukat) ki szeretnénk hagyni a frissítés során. Ezek lehetnek például a /bin vagy az /sbin. Így meg tudjuk akadályozni, hogy freebsd-update esetleg felülírjon valamilyen helyi változtatást a rendszerünkben.
# Az UpdateIfUnmodified beállítás után megadott elérési útvonalakon csak # a felhasználó által még nem módosított állományok fognak frissülni # (hacsak a módosításokat össze nem fésüljük, lásd lentebb) UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile
A megadott könyvtárakban csak azokat a konfigurációs állományokat fogja frissíteni, amelyeket nem változtattuk meg. Amennyiben bármelyikük eltér az eredetileg frissítendő változattól, azt a program nem módosítja. Létezik egy másik hasonló beállítás, a KeepModifiedMetadata, amely hatására a freebsd-update az összefésülés során elmenti a változtatásokat.
# A MergeChanges beállításnál szereplő állományok helyi módosításait # automatikusan összefésüljük a FreeBSD újabb verziójára frissítése közben MergeChanges /etc/ /var/named/etc/
Itt azokat a könyvtárakat adhatjuk meg, amelyekben a freebsd-update számára engedélyezzük a konfigurációs állományok új verziójának összefésülését a jelenlegi állapottal. Az összefésülés lényegében a mergemaster(8) használatánál már megszokott módon, diff(1) formátumban érkező módosítások sorozata alapján történik. Ekkor egy szövegszerkesztő segítségével felügyelhetjük az összefésülés menetét vagy megállíthatjuk a freebsd-update futását. Ha kétségeink adódnak, akkor egyszerűen mentsük le az /etc könyvtárat és fogadjuk el mindegyik összefésülés eredményét. A mergemaster működéséről a 24.7.11.1 Szakasz ad részletesebb tájékoztatást.
# A FreeBSD frissítésekor ezt a könyvtárat fogja a program használni a # letöltött módosítások és az egyéb ideiglenes állományok tárolására # WorkDir /var/db/freebsd-update
Az itt megadott könyvtárba fognak kerülni az elvégzendő módosítások és az egyéb ideiglenesen keletkező állományok. A verziók közti váltás során ebben a könyvtárban ajánlott legalább 1 GB szabad tárterületnek lennie.
# A kiadások közti váltás során a Components beállításnál megadott # elemek kerüljenek csak frissítésre (StrictComponents yes), vagy a # program próbálja meg magától kitalálni, hogy milyen komponesek # *lehetnek* fenn a rendszeren és azokat frissítse (StrictComponents # no)? # StrictComponents no
Ha ennél a beállításnál a yes értéket adjuk meg, akkor a freebsd-update feltételezni fogja, hogy a Components opciónál felsoroltunk minden frissítendő komponenst és nem próbál meg mást is megváltoztatni. Ilyenkor tehát a freebsd-update tulajdonképpen egyedül csak a Components által meghatározott elemekhez tartozó állományokat fogja frissíteni.
A biztonsági javítások mindig egy távoli gépen tárolódnak, a következő parancsok használatával tölthetőek le és telepíthetőek:
# freebsd-update fetch # freebsd-update install
Amennyiben a rendszermagot is érintik javítások, úgy a rendszert a művelet befejeződésével újra kell indítanunk. Ha minden a megfelelő módon történt, akkor a rendszerünk már tartalmazni fogja a korábban letöltött és telepített javításokat, és a freebsd-update akár beállítható egy naponta végrehajtandó cron(8) feladatnak. Ehhez mindössze a következő bejegyzést kell elhelyeznünk az /etc/crontab állományban:
@daily root freebsd-update cron
A bejegyzés szerint naponta egyszer le fog futni a
freebsd-update. Ilyenkor, vagyis a
cron
paraméter megadásakor a
freebsd-update csak ellenőrzi, hogy
vannak-e telepítendő frissítések. Ha
talál, akkor automatikusan letölti ezeket a lemezre,
de nem telepíti. Helyette levélben
értesíti a root
felhasználót, aki ezután bármikor
manuálisan kérheti a
telepítést.
Probléma esetén az alábbi paranccsal megkérhetjük a freebsd-update programot a legutóbb telepített módosítások visszavonására:
# freebsd-update rollback
Ha ez a visszavonás a rendszermagra vagy annak moduljaira is vonatkozott, akkor a rendszert újra kell indítanunk a parancs futásának befejeződésével. A FreeBSD csak ilyenkor képes betölteni az új binárisokat betölteni a memóriába.
A freebsd-update önmagától csak a GENERIC típusú rendszermagokat képes frissíteni. Ha saját rendszermagot használunk, akkor azt a rendszer többi komponensének frissítését követően újra kell fordítanunk és telepítenünk. A freebsd-update azonban még akkor is érzekelni és frissíteni fogja a GENERIC rendszermagot (amennyiben az létezik), ha az éppen nem az aktuális(an futó) rendszermag.
Megjegyzés: Mindig érdemes tartani egy másolatot a GENERIC rendszermagról a /boot/GENERIC könyvtárban. Rengeteg különböző probléma felderítésében tud segíteni, illetve ez a 24.2.3 Szakasz szakaszban leírt freebsd-update programmal végzett frissítéseknél is hasznos lehet.
Hacsak nem változtatjuk meg az /etc/freebsd-update.conf állományt, a freebsd-update a rendszermag forrásait is frissíti a többivel együtt. A saját rendszermag újrafordítása és telepítése ezután a már a megszokott módon elvégezhető.
Megjegyzés: A freebsd-update által terjesztett frissítések nem mindig érintik a rendszermagot. Ha a rendszermag forrásai nem változnak egy freebsd-update install parancs kiadása során, akkor nem kötelező újrafordítani a saját rendszermagot. A freebsd-update viszont mindig módosítani fogja a /usr/src/sys/conf/newvers.sh állományt. Itt az aktuális hibajavítás sorszáma szerepel (amelyet a -p (mint “patch level” előtaggal kapcsolnak a rendszer verziójához, és a uname -r paranccsal lehet lekérdezni). Ennek megfelelően tehát a saját rendszermag újrafordítása után, még ha semmi más nem is változott, a uname(1) képes pontosan jelezni a rendszerhez készült hibajavítás sorszámát. Ez különösen fontos több rendszer karbantartása során, mivel így könnyen és gyorsan tájékozódhatunk azok naprakészségéről.
Verziók közti váltás során a külső alkalmazások műkődését akadályozó régi tárgykódok és függvénykönyvtárak törlődni fognak. Ezért javasoljuk, hogy vagy töröljük le az összes portot és telepítsük újra, vagy az alaprendszer frissítése után hozzuk ezeket is naprakész állapotba a ports-mgmt/portupgrade segédprogram segítségével. Először minden bizonnyal szeretnék kipróbálni a frissítést, ezt a következő paranccsal tehetjük meg:
# portupgrade -af
Ezzel gondoskodunk róla, hogy a minden a megfelelően telepítődjön újra. Ha a BATCH környezeti változót a yes értékre állítjuk, akkor a folyamat során megjelenő összes kérdésre automatikusan a yes választ adjuk, ezáltal önállósítani tudjuk.
Ha saját rendszermagot használunk, akkor ennél valamivel azért több feladatunk van. Szükségünk lesz a GENERIC rendszermagot egy példányára, amelyet másoljunk a /boot/GENERIC könyvtárba. Amennyiben nincs GENERIC típusú rendszermag a rendszerünkön, a következő módok valamelyikén keresztül tudunk szerezni:
Ha a saját rendszermagot még csak egyszer fordítottuk, akkor a /boot/kernel.old könyvtárban még megtalálható a GENERIC. Ezt nevezzük át egyszerűen /boot/GENERIC könyvtárra.
Ha fizikailag hozzá tudunk férni az érintett géphez, akkor a GENERIC egy példányát akár CD-ről is átmásolhatjuk. Helyezzük be a telepítőlemezt és adjuk ki a következő parancsokat:
# mount /cdrom # cd /cdrom/X.Y-RELEASE/kernels # ./install.sh GENERIC
Itt a X.Y-RELEASE könyvtár nevében értelemszerűen helyettesítsük be az általunk használt változatot. A GENERIC rendszermag ekkor alapértelmezés szerint a /boot/GENERIC könyvtárba kerül.
Ha az előbbiek közül egyik sem lehetséges, akkor a GENERIC rendszermagot közvetlenül akár forrásból is lefordíthatjuk és telepíthetjük:
# cd /usr/src # env DESTDIR=/boot/GENERIC make kernel # mv /boot/GENERIC/boot/kernel/* /boot/GENERIC # rm -rf /boot/GENERIC/boot
A freebsd-update akkor fogja ezt GENERIC rendszermagként felismerni, ha a hozzá tartozó konfigurációs állományt nem módosítjuk. Továbbá javasoljuk, hogy semmilyen speciális beállítást ne alkalmazzunk a fordítás során (érdemes üresen hagyni ehhez az /etc/make.conf állományt).
Nem kötelező újraindítani a rendszert a GENERIC rendszermaggal.
A freebsd-update képes frissíteni rendszerünket egy adott kiadásra. Például a következő paraméterek megadásával válthatunk a FreeBSD 6.4 használatára:
# freebsd-update -r 6.4-RELEASE upgrade
A parancs elindulása után nem sokkal, a váltáshoz szükséges információk összegyűjtéséhez a freebsd-update elemzi a konfigurációs állományában megadott beállításokat és a rendszer jelenleg használt verzióját. A képernyőn ekkor sorban megjelennek a program részéről érzékelt és nem érzékelt komponensek. Mint például ahogy itt látható:
Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching metadata signature for 6.3-RELEASE from update1.FreeBSD.org... done. Fetching metadata index... done. Inspecting system... done. The following components of FreeBSD seem to be installed: kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin world/base world/info world/lib32 world/manpages The following components of FreeBSD do not seem to be installed: kernel/generic world/catpages world/dict world/doc world/games world/proflibs Does this look reasonable (y/n)? y
Ekkor a freebsd-update megpróbálja letölteni a verziók közti váltáshoz szükséges összes állományt. Bizonyos esetekben kérdésekkel fordul a felhasználó felé arra vonatkozóan, hogy miket telepítsen fel vagy mit csináljon.
A saját rendszermag használatakor az iménti lépés valamilyen ehhez hasonló figyelmeztetést fog adni:
WARNING: This system is running a "SAJÁT RENDSZERMAG" kernel, which is not a kernel configuration distributed as part of FreeBSD 6.3-RELEASE. This kernel will not be updated: you MUST update the kernel manually before running "/usr/sbin/freebsd-update install"
Ez a figyelmeztetés most nyugodtan figyelmen kívül hagyható. A folyamat során a frissített GENERIC rendszermagot fogjuk használni.
A javítások letöltését követően megkezdődik a telepítésük. A váltás ezen lépése az adott gép aktuális terhelésétől és sebességétől függően változó hosszúságú lehet. Ezután a konfigurációs állományok összefésülése zajlik le — itt általában a emberi felügyeletre is szükség van az állományok összefésülésének irányításához, amelynek folyamatosan láthatóak az eredményei. A meghiúsult vagy kihagyott összefésülések a teljes frissítési folyamat leállását vonják maguk után. Az /etc könyvtárban tárolt fontosabb állományokról, mint például a master.passwd vagy group javasolt előzetesen biztonsági mentést készíteni és később kézzel hozzájuk adni a változtatásaikat.
Megjegyzés: A rendszerben ekkor még nem lesz jelen semmilyen konkrét változás, az összes említett javítás és összefésülés egy külön könyvtárban történik. A telepített javításokat és az összefésült konfigurációs állományokat a folyamat végén magának a felhasználónak kell véglegesíteni.
A frissítési eljárás végén a következő parancs kiadásával tudjuk ténylegesen érvényesíteni az eddig elvégzett módosításokat:
# freebsd-update install
Először mindig a rendszermag és a hozzá tartozó modulok cserélődnek le. Ahogy ez végrehajtódott, újra kell indítanunk a rendszert. Ha saját rendszermagot használunk, akkor a nextboot(8) parancs segítségével állítsuk be a következő rendszerindítás során betöltendő rendszermagot a /boot/GENERIC könyvtárban levőre (ezt frissítettük):
# nextboot -k GENERIC
Figyelem: Mielőtt újraindítanánk a gépünket a GENERIC rendszermaggal, győződjünk meg róla, hogy szerepel benne minden olyan meghajtó, amely elengedhetetlen a rendszer hiánytalan indításához (és képes lesz újra csatlakozni a hálózathoz, ha éppen távolról adminisztráljuk). Ez különösen olyan esetben fontos, amikor a saját rendszermagunkban beépítetten szerepeltek bizonyos modulok. Ilyenkor a GENERIC rendszermag használatakor ezeket a /boot/loader.conf állományon keresztül töltethetjük be ideiglenesen. A frissítés befejezéséig érdemes viszont minden nem létfontosságú szolgáltatást leállítani, leválasztani lemezeket és hálózati megosztásokat stb.
A rendszerünk most már újraindítható a frissített rendszermaggal:
# shutdown -r now
A rendszer sikeres újraindulása után ismét el kell indítanunk a freebsd-update programot, amely korábban már elmentette a frissítés állapotát, emiatt a legutóbbi pontról fog folytatódni, illetve törli az osztott könyvtárak és tárgykódok régebbi változatait. Innen az alábbi paranccsal léphetünk tovább:
# freebsd-update install
Megjegyzés: A függvénykönyvtárak verziói közti eltérések mértékétől függően elképzelhető, hogy a telepítés az említett három fázis helyett kettőben történik.
Most pedig újra kell fordítanunk vagy telepítenünk az összes általunk korábban használt külső alkalmazást. Erre azért van szükségünk, mert bizonyos alkalmazások a verziók közti váltás során törölt programkönyvtáraktól függtek. Ennek automatizálásában a ports-mgmt/portupgrade lesz segítségünkre. Az alkalmazások frissítésének elindításához a következő parancsokat használjuk:
# portupgrade -f ruby # rm /var/db/pkg/pkgdb.db # portupgrade -f ruby18-bdb # rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db # portupgrade -af
A parancsok lefutását követően a freebsd-update utolsó hívásával zárjuk le a frissítést. Ezzel a paranccsal tudunk tehát pontot tenni a frissítési procedúra végére:
# freebsd-update install
Ha a GENERIC rendszermagot csak átmenetileg használtuk, akkor most már a megszokott módon fordíthatunk és telepíthetünk magunk egy saját rendszermagot.
Indítsuk újra a rendszert a FreeBSD frissített változatával. A folyamat ezzel véget ért.
A freebsd-update ragyogóan felhasználható a FreeBSD egy telepített változatának és egy általunk garantáltan megbízható példányának összevetésére. Ilyenkor a rendszerhez tartozó segédprogramokat, programkönyvtárakat és konfigurációs állományokat ellenőriztethetjük le. Az összehasonlítást ezzel a paranccsal kezdhetjük meg:
# freebsd-update IDS >> eredmeny.idk
Figyelem: Habár a parancs neve IDS (intrusion detection system), nem helyettesít semmilyen olyan behatolásjelző megoldást, mint amilyen például a security/snort. Mivel a freebsd-update adatokat tárol a lemezen, teljesen kézenfekvő a hamisítás lehetősége. Míg ennek eshetősége adott mértékben visszaszorítható a
kern.securelevel
csökkentésével és a freebsd-update által használt adatok írásvédett állományrendszerre helyezésével, erre a problémára az ideális megoldást mégis egy teljes biztonságban tudható referencia rendszer jelentheti. Ennek tárolására alkalmas lehet például egy DVD vagy egy külső USB-egység.
A parancs kiadása után megkezdődik a rendszer vizsgálata, és az ellenőrzés során folyamatosan jelennek meg az átvizsgált állományok a hozzájuk tartozó ismert és kiszámított sha256(1)-kódjukkal együtt. Mivel a képernyőn túlságosan gyorsan elúsznának az eredmények, ezért ezeket egy eredmeny.idk nevű állományba mentjük a későbbi elemzésekhez.
Az így keletkező állomány sorai ugyan meglehetősen hosszúak, de szerencsére viszonylag könnyen értelmezhetőek. Például az adott kiadásban szereplő állományoktól eltérőeket ezzel a paranccsal kérdezhetjük le:
# cat eredmeny.idk | awk '{ print $1 }' | more /etc/master.passwd /etc/motd /etc/passwd /etc/pf.conf
A példában most csak az első néhány állományt hagytuk meg, gyakran tapasztalhatunk viszont ennél többet. Ezek közül bizonyos állományok értelemszerűen eltérnek, mint itt például az /etc/passwd, mert időközben új felhasználókat adtunk a rendszerhez. Máskor egyéb állományok, például modulok nevei is felbukkanhatnak, mert tegyük fel, hogy a freebsd-update már frissítette ezeket. Ha ki szeretnénk zárni valamilyen állományokat vagy könyvtárakat az ellenőrzésből, egyszerűen csak soroljuk fel ezeket az /etc/freebsd-update.conf állományban megjelenő IDSIgnorePaths beállításnál.
A korábban tárgyaltaktól függetlenül ez a rendszer alkalmas bonyolultabb frissítési folyamatok kisegítésére is.
A FreeBSD alaprendszer a Portgyűjtemény frissítéséhez is tartalmaz egy portsnap(8) elnevezésű segédprogramot. Ez a program elindítása után csatlakozik egy távoli géphez, ellenőrzi a biztonsági kulcsát és letölti a portok legfrissebb változatait. A biztonsági kulcs feladata a frissítés közben letöltött állományok sértetlenségének szavatolása, ezzel gondoskodik róla, hogy az adatok átvitelük közben nem változtak meg. A Portgyűjtemény legújabb változatát így érhetjük el:
# portsnap fetch Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found. Fetching snapshot tag from portsnap1.FreeBSD.org... done. Fetching snapshot metadata... done. Updating from Wed Aug 6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008. Fetching 3 metadata patches.. done. Applying metadata patches... done. Fetching 3 metadata files... done. Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done. Applying patches... done. Fetching 133 new ports or files... done.
A példában látható, hogy a portsnap(8) eltéréseket talált a helyi és a távoli rendszerekben fellelhető portok között, majd azokat ellenőrizte. Emellett az is megfigyelhető, hogy korábban már futtatuk a programot, mivel ha most indítottuk volna az első alkalommal, akkor egyszerűen letöltötte volna a teljes Portgyűjteményt.
Ahogy a portsnap(8) sikeresen befejezi az imént kiadott fetch művelet végrehajtását, a helyi rendszeren már telepítésre készen fognak várakozni a Portgyűjtemény és az hozzá tartozó ellenőrzött módosítások. A portsnap első használatakor az extract parancs segítségével telepíthetjük a frissített állományokat:
# portsnap extract /usr/ports/.cvsignore /usr/ports/CHANGES /usr/ports/COPYRIGHT /usr/ports/GIDs /usr/ports/KNOBS /usr/ports/LEGAL /usr/ports/MOVED /usr/ports/Makefile /usr/ports/Mk/bsd.apache.mk /usr/ports/Mk/bsd.autotools.mk /usr/ports/Mk/bsd.cmake.mk ...
Egy korábban már telepített Portgyűjteményt a portsnap update paranccsal tudunk frissíteni:
# portsnap update
Ezzel lezárult a portok frissítése, innentől már az aktualizált Portgyűjtemény felhasználásával tetszőlegesen telepíthetőek vagy frissíthetőek az alkalmazások.
A fetch, extract vagy update műveletek egyetlen parancsba is összefűzhetőek, ahogy ezt az alábbi példában is láthatjuk:
# portsnap fetch update
Ez a parancs letölti a Portgy&251;jtemény legfrissebb változatát, majd kitömöríti azt a helyi /usr/ports könyvtárba.
Az alaprendszer és a Portgyűjtemény mellett a dokumentáció is a FreeBSD operációs rendszer szerves részét képezi. Noha a FreeBSD dokumentációjának legfrissebb változata folyamatosan elérhető a FreeBSD honlapjáról, egyes felhasználók ezt csak lassan vagy nem képesek folyamatosan elérni. Szerencsére egy helyi másolat megfelelő karbantartásával az egyes kiadásokhoz tartozó dokumentáció is frissíthető.
A FreeBSD telepített dokumentációjának forrásai az alaprendszeréhez hasonlóan (lásd 24.7 Szakasz) a CVSup segítségével frissíthetőek. Ebben a szakaszban megismerhetjük:
hogyan telepítsük a dokumentáció előállításához szükséges eszközöket, amelyekkel a forrásokból újra tudjuk generálni a FreeBSD dokumentációját;
hogyan töltsük le a dokumentáció forrását CVSup segítségével a /usr/doc könyvtárba;
a dokumentáció előállításához alkalmazott rendszer milyen beállításokkal rendelkezik, vagyis hogyan korlátozzuk a generálást bizonyos nyelvekre vagy formátumokra.
Viszonylag sokféle eszközre lesz szükségünk, ha a FreeBSD dokumentációját a forrásokból akarjuk előállítani. Ezek az segédprogramok nem részei a FreeBSD alaprendszerének, mivel alapvetően nagyon sok helyet foglalnak el, és leginkább olyan FreeBSD felhasználók számára fontosak, akik folyamatosan a dokumentációval dolgoznak vagy gyakran frissítik azt forrásból.
A feladathoz szükséges összes eszköz elérhető a Portgyűjteményből. Ebben a FreeBSD Dokumentációs Projekt összeállított egy textproc/docproj nevű portot, amellyel az említett programok telepítését és frissítését igyekezték megkönnyíteni.
Megjegyzés: Ha nem tartunk igényt a dokumentáció PostScript vagy PDF változatára, akkor ehelyett inkább érdemes megfontolnunk a textproc/docproj-nojadetex port telepítését. Ebben a változatban a teTeX betűszedő rendszer kivételével az összes segédprogram megtalálható. Mivel a teTeX önmagában nagyon sok segédeszköz telepítését jelenti, ezért amennyiben a PDF változat ténylegesen nem szükséges, érdemes eltekinteni a telepítésétől.
A CVSup telepítésével kapcsolatban pedig részletesebb információkat a CVSup használatával foglalkozó szakaszban olvashatunk.
A /usr/share/examples/cvsup/doc-supfile konfigurációs állomány segítségével a CVSup képes letölteni a dokumentáció forrásállományainak legfrissebb példányait. Itt a frissítést alapértelmezés szerint egy nem létező géptől fogjuk kérni (mivel ezt kötelező kitölteni), azonban a cvsup(1) programnak egy parancssori paraméter segítségével megadhatjuk melyik CVSup szerverről töltse le a forrásokat:
# cvsup -h cvsup.FreeBSD.org -g -L 2 /usr/share/examples/cvsup/doc-supfile
Ne felejtsük el a cvsup.FreeBSD.org helyére beírni a hozzánk földrajzilag legközelebb elhelyezkedő CVSup szervert. Ezek teljes listáját a A.6.7 Szakasz tartalmazza.
Egy ideig eltarthat, amíg először letöltjük a forrásokat. Várjuk meg türelmesen, amíg befejeződik a művelet.
Később a forrásokat ugyanezzel a paranccsal tudjuk frissíteni. A CVSup ugyanis mindig csak a legutóbbi futtatása óta történt változásokat tölti le, ezért később már ez a lépés jelentősen felgyorsulhat.
A források letöltése után a dokumentációt például az ekkor keletkezett /usr/doc könyvtárban található Makefile használatával állíthatjuk elő. Tehát miután az /etc/make.conf állományban beállítottuk a SUP_UPDATE, SUPHOST és DOCSUPFILE változókat, le tudjuk futtatni a következő parancsot:
# cd /usr/doc # make update
Az előbb említett make(1) változók jellemző értékei:
SUP_UPDATE= yes SUPHOST?= cvsup.freebsd.org DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile
Megjegyzés: Mivel a SUPHOST és a DOCSUPFILE változók értékét a ?= szimbólummal állítottuk be, lehetőségünk van a parancssorból ezeknek más értékeket adni. Az /etc/make.conf állományba általában így érdemes felvenni a változókat, így nem kell minden alkalommal módosítani, amikor valamilyen új beállítást akarunk kipróbálni.
A FreeBSD dokumentációjához tartozó, frissítést és előállítást végző rendszernek van néhány olyan beállítása, amelyekkel kérhetjük kizárólag csak a dokumentáció egyes részeinek frissítését vagy bizonyos kimeneti formátumok használatát. Ezek vagy globálisan az /etc/make.conf állományban, vagy pedig a parancssorból, a make(1) program paramétereként adhatóak meg.
Ízelítőül néhány közülük:
Az előállítandó és telepítendő nyelvű dokumentáció felsorolása, tehát például csak az angol dokumentáció esetén ez en_US.ISO8859-1.
Az előállítandó dokumentáció kimeneti formátumainak felsorolása. Itt pillanatnyilag értékként a html, html-split, txt, ps, pdf és rtf jelenhet meg.
A frissítéshez használt CVSup szerver hálózati neve.
Az elkészült dokumentáció telepítésének helye. Ez alapértelmezés szerint a /usr/share/doc.
A folyamathoz kapcsolódóan további rendszerszintű make(1) változókról a make.conf(5) man oldalon olvashatunk.
A FreeBSD dokumentációjának előállításáért felelős rendszerben használható make(1) további változók bemutatásával kapcsolatban pedig olvassuk el az A FreeBSD Dokumentációs Projekt irányelvei kezdőknek című könyvet.
Miután sikerült letöltenünk a /usr/doc könyvtárba a dokumentáció legfrissebb forrásait, készen állunk a rendszerünkön telepített példány frissítésére.
A DOCLANG értékeként megadott nyelven készült dokumentációkat a következő paranccsal tudjuk frissíteni:
# cd /usr/doc # make install clean
Ha a make.conf állományban korábban már megadtuk a DOCSUPFILE, SUPHOST és SUP_UPDATE változók értékeit, akkor a telepítés fázisa könnyedén össze is vonatható a források frissítésével:
# cd /usr/doc # make update install clean
Ha pedig csak bizonyos nyelvekhez tartozó dokumentációt szeretnénk frissíteni, akkor a make(1) akár a /usr/doc könyvtáron belül az egyes nyelvekhez tartozó alkönyvtárakon belül is meghívható, például:
# cd /usr/doc/en_US.ISO8859-1 # make update install clean
A dokumentáció formátumát a FORMATS változó felhasználásával tudjuk meghatározni:
# cd /usr/doc # make FORMATS='html html-split' install clean
Ez előző szakaszban megmutattuk hogyan lehet a FreeBSD dokumentációját a források felhasználásával frissíteni. A források használatával végzett frissítés azonban nem minden FreeBSD rendszer esetében lehetséges vagy hatékony. Ha ugyanis a dokumentációs forrásból akarjuk előállítani, viszonylag sok eszköz és segédprogram, az ún. dokumentációs eszközök használatával kell tisztában lennünk, valamint bizonyos mértékig ismernünk kell a CVS használatát, tudunk kell kikérni a legfrissebb változatot és előállítatattnunk belőle a végleges változatot. Ezért ebben a szakaszban most szót ejtünk egy olyan módszerről, ahol a FreeBSD dokumentációját a Portgyűjteményen keresztül tudjuk frissíteni, ezáltal:
anélkül le tudjuk tölteni és telepíteni a dokumentáció adott pillanatban generált változatát, hogy a rendszerünkön bármi további teendőre szükség lenne (ennek köszönhetően nem kell telepítenünk a dokumentációs eszközöket);
letölthetjük a dokumentáció forrását és a Portgyűjtemény eszközeivel előállíthatjuk belőle a megfelelő változatot (ez a források beszerzésében és feldolgozásában segít valamelyest).
A FreeBSD dokumentáció
frissítésének fentebb említett
módjait támogatják tehát a
dokumentációs portok,
amelyeket a Documentation Engineering Team <doceng@FreeBSD.org>
havi rendszerességgel tart karban.
Ezek a portok a FreeBSD Portgyűjteményén
belül a docs nevű
virtuális kategóriában
találhatóak meg.
A dokumentáció könnyebb előállításához a dokumentációs portok a Portgyűjtemény lehetőségeit veszik igénybe. Segítségükkel automatikussá teszik a dokumentáció forrásának letöltését, a make(1) parancs meghívását a megfelelő környezetben, beállításokkal és parancssori paraméterekkel. Rajtuk keresztül a dokumentáció eltávolítása ugyanolyan egyszerűen megtehető, mint akármelyik másik FreeBSD port vagy csomag esetében.
Megjegyzés: Továbbá, amikor a dokumentációs portokat a saját rendszerünkön fordítjuk, a dokumentációs eszközök függőségként automatikusan települni fognak.
A dokumentációs portok a következő módon szerveződnek:
Létezik egy ún. “főport”, a misc/freebsd-doc-en, ahol az összes fontosabb állomány megtalálható. Ez lényegében a dokumentációs portok közös őse. Alapértelmezés szerint kizárólag csak az angol nyelvű dokumentációt állítja elő.
Létezik egy “mindenes port”, a misc/freebsd-doc-all, amely az összes elérhető nyelven és formátumban előállítja a dokumentációt.
Végezetül minden nyelvhez létezik egy-egy “alport”, ilyen például a magyar dokumentáció esetén a misc/freebsd-doc-hu port. Mindegyikük a főporttól függ és az adott nyelvű dokumentációt telepítik.
Az eddigi összefoglaltaknak megfelelően a dokumentációs portokat forrásból a következő paranccsal lehet telepíteni (root felhasználóként):
# cd /usr/ports/misc/freebsd-doc-en # make install clean
Ennek hatására előáll és telepítődik a /usr/local/share/doc/freebsd könyvtárba az angol nyelvű dokumentáció állományokra bontott HTML formátumban (hasonlóan a http://www.FreeBSD.org tartalmához).
A dokumentációs portok alapértelmezett viselkedése több különböző opció segítségével is befolyásolható. Ezek közül most összefoglalunk néhányat:
Minden dokumentum egyetlen HTML állományba kerüljön. A végeredmény ekkor az adott dokumentum típusának megfelelően article.html (cikk) vagy book.html (könyv) néven keletkezik (képekkel együtt).
Minden dokumentum Adobe Portable Document Format típusú állományban jön létre. Ezek az állományok a Ghostscript vagy más egyéb PDF nézegetőkkel nyithatóak meg. Ekkor a dokumentáció konkrét típusától függően az állományok article.pdf (cikk) vagy book.pdf (könyv) néven állítódnak elő.
A dokumentáció telepítésének helye. Alapértelmezés szerint ez a /usr/local/share/doc/freebsd könyvtár.
Megjegyzés: Ügyeljünk arra, hogy a telepítés alapértelmezett célkönyvtára eltér a CVSup módszerétől. Ugyanis mivel ilyenkor egy portot telepítünk, a tartalma alapértelmezés szerint a /usr/local könyvtáron belülre kerül. Ez azonban a PREFIX változó átállításával tetszőleges megváltoztatható.
Az előbbieket most egy rövid példán keresztül összefoglaljuk. A következő paranccsal tudjuk tehát a magyar nyelvű dokumentáció Portable Document Format változatát telepíteni:
# cd /usr/ports/misc/freebsd-doc-hu # make -DWITH_PDF DOCBASE=share/doc/freebsd/hu install clean
A dokumentációs portok előző szakaszban bemutatott forrásból telepítésével kapcsolatban már említettük, hogy szükséges hozzá a dokumentációs eszközök telepítése, valamint némi szabad tárterület. Ha a dokumentációs eszközök telepítéséhez nem elengedőek a rendelkezésre álló erőforrásaink vagy a források feldolgozása túlságosan sokat foglalna a rendszerünkön, akkor lehetőségünk van a dokumentációs portok előre lefordított, csomagolt változatát használni.
A Documentation Engineering Team <doceng@FreeBSD.org>
minden hónapban
előkészíti a FreeBSD dokumentációs
csomagok legfrissebb változatát. Az így
karbantartott bináris csomagok azután
tetszőlegesen használhatóak a
szabványos csomagkezelő eszközökkel,
mint amilyen például a pkg_add(1),
pkg_delete(1) és így tovább.
Megjegyzés: A bináris csomagok használata esetén a FreeBSD dokumentációja az adott nyelvhez az összes elérhető formátumban telepítésre kerül.
Például az alábbi paranccsal a magyar nyelvű dokumentációhoz tartozó legfrissebb bináris csomagot tudjuk telepíteni:
# pkg_add -r hu-freebsd-doc
Megjegyzés: A csomagok elnevezése eltér a hozzá tartozó port nevétől. Alakja a következő: nyelv-freebsd-doc, ahol a nyelv az adott nyelv rövid kódja, vagyis a magyar esetén a hu, illetve az egyszerűsített kínai esetén a zh_ch.
Az előzetesen telepített dokumentációs portok bármilyen portok frissítésére alkalmas eszközzel frissíthetőek. Például a telepített magyar nyelvű dokumentáció a ports-mgmt/portupgrade eszközön keresztül így frissíthető csomagok használatával:
# portupgrade -PP hu-freebsd-doc
A FreeBSD-nek két fejlesztési ága van: a FreeBSD.current és a FreeBSD-STABLE. Ebben a szakaszban mindegyikükről monduk pár szót, és megmutatjuk, miként lehet az adott ághoz igazítani a rendszerünk frissítését. Először a FreeBSD-CURRENT, majd a FreeBSD-STABLE változata kerül tárgyalásra.
Ahogy arról már az imént is szó esett, nem szabad elfelejtenünk, hogy a FreeBSD-CURRENT a FreeBSD fejlesztésének “frontvonala”. Emiatt a FreeBSD-CURRENT használóinak szakmailag jólképzetteknek kell lenniük, és sosem szabad visszariadniuk a használat közben felmerülő rendszerszintű problémák önálló megoldásától. Ha korábban még nem foglalkoztunk FreeBSD-vel, kétszer is gondoljuk meg a telepítését!
A FreeBSD-CURRENT a FreeBSD mögött álló legfrissebb forráskódot képviseli. Itt találkozhatunk különféle olyan fejlesztés alatt álló részekkel, kísérletezésekkel és átmeneti megoldásokkal, amelyek nem feltétlenül kerülnek bele a szoftver következő hivatalos kiadásába. Noha a FreeBSD fejlesztői a FreeBSD-CURRENT forráskódját naponta fordítják, adódhatnak olyan időszakok, amikor a források mégsem használhatóak maradéktalanul. Az ilyen gondokat általában a lehető leggyorsabban igyekeznek megoldani, azonban attól függően, hogy éppen a forráskód melyik verzióját sikerült kifogni, a FreeBSD-CURRENT használata kész katasztrófa vagy akár a fejlődésben igazi továbblépés is lehet.
A FreeBSD-CURRENT használata elsősorban az alábbi 3 csoportot érinti:
A FreeBSD közösség azon tagjait, akik aktívan dolgoznak a forrásfa valamelyik részén, és mindazokat, akik számára a “legfrissebb” verzió használata feltétlen elvárás.
A FreeBSD közösség azon tagjait, akik aktívan tesztelnek, és a FreeBSD-CURRENT kordában tartásához hajlandóak időt áldozni a menet közben felbukkanó problémák megoldására. Vannak olyanok is, akik a FreeBSD változásaival és fejlesztési irányával kapcsolatban kívánnak javaslatokat tenni, melyeket javítások és módosítások formájában tesznek közzé.
Mindazokat, akik pusztán kíváncsiak a fejlesztésben zajló eseményekre, vagy hivatkozási szándékkal töltik le a legfrissebb forrásokat (például csak nézegetik, de nem futtatják). Az ilyen emberek esetenként megjegyzéseket fűznek a fejlesztéshez vagy kódot küldenek be.
Az olyan kiadás előtt álló funkciók kipróbálásának egyszerű módja, amelyekről hallottunk, hogy milyen remek újdonságokat hoznak és mi akarunk lenni az elsők, akik ezt használni is fogják. Ne feledjük azonban, hogy amikor mindenki előtt kezdünk el használni egy újítást, mi leszünk egyben az elsők is, akik szembesülnek a benne rejlő hibákkal.
A gyors hibajavítások eszköze. A FreeBSD-CURRENT szinte bármelyik változata pontosan ugyanakkora valószínűséggel hoz magával új hibákat, mint ahogy eltünteti a régieket.
Akármilyen értelemben is “hivatalosan támogatott”. Képességeinktől függően őszintén igyekszünk a lehető legtöbbet megtenni a 3 “törvényes” FreeBSD-CURRENT csoportba tartozó emberekért, azonban egyszerűen nincs időnk komolyabb segítségnyújtást adni. Ez viszont nem azt jelenti, hogy komisz és fukar emberek vagyunk, akik utálnak segíteni a másiknak (de máskülönben nem tudna fejlődni a FreeBSD). Csupán a FreeBSD fejlesztése közben fizikailag képtelenek vagyunk a naponta érkező ezernyi üzenetet rendre megválaszolni! A FreeBSD előremozdítása és a kísérleti stádiumban álló kóddal kapcsolatos kérdések megválaszolása közül a fejlesztők általában az elsőt részesítik előnyben.
Iratkozzunk fel az freebsd-current és svn-src-head listákra. Ez nem egyszerűen hasznos, hanem elengedhetetlen. Ha nem vagyunk a freebsd-current listán, akkor nem fogjuk látni a rendszer aktuális állapotára vonatkozó megjegyzéseket, és így esetleg feleslegesen öljük az időnket olyan problémák megoldásába, amelyeket mások már korábban megoldottak. Ami viszont ennél is fontosabb, hogy így elszalasztjuk a rendszerünk folyamatos életbentartására vonatkozó létfontosságú bejelentéseket.
Az svn-src-head listán láthatjuk az a forráskód egyes változtatásaihoz tartozó naplóbejegyzéseket, a hozzájuk tartozó esetleges mellékhatások ismertetésével együtt.
A listákra vagy a http://lists.FreeBSD.org/mailman/listinfo oldalon található többi lista valamelyikére úgy tudunk feliratkozni, ha rákattintunk a nevére. A további lépésekről ezt követően itt kapunk értesítést. Amennyiben a teljes forrásfa változásai érdekelnek minket, javasoljuk az svn-src-all lista olvasását.
A tükrözések egyikéről töltsük le a FreeBSD forrását. Erre két mód is kínálkozik:
Használjuk a cvsup programot a /usr/share/examples/cvsup könyvtárban található standard-supfile állománnyal. Ez a leginkább ajánlott módszer, hiszen így csak egyszer kell letölteni az egész gyűjteményt, majd ezután már csak a változásokat. Sokan a cvsup parancsot a cron parancson keresztül adják ki, és ezzel mindig automatikusan frissítik a forrásaikat. A cvsup működését a fentebb említett minta supfile állomány megfelelő módosításával tudjuk a saját környezetünkhöz igazítani.
Megjegyzés: Az említett standard-supfile állomány eredetileg nem a FreeBSD-CURRENT, hanem inkább a FreeBSD biztonsági problémáit érintő javítások követésére használatos. A FreeBSD-CURRENT forrásainak eléréséhez a következő sort kell kicserélnünk ebben az állományban:
*default release=cvs tag=RELENG_X_YErre:
*default release=cvs tag=.A tag paramétereként megadható egyéb címkékről a kézikönyv CVS címkék szakaszában olvashatunk.
Használjuk a CTM alkalmazás nyújtotta lehetőségeket. Amennyiben nagyon rossz netkapcsolattal rendelkezünk (drága vagy csak levelezésre használható) a CTM megoldást jelenthet számunkra. Legyünk azonban tekintettel arra, hogy helyenként zűrös lehet a használata és néha hibás állományokat gyárt. Emiatt viszont csak ritkán használják, így előfordulhat, hogy hosszabb ideig nem is működik. A 9600 bps vagy annál nagyobb sebességű kapcsolatok esetén ezért inkább a CVSup használatát javasoljuk.
Ha nem csak böngészésre, hanem fordításra is szedjük a forrásokat, mindig töltsük le a FreeBSD-CURRENT egészét, ne csak egyes részeit. Ez azzal magyarázandó, hogy a forráskód bizonyos részei más helyeken található részektől is függenek, és ezért az önálló fordításuk szinte garantáltan gondot fog okozni.
A FreeBSD-CURRENT lefordítása előtt figyelmesen olvassuk át a /usr/src könyvtárban található Makefile állományt. A frissítési folyamat részeként először mindenképpen érdemes telepíteni egy új rendszermagot és újrafordítani az alaprendszert. Olvassuk el a FreeBSD-CURRENT levelezési lista üzeneteit és a /usr/src/UPDATING állományt, ahol megtalálhatjuk az ezzel kapcsolatos legújabb információkat, melyek egy-egy újabb kiadás közeledtével egyre fontosabbá válnak.
Foglalkozzunk vele! Ha már a FreeBSD-CURRENT változatát használjuk, ne legyünk restek véleményt formálni róla, különösen abban az esetben, ha továbbfejlesztésekről vagy hibákra van szó. Leginkább a forráskóddal együtt érkező javaslatoknak szoktak örülni a fejlesztők!
A FreeBSD-STABLE az a fejlesztési ág, ahonnan az egyes kiadások származnak. Ebbe az ágba már más ütemben kerülnek a változások, mivel általánosan elfogadott, hogy ide a korábban már kipróbált módosítások vándorolnak át a FreeBSD-CURRENT ágból. Ez azonban még mindig csak egy fejlesztési ág, ami arra utal, hogy a FreeBSD-STABLE által adott pillanatban képviselt források nem feltétlenül felelnek meg bizonyos célokra. Ez csupán egy újabb fejlesztési nyomvonal, nem pedig a végfelhasználók kenyere.
Ha szeretnénk figyelemmel kísérni vagy valamilyen módon kiegészíteni a FreeBSD fejlesztési folyamatát, különösen a FreeBSD következő “nagyobb” kiadását illetően, akkor érdemes követnünk a FreeBSD-STABLE forrásait.
Habár a FreeBSD-STABLE ágba is bekerülnek a biztonsági jellegű javítások, ettől még nem kell feltétlenül ezt követnünk. A FreeBSD-hez kiadott biztonsági figyelmeztetések mindig leírják, hogyan kell javítani a hibát az érintett kiadásokban [12] , azonban az egész fejlesztési ágat felesleges csak biztonsági okból kifolyólag követni, mivel így olyan változások is kerülhetnek a rendszerbe, amire nincs szükségünk.
Habár igyekszünk gondoskodni a FreeBSD-STABLE ágban található források lefordíthatóságáról és működőképességéről, nem minden esetben szavatolható. Ráadásul mivel a FreeBSD-STABLE ágba kerülő kódokat először a FreeBSD-CURRENT ágban fejlesztik ki, és mivel a FreeBSD-STABLE felhasználói többen vannak a FreeBSD-CURRENT változaténál, ezért szinte elkerülhetetlen, hogy ilyenkor a FreeBSD-STABLE változatban bizonyos hibák és szélsőséges esetek be ne következzenek, amelyek a FreeBSD-CURRENT használata során még nem buktak ki.
Ezért a FreeBSD-STABLE ág vakon követését senkinek sem ajánljuk, és különösen fontos, hogy éles szervereken előzetes kimerítő tesztelések nélkül ne futassunk FreeBSD-STABLE rendszert.
Ha ehhez nem rendelkezünk elegendő erőforrással, akkor egyszerűen használjuk a FreeBSD legfrissebb kiadását, és az egyes kiadások között pedig bináris frissítéssel közlekedjünk.
Iratkozzunk fel a freebsd-stable listára. Ezen keresztül értesülhetünk a FreeBSD-STABLE használata során felmerülő fordítási függőségekről vagy más, külön figyelmet igénylő problémákról. Gyakran ezen a levelezési listán elmélkednek a fejlesztők a vitatott javításokról vagy frissítésekről, amibe a felhasználók is beleszólhatnak, ha a szóbanforgó változtatással kapcsolatban bármilyen problémájuk vagy ötletünk van.
Iratkozzunk fel a követni kívánt ághoz tartozó SVN levelezési listára. Például ha a 7-STABLE ág változásait követjük, akkor az svn-src-stable-7 listára érdemes feliratkoznunk. Ennek segítségével elolvashatjuk az egyes változtatásokhoz tartozó naplóbejegyzéseket, a rájuk vonatkozó esetleges mellékhatások ismertetésével együtt.
Ezekre, valamint a http://lists.FreeBSD.org/mailman/listinfo címen elérhető listák valamelyikére úgy tudunk feliratkozni, ha a nevükre kattintunk. A további teendők ezután itt jelennek meg.
Amennyiben egy új rendszert akarunk telepíteni és a FreeBSD-STABLE havonta készült pillanatképeit akarjuk rajta futtatni, akkor erről bővebb felvilágosítást a Pillanatképek honlapján találhatunk (angolul). Emellett a legfrissebb FreeBSD-STABLE kiadást telepíthetjük a tükrözések valamelyikéről is, majd innen a lentebb található utasítások szerint tudunk hozzáférni a FreeBSD-STABLE forráskódjának legfrissebb változatához.
Ha már fut a gépünkön a FreeBSD egy korábbi kiadása, és ezt akarjuk forráson keresztül frissíteni, akkor ezt a FreeBSD tükrözéseivel könnyedén megtehetjük. Két módon is:
Használjuk a cvsup programot a /usr/share/examples/cvsup könyvtárból származó stable-supfile állománnyal. Ez a leginkább ajánlott módszer, mivel így csak egyszer kell letölteni a teljes gyűjteményt, utána már csak a hozzá tartozó változtatásokra van szükségünk. A cvsup parancsot sokan a cron segítségével futtatják, és ezzel automatikusan frissülnek a forrásainak. A cvsup működését környezetünkhöz az előbb említett minta supfile megfelelő módosításával tudjuk behangolni.
Használjuk a CTM programot. Ha nincs olcsó vagy gyors internetkapcsolatunk, akkor érdemes ezt a módszert választani.
Alapvetően azonban ha gyorsan szeretnénk hozzájutni a forrásokhoz és a sávszélesség nem meghatározó tényező, akkor helyette válasszuk a cvsup vagy az ftp használatát, és csak minden más esetben CTM-et.
Mielőtt lefordítanánk a FreeBSD-STABLE változatát, figyelmesen olvassuk át a /usr/src könyvtárban levő Makefile állományt. Az átállási folyamat részeként először minden bizonnyal telepítenünk kell egy új rendszermagot és újra kell fordítanunk az alaprendszert. A FreeBSD-STABLE levelezési lista valamint a /usr/src/UPDATING elolvasásából értesülhetünk azokról az egyéb, gyakran nagyon fontos változásokról, melyek elengedhetetlenek lesznek a következő kiadás használatához.
Az internet (vagy elektronikus levelek) használatán keresztül számos mód kínálkozik az FreeBSD Projekthez tartozó források frissen tartásához egy adott, vagy éppen az összes területen attól függően, hogy mik érdekelnek minket. Ehhez elsősorban az Anonim CVS, CVSup és CTM szolgáltatásokat ajánljuk fel.
Figyelem: Habár lehetséges csupán a forrásfa egyes részeit letölteni, a támogatott frissítési eljárás során azonban szükségünk lesz az egész fa szinkronizálására és a rendszerhez tartozó felhasználói programok (vagyis minden olyan program, amely a felhasználói térben fut, ilyeneket találhatunk többek közt a /bin és /sbin könyvtárakban) valamint rendszermag újrafordítására is. Ha csak a felhasználói programok forrásait, vagy csak a rendszermagot, esetleg csupán a forrásfa egyes részeit frissítjük, akkor az gondokat okozhat. Az itt előforduló problémák fordítási hibáktól kezdve rendszerösszeomlásokon keresztül akár adatvesztésbe is torkollhatnak.
Az Anonim CVS és a CVSup alkalmazások ún. lehúzással frissítik a forrásokat. A CVSup használatakor a felhasználó (vagy a cron szkript) meghívja a cvsup programot, amely az állományok aktualizálásához felveszi a kapcsolatot egy máshol megtalálható cvsupd szerverrel. Az így nyert frissítések az adott pillanatig visszemenőleg érkeznek meg, de csak akkor, ha igényeljük ezeket. A frissítést könnyedén le tudjuk szabályozni a számunkra érdekes egyes állományokra és könyvtárakra. A frissítéseket a szerver hozza létre menet közben annak megfelelően, hogy milyen verziókkal rendelkezünk, és mihez akarunk szinkronizálni. Az Anonim CVS a CVSupnál valamivel egyszerűbb abban a tekintetben, hogy ez a CVS-nek egy olyan kiterjesztése, amely lehetővé teszi a változtatások közvetlen lehúzását egy távoli CVS tárházból. Miközben a CVSup mindezt sokkal hatékonnyabb valósítja meg, addig az Anonim CVS jóval könnyebben használható.
Velük szemben a CTM nem hasonlítja össze interaktívan a saját és a központi szerveren tárolt forrásokat és nem is húzza át ezeket. Ehelyett egy olyan szkriptől van szó, amely naponta többször megvizsgálja a központi CTM szerveren tárolt állományok a legutóbbi futtatás óta keletkezett változtatásait, majd az észlelt módosulásokat betömöríti, felcímkézi egy sorozatszámmal és (nyomtatható ASCII formátumban) előkészíti ezeket az e-mailen keresztüli küldésre. Az így létrehozott “CTM delták” megérkezésük után a ctm_rmail(1) segédprogrammal kerülnek feldolgozásra, amely magától visszaalakítja, ellenőrzi és alkalmazza a változtatásokat a forrásfa felhasználó birtokában levő másolatára. Ez a megoldás hatékonyabb a CVSup használatánál, mert kisebb terhelést jelent a szerverek számára, hiszen a frissítéshez nem a lehúzást, hanem a küldést alkalmazzák.
Természetesen minden említett eljárásnak megvannak a maga kompromisszumai. Ha véletlenül kitöröljük a forrásfánk egyes részeit, a CVSup képes ezt észrevenni és helyreállítani a sérült részeket. A CTM ezzel szemben ezt nem végzi el, szóval ha (biztonsági mentés nélkül) letöröljük a forrásainkat, akkor az egész szinkronizálást az elejéről kell kezdenünk (pontosabban a legfrissebb CVS-es “alapdeltától”) és a CTM-mel újraépíteni az egészet, esetleg a Anonim CVS-sel letörölni a hibás adatokat és újraszinkronizálni.
Miután sikerült a helyi forrásfánkat a FreeBSD egy nekünk szimpatikus (FreeBSD-STABLE, FreeBSD-CURRENT és így tovább) változatához igazítanunk, elérkezett az idő, hogy a segítségével újrafordítsuk az egész rendszert.
Készítsünk biztonsági mentést: Nem tudjuk eléggé nyomatékosítani, hogy mielőtt nekikezdenénk, készítsünk egy biztonsági mentést a rendszerünkről. Míg az alaprendszer újrafordítása nem túlságosan bonyolult feladat (egészen addig, amíg a megadott utasításokat követjük), saját magunk vagy mások hibájából fakadóan kialakulhatnak olyan helyzetek, amikor a rendszer nem lesz képes elindulni.
Mindenképpen győzödjünk meg róla, hogy tisztességesen elvégeztük a mentést és akad a kezünk ügyében egy javításra felhasználható rendszerindító floppy vagy CD. Valószínűleg soha nem lesz ténylegesen szükségünk rájuk, azonban jobb félni, mint megijedni!
Iratkozzunk fel a megfelelő levelezési listákra: A FreeBSD-STABLE és FreeBSD-CURRENT ágak természetüknél fogva fejlesztés alatt állnak. A FreeBSD fejlesztését is emberek végzik, ezért előfordulhatnak benne tévedések.
Ezek a tévedések gyakran csak ártalmatlan apróságok, amelyek hatására kapunk például egy ismeretlen diagnosztikai hibát. De ezzel szemben létrejöhetnek pusztító erejű hibák is, amelyek hatására a rendszerünk nem lesz képes elindulni, károsodnak az állományrendszerek (vagy még rosszabb).
Ha ilyen történik, akkor egy “felszólítást” (egy “heads up” témájú üzenetet) küldenek az érintett változatokhoz tartozó listákra, amelyben igyekeznek kifejteni a probléma természetét és a rendszerre mért hatását. Miután “minden rendbejött”, a probléma megoldásáról is küldenek egy értesítést.
Ha a FreeBSD-STABLE levelezési lista vagy a FreeBSD-CURRENT levelezési lista olvasása nélkül próbáljuk meg használni a FreeBSD-STABLE és FreeBSD-CURRENT verziókat, akkor csak magunknak keressük a bajt.
Ne használjuk a make world parancsot: Rengeteg régebben készült dokumentáció erre a feladatra a make world parancs kiadását javasolja. Ennek használatával azonban átlépünk olyan fontos lépéseket, amelyek valójában csak akkor lennének kihagyhatóak, ha pontosan tudjuk mit csinálunk. Ezért az esetek döntő többségében nem a make world használatára van szükségünk, hanem a most bemutatandó eljárásra.
A frissítés megkezdése előtt érdemes elolvasnunk a /usr/src/UPDATING állományt, ahol a letöltött források használatához elvégzendő előzetes intézkedésekről kaphatunk hírt. Ezután kövessük az alábbiakban körvonalazott módszer egyes lépéseit.
Ezek a lépések feltételezik, hogy egy korábbi FreeBSD verziót használunk, tehát a fordító, a rendszermag, az alaprendszer és a konfigurációs állományok valamelyik régebbi változatát. Alaprendszer alatt, amelyet sokszor csak a “world” néven hivatkozunk, a rendszer számára alapvető fontosságú binárisokat, programkönyvtárakat és programfejlesztéshez szükséges egyéb állományokat értjük. Maga a fordítóprogram is része ennek, azonban tartalmaz néhány speciális megszorítást.
Mindezek mellett továbbá feltételezzük, hogy előzetesen már valamilyen módon letöltöttük a friss forrásokat. Ha rendszerünkön ezt még nem tettük volna meg, akkor a 24.6 Szakasz segítségével tájékozódhatunk részletesen arról, hogyan tölthetjük le a legfrissebb verziót.
A rendszer forráskódon keresztüli frissítése egy kicsivel körülményesebb, mint amennyire elsőre látszik. A FreeBSD fejlesztők az évek során fontosnak találták, hogy a folyamatosan felszínre bukkanó, elkerülhetetlen függőségek tükrében meglehetősen drámai módon megváltoztassák az erre javasolt módszert. Ezért a szakasz további részében a pillanatnyilag javasolt frissítési megoldás nyomán fogunk haladni.
A sikeres frissítések során az alábbi akadályokkal kell mindenképpen szembenéznünk:
A fordító régebbi változata nem feltétlenül lesz képes lefordítani az új rendszermagot. (Illetve a régebbi fordítóprogramok tartalmazhatnak hibákat.) Ezért az új rendszermagot már a fordító új változatával kell előállítanunk. Ebből következik, hogy az új rendszermag elkészítéséhez először a fordítóprogram újabb változatát kell lefordítanunk. Ez viszont nem feltétlenül jelenti azt, hogy az új rendszermag fordítása előtt az új fordítóprogramot telepítenünk is kellene.
Az új alaprendszer esetenként bizonyos új funkciókat igényelhet a rendszermagtól. Ezért a frissebb alaprendszer telepítése előtt telepítenünk kell a frissebb rendszermagot.
Ez az előbb említett két akadály képzi az okát a következő bekezdésekben bemutatott buildworld, buildkernel, installkernel, installworld sorozatnak. Természetesen léteznek további egyéb indokok is, amiért még érdemes az itt leírtak szerint frissíteni a rendszerünket. Ezek közül most vegyünk néhány kevésbé nyilvánvalóbbat:
A régebbi alaprendszer nem minden esetben fog problémamentesen együttműködni az új rendszermaggal, ezért az alaprendszer újabb változatát szinte azonnal az új rendszermagot követően kell telepítenünk.
Vannak olyan konfigurációs változtatások, amelyeket még az új alaprendszer telepítése előtt el kell végeznünk, a többi viszont veszélyes lehet a korábbi alaprendszerre. Ezért a konfigurációs állományokat általában két külön lépésben kell frissíteni.
A frissítés során nagyrészt csak állományok cserélődnek el és újabbak érkeznek, a korábbiak nem törlődnek. Ez bizonyos esetekben azonban gondokat okozhat. Ennek eredményeképpen a frissítés során időnként előfordulhat, hogy magunknak kell manuálisan némely megadott állományokat törölnünk. Elképzelhető, hogy ezt a jövőben még majd automatizálni fogják.
Ezek a megfontolások vezettek tehát az ismertetendő eljárás kialakításához. Ettől függetlenül adódhatnak olyan helyzetek, amikor további lépéseket is be kell iktatnunk, viszont az itt bemutatott folyamat egy ideje már viszonylag elfogadottnak tekinthető:
make buildworld
Először lefordítja az új fordítóprogramot és néhány hozzá tartozó eszközt, majd ennek felhasználásával elkészíti az alaprendszer többi részét. Az eredmény a /usr/obj könyvtárban keletkezik.
make buildkernel
Eltérően a config(8) és make(1) programok korábban javasolt alkalmazásától, ezzel a paranccsal már a /usr/obj könyvtárban létrehozott új fordítót használjuk. Ez védelmet nyújt a fordító és rendszermag változatai közti eltérésekből fakadó problémák ellen.
make installkernel
Telepíti a lemezre az új rendszermagot és a hozzá tartozó modulokat, ezáltal lehetővé válik a frissített rendszermag betöltése.
Átváltás egyfelhasználós módba.
Egyfelhasználós módban a minimálisra csökkenthetjük a futó szoftverek frissítéséből adódó bonyodalmakat. Ezzel együtt minimálissá válik a régi alaprendszer és az új rendszermag eltéréseiből eredő problémák előfordulása is.
mergemaster -p
Az új alaprendszer telepítéséhez elvégzi a konfigurációs állományok részéről szükséges frissítéseket. Például felvesz még nem létező csoportokat vagy felhasználókat. Ez gyakran elengedhetetlennek bizonyulhat, mivel ha a rendszer legutóbbi frissítése óta újabb csoportok vagy felhasználók kerültek be az alaprendszerbe, a installworld csak akkor tud hibamentesen lefutni, ha ezek már a futásakor is elérhetőek.
make installworld
Átmásolja a /usr/obj könyvtárból a korábban elkészített új alaprendszert. Lefutása után már mind az új rendszermag és az új alaprendszer a megfelelő helyén található.
mergemaster
Feldolgozzuk a korábbi fázisból fennmaradó konfigurációs állományok frissítését, mivel most már elérhető az új alaprendszer.
A rendszer újraindítása.
Az új rendszermag és az új konfigurációs állományokkal futó alaprendszer használatához teljesen újra kell indítanunk a számítógépünket.
Ha a FreeBSD ugyanazon fejlesztési ágán belül frissítjük a rendszerünket, például a 7.0 kiadásról a 7.1 kiadásra, akkor értelemszerűen nem kell az iménti eljárás minden lépését szorosan követni, hiszen nagyon valószínűtlen, hogy komoly eltérések lennének a fordítóprogram, a rendszermag, az alaprendszer és a konfigurációs állományok között. Ilyenkor akár nyugodtan kiadhatjuk a make world parancsot, majd kérhetjük a rendszermag fordítását és telepítését.
A fejlesztési ágak közti váltás során azonban könnyen érhetnek minket meglepetések, ha nem a megadottak szerint járunk el.
Egyes váltásokhoz (például 4.X és 5.0 között) további lépések megtétele is szükséges lehet (például adott állományok törlése vagy átnevezése még az installworld előtt). Ilyenkor mindig figyelmesen olvassuk át a /usr/src/UPDATING állományt, különös tekintettel a végére, mivel gyakran ott adják meg a konkrét verzióváltáshoz szükséges teendőket.
A szakaszban összefoglalt lépések egyfajta evolúciós folyamat eredményei, melynek során a fejlesztők felismerték, hogy nem tökéletesen kivédeni az összes frissítéssel járó problémát. A javasolt eljárás remélhetőleg viszont még sokáig érvényes marad.
Megjegyzés: A FreeBSD 3.X vagy annál is korábbi változatok frissítése még ennél is több ügyességet kíván. Ha ilyen verziót akarunk frissíteni, akkor feltétlenül olvassuk el az UPDATING állományt!
Röviden tehát a FreeBSD forráskódon keresztüli frissítését így foglalhatjuk össze:
# cd /usr/src # make buildworld # make buildkernel # make installkernel # shutdown -r now
Megjegyzés: Néhány ritka esetben a buildworld lépés előtt szükségünk lehet a mergemaster -p parancs lefuttatására is. Erről az UPDATING állományból tudakozódhatunk. Általában azonban nyugodt szívvel kihagyhatjuk ezt a lépést, kivéve, ha nem egy vagy több főbb FreeBSD változatot átívelő frissítést végzünk.
Miután az installkernel sikeresen befejezte a munkáját, indítsuk újra a számítógépet egyfelhasználós módban (a betöltő parancssorában adjuk ki boot -s parancsot). Itt futtassuk a következőket:
# adjkerntz -i # mount -a -t ufs # mergemaster -p # cd /usr/src # make installworld # mergemaster # reboot
Olvassuk el a magyarázatokat: Az iménti leírt folyamat csupán rövid összefoglalás, amivel némi gyorstalpalást igyekeztünk adni. Az egyes lépések megértéséhez azonban javasolt átolvasni a most következő szakaszokat is, különösen abban az esetben, ha saját rendszermagot akarunk használni.
Mielőtt bármihez is nekifognánk, keressük meg a /usr/src/UPDATING (vagy hasonló, a forráskód másolatunk tényleges helyétől függő) állományt. Ebben adják hírül az esetlegesen felmerülő problémákra vonatkozó fontosabb információkat, vagy határozzák meg az egyes lefuttatandó parancsok pontos sorrendjét. Amennyiben az UPDATING ellentmondana az itt olvasottaknak, az UPDATING tartalma a mérvadó.
Fontos: A korábban tárgyaltak szerint az UPDATING elolvasása nem helyettesíti a megfelelő levelezési listák figyelemmel kísérését. Ez a két elvárás nem kizárja, hanem kiegészíti egymást.
Vizsgáljuk át a /usr/share/examples/etc/make.conf és az /etc/make.conf állományokat. Az előbbi tartalmaz néhány alapértelmezett beállítást – ezek javarészét megjegyzésbe rakták. Ha használni akarjuk a rendszer lefordítása során, tegyük bele ezeket az /etc/make.conf állományba. Ne felejtsük el azonban, hogy minden, amit megadunk az /etc/make.conf állományba, a make minden egyes elindításakor felhasználásra kerül. Éppen ezért olyanokat érdemes itt beállítani, amik az egész rendszerünket érintik.
A legtöbb felhasználó számára az /etc/make.conf állományhoz a /usr/share/examples/etc/make.conf állományban található CFLAGS és NO_PROFILE sorokra lesz szüksége, melyeket kivehetünk a megjegyzésből.
A többi definíció (COPTFLAGS, NOPORTDOCS és így tovább) használatáról már mindenki maga dönt.
Az /etc könyvtár tartalmazza a rendszer beállításaival kapcsolatos információk jelentős részét, valamint a rendszer indítása során lefutó szkripteket. Egyes szkriptek a FreeBSD verzióiról verzióira változnak.
Némely konfigurációs állományok a rendszer hétköznapi működésében is szerepet játszanak. Ilyen például az /etc/group.
Alkalmanként a make installworld parancs futása során igényt tart adott nevű felhasználókra és csoportokra. A frissítéskor azonban ezek a felhasználók vagy csoportok nem feltétlenül állnak rendelkezésre, ami gondokat okozhat. Ezért bizonyos esetekben a make buildworld előzetesen ellenőrzi az igényelt felhasználók és csoportok meglétét.
Erre például szolgálhat a smmsp felhasználó esete. Nélküle a felhasználók nem tudták telepíteni az új rendszert, mert hiányában az mtree(8) nem volt képes létrehozni a /var/spool/clientmqueue könyvtárat.
Ezt úgy lehetett megoldani, hogy még az
alaprendszer lefordítása (a
buildworld) előtt meg kellett
hívni a mergemaster(8) parancsot a
-p
paraméterrel. Így csak azokat
az állományokat fogja
összehasonlítani, amelyek feltétlenül
szükségesek a buildworld
vagy az installworld sikeres
működéséhez. Amennyiben a
mergemaster egy olyan
verziójával rendelkezünk, amely nem ismeri a
-p
paramétert, akkor az első
indításakor használjuk a
forrásfában található újabb
verzióját:
# cd /usr/src/usr.sbin/mergemaster # ./mergemaster.sh -p
Tipp: Ha különösen paranoiásak vagyunk, akkor a csoport törlése vagy átnevezése előtt az alábbi paranccsal ellenőrizni tudjuk az általa birtokolt állományokat:
# find / -group GID -printEz megmutatja GID (mely megadható numerikus vagy név formájában is) jelzésű csoporthoz tartozó összes állományt a rendszerünkben.
A rendszert egyfelhasználós módban érdemes lefordítani. A nyilvánvalóan érezhető gyorsaság előnyei mellett azért is jobban járunk, mert az új rendszer telepítése során számos rendszerszintű állomány is módosításra kerül, beleértve a szabványos rendszerszintű binárisokat, függvénykönyvtárakat, include állományokat és így tovább. Ha üzemelő rendszeren végezzük el mindezen változtatásokat (különösen amikor rajtunk kívül még további felhasználók is tartózkodnak a rendszerben), az csak a bajt hozza ránk.
Másik lehetőség gyanánt a rendszert magát lefordíthatjuk többfelhasználós módban is, majd ezután csak a telepítést hajtjuk végre egyfelhasználós üzemmódban. Ha eszerint cselekszünk, egyszerűen várjunk addig, amíg az összes fordítás be nem fejeződik, és az egyfelhasználósra váltást halasszuk a installkernel vagy installworld idejére.
Egy működő rendszerben rendszeradminisztrátorként az alábbi parancs kiadásával válthatunk át egyfelhasználós módba:
# shutdown now
Ezt elérhetjük úgy is, ha újraindítjuk a rendszert és a rendszer indításakor a “single user” pontot választjuk a menüből. Ekkor a rendszer egyfelhasználós módban indul el. Miután ez megtörtént, adjuk ki a következő parancsokat:
# fsck -p # mount -u / # mount -a -t ufs # swapon -a
Ezekkel a parancsokkal először ellenőrizzük az állományrendszereket, ezután újracsatlakoztatjuk a / állományrendszert írható módban, csatlakoztatjuk az /etc/fstab állományban megadott összes többi UFS típusú állományrendszert, majd bekapcsoljuk a lapozóállomány használatát.
Megjegyzés: Ha a gépünk óráját nem a greenwich-i, hanem a helyi idő szerint állítottuk be (ez akkor áll fenn, ha a date(1) parancs nem a helyes időt és időzónát jelzi ki), akkor még erre is szükségünk lehet:
# adjkerntz -iEzzel a helyi időzóna beállításait tudjuk jól beállítani — nélküle később még gondjaink akadhatnak.
A rendszer egyes részei fordításuk során a /usr/obj könyvtáron belülre kerülnek (alapértelmezés szerint). Az itt található könyvtárak a /usr/src könyvtárszerkezetét követik.
Ha mindenestől töröljük ezt a könyvtárat, akkor növeli tudjuk a make buildworld folyamat sebességét és megmenekülünk néhány függőségekkel kapcsolatos fejfájástól is.
Egyes /usr/obj könyvtáron belüli állományoknál szerepelhet a “megváltoztathatatlan” (immutable) állományjelző (lásd chflags(1)), amelyet a művelet elvégzéséhez először el kell távolítanunk.
# cd /usr/obj # chflags -R noschg * # rm -rf *
Jól járunk azzal, ha a make(1) futásának kimenetét elmentjük egy állományba, mivel így a hibák esetén lesz egy másolatunk a hibaüzenetről. Ha konkrétan nekünk nem is feltétlenül segít megtalálni a hiba tényleges okát, mások viszont többet tudnak róla mondani, ha beküldjük ezt a FreeBSD egyik levelezési listájára.
Ezt egyébként a legegyszerűbben a script(1) parancs segítségével oldhatjuk meg, amelynek paraméteréül azt az állományt kell megadni, ahova menteni akarjuk a kimenetet. Ezt közvetlenül a rendszer újrafordítása előtt kell kiadnunk, majd miután megállt, a exit paranccsal kiléphetünk belőle.
# script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
# make TARGET
… fordít, fordít, fordít …
# exit
Script done, …
Ilyenkor soha ne a /tmp könyvtárba mentsük a kimenetet, mert ennek a tartalma a következő indítás során magától törlődik. Sokkal jobban tesszük, ha a /var/tmp könyvtárba (ahogy tettük azt az előbbi példában is) vagy a root felhasználó könyvtárába mentünk.
A /usr/src könyvtárban kell állnunk:
# cd /usr/src
(kivéve természetesen, ha máshol van a forráskód, akkor abba a könyvtárba menjünk).
Az alaprendszert a make(1) paranccsal fordíthatjuk újra. Ez a Makefile nevű állományból olvassa be a FreeBSD programjainak újrafordítását leíró utasításokat, a fordításuk sorrendjét és így tovább.
A begépelendő paranccsor általános alakja tehát a következőképpen néz ki:
# make -x -DVÁLTOZÓ target
A fenti példában a
-x
egy olyan a
paraméter, amelyet a make(1) programnak adunk
át. A make(1) man oldalán
megtalálhatjuk az összes neki
átadható ilyen
beállítást.
A
-DVÁLTOZÓ
alakú paraméterek közvetlenül a
Makefile állománynak adnak
át olyan változókat, amelyek
segítségével vezérelhető a
viselkedése. Ezek ugyanazok a változók,
mint amelyek az /etc/make.conf
állományban is szerepelnek, és itt a
beállításuk egy másik
módját kapjuk. Így a
# make -DNO_PROFILE target
paranccsal is megadhatjuk, hogy ne profilozott függkönyvtárak jöjjenek létre, ami pontosan megfelel a
NO_PROFILE= true # Avoid compiling profiled libraries
sornak az /etc/make.conf állományban.
A target árulja el a make(1) programnak, hogy mi a teendője. Minden egyes Makefile különböző “targeteket” definiál, és a kiválasztott target mondja meg, pontosan mi is fog történni.
Egyes targetek ugyan megjelennek a Makefile állományban, azonban nem feltétlenül hivatkozhatunk rájuk közvetlenül. Ehelyett csupán arra valók, hogy a fordítás folyamatának lépéseit felbontsák még kisebb allépésekre.
A legtöbb esetben azonban semmilyen paramétert nem kell átadnunk a make(1) parancsnak, ezért a teljes formája így fog kinézni:
# make target
ahol a target az egyik fordítási lehetőséget képviseli. Az első ilyen targetnek mindig a buildworld-nek kell lennie.
Ahogy a neve is mutatja, a buildworld lefordítja az összes forrást a /usr/obj könyvtárba, majd a installworld mint másik target, telepíti az így létrehozott elemeket a számítógépre.
A targetek szétválasztása két okból is előnyös. Először is lehetővé teszi, hogy az új rendszert biztonságban lefordíthassuk, miközben az a jelenleg futó rendszert nem zavarja. A rendszer tehát képes “saját magát újrafordítani”. Emiatt a buildworld target akár többfelhasználós módban is mindenféle nem kívánatos hatás nélkül használható. Ennek ellenére azonban továbbra is azt javasoljuk, hogy a installworld részt egyfelhasználós módban futtassuk le.
Másodrészt ezzel lehetőségünk nyílik NFS állományrendszer alkalmazásával több számítógépre is telepíteni hálózaton keresztül. Ha például három frissítendő számítógépünk van, az A, B és C, akkor az A gépen először adjuk ki a make buildworld, majd a make installworld parancsot. A B és C gépek ezután NFS segítségével csatlakoztatják az A /usr/src és /usr/obj könyvtárait, amelyet követően a make installworld paranccsal telepíteni tudjuk a fordítás eredményét a B és C gépekre.
Noha a world mint target még mindig létezik, használata határozottan ellenjavalt.
A
# make buildworld
parancs kiadásakor a make
parancsnak megadható egy -j
paraméter is, amellyel párhuzamosíthatjuk
a folyamat egyes részeit. Ez általában
többprocesszoros
számítógépeken nyer
értelmet, azonban mivel a fordítás
folyamatának haladását inkább az
állományműveletek mintsem a processzor
sebessége korlátozza, ezért
alkalmazható akár egyprocesszoros gépeken
is.
Tehát egy átlagos egyprocesszoros gépen így adható ki a parancs:
# make -j4 buildworld
Ennek hatására make(1) egyszerre 4 szálon igyekszik működni. A levelezési listákra beküldött tapasztalati jellegű bizonyítékok azt igazolják, hogy általában ez a beállítás adja a legjobb teljesítményt.
Ha többprocesszoros géppel rendelkezünk és rajta SMP támogatású rendszermagot indítottunk el, akkor érdemes 6 és 10 közötti értékekkel kísérleteznünk.
Számos tényező befolyásolja a fordítás tényleges időbeli hosszát, de a FreeBSD-STABLE fa lefordítása mindenféle trükkök és rövidítések nélkül a legtöbb számítógépen olyan egy vagy két órára taksálható. A FreeBSD-CURRENT fához ennél valamivel több időre lesz szükségünk.
Az újdonsült rendszerünket csak akkor tudjuk igazán kihasználni, ha egy új rendszermagot is készítünk hozzá. Ez gyakorlati szinten tulajdonképpen elvárás, mivel könnyen előfordulhat, hogy bizonyos memóriabeli adatszerkezetek felépítése megváltozott, ezért némely programok, mint például a ps(1) és top(1), egészen addig nem lesznek képesek normálisan működni, amíg a rendszer és a rendszermag forráskódja nem illeszkedik egymáshoz.
Ennek legegyszerűbb és egyben legbiztonságosabb módja, ha a GENERIC beállításai alapján gyártunk és telepítünk egy rendszermagot. Még ha a GENERIC beállításai nem is tartalmazzák a rendszerünkben fellelhető összes eszközt, minden megtalálható bennük ahhoz, hogy a rendszert sikeresen elindíthassuk legalább egyfelhasználós módban. Ez mellesleg remek próbája az új rendszer életképességének. Miután elindítottuk a rendszert a GENERIC típusú rendszermaggal és meggyőződtünk róla, hogy a rendszer tényleg működőképes, a megszokott rendszermagunk konfigurációs állománya alapján nyugodtan elkészíthetjük ezután azt is.
FreeBSD alatt egy új rendszermag építése előtt fontos újrafordítani az alaprendszert.
Megjegyzés: Ha saját beállításaink szerint akarunk rendszermagot létrehozni és már van is ehhez egy konfigurációs állományunk, akkor erre használhatjuk a KERNCONF=SAJÁTMAG paramétert is, valahogy így:
# cd /usr/src # make buildkernel KERNCONF=SAJÁTMAG # make installkernel KERNCONF=SAJÁTMAG
Hozzátennénk, hogy ha a
kern.securelevel
rendszerváltozó értékét 1
felé állítottuk
és a rendszermag
állományának beállítottunk
noschg vagy hozzá hasonló
állományjelzőt, akkor az
installkernel
lefuttatásához mindenképpen
egyfelhasználós módba kell
váltanunk. Minden más esetben további
bonyodalmak nélkül ki tudjuk adni az említett
parancsokat. A kern.securelevel
részleteiről az init(8) oldalán, a
különböző
állományjelzőkről pedig a
chflags(1) oldalán olvashatunk.
Az új rendszermag működésének leteszteléséhez indítsuk újra a rendszert egyfelhasználós módban. Ennek pontos részleteit lásd 24.7.5 Szakasz.
Ha a FreeBSD friss változatát nemrég fordítottuk le a make buildworld paranccsal, akkor utána az installworld segítségével tudjuk telepíteni a keletkezett programokat.
Tehát írjuk be ezeket:
# cd /usr/src # make installworld
Megjegyzés: Amennyiben a paranccsorban a make buildworld használata során adtunk meg változókat, akkor ne felejtsük el ugyanazokat megadni a make installworld kiadása során sem. Ez viszont a többi paraméterre már nem feltétlenül érvényes. Például a
-j
beállítást szigorúan tilos az installworld targettel együtt használni.Ennek megfelelően tehát ha korábban ezt írtuk be:
# make -DNO_PROFILE buildworldakkor így telepítsünk:
# make -DNO_PROFILE installworldMáskülönben azokat a profilozott függvénykönyvtárakat próbáljuk meg telepíteni, amelyek a make buildworld futása során nem jöttek létre.
Az alaprendszer újrafordítása nem regisztrálja az új vagy megváltozott állományokat bizonyos könyvtárakban (különösen értendő ez az /etc, /var és /usr esetén).
Az ilyen állományokat a legegyszerűbben a mergemaster(8) használatával tarthatjuk karban, de igény szerint akár kézzel is elvégezhetjük a szükséges aktualizálásokat. Függetlenül attól, hogy mit is választunk, mindenképpen készítsünk biztonsági mentést az /etc könyvtárról arra az esetre, ha bármilyen szörnyűség történne.
A mergemaster(8) segédprogram valójában egy Bourne szkript, amely segít az /etc könyvtárunkban és a forrásfában levő /usr/src/etc könyvtárban elhelyezkedő konfigurációs állományok közti eltérések megállapításában. Ezt a módszert ajánljuk arra, hogy összevessük a konfigurációs állományainkat a forrásfában található változataikkal.
A használatának megkezdéséhez
egyszerűen írjuk be, hogy
mergemaster, majd várjunk egy kicsit,
amíg a mergemaster létrehoz
magának egy átmeneti környezetet a
/ könyvtárból elindulva
és megtölti azt a különböző
rendszerszintű beállításokat
tartalmazó állományokkal. Ezeket az
állományokat aztán
összehasonlítja a jelenleg érvényben
levő változataikkal. Ilyenkor a köztük
talált eltéréseket a diff(1)
formátumának megfelelően módon mutatja
meg, ahol a +
jelöli a hozzáadott
vagy módosított sorokat, a -
pedig a teljesen eltávolítandó vagy
cserélendő sorokat. Erről a
formátumról bővebben a diff(1) man
oldalán találhatunk
felvilágosítást.
A mergemaster(8) ezt követően megmutatja az összes olyan állományt, ahol eltérést tapasztalt, és ezen a ponton van lehetőségünk letörölni (delete) az új állományokat (amelyekre itt most ideiglenes állományként hivatkozik), telepíteni (install) a módosítatlan ideiglenes (új) állományt, valamint összefésülni (merge) az ideiglenes (új) és a jelenlegi állományokat, vagy ismét átnézni (view) a diff(1) által jelzett különbségeket.
Ha az ideiglenes állomány törlését választjuk, akkor a mergemaster(8) ezt úgy értelmezi, hogy változatlanul meg akarjuk tartani a jelenlegi változatot és törölni az újat. Ezt alapvetően nem javasoljuk, hacsak tényleg nem látunk valamilyen okot erre. A mergemaster(8) parancssorában a ? begépelésével bármikor kérhetünk segítséget. Ha az állomány kihagyását (skip) választjuk, akkor majd ismét felajánlja, amikor végeztünk az összes többivel.
A módosítatlan ideiglenes állomány telepítésének választásával lecseréljük a jelenleg verziót az újra. Ha az aktuális verziót sem változtattuk meg, akkor számunkra ez a legjobb megoldás.
Az állományok összefésülésének kiválasztásakor kapunk egy szövegszerkesztőt, benne a két állomány tartalmával. Ilyenkor tudjuk a képernyőn soronként egyeztetni a két állományt, majd a belőlük a megfelelő részek összeválogatásával kialakítani az eredményt. Ebben a feldolgozási módban az l (mint left, vagyis bal) billentyű lenyomására a bal oldalon látható részt, az r (mint right, vagyis jobb) lenyomására pedig a jobb oldalon látható részt választjuk ki. Az így keletkező eredményt ezután egy állományba kerül, amelyet telepíteni tudunk. Ez a megoldás olyan állományok esetében használható, amikor a felhasználó módosított az alapértelmezett beállításokat.
Ha a diff(1) szerinti alakban akarjuk átnézni a különbségeket, akkor a mergemaster(8) ugyanúgy megmutatja ezeket, mint a paranccsor megjelenítése előtt.
Miután a mergemaster(8) végigment a rendszerszintű állományokon, további opciókat mutat. Megkérdezheti, hogy újra létre akarjuk-e hozni a jelszavakat tároló állományt (rebuild), illetve a folyamat végén a megmaradt ideiglenes állományok törlésére (remove) vár választ.
Ha inkább manuálisan szeretnénk frissíteni, akkor nem másolhatjuk csak egyszerűen át az állományokat a /usr/src/etc könyvtárból a /etc könyvtárba és nem hagyhatjuk ezeket sorsukra. Egyes állományokat először “telepíteni” kell. Ez azért van így, mert a /usr/src/etc könyvtár nem pusztán az /etc könyvtár egyszerű másolata. Ráadásul az /etc könyvtárban vannak olyan állományok, amelyek a /usr/src/etc könyvtárban nem is találhatóak meg.
Ha (az ajánlottak szerint) a mergemaster(8) segítségével dolgozunk, nyugodtan átléphetünk a következő szakaszra.
Saját magunk a legegyszerűbben ezt úgy tudjuk megoldani, ha telepítjük az állományokat egy új könyvtárba és ezután nekiállunk változásokat keresni.
Az /etc meglevő tartalmának mentése: Habár elméletileg magától semmi sem fogja bántani ezt a könyvtárat, azért ettől függetlenül mindig érdemes biztosra menni. Ezért másoljuk az /etc könyvtár tartalmát egy megbízható helyre. Például:
# cp -Rp /etc /etc.oldAz
-R
itt a rekurzív másolást jelenti, a-p
pedig a dátumok, az állományok és egyebek tulajdoni viszonyainak megőrzését.
Az /etc új változatának telepítéséhez szükségünk lesz még további könyvtárakra is. Erre a feladatra a /var/tmp/root tökéletesen megfelel, ahol még létre kell hoznunk néhány alkönyvtárat.
# mkdir /var/tmp/root # cd /usr/src/etc # make DESTDIR=/var/tmp/root distrib-dirs distribution
Ezzel létrejön a szükséges könyvtárszerkezet és települnek az állományok. Sok üres alkönyvtár is keletkezik a /var/tmp/root könyvtáron belül, ezeket töröljük. Ezt a legkönnyebben így tehetjük meg:
# cd /var/tmp/root # find -d . -type d | xargs rmdir 2>/dev/null
Ezzel törlődnek az üres könyvtárak. (A szabvány hibakimenetet átirányítottuk a /dev/null eszközre, és ezzel elnyomtuk a nem üres könyvtárak esetén keletkező hibaüzeneteket.)
A /var/tmp/root most már tartalmazza az összes olyan állományt, amelyek normális esetben a / könyvtáron belül foglalnak helyet. Ezt követően nincs más dolgunk, csak végigmenni az itt található állományokon és megállapítani, miben térnek a meglévőektől.
Vegyük észre, hogy a /var/tmp/root könyvtárba telepített állományok némelyikének neve “.”-tal kezdődik. Az írás pillanatában ezek csak a /var/tmp/root/ és /var/tmp/root/root/ könyvtárakban található parancsértelmezőhöz tartozó indító állományok lehetnek, habár adódhatnak még ilyenek (attól függően, mikor olvassuk ezt). Ezért a feldolgozásukhoz ne felejtsük el a ls -a parancsot használni.
A diff(1) alkalmazásával legegyszerűbben így tudunk összehasonlítani két állományt:
# diff /etc/shells /var/tmp/root/etc/shells
Ennek hatására megjelennek az /etc/shells és az új /var/tmp/root/etc/shells állományok közti különbségek. A segítségével gyorsan el tudjuk dönteni, hogy összefésüljük-e a két állományt, vagy csak egyszerűen írjuk felül a régebbi verziót az újjal.
Az új könyvtár (/var/tmp/root) nevébe írjuk bele a dátumot is, így könnyedén össze tudunk hasonlítani több verziót is: A rendszer gyakori újrafordítása az /etc szintén gyakori aktualizálását is maga után vonja, ami viszont fárasztó lehet.
Az iménti folyamatot fel tudjuk gyorsítani, hogy ha az /etc legutoljára összefésült változatát megtartjuk. A most következő eljárás ennek mikéntjét vázolja fel.
A megszokottak szerint fordítsuk le a rendszert. Majd amikor az /etc könyvtárat és a többit is frissíteni akarjuk, a célként megadott könyvtár nevében adjuk meg a dátumot. Ha tehát például 1998. február 14. van, akkor írjuk ezt:
# mkdir /var/tmp/root-19980214 # cd /usr/src/etc # make DESTDIR=/var/tmp/root-19980214 \ distrib-dirs distributionFésüljük össze a könyvtárban található az állományokat a fentiekben körvonalazottak szerint.
Befejezés után őrizzük meg a /var/tmp/root-19980214 könyvtárat.
Mikor újra letöltjük a legfrissebb forrásokat és megismételjük az előbbi lépéseket, haladjunk megint az első lépés szerint. Ekkor tehát létrejön egy újabb könyvtár, amelynek a neve ezúttal már /var/tmp/root-19980221 lesz (ha például hetente frissítünk).
Most már meg tudjuk vizsgálni a közbeeső héten született eltéréseket, ha a két könyvtárra kiadunk egy rekurzív diff(1) hívást:
# cd /var/tmp # diff -r root-19980214 root-19980221Általában így kevesebb eltérést kapunk, mint amennyi például a /var/tmp/root-19980221/etc/ és az /etc összehasonlítása során elkerült volna. Mivel kisebb a keletkezett különbségek száma, ezért könnyebb lesz átvinnünk az /etc könyvtárunkba is a módosításokat.
Ezután törölhetjük a régebbi /var/tmp/root-* könyvtárat:
# rm -rf /var/tmp/root-19980214Az /etc összefésülésekor mindig ismételjük meg ezeket a lépéseket.
A date(1) meghívásával akár automatikussá is tehetjük a könyvtárak névadását:
# mkdir /var/tmp/root-`date "+%Y%m%d"`
Ezzel készen is vagyunk. Miután ellenőriztük, hogy minden a megfelelő helyére került, indítsuk újra a rendszert. Ehhez egy egyszerű shutdown(8) is elegendő:
# shutdown -r now
Gratulálunk, sikerült frissítenünk a FreeBSD rendszerünket.
Ha mégis valami balul ütne ki, könnyen újra tudjuk fordítani a rendszer egyes részeit. Például, ha véletlenül letöröltük az /etc/magic állományt az /etc frissítése vagy összefésülése során, a file(1) parancs nem fog tudni rendesen működni. Ilyenkor a következőket kell tennünk a hiba kijavításához:
# cd /usr/src/usr.bin/file # make all install
Nem könnyű választ adni erre a kérdésre, mivel ez alapvetően a változtatás jellegétől függ. Például, ha elindítjuk a CVSup programot és csak az alábbi állományok frissülnek:
src/games/cribbage/instr.c src/games/sail/pl_main.c src/release/sysinstall/config.c src/release/sysinstall/media.c src/share/mk/bsd.port.mk
Ekkor valószínűleg nem éri meg újrafordítani a teljes rendszert. Elegendő csupán belépni az érintett állományokat tartalmazó alkönyvtárakba és ott rendre kiadni a make all install parancsot. Ha viszont már valami komolyabb, például az src/lib/libc/stdlib változott meg, akkor vagy az egész rendszert, vagy legalább azon részeit fordítsuk újra, amely statikusan linkeltek (és minden más időközben még hozzáadott statikusan linkelt dolgot).
Hogy melyik megoldást választjuk, teljesen rajtunk áll. Újrafordíthatjuk az egész rendszert kéthetente, mondván, hadd gyüljenek fel szépen a módosítások, vagy a függőségek pontos kielemzésével csak azokat az elemeket fordítjuk újra, amelyek tényleg meg is változtak.
Természetesen az egész attól függ, hogy milyen gyakran és melyik rendszert, a FreeBSD-STABLE-t vagy a FreeBSD-CURRENT-et frissítjük.
A fordító rengeteg 11-es jelzést (signal 11) (vagy másfajta jelzéseket) dob hibával. Mi történhetett?
Ez általában hardveres meghibásodásra utal. A rendszer újrafordítása alapjaiban véve egy remek módszer számítógépünk alkatrészeinek terhelésére, ezért gyakorta előhozza a memória már meglevő hibáit. Ezek többnyire abban fogalmazódnak meg, hogy a fordító rejtélyes módon leáll mindenféle furcsa jelzések hatására.
Erről biztosan úgy tudunk meggyőződni, ha újraindítjuk a make programot és az a folyamat egy teljesen másik pontján vérzik el.
Ilyenkor nem tudunk mást tenni, mint egymás után kicserélgetjük, kivesszük az alkatrészeket és így próbáljuk megállapítani, pontosan melyikük is okozza a gondokat.
Röviden: Igen.
A /usr/obj tartalmazza a fordítás folyamata során keletkező összes tárgykódot. Ennek törlése általában a make buildworld első lépései között szerepel. Ezért tulajdonképpen a /usr/obj megtartásának nincs túlságosan sok értelme, viszont elég sok (jelenleg úgy kb. 340 MB) helyet fel tudunk így szabadítani.
Ha azonban értjük a dolgunkat, akkor megadhatjuk a make buildworld parancsnak, hogy hagyja ki ezt a lépést. Ennek hatására a fordítás sokkal hamarabb véget ér, mivel a legtöbb forrást így nem kell újrafordítani. Üröm az örömben, hogy ha netalán aprócska függőségi problémák merülnének fel, akkor az egész fordítás megfeneklik mindenfelé különös módokon. Emiatt gyakran írnak feleslegesen leveleket a FreeBSD levelezési listáira, melyek a rendszer sikertelen újrafordításáról panaszkodnak, miközben kiderül, hogy az maguk az érintettek akarták lerövidíteni a folyamatot.
Ez attól függ, hogy a probléma bekövetkezése előtt mennyire sikerült eljutni a fordításban.
Általában (tehát nem feltétlenül minden esetben) a make buildworld lefordítja a fordításhoz szükséges eszközök (például a gcc(1) és make(1)) újabb változatait és a rendszer függvénykönyvtárait, majd ezeket telepíti. Ezután ezekkel az új eszközökkel lefordítattja saját magukat és ismét telepíti. Ezt követően fordítja újra az új rendszerállományokkal az egész rendszert (így ezúttal már az olyan szokásos felhasználói programokat is, mint például az ls(1) és a grep(1)).
Ha tudjuk, hogy az utolsó fázisban álltunk le (mivel megnéztük a fordításhoz tartozó kimenetet), akkor (minden további nélkül) elég ennyi:
… kijavítjuk a hibát …
# cd /usr/src
# make -DNO_CLEAN all
Ezzel megmarad a korábbi make buildworld munkájának eredménye.
Ha ezt az üzenetet látjuk a make buildworld kimenetében:
-------------------------------------------------------------- Building everything.. --------------------------------------------------------------
akkor különösebb gond nélkül megcsinálhatjuk.
Amennyiben viszont nem látunk ilyen üzenetet, vagy nem vagyunk benne biztosak, akkor még mindig jobb elővigyázatosnak lenni, ezért kénytelenek leszünk teljesen elölről kezdeni a fordítást.
Futtassuk egyfelhasználós módban.
Tegyük a /usr/src és /usr/obj könyvtárakat külön állományrendszerekre, külön lemezekre. Sőt, ha lehetséges, akkor ezeket a lemezeket tegyük külön lemezvezérlőkre.
Még mindig jobb, ha ezeket az állományrendszereket a ccd(4) (lemezek összefűzését vezérlő meghajtó) segítségével kiterjesztjük több lemezes eszközre.
Kapcsoljuk ki a profilozást (az /etc/make.conf állományban a “NO_PROFILE=true” megadásával). Többnyire úgy sem lesz rá szükségünk.
Az /etc/make.conf
állományban a CFLAGS
változót állítsuk az
-O -pipe
értékre. Az
-O2
gyakran sokkal lassabb, az
-O
és -O2
alig tér el az optimalizálás
mértékében. A
-pipe
paraméter
hatására pedig a
fordítóprogram átmeneti
állományok helyett csöveket
használ a kommunikációra,
és így megtakarít némi
lemezhasználatot (a
memóriahasználat terhére).
Ha a make(1) parancsnak átadjuk a
-jn
paramétert, akkor képes több
mindent párhuzamosan futtatni. Ez sok esetben
segít attól függetlenül, hogy
egy- vagy többprocesszoros gépünk
van.
A /usr/src
könyvtárat tartalmazó
állományrendszert csatlakoztathatjuk
(vagy újracsatlakoztathatjuk) a
noatime
beállítással. Ilyenkor az
állományrendszer nem rögzíti
a hozzáférés idejét. Erre
az információra sincs
igazából
szükségünk.
# mount -u -o noatime /usr/src
Figyelem: A fenti példa azt feltételezi, hogy a /usr/src könyvtárnak saját állományrendszere van. Ha ez nem így lenne (tehát például a /usr része), akkor itt azt kell megadnunk, nem pedig a /usr/src nevét.
A /usr/obj
könyvtárat tartalmazó
állományrendszert csatlakoztathatjuk
(vagy újracsatlakoztathatjuk) az
async
beállítással. Ennek
hatására a lemez írása
aszinkron módon történik. Magyarul
az írási műveletek azonnal
befejeződnek, miközben az adat
ténylegesen csak pár másodperccel
később kerül ki a lemezre. Ezzel az
írási kérelmek
gyönyörűen
összegyűjthetőek, ami
nagymértékű növekedést
eredményez a
teljesítményben.
Figyelem: Ne felejtsük el azonban, hogy ezzel együtt az állományrendszerünk is sérülékenyebbé válik. Ezen beállítás használatával megnő annak az esélye, hogy egy áramkimaradást követő indításnál az állományrendszer helyreállíthatatlan állapotba kerül.
Ha egyedül csak a /usr/obj található ezen az állományrendszeren, akkor ez nem jelent akkora veszélyt. Amikor viszont rajta kívül még értékes adat is található az állományrendszeren, a beállítás érvényesítése előtt mindenképpen készítsünk róla friss mentéseket.
# mount -u -o async /usr/obj
Figyelem: Ahogy arról az előbb is szó esett, ha a /usr/obj nem egy különálló állományrendszeren található, akkor a példában szereplő csatlakozási pontot cseréljük ki a megfelelőre.
Egyértelműen bizonyosodjunk meg róla, hogy a korábbi fordításokból nem maradtak vissza semmiféle kóbor állományok. Ennyi sokszor pontosan elég.
# chflags -R noschg /usr/obj/usr # rm -rf /usr/obj/usr # cd /usr/src # make cleandir # make cleandir
Igen, a make cleandir parancsot tényleg kétszer kell kiadni.
Ezután a make buildworld parancstól indulva kezdjük újra a fordítást.
Ha még ezek után is fennáll a probléma, küldjük el a hibát tartalmazó kimenetet és a uname -a parancs eredményét a FreeBSD general questions levelezési lista címére. Ne lepődjünk meg, ha a beállításainkra vonatkozóan még kapunk további kérdéseket is!
Ha egyszerre több számítógéppel is szeretnénk követni ugyanannak a forrásfának a változásait és ezért mindegyikre letöltjük a forrásokat majd újrafordítjuk ezeket, akkor sok erőforrást, de leginkább lemezterületet, hálózati sávszélességet és processzoridőt, feleslegesen használunk. Ezekkel úgy tudunk spórolni, ha valójában csak egyetlen géppel végeztetjük el a munka legtöbb részét, miközben a többi NFS használatával dolgozik. Ez a szakasz ezt a módszert foglalja össze.
Először is szedjük össze az egyező binárisokat futtató gépeket, melyekre a továbbiakban csak fordítási csoport néven hivatkozunk. Minden gépnek lehet saját rendszermagja, viszont a felhasználói programok mindegyikőjük esetében ugyanazok. Ebből a csoportból válasszuk ki egy fordító gépet. Ez lesz az a gép, amelyen a rendszer és a rendszermag lefordításra kerül. Ideális esetben ez a leggyorsabb gép, amelynek elegendő a processzorkapacitása arra, hogy lefuttassa a make buildworld és make buildkernel parancsokat. Érdemes még rajta kívül kiválasztanunk egy tesztelő gépet is, ahol a véglegesítés előtt kipróbálhatjuk a szoftverfrissítéseket. Ennek egy olyan gépnek kell lennie, amely akár hosszabb ideig is nélkülözhető a csoportból. Lehet akár maga a fordítást végző gép is, de nem elvárás.
A fordítási csoportban levő összes gépnek ugyanarról a gépről és ugyanarra a pontra kell csatlakoztatnia a /usr/obj és /usr/src könyvtárakat. Ezek optimális esetben a fordítással foglalkozó gép két külön lemezmeghajtóján vannak, melyek egyaránt elérhetőek NFS-en keresztül. Ha több fordítási csoportunk is van, akkor az /usr/src könyvtárnak elegendő csak egyetlen fordító gépen meglennie, a többi pedig csatlakoztassa NFS-en keresztül.
Végül győzödjünk meg róla, hogy az /etc/make.conf és a /etc/src.conf állományok tartalma a fordítási csoport mindegyik gépénél megegyezik a fordító gépével. Ez azt jelenti, hogy a fordító gépnek az alaprendszer ugyanazon részeit és ugyanúgy kell létrehozni, mint amelyet a fordítási csoport akármelyik gépére telepíteni is akarunk. Ezenkívül még a fordítási csoportban levő minden egyes gép /etc/make.conf állományában a KERNCONF értékének a saját rendszermagjára vonatkozó konfigurációt kell megadni, illetve a fordítással foglakozó gép KERNCONF változójánál pedig az együtt összeset, a sajátjával kezdve. Ennek megfelelően a fordító gépnek a rendszermagok lefordításához rendelkeznie kell az egyes gépek /usr/src/sys/arch/conf könyvtárában meglevő állományaival.
Most, miután mindent megfelelően előkészítettünk, készen állunk a munkára. A 24.7.7.2 Szakaszban leírtak szerint fordítsuk le a rendszermagokat és az alaprendszert a fordító gépen, de utána még nem telepítsünk semmit se. Ha befejeződött a fordítás, lépjünk be a tesztelő gépre és telepítsük a frissen fordított rendszermagot. Ha ez a gép NFS-en keresztül éri a /usr/src és /usr/obj könyvtárakat, akkor az egyfelhasználós módban aktiválni kell a hálózatot, majd csatlakoztatni ezeket. Ezt legkönnyebben úgy tudjuk megcsinálni, ha a gépet először elindítjuk többfelhasználós módban, majd a shutdown now paranccsal egyfelhasználós módba váltunk. Ha eljuttunk ide, telepítsünk az új rendszermagot és rendszert, illetve a megszokott módon futtassuk a mergemaster parancsot. Amikor ezt befejeztük, ezen a gépen térjünk vissza a hétköznapi többfelhasználós működési módba.
Miután a tesztelésre szánt gépen ellenőriztük, hogy minden a megfelelő módon működik, az előbb tárgyalt eljárással telepítsük fel a fordítási csoportban levő összes többi gépre is az új szoftvereket.
Ugyanezt a gondolatmenet alkalmazható a portfa esetében is. Az első és egyben legfontosabb lépés a /usr/ports csatlakoztatása ugyanarról a gépről a fordítási csoport minden gépére. Az /etc/make.conf megfelelő beállításával még a terjesztési állományokat is meg tudjuk osztani. A DISTDIR értékét egy olyan közösen használt könyvtárra állítsuk, amely írható az NFS-en keresztül megosztott állományrendszerünkben a root felhasználóként tevékenykedők számára. A WRKDIRPREFIX változót minden gépen egy helyi fordítási könyvtárra állítsuk. Zárásképpen még hozzátesszük, hogy ha csomagokat akarunk készíteni és mások számára is elérhetővé tenni, akkor ne felejtsük el a PACKAGES változót a DISTDIR változóhoz hasonlóan beállítani.
A DTrace, vagy más néven Dynamic Tracing technológiát a Sun dolgozta ki szerverek teljesítményében jelentkező szűk keresztmetszetek felderítésének megkönnyítésére. Ez nem egy nyomkövetésre szolgáló megoldást takar, hanem inkább a rendszer valós idejű elemzését és teljesítményének vizsgálatát elősegítő eszközt.
A DTrace figyelemre méltó elemzőeszköz, rengeteg rendkívül hasznos képességgel rendelkezik a rendszerben felbukkanó problémák diagnosztizálására. Előre programozott szkriptek segítségével pedig ezen képességek további előnyeit tudjuk kihasználni, ugyanis a DTrace programozható egy ún. D nyelven, amelynek révén a különböző vizsgálatokat könnyen a saját igényeink szerint tudjuk alakítani.
A fejezet elolvasása során megismerjük:
mi is az a DTrace és milyen lehetőségei vannak;
a Solaris és FreeBSD operációs rendszereken megtalálható DTrace implementációk közti eltéréseket;
a DTrace FreeBSD alatt hogyan engedélyezhető és használható.
A fejezet elolvasásához ajánlott:
a UNIX és FreeBSD alapvető ismerete (3 fejezet);
a rendszermag konfigurációjának és fordításának alapvető ismerete (8 fejezet);
az operációs rendszerek és azon belül a FreeBSD biztonsági fogalmainak minimális ismerete (14 fejezet);
a FreeBSD forrásainak megszerzésének és azok lefordításának ismerete (24 fejezet).
Figyelem: Ez a funkció még folyamatos tesztelés alatt áll. Bizonyos részei még egyáltalán nem, vagy csak korlátozottan érhetőek el. A dokumentáció annak megfelelően fog majd változni, hogy ezek az elemek fokozatosan elérik az éles felhasználáshoz szükséges szintet.
Noha a FreeBSD alatt megtalálható DTrace implementáció nagyon hasonló az eredeti, Solaris alatt futó változathoz, tartalmaz bizonyos különbségeket, amelyeket a továbblépés előtt mindenképpen érdemes megemlítenünk. Az egyik legfontosabb ilyen szembetűnő különbség, hogy a FreeBSD esetén a DTrace használatát külön engedélyezni kell. A DTrace megfelelő működéséhez tehát a rendszermag konfigurációs állományában meg kell adnunk bizonyos beállításokat és modulokat kell betöltenünk. Ezekről hamarosan szó lesz.
A rendszermag konfigurációs állományában a DDB_CTF opció segítségével tudjuk engedélyezni ún. CTF adatok betöltését mind a rendszermag moduljaiból, mind pedig magából a rendszermagból egyaránt. A CTF a Solaris “Compact Type Format” elnevezésű formátumára utal, amellyel például a DWARF megoldásához hasonló módon tárolhatunk tömörített alakban különböző típusú nyomkövetési információkat. Ilyen CTF adatok többek közt a ctfconvert és a ctfmerge használatával rendelhetőek hozzá bináris állományokhoz. A ctfconvert segédprogram a fordítóprogram által az ELF állományokban szereplő DWARF típusú szakaszokban tárolt információkat képes beolvasni, és a ctfmerge a tárgykódban található CTF típusú ELF szakaszokat tudja végrehajtható állományokká vagy osztott könyvtárakka összefűzni. Röviden beszélni fogunk arról, hogyan lehet mindezeket a FreeBSD alaprendszerébe és rendszermagjába is beépíteni.
FreeBSD és Solaris esetén előfordulhat, hogy
más fajta providerek állnak
rendelkezésünkre. Ezek közül talán a
legfontosabb a dtmalloc, amely a FreeBSD
rendszermagjában típus szerint teszi
lehetővé a malloc()
függvény követését.
FreeBSD alatt kizárólag csak a root tudja használni a DTrace-t. Ennek oka a két operációs rendszer biztonsági megoldásai közti különbségekben keresendő, mivel a Solaris esetén létezik néhány olyan alacsonyszintű ellenőrzés, amely a FreeBSD-nél még nincs. Ezért például a /dev/dtrace/dtrace eszköz szigorúan csak a root számára érhető el.
Végezetül megemlítjük, hogy a DTrace felhasználására a Sun CDDL licence vonatkozik. A Common Development and Distribution License FreeBSD a /usr/src/cddl/contrib/opensolaris/OPENSOLARIS.LICENSE állományban található, vagy interneten keresztül a http://www.opensolaris.org/os/licensing címen.
Ezen licenc értelmében a DTrace támogatással készített FreeBSD rendszermagok továbbra is BSD licencűek maradnak, azonban a rendszerrel terjesztett binárisok futtatásakor vagy a modulok betöltésekor már a CDDL érvényesül.
A DTrace által felkínált lehetőségeket a következő sorok hozzáadásával tudjuk engedélyezni a rendszermag konfigurációs állományában:
options KDTRACE_HOOKS options DDB_CTF
Megjegyzés: AMD64 architektúrán ezeken kívül még az alábbi sor is kelleni fog:
options KDTRACE_FRAMEEzzel a beállítással az FBT (“function boundary tracing”) részére nyújtunk támogatást. A DTrace ugyan enélkül is képes lesz működni, de akkor csak korlátozott mértékben tudunk ilyen típusú vizsgálatokat végezni.
Az egész rendszert újra kell fordítanunk a CTF használatával. Ennek elvégzéséhez a következő parancsokat kell kiadnunk:
# cd /usr/src # make WITH_CTF=1 kernel
A fordítás befejeződése után indítsuk újra a rendszerünket.
A rendszer újraindulása és az új rendszermag betöltődése után szükségünk lesz egy Korn-féle parancsértelmezőre is, mivel a DTrace eszköztárában rengeteg, a ksh programra épülő eszközt fogunk találni. Ezért tehát telepítsük a shells/ksh93 csomagot, de megjegyezzük, hogy ugyanezen eszközök számára a shells/pdksh vagy shells/mksh csomagok is megfelelnek.
Végül töltsük le a DTrace eszköztárának legfrissebb változatát. Az aktuális verzió a http://www.opensolaris.org/os/community/dtrace/dtracetoolkit/ címen érhető el. Képes önmagát telepíteni, de a benne található eszközök használatához nem kötelező ezt elvégezni.
A DTrace funkcióinak alkalmazásához léteznie kell egy DTrace eszköznek. Ennek létrehozásához be kell töltenünk a megfelelő modult:
# kldload dtraceall
Innentől már működésre kész a DTrace. Rendszeradminisztrátorként a következő módon kérdezhetjük le a rendelkezésre álló vizsgálatokat:
# dtrace -l | more
Mivel lekérdezés eredménye pillanatok alatt betöltené az egész képernyőt, ezért az egészet még átirányítjuk a more parancshoz. Ha ez rendesen lefut, akkor a DTrace ténylegesen használhatónak tekinthető. Ezt követően tekintsük át a hozzá tartozó eszközkészletet.
Ez a mellékelt eszközkészlet lényegében a rendszerrel kapcsolatos információk összegyűjtésére alkalmas szkripteket tartalmaz. Vannak szkriptek, amelyekkel a megnyitott állományokat, a memóriát, a processzorhasználatot és még sok minden mást kérdezhetünk le. A szkriptek a következő parancs segítségével tömöríthetőek ki:
# gunzip -c DTraceToolkit* | tar xvf -
A cd parancs segítségével lépjünk be az így keletkező könyvtárba, és a kisbetűs névvel rendelkező állományok engedélyeit állítsuk be a 755 módra.
Mindegyik szkriptben el kell végeznünk némi módosítást: a /usr/bin/ksh hivatkozásokat írjuk át mindenhol a /usr/local/bin/ksh névre, illetve a /usr/bin/sh hivatkozásokat /bin/sh névre, majd végezetül pedig a /usr/bin/perl hivatkozásokat a /usr/local/bin/perl névre.
Fontos: Itt még egyszer kiemelnénk, hogy a FreeBSD-ben jelenleg megtalálható DTrace támogatás még nem teljes és kísérleti jelleggel szerepel. Ezért bizonyos szkriptek nem fognak működni, vagy azért, mert túlságosan Solaris lehetőségeihez igazodnak, vagy pedig azért, mert a jelenlegi implementáció által még nem ismert vizsgálatokra támaszkodnak.
Jelenlegi ismereteink szerint a FreeBSD egyelőre csak két szkriptet támogat teljes mértékben, ezek a hotkernel és a procsystime. A szakasz további részében ezzel a kettővel fogunk részletesebben foglalkozni.
A hotkernel feladata segíteni beazonosítani azokat a függvényeket, amelyek a legtöbb időt veszik igénybe a rendszermagon belül. A szkript futtatásakor nagyjából a következőt csinálja:
# ./hotkernel Sampling... Hit Ctrl-C to end.
A folyamat Ctrl+C billentyűkombináció hatására állítható meg. A szkript futásának befejeződésekor különböző rendszermagbeli függvények és a hozzájuk tartozó idők jelennek meg, az utóbbi szerint növekvő sorrendben:
kernel`_thread_lock_flags 2 0.0% 0xc1097063 2 0.0% kernel`sched_userret 2 0.0% kernel`kern_select 2 0.0% kernel`generic_copyin 3 0.0% kernel`_mtx_assert 3 0.0% kernel`vm_fault 3 0.0% kernel`sopoll_generic 3 0.0% kernel`fixup_filename 4 0.0% kernel`_isitmyx 4 0.0% kernel`find_instance 4 0.0% kernel`_mtx_unlock_flags 5 0.0% kernel`syscall 5 0.0% kernel`DELAY 5 0.0% 0xc108a253 6 0.0% kernel`witness_lock 7 0.0% kernel`read_aux_data_no_wait 7 0.0% kernel`Xint0x80_syscall 7 0.0% kernel`witness_checkorder 7 0.0% kernel`sse2_pagezero 8 0.0% kernel`strncmp 9 0.0% kernel`spinlock_exit 10 0.0% kernel`_mtx_lock_flags 11 0.0% kernel`witness_unlock 15 0.0% kernel`sched_idletd 137 0.3% 0xc10981a5 42139 99.3%
Ez a szkript modulok esetén is alkalmazható.
Ezt a módját a -m
kapcsoló
megadásával aktiválhatjuk:
# ./hotkernel -m Sampling... Hit Ctrl-C to end. ^C MODULE COUNT PCNT 0xc107882e 1 0.0% 0xc10e6aa4 1 0.0% 0xc1076983 1 0.0% 0xc109708a 1 0.0% 0xc1075a5d 1 0.0% 0xc1077325 1 0.0% 0xc108a245 1 0.0% 0xc107730d 1 0.0% 0xc1097063 2 0.0% 0xc108a253 73 0.0% kernel 874 0.4% 0xc10981a5 213781 99.6%
A procsystime szkript egy adott azonosítóval vagy névvel rendelkező programhoz tudja megadni az általa kezdeményezett rendszerhívások által felhasznált időt. A most következő példában elindítjuk a /bin/csh egy újabb példányát. A procsystime elindul, majd megvárja, amíg kiadunk néhány parancsot a csh frissen indított másolatában. A teszt eredményei tehát a következők lesznek:
# ./procsystime -n csh Tracing... Hit Ctrl-C to end... ^C Elapsed Times for processes csh, SYSCALL TIME (ns) getpid 6131 sigreturn 8121 close 19127 fcntl 19959 dup 26955 setpgid 28070 stat 31899 setitimer 40938 wait4 62717 sigaction 67372 sigprocmask 119091 gettimeofday 183710 write 263242 execve 492547 ioctl 770073 vfork 3258923 sigsuspend 6985124 read 3988049784
Jól megfigyelhető, hogy (nanomásodpercekben
mérve) a legtöbb időt a
read()
, a legkevesebb időt pedig a
getpid()
rendszerhívás vette
igénybe.
A DTrace eszköztárában megtalálható számos szkript a DTrace saját programozási nyelvén íródott. Ezt a nyelvet nevezik a Sun implementációjában “a D nyelvnek”. Ennek ismertetésére itt most külön nem térünk ki, azonban a http://wikis.sun.com/display/DTrace/Documentation címen igen részletesen olvashatunk róla.
A FreeBSD az egyik legelterjedtebb operációs rendszer a legnagyobb hálózati teljesítményt nyújtó kiszolgálók körében. Az itt található fejezetek témái:
Soros kommunikáció
PPP és PPP Etherneten keresztül (PPPoE)
Elektronikus levelezés
Hálózati kiszolgálók futattása
Tűzfalak
Egyéb haladó hálózati témák
Ezek a fejezetek nem állnak egymással szoros kapcsolatban, csupán egy adott témáról adnak ismereteket. Ennélfogva nem kötelező ezeket sorrendben elolvasni, valamint egyáltalán nem is kell mindegyikőjüket átolvasni ahhoz, hogy a FreeBSD-t hálózati környezetben is használni tudjuk.
A UNIX mindig is támogatta a soros vonali kommunikációt. Tulajdonképpen az első UNIX-os gépek is soros vonalon kapták a felhasználóktól a bemenetet és ugyanígy küldték vissza a kimenetet. Az idők azóta már sokat változtak, hogy egy átlagos “terminál” mindössze egy 10 karakter per másodperc sebességű soros nyomtatóból és egy billentyűzetből állt. Ebben a fejezetben ismertetünk néhány olyan megoldást, amellyel a FreeBSD képes soros vonalon keresztül kommunikálni.
A fejezet elolvasása során megismerjük:
hogyan kapcsoljunk terminálokat a FreeBSD rendszerünkre;
hogyan tárcsázzunk modem segítségével távoli számítógépeket;
hogyan tegyük lehetővé gépünkre a bejelentkezést távoli felhasználók számára;
hogyan indítsuk a rendszerünket soros konzolról.
A fejezet elolvasásához ajánlott:
Bit per másodperc — az adatátvitel sebessége
Adatterminál eszköz (Data Terminal Equipment) — ez például a számítógépünk
Adatkommunikációs eszköz (Data Communications Equipment) — ez a modem
a hardveres soros vonali kommunikációhoz szükséges EIA szabványú kábel
Amikor ebben a fejezetben az adatátvitel sebességéről beszélünk, akkor szándékosan nem használjuk a “baud” fogalmát. A baud ugyanis a kommunikációs eszközben adott idő alatt lezajló jelváltások mennyiségét jelöli, miközben itt a “bps” (bit per másodperc) kifejezés használata a helyes (vagy legalább is a szőrszálhasogatók egyelőre megnyugodhatnak).
Ha a FreeBSD rendszerünkhöz egy modemet vagy egy terminált akarunk csatlakoztatni, akkor ahhoz a számítógépünkben szükség lesz egy szabad soros portra és egy megfelelő típusú kábelre. Ha már tisztában vagyunk a rendelkezésre álló hardverrel és a hozzá tartozó kábellel, akkor nyugodtan átléphetjük ezt a részt.
A soros kábeleknek több különböző típusa van. Közülük a céljainknak leginkább megfelelő két legismertebb változatuk az ún. null-modem és a szabványos (“egyenes”) RS-232-es soros kábelek. A hardverhez tartozó dokumentációban megtaláljuk, hogy pontosan melyik típus tartozik hozzá.
Egy null-modem kábel bizonyos jeleket, többek közt a “földet” (Signal Ground, SG), egyenesen küldi, másokat viszont felcserélten. Például az “átküldött adat” (Transmitted Data, TD) jelzésű tű a kábel másik végén a “fogadott adat” (Received Data, RD) tűhöz fut be.
A terminálokhoz akár saját magunk is le tudunk gyártani egy null-modem kábelt (például ha a boltiakkal nem lennénk megelégedve). A következő táblázatban az RS-232C jeleit és érintkezőinek számozását láthatjuk egy DB-25-ös csatlakozó esetében. A szabvány a kábel két 1-es tűjét összekapcsoló vonalat védőföldnek (Protective Ground, PD) nevezi, de ezt gyakran el is hagyják. Némely terminál remekül működik mindössze a 2-es, 3-as és 7-es tűk használatával, miközben mások az iménti példától eltérő kiosztást igényelnek.
Táblázat 26-1. A DB-25 DB-25 közti null-modem kábel
Jel | Tű | Tű | Jel | |
---|---|---|---|---|
SG | 7 | párja: | 7 | SG |
TD | 2 | párja: | 3 | RD |
RD | 3 | párja: | 2 | TD |
RTS | 4 | párja: | 5 | CTS |
CTS | 5 | párja: | 4 | RTS |
DTR | 20 | párja: | 6 | DSR |
DTR | 20 | párja: | 8 | DCD |
DSR | 6 | párja: | 20 | DTR |
DCD | 8 | párja: | 20 | DTR |
Íme a mostanság elterjedt másik két séma.
Táblázat 26-2. A DB-9 DB-9 közti null-modem kábel
Jel | Tű | Tű | Jel | |
---|---|---|---|---|
RD | 2 | párja: | 3 | TD |
TD | 3 | párja: | 2 | RD |
DTR | 4 | párja: | 6 | DSR |
DTR | 4 | párja: | 1 | DCD |
SG | 5 | párja: | 5 | SG |
DSR | 6 | párja: | 4 | DTR |
DCD | 1 | párja: | 4 | DTR |
RTS | 7 | párja: | 8 | CTS |
CTS | 8 | párja: | 7 | RTS |
Táblázat 26-3. DB-9 DB-25 közti null-modem kábel
Jel | Tű | Tű | Jel | |
---|---|---|---|---|
RD | 2 | párja: | 2 | TD |
TD | 3 | párja: | 3 | RD |
DTR | 4 | párja: | 6 | DSR |
DTR | 4 | párja: | 8 | DCD |
SG | 5 | párja: | 7 | SG |
DSR | 6 | párja: | 20 | DTR |
DCD | 1 | párja: | 20 | DTR |
RTS | 7 | párja: | 5 | CTS |
CTS | 8 | párja: | 4 | RTS |
Megjegyzés: Amikor egy tű az átellenes oldalon két másik tűhöz csatlakozik, akkor azt általában úgy valósítják meg, hogy a két tűt a saját oldalukon összekötik, majd ezt kapcsolják hozzá a harmadik tűhöz.
Ezek a megoldások a legnépszerűbbek. Természetesen a tűk összekötésének több más variációja is létezik (ezekről az RS-232 Made Easy c. könyvben olvashatunk bővebben), ahol az SG párja az SG, a TD párja az RD, az RTS és a CTS párja az DCD, a DTR párja a DSR és ugyanezek fordítva.
A szabványos soros kábel az összes RS-232C jelet közvetlenül átküldi. Vagyis a kábel egyik végén levő “átküldött adat” tű a másik végén is az “átküldött adat” tűhöz csatlakozik. Az ilyen típusú kábeleket többnyire a számítógépek és a modemek között alkalmazzák, de egyes termináltípusok esetében is szükségünk lehet rá.
A soros port olyan eszköz, amelyen keresztül a FreeBSD-s gép és a terminál között adatokat tudunk közvetíteni. Ebben a szakaszban az ilyen portok különféle típusait és ezek használatát ismertetjük FreeBSD alatt.
A soros portoknak több típusa létezik. Mielőtt vásárolnánk egy készítenénk egy soros kábelt, mindenképpen győzödjünk meg róla, hogy csatlakoztatni tudjuk majd a FreeBSD-s rendszerünkhöz és a terminálhoz egyaránt.
A legtöbb terminálon DB-25-ös portot találunk. A személyi számítógépek, köztük azok, amelyeken FreeBSD fut, DB-25-ös és DB-9es portokkal rendelkeznek. Ha a gépünkben egy többportos soros kártya van, akkor ezeken kívül még RJ-12-es és RJ-45-ös portjaink is lehetnek.
A hardverhez tartozó dokumentációból tudjuk kideríteni az adott port konkrét fajtáját, de gyakran a port vizuális vizsgálata is segíthet eldönteni a kérdést.
FreeBSD alatt az egyes soros portokat a /dev könyvtárban található eszközleírókon keresztül tudjuk elérni. Ezeknek két típusa van:
A behíváshoz használt portok nevei /dev/ttydN alakúak, ahol az N a port sorszáma, ami nullától indul. A behívó portok alapvetően a terminál esetében használatosak. A behívó portok használatához a soros vonalon az “vonal észlelése” (Data Carrier Detect, DCD) jelnek kell megbízhatóan működnie.
A híváshoz használt portok nevei /dev/cuadN alakúak. A hívó portokat terminálok esetében ritkán alkalmazzák, helyettük inkább csak modemekhez használják. A hívó portokat akkor érdemes használni, ha a soros kábel vagy a terminál nem ismeri a DCD jelet.
Ha a terminált az első soros portra (ami MS-DOS-ban a COM1) csatlakoztattuk, akkor a /dev/ttyd0 segítségével fogunk rá hivatkozni. Ha viszont a második soros porton (más néven COM2) található, akkor a /dev/ttyd1 eszközt használjuk, és így tovább.
A FreeBSD alapból négy soros portot támogat. Az MS-DOS világban ezeket rendre COM1, COM2, COM3 és COM4 portoknak nevezik. A FreeBSD jelen pillanatban ismeri még a “butább” többportos soros csatolókártyákat is, például a BocaBoard 1008 és 2016 típusokat, valamint több intelligensebb többportos kártyát, például a Digiboard és a Stallion Technologies gyártmányait. Az alap rendszermag azonban csak a szabványos COM portokat keresi.
Ha ellenőrizni akarjuk, hogy a rendszermag rendben megtalálta a soros portokat, akkor figyelmesen olvassuk el a rendszerindítás során megjelenő üzeneteket, vagy az /sbin/dmesg parancs kiadásával kérdezzük vissza a rendszermag üzeneteit. Különösen a sio kezdetű sorokra kell figyelnünk.
Tipp: Az alábbi paranccsal tudjuk leszűrni a sio szövegrészt tartalmazó sorokat:
# /sbin/dmesg | grep 'sio'
Például, ha négy soros port található a rendszerünkben, akkor a rájuk vonatkozó rendszerüzenetek a következők lesznek:
sio0 at 0x3f8-0x3ff irq 4 on isa sio0: type 16550A sio1 at 0x2f8-0x2ff irq 3 on isa sio1: type 16550A sio2 at 0x3e8-0x3ef irq 5 on isa sio2: type 16550A sio3 at 0x2e8-0x2ef irq 9 on isa sio3: type 16550A
Ha a rendszermagunk nem ismerte volna fel az összes soros portot, akkor valószínűleg a /boot/device.hints állományt kell módosítanunk. Tegyük megjegyzésbe vagy akár teljesen távolítsuk is el azokat az eszközöket, amelyekkel nem rendelkezünk.
A soros portok és a többportos kártyák beállításával kapcsolatban a sio(4) man oldalát olvassuk el. Óvatosan bánjunk a FreeBSD megelőző változataiból származó konfigurációs állományokkal, mert az eszközök vonatkozó beállításokat és azok formátuma megváltozhatott azóta.
Megjegyzés: Az port IO_COM1 a port 0x3f8, az IO_COM2 a 0x2f8, az IO_COM3 a 0x3e8 és az IO_COM4 a 0x2e8 beállítást helyettesíti. Ezek az adott porthoz tartozó gyakori címeket képviselik. A 4-es, 3-as, 5-ös és 9 megszakítások is igen általánosak ezeknél. A hagyományos soros portok viszont az ISA buszos PC-k esetében nem képesek a megszakításokon osztozni. (A többportos kártyák azonban lehetővé teszik az 16550A számára, hogy mindössze egy vagy két megszakítást használjon.)
A rendszermagban található legtöbb eszköz az ún. “speciális eszközállományokon” keresztül érhető el, melyek a /dev könyvtárban találhatóak. A sio eszközök a /dev/ttydN (behívó portok) és /dev/cuadN (hívó portok) állományok használatával érhetőek el. A FreeBSD ezenkívül még külön eszközállományokat biztosít az inicializációhoz (/dev/cuadN.init) és a zároláshoz (/dev/cuadN.lock). Az inicializációs állományok a port megnyitásakor használhatóak a hozzá tartozó paraméterek beállítására, például így tudjuk elküldeni a crtscts utasítást az olyan modemeknek, amelyek a forgalom irányítását RTS/CTS jelzéseken keresztül valósítják meg. A zároló állományokkal a portokra vonatkozó zárolásokat állíthatjuk be, így a felhasználók vagy a programok nem lesznek képesek bizonyos paramétereket megváltoztatni. A termios(4), sio(4) és stty(1) man oldalakon olvashatunk részletesebben a terminálok beállításairól, valamint az eszközök zárolásáról és inicializálásáról.
A ttydN (vagy cuadN) lesz az az eszköz, amit majd az alkalmazásainkból el akarunk érni. Amikor egy futó program megnyit egy ilyen eszközt, mindig tartoznak hozzá alapértelmezett terminál I/O beállítások. Ezeket a következő paranccsal tudjuk lekérdezni:
# stty -a -f /dev/ttyd1
Ha megváltoztatjuk az eszköz
beállításait, akkor azok egészen
addig érvényben is maradnak, amíg le nem
zárjuk. Ha tehát ezután újra
megnyitjuk, akkor minden visszaáll az
alapértelmezett állapotra. Az
alapértelmezett beállítások
megváltoztatásához a “kezdeti
állapotot” szimbolizáló eszközt
kell megnyitnunk és átállítanunk.
Például, ha alapból engedélyezni
akarjuk a CLOCAL
módot, a 8 bites
kommunikációt és a
XON/XOFF
típusú
forgalomirányítást a
ttyd5 eszközön, akkor a
következőt gépeljük be:
# stty -f /dev/ttyd5.init clocal cs8 ixon ixoff
A soros eszközök rendszerszintű inicializálását az /etc/rc.d/serial állomány vezérli. Lényegében ez határozza meg az összes soros eszköz alapértelmezett beállítását.
Ha bizonyos beállítások megváltoztatását tiltani szeretnénk az alkalmazások felé, akkor azt a “zárolt állapotot” tartalmazó eszközben kell rögzítenünk. Például, ha a ttyd5 eszköz sebességét fixen 57600 bps-ra akarjuk beállítani, akkor írjuk be ezt:
# stty -f /dev/ttyd5.lock 57600
Ezután ha egy alkalmazás megnyitja a ttyd5 eszközt és megpróbálja a port sebességét átállítani, akkor az továbbra is 57600 bps marad.
A kezdeti és a zárolt állapotot képező eszközöket általában csak a root felhasználó számára szabad írhatóvá tenni.
A terminálok olyankor kínálnak kényelmes és költséghatékony hozzáférést a FreeBSD rendszerünkhöz, amikor sem a gép konzolját, sem pedig a hozzá tartozó hálózatot nem érjük el. Ebben a szakaszban olvashatjuk, miként kell terminálokat használni FreeBSD alatt.
Az eredeti UNIX rendszereknek nem voltak konzoljaik. Ehelyett az emberek a soros portokra csatlakoztatott terminálokon keresztül jelentkeztek be és így futtattak rajtuk programokat. Ez nagyon hasonlít ahhoz, mint amikor egy modem és egy terminálprogram felhasználásával betárcsázunk egy távoli gépre és vele szöveges módban dolgozunk.
Napjaink személyi számítógépein azonban találhatunk már akár nagy felbontású megjelenítéssel megáldott konzolokat is, habár a soros porton keresztüli bejelentkezés lehetősége még mind a mai napig elérhető a legtöbb UNIX-alapú rendszerben. Ez alól a FreeBSD sem kivétel. Ha rákötünk egy terminált a gépünk egyik üres soros portjára, akkor a megszokott módon képesek vagyunk bejelentkezni a rendszerbe és futtatni bármilyen szöveges programot, hasonlóan ahhoz, ahogy azt a konzolban vagy az X Window Systemben egy xterm ablakban megtehetjük.
Ha egy irodában vagyunk, akkor egy FreeBSD rendszerre több terminált is kapcsolhatunk, melyek az alkalmazottak asztalain foglalnak helyet. Otthoni használat esetén egy kiöregedett számítógép, például egy régi IBM PC vagy egy Macintosh is ráköthető egy gyorsabb FreeBSD rendszerre. Ennek segítségével az egyébként egyfelhasználós számítógépünket egy valódi többfelhasználós rendszerré alakíthatjuk.
A FreeBSD esetén háromféle terminálról beszélhetünk:
A most következő alszakaszokban ezeket fejtjük ki részletesebben.
A buta terminál alatt olyan speciálizált eszközt értünk, amellyel soros vonalon keresztül csatlakozunk számítógépekhez. Azért nevezik ezeket “butának”, mert csupán annyi számítási teljesítményt zsúfoltak beléjük, hogy szöveget legyenek képesek küldeni, fogadni és megjeleníteni. Semmilyen program nem képes rajtuk futni. Helyette az a számítógép fogja a szövegszerkesztőt, fordítóprogramot, levelező klienst, játékot és a többit futtatni, amelyre vele kapcsolódtunk.
A buta termináloknak többszáz, különböző gyártmányú fajtája létezik. Ilyenek például a Digital Equipment VT-100 vagy a Wyse WY-75 típusú termináljai. A FreeBSD szinte mindegyiküket ismeri. Egyes drágább terminálok még grafikus megjelenítésre is képesek, de ezeket a lehetőségeket csak bizonyos szoftverek tudják ténylegesen kihasználni.
A buta terminálok leginkább olyan munkahelyeken terjedtek el, ahol az alkalmazottaknak nincs szükségük grafikus alkalmazások, tehát például az X Window System használatára.
Ha egy buta terminál csupán szöveg küldésére, fogadására és megjelenítésére képes, akkor bármelyik személyi számítógép utána tudja mindezt csinálni. Ehhez mindössze egy megfelelő kábelre és az adott gépen futó terminál emulációs szoftverre van szükségünk.
Az ilyen fajta megoldás nagyon elterjedt az otthoni használat esetén. Például, ha valamelyik családtagunk éppen szorgalmasan dolgozik a FreeBSD rendszerkonzolján, akkor a rákapcsolt terminálon keresztül még mi magunk is el tudunk végezni valamennyi szöveges felületet igénylő munkát.
Az alap FreeBSD rendszerben legalább két segédprogram használható a soros vonali kapcsolaton keresztüli munkára: a cu(1) és a tip(1).
Egy FreeBSD rendszerű kliensről így tudunk csatlakozni egy másik rendszerre:
# cu -l soros-vonali-eszköz
Ahol a “soros-vonali-eszköz” a rendszerünkben a soros portot jelölő speciális eszköz neve. Az ilyen eszközök neve /dev/cuadN.
Az eszköz nevében az “N”-es rész a soros port sorszámát adja meg.
Megjegyzés: A FreeBSD-ben az eszközök sorszámozása nullától kezdődik, nem pedig egytől (ellentétben tehát azzal, ahogy azt az MS-DOS rendszerekben és leszármazottaikban már megszokhattuk). Ez azt jelenti, hogy amit az MS-DOS alapú rendszerekben COM1-nek hívnak, az a FreeBSD-ben általában a /dev/cuad0.
Megjegyzés: Egyes emberek más, többnyire a Portgyűjteményből is elérhető programokat szeretnek inkább használni. A portok között találhatunk elég sok olyan szoftvert, amely a cu(1) és a tip(1) programokhoz hasonlóan működik. Ilyen például a comms/minicom.
Az X terminálok a terminálok közül a legfejlettebbek. Általában nem is soros porton, hanem hálózaton, például Etherneten keresztül csatlakoznak. Természetesen nem csak szöveges alkalmazásokat, hanem lényegében bármilyen X alkalmazást képesek megjeleníteni.
Az X terminálokról itt most csak a teljesség kedvéért szólunk, de ebben a fejezetben nem szándékozunk tárgyalni az X terminálok csatlakoztatását, beállítását és használatát.
Ebben a fejezetben ismertetjük mindazt, ami ahhoz kell, hogy a FreeBSD rendszerünkön engedélyezni tudjuk a terminálon keresztüli bejelentkezéseket. Feltételezzük, hogy a rendszermagunk támogatja a terminálok által használt soros portokat, illetve, hogy ezeket már csatlakoztattuk is.
Ha visszagondolunk a 12 fejezetre, akkor eszünkbe juthat, hogy a rendszer indításakor az init nevű program felelős az összes futó program irányításáért és inicializálódásáért. Az init egyik feladata, hogy beolvassa az /etc/ttys állományt és neki megfelelően az elérhető terminálokon elindítsa a getty programot. A getty felelős a bejelentkezéshez szükséges azonosító beolvasásáért és a login program elindításáért.
Ennek megfelelően tehát, ha a FreeBSD rendszerünkön terminálokat akarunk beállítani, akkor ehhez a következő lépéseket kell megtennünk root felhasználóként:
Az /etc/ttys állományba vegyünk fel egy bejegyzést a soros porthoz tartozó /dev könyvtárbeli eszközhöz, ha még nem szerepelne benne.
A porthoz adjuk meg a /usr/libexec/getty programot, majd hozzá az /etc/gettytab állományból válasszuk ki a megfelelő getty típust.
Adjuk meg a terminál alapértelmezett típusát.
Állítsuk a portot “on” (bekapcsolt) állapotúra.
Adjuk meg, hogy a port “secure” (biztonságos) legyen-e.
Mondjuk meg az init programnak, hogy olvassa újra az /etc/ttys állományt.
A másik lépés kiegészítő lépéseként az /etc/gettytab állományban mi magunk is létrehozhatunk egy saját getty típust. A fejezetben ehhez ugyan nem adunk segítséget, de ha érdekel minket a téma, akkor ezzel kapcsolatban a gettytab(5) és getty(8) man oldalakat érdemes elolvasni.
Az /etc/ttys állományban találhatjuk meg az összes portot, ahonnan a FreeBSD rendszerünk engedélyezi a bejelentkezést. Például a ttyv0, az első virtuális konzol is szerepel benne. Ezen a bejegyzésen keresztül tudunk bejelentkezni a konzolra. Ebben az állományban találjuk meg még a többi virtuális konzol, soros port és pszeudoterminál bejegyzéseit is. A rögzített terminálok esetén egyszerűen csak adjuk meg a soros porthoz tartozó /dev könyvtárbeli eszközt a /dev előtag nélkül (így például a /dev/ttyv0 ttyv0 néven fog megjelenni).
Az alap FreeBSD telepítésben egy olyan /etc/ttys állomány található, amely tartalmazza az első négy soros portot, a ttyd0 eszköztől kezdve a ttyd3 eszközig. Ha tehát ezekre a portokra csatlakoztatnunk egy terminált, akkor már nem kell egy újabb bejegyzést felvennünk hozzájuk.
Példa 26-1. Terminálok felvétele az /etc/ttys állományba
Tegyük fel, hogy két eszközt szeretnénk a rendszerünkhöz csatlakoztatni: egy Wyse-50-es terminált és egy régi 286-os IBM PC-t, amelyen a Procomm terminálszoftverrel emulálunk egy VT-100-as terminált. A Wyse terminált a második soros portunkra kötjük, míg a 286-ost a hatodik soros portra (például egy többportos soros vonali kártyán). A nekik megfelelő /etc/ttys állománybeli bejegyzések így fognak kinézni:
ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure
A getty program egy (opcionális) paramétert fogad el a parancssorában, ami a getty típusa. Egy ilyen getty típus szabja meg a terminálhoz tartozó vonal jellemzőit, például az adatátviteli sebességet és a paritást. A getty ezeket a jellemzőket az /etc/gettytab állományból olvassa be.
A /etc/gettytab egyaránt tartalmaz bejegyzéseket a régi és új típusú terminálokhoz. Az std szöveggel kezdődő bejegyzések szinte majdnem minden esetben működnek a hardveres terminálokkal. Az ilyen bejegyzések figyelmen kívül hagyják a paritást. 110 és 115 200 bps között minden adatátviteli sebességhez tartozik egy-egy std bejegyzés. Természetesen ebbe az állományba akár a saját bejegyzéseinket is elkészíthetjük. A gettytab(5) man oldal nyújt ehhez átfogó segítséget.
Amikor az/etc/ttys állományban megadjuk a getty típusát, akkor ellenőrizzük, hogy a beállításai megfelelnek a terminálénak.
A példánknál maradva: a Wyse-50 nem használ paritást és 38 400 bps-en üzemel. A 286-os gép szintén nem dolgozik paritással és 19200 bps-sel kapcsolódik.
A példánkban a Wyse-50 egy valós termináltípust használ, miközben a 286-oson futó Procomm egy VT-100-as típusú terminált emulál.
Leginkább az insecure beállítást javasoljuk, még hét lakat alatt őrzött terminálok esetében is. Valójában sokkal egyszerűbb bejelentkezni, majd kiadni egy su parancsot, ha netalán rendszeradminisztrátori jogosultságokra lenne szükségünk.
Miután az /etc/ttys állományban elvégeztük a megfelelő módosításokat, a konfigurációs állomány újraolvasásához küldjünk egy SIGHUP (bontás) jelzést az init programnak. Mint például:
# kill -HUP 1
Megjegyzés: Mivel mindig az init indul el elsőként a rendszerben, ezért a hozzá tartozó azonosító az 1 lesz.
Ha mindent jól állítottunk be, a kábelek is a helyükön vannak és a terminálokat is bekapcsoltuk, akkor minden terminálhoz elindul egy getty program, és mindegyikőjükön megjelenik a bejelentkező képernyő.
Olykor hiába igyekszünk a lehető legaprólékosabban ügyelni minden apró részletre, könnyen előfordulhat, hogy valamiért a terminál mégsem működik rendesen. Következzen most egy lista néhány ismert tünetről és azok javasolt gyógymódjairól.
Ellenőrizzük, hogy a terminált rendesen csatlakoztattuk és áram alá helyeztük. Amikor egy személyi számítógépet használunk terminálnak, akkor nézzük meg, hogy a terminál emulációs program a megfelelő soros porton fut.
Vizsgáljuk meg, hogy a kábel mind a két vége pontosan illeszkedik a portokba. Győződjünk meg róla, hogy valóban a megfelelő típusú kábelt használjuk.
Nézzük meg, hogy a terminál és a FreeBSD is ugyanazon az adatátviteli sebességen és paritási beállítással megy. Ha képernyővel rendelkező terminálunk van, akkor a kontrasztot és fényerősséget is ellenőrizzük. Ha nyomtatós terminálunk van, akkor vizsgáljuk meg a papír és a tinta állapotát.
Győződjünk meg róla, hogy a getty valóban fut és rendesen kiszolgálja a terminált. Például a ps paranccsal listázzuk ki az összes jelenleg futó programot és keressük meg köztük a getty programot:
# ps -axww|grep getty
Ekkor látnunk kell a terminálhoz tartozó bejegyzést. Például, ha a getty második soros portot jelképező ttyd1 eszközön fut, és az /etc/gettytab állományból az std.38400 nevű bejegyzést használja, akkor ez jelenik meg:
22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1
Amennyiben semmilyen getty nem fut, akkor ellenőrizzük, hogy valóban engedélyeztük-e a portot az /etc/ttys állományban. A ttys állomány átírása után ne felejtsük el kiadni a kill -HUP 1 parancsot sem.
Ha a getty fut, de a terminálon továbbra sem látjuk a bejelentkező képernyőt, vagy megjelenik, de nem tudunk gépelni, akkor előfordulhat, hogy a terminál vagy kábel nem támogatja a hardveres kézfogást (handshaking). Próbáljuk meg az /etc/ttys állományban levő std.38400 bejegyzést az 3wire.38400 bejegyzésre kicserélni (de utána ne felejtsük el kiadni a kill -HUP 1 parancsot). A 3wire nagyon hasonlít az std bejegyzéshez, de elhagyja a hardveres kézfogást. A 3wire alkalmazásakor viszont a puffer telítődésének megelőzése érdekében próbálkozzunk az adatátviteli sebesség csökkentésével vagy engedélyezzük a szoftveres forgalomirányítást.
Ellenőrizzük, hogy a FreeBSD és a terminál ugyanazt az adatátviteli sebességet és paritási beállítást használja. Nézzük meg a futó getty programokat, és hogy a megfelelő getty típussal mennek-e. Ha nem, módosítsuk az /etc/ttys állományt és adjuk ki a kill -HUP 1 parancsot.
Állítsuk át a terminált (vagy a terminál emulációs szofvert) “half duplex” vagy “local echo” módról “full duplex” módra.
Amikor egy FreeBSD rendszert akarunk betárcsázós szolgáltatásokhoz beállítani, akkor az nagyon hasonlít a terminálok csatlakoztatásához, azzal a eltéréssel, hogy ilyenkor a terminálok helyett modemekkel kell dolgoznunk.
A külső modemek sokkal kényelmesebbnek tűnnek betárcsázás szempontjából, mivel az ilyenek gyakran a statikus memóriájukban tárolt paraméterek révén tulajdonképpen félig előre be vannak állítva és sok esetben a fontosabb RS-232 jeleket külön lámpácskákkal mutatják. A villogó lámpák könnyen elkápráztatják a laikusokat, de emellett igen fontosak a modem működőképességének megállapításában is.
Ezzel szemben a belső modemeken nem található statikus memória, ezért a paramétereik csak DIP kapcsolókkal módosíthatóak. Még ha egy belső modemem látunk is lámpákat, akkor sem könnyű figyelni rájuk, mert a gépünk burkolata úgyis eltakarja ezeket.
Ha külső modemet használunk, akkor mindenképpen szükségünk lesz hozzá még egy megfelelő kábelre is. Egy szabványos RS-232-es soros kábel erre tökéletesen megfelel egészen addig, amíg a normál jeleket így kötötték be rajta:
Táblázat 26-4. A jelek neve
Rövidítés | Elnevezés |
---|---|
RD | Received Data (fogadott adat) |
TD | Transmitted Data (küldött adat) |
DTR | Data Terminal Ready (adatterminál kész) |
DSR | Data Set Ready (adatbeállítás kész) |
DCD | Data Carrier Detect (vonal észlése — az RS-232 fogadást érzékelő vonala) |
SG | Signal Ground (föld) |
RTS | Request to Send (küldés kérése) |
CTS | Clear to Send (küldés engedélyezése) |
A FreeBSD-nek 2400 bps felett a forgalom irányításához az RTS és CTS jelekre van szüksége. A CD jellel állapítja meg, hogy a hívás létrejött vagy a bontották a vonalat, és a DTR jel hozza alapállapotba a modemet a munkamenet befejezése után. Egyes kábelekben nem mindegyik jelet vezették át, így ha például gondjaink akadnak a bejelentkező képernyővel amikor a vonalat bontjuk, akkor érdemes átnéznünk a kábelt.
A többi UNIX-szerű operációs rendszerhez hasonlóan a FreeBSD is hardveres jelek segítségével igyekszik kideríteni, hogy a hívás megvalósult vagy bontották a vonalat, valamint a hívás befejezése után így bontja a vonalat és állítja vissza a modemet. A FreeBSD igyekszik elkerülni a parancsok küldését a modem felé, vagy a modem állapotának folyamatos ellenőrzését. Ha már van némi tapasztalatunk a PC-alapú BBS-ek modemes elérését illetően, akkor valószínűleg értjük ezek okait.
A FreeBSD ismeri az NS8250-, NS16450-, NS16550- és NS16550A alapú EIA RS-232C (CCITT V.24) szabványú kommunikációs felületeket. A 8250-es és a 16450-es eszközök egykarakteres pufferrel rendelkeznek. A 16550-es eszközök 16 karakteres puffert tartalmaznak, amellyel jobb teljesítmény érhető el. (A sima 16550-esben levő hibák miatt azonban ez a 16 karakteres puffer nem használható ki rendesen, ezért lehetőleg a 16550A verziót használjuk). Mivel az operációs rendszer részéről az egykarakteres eszközök jóval több törődést igényelnek, mint a 16 karakteres eszközök, ezért inkább a 16550A alapú soros felületi kártyákat ajánljuk. Amikor a rendszer egyszerre több soros portot is kezel, vagy erős terhelés alatt áll, akkor a 16550A alapú kártyákról általában az is elmondható, hogy kisebb hibával dolgoznak.
Ahogy arról már a terminálok esetében szó esett, az init az összes betárcsázós kapcsolathoz tartozó soros porthoz elindít egy getty programot. Például, ha a modemet a /dev/ttyd0 eszközre kapcsoltuk, akkor a ps ax parancs kimenetében ezt láthatjuk:
4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0
Amikor egy felhasználó felhívja a modemet és az kapcsolódik, akkor a modem egy CD (Carrier Detect) jelet küld. A rendszermag ekkor tudomásul veszi a vonal észlelését és a getty segítségével megindítja a kommunikációt. A getty egy login: szöveget küld át a vonalhoz megadott sebességgel. A getty elkezdi figyelni, hogy a értelmes karakterek érkeznek-e vissza, és egy átlagos konfigurációban, ha ezt szemétnek találja (mert például a modem nem a getty számára beállított sebességgel csatlakozott), akkor megpróbálja egészen addig hangolni a vonal sebességét, amíg feldolgozásra alkalmas karaktereket nem kap.
Miután a felhasználó megadta a felhasználói nevét, a getty elindítja a /usr/bin/login programot, amely befejezi a beléptetést a felhasználó jelszavának bekérésével és annak elfogadása esetén a hozzá tartozó parancsértelmező elindításával.
FreeBSD rendszerünkben a betárcsázós kapcsolatok engedélyezéséhez az /etc könyvtárban három állomány módosítására lesz szükségünk. Közülük az első, az /etc/gettytab a /usr/libexec/getty démon beállításait tartalmazza. A második, az /etc/ttys az /sbin/init számára mondja meg, hogy melyik tty eszközökhöz tartozik getty. Végezetül a portok inicializálásához kötődő beállításokat az /etc/rc.d/serial szkriptben kell megadnunk.
Két “iskola” jött létre aszerint, hogy UNIX alatt hogyan használják a betárcsázós modemeket. Az egyik csoport úgy szereti beállítani a modemeit és rendszerit, hogy a távoli felhasználó által választott sebességtől függetlenül a számítógép és a modem közti RS-232 felület egy fix sebességen fut. Ennek a beállításnak megvan az az előnye, hogy a távoli felhasználó ilyenkor szinte azonnal megkapja a bejelentkező képernyőt. A hátránya viszont, hogy ebben az esetben a rendszer nem ismeri a felhasználó valódi adatátviteli sebességét, ezért az olyan teljes képernyős alkalmazások, mint például az Emacs, nem lesznek képesek a lassabb kapcsolatokhoz szabni a megjelenítésüket.
A másik csoport a modemek RS-232-es felületét a távoli felhasználó kapcsolódási sebessége szerint állítja be. Így például egy V.32bis (14,4 Kbps) kapcsolat esetén a modemhez tartozó RS-232 felület 19,2 Kbps-on fog menni, miközben a 2400 bps sebességű kapcsolatokhoz egy vele azonos sebességű RS-232-es felület fog tartozni. Mivel a getty nem képes kommunikálni a modemek által lejelentett csatlakozási sebességen, ezért úgy próbálja azt megállapítani, hogy elküldi a login: szöveget az alap sebességgel, majd figyeli a válaszul érkező karaktereket. Ha a felhasználó ilyenkor szemetet lát, akkor feltételezik, hogy addig fogja nyomkodni az Enter billentyűt, amíg valami értelmes szöveget meg nem lát. Amikor az adatátviteli sebesség eltér, akkor a getty ebből csupán csak annyit vesz észre, hogy a felhasználó “szemetet” küld, ezért egy újabb sebességgel megpróbálja megint elküldeni a login: szöveget. Hivatalosan ez a folyamat ismétlődik orrvérzésig, de általában csak egy-két billentyűt kell leütni a megfelelő beállításokhoz. Nyilvánvaló, hogy ilyenkor a bejelentkezés messze nem olyan zavartalan, mint a “rögzített sebességű” esetben, de így a lassabb kapcsolattal rendelkező felhasználók is jobb használatóságot kapnak a teljes képernyős programokkal.
Ebben a szakaszban egy valamennyire kiegyensúlyozott beállítást igyekszünk bemutatni, de részben elfogunk hajlani abban az irányba, amikor a modem a kapcsolat sebességét követi.
A /etc/gettytab egy termcap(5)-szerű állomány, amely a getty(8) beállításait tartalmazza. A gettytab(5) man oldalon olvashatunk az állomány pontos felépítéséről és benne felsorolt beállításokról.
Ha a modem kommunikációs sebességét rögzíteni akarjuk, akkor ehhez többnyire semmit sem kell megváltoztatnunk az /etc/gettytab állományban.
Az /etc/gettytab állományban létre kell hoznunk egy olyan bejegyzést, amelyen keresztül a getty tudni fogja, hogy milyen sebességeken akarjuk használni a modemet. Ha egy 2400 bps sebességű modemünk van, akkor hozzá a már meglevő D2400-as bejegyzést kell használnunk.
# # A gyors betárcsázós terminálokhoz íme egy 2400/1200/300-as váltás # (bárhonnan kezdődhet): # D2400|d2400|Fast-Dial-2400:\ :nx=D1200:tc=2400-baud: 3|D1200|Fast-Dial-1200:\ :nx=D300:tc=1200-baud: 5|D300|Fast-Dial-300:\ :nx=D2400:tc=300-baud:
Ha ennél gyorsabb modemünk van, akkor már mindenképpen fel kell vennünk hozzá egy új bejegyzést az /etc/gettytab állományba. Ezzel a beállítással egy 14,4 Kbps sebességű modemet tudunk legfeljebb 19,2 Kbps-en használni:
# # Kiegészítések egy V.32bis modemhez: # um|V300|High Speed Modem at 300,8-bit:\ :nx=V19200:tc=std.300: un|V1200|High Speed Modem at 1200,8-bit:\ :nx=V300:tc=std.1200: uo|V2400|High Speed Modem at 2400,8-bit:\ :nx=V1200:tc=std.2400: up|V9600|High Speed Modem at 9600,8-bit:\ :nx=V2400:tc=std.9600: uq|V19200|High Speed Modem at 19200,8-bit:\ :nx=V9600:tc=std.19200:
Ennek eredménye egy 8 bites, paritásmentes kapcsolat lesz.
A fenti példában a kommunikációt 19,2 Kbps-en (V.32bis kapcsolaton) kezdjük, majd utána haladunk végig a 9600 bps (V.32), 2400 , 1200 bps és 300 bps sebességű kapcsolatokon, majd vissza ismét a 19,2 Kbps-re. Az adatátviteli sebesség ilyen típusú váltogatását az nx= (“next table”, azaz “következő táblázat”) tulajdonság segítségével valósítják meg. Minden sorban látható még egy tc= (“table continuation”, vagyis “a táblázat folytatása”) bejegyzés is, amivel az adott adatátviteli sebesség “szabványos” beállításait adjuk meg.
Ha egy 28,8 Kbps sebességű modemünk van és/vagy egy 14,4 Kbps sebességű modemen akarunk tömörítést használni, akkor a 19,2 Kbps-nél nagyobb kommunikációs sebességet kell használnunk. Íme egy olyan gettytab. ami 57,6 Kbps-ről indít:
# # A V.32bis vagy V.34 modemekhez kiegészítés, # 57,6 Kbps-ről indulunk: # vm|VH300|Very High Speed Modem at 300,8-bit:\ :nx=VH57600:tc=std.300: vn|VH1200|Very High Speed Modem at 1200,8-bit:\ :nx=VH300:tc=std.1200: vo|VH2400|Very High Speed Modem at 2400,8-bit:\ :nx=VH1200:tc=std.2400: vp|VH9600|Very High Speed Modem at 9600,8-bit:\ :nx=VH2400:tc=std.9600: vq|VH57600|Very High Speed Modem at 57600,8-bit:\ :nx=VH9600:tc=std.57600:
Ha lassú a processzorunk, vagy a rendszerünk túlságosan terhelt és nincs 16550A típusú soros portunk, akkor 57,6 Kbps-en “sio” “silo” hibák keletkezhetnek.
Az /etc/ttys állomány beállításáról már a 26-1 Példa adott képet. Ez a modemek esetében sem tér el különösebben, habár a getty programnak más termináltípust és -beállításokat kell átadnunk. Akár rögzített, akár alkalmazkodó sebességet akarunk beállítani, ennek általános alakja az alábbi:
ttyd0 "/usr/libexec/getty xxx" dialup on
A sorban látható első elem a megfelelő speciális eszköz neve — jelen esetben ez a ttyd0, amely a /dev/ttyd0 eszközre vonatkozik és ezt fogja a getty figyelni. A második elem, vagyis a "/usr/libexec/getty xxx" (ahol a xxx helyére kell beírni a megfelelő gettytab állománybeli bejegyzést nevét) lesz az a parancs, amelyet az init meghív. A harmadik elem, a dialup a terminálok alapértelmezett típusa. A negyedik paraméter, az on jelzi az init programnak, hogy aktiválja a vonalat. A sorban megjelenhetne továbbá még egy ötödik paraméter is, a secure, de ezt csak olyan terminálok esetében érdemes megadni, amelyek fizikailag megbízhatóak (például a rendszerkonzol).
Az alapértelmezett termináltípus (vagyis a fenti példában a dialup) a helyi beállításoktól függ. A betárcsázós vonalak esetében hagyományosan a dialup a terminál alapértelmezett típusa, amit aztán a felhasználók a bejelentkezéskor lefutó szkriptjeiken keresztül a automatikusan át tudnak állítani a nekik megfelelő terminálra. A szerző saját rendszerében azonban inkább a vt102 termináltípust volt érdemes megadni alapértelmezettként, mivel ott a felhasználók csak ilyen típusú terminálokat használnak.
Miután az /etc/ttys állományban elvégeztük a szükséges módosításokat, egy HUP jelzéssel figyelmeztessük az init programot az újbóli beolvasására. Ehhez a következő parancs ajánlott:
# kill -HUP 1
Ha még csak állítjuk be először a rendszerünket, akkor az init figyelmeztetése előtt legyünk türelmesek, és várjuk meg, amíg a modemek befejezik az inicializálást és kapcsolódnak a vonalakra.
A rögzített sebesség beállításánál a ttys állományban a getty paramétereként egy szintén rögzített sebességű bejegyzést kell megadnunk. Például az olyan modemeknél, ahol a sebességet 19,2 Kbps-re rögzítjük, a ttys így fog kinézni:
ttyd0 "/usr/libexec/getty std.19200" dialup on
Amennyiben a modemünk nem ezen a sebességen üzemelne, akkor az std.sebesség paramétert használjuk az std.19200 helyett. Előtte azonban ne felejtsük el ellenőrizni, hogy a megadott típus szerepel-e az /etc/gettytab állományban.
Az alkalmazkodó sebességű beállításnál a ttys állományban az /etc/gettytab állományból a megfelelő “auto-baud” (sic) kell megadnunk. Például, ha modemünk kezdősebessége 19,2 Kbps (és a gettytab ehhez tartalmaz egy V19200 nevű bejegyzést), akkor a ttys így fog kinézni:
ttyd0 "/usr/libexec/getty V19200" dialup on
A gyorsabb, mint például a V.32, V.32bis és V.34 modemeknél meg kell adnunk a hardveres forgalomirányítás (RTS/CTS) használatát is. Az /etc/rc.d/serial állományban tudjuk megadni a FreeBSD rendszermagban a vonal használatához szükséges vezérlési beállításokra vonatkozó stty parancsokat.
Például állítsuk be az 1-es
sorszámú (vagyis a
COM2) soros porton a
crtscts
termios
beállítást a behíváshoz
és a híváshoz használt
eszközök inicializálásakor. Ehhez a
következő sorokat kell felvennünk az
/etc/rc.d/serial
állományba:
# A soros portok kezdeti beállításai: stty -f /dev/ttyd1.init crtscts stty -f /dev/cuad1.init crtscts
Ha olyan modemeink vannak, amelyek paramétereit egy statikus memóriában tárolták le, akkor ezek beállításához egy terminálprogramot kell használnunk (amilyen például MS-DOS alatt a Telix vagy FreeBSD alatt a tip). A modemet a getty programnak megadott kezdeti sebességen csatlakoztassuk és az alábbi elvárások alapján állítsuk be a paramétereit:
Kapcsolódáskor CD jelzése.
Működéskor DTR jelzése. A DTR küldésekor bontsa a vonalat és hozza alapállapotba a modemet.
CTS vezérlésű kimenő adatforgalom.
A XON/XOFF forgalomvezérlés tiltása.
RTS vezérlésű bejövő adatforgalom.
Csendes mód (ne adjon értesítést az eredményekről).
A parancsokat ne írja vissza.
A modemhez tartozó dokumentációban kell utánajárnunk, hogy milyen parancsok és/vagy DIP kapcsolók átállításával lehet mindezeket elérni.
Például, ha a fenti paramétereket egy U.S. Robotics® Sportster® 14400-as külső modem esetében a következő neki kiküldött paranccsal lehet beállítani:
ATZ AT&C1&D2&H1&I0&R2&W
Ilyenkor még akár más egyéb paramétereket is beállíthatunk, például a V.42bis és/vagy az MNP5 tömörítést.
Az U.S. Robotics Sportster 14400 külső modemen ezenkívül még találunk néhány DIP kapcsolót is. Az ilyen modemek esetében például ezeket a beállításokat tudjuk használni:
1. kapcsoló: FEL — normális DTR
2. kapcsoló: N/A (verbális/numerikus eredményjelző kódok)
3. kapcsoló: FEL — az eredményjelző kódok küldésének tiltása
4. kapcsoló: LE — nem küldi vissza a parancsokat
5. kapcsoló: FEL — automatikus válasz
6. kapcsoló: FEL — normális Carrier Detect
7. kapcsoló: FEL — a memóriában tárolt alapértelmezések betöltése
8. kapcsoló: N/A (intelligens/buta mód)
A modemeknél az eredményjelző kódok kikapcsolása/letiltása ezért fontos, mert így el tudunk kerülni az olyan problémákat, hogy a getty tévesen egy login: promptot küld a parancs módban levő modemnek, amikor az visszaküldi a parancsot és az eredmény kódját. Ennek eredménye egy hosszúra nyúló, zavaros társalgás lesz a getty és a modem között.
A rögzített sebességű konfiguráció használata esetén úgy kell beállítanunk a modemet, hogy a konkrét adatátviteli sebsségtől függetlenül is egy állandó sebességű kapcsolat álljon fenn a számítógép és a modem között. A U.S. Robotics Sportster 14400-as külső modem esetében a most következő parancsokkal tudjuk rögzíteni a kapcsolat sebességét:
ATZ AT&B1&W
Amikor változó sebességű konfigurációval dolgozunk, akkor a modemet úgy kell beállítani, hogy a bejövő hívásnak megfelelő adatátviteli sebességre váltson a soros portján. A U.S. Robotics Sportster 14400-as külső modem esetében az alábbi parancsokkal rögzítjük a modemnek küldött hibamentesített parancsok sebességét, miközben engedélyezzük, hogy a soros port sebessége változhasson a nem hibamentesített kapcsolatoknál:
ATZ AT&B2&W
A legtöbb nagysebességű modem biztosít valamilyen lehetőséget arra, hogy emberi formában is le tudjuk kérdezni a belső működésének paramétereit. A U.S. Robotics Sportster 14400-as külső modem esetében az ATI5 parancs a statikus memóriában tárolt beállításokat mutatja meg. A modem valós működési paramétereit (amit ugyebár befolyásolnak a DIP kapcsolók állásai is) viszont az ATZ majd ATI4 parancsok küldésével tudjuk lekérni.
Ha azonban másmilyen márkájú modemünk lenne, akkor a modem leírásában próbáljunk tájékozódni arról, miként tudjuk a modem beállításait ellenőrizni.
Ebben a szakaszban bemutatunk néhány lépést, amelyeken keresztül ellenőrizhetjük a rendszerünkhöz csatlakoztatott modemet.
Csatlakoztassuk a modemet a FreeBSD rendszerre, indítsuk be a gépet, majd ezután figyeljük a modemünk állapotát jelző lámpákat, hogy közülük a DTR világít-e, amikor a login: felirat megjelenik a rendszerkonzolon. Amennyiben erre a válasz igen, akkor az arra utal, hogy a FreeBSD a hozzá tartozó kommunikációs porton elindította a megfelelő getty programot és a modem várja a hívásokat.
Amikor viszont a DTR lámpa nem világít, a konzolon keresztül jelentkezzünk be a FreeBSD rendszerbe és adjuk ki egy ps ax parancsot, amivel így ellenőrizni tudjuk, hogy a porthoz tartozó getty elindult. A futó programok között tehát valami ilyesmit kell majd látnunk:
114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0 115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1
Ha viszont például ezt látjuk:
114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0
és modem még nem fogadott hívást, akkor ez azt jelenit, hogy a getty megnyitotta a kommunikációs csatornát. Ez utalhat egyaránt egy hibás kábelre vagy a modem helytelen beállítására, mivel a getty egészen addig nem lesz képes megnyitni az adott portot, amíg a modem vissza nem küld neki egy CD (Carrier Detect) jelet.
Ha a listában az adott ttydN eszközhöz semmilyen getty programot nem találunk, akkor újra nézzük át az /etc/ttys állományban szereplő bejegyzéseket, mert előfordulhat, hogy azokban vétettünk valamilyen hibát. Emellett még a /var/log/messages naplóban is érdemes utánanézni, hátha az init vagy a getty küldött valamilyen hibáról értesítést. Ha még ezek után sem találunk semmit, akkor megint kezdjük el keresni hibákat, hiányzó bejegyzéseket vagy eszközöket az /etc/ttys, /etc/gettytab és a megfelelő /dev/ttydN állományokban.
Próbáljunk meg bejutni a rendszerünkbe. Ehhez a távoli rendszeren ne felejtsük el beállítani a 8 bites adatátvitelt és az 1 stopbitet, illetve a paritást kikapcsolni. Ha erre közvetlenül nem kapunk egy bejelentkezési képernyőt vagy csak szemét jelenik meg, akkor kb. másodpercenként egyszer nyomjuk le az Enter billentyűt. Ha még ezután sem látjuk a bejelentkezési képernyőt felbukkani, akkor próbáljunk kiküldeni egy BREAK parancsot. Ha a híváshoz nagysebességű modemet használunk, akkor próbáljuk meg a modem sebességét rögzíteni és úgy tárcsázni (ezt például a U.S. Robotics Sportster modemnél az AT&B1 paranccsal tudjuk elérni):
Ha viszont még ezek után sem kapjuk meg a bejelentkező képernyőt, akkor a /etc/gettytab állományban megint nézzük át az összes beállítást:
Az /etc/ttys állományban megadott alaptulajdonság neve egyezik az /etc/gettytab állományban találhatóval.
Mindegyik nx= bejegyzés után egy másik gettytab tulajdonság neve jön.
Mindegyik tc= bejegyzés után egy másik gettytab tulajdonság neve következik.
Ha hívunk, de a FreeBSD rendszerünkre kapcsolt modem továbbra sem veszi fel, akkor a modem beállításai között ellenőrizzük, hogy a DTR jel küldésekor a modem fogadja-e a hívást. Ha úgy tűnik, hogy a modem minden ezzel kapcsolatos beállítása stimmel, akkor nézzük meg, hogy a modem lámpái közül a DTR világít-e (már ha van ilyen).
Ha mindent többször is végignéztünk és még mindig nem leljük a megoldást, akkor tartsunk egy kis szünetet és térjünk vissza a problémához később. Ha még ezután sem tudjuk működésre bírni, akkor küldjünk egy levelet a FreeBSD general questions levelezési lista címére, amelyben leírjuk a modemünket és a vele kapcsolatos problémát, és a lista tagjai majd megpróbálnak nekünk segíteni.
A következőkben arra vonatkozóan igyekszünk tanácsokat adni, amikor mi magunk akarunk modemmel csatlakozni valamilyen számítógéphez. Ezek tehát olyan esetekben hasznosak, amikor egy távoli géppel akarunk terminálkapcsolatot létesíteni.
A BBS-ek használatára is érvényes.
Ez ilyen típusú kapcsolatok kifejezetten hasznosak tudnak lenni olyan esetekben, amikor az interneten el akarunk érni egy állományt, de gondjaink akadtak a PPP használatával. Ha például egy állományt akarunk letölteni, de a PPP valamiért nem működik, akkor ezt a terminál alapú kapcsolaton keresztül is meg tudjuk tenni. Ilyenkor egy zmodem segítségével tudjuk áttölteni a számítógépünkre.
A tip man oldala valójában már nem is teljesen aktuális, ugyanis tartalmaz egy beépített Hayes-tárcsázót. Úgy tudjuk engedélyezni, ha az /etc/remote állományban megadjuk az at=hayes beállítást.
A Hayes-eszközök meghajtója nem elég ügyes ahhoz, hogy felismerje az újabb modemek által felkínált fejlettebb lehetőségeket — például a BUSY, NO DIALTONE vagy a CONNECT 115200 üzenetek csak megzavarják. Ezért a tip használata során kapcsoljuk ki ezeket az üzeneteket (az ATXO&W paranccsal).
Emellett még érdemes tudni, hogy a tip a híváskor 60 másodpercig vár. A modemünkön ennél kisebb időt kell beállítanunk, máskülönben a tip azt hiszi, hogy valamilyen kommunikációs probléma merült fel. Ehhez próbálkozzunk az ATS7=45&W paranccsal.
Az /etc/remote állományban hozzunk létre egy “direct” bejegyzést. Például, ha a modemünk az első soros porton, vagyis a /dev/cuad0 eszközön tanyázik, akkor a következő sort kell beleírnunk:
cuad0:dv=/dev/cuad0:br#19200:pa=none
A br tulajdonságnál a modem által ismert legnagyobb adatátviteli sebességet adjuk meg. Ezután gépeljük be a tip cuad0 parancsot és már kapcsolódunk is a modemhez.
Vagy root felhasználóként a cu parancsot is használhatjuk:
# cu -lvonal -ssebesség
Itt a vonal a soros port (például /dev/cuad0) és a sebesség annak sebessége (például 57600) lesz. Miután befejeztük az AT parancsok kiadását, az ~. begépelésével tudunk kilépni.
A pn (“phone number”) tulajdonság értékében szereplő @ jel segítségével az /etc/phones állományban tudunk hivatkozni egy telefonszámra. A @ a tulajdonságokat tároló állományok azonban, így például az /etc/remote állomány esetén is megkülönböztetett jelentéssel bírnak. Ezért itt csak egy visszaper jellel tudjuk beírni:
pn=\@
Tegyünk egy “általános” bejegyzést az /etc/remote állományunkba. Például egy ilyet:
tip115200|Dial any phone number at 115200 bps:\ :dv=/dev/cuad0:br#115200:at=hayes:pa=none:du: tip57600|Dial any phone number at 57600 bps:\ :dv=/dev/cuad0:br#57600:at=hayes:pa=none:du:
Ezután már ilyet is tudni fogunk:
# tip -115200 5551234
Ha viszont a tip helyett inkább a cu programot használnánk szívesen, akkor ehhez készítsünk egy általános bejegyzést:
cu115200|Use cu to dial any number at 115200bps:\ :dv=/dev/cuad1:br#57600:at=hayes:pa=none:du:
Majd gépeljük be ezt:
# cu 5551234 -s 115200
Hozzunk létre egy tip1200 vagy cu1200 nevű bejegyzést, de a br tulajdonságnál adjuk meg a használni kívánt sebességet. Mivel a tip szerint az 1200 bps egy megfelelő alapértelmezés, ezért alapból a tip1200 bejegyzést fogja keresni. Ez természetesen nem jelenti azt, hogy ilyen sebsséggel is akarunk dolgozni.
Ahelyett, hogy minden alkalommal megvárnánk a kapcsolódás befejezést és begépelnénk a CONNECT gép parancsot, használjuk a cm tulajdonságát. Például nézzük meg ilyen bejegyzést az /etc/remote állományban:
pain|pain.deep13.com|Forrester's machine:\ :cm=CONNECT pain\n:tc=deep13: muffin|muffin.deep13.com|Frank's machine:\ :cm=CONNECT muffin\n:tc=deep13: deep13:Gizmonics Institute terminal server:\ :dv=/dev/cuad2:br#38400:at=hayes:du:pa=none:pn=5551234:
Ennek hatására elég csak annyit megadnunk, hogy tip pain vagy tip muffin, és már kapcsolódunk is a pain vagy muffin gépekhez. A tip deep13 paranccsal pedig egyenesen a terminálszerverhez jutunk el.
Ez gyakran okoz gondot olyan esetekben, amikor egy egyetemnek több betárcsázó vonala van, és azokon keresztül többezer hallgató próbál meg dolgozni.
Vegyük fel az egyetemet az /etc/remote állományba és használjuk a pn tulajdonság megadásánál a @ jelet:
nagy-egyetem:\ :pn=\@:tc=dialout dialout:\ :dv=/dev/cuad3:br#9600:at=courier:du:pa=none:
Ezután adjuk hozzá az /etc/phones állományhoz az egyetem telefonszámait:
nagy-egyetem 5551111 nagy-egyetem 5551112 nagy-egyetem 5551113 nagy-egyetem 5551114
A tip mindegyik telefonszámot az adott sorrendben próbálja tárcsázni és végén feladja a próbálkozást. Ha folyamatosan akarjuk ezeket a számokat hívni, akkor tip parancsot tegyük egy ciklusba.
A Ctrl+P billentyűkombináció alapértelmezés szerint a “kikényszerítést” jelenti, amivel a tip programnak tudunk szólni, hogy a következő adat szó szerint értendő. A ~s szekvenciával bármelyik másik karakternek át tudjuk adni ezt a szerepet, ami egy változó beállítását jelenti (“set a variable”).
Gépeljük be, hogy ~sforce=egyetlen-karakter és zárjuk le egy újsorral. Az egyetlen-karakter helyére tetszőleges, egykarakteres szimbólumot megadhatunk. Ha itt nem adunk meg semmit, akkor a kikényszerítő karakter a nul lesz, amit a Ctrl+2 vagy a Ctrl+Szóköz lenyomásával tudunk előhozni. Az egyetlen-karakter szerepére például tökéletes a Shift+Ctrl+6, amit csak nagyon kevés terminálszerver alkalmaz.
A kikényszerítést végző karaktert az $HOME/.tiprc állományban tetszőleges karakterre át tudjuk állítani:
force=egyetlen-karakter
Valószínűleg sikerült lenyomnunk a Ctrl+A gombkombinációt, ami a tip “betűmód váltás” funkciójának felel meg. Ezt olyanok számára dolgozták ki, akiknél nem működik a Caps Lock billentyű. Az előbb bemutatott ~s használatával állítsuk át a raisechar változót valami másra. Tulajdonképpen akár ugyanarra is állíthatjuk, mint a kikényszerítő karaktert, ha nem áll szándékunkban használni.
Ebben a példában egy olyan .tiprc állomány szerepel, amely tökéletesen megfelel azon Emacs felhasználók számára, akik sokat használják a Ctrl+2 és Ctrl+A kombinációkat:
force=^^ raisechar=^^
A ^^ a Shift+Ctrl+6 billentyűkombinációt jelenti.
Amikor más UNIX rendszerekkel vesszük fel a kapcsolatot, akkor állományokat a ~p (mint put, vagyis adni) és ~t (mint take, vagyis venni) használatával tudunk mozgatni. Ezek a parancsok a távoli rendszeren a cat és az echo felhasználásával fogadnak és küldenek állományokat. Alakjuk a következő:
~p helyi-állomány [távoli-állomány]
~t távoli-állomány [helyi-állomány]
Ilyenkor nincs hibaellenőrzés, ezért inkább egy másik protokollt, például zmodemet érdemes használnunk.
Állományokat úgy tudunk fogadni, ha előtte a kapcsolat távolabbi végén elindítjuk a küldést végző programot. Ezután a ~C rz parancs kiadásával kezdhetjük meg helyben a fogadását.
Állományokat úgy tudunk küldeni, ha előtte a kapcsolat másik végén elindítjuk a fogadó programot. Ezután a ~C sz állományok parancs kiadásával tudjuk megkezdeni a küldést.
A FreeBSD képes úgy is elindulni, ha konzolként mindössze egy buta terminált kapcsolunk rá soros porton keresztül. Az ilyen típusú konfigurációs alapvetően két típus számára bizonyul hasznosnak: azon rendszergazdák számára, akik billentyűzettel és monitorral nem rendelkező gépekre akarnak FreeBSD-t telepíteni, és olyan fejlesztők számára, akik a rendszermag vagy különböző eszközmeghajtók működését akarják nyomon követni.
Ahogy arról már a 12 fejezetben is szó esett, a FreeBSD három indítási fokozattal rendelkezik. Az első két fokozat a rendszerindító blokk kódjában foglal helyet, amely pedig a lemezen található FreeBSD slice elején. A rendszer indulásakor ez a blokk betöltődik és lefuttatja a harmadik fokozatot képviselő rendszertöltőt (a /boot/loader állományt).
Ha soros vonali konzol beállításához tehát be kell állítanunk a rendszerindító blokkot, a rendszertöltőt és a rendszermagot.
Ebben a szakaszban azt feltételezzük, hogy az alap beállításokkal dolgozunk és csupán egy gyors áttekintésre van szükségünk a soros vonali konzolról.
Csatlakoztassunk egy soros kábelt a COM1 portra és a terminálra.
Rendszeradminisztrátorként a következő parancs kell kiadnunk ahhoz, hogy a soros konzolon láthassuk az összes rendszerindításhoz tartozó üzenetet:
# echo 'console="comconsole"' >> /boot/loader.conf
Nyissuk meg az /etc/ttys állományt, és a ttyd0 eszközhöz tartozó sorban írjuk át az off paramétert az on értékre és a dialup paramétert a vt100 értékre. Ha nem ezeket állítjuk be, akkor a soros konzol keresztül jelszó megadása nélkül is be tudunk jelentkezni, ami viszont egy biztonsági rés veszélyével fenyeget.
A változtatások érvényesítéséhez indítsuk újra a rendszerünket.
Ha ettől eltérő beállításokra lenne szükségünk, akkor a folyamat egyes lépéseibe a 26.6.3 Szakaszban kaphatunk mélyebb betekintést.
Készítsük elő a soros kábelt.
Vagy a null-modem kábelre vagy pedig egy szabványos soros kábelre és egy null-modem átalakítóra lesz szükségünk. A soros kábelekkel kapcsolatosan a 26.2.2 Szakaszt érdemes elolvasni.
Húzzuk ki a billentyűzetet.
A legtöbb személyi számítógép az indítása (vagyis a Power-On Self-Test, POST) során hibát jelez, ha nem érzékel billentyűzetet. Egyes gépek hangosan panaszolják a billentyűzet hiányát, és nem is hajlandóak egészen addig elindulni, amíg nem csatlakoztatunk egyet.
Ha a számítógépünk hibát küld, de ennek ellenére mégis elindul, akkor semmit nem kell csinálnunk. (Némelyik Phonix BIOS-os gépen ilyenkor megjelenik a “Keyboard failed” hibaüzenet, de ettől még rendesen elindul a gép.)
Amennyiben a számítógépünk nem hajlandó billentyűzet nélkül elindulni, állítsuk be a BIOS-ban a “hiba” figyelmen kívül hagyását (már ha ez lehetséges). Az alaplap leírásában találhatjuk meg ennek pontos részleit.
Tipp: A BIOS paraméterei között a billentyűzetet állítsuk “Not installed” állapotúra. Ilyenkor még továbbra is használható a billentyűzet, ezzel mindössze csak a BIOS számára tiltjuk le az indításkori ellenőrzést, ezért nem fog panaszkodni a hiánya miatt. Tehát a billentyűzetet még a “Not installed” beállítása esetén is nyugodtan csatlakoztatjuk, mert működni fog.
Megjegyzés: Ha a rendszerünkön PS/2®-es egér is található, akkor jó eséllyel a billentyűzettel együtt az egeret is ki tudjuk húzni. Mivel a PS/2-es egér osztozik a billentyűzettel bizonyos hardvereken, ezért ha nem húzzuk ki az egeret is, akkor az alaplap még továbbra is képes azt gondolni, hogy a billentyűzet ott van. Például az AMI BIOS-os Gateway 2000-as 90 MHz-es Pentium rendszer pontosan így működik. Általában véve azonban ez nem szokott gondot okozni, mivel az egér billentyűzet nélkül úgy sem ér túlságosan sokat.
Csatlakoztassunk egy buta terminált a COM1 (sio0) portra.
Ha nem rendelkezünk buta terminállal, akkor erre célra ugyanúgy alkalmas egy régi XT-s PC valamilyen modemprogrammal vagy egy soros porton csatlakozó másik UNIX-os gép. Ha nincs COM1 (sio0) portunk, akkor szerezzünk egyet. Jelen pillanatban a rendszerindító blokk újrafordítása nélkül a COM1 porton kívül nem tudunk másikat választani. Ha a COM1 portra már raktunk valamilyen másik eszközt, akkor azt ideiglenesen húzzuk le, majd a FreeBSD telepítése és elindítása után tegyünk fel egy másik rendszerindító blokkot. (Egyébként feltételezzük, hogy a COM1 elérhető egy állomány/számító/terminálszerveren — ha valóban valamilyen másik célra szükségünk lenne a COM1 portra (és semmiképpen sem tudjuk átrakni a COM2 (sio1) portra), akkor valószínűleg nem is ezzel kellene elsőként foglalkoznunk.)
Gondoskodjunk róla, hogy a rendszermag beállításait tartalmazó állományban a COM1 (sio0) eszközhöz megadtuk a megfelelő paramétereket.
Ezek az alábbiak:
A konzolos működési mód
engedélyezése az adott egységhez.
Ha megadjuk ezt a paramétert, akkor a
többit a rendszer figyelmen kívül
hagyja. Pillanatnyilag legfeljebb egy egység
birtokolhatja ezt a beállítást.
Ha több ilyet adtunk volna meg, akkor (a
felírás sorrendje szerint) az első
kap ilyen szerepet. Ez a
beállítás önmagában
még nem teszi a soros portot konzollá.
Ehhez még szükségünk van a
következő beállításra,
vagy a -h
megadására
is.
Az egység konzollá
nyilvánítása (hacsak nincs egy
tőle nagyobb prioritású konzol),
függetlenül a lentebb ismertetendő
-h
opciótól. A
0x20 értéket a
0x10
értékkel
együtt kell megadni.
(A 0x10 értékkel együtt) az egységet kivonja a normális elérés alól. Ezt a beállítást ne használjuk, ha soros vonali konzolt akarunk üzemeltetni az adott porton. Ezzel az egységet csak a rendszermag távoli nyomkövetéséhez tudjuk használni. A távoli nyomkövetésről a fejlesztők kézikönyvében olvastunk bővebben.
Példa:
device sio0 at isa? port IO_COM1 flags 0x10 irq 4
A további részletekről a sio(4) man oldal tud felvilágosítást nyújtani.
Ha nem állítottuk be a megfelelő paramétereket, akkor (egy másik konzolon) futtassuk a UserConfig programot vagy fordítsuk újra a rendszermagot.
Hozzunk létre egy boot.config állományt a rendszer indításához használt meghajtó a partíciójának gyökerében.
Ez az állomány mondja meg a rendszerindító blokkban található kódnak, hogy miként akarjuk indítani a rendszerünket. A soros vonali konzol életrekeltéséhez a most következő opciók közül kell megadnunk egyet vagy többet — amennyiben többet akarunk megadni, akkor mindegyiket egyetlen sorban szerepeltessük:
-h
A belső és a soros vonali konzolok
közti átkapcsolás. Ezzel tudunk a
konzolos eszközök között
váltani. Például, ha egy
belső (video) konzolról indítjuk a
rendszert, akkor a rendszertöltőnek
és a rendszermagnak átadott
-h
paraméterrel arra tudjuk
ezeket utasítani, hogy konzolként a
soros portot használják. Vagy ha soros
porton keresztül indítjuk a rendszert,
akkor -h
megadásával
megkérhetjük a rendszertöltőt
és a rendszermagot, hogy ezután
már a videokártyát
használja konzolként.
-D
Az egy- és kétkonzolos
beállítások közti
váltás. Az egykonzolos
konfigurációban a konzol lehet
belső (video) vagy soros vonali, attól
függően, hogy miként
használtuk a fenti -h
opciót. A kétkonzolos
konfigurációban azonban a
videokártyán és a soros vonalon
keresztül is egyszerre megjelenik a konzol,
függetlenül a -h
hatásától. Ilyenkor viszont
vegyük figyelembe, hogy ez a kétkonzolos
konfiguráció csak a
rendszerindító blokk futása alatt
él. Amint a rendszerindító
megkapja a vezérlést, a
-h
által megadott konzol
válik az egyedülivé.
-P
A rendszerindító blokk
megpróbálja megkeresni a
billentyűzetet. Ha nem találja, akkor
magától beállítja a
-D
és -h
opciókat.
Megjegyzés: Tárbeli korlátozások miatt a rendszerindító blokk jelenlegi változata a
-P
paraméterrel csak a kiterjesztett billentyűzeteket képes kezelni. A 101 gombnál kevesebbel (tehát F11 és F12 gombokkal nem) rendelkező billentyűzeteket ezért nem feltétlenül fogja észlelni. Ugyanezen korlátozás miatt egyes laptopokon sem minden esetben sikerül érzékelni a billentyűzetet. Ha ez a rendszerünkön problémához vezetne, akkor egyszerűbb lesz elhagyni a-P
használatát. Sajnos, jelenleg semmilyen megoldás nincs erre.
Vagy a -P
opcióval
állítassuk be automatikusan a konzolt, vagy
pedig a -h
opcióval
engedélyezzük a soros vonali konzolt.
Természetesen itt a boot(8) man oldalon szereplő összes többi paramétert is megadhatjuk.
A -P
kivételével az
összes opció a rendszertöltőnek
(/boot/loader) kerül
átadásra. A rendszertöltő
egyedül a -h
állapotából dönti el, hogy mely
belső videoeszközön vagy soros porton legyen
a konzol. Ez azt jelenti, hogy a
/boot.config állományban
ha megadjuk a -D
opciót, de mellette
nem szerepel a -h
, akkor a soros vonali
konzolt csak a rendszerindító blokk
futása alatt tudjuk elérni — a
rendszertöltő ugyanis alapból a
videokártyát használja
konzolként.
Kapcsoljuk be a számítógépünket.
Amikor elindítjuk a FreeBSD-s gépünket, a rendszerindító blokk kiírja a /boot.config tartalmát a konzolra. Például így:
/boot.config: -P Keyboard: no
A második sor csak olyankor jelenik meg, ha a
/boot.config állományban
a -P
beállítás is
szerepel, és a billentyűzet
jelenlétét (yes) vagy hiányát
(no) jelzi. A /boot.config
tartalmától függően ezek az
üzenetek vagy a soros vonali vagy a belső konzolon
jelennek meg, esetleg mind a kettőn.
Beállítás | Ahol megjelenik |
---|---|
nincs | belső konzol |
-h | soros vonali konzol |
-D | soros vonali és belső konzol |
-Dh | soros vonali és belső konzol |
-P , van
billentyűzet | belső konzol |
-P , nincs
billentyűzet | soros vonali konzol |
Az iménti üzenetek felbukkanása után a további konzolos üzenetek küldésében egy rövid szünet következik, amíg a rendszerindító blokk a rendszertöltő betöltésével folytatja a rendszer indítását. Normális körülmények között ezt a folyamatot nem kell megszakítanunk, de esetleg olyankor mégis érdemes lehet, ha le akarjuk ellenőrizni a beállításainkat.
A rendszerindítási folyamat félbeszakításához az Enter billentyűn kívül nyomjuk le valamelyik másikat. Ekkor a rendszerindító blokk megáll és várja a további parancsokat. Ekkor valami ilyesmit láthatunk:
>> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader boot:
Nézzük meg, hogy /boot.config beállításainak megfelelően a fenti üzenet a soros vonali konzolon vagy a belső konzolon, illetve mind a kettőn megjelenik-e. Ha az üzenet a megfelelő konzolon megjelenik, akkor az Enter lenyomásával folytathatjuk a rendszer indítását.
Ha nekünk a soros vonali konzolra lenne
szükségünk, de semmi nem jelenik meg a
soros terminálon, akkor valamit
valószínűleg nem jól
állítottunk be. A
rendszerindító blokktól kapott
parancssorban a -h
begépelésével és az
Enter vagy Return
lenyomásával (ha lehetséges)
jelezzük neki (és így a
rendszertöltőnek és a rendszermagnak is) a
soros vonali konzol kiválasztását.
Miután befejeződött a rendszer
indítása, menjünk vissza és
ellenőrizzük a megfelelő
paramétereket.
Ahogy sikerült elindítani a rendszertöltőt és a rendszerindítás harmadik fokozatába léptünk, a rendszertöltő megfelelő környezeti változóin keresztül még mindig van lehetőségünk váltani a soros vonali és a belső konzol között, lásd 26.6.6 Szakasz.
Itt most röviden összefoglaljuk az eddig tárgyalt különböző beállításokat és ténylegesen kiválasztott konzolt.
device sio0 at isa? port IO_COM1 flags 0x10 irq 4
A /boot.config beállításai | Konzol a rendszerindító blokk alatt | Konzol a rendszertöltő alatt | Konzol a rendszermagban |
---|---|---|---|
nincsenek | belső | belső | belső |
-h | soros vonali | soros vonali | soros vonali |
-D | soros vonali és belső | belső | belső |
-Dh | soros vonali és belső | soros vonali | soros vonali |
-P , van
billentyűzet | belső | belső | belső |
-P , nincs
billentyűzet | soros vonali és belső | soros vonali | soros vonali |
device sio0 at isa? port IO_COM1 flags 0x30 irq 4
A /boot.config beállításai | Konzol a rendszerindító blokk alatt | Konzol a rendszertöltő alatt | Konzol a rendszermagban |
---|---|---|---|
nincsenek | belső | belső | soros vonali |
-h | soros vonali | soros vonali | soros vonali |
-D | soros vonali és belső | belső | soros vonali |
-Dh | soros vonali és belső | soros vonali | soros vonali |
-P , van
billentyűzet | belső | belső | soros vonali |
-P , nincs
billentyűzet | soros vonali és belső | soros vonali | soros vonali |
A soros port alapértelmezései a következők: 9600 baud, 8 bites átvitel, paritás nincs és 1 stopbit. Ha a konzol alapsebességét meg akarjuk változtatni, akkor ahhoz a következőket kell tennünk:
Fordítsuk újra a rendszerindító blokkokat úgy, hogy a BOOT_COMCONSOLE_SPEED változóban a konzolnak egy másik sebességet adunk meg. Az új rendszerindító blokkok fordításáról és telepítéséről a 26.6.5.2 Szakaszban kapunk részletes leírást.
Ha a soros vonali konzolt nem a -h
opcióval állítottuk be, vagy ha a
rendszermag a rendszerindító
blokkoktól eltérő módon
éri el a soros vonali konzolt, akkor a rendszermag
beállításai közé
még az alábbit is fel kell vennünk,
majd újra kell fordítanunk:
options CONSPEED=19200
A rendszermagnak adjuk át a -S
rendszerindítási paramétert. A
-S
parancssori opció a
/boot.config
állományban is megadható. A
boot(8) man oldalon tudhatjuk meg, hogy a
/boot.config
beállításai közé hogyan
tudjuk felvenni és ott milyen további
lehetőségeink vannak még.
A /boot/loader.conf
állományban engedélyezzük a
comconsole_speed
beállítást.
Ez a beállítás a szintén a
/boot/loader.conf
állományban megadható
console
, boot_serial
és boot_multicons
változóktól függ. A soros
vonali konzol sebességét tehát
például így tudjuk
megváltoztatni a
comconsole_speed
megadásával:
boot_multicons="YES" boot_serial="YES" comconsole_speed="115200" console="comconsole,vidconsole"
Ha valamilyen okból kifolyólag nem a sio0 porton keresztül akarjuk használni a konzolt, akkor ahhoz a rendszerindító blokkok, a rendszertöltő és a rendszermag forrásait újra kell fordítanunk az alábbiak szerint:
Szerezzük be a rendszermag forrását. (Lásd 24 fejezet)
Írjuk át a /etc/make.conf állományban a BOOT_COMCONSOLE_PORT címét az általunk használt porthoz tartozóéra (0x3F8, 0x2F8, 0x3E8 vagy 0x2E8). Itt csak a sio0 és sio3 (COM1 és COM4) közti portok használhatóak — a töbportos soros kártyák címei nem adhatóak meg. A megszakításokat nem kell beállítanunk.
Készítsünk egy saját rendszermag beállításait tartalmazó állományt, és vegyük fel bele a használni kívánt soros port megfelelő paramétereit. Például, ha a sio1 (COM2) eszközt akarjuk konzolként használni:
device sio1 at isa? port IO_COM2 flags 0x10 irq 3
vagy
device sio1 at isa? port IO_COM2 flags 0x30 irq 3
A konzolra vonatkozó beállításokat a többi soros portnál ne adjuk meg.
Fordítsuk újra és telepítsük a rendszerindító blokkot és a rendszertöltőt:
# cd /sys/boot # make clean # make # make install
Fordítsuk és telepítsük újra a rendszermagot.
A bsdlabel(8) segítségével másoljuk az új rendszerindító blokkot a rendszer indítását végző lemezre és töltsük be az új rendszermagot.
Ha a soros vonali konzolról akarjuk használni a rendszermagba épített nyomkövetőt (ami hasznos lehet távoli vizsgálódáskor, de egyben veszélyes is, ha a soros porton tévesen kiküldünk egy BREAK jelzést!), akkor a rendszermagot a következő beállításokkal kell fordítanunk:
options BREAK_TO_DEBUGGER options DDB
Habár erre nincs feltétlenül szükségünk, a rendszer üzeneteinek és a rendszermag nyomkövetőjének elérése után akár be is tudunk jelentkezni a soros vonalon keresztül. Íme!
Nyissuk meg az /etc/ttys állományt a kedvenc szövegszerkesztőnkkel és keressük meg a következő sorokat:
ttyd0 "/usr/libexec/getty std.9600" unknown off secure ttyd1 "/usr/libexec/getty std.9600" unknown off secure ttyd2 "/usr/libexec/getty std.9600" unknown off secure ttyd3 "/usr/libexec/getty std.9600" unknown off secure
A ttyd0 és ttyd3 közti sorok pontosan a COM1 és COM4 közti portoknak felelnek meg. A használni kívánt port sorában szereplő off paramétert írjuk át az on értékre. Ha a soros port sebességét is megváltoztattuk, minden bizonnyal a std.9600 helyett is az adott sebességhez illeszkedő paramétert kell megadnunk, például az std.19200 értékkel.
Érdemes továbbá még az unknown helyett megadni az adott terminál típusát.
Az állomány módosítását követően a változatások érvényesítéséhez ki kell adnunk a kill -HUP 1 parancsot is.
A korábbi szakaszokban arról beszéltünk, hogy miként állítsuk be a soros vonali konzolt a rendszerindító blokk megpiszkálásával. Ebben a szakaszban viszont azt mutatjuk meg, hogy különböző parancsokon és környezeti változókon keresztül miként tudjuk megadni a konzolt a rendszertöltőben. Mivel a rendszertöltőre a rendszerindítás harmadik fokozatában kerül sor, az ott megadott értékekkel felül tudjuk bírálni a rendszerindító blokk beállításait.
A rendszertöltő és a rendszermag az /boot/loader.conf állományon keresztül elég könnyen rávehető a soros vonali konzol használatára:
set console="comconsole"
Ez a rendszerindító blokk előző szakaszban tárgyalt beállításaitól függetlenül érvényesül.
A fenti sort a /boot/loader.conf állomány elejére érdemes tennünk, így a soros vonali konzolon már a lehető leghamarabb megjelennek a rendszer üzenetei.
Ehhez hasonló módon a belső konzolt is megadhatjuk:
set console="vidconsole"
Ha a rendszertöltőben nem adjuk meg a
console környezeti változó
értékét, akkor a rendszertöltő,
és így a rendszermag is, a
rendszerindító blokkban a -h
opció által meghatározott konzolt fogja
használni.
A konzol a /boot/loader.conf.local vagy a /boot/loader.conf állományokban adható meg.
A részletekkel kapcsolatban lásd a loader.conf(5) man oldalt.
Megjegyzés: Jelen pillanatban a rendszertöltőnek nincs a
-P
paraméterrel ekvivalens értékű beállítása, ezért a billentyűzet jelenléte alapján nem képes magától választani a belső és a soros vonali konzol között.
A rendszertöltőt ne a sio0 eszközzel fordítsuk újra a soros vonali konzolhoz. Ehhez kövessük a 26.6.5.2 Szakaszban leírt eljárás lépéseit.
A szakaszban szereplő ötletek alapján sokan így most már könnyen be tudnak állítani egy billentyűzet és grafikus hardver nélküli dedikált szervert. Sajnos azonban a legtöbb rendszer nem engedi a billentyűzet nélküli indítást, és akad néhány olyan is, amely pedig a grafikus kártya hiányában nem is indul el. Az AMI BIOS-os gépeknél a grafikus kártya nélküli indításhoz elegendő csupán a beállítások között a grafikus kártyát (“graphics adapter”) “Not installed” (nem telepített) állapotúra állítani. Ha ilyen opció nem található a BIOS-ban, akkor helyette keressük a “Halt on Error” (leállás hiba esetén) változatot. Ha ezt a “All but Keyboard” (a billentyűzet kivételével minden) vagy akár a “No Error” (soha) értékre állítjuk, az előbbi eredményt kapjuk.
Ennek ellenére előfordulhat azonban, hogy egyes gépeken egyáltalán nem találunk ilyen lehetőséget és videokártya nélkül nem indulnak el. Ezekben az esetekben tegyünk a gépbe valamilyen kártyát (ehhez elég egy egyszerű típus is), de monitort már ne kössünk rá. Esetleg megpróbálkozhatunk még AMI BIOS telepítésével is.
A FreeBSD számos módon képes összekötni két számítógépet. Ha betárcsázós modemmel akarunk hálózati vagy internetes kapcsolatot felépíteni, esetleg azt szeretnénk, hogy mások képesek legyenek minket ilyen módon elérni, akkor ahhoz PPP-t, illetve SLIP-et kell használnunk. Ebben a fejezetben a modemes kommunikáció beállításait mutatjuk be részletesebben.
A fejezet elolvasása során megismerjük:
hogyan állítsunk be felhasználói PPP-t;
hogyan állítsunk be rendszerszintű PPP-t (csak FreeBSD 7.X);
hogyan állítsunk be egy PPPoE (PPP over Ethernet, vagyis “PPP Ethernet felett”) kapcsolatot;
hogyan állítsunk be egy PPPoA (PPP over ATM, vagyis “PPP ATM felett”) kapcsolatot;
hogyan állítsunk be SLIP klienst és szervert (csak FreeBSD 7.X).
A fejezet elolvasásához ajánlott:
az alapvető hálózati technológiák ismerete;
a betárcsázós kapcsolatok, a PPP és/vagy SLIP alapjainak és céljainak megértése.
Talán érdekli a kedves olvasót, hogy mi az alapvető különbség a felhasználói és a rendszerszintű PPP között. A válasz egyszerű: a felhasználói PPP a beérkező és kimenő adatokat nem a rendszermagban, hanem a felhasználói szinten dolgozza fel. Ez költséges abból a szempontból, hogy emiatt adatokat kell másolgatni a rendszer és a felhasználói szint között, azonban egy sokkal többet tudó PPP implementációnak ad ezzel utat. A felhasználói PPP a tun eszközön keresztül kommunikál a külvilággal, miközben a rendszermagban található PPP mindezt a ppp eszközzel valósítja meg.
Megjegyzés: A fejezetben a felhasználói PPP-t egyszerűen csak ppp néven fogjuk hivatkozni, hacsak nem lesz szükséges különbséget tennünk közte és más PPP szoftverek, mint például a pppd között. Ha mást nem mondunk, akkor a fejezetben ismertetett összes parancsot root felhasználóként kell kiadni.
Figyelem: A FreeBSD 8.0 változatától kezdődően a soros portokhoz tartozó eszközök nevei /dev/cuadN helyett /dev/cuauN, illetve /dev/ttydN helyett /dev/ttyuN lettek. A FreeBSD 7.X felhasználóknak ezeknek a változásoknak megfelelően kell olvasniuk az itt szereplő dokumentációt.
A leírás feltételezi, hogy rendelkezünk a következőkkel:
Olyan internet-előfizetés, ahol PPP-n keresztül csatlakozunk
Egy modem vagy más olyan rendszerünkhöz csatlakozó eszköz, amelyen keresztül el tudjuk érni az internet-szolgáltatónkat
Az internet-előfizetés betárcsázásához szükséges telefonszámok
A bejelentkezési nevünk és jelszavunk. (Vagy a megszokott UNIX-os felhasználói név és jelszó páros, vagy egy PAP esetleg CHAP bejelentkezési név és jelszó.)
Egy vagy több névszerver IP-címe. Ehhez az internet-szolgáltatók általában két IP-címet adnak meg. Ha egyet sem kaptunk, akkor a ppp.conf állományban erre a célra használhatjuk az enable dns parancsot, és ekkor a ppp majd automatikusan be fogja állítani nekünk a névszervereket. Ezt a lehetőséget az befolyásolja, hogy az internet-szolgáltató oldalán működő PPP implementáció támogatja-e a névfeloldás egyeztetését (DNS negotiation).
A következő információkat is megkaphatjuk az internet-előfizetésünkhöz, de nem feltétlenül szükségesek:
Az internet-szolgáltató átjárójának IP-címe. Az átjáró az a gép, amelyen keresztül a gépünk csatlakozik és számára ez lesz az alapértelmezett átjáró. Ha nem rendelkezünk ezzel az információval, akkor csak állítsunk be valamit, és majd a csatlakozáskor a szolgáltató PPP szervere felülírja a megfelelő beállításokkal.
Erre a címre a ppp HISADDR néven hivatkozik.
A használandó hálózati maszk. Amennyiben a szolgáltató ezt nem adta meg, nyugodtan használjuk erre a 255.255.255.255 értéket.
Ha a szolgáltatónk statikus IP-címet és rögzített hálózati nevet is biztosít nekünk, ezt is megadhatjuk. Minden más esetben egyszerűen csak hagyjuk, hogy a rendszer automatikusan válasszon nekünk egyet.
Ha a szükséges információknak nem vagyunk birtokában, akkor vegyük fel a kapcsolatot az internet-szolgáltatókkal.
Megjegyzés: Ebben a szakaszban a példákban szereplő konfigurációs állományok sorait számozva láthatjuk. Ezek a sorszámok a bemutatás és a tárgyalás megkönnyítése érdekében szerepelnek, és nem az eredeti állományok részei. Mindezek mellett a tabulátorok és szóközök megfelelő használata is fontos.
A ppp és a pppd (a PPP rendszerszintű megvalósítása) egyaránt az /etc/ppp könyvtárban található konfigurációs állományokat használja. A felhasználói PPP-hez ezenkívül még a /usr/share/examples/ppp/ könyvtárban vannak példák.
A ppp parancs beállítása az igényeinktől függően számos állomány módosítását igényelheti. A tartalmukat nagyban befolyásolja, hogy a szolgáltatónk részéről a címeket kiosztása statikus (vagyis egy adott címet kapunk és folyamatosan azt használjuk) esetleg dinamikus (vagyis az IP-címünk minden egyes kapcsolódáskor más és más).
Ebben az esetben az /etc/ppp/ppp.conf konfigurációs állományt kell átszerkesztenünk. Tartalma az alábbi példához hasonlítható.
Megjegyzés: A : karakterrel végződő sorok mindig az első oszlopban kezdődnek (tehát a sor elején), míg az összes többi sort tabulátorok vagy szóközök használatával bentebb kell raknunk.
1 default: 2 set log Phase Chat LCP IPCP CCP tun command 3 ident user-ppp VERSION (built COMPILATIONDATE) 4 set device /dev/cuau0 5 set speed 115200 6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \ 7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT" 8 set timeout 180 9 enable dns 10 11 szolgaltato: 12 set phone "(123) 456 7890" 13 set authname ize 14 set authkey mize 15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp" 16 set timeout 300 17 set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0 18 add default HISADDR
Ez azonosítja be az alapértelmezett bejegyzést. Az itt szereplő parancsok a ppp minden egyes futásakor magukból végrehajtódnak.
Beállítja a naplózás paramétereit. Amikor a beállításaink már kifogástalanul működnek, akkor ezt a sort érdemes átírni a következőre:
set log phase tun
Ezzel jelentős mértékben vissza tudjuk fogni a naplózás mértékét.
Ezzel mondjuk meg a PPP-nek, hogy a többiek felé miként azonosítsa magát. A PPP akkor azonosítja magát a társak felé, ha valamilyen gondja akad az egyeztetésekkel és a kapcsolat beállításával. Az így továbbított információk a másik oldal rendszergazdái számára nyújthatnak segítséget az ilyen jellegű problémák felderítésében.
Itt adjuk meg az eszközt, amelyre a modem csatlakozik. A COM1 neve /dev/cuau0, a COM2 neve pedig /dev/cuau1.
A csatlakozás sebességét adjuk meg. Ha a 115 200-as érték itt nem működne (ez egyébként minden újabb gyártmányú modem esetében elfogadható), akkor helyette használjuk a 38400-as beállítást.
A híváshoz használt karakterlánc. A felhasználói PPP a chat(8) programhoz hasonló “küldök-várok” típusú szerkesztést alkalmaz. A kihasználható lehetőségekről a man oldalán olvashatunk részletesebben.
Az olvashatóság kedvéért a parancs a következő sorban folytatódik. A ppp.conf állományban bármelyik parancs, ahol a \ karakterrel zárjuk a sort, az ugyanígy folytatható a következőben.
A kapcsolathoz tartozó üresjárati időt állítja be. Ennek értéke alapból 180 másodperc, így ez a sor pusztán csak az érthetőséget szolgálja.
Arra utasítja a PPP-t, hogy a többiektől kérdezze le a helyi névfeloldó beállításait. Ha saját névszervert futtatunk, akkor ezt a sort tegyük inkább megjegyzésbe vagy töröljük ki.
Ez az üres sor az átláthatóság kedvéért került bele. A PPP az összes üres sort figyelmen kívül hagyja.
Itt kezdődik a “szolgaltato”
nevű szolgáltatóhoz tartozó
bejegyzés. Ezt később akár
ki is cserélhetjük az
internet-szolgáltatónk nevére,
így a load
szolgáltató
beállítással tudjuk majd
beindítani a kapcsolatot.
Beállítjuk a szolgáltatóhoz tartozó telefonszámot. A kettőspont (:) vagy a csővezeték (|) karakterekkel elválasztva több telefonszámot is meg tudunk adni. A ppp(8) oldalon olvashatunk a két elválasztó közti különbségekről. Röviden ezeket úgy foglalhatnánk össze, hogy ha váltogatni akarunk a számok között, akkor használjuk a kettőspontot. Ha mindig az elsőként megadott számot akarjuk hívni és a többit csak akkor, ha ez nem működik, akkor a csővezeték karakterre lesz szükségünk. Ahogy a példa is mutatja, az összes telefonszámot tegyük mindig idézőjelek közé.
Ha a telefonszámban egyébként is szerepelnek szóközök, akkor is idézőjelek (") közé kell tennünk. Ennek elhagyásával egy egyszerű, ámde kényes hibát ejtünk.
A felhasználói nevet és jelszót tartalmazza. Amikor egy UNIX fajtájú bejelentkezést kapunk, akkor ezekre az értékekre a set login parancsban \U és \P változókkal tudunk hivatkozni. Ha PAP vagy CHAP használatával jelentkezünk be, akkor ezek az értékek a hitelesítéskor kerülnek felhasználásra.
Ha a PAP vagy CHAP protokollok valamelyikét használjuk, akkor nem lesz szükségünk a login változóra, ezért ezt megjegyzésbe is tehetjük, vagy akár ki is törölhetjük. A PAP és CHAP hitelesítésről szóló részben olvashatjuk ennek további részleteit.
A bejelentkezéshez használt karakterlánc hasonlít a behíváshoz használt, chat-szerű felépítéssel rendelkező karakterlánchoz. A példában látható karakterlánc egy olyan szolgáltatáshoz illeszkedik, ahol a bejelentkezés valahogy így néz ki:
A Világ Legjobb Szolgáltatója login: izé password: mizé protocol: ppp
Ezt a szkriptet alakítsuk a saját igényeinkhez. Ha először próbálkozunk ilyen szkript írásával, akkor lehetőleg kapcsoljuk be a rendszerek között lezajló “beszélgetés” naplózását, hogy ellenőrizni tudjuk minden a megfelelően módon történik-e.
Beállítjuk a kapcsolathoz
tartozó alapértelmezett
időkorlátot (másodpercben). Itt a
kapcsolat automatikusan lezárul
300 másodperc tétlenséget
követően. Ha nem akarunk ilyen
korlátot szabni, akkor ezt az
értéket állítsuk
nullára vagy használjuk a
-ddial
paranccsori
kapcsolót.
A felülethez tartozó címeket
állítja be. A
x.x.x.x helyére a
szolgáltató által kiosztott
IP-címet kell beírnunk. A
y.y.y.y helyett pedig a
szolgáltató
átjárója kerül be
(lényegében az a gép, amelyhez
csatlakozunk). Amennyiben az
internet-szolgáltatónk nem adott meg
semmilyen átjárót, erre a
célra a 10.0.0.2/0 címet is
használhatjuk. Amikor “nekünk kell
kitalálnunk” ezeket a címeket,
akkor ne felejtsünk el létrehozni
hozzájuk egy bejegyzést az
/etc/ppp/ppp.linkup
állományban a PPP dinamikus
IP-címmel szakaszban szereplőek
szerint. Ha nem adjuk meg ezt a sort, akkor a
ppp parancs nem képes
-auto
módban
működni.
A szolgáltató átjárójához felvesz egy alapértelmezett útvonalat. A HISADDR kulcsszót a 17. sorban megadott átjáró címével helyettesítjük. Ezért fontos, hogy ez a 17. sor után szerepeljen, különben a HISADDR nem lesz képes inicializálódni.
Ha a ppp parancsot nem akarjuk
-auto
módban futtatni, akkor ezt
a sort a ppp.linkup
állományba is átrakhatjuk.
Ha statikus IP-címmel rendelkezünk és
a ppp -auto
módban fut, akkor a ppp.linkup
állományba egészen addig nem kell
semmit sem írnunk, amíg a csatlakozás
előtt az útválasztási
táblázatokban a megfelelő adatok
találhatóak. Olyankor is jól
jöhet, amikor a csatlakozást követően
meg akarunk hívni bizonyos programokat. Ezt majd a
sendmailes példában
fogjuk bővebben kifejteni.
Erre példákat a /usr/share/examples/ppp/ könyvtárban találhatunk.
Ha az internet-szolgáltatónktól nem kaptunk statikus IP-címet, akkor a ppp paranccsal is be tudjuk állítani a helyi és távoli címeket. Ez az IP-címek “kitalálásával” történik, valamint úgy, hogy a ppp számára a csatlakozás után lehetővé tesszük az IP konfigurációs protocol (IP Configuration Protocol, IPCP) használatát. A ppp.conf tartalma szinte teljesen megegyezik a PPP statikus IP-címmel részben szereplővel, egyetlen apró különbséggel:
17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255
Ismét szeretnénk elmondani, hogy a sorszámot ne írjuk bele, hiszen az csak hivatkozási céllal szerepel. Legalább egy szóközzel kezdjünk bentebb.
A / után megjelenő szám azoknak a biteknek a számát adja meg, amire a ppp támaszkodik. A környezetünknek jobban megfelelő IP-címeket is megadhatunk, de a fenti példa minden esetben működni fog.
Az utolsó paraméterrel
(0.0.0.0) azt mondjuk a PPP-nek,
hogy az egyeztetést ne a 10.0.0.1, hanem a 0.0.0.0 címmel kezdje
meg, amire egyes szolgáltatók
esetén szükségünk is lesz. A
set ifaddr első
paramétereként azonban soha ne adjuk meg
a 0.0.0.0 címet, mivel ezzel
a PPP -auto
módban nem tudja
beállítani a kezdeti
útvonalat.
Ha nem -auto
módban
indítjuk, akkor az
/etc/ppp/ppp.linkup
állományban meg kell adnunk még egy
bejegyzést is. A ppp.linkup
állományt a kapcsolat létrejötte
után dolgozzuk fel. Itt már a
ppp megkapta a felülethez
tartozó címeket, így az
útválasztási táblázatba
fel tudjuk venni hozzájuk a megfelelő
bejegyzéseket:
1 szolgaltato: 2 add default HISADDR
A kapcsolat felépítése során a ppp a ppp.linkup állományban a következő szabályok szerint fogja keresni a bejegyzéseket: először a ppp.conf állományban megadott címkét próbálja megtalálni. Ha ez nem sikerül, akkor az átjárónknak megfelelő bejegyzést kezdi el keresni. Ez egy négy byte-ból álló, felírásában az IP-címekhez hasonlító címke. Ha még ez a címke sem található, akkor a MYADDR bejegyzést keresi.
Ez a sor mondja meg a ppp programnak, hogy vegyen fel egy HISADDR címre vonatkozó alapértelmezett útvonalat. A HISADDR címet az IPCP által egyeztetett átjáró IP-címére cseréljük ki.
Ha erre a részletesebb példát akarunk látni, akkor a /usr/share/examples/ppp/ppp.conf.sample és /usr/share/examples/ppp/ppp.linkup.sample állományokban a pmdemand bejegyzést nézzük meg.
Amikor egy helyi hálózathoz csatlakozó gépen akarjuk a ppp programot beállítani a bejövő hívások fogadására, akkor azt is el kell döntenünk, hogy engedélyezzük-e a csomagok továbbküldését a belső hálózat felé. Amennyiben igen, akkor a becsatlakozó gépenek a belső hálózatunkon ki kell osztani egy külön címet és az /etc/ppp/ppp.conf állományban, és meg kell adnunk az enable proxy parancsot. Emellett még az /etc/rc.conf állományban se feleljtsük el megadni a következő sort:
gateway_enable="YES"
A FreeBSD beállítása betárcsázós kapcsolatokhoz nagyon jól bemutatja a betárcsázós szolgáltatások beállítását a getty(8) segítségével.
A getty helyett egyébként az mgetty, a getty egy ügyesebb változata is használható (a comms/mgetty+sendfax portból), amely kifejezetten a betárcsázós vonalakhoz készült.
A mgetty használatának többek közt az egyik előnye, hogy aktívan tartja a kapcsolatot a modemekkel, tehát hogy ha az /etc/ttys állományban letiltjuk a modemet, akkor nem is fog válaszolni a hívásokra.
Emellett az mgetty későbbi változatai (a 0.99 beta változatától kezdve) még a PPP folyamok automatikus észlelését is támogatják, ezáltal a kliensek szkriptek nélkül is képesek elérni a szerverünket.
Ha erről többet akarunk megtudni, akkor az mgetty paranccsal kapcsolatban olvassuk el Az mgetty és az AutoPPP című szakaszt.
A ppp parancsot általában root felhasználóként kell futtatni. Ha viszont a ppp parancsot tetszőleges felhasználóval akarjuk szerver módban futtatni az iméntiek szerint, akkor ahhoz fel kell vennünk az /etc/group állományban szereplő network csoportba.
Ezeken kívül még az allow paranccsal is engedélyeznünk kell konfigurációs állomány egy vagy több részének elérését is:
allow users fred mary
Ha ezt a parancsot a default bejegyzésnél adjuk meg, akkor az így megadott felhasználók mindenhez hozzá tudnak férni.
Hozzunk létre egy /etc/ppp/ppp-shell nevű állományt, amelyben a következők szerepelnek:
#!/bin/sh IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'` CALLEDAS="$IDENT" TTY=`tty` if [ x$IDENT = xdialup ]; then IDENT=`basename $TTY` fi echo "PPP for $CALLEDAS on $TTY" echo "Starting PPP for $IDENT" exec /usr/sbin/ppp -direct $IDENT
Ez a szkript legyen végrehajtható. Ezután az alábbi paranccsal ppp-dialup néven készítsünk egy szimbolikus linket erre a szkriptre:
# ln -s ppp-shell /etc/ppp/ppp-dialup
Ez a szkript lesz az összes betárcsázó felhasználónk shellje. A most következő példa az /etc/passwd állományban szereplő, pchilds nevű PPP felhasználó bejegyzését mutatja be (ne felejtsük el, hogy soha ne közvetlenül szerkesszük a jelszavakat tároló állományt, hanem a vipw(8) segítségével).
pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup
Hozzunk létre egy /home/ppp nevű könyvtárat a következő bárki által olvasható 0 byte-os állományokkal:
-r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin -r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts
Ezek hatására az /etc/motd állomány tartalma nem jelenik meg.
Az iméntiekhez hasonló módon készítsük el a ppp-shell állományt, és mindegyik statikus IP-vel rendelkező hozzáféréshez csináljunk egy szimbolikus linket a ppp-shell szkriptre.
Például, ha három betárcsázós ügyfelünk van, fred, sam és mary, feléjük 24 bites CIDR hálózatokat közvetítünk, akkor a következőket kell begépelnünk:
# ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary
A fentebb szereplő betárcsázós felhasználók eléréseihez tartozó shelleket állítsuk be az itt létrehozott szimbolikus linkekre (így tehát mary shellje az /etc/ppp/ppp-mary lesz).
Az /etc/ppp/ppp.conf állományban a következő sorok valamelyikének kellene szerepelnie:
default: set debug phase lcp chat set timeout 0 ttyu0: set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255 enable proxy ttyu1: set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255 enable proxy
Megjegyzés: A bentebb kezdett sorokat mi is kezdjünk bentebb.
A default: szakasz minden kapcsolat esetén betöltődik. Az /etc/ttys állományban engedélyezett mindegyik betárcsázós vonal létrehoz a fenti ttyu0: szakaszhoz hasonló bejegyzést. Minden vonal kap egy egyedi IP-címet a dinamikus felhasználók számára szánt címtartományból.
A /usr/share/examples/ppp/ppp.conf állományban szereplő tartalom mellett az összes statikus kiosztású IP-címmel rendelkező betárcsázó felhasználóhoz még hozzá kell tennünk egy szakaszt. A példánkban ezek továbbra is fred, sam és mary.
fred: set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255 sam: set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255 mary: set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255
Amennyiben szükséges, az /etc/ppp/ppp.linkup tartalmazhat további útválasztási információkat is az egyes statikus IP-címmel rendelkező felhasználókhoz. A lentebb bemutatott sor a kliens ppp összekötettésén keresztül vesz fel egy útvonalat a 203.14.101.0/24 hálózat felé.
fred: add 203.14.101.0 netmask 255.255.255.0 HISADDR sam: add 203.14.102.0 netmask 255.255.255.0 HISADDR mary: add 203.14.103.0 netmask 255.255.255.0 HISADDR
Az comms/mgetty+sendfax port alapértelmezés szerint az AUTO_PPP beállítással érkezik, amely lehetővé teszi, hogy az mgetty képessé legyen a PPP kapcsolatok LCP fázisát észlelni és magától létrehozni hozzá egy ppp shellt. Mivel az alapértelmezett név/jelszó páros azonban ilyenkor nem jelenik meg, a felhasználókat a PAP vagy a CHAP protokollon keresztül lehet hitelesíteni.
Ez a szakasz most feltételezi, hogy a sikeresen beállítottuk, lefordítottuk és telepítettük az comms/mgetty+sendfax portot.
Az /usr/local/etc/mgetty+sendfax/login.config állományban ne felejtsük ellenőrizni, hogy szerepel a következő:
/AutoPPP/ - - /etc/ppp/ppp-pap-dialup
Ezzel utasítjuk az mgetty programot arra, hogy az észlelt PPP kapcsolatokhoz futtassa le a ppp-pap-dialup szkriptet.
Hozzunk létre az /etc/ppp/ppp-pap-dialup nevű állományt, amelyben majd a következők fognak szerepelni (az állomány legyen végrehajtható):
#!/bin/sh exec /usr/sbin/ppp -direct pap$IDENT
Az /etc/ttys állományban engedélyezett összes betárcsázós vonalhoz készítsük el a megfelelő bejegyzést az /etc/ppp/ppp.conf állományban. Ezek remekül meg fognak férni az imént készített definíciókkal.
pap: enable pap set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40 enable proxy
Minden olyan felhasználónak, aki ezzel a módszerrel jelentkezik be, szüksége lesz egy név/jelszó kombinációra az /etc/ppp/ppp.secret állományban, vagy az alábbi beállítás megadásával választhatjuk azt is, hogy a felhasználókat az /etc/passwd állományon keresztül a PAP protokoll segítségével azonosítjuk.
enable passwdauth
Ha statikus IP-címet akarunk kiosztani némely felhasználóknak, akkor az /etc/ppp/ppp.secret állományban ezt megadhatjuk a harmadik paraméternek. Erről bővebben a /usr/share/examples/ppp/ppp.secret.sample állományban láthatunk példát.
A PPP úgy is beállítható, hogy kérésre DNS és NetBIOS típusú névfeloldáshoz is szolgáltasson információkat.
A PPP 1.x változatával úgy lehet engedélyezni ezeket a kiterjesztéseket, ha az /etc/ppp/ppp.conf állomány megfelelő részeibe felvesszük a következő sorokat:
enable msext set ns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5
A PPP második és későbbi változataiban pedig:
accept dns set dns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5
Ezzel a kliens megkapja az elsődleges és másodlagos névszerverek címeit, valamint a NetBIOS névszervert.
Ha a második és az azt követő verziókban a set dns sort elhagyjuk, akkor a PPP az /etc/resolv.conf állományban található értékeket fogja használni.
Egyes internet-szolgáltatók úgy állítják be a rendszerüket, hogy a kapcsolat felépítése során a hitelesítés a PAP vagy CHAP mechanizmusok valamelyikével történik. Ilyenkor a szolgáltató nem egy login: sorral fogja bekérni a szükséges adatokat, hanem közvetlenül a PPP kapcsolatot kezdi el használni.
A PAP nem olyan biztonságos, mint a CHAP, de itt a biztonság nem is annyira fontos, mivel a jelszavak, amelyeket ugyan a PAP titkosítatlan formában küld tovább, csak egy soros vonalon haladnak át. A rossz indulatú támadók itt nem sok mindent tudnak “lehallgatni”.
A PPP statikus IP-címmel és a PPP dinamikus IP címmel című szakaszokhoz képest a következő módosításokat kell elvégeznünk:
13 set authname AFelhasználóiNevem 14 set authkey AJelszavam 15 set login
Ebben a sorban adjuk meg a PAP/CHAP felhasználói nevünket, amelyet AFelhasználóiNevem helyett kell beírni.
Ebben a sorban adjuk meg a PAP/CHAP jelszavunkat, AJelszavam helyett. Szándénkunk egyértelműsítése érdekében ezek mellett még egy további sort is érdemes felvennünk, tehát:
16 accept PAP
vagy
16 accept CHAP
Alapértelmezés szerint a PAP és CHAP is egyaránt elfogadott.
A PAP és CHAP alkalmazásakor általában nem is kell bejelentkeznünk a szolgáltató szerverére. Ezért a “set login” parancsnál használt karakterláncot le is kell tiltanunk.
A háttérben futó ppp programhoz menet közben is tudunk beszélni, de csak olyankor, amikor az ehhez szükséges portot megadtuk. Ezt úgy tudjuk megtenni, ha beállítások közé felvesszük az alábbit:
set server /var/run/ppp-tun%d DiagnosticPassword 0177
Így a PPP az előre megadott UNIX tartománybeli socketen keresztül fogja várni a kapcsolódásunkat, és a konkrét hozzáféréshez jelszót kér. A névben szereplő %d a használatban levő tun eszköz sorszámát jelöli.
Miután a csatlakozás beállítódott, a szkriptekben a pppctl(8) program használható a futó program vezérléséhez.
A PPP képes a rendszermag rásegítése nélkül képes hálózati címfordítást végezni. Ezt a lehetőséget a következő sor hozzáadásával tudjuk aktiválni az /etc/ppp/ppp.conf állományban:
nat enable yes
A PPP-be épített hálózati címfordítás a -nat parancssori paraméterrel is bekapcsolható. Az /etc/rc.conf állományban is található hozzá egy ppp_nat változó, amely alapértelmezés szerint engedélyezett.
Amikor használjuk ezt a lehetőséget, az /etc/ppp/ppp.conf állományban a következő opciókkal engedélyezhetjük a bejövő kapcsolatok továbbítását:
nat port tcp 10.0.0.2:ftp ftp nat port tcp 10.0.0.2:http http
vagy egyáltalán ne bízzunk meg a külvilágban:
nat deny_incoming yes
Mostanra ugyan már beállítottuk a ppp programot, azonban még néhány dolgot be kell állítanunk, mielőtt ténylegesen nekilátnánk használni. Ezek mindegyike az /etc/rc.conf állomány módosítását igényli.
Az állományt fentről lefelé fogjuk feldolgozni, de előtte ne felejtsünk el értéket adni a hostname= változónak, például:
hostname="ize.minta.com"
Amennyiben a szolgáltatónk statikus IP-címet és nevet biztosít számunkra, az lesz a legjobb, ha itt a tőle kapott nevet adjuk meg.
Keressük meg a network_interfaces változót. Ha a rendszerünkben kérésre akarjuk tárcsázni a szolgáltatónkat, akkor a tun0 eszközt mindenképpen vegyük fel az értékébe, minden más esetben pedig távolítsuk el.
network_interfaces="lo0 tun0" ifconfig_tun0=
Megjegyzés: Az ifconfig_tun0 változónak üres értéket kell megadnunk, és létre kell hoznunk egy /etc/start_if.tun0 nevű állományt. Ebben a következő sornak kell szerepelnie:
ppp -auto arendszeremEz a szkript a hálózat beállításakor fut le, és a ppp démont automatikus módban indítja el. Ha az adott gép egy helyi hálózat átjárója is egyben, akkor az
-alias
kapcsolót is érdemes megadnunk mellette. A pontosabb részletek tekintetében olvassuk el a megfelelő man oldalt.
Az /etc/rc.conf állományban a NO érték megadásával tiltsuk le az útválasztást végző program használatát:
router_enable="NO"
Fontos, hogy a routed démon ne induljon el, mivel routed hajlamos törölni a ppp által létrehozott alapértelmezett útválasztási bejegyzéseket.
Ezenkívül még a
sendmail_flags
változóról szóló
sorból is érdemes kivenni a -q
opciót, máskülönben a
sendmail minden művelet
megkezdése előtt nekiáll felderíteni
a hálózatot, és ezzel megindítja a
tárcsázást. Próbáljuk meg
így átírni az
értékét:
sendmail_flags="-bd"
Ezért cserébe viszont a sendmail programot a ppp kapcsolat létrejöttekor mindig utasítanunk kell, hogy újból ellenőrizze a levelezési sort. Ezt a következők begépelésével érhetjük el:
# /usr/sbin/sendmail -q
Ugyanezt automatikusan is meg tudjuk tenni a !bg paranccsal a ppp.linkup állományban:
1 szolgaltato: 2 delete ALL 3 add 0 0 HISADDR 4 !bg sendmail -bd -q30m
Ha nem felelne meg ez a megoldás, akkor egy “dfilter” is beállítható az SMTP forgalom szűrésére. A példák között megtaláljuk ennek pontos minkéntjét.
Ezután már csak a gépünk újraindítása maradt hátra. Az újraindítás után már be is gépelhetjük:
# ppp
ahol a dial szolgaltato parancs kiadásával meg tudjuk kezdeni a PPP kapcsolat felépítését, vagy a ppp programot megkérhetjük arra, hogy automatikusan kezdje el, amint van kimenő forgalom (és nem készítettük el a start_if.tun0 szkriptet). Ekkor gépeljük be ezt:
# ppp -auto szolgaltato
Gyorsan foglaljuk össze, hogy az ppp beállításához milyen lépések megtétele szükséges az első alkalommal:
A kliens oldalán:
Győződjünk meg róla, hogy a tun eszköz benne van a rendszermagban.
Ellenőrizzük, hogy a tunN eszközhöz tartozó állomány rendelkezésre áll a /dev könyvtárban.
Hozzunk létre egy bejegyzést az /etc/ppp/ppp.conf állományban. A pmdemand példából a legtöbb szolgáltató esetében ki tudunk indulni.
Ha dinamikus IP-címet kapunk, akkor az /etc/ppp/ppp.linkup állományba is vegyünk fel egy bejegyzést.
Frissítsük az /etc/rc.conf állományunkat.
Ha igény szerint akarunk tárcsázni, akkor hozzunk létre start_if.tun0 néven egy szkriptet.
A szerver oldalán:
Gondoskodjunk róla, hogy a tun eszköz támogatása szerepel rendszermagban.
Győződjünk meg róla, hogy a tunN eszköz megtalálható a /dev könyvtárban.
Az /etc/passwd állományban (a vipw(8) program használatával) hozzunk létre bejegyzéseket.
A felhasználók könyvtáraiban hozzunk létre egy olyan profilt, amely ppp -direct direct-server vagy egy ehhez hasonló parancsot futtat le.
Az /etc/ppp/ppp.conf állományban adjuk meg egy bejegyzést. A direct-server példa ehhez egy remek alapot biztosít.
Az /etc/ppp/ppp.linkup állományban hozzunk létre egy bejegyzést.
Frissítsük az /etc/rc.conf állományunkat.
Figyelem: Ez a szakasz csak FreeBSD 7.X esetén érvényes.
Mielőtt a gépünkön nekikezdünk a PPP beállításának, ellenőrizzük, hogy a pppd megtalálható a /usr/sbin könyvtárban és az /etc/ppp könyvtár létezik.
A pppd két módban képes működni:
“kliensként” — a gépünket soros vonali vagy modemes PPP kapcsolaton keresztül csatlakoztatjuk a külvilághoz
“szerverként” — a számítógépünk egy hálózat része, ahol a többieket a PPP használatával kapcsoljuk össze
Mind a két esetben egy konfigurációs állomány tartalmát kell összeállítanunk (ez az /etc/ppp/options vagy a ~/.ppprc, ha a gépünkön több felhasználó is PPP-t akar használni).
Egy modemes vagy soros vonali szoftverre is szükségünk lesz (ez többnyire a comms/kermit), amellyel távoli gépeket tudunk felhívni és feléjük kapcsolatot felépíteni.
A most következő /etc/ppp/options állománnyal egy Cisco terminál szerverhez tudunk kapcsolódni egy PPP vonalon keresztül.
crtscts # a hardveres forgalomirányítás engedélyezése modem # modem vezérlővonal noipdefault # a távoli PPP szervernek kell IP-címet adnia # ha az IPCP alapú egyeztetés során a távoli gép nem küld # nekünk IP-címet, akkor vegyük ki ezt a beállítást passive # LCP csomagokat várunk domain ppp.ize.com # ide írjuk be a hálózati nevünket :távoli_ip # ide kell írni a távoli PPP szerver IP-címét # a PPP kapcsolaton keresztül erre fogjuk továbbküldeni a csomagokat # ha nem adtuk meg "noipdefault" beállítást, akkor ezt a sort # írjuk át helyi_ip:távoli_ip alakúra defaultroute # adjuk meg ezt a sort is, ha a PPP szerverünket egyben az # alapértelmezett átjárónak is be akarjuk állítani
Így kapcsolódunk:
Tárcsázzuk a távoli gépet a Kermit (vagy bármilyen más modemes program) elindításával, majd adjuk meg a felhasználói nevünket és jelszavunkat (vagy bármi mást, amivel a távoli gépen engedélyezni tudjuk a PPP használatát).
Lépjünk ki a Kermit programból (anélkül, hogy bontanánk a vonalat).
Írjuk be a következőket:
# /usr/sbin/pppd /dev/tty01 19200
Ne felejtsük el megadni a megfelelő sebességet és eszközt.
A számítógépünk most
már PPP-n keresztül csatlakozik. Ha valamilyen
okból nem sikerülne felépíteni a
kapcsolatot, akkor vegyük fel a debug
beállítást is az
/etc/ppp/options állományba,
majd a konzolra érkező üzenetek
segítségével próbáljuk meg
felderíteni a probléma okát.
Az alábbi /etc/ppp/pppup szkript mind a három fázist automatikussá teszi:
#!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.dial pppd /dev/tty01 19200
Az /etc/ppp/kermit.dial egy olyan Kermit szkript, amivel tárcsázni tudunk és a távoli gépen elvégezni az összes szükséges hitelesítést (a leírás végén találhatunk is egy ilyen szkriptet példaként).
Az alábbi /etc/ppp/pppdown szkripttel tudjuk bontani a PPP vonalat:
#!/bin/sh pid=`pgrep pppd` if [ X${pid} != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill -TERM ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi /sbin/ifconfig ppp0 down /sbin/ifconfig ppp0 delete kermit -y /etc/ppp/kermit.hup /etc/ppp/ppptest
A /usr/etc/ppp/ppptest elindításával ellenőrizni tudjuk, hogy a pppd még mindig fut. Ez valahogy így néz ki:
#!/bin/sh pid=`pgrep pppd` if [ X${pid} != "X" ] ; then echo 'pppd running: PID=' ${pid-NONE} else echo 'No pppd running.' fi set -x netstat -n -I ppp0 ifconfig ppp0
A vonal bontásához az /etc/ppp/kermit.hup szkriptet kell elindítanunk, amiben a következő szerepelnek:
set line /dev/tty01 ; ide írjuk be a saját modemünket set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 echo \13 exit
A kermit helyett a chat programot is használhatjuk:
A következő két állomány már elég egy kapcsolat létrehozásához pppd használatával:
/etc/ppp/options:
/dev/cuad1 115200 crtscts # a hardveres forgalomirányítás engedélyezése modem # modemes vezérlővonal connect "/usr/bin/chat -f /etc/ppp/login.chat.script" noipdefault # a távoli PPP kiszolgálónak adnia kell egy IP-címet # ha a távoli gép nem küldi az IP-címünk az IPCP alapú egyeztetés során # akkor távolítsuk el ezt a beállítást passive # LCP csomagokat várunk domain sajat.tartomany # ide írjuk be a saját tartománynevünket : # a távoli PPP kiszolgáló IP-címét tegyük ide # ezen keresztül fogjuk továbbküldeni a PPP kapcsolaton áthaladó csomagokat # nem adtuk meg a "noipdefault" beállítást, akkor ezt # sort írjuk át helyi_ip:távoli_ip alakúra defaultroute # ez a sor akkor kell, ha a PPP szerver lesz az # alapértelmezett átjárónk is
/etc/ppp/login.chat.script:
Megjegyzés: A most következőt egyetlen sorba kell írnunk.
ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTtelefon.szám CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: bejelentkezési-azonosító TIMEOUT 5 sword: jelszó
Miután ezeket telepítettük és a megfelelőképpen módosítottuk, már csak a pppd parancsot kell kiadnunk, valahogy így:
# pppd
Az /etc/ppp/options állományban nagyjából a következőknek kell szerepelnie:
crtscts # hardveres forgalomirányítás netmask 255.255.255.0 # hálózati maszk (nem kötelező) 192.114.208.20:192.114.208.165 # a helyi és távoli gépek IP-címei # a helyi IP-nek el kell térnie az Ethernet # (vagy más egyéb) felülethez tartozó címtől. # a távoli IP a távoli géphez rendelt IP-cím domain ppp.ize.com # a saját tartományunk passive # az LCP csomagok várása modem # modemes vonal
Az alábbi /etc/ppp/pppserv szkript a pppd démont szervernek állítja be:
#!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi # reset ppp interface ifconfig ppp0 down ifconfig ppp0 delete # enable autoanswer mode kermit -y /etc/ppp/kermit.ans # run ppp pppd /dev/tty01 19200
A szerver leállítására a következő /etc/ppp/pppservdown szkriptet kell használnunk:
#!/bin/sh pgrep -l pppd pid=`pgrep pppd` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi pgrep -l kermit pid=`pgrep kermit` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.noans
A következő Kermit szkript (/etc/ppp/kermit.ans) engedélyezi vagy tiltja le a modem automatikus válaszadását. Körülbelül így épül fel:
set line /dev/tty01 set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 inp 5 OK echo \13 out ATS0=1\13 ; "ATS0=0\13"-ra írjuk át, ha le akarjuk tiltani az ; automatikus válaszadást inp 5 OK echo \13 exit
Az /etc/ppp/kermit.dial elnevezésű szkriptet használhatjuk arra, hogy tárcsázzunk távoli gépeket és hitelesítsük magunkat rajtuk. Írjuk át az igényeinknek megfelelően, tegyük bele a bejelentkezéshez szükséges azonosítót és jelszót, illetve a modemünk és a távoli gép válaszai szerint módosítsuk az input utasításokat.
; ; írjuk ide azt a com vonalat, amire a modemünk csatlakozik: ; set line /dev/tty01 ; ; ide kerül a modem sebessége: ; set speed 19200 set file type binary ; teljes 8 bites állomány-átvitel set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none set modem hayes set dial hangup off set carrier auto ; adjuk meg a SET CARRIER utasítást is, ha kell set dial display on ; adjuk meg a SET DIAL utasítást is, ha kell set input echo on set input timeout proceed set input case ignore def \%x 0 ; a bejelentkezés számlálója goto slhup :slcmd ; tegyük a modemet parancs módba echo Tegyuk a modemet parancs modba. clear ; töröljük a be nem olvasott karaktereket a bemeneti pufferből pause 1 output +++ ; a Hayes-féle helyettesítési szekvenciák használata input 1 OK\13\10 ; várjuk meg az OK jelzést if success goto slhup output \13 pause 1 output at\13 input 1 OK\13\10 if fail goto slcmd ; ha a modem nem válaszol OK-val, akkor próbálkozzunk újra :slhup ; bontsuk a vonalat clear ; töröljük ki a be nem olvasott karaktereket a bemeneti pufferből pause 1 echo A vonal bontasa. output ath0\13 ; a kapcsolat létrejöttét jelző Hayes-parancs input 2 OK\13\10 if fail goto slcmd ; ha nincs OK válasz, akkor tegyük a modemet parancs módba :sldial ; tárcsázzuk a számot pause 1 echo Dialing. output atdt9,550311\13\10 ; ide írjuk a telefonszámot assign \%x 0 ; nullázzuk le az időzítőt :look clear ; töröljük az olvasatlan karaktereket a bemeneti pufferből increment \%x ; számoljuk a másodperceket input 1 {CONNECT } if success goto sllogin reinput 1 {NO CARRIER\13\10} if success goto sldial reinput 1 {NO DIALTONE\13\10} if success goto slnodial reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 60 goto look else goto slhup :sllogin ; bejelentkezés assign \%x 0 ; nullázzuk le az időzítőt pause 1 echo A bejelentkezes keresese. :slloop increment \%x ; számoljuk a másodperceket clear ; töröljük az olvasatlan karaktereket a bemeneti pufferből output \13 ; ; ide írjuk be a várható bejelentkezési sablont: ; input 1 {Felhasznaloi nev: } if success goto sluid reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 10 goto slloop ; tízszer próbálkozzunk a bejelentkezéssel else goto slhup ; 10 sikertelen próbálkozás után bontsuk a vonalat és kezdjük újra :sluid ; ; ide írjuk be a felhasználói azonosítónkat: ; output ppp-login\13 input 1 {Jelszo: } ; ; ide tegyük a hozzá tartozó jelszót: ; output ppp-password\13 input 1 {Atvaltas SLIP modba.} echo quit :slnodial echo \7Nincs vonal. Ellenorizzuk a telefonvonalat!\7 exit 1 ; local variables: ; mode: csh ; comment-start: "; " ; comment-start-skip: "; " ; end:
Figyelem: A FreeBSD 8.0 kiadásától kezdődően a sio(4) meghajtó szerepét a uart(4) veszi át. Emiatt a soros vonali eszközöket /dev/cuadN és /dev/cuauN helyett /dev/ttydN és /dev/ttyuN néven lehet elérni. A FreeBSD 7.X változatok felhasználóinak ennek megfelelően kell olvasniuk ezt a leírást.
Ebben a szakaszban összefoglalunk néhány olyan problémát, ami a PPP modemen keresztüli használata során keletkezhet. Például pontosan tisztában kell lennünk azzal, hogy a tárcsázott rendszer milyen adatokat és hogyan fog tőlünk bekérni. Egyes szolgáltatók egy ssword promptot, míg mások egy password promptot adnak. Ha a ppp szkript nem illeszkedik ezekhez az elvárásokhoz, akkor nem tudunk bejelentkezni. A ppp csatlakozások nyomonkövetésének egyik leggyakoribb módja a manuális kapcsolódás. A következőkben ezért a manuális csatlakozásokra vonatkozó legszükségesebb ismereteket mutatjuk be lépésről lépésre.
Ha saját rendszermagot használunk, ne felejtsük el felvenni a következő sort a konfigurációs állományba:
device uart
A GENERIC rendszermag az uart eszközt már alapértelmezés szerint tartalmazza, ezért ilyenkor már nincs több teendőnk. Egyszerűen csak a dmesg parancs kimenetében keressük meg a modemes eszközhöz tartozó adatokat:
# dmesg | grep uart
Ennek eredményeképpen kapunk egy rövid összefoglalást a uart típusú eszközökről. Ezek lesznek a számunkra fontos COM portok. Amennyiben a modemünk egy szabványos soros portként működik, akkor a uart1 vagy COM2 néven kell keresnünk. Ha megtaláltuk, akkor nem kell új rendszermagot fordítanunk. Amikor a soros vonali modemünk a uart1 vagy COM2 porton csatlakozik DOS-ban, akkor itt a neki megfelelő eszköz a /dev/cuau1 lesz.
A ppp kézi irányításával gyorsan, egyszerűen és minden fájdalomtól mentesen tudunk csatlakozni az internethez, de olyankor is hasznos, ha ki akarjuk deríteni, hogy az internet-szolgáltatónk milyen módon kezeli a kliensek ppp csatlakozásait. Nos, akkor ehhez indítsuk is el a PPP alkalmazást a paranccsorból. Az alábbi példákban rendre a pelda névvel hivatkozunk a PPP-t működtető gépre. A ppp tehát a ppp parancs begépelésével indítható:
# ppp
Ezzel elindítottuk a ppp programot.
ppp ON pelda> set device /dev/cuau1
Beállítjuk a modemünket, ami ebben az esetben a cuau1.
ppp ON pelda> set speed 115200
Beállítjuk a csatlakozás sebességét, ami ebben az esetben 115 200 kbit/mp.
ppp ON pelda> enable dns
Azt mondjuk a ppp programnak, hogy állítsa be a névfeloldót és az /etc/resolv.conf állományt egészítse ki a megfelelő névszerverekkel. Ha a ppp nem képes megállapítani a gépünk nevét, akkor később ezt még kézzel is be tudjuk állítani.
ppp ON pelda> term
Váltsunk “terminál” módba, így mi irányítjuk a modemet.
deflink: Entering terminal mode on /dev/cuau1 type '~h' for help
at OK atdt123456789
Az at paranccsal hozzuk alaphelyzetbe a modemet, majd a atdt paranccsal és egy telefonszám megadásával megkezdjük a szolgáltató tárcsázását.
CONNECT
Ezzel jelez vissza a kapcsolódás megkezdéséről. Ha itt bármilyen hardvertől független csatlakozási probléma merülne fel, akkor ezen a ponton tudunk ellene tenni valamit.
ISP Login:felhasznalonev
Itt kell megadnunk a felhasználói nevünket, ami megegyezik a szolgáltató által adott azonosítónkkal.
ISP Pass:jelszo
Ezúttal a jelszavunkat kell megadni, amit szintén a szolgáltató bocsátott rendelkezésünkre az azonosító mellett. Akárcsak amikor bejelentkezünk a FreeBSD-be, itt sem fog látszódni a jelszavunk.
Shell or PPP:ppp
Szolgáltatótól függően előfordulhat, hogy ez a sor soha nem is jelenik meg. Itt kérdezik meg, hogy a szolgáltatónál egy shellt akarunk használni, vagy csak elindítani egy ppp kapcsolatot. Ebben a példában természetesen a ppp opciót választjuk, mivel egy internet-előfizetés birtokosai vagyunk.
Ppp ON pelda>
Figyeljük meg, hogy az első p
nagybetűssé vált. Ezzel jelzi a program,
hogy sikeresen csatlakoztunk a
szolgáltatónkhoz.
PPp ON pelda>
Sikeresen azonosítottuk magunkat a szolgáltató felé és várjuk az IP-címünket.
PPP ON pelda>
Megkaptuk az IP-címünket és ezzel sikeresen felépült a kapcsolat.
PPP ON pelda>add default HISADDR
Itt adjuk hozzá az alapértelmezett
útvonalat, amire mindenképpen
szükségünk van ahhoz, hogy a
külvilággal is kapcsolatban tudjunk lépni,
mivel jelenleg csak a vonal másik végén
lévő gépet érjük el. Ha ezt
bizonyos, már meglevő útvonalak miatt nem
sikerül felvenni, akkor az add
elé
tegyünk egy ! jelet. Ezt viszont a
kapcsolat felépítése előtt is
megtehetjük, így menet közben az új
útvonalat felveszi a többi közé.
Ha eddig minden remekül ment, akkor ezen ponton már egy élő internet-kapcsolattal rendelkezünk, és a programot a CTRL+z lenyomásával a háttérbe is tehetjük. Ha a PPP felirat ismét a ppp feliratra váltana, akkor az arra utal, hogy elvesztettük a kapcsolatot. Erre nem árt figyelni, mivel ezzel jelzi az aktuális kapcsolat állapotát. A nagybetűs P-k jelölik, hogy az adott szinten megvan a kapcsolat a szolgáltató felé, a kisbetűs p-k pedig arra utalnak, hogy azon a szinten a kapcsolat valamiért megszűnt. A ppp csak ezt a két állapotot ismeri.
Ha közvetlen vonalunk van és mégsem
sikerül kapcsolatot létesíteni, akkor
tiltsuk le a hardveres CTS/RTS
forgalomirányítást a set ctsrts
off
paranccsal. Ez leginkább akkor fordul
elő, ha csatlakoztunk egy olyan
terminálszerverhez, amely valamennyire képes
kezelni a PPP kapcsolatokat, de a
PPP megáll, mikor adatot
próbál írni a kommunikációs
csatornára, mivel arra a CTS (Clear
To Send — “lehet küldeni”)
jelzésre vár, amely soha nem fog
megérkezni. Ha mégis ezt a
beállítást akarjuk használni,
akkor a set accmap
beállításra is
szükségünk lesz, mivel ez kell bizonyos
karakterek hardverfüggő
átküldésének
felülbírálásához,
legtöbb esetben a XON/XOFF miatt. A ppp(8) man
oldalon találhatunk erről és ennek
használatáról részletesebb
leírást.
Ha egy régebbi gyártmányú
modemünk van, akkor a set parity even
beállítás alkalmazása is javasolt.
Alapértelmezés szerint ugyanis nincs
paritás, de a régebbi modemek és (a
forgalom növekedésével) egyes
szolgáltatók még használják
hibaellenőrzésre. Ha Compuserve
előfizetésünk van, mindenképpen
kapcsoljuk be.
Amikor a PPP nem tér vissza parancs módba, akkor gyaníthatóan az egyeztetésben lesz valahol probléma, mivel a szolgáltató a kliensüktől várja a kezdeményezését. Ezen a ponton a ~p paranccsal utasíthatjuk a ppp programot a konfigurációs információk átküldésének megkezdésére.
Ha egyáltalán nem kapunk promptot a bejelentkezéshez, akkor nagy a alószínűsége, hogy az iménti UNIX stílusú hitelesítés helyett PAP vagy CHAP protokollt kell használnunk. A PAP vagy CHAP használatához mindössze a következő beállításokat kell megadnunk PPP programnak a terminál mód aktiválása előtt:
ppp ON pelda> set authname felhasznalonev
ahol a felhasznalonev helyett a szolgáltatótól kapott azonosítót kell beírnunk.
ppp ON pelda> set authkey jelszo
ahol a jelszo helyett a szolgáltatótól kapott jelszót kell megadnunk.
Ha sikeresen csatlakoztunk, de még nem
találunk semmilyen tartománynevet, akkor a
ping(8) és IP-cím
segítségével tudjuk megvizsgálni,
hogy működőképes-e a kapcsolat. Ha
100 százalékos (100%) csomagvesztést
(packet loss) tapasztalunk, akkor szinte biztos, hogy nincs
meg az alapértelmezett útvonal.
Nézzük meg újra, hogy az add
default HISADDR
beállítást
megadtuk-e a kapcsolat felépítésekor. Ha
viszont már el tudunk érni egy távoli
IP-címet, akkor nagyon valószínű,
hogy az /etc/resolv.conf
állományba nem került bele a megfelelő
névfeloldó címe. Az említett
állománynak valahogy így kellene
kinéznie:
domain minta.com nameserver x.x.x.x nameserver y.y.y.y
Ahol az x.x.x.x és y.y.y.y címeket a szolgáltatónk névszervereinek címével kell behelyettesíteni. Ez nem minden esetben található meg az előfizetői szerződésben, de ha felhívjuk a szolgáltatónkat, akkor minden bizonnyal elárulják ezeket a címeket.
A syslog(3) is alkalmas a PPP kapcsolatok naplózására. Ehhez csupán ennyit kell megadnunk az /etc/syslog.conf állományban:
!ppp *.* /var/log/ppp.log
A legtöbb esetben ez a lehetőség már eleve adott.
Ebben a szakaszban azt ismertetjük, hogyan állítsuk be a PPP-t Ethernet felett (PPP over Ethernet, PPPoE).
A PPPoE működéséhez most már semmilyen módosításra nincs szükség a rendszermag beállításaiban. Amennyiben a hozzá szükséges Netgraph támogatás nem található a rendszermagban, akkor azt a ppp önműködően betölti.
Íme egy működő ppp.conf állomány:
default: set log Phase tun command # itt akár egy részletesebb naplózást is be tudunk állítani set ifaddr 10.0.0.1/0 10.0.0.2/0 a_szolgaltato_neve: set device PPPoE:xl1 # az xl1 helyére írjuk be a saját Ethernet eszközünket set authname FELHASZNALONEV set authkey JELSZO set dial set login add default HISADDR
root felhasználóként adjuk ki az alábbi parancsot:
# ppp -ddial a_szolgaltato_neve
Az /etc/rc.conf állományba vegyük fel a következőket:
ppp_enable="YES" ppp_mode="ddial" ppp_nat="YES" # csak akkor, ha címfordítás kell a helyi hálózaton, máskülönben "NO" ppp_profile="a_szolgaltato_neve"
Bizonyos esetekben szolgáltatási címkét (service tag) is használnunk kell a kapcsolat létrehozásához. A szolgáltatási címkék segítségével tudjuk megkülönböztetni az adott hálózaton elérhető különböző PPPoE szervereket.
A szolgáltatótól kapott dokumentációban szerepelnie kell minden ehhez kapcsolódó információnak. Amennyiben nem találjuk, érdeklődjünk a szolgáltatónál.
Utolsó reményként megpróbálhatjuk a Portgyűjteményben található Roaring Penguin PPPoE nevű program által javasolt módszert. Ennél vegyük azonban számításba, hogy félre tudja programozni a modemünket, amitől akár használhatatlanná is válhat, ezért kétszer is gondoljuk meg, mielőtt használni kezdjük. Egyszerűen csak tegyük fel a szolgáltatótól a modemünk mellé kapott szoftvert. Ezután lépjünk be a program menüjébe. Itt kell lennie a megfelelő profilnak, ami általában az ISP.
A profil neve (a szolgáltatás címkéje) a ppp.conf állományban a PPPoE bejegyzés részeként jelenik meg a set device parancsban (ennek pontos részleteit lásd a ppp(8) man oldalon). Tehát nagyjából így néz ki:
set device PPPoE:xl1:ISP
Az xl1 eszköz nevét ne felejtsük el a megfelelő Ethernet kártyához tartozó eszköz nevére kicserélni.
Az ISP helyett pedig írjuk be az imént kiderített profil nevét.
A témával kapcsolatban az alábbi helyeken találhatunk további információkat:
Cheaper Broadband with FreeBSD on DSL, írta: Renaud Waldura (angolul).
Nutzung von T-DSL und T-Online mit FreeBSD, írta: Udo Erdelhoff (németül).
Ez a modem nem felel meg az RFC 2516 előírásainak (A Method for transmitting PPP over Ethernet (PPPoE), írta: L. Mamakos, K. Lidl, J. Evarts, D. Carrel, D. Simone és R. Wheeler). Helyette az Ethernet keretekben eltérő csomagtípus kódokat használ. A 3Com-nál panaszkodjunk, ha szerintünk is be kellene tartaniuk a PPPoE specifikációját.
A FreeBSD is csak akkor lesz képes együttműködni ezzel az eszközzel, ha beállítjuk a megfelelő sysctl változót. Ezt a rendszerindítás során automatikusan meg tudjuk tenni az /etc/sysctl.conf módosításával:
net.graph.nonstandard_pppoe=1
vagy közvetlenül az alábbi paranccsal:
# sysctl net.graph.nonstandard_pppoe=1
Sajnos, mivel ez egy rendszerszintű beállítás, ezért a 3Com HomeConnect® ADSL Modem és más normális PPPoE kliens vagy szerver egyszerre nem használható.
Most a PPP ATM feletti (PPP over ATM, PPPoA) beállítását fogjuk bemutatni. A PPPoA az európai DSL szolgáltatók körében igen nagy népszerűségnek örvend.
Az ilyen eszközökhöz tartozó PPPoA támogatás a FreeBSD-ben portként áll rendelkezésre, mivel az ehhez szükséges firmware csak az Alcatel licencelési feltételei szerint terjeszthető, ezért nem lehet része az alap FreeBSD rendszernek.
A szoftver telepítéséhez ezért a Portgyűjteményt kell használnunk. Telepítsük a net/pppoa portot és kövessük a mellékelt utasításokat.
Sok más USB-s eszközhöz hasonlóan az Alcatel SpeedTouch™ USB-nek a gépünkről kell letöltenie a működéséhez szükséges firmware-t. Ez a folyamat FreeBSD alatt automatizálható, tehát ez a másolás minden esetben megtörténik, amikor az eszközt az USB portra csatlakoztatjuk. Ehhez az /etc/usbd.conf állományba a következő adatokat kell beletennünk. Az állományt root felhasználóként tudjuk csak szerkeszteni.
device "Alcatel SpeedTouch USB" devname "ugen[0-9]+" vendor 0x06b9 product 0x4061 attach "/usr/local/sbin/modem_run -f /usr/local/libdata/mgmt.o"
Az usbd, vagyis az USB démon engedélyezéséhez az /etc/rc.conf állományba tegyük bele az alábbit:
usbd_enable="YES"
Emellett még a ppp kapcsolatot is be tudjuk állítani az indítás során. Ehhez mindössze a következő sort kell megadnunk az /etc/rc.conf állományban. Ismét megemlítjük, hogy ezt a műveletet csak a root felhasználóval tudjuk végrehajtani.
ppp_enable="YES" ppp_mode="ddial" ppp_profile="adsl"
Ezután úgy tudjuk szóra bírni a kapcsolatot, ha a net/pppoa porthoz mellékelt ppp.conf állományt használjuk fel kiindulásként.
Az mpd segítségével többféle szolgáltatáshoz, köztük a PPTP-hez hozzá tudunk férni. Az mpd a Portgyűjteményben net/mpd néven található meg. Sok ADSL modemnek szüksége van egy PPTP tunnelre közte és gép között. Ilyen modem például az Alcatel SpeedTouch Home is.
Először magát a portot kell telepítenünk, majd ezután már be tudjuk állítani az mpd-t a saját és a szolgáltatónk igényei szerint. A port a rengeteg leírással megtűzdelt minta konfigurációs állományait a PREFIX/etc/mpd/ könyvtárba teszi. Itt a PREFIX azt a könyvtárat jelöli, ahova a portok kerülnek. Ez alapból a /usr/local/. Az mpd beállításáról szóló teljes dokumentáció a telepítés után elérhető HTML formátumban a PREFIX/share/doc/mpd/ könyvtárban. Íme egy példa az mpd beállítására ADSL kapcsolatok esetében. Az ezzel kapcsolatos beállításaink két állományra bomlanak, melyek közül az első az mpd.conf:
default: load adsl adsl: new -i ng0 adsl adsl set bundle authname felhasználónév set bundle password jelszó set bundle disable multilink set link no pap acfcomp protocomp set link disable chap set link accept chap set link keep-alive 30 10 set ipcp no vjcomp set ipcp ranges 0.0.0.0/0 0.0.0.0/0 set iface route default set iface disable on-demand set iface enable proxy-arp set iface idle 0 open
Az mpd.links állomány tartalmazza a felépítendő kapcsolatra vagy kapcsolatokra vonatkozó információkat. Például az előbbiekhez tartozó mpd.links tartalma ez:
adsl: set link type pptp set pptp mode active set pptp enable originate outcall set pptp self 10.0.0.1 set pptp peer 10.0.0.138
A kapcsolat ezek után pillanatok alatt felépíthető, ha a root felhasználóval kiadjuk a következő parancsot:
# mpd -b adsl
A kapcsolat állapotát a következő paranccsal tudjuk ezután ellenőrizni:
% ifconfig ng0 ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500 inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff
FreeBSD alatt az mpd használata ajánlott az ADSL szolgáltatások eléréséhez.
FreeBSD alatt a net/pptpclient segítségével is tudunk PPPoA típusú szolgáltatásokhoz kapcsolódni.
A net/pptpclient felhasználásával úgy tudunk DSL szolgáltatásokat elérni, ha feltelepítjük a hozzá tartozó portot vagy csomagot, majd módosítjuk az /etc/ppp/ppp.conf állományt. Mind a két műveletet csak root felhasználóként tudjuk lebonyolítani. Ehhez egy ppp.conf állományt lentebb adtunk meg. A ppp.conf állományban található további beállítási lehetőségekről a ppp(8) man oldalon olvashatunk.
adsl: set log phase chat lcp ipcp ccp tun command set timeout 0 enable dns set authname felhasználónév set authkey jelszó set ifaddr 0 0 add default HISADDR
Figyelem: Mivel az előfizetéshez tartozó jelszót a ppp.conf állományba titkosítatlan formában kell szerepeltetnünk, ezért gondoskodjunk róla, hogy senki sem képes olvasni a tartalmát. A most következő parancsokkal beállítjuk, hogy ez az állomány csak a root felhasználó számára legyen olvasható. A részletekért lásd a chmod(1) és chown(8) man oldalakat.
# chown root:wheel /etc/ppp/ppp.conf # chmod 600 /etc/ppp/ppp.conf
Ezzel a paranccsal a DSL útválasztónk felé nyitunk egy tunnelt a PPP kapcsolathoz. Az Ethernetes DSL modemek általában egy előre beállított helyi hálózati IP-címmel rendelkeznek, amelyhez tudunk csatlakozni. Az Alcatel SpeedTouch Home esetében ez a cím a 10.0.0.138. Az útválasztóhoz adott dokumentációban keressük meg, hogy az eszközünkhöz konkrétan milyen cím tartozik. A tunnel megnyitásához és a PPP kapcsolat megindításához a következő parancsot kell kiadnunk:
# pptp cím adsl
Tipp: Az iménti parancs végére még érdemes odatenni az “et” jelet (“&”) is, mivel így a pptp működését a háttérben folytatja.
A parancs hatására a virtuális tunnelt megtestesítő tun eszköz jön létre a pptp és ppp programok között. Miután visszakaptuk a parancssort, vagy a pptp program megerősítette a kapcsolódás sikerességét, a keletkezett járatot így tudjuk ellenőrizni:
% ifconfig tun0 tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500 inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00 Opened by PID 918
Ha nem tudnánk valamiért csatlakozni, akkor először nézzük meg az útválasztónk beállításait, ami általában a telnet vagy egy böngésző segítségével elérhető. Ha még mindig nem vagyunk képesek csatlakozni, akkor a pptp parancs kimenetében és ppp /var/log/ppp.log néven elérhető naplójában kereshetünk árulkodó nyomokat.
Figyelem: Ez a szakasz csak FreeBSD 7.X rendszerekre érvényes.
A következőkben azt mutatjuk be, hogy egy FreeBSD-s gépet miként tudunk egy hálózaton statikus névvel beállítani a SLIP használatával. A dinamikus hálózati nevek használatakor (vagyis amikor a címünk minden egyes tárcsázáskor megváltozhat) egy valamivel bonyolultabb beállításra van szükségünk.
Először is állapítsuk meg, hogy a modemünk melyik soros portra csatlakozik. Sokan /dev/modem néven egy szimbolikus linket hoznak létre a valódi eszközre, például a /dev/cuadN leíróra. Ennek köszönhetően az eszköz tényleges névetől el tudunk vonatkoztatni és soha nem kell módosítanunk semmit, ha a modemet például egy másik portra kell átraknunk. Ugyanis könnyedén kacifántossá tud válni a helyzet, amikor egyszerre kell megváltoztatnunk egy rakat dolgot az /etc könyvtárban és módosítanunk az összes .kermrc állományt!
Megjegyzés: A /dev/cuad0 a COM1 port, a /dev/cuad1 a COM2 és így tovább.
A rendszermag beállításait tartalmazó állományban a következőnek mindenképpen szerepelnie kell:
device sl
Mivel ez általában a GENERIC rendszermagban megtalálható, így ez nem okoz semmilyen gondot, kivéve, hogy ha korábban már kitöröltük.
Vegyük fel az otthoni gépünket, az átjárónkat és a névszervereket az /etc/hosts állományba. Erre álljon itt egy konkrét példa:
127.0.0.1 localhost loghost 136.152.64.181 water.CS.Example.EDU water.CS water 136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway 128.32.136.9 ns1.Example.EDU ns1 128.32.136.12 ns2.Example.EDU ns2
Figyeljünk oda, hogy az
/etc/nsswitch.conf
állományban szereplő
hosts
szakaszban a dns
szó előtt a files
szónak kell megjelennie. Ezek nélkül
mókás dolgok tudnak történni
rendszerünkben.
Szerkesszük át az /etc/rc.conf állományt.
A hálózati nevünket a következő sorban tudjuk megadni:
hostname="az.en.nevem"
Ide a gépünk teljes internetes hálózati nevét kell beírnunk.
Az alapértelmezett átjárót az alábbi sor módosításával tudjuk beállítani úgy, hogy a
defaultrouter="NO"
változó értékét átírjuk:
defaultrouter="slip-gateway"
Készítsük el az /etc/resolv.conf állományt, amelyben majd a következők legyenek:
domain CS.Example.EDU nameserver 128.32.136.9 nameserver 128.32.136.12
Látható, hogy ezek a névfeloldásért felelős szerverek címei. Természetesen a ténylegesen beírandó tartomány (domain) neve és a névszerverek címei mindig az adott környezetünktől függenek.
Állítsuk be egy jelszót a root és toor felhasználóknak (és mindenki másnak, akinek még nem lenne).
Indítsuk újra a számítógépünket és utána győződjünk meg róla, hogy a megfelelő hálózati névvel rendelkezik.
Tárcsázzunk és gépeljük be a slip parancsot, majd ezt követően a gépünk nevét és a jelszót. Ez leginkább a konkrét környezettől függ. Ha a Kermit nevű programot használjuk, akkor egy ilyen szkripttel is próbálkozhatunk:
# a kermit beállítása set modem hayes set line /dev/modem set speed 115200 set parity none set flow rts/cts set terminal bytesize 8 set file type binary # a következő makró felelős a tárcsázásért és a bejelentkezésért define slip dial 643-9600, input 10 =>, if failure stop, - output slip\x0d, input 10 Azonosito:, if failure stop, - output silvia\x0d, input 10 Jelszo:, if failure stop, - output ***\x0d, echo \x0aCONNECTED\x0a
Természetesen a felhasználói nevet és a jelszót a sajátunkra kell benne kicserélnünk. Miután ezzel is megvagyunk, a Kermit paranccsorában a csatlakozáshoz egyszerűen csak írjuk be, hogy slip.
Megjegyzés: Nem javasoljuk, hogy az állományrendszeren a jelszavakat titkosítatlan formában tároljuk. Mindeki csak a saját felelősségére tegyen ilyet.
Hagyjuk el a Kermit programot (a Ctrl-z billentyűkombinációval bármikor fel tudjuk függeszteni a futását) és root felhasználóként írjuk be a következőt:
# slattach -h -c -s 115200 /dev/modem
Ha ezután már képesek vagyunk a
ping paranccsal elérni az
útválasztó másik
oldalán található gépet, akkor
az azt jelenti, hogy sikerült csatlakoznunk! Ha
viszont itt még nem járnánk sikerrel,
akkor az slattach parancsnak ne a
-c
paramétert adjuk meg, hanem a
-a
paramétert.
Tegyük a következőket:
# kill -INT `cat /var/run/slattach.modem.pid`
Ez leállítja az slattach programot. Ne felejtsük el azonban, hogy ezt csak a root felhasználóval tudjuk végrehajtani. Ezután térjünk vissza a kermit programhoz (ha felfüggesztettük volna, akkor ehhez a fg parancsra lesz szükségünk), és lépjünk ki belőle (q).
Az slattach(8) man oldala ehhez a ifconfig sl0 down parancsot javasolja, amellyel lényegében leállítjuk a hozzá tartozó felületet. Igazából a kettő között nincs semmilyen komolyabb eltérés (mivel az (ifconfig sl0 is ugyanezt eredményezi.)
Néha előfordulhat, hogy a modem egyszerűen nem hajlandó eldobni a vonalat. Ilyen esetekben indítsuk el a kermit programot és lépjünk ki megint. Másodjára általában már sikerül.
Ha valamiért ez mégsem válna be, akkor csak nyugodtan kérdezősködjünk a freebsd-net levelezési listán. A tapasztalatok szerint az embereknek eddig a következőkkel voltak problémáik:
Az slattach
meghívásakor sem a -c
, sem
pedig a -a
paramétert nem
adták meg. (Ez ugyan nem végzetes hiba, de
egyes felhasználók szerint ez
segített megoldani a gondokat.)
Az sl0
helyett
s10
-et írtak be (egyes
betűtípusoknál könnyen össze
lehet téveszteni ezeket).
Az ifconfig sl0 segítségével ellenőrizhető a felület állapota. Például ilyet láthatunk:
# ifconfig sl0 sl0: flags=10<POINTOPOINT> inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00
Ha a ping(8) “no route to host” hibaüzenetet ad, akkor az útválasztási táblázattal van a gond. A netstat -r paranccsal gyorsan ki tudjuk listázni a rendszerünkben jelenleg nyilvántartott utakat:
# netstat -r Routing tables Destination Gateway Flags Refs Use IfaceMTU Rtt Netmasks: (root node) (root node) Route Tree for Protocol Family inet: (root node) => default inr-3.Example.EDU UG 8 224515 sl0 - - localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438 inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - - water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438 (root node)
Az előző példákat egy viszonylag forgalmas rendszerből ragadtuk ki. A rendszerünkön megjelenő számok a hálózati aktivitás mértékének függvényei.
Ebben a leírásban igyekszünk bemutatni hogyan kell egy FreeBSD típusú rendszer alatt SLIP szervert beállítani, ami általában annyit jelent, hogy a rendszerünben a távoli SLIP kliensek csatlakozásakor automatikusan elindítjuk a kapcsolatokat.
Ez a szakasz igen szakmai jellegű, ezért az olvasó részéről feltételezünk a témában némi alapismeretet. Ez alatt alapvetően a TPC/IP hálózati protokollt értjük, különös hangsúllyal a hálózatok és hálózati csomópontok címzéséen, a hálózati maszkokon, alhálózatokon, útválasztáson, az olyan útválasztási protokollokon, mint például a RIP. A SLIP beállítása egy betárcsázós szerveren mindezen fogalmak ismeretét igényli, és ha ezekkel még nem lennénk tisztában, akkor olvassuk el például Craig Hunt TCP/IP Network Administration című könyvét (O'Reilly & Associates, Inc.; ISBN: 0-937175-82-X) vagy Douglas Comer TCP/IP protokollról szóló könyveit.
Mindezek mellett még feltételezzük, hogy már beállítottuk a modem(ek)et és a rajtuk keresztüli bejelentkezéshez szükséges állományokat. Ha még nem készítettük volna fel erre a rendszerünket, akkor a 26.4 Szakasz ad részletes tájékoztatást a betárcsázós szolgáltatások beállításáról. A soros vonali eszközmeghajtóval kapcsolatban továbbá érdemes átolvasni a sio(4) oldalt, valamint a ttys(5), gettytab(5), getty(8) és init(8) oldalakat a bejelentkezések modemen keresztüli fogadásáról, illetve talán az stty(1) oldalt a soros port paramétereinek megfelelő beállításáról (mint például a clocal a közvetlenül csatlakozó soros felületek esetében).
A FreeBSD SLIP szerverként általában a következő módon üzemel: a SLIP felhasználó tárcsázza a FreeBSD-s SLIP szerverünket, majd bejelentkezik egy specális SLIP bejelentkezési azonosító használatával, amely a /usr/sbin/sliplogin shellt használja. A sliplogin program az /etc/sliphome/slip.hosts állományban megkeresi a speciális felhasználóhoz tartozó sort, és ha talál egy ilyet, akkor csatlakoztatja a soros vonalat egy rendelkezésre álló SLIP felületre, amelyen aztán a SLIP felültet beállításához lefuttatja az /etc/sliphome/slip.login shell szkriptet.
Például, ha a SLIP felhasználó azonosítója Shelmerg, akkor az /etc/master.passwd állományban a hozzá tartozó bejegyzést nagyjából ilyen:
Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin
Amikor Shelmerg bejelentkezik, a sliplogin az /etc/sliphome/slip.hosts állományban keresni fog egy felhasználó azonosítójához illeszkedő sort. Például tegyük fel, hogy az /etc/sliphome/slip.hosts állományban szerepel egy ilyen sor:
Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
A sliplogin ezt a sor fogja megtalálni, majd a soros vonalat a következő elérhető SLIP felülethez kapcsolja, amelyen ezután végrehajtja az /etc/sliphome/slip.login szkriptet a következő módon:
/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
Ha minden jól megy, akkor az /etc/sliphome/slip.login kiad egy ifconfig parancsot azon a SLIP felületen, amelyre a sliplogin magát csatlakoztatta (amely a fenti példában a 0. SLIP felület volt, és amelyet meg is adtunk slip.login első paramétereként), és így beállítja a helyi IP-címet (dc-slip), a távoli IP-címet (sl-helmer), a SLIP felülethez tartozó hálózati maszkot (0xfffffc00) valamint a további opciókat (autocomp). Ha valami rosszul sülne el, akkor a sliplogin ezekről általában nagyon jó minőségű, információdús üzeneteket készít, amelyeket a syslogd démon pedig a /var/log/messages állományba rögzít. (A syslogd(8) és syslog.conf(5) man oldalak és talán maga az /etc/syslog.conf segíthet kideríteni, hogy a syslogd jelenleg naplóz-e, és ha igen, akkor hova.)
A FreeBSD alap (vagyis a GENERIC) rendszermagja támogatja a SLIP (sl(4)) használatát. Ha viszont saját rendszermagunk van, akkor előfordulhat, hogy beállítások közé fel kell vennünk a következő sort is:
device sl
Alapértelmezés szerint a FreeBSD nem
továbbít semmilyen csomagot. Amennyiben a FreeBSD
SLIP szerverünket
útválasztóként is
működtetni akarjuk, úgy az
/etc/rc.conf állományban a
gateway_enable változót
át kell állítanunk a YES
értékre. Ennek hatására az
újraindítás után is megmarad a
csomagok továbbítása.
A változtatások azonnali életbeléptetéséhez adjuk ki root felhasználóként a következő parancsot:
# /etc/rc.d/routing start
Ha a FreeBSD rendszermag beállítása során segítségre szorulnánk, akkor olvassuk el 8 fejezetet.
Ahogy arra már korábban is utaltunk, az /etc/sliphome könyvtárban három állomány felelős a /usr/sbin/sliplogin beállításáért (lásd sliplogin(8)): a slip.hosts, amelyekben a SLIP felhasználókat és a hozzájuk tartozó IP-címeket adjuk meg; a slip.login, amely általában csak a SLIP felületet állítja be; (az elhagyható) slip.logout, amely a soros vonal bontásakor a slip.login hatását igyekszik visszafordítani.
Az /etc/sliphome/slip.hosts soraiban whitespace karakterekkel tagoltan legalább négy elem szerepel:
a SLIP felhasználó bejelentkezési azonosítója
a SLIP kapcsolat helyi címe (a SLIP szerveréhez képest)
a SLIP kapcsolat távoli címe
hálózati maszk
A helyi és távoli címek lehetnek hálózati nevek is (amelyeket vagy az /etc/hosts, vagy pedig az /etc/nsswitch.conf állományban szereplő beállítások alapján tudunk feloldani IP-címre), illetve a hálózati maszk is lehet egy olyan név, amelyet az /etc/networks fel tud oldani. A példaként bemutatott rendszerünkben az /etc/sliphome/slip.hosts állomány nagyjából így épül fel:
# # login helyi-cím távoli-cím maszk opc1 opc2 # (normal,compress,noicmp) # Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp
A sorok végén az alábbi opciók közül egy vagy több szerepelhet:
normal
— a fejléceket
nem tömörítjük
compress
— a fejlécek
tömörítése
autocomp
— ha a távoli
végpont engedi, akkor
tömörítsük a
fejléceket
noicmp
— az ICMP csomagok
tiltása (így például a
“ping” által generált
csomagok is eldobódnak a
sávszélesség felemésztese
helyett)
A SLIP kapcsolathoz tartozó helyi és távoli címek megválasztása függ attól, hogy egy külön TCP/IP alhálózatot szentelünk-e neki, vagy a SLIP szerverünkön egy “ARP proxy”-t használunk (amely tulajdonképpen nem egy “valódi” ARP proxy, de ebben a szakaszban így fogunk rá hivatkozni). Ha nem vagyunk biztosak benne, hogy melyik módszert válasszuk vagy hogy miként osszuk ki az IP-címeket, akkor nézzünk utána ezekenek a SLIP használatával kapcsolatos előfeltételek között megemlített könyvekben (27.7.2.1 Szakasz) és/vagy konzultáljunk a hálózatunk karbantartójával.
Ha a SLIP klienseknek külön alhálózatokat osztunk ki, akkor a saját IP-címünkből kell létrehoznunk és kiadnunk ezeket. Ezután valószínűleg a SLIP szerverünkön keresztül még meg kell adnunk egy statikus útvonalat legközelebbi IP útválasztó felé.
Minden más esetben az “ARP proxy” módszert kell alkalmaznunk, ahol a SLIP kliensek IP-címeit a SLIP szerver Ethernet alhálózatából osztjuk ki, és ennek megfelelően az /etc/sliphome/slip.login és /etc/sliphome/slip.logout szkripteket módosítanunk kell úgy, hogy az arp(8) segítségével képesek legyenek a SLIP szerver ARP táblázatában kezelni a “proxy ARP” bejegyzéseket.
Egy átlagos /etc/sliphome/slip.login állomány körülbelül ilyen:
#!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # Egy általános slip vonali bejelentkezési állomány. A sliplogin ezt az alábbi # paraméterekkel hívja meg: # 1 2 3 4 5 6 7-n # slipegys. ttyseb. azonosító helyi-cím távoli-cím maszk egyéb-pmek. # /sbin/ifconfig sl$1 inet $4 $5 netmask $6
Ez a slip.login állomány az ifconfig segítségével pusztán beállítja a megfelelő SLIP felülethez tartozó helyi, valamint távoli címet és a hálózati maszkot.
Ha ehelyett azonban az “ARP proxy” módszerét választottuk volna (tehát a SLIP kliensekenek nem akarunk egész alhálózatokat kiutalni), akkor az /etc/sliphome/slip.login állomány eképpen alakul:
#!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # Egy általános slip vonali bejelentkezési állomány. A sliplogin ezt az alábbi # paraméterekkel hívja meg: # 1 2 3 4 5 6 7-n # slipegys. ttyseb. azonosító helyi-cím távoli-cím maszk egyéb-pmek. # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 # A SLIP kliensre vonatkozó ARP kéréseket a mi Ethernet címünkkel # válaszoljuk meg: /usr/sbin/arp -s $5 00:11:22:33:44:55 pub
Láthatjuk, hogy az előbbi slip.login állomány egy arp -s $5 00:11:22:33:44:55 pub paranccsal egészült ki, ami a SLIP szerver ARP táblázatában hoz létre egy ARP bejegyzést. Ez az ARP bejegyzés gondoskodik róla, hogy a SLIP szerver válaszoljon a saját Ethernetes MAC-címével, amikor egy másik IP csomópont a SLIP kliens IP-címe felől érdeklődik.
Amikor a fenti példából indulunk ki, a benne megadott MAC-címet (00:11:22:33:44:55) feltétlenül cseréljük a rendszerünk Ethernet kártyájának MAC-címével, mert különben az “ARP proxy” egyáltalán nem fog működni! A SLIP szerverünk MAC-címét a netstat -i paranccsal deríthetjük ki, amelynek a kimenetében a második sor valahogy így néz ki:
ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116
Ebből derül ki, hogy az adott rendszer valódi MAC-címe a 00:02:c1:28:5f:4a — az arp(8) számára azonban a netstat -i kimenetében szereplő pontokat kettőspontokra kell cserélni, és a tagokat ki kell egészíteni kétkarakteres hexadecimális számokká. Az arp(8) man oldalán tudhatunk meg ennek részleteiről többet.
Megjegyzés: Amikor létrehozzuk az /etc/sliphome/slip.login és /etc/sliphome/slip.logout állományokat, akkor ne felejtsük el hozzájuk beállítani a “végrehajtást” engedélyező bitet sem (tehát ilyenkor mindig adjuk ki a chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout parancsokat is), különben a sliplogin ezeket nem tudja majd elindítani.
Az /etc/sliphome/slip.logout állományra nincs feltétlenül szükségünk (hacsak nem egy “ARP proxy”-t akarunk csinálni), de ha valamiért mégis el akarjuk készíteni, akkor ehhez a következő alapvető slip.logout szkript használható:
#!/bin/sh - # # slip.logout # # Egy logout állomány a slip vonalhoz. A sliplogin ezt a szkriptet a # következő paraméterekkel hívja: # 1 2 3 4 5 6 7-n # slipegys. ttyseb. login helyi-cím távoli-cím maszk opc-pmek. # /sbin/ifconfig sl$1 down
Ha az “ARP proxy” módszert használjuk, és az /etc/sliphome/slip.logout felhasználásával akarjuk a SLIP klienshez tartozó ARP bejegyzést törölni, akkor ebből induljunk ki:
#!/bin/sh - # # @(#)slip.logout # # Egy logout állomány a slip vonalhoz. A sliplogin ezt a szkriptet a # következő paraméterekkel hívja: # 1 2 3 4 5 6 7-n # slipegys. ttyseb. login helyi-cím távoli-cím maszk opc-pmek. # sbin/ifconfig sl$1 down # Ne válaszoljunk többet a SLIP kliensre vonatkozó ARP kérésekre /usr/sbin/arp -d $5
Az arp -d $5 parancs eltávolítja az “ARP proxy” működéséhez bejegyzést, amelyet még a slip.login szkripttel vettünk fel a SLIP kliens bejelentkezésekor.
Talán felesleges ismételgetésnek tűnhet: az /etc/sliphome/slip.logout állománynak létrehozása után állítsuk be a végrehajtásra szóló bitet (vagyis adjuk ki a chmod 755 /etc/sliphome/slip.logout parancsot).
Ha a hálózatunk többi része (lényegében az internet) és a SLIP klienseink között nem az “ARP proxy” módszerrel közvetítjük a csomagokat, akkor a legközelebbi alapértelmezett átjárókhoz minden bizonnyal fel kell vennünk statikus útvonalakat, így a SLIP kliensek alhálózatai a SLIP szerverünkön keresztül ki tudnak jutni.
A legközelebbi alapértelmezett átjárók felé nem minden esetben könnyű felvenni statikus útvonalakat (vagy egyes esetekben pedig egyenesen lehetetlen, mivel nincsenek meg hozzá a jogaink). Ha az intézményünkön belül több átjáró is megtalálható, akkor bizonyos útválasztók, például a Cisco és Proteon gyártmányúak esetében nem csak a SLIP alhálózatok felé kell beállítanunk statikus útvonalakat, hanem azt is meg kell mondanunk, hogy ezekről milyen más útválasztók is tudjanak. Pontosan emiatt a statikus útválasztás beüzemeléséhez szükségünk lesz egy kis utánajárásra és próbálgatásra.
Az “elektronikus levelezés”, más néven e-mail, a kommunikáció egyik legjobban elterjedt formája. Ebben a fejezetben bemutatjuk, hogyan futtassunk FreeBSD-n levelező szervert, illetve hogyan küldjünk és fogadjunk e-maileket a FreeBSD használatával. Ez azonban semmiképpen sem tekinthető egy teljes referenciának és tulajdonképpen számos fontos tényezőről szót sem ejtünk. A témára úgy kaphatunk egy sokkal átfogóbb rálátást, ha a B Függelékben felsorolt remek könyveket is elolvassuk.
A fejezet elolvasása során megismerjük:
milyen szoftverkomponensek játszanak szerepet az elektronikus levelek küldésében és fogadásában;
FreeBSD-ben hol találhatóak a sendmail konfigurációs állományai;
mi a különbség a helyi és távoli postaládák között;
hogyan akadályozzuk meg, hogy a levelező szerverünk a kéretlen levélszemetet továbbítson;
rendszerünkön hogyan telepítsünk és állítsunk be más levelező szervereket a sendmail helyett;
hogyan oldjuk meg a levelező szerverekkel kapcsolatban felmerülő általános problémákat;
hogyan használjuk az SMTP protokollt az UUCP protokollal;
hogyan kell rendszerüket csak levélküldésre beállítani;
hogyan levelezzünk betárcsázós kapcsolattal;
hogyan növeljük rendszerünk védelmét az SMTP hitelesítésének engedélyezésével;
hogyan telepítsünk és használjunk a levelek küldésére és fogadására például a mutthoz hasonló levelező klienseket;
hogyan töltsük le leveleinket egy távoli POP vagy IMAP szerverről;
hogyan alkalmazzunk automatikusan adott szabályokat vagy szűrőket az érkező levelekre.
A fejezet elolvasása előtt ajánlott:
az internet-csatlakozásunk megfelelő beállítása (31 fejezet);
a névfeloldás beállítása (29 fejezet);
a külső fejlesztésű alkalmazások telepítésének ismerete (4 fejezet).
Öt fontosabb részre bonthatjuk a levelezést. Ezek: a felhasználói program (mail user agent), a levélküldő démon (mail transfer agent), a névfeloldás, a helyi vagy távoli postaláda és természetesen maga a levelező szerver (mail host).
Ide soroljuk a különböző parancssoros programokat, mint például a mutt, pine, elm és mail, valamint a különféle grafikus alkalmazásokat, mint például a balsa és az xfmail, csak hogy felsoroljuk néhány újabb, egy webböngészőhöz hasonlóan “kifinomult” eszközt is. Ezek a programok egyszerűen átküldik az elektronikus levelekkel kapcsolatos tranzakciókat a helyi “levelező szervernek” vagy meghívják valamelyik levélküldő démont, esetleg közvetlenül a TCP protokollon keresztül kézbesítenek.
A FreeBSD alapból a sendmail nevű programot ajánlja fel erre a célra, de támogat más levelező szervereket is, ezek közül meg is említünk néhányat ízelítőként:
exim
postfix
qmail
Ez a démon általában két feladatot lát el — a beérkező levelek fogadásáért és a kimenő levelek elküldéséért felelős. Nem tartozik azonban a feladatai közé, hogy a POP vagy IMAP protokollokhoz hasonlóan olvashatóvá tegye a leveleinket, illetve csatlakozni engedjen a helyi mbox vagy Maildir formátumú postaládáinkhoz. Ezekhez a műveletekhez egy külön démon szükségeltetik.
Figyelem: A sendmail régebbi változatai tartalmaznak olyan komoly biztonsági hibákat, amelyek kihasználásával az illetéktelen behatolók helyi és/vagy távoli hozzáférést tudnak szerezni a gépünkön. Az ilyen jellegű problémák elkerülése érdekében igyekezzünk mindig a legfrissebb verzióját használni. Vagy a FreeBSD Portgyűjteményéből telepítsünk fel egy másik levélküldő démont.
A névfeloldás (Domain Name System, DNS) és a hozzá tartozó named démon nagy szerepet játszik az elektronikus levelek továbbításában. A démon a leveleket úgy küldi át az egyik gépről a másikra, hogy a névfeloldáson keresztül megkeresi azt a távoli gépet, amelynek a leveleket címezték. Ez a folyamat szintén végbemegy, amikor egy távoli gépről levelet küldenek a mi szerverünkre.
A DNS valósítja meg a hálózati nevek és az IP-címek összerendelését valamint ez tárolja el a levélküldésre vonatkozó információkat is, amelyeket MX rekordoknak hívnak. Az MX (Mail eXchanger, “levélváltó”) rekord adja meg azt a gépet vagy azokat a gépeket, amelyek az adott névtartományban fogadják a leveleket. Ha a hálózati nevünkhöz vagy tartományunkhoz nem tartozik MX rekord, akkor a levél közvetlenül a gépünkre vándorol feltéve, hogy rendelkezik olyan A rekorddal, amely összerendeli a gépünk nevét az IP-címével.
A host(1) parancs használatával az alábbi példához hasonlóan tetszőleges tartomány MX rekordját meg tudjuk nézni:
% host -t mx FreeBSD.org FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org
A tartományunkhoz tartozó leveleket fogadását a levelező szerver végzi. Összegyűjti a tartományunkba küldött összes levelet és ezeket a beállításainktól függően vagy mbox (a levelek tárolásának alapértelmezett módja) vagy pedig Maildir formátumban eltárolja. Ahogy eltárolt egy levelet, úgy helyben egyből el is tudjuk olvasni például a mail(1) vagy a mutt használatával, illetve távolról a POP vagy IMAP és a hasonló protokollokkal tudjuk elérni és begyűjteni. Ezért tehát ha csak a helyi gépen kívánjuk olvasni a leveleinket, akkor ahhoz egyáltalán nem kell POP vagy IMAP szervert telepítenünk.
A távoli postaládák eléréséhez tudnunk kell csatlakozni egy POP vagy IMAP szerverhez. Ezeken a protokollokon keresztül tudják a felhasználók minden különösebb nehézség nélkül elérni távolról a helyi postaládáikat. Noha a POP és az IMAP segítségével egyaránt el tudjuk így érni a postaládákat, az IMAP használatának mégis több előnye van, íme néhány közülük:
Az IMAP a levelek leszedése mellett tárolni is képes a távoli szerveren.
Az IMAP támogat párhuzamos lekéréseket.
Az IMAP hihetetlenül hasznos tud lenni lassabb összeköttetések esetében, mivel lehetővé teszi a felhasználók számára, hogy csak az üzenetek vázát töltsék le és ne az egészet. Továbbá a szerver és a kliens közti adatmozgás csökkentése érdekében képes bizonyos feladatokat a szerveren elvégezni, például keresni.
Egy POP vagy IMAP szerver telepítéséhez az alábbi lépések megtétele szükséges:
Válasszuk ki az igényeinket legjobban kielégítő IMAP vagy POP szervert. A következő POP és IMAP szerverek eléggé elterjedtek és egyben remek példák:
qpopper
teapop
imap-uw
courier-imap
A Portgyűjteményből telepítsük fel a kiválasztott POP vagy IMAP démont.
Ha szükséges, akkor a POP vagy IMAP szerver betöltéséhez írjuk át az /etc/inetd.conf állományt.
Figyelem: Meg kell említenünk, hogy mind a POP és az IMAP az összes információt, tehát belértve a felhasználók neveit és jelszavait titkosítatlan formában továbbítja. Ez azt jelenti, hogy ha ezeket a protokollokat biztonságos módon szeretnénk elérni, akkor az ssh(1) használatával hozzunk létre hozzá egy tunnelt és azon keresztül használjuk. Erről részletesebben a 14.11.8 Szakaszban olvashatunk.
A helyi postaládákat a szerveren levő levelező kliensek közvetlen használatával érhetjük el. Ilyen alkalmazások például a mutt vagy a mail(1).
A levelező szerver az a szerver, amely a gépünk vagy akár az egész hálózatunk irányába érkező levelek fogadásáért és elküldéséért felelős.
A sendmail(8) a FreeBSD alapértelmezett levéltovábbító ügynöke (Mail Transfer Agent, MTA). A sendmail feladata fogadni a levelező kliensektől (Mail User Agent, MUA) érkező leveleket és kézbesíteni azokat a konfigurációs állományában megadott megfelelő levelezőnek. A sendmail hálózati kapcsolatokat is fogad, képes a helyi postaládákba vagy akár más programoknak is leveleket továbbítani.
A sendmail a következő állományban tárolja beállításait:
Állomány | Szerep |
---|---|
/etc/mail/access | A sendmail által engedélyezett hozzáféréseket tároló adatbázis |
/etc/mail/aliases | A postaládák álnevei |
/etc/mail/local-host-names | Azon nevek felsorolása, amelyek számára a sendmail leveleket fogad |
/etc/mail/mailer.conf | A levelező programok beállításai |
/etc/mail/mailertable | A levelező programok kézbesítési táblázata |
/etc/mail/sendmail.cf | A sendmail központi beállításait tároló állomány |
/etc/mail/virtusertable | Virtuális felhasználók és tartományok táblázatai |
Az engedélyezett hozzáféréseket
tároló adatbázis tartalmazza milyen
hálózati neveken vagy IP-címeken lehet
elérni a helyi levelező szervert és azok
milyen típusú hozzáférést
kapnak. A gépek az OK
(rendben),
REJECT
(visszautasít),
RELAY
(továbbítás)
beállításokat alkalmazhatjuk, vagy
egyszerűen meghívhatjuk hozzájuk a
sendmail hibakezelő
rutinját egy adott kézbesítési
hibával. Ha egy gépet az OK
beállítással veszük fel a
listára, ami egyébként
alapértelmezés, akkor ez a gép levelet tud
küldeni egészen addig, amíg a
végső cél a helyi gép marad. A
REJECT
beállítással
felsorolt gépek számára semmiféle
levelezés nem engedélyezett. Ha pedig egy
gép mellett a RELAY
beállítás jelenik meg, akkor a szerveren
keresztül tetszőleges címre
küldhet.
Példa 28-1. A sendmail elérését szabályozó adatbázis beállítása
cyberspammer.com 550 Nem szeretjuk a spammereket FREE.STEALTH.MAILER@ 550 Nem szeretjuk a spammereket another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY
Ebben a példában öt bejegyzést láthatunk. A táblázat bal felének valamelyik sorára illeszkedő küldőkre a táblázatban a sor jobb felén megjelenő cselekvés érvényesül. Az első két sorban a sendmail hibakezelő rutinjának adunk át hibakódokat. A hozzá tartozó üzenet akkor fog megjelenni a távoli gépen, amikor a tőle érkező levél illeszkedik a bal oldali szabályra. Az ezeket követő bejegyzésben visszalökünk minden olyan levelet, amely az internetről egy adott számítógéptől érkezik, például az another.source.of.spam címről. A következő bejegyzésben az okay.cyberspammer.com címről elfogadjuk a kapcsolódást, ami viszont sokkal pontosabb megjelölés a fentebb szereplő cyberspammer.com sornál. A pontosabban kifejtett nevek felülbírálják a kevésbé pontosan megnevezetteket. Végül az utolsó bejegyzésben engedélyezzük a levelek továbbküldését minden olyan gép számára, amelynek címe a 128.32 előtaggal kezdődik. Ezek tehát képesek ezen a levelező szerveren keresztül bárhova leveleket küldeni.
Az állomány módosítása után az adatbázis frissítéséhez mindig le kell futtatnunk egy make parancsot az /etc/mail/ könyvtárban.
Az álneveket tartalmazó adatbázis virtuális postaládákat sorol fel, amelyek más felhasználókra, állományokra, programokra vagy további álnevekre vonatkozhatnak. Íme néhány példa az /etc/mail/aliases állományban szereplő bejegyzésekre:
Példa 28-2. Virtuális postaládák
root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail"
A formai szabályok egyszerűek: a kettőspont
bal oldalára kell írni azt a
postaládát, amely a jobb oldalán levő
célokra bomlik. A példa első sorában
egyszerűen megfeleltetjük a root
postaládáját a
localuser
postaládájának, majd ezt a nevet
keressük az álnevek adatbázisában. Ha
nem találunk már rá illeszkedést,
akkor az üzenetet a localuser
nevű helyi felhasználónak
továbbítjuk. A következő sorban
címek listáját láthatjuk. Ennek
megfelelően a ftp-bugs
postaláda címére küldött levelek
három további helyi postaládára
mennek tovább: ezek név szerint a
joe, eric és
paul felhasználók
postaládái. Itt a távoli
postaládák
<felhasználó@példa.hu>
alakban
adhatóak meg. A következő sor az
állományok használatát
példázza, ahol konkrétan a
/dev/null állományba
irányítjuk át az adott címre
érkező leveleket. Az utolsó sorban pedig a
programok használatára láthatunk
példát, ahol ebben az esetben a levél egy
UNIX-os csövön keresztül a
/usr/local/bin/procmail szabványos
bemenetére kerül.
Ha megváltoztatjuk ezt az állományt, akkor utána az adatbázis frissítéséhez ne felejtsük el meghívni a make parancsot az /etc/mail/ könyvtárban.
Ebben az állományban adhatjuk meg, hogy a sendmail(8) milyen hálózati neveket fogadjon el helyi hálózati névként. Ide kell raknunk azokat a tartományokat vagy címeket, amelyektől a sendmail leveleket fogad el. Például, ha a levelező szerver az minta.com tartományból és a level.minta.com címről fogad el leveleket, akkor a local-host-names valahogy így fog kinézni:
minta.com level.minta.com
Az állomány módosításakor a sendmail(8) programot újra kell indítani a változások érvényesítéséhez.
Ahogy a sendmail központi konfigurációs állománya, a sendmail.cf irányítja a sendmail átfogó viselkedését, beleértve mindent az e-mail címek átírásától kezdve a távoli szervereknek küldött elutasító üzenetek küldéséig. Mivel ennyire sokfajta szerepet tölt be egyszerre, ezért ez a konfigurációs állomány meglehetősen összetett és a részletezése meghaladná ennek a leírásnak a határait. Szerencsére az átlagos levelező szerverek esetében ezt az állományt nagyon ritkán kell módosítani.
A sendmail központi konfigurációs állománya a sendmail lehetőségeit és viselkedését meghatározó m4(1) makrókból építhető fel. A pontosabb részleteket a /usr/src/contrib/sendmail/cf/README állományban találjuk meg.
Az állomány megváltoztatása után a módosítások érvényesítéséhez újra kell indítani a sendmail programot.
A virtusertable állomány képezi le a virtuális tartományokhoz tartozó címeket valódi postaládák címeire. Ezek a postaládák lehetnek helyiek, távoliak, az /etc/mail/aliases állományban megadott álnevek vagy állományok.
Példa 28-3. Példa a virtuális tartományok leképezésére
root@minta.com root postmaster@minta.com postmaster@noc.minta.net @minta.com joe
A fenti példában megadtunk egy
leképezést a minta.com tartományhoz. Ez az
állomány úgy dolgozódik fel, hogy
fentről lefelé illesztődnek a címek,
egészen az első egyezésig. Az első
bejegyzés szerint a <root@minta.com>
a helyi
root felhasználó
postaládájára képződik le. A
következő bejegyzés szerint a
<postmaster@minta.com>
a noc.minta.net címen
található postmaster
nevű felhasználó
postaládájára képződik le.
Végezetül, ha a minta.com címről eddig
még semmi sem illeszkedett volna, akkor az utolsó
leképezés veszi át, amely az minta.com tartományon
belül az összes többi címre
küldött levelet a helyi joe
nevű felhasználó
postaládájára képezi le.
Ahogy arról már korábban szó esett, a FreeBSD alapból tartalmazza a sendmail programot mint levéltovábbító ügynököt (MTA, Mail Transfer Agent). Ennélfogva alapértelmezés szerint ez a felelős a kimenő és beérkező levelek kezeléséért.
Számtalan okból eredően egyes rendszergazdák azonban mégis szeretnék lecserélni a rendszerükhöz tartozó levéltovábbítót. Ennek oka lehet egyszerűen csak annyi, hogy ki akarunk próbálni egy másik programot vagy éppen egy olyan eszközre van szükségünk, amely kizárólag csak máshol található meg. Szerencsére a FreeBSD megkönnyíti ezt a váltást.
A levéltovábbítók széles köre elérhető. A FreeBSD Portgyűjteményéből elindulva sok ilyen programot találhatunk. Természetesen teljesen mindegy, hogy melyik levéltovábbítót választjuk egészen addig, amíg képesek vagyunk FreeBSD alatt rendesen futtatni.
Kezdjük tehát az új levéltovábbító telepítésével. Miután sikerült telepíteni, lehetőségünk van eldönteni, hogy valóban eleget tesz-e az igényeinknek, sőt az új szoftvert még az előtt be tudjuk állítani, hogy átvenné a sendmail helyét. Vigyázzunk azonban, hogy az új szoftver telepítésekor ne írjon felül olyan rendszerszintű binárisokat, mint például a /usr/bin/sendmail. Másrészt az új levelező szoftvert szolgálatba helyezése előtt mindenképpen fontos megfelelően beállítanunk.
A kiválasztott levéltovábbító beállításával kapcsolatban olvassuk el a hozzá tartozó dokumentációt.
Figyelem: Amikor letiltjuk a sendmail kimenő levél szolgáltatását, soha ne felejtsük el pótolni valamilyen más levelező rendszerrel. Ha nem így cselekszünk, akkor például a periodic(8) és a hozzá hasonló programok nem lesznek képesek a tőlük megszokott módon e-mailben elküldeni a futásuk eredményét. A rendszer bizonyos részei ráadásul egy működő, sendmail-kompatibilis rendszert feltételeznek. Ha letiltása után az alkalmazások továbbra is a sendmail segítségével próbálnak levelet küldeni, akkor ez a levél a sendmail inaktív sorába kerülhet, ahonnan soha nem kerül kézbesítésre.
A sendmail teljes leállításához, beleértve a kimenő levelekhez tartozó szolgáltatást is, a következőket kell megadni az /etc/rc.conf állományban:
sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO"
Ha csak a sendmail beérkező levelekre vonatkozó szolgáltatását akarjuk tiltani, akkor ahhoz az /etc/rc.conf állományban a következőt állítsuk be:
sendmail_enable="NO"
A sendmail indításával kapcsolatos további beállításokat az rc.sendmail(8) man oldalon találjuk.
Az új levéltovábbítót úgy tudjuk elindítani a rendszerrel együtt, ha az /etc/rc.conf állományba felvesszük a következő sort, például a postfix esetében:
# echo 'postfix_enable="YES"' >> /etc/rc.conf
Az új levéltovábbító így most már magától el fog indulni a rendszer indításakor.
A sendmail annyira elterjedt szabványos szoftver a UNIX rendszereken, hogy egyes szoftverek egyszerűen feltételezik a jelenlétét. Emiatt sok levéltovábbítóhoz tartozik egy sendmail kompatibilis parancssoros felület is, amellyel igyekeznek megkönnyíteni a sendmail “gyors” lecserélését.
Ennek következtében tehát, ha egy másik levelező eszközt használunk, akkor valamilyen módon meg kell bizonyosodnunk róla, hogy a szabványos sendmail binárisok, mint például a /usr/bin/sendmail, valóban a kiválasztott levéltovábbítot fogják aktiválni. Szerencsére a FreeBSD pontosan emiatt tartalmaz egy mailwrapper(8) nevű rendszert.
Amikor a sendmail telepítése szerint működik, valami hasonlót fogunk találni az /etc/mail/mailer.conf állományban:
sendmail /usr/libexec/sendmail/sendmail send-mail /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail newaliases /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail
Ez azt jelenti, hogy amikor az itt felsorolt általános parancsok közül lefuttatjuk valamelyiket (például magát a sendmail parancsot), akkor a rendszer magától meghívja a sendmail néven szereplő wrapper programot, amely pedig a mailer.conf alapján kideríti, hogy az adott esetben a /usr/libexec/sendmail/sendmail hívására van szükség. Ez a rendszer megkönnyíti az alapértelmezett sendmail funkciók helyében lefuttatandó binárisok átállítását.
Így tehát, ha a /usr/local/supermailer/bin/sendmail-compat állományt akarjuk futtatni a megszokott sendmail helyében, akkor az /etc/mail/mailer.conf állományt a következőképpen kell módosítanunk:
sendmail /usr/local/kedvenclevelező/bin/sendmail-compat send-mail /usr/local/kedvenclevelező/bin/sendmail-compat mailq /usr/local/kedvenclevelező/bin/mailq-compat newaliases /usr/local/kedvenclevelező/bin/newaliases-compat hoststat /usr/local/kedvenclevelező/bin/hoststat-compat purgestat /usr/local/kedvenclevelező/bin/purgestat-compat
Ahogy a céljainknak megfelelően mindent beállítottunk, akkor vagy egyszerűen leállítjuk a sendmail neve alatt futó programokat és helyettük elindítjuk az új szoftverhez tartozókat, vagy csak újraindítjuk a gépet. Az újraindítással mellesleg ellenőrizhetjük azt is, hogy jól állítottuk be a rendszerünket és az új levélküldő tényleg elindul a rendszerünkkel együtt.
Előfordulhat, hogy a hivatkozni kívánt gép valójában egy másik tartományban szerepel. Például, ha az ize.mize.edu gépen vagyunk és a vagyis nevű gépet akarjunk innen elérni a mize.edu tartományban, akkor a teljes hálózati nevével, vagyis a vagyis.mize.edu néven kell rá hivatkoznunk, nem pedig egyszerűen csak vagyis néven.
Régebben egyébként ezt a BSD-típusú BIND névfeloldók megengedték. A FreeBSD jelenlegi változatai azonban már olyan BIND verziót tartalmaznak, amelyek alapértelmezés szerint már nem engedik a tartományunkon kívüli relatív nevek használatát. Tehát a vagyis vagy a vagyis.ize.mize.edu gép lesz, vagy a legfelső, gyökér tartományban keresi a rendszer.
Ez eltér a korábbi viselkedéstől, ahol a keresés folytatódott a vagyis.mize.edu és vagyis.edu tartományokban is. Az RFC 1535 elolvasásából ki fog derülni, hogy miért nem vált be ez a gyakorlat és hogy miért tekinthető még akár biztonsági résnek is.
Ezt a problémát egyébként megoldhatjuk annyival, hogy az /etc/resolv.conf állományba a
search ize.mize.edu mize.edu
sor helyett a
domain ize.mize.edu
sort írjuk be. Arra viszont ügyeljünk, hogy a keresési rend ne lépje át a “helyi és nyilvános adminisztráció között meghúzódó határt”, ahogy azt az RFC 1535 nevezi.
Ezt a sendmail gyakran ismértelt kérdései között a következőképpen válaszolták meg:
A következő hibaüzenetet kapom: 553 MX list for taromány.net points back to felé.tartomány.net 554 felhasználó@tartomány.net... Local configuration error Hogyan oldható meg ez a probléma? Azt kértük, hogy a tartományba (például tartomány.net) küldött levél az MX rekord felhasználásával egy adott gépre legyen átirányítva (ebben az esetben ez a felé.tartomány.net), de a továbbítást végző gép nem ismeri fel magát a tartomány.net címen. Vegyük fel a tartomány.net tartományt az /etc/mail/local-host-names állományba [melyet a 8.10 előtti verziókban /etc/sendmail.cw állománynak hívnak] (ha a FEATURE(use_cw_file) beállítást használjuk) vagy tegyük hozzá a “Cw tartomány.net” sort az /etc/mail/sendmail.cf állományhoz.
A sendmail GYIK a http://www.sendmail.org/faq/ címen található meg (angolul) és mindenképpen javasolt elolvasni, ha “fel szeretnénk piszkálni” a levelező rendszerünk beállításait.
Egy helyi hálózaton levő FreeBSD-s gépet akarunk tehát az internethez kapcsolni. Ez a FreeBSD-s gép lesz a helyi hálózat leveleket továbbító átjárója. A PPP kapcsolat nem dedikált.
Legalább két módon meg tudjuk oldani. Az egyik módszer szerint az UUCP használatára lesz szükségünk.
A másik módszer szerint szereznünk kell egy éjjel-nappal üzemelő internetes szervert, amely majd szolgáltatja a másodlagos MX rekordot a tartományunkhoz. Például, ha a cégünk tartománya a cég.hu és az internet-szolgáltatónk a szolgáltató.net névre beállította a tartományunkhoz a másodlagos MX rekordokat:
cég.hu. MX 10 cég.hu. MX 20 szolgáltató.net.
Végső címzettként csak egy gépet kell megadni (az /etc/mail/sendmail.cf állományba a cég.hu címhez tegyük hozzá a Cw cég.hu sort).
Amikor a leveleket küldeni akaró sendmail megpróbál kézbesíteni, először hozzánk (cég.hu) próbál csatlakozni a modemes összeköttetésen keresztül. Ez valószínűleg időtúllépéssel befejeződik, mivel nem vagyunk fenn minden pillanatban a neten. A sendmail ekkor automatikusan a másodlagos MX rekord által megadott címre küldi a levelet, tehát a szolgáltatónkhoz (szolgáltató.net). Ez a másodlagos MX cím próbálja majd időlegesen elérni a gépünket és kézbesíteni a leveleket az elsődleges MX rekord által megadott gépre (cég.hu).
A bejelentkezéskor ezért egy hasonló szkriptet kell lefuttatnunk:
#!/bin/sh # Tegyük a /usr/local/bin/pppmyisp állományba: ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp
Ha készítünk egy külön bejelentkező szkriptet a felhasználók számára, akkor a sendmail -qRcég.hu parancsot is használhatjuk a fenti szkript helyett. Ezzel a cég.hu sorában található összes levél azonnal feldolgozásra kerül.
A helyzetet így lehetne még jobban pontosítani:
Az alábbi üzenet a FreeBSD Internet service provider's levelezési lista archívumából származik.
> we provide the secondary MX for a customer. The customer connects to > our services several times a day automatically to get the mails to > his primary MX (We do not call his site when a mail for his domains > arrived). Our sendmail sends the mailqueue every 30 minutes. At the > moment he has to stay 30 minutes online to be sure that all mail is > gone to the primary MX. > > Is there a command that would initiate sendmail to send all the mails > now? The user has not root-privileges on our machine of course. In the “privacy flags” section of sendmail.cf, there is a definition Opgoaway,restrictqrun Remove restrictqrun to allow non-root users to start the queue processing. You might also like to rearrange the MXs. We are the 1st MX for our customers like this, and we have defined: # If we are the best MX for a host, try directly instead of generating # local config error. OwTrue That way a remote site will deliver straight to you, without trying the customer connection. You then send to your customer. Only works for “hosts”, so you need to get your customer to name their mail machine “customer.com” as well as “hostname.customer.com” in the DNS. Just put an A record in the DNS for “customer.com”.
Az idézet fordítása:
> Másodlagos MX rekordot biztosítunk az ügyfeleinknek. Az ügyfelek ezután automatikusan > csatlakoznak naponta akár többször is a szolgáltatásunkhoz és leszedik az elsődleges MX > rekordhoz tartozó leveleket. (Nem szólunk neki, amikor a tartományához levél > érkezik.) A sendmail programunk minden 30 percben elküldi a sorban felhalmozódott > leveleket. Tehát jelen pillanatban legalább 30 percig fenn kell lennie az ügyfélnek, hogy > rendben megkapja az elsődlegesre MX rekordra. > > Létezik valamilyen parancs a sendmail programhoz, amellyel azonnal lekérhetjük az összes > levelünket? A felhasználómnak természetesen nincsenek rendszergazdai jogosultságai az adott > gépen. A sendmail.cf “privacy flags” beállításai között van egy definíció, az Opgoaway,restrictqrun. Vegyük ki innen a restrictqrun beállítást, amivel a nem root felhasználók is megindíthatják a sor feldolgozását. Valószínűleg az MX-ek átrendezésére is szükség lesz. Mi vagyunk az első MX az ilyen típusú ügyfelek számára, és ezt adtuk meg: # Ha mi vagyunk a legjobb MX a levél számára, akkor ne generáljunk # helyi beállítási hibát, hanem próbálkozzunk közvetlenül. OwTrue Ezzel már a távoli gép közvetlenül nekünk küld anélkül, hogy próbálkozna az ügyfél kapcsolatával. Ezt majd továbbküldjünk az ügyfélnek. Ez csak hálózati nevek esetében működik, tehát az ügyfelünknek el kell neveznie a leveleket fogadó gépét “customer.com”-nak, valamint a fel kell venni a “hostname.customer.com” címet is a DNS-be. Ehhez egyszerűen csak elegendő egy A rekordot betenni a “customer.com”-hoz.
A FreeBSD alapértelmezett telepítése során a sendmail úgy állítódik be, hogy csak arról a gépről küldhetünk vele levelet, ahol fut. Például, ha POP szerver is elérhető, akkor a felhasználók meg tudják nézni a leveleiket az iskolából, munkából vagy bármilyen más távoli helyről, de leveleket onnan továbbra sem tudnak küldeni. Általában pár pillanattal a próbálkozás után a MAILER-DAEMON küldeni fog egy “5.7 Relaying Denied” (“5.7 A továbbítás nem engedélyezett”) üzenetet.
Több lehetőségünk is van ennek megkerülésére. Az a legegyszerűbb módszer, ha az internet-szolgáltatónk címét felvesszük az /etc/mail/relay-domains állományba. Például így:
# echo "az.internet.szolgáltató.net" > /etc/mail/relay-domains
Az állomány létrehozása vagy módosítása után újra kell indítanunk a sendmail programot. Ez remekül működik abban az esetben, ha rendszergazdák vagyunk és nem akarunk a helyi gépről levelet küldeni, vagy egy másik gépen vagy akár másik internet-szolgáltatóval akarunk valamilyen kattingatós levelező programot használni. Olyankor is nagyon hasznos lehet, amikor csak egy vagy két e-mail hozzáférést állítottunk be. Ha egyszerre több címet is fel szeretnénk venni, akkor nyissuk meg ezt az állományt a kedvenc szövegszerkesztőnkkel és írjuk be a tartományokat, soronként egyet:
saját.internet.szolgáltató.net másik.internet.szolgáltató.com felhasználók-internet.szolgáltató.ja www.minta.org
Innentől kezdve a listában szereplő bármelyik gépről tudunk levelet küldeni (feltéve, hogy az adott felhasználó hozzáfér a gépünkhöz). Ezzel gyönyörűen megoldhatjuk, hogy a felhasználóink képesek legyenek távolról is levelet küldeni a rendszerünkön keresztül anélkül, hogy mások pedig szemetet küldenének át rajtunk.
A következő szakaszban szóba kerülnek olyan komolyabb témák, mint például a levelek konfigurációja és a levelezés beállítása az egész tartomány számára.
Alapból képesnek kell lennünk leveleket küldeni külső gépekre egészen addig, amíg az /etc/resolv.conf állomány a megfelelő beállításokat tartalmazza vagy egy saját névszervert futtatunk. Ha szeretnénk, hogy a gépünkre érkező levelek elérjék a FreeBSD-s gépünkön futó levéltovábbító ügynököt (például a sendmail programot), akkor erre két módszer kínálkozik:
Futtassunk saját névszervert és hozzunk létre magunknak egy tartományt. Például FreeBSD.org.
Közvetlenül a gépünkre küldessük a leveleket. Ezt úgy tehetjük meg, ha egyből a gépünkhöz tartozó DNS névre küldetjük a leveleket. Például az enyem.FreeBSD.org címre.
Függetlenül attól, hogy a fentiek közül melyik megoldást választjuk, a levelek csak akkor tudnak eljutni közvetlenül a gépünkre, ha állandó, statikus IP-címmel rendelkezünk (tehát nem dinamikus címmel, amit általában a betárcsázós PPP kapcsolatokhoz szoktak kiosztani). Ha tűzfal mögött vagyunk, akkor valamilyen módon felénk kell irányítani az SMTP forgalmat is. Ha közvetlenül a gépünkön akarjuk fogadni a leveleket, akkor a következő kettő közül az egyik mindenképpen kelleni fog:
Gondoskodjunk róla, hogy a hozzánk tartozó DNS-ben (legkisebb sorszámú) MX rekord a gépünk IP-címére mutat.
Gondoskodjunk róla, hogy a hozzánk tartozó DNS-ben nincs semmilyen MX rekord a gépünkhöz.
A fentiek közül bármelyik elég ahhoz, hogy közvetlenül a gépünkre érkezzen meg a levél.
Próbáljuk ki:
# hostname enyem.FreeBSD.org # host enyem.FreeBSD.org enyem.FreeBSD.org has address 204.216.27.XX
Ha ezt látjuk, akkor minden gond nélkül
lehet küldeni levelet a <nevem@enyem.FreeBSD.org>
a címre
(feltételezve, hogy a sendmail
megfelelően működik az enyem.FreeBSD.org címen).
Ha viszont ehhez hasonlót tapasztalunk:
# host enyem.FreeBSD.org enyem.FreeBSD.org has address 204.216.27.XX enyem.FreeBSD.org mail is handled (pri=10) by kozpont.FreeBSD.org
A gépünkre (enyem.FreeBSD.org) küldött összes levelet a kozpont szedi össze ugyanazon felhasználói névvel ahelyett, hogy közvetlenül a gépünkre küldeni ezeket.
Az iménti adatokat a DNS szerver határozza meg. A levelek továbbításával kapcsolatos információkat az MX mint Mail eXchange DNS-rekord tárolja. Ha nincs ilyen MX rekord, akkor az IP-cím alapján közvetlenül az adott géphez kerül a levél.
Például a freefall.FreeBSD.org MX rekordja hajdanán így nézett ki:
freefall MX 30 mail.crl.net freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com
Láthatjuk, hogy a freefall esetében több MX bejegyzés is szerepel. A legalacsonyabb MX-számú gép fogja kapni az erre a címre beérkező leveleket, amennyiben elérhető. Ha valamilyen okból nem érhető el, akkor helyette ideiglenesen a többiek (melyeket néha csak “tartalék MX-eknek” neveznek) veszik át a levelet és átadják a legalacsonyabb számúnak, amint az újra elérhetővé válik.
A tartalék jelleggel megadott MX gépek akkor érnek ténylegesen valamit, ha teljesen máshonnan csatlakoznak az internethez. Az internet szolgáltató vagy egy ismerősünk gépe valószínűleg minden további nélkül segít ennek megoldásában.
Egy levelező szerver beállításához valahogy meg kell tudnunk oldalni, hogy a különböző munkaállomásokra küldött levelek közvetlenül hozzá fussanak be. Alapvetően tehát arról lenne szó, hogy a tartományunkon (ez ebben az esetben a *.FreeBSD.org) belüli gépekre címzett levelekre ez a gép “tart igényt” és így ezek ide irányítódnak át, majd a felhasználók erről a központi levelező szerverről kapják meg a leveleiket.
Az életünk megkönnyítéséhez minden felhasználónak létrehozzuk a saját felhasználói nevét a levelező szerveren is. Ezt az adduser(8) paranccsal gyorsan el is végezhetjük.
A levelező szerver lesz a hálózat összes munkaállomásához kirendelt levélváltó. Ezt a DNS beállításai között így adhatjuk meg:
enyem.FreeBSD.org A 204.216.27.XX ; Munkaállomás MX 10 kozpont.FreeBSD.org ; Levelező szerver
Ezzel lényegében az A rekord figyelmen kívül hagyásával átirányítjuk a munkaállomások számára érkező összes levelet a levelező szerverre. A levelek tehát az MX rekord által mutatott címre mennek ki.
Ezt önállóan nem tudjuk elvégezni, hacsak nem futattunk egy saját DNS szervert. Ha nincsen vagy nem is tudunk DNS szervert futtatni, akkor ebben a kérdésben egyeztessünk az internet-szolgáltatónkkal vagy bárkivel, aki a DNS beállításaiért felelős.
Ha virtuális e-mail címket is kezelünk, akkor a most következő információ még a hasznunkra lehet. A példa kedvéért most feltesszük, hogy a tartományunkban van egy ügyfelünk, jelen esetben az ugyfel1.org, és azt akarjuk, hogy az ugyfel1.org címére küldött levelek a saját levelező szerverünkre kerüljenek át, a level.sajat.com címre. A DNS-t ehhez így kell beállítani:
ugyfel1.org MX 10 level.sajat.com
Ha csak az ugyfel1.org levelezését akarjuk kezelni, akkor ahhoz nem kell külön A rekord.
Megjegyzés: Vigyázzunk, mert az ugyfel1.org csak akkor pingelhető, ha létezik hozzá A rekord.
Befejezésül a levelező szerverünkön futó sendmail számára is fel kell tárnunk, hogy milyen tartományokhoz és/vagy hálózati nevekhez fogadjon leveleket. Ezt több módon is elvégezhetjük. A következők bármelyik megfelel erre a célra:
A FEATURE(use_cw_file) használata esetén vegyük fel a címeket az /etc/mail/local-host-names állományba. Ha a sendmail 8.10 előtti változatai esetében ehhez az /etc/sendmail.cw állományra lesz szükségünk.
Tegyük be a Cwsajat.cimunk.com sort az /etc/sendmail.cf vagy a sendmail 8.10 és későbbi változatai esetén az /etc/mail/sendmail.cf állományba.
A FreeBSD-hez tartozó sendmail olyan gépek számára lett kialakítva, amelyek közvetlenül az internethez csatlakoznak. Az UUCP használatával levelező rendszerek számára egy másik konfigurációs állományt kell telepíteni a sendmail számára.
Az /etc/mail/sendmail.cf állítása kézzel egyáltalán nem könnyű. A sendmail 8. változata ráadásul a konfigurációs állományokat az m4(1) előfeldolgozó segítségével gyártja le, ahol a tényleges beállítások egy magasabb absztrakciós szinten jelennek meg. Az m4(1) típusú konfigurációs állományok a /usr/share/sendmail/cf könyvtárban találhatóak. A cf alkönyvtárban levő README állomány igyekszik a felhasználót bevezetni az m4(1) alapú beállítások világába.
A mailertable nevű lehetőség használatával tudjuk a legjobban támogatni az UUCP protokollon keresztüli kézbesítést. Ezzel felépül egy olyan adatbázis, amelyet a sendmail fel tud használni a továbbítást érintő döntésekben.
Ehhez elsőként hozzuk is létre a saját .mc állományunkat. Ehhez a /usr/share/sendmail/cf/cf könyvtár tartalmaz néhány példát. Hívjuk most ezt az állomnyunkat ize.mc néven. A következő módszerrel tudjuk egy valós sendmail.cf állománnyá alakítani:
# cd /etc/mail # make ize.cf # cp ize.cf /etc/mail/sendmail.cf
Egy átlagos .mc állomány egyébként valahogy így épül fel:
VERSIONID(`verziószám') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', sajat.uucp.relay) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw sajat.al.nev Cw azuucpgepneve.UUCP
Az accept_unresolvable_domains, nocanonify és confDONT_PROBE_INTERFACES lehetőségekre hivatkozó sorok megakadályozzák, hogy a levél kézbesítésében a DNS is szerepet játsszon. Az UUCP_RELAY az UUCP alapú kézbesítés támogatását engedélyezi. Egyszerűen csak írjunk ide egy internetes hálózati nevet, amely képes feldolgozni az .UUCP áltartomány címeit. Az esetek többségében ide az internet-szolgáltatónk levelek továbbküldéséért felelős gépe kerül.
Miután ezzel végeztünk, szükségünk lesz még az /etc/mail/mailertable állományra is. Ha a külvilág felé csak egyetlen összeköttetést használunk a levelekhez, akkor az alábbi pontosan megfelel:
# # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:sajat.uucp.relay
Egy bonyolultabb példa pedig így néz ki:
# # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom:
Az első három sor azokat a speciális eseteket kezeli, ahol a tartomány felé küldött levelek nem az alapértelmezett úton visszük tovább, hanem valamelyik UUCP szomszéd felé és így “le tudjuk rövidíteni” a kézbesítés útvonalát. Az ezeket követő sor dolgozza fel a helyi Ethernet tartomány felé STMP protokollal továbbítható leveleket. Végül az UUCP szomszédokat is felsoroljuk az .UUCP áltartomány jelölése szerint, így megengedjük, hogy a uucp-szomszéd! címzett felülbírálja az alapértelmezett szabályokat. Az utolsó sorban mindig egyetlen pont szerepel, ami minden másra illeszkedik, így az UUCP kézbesítés egy olyan UUCP szomszéd felé halad, amely a világ felé egy univerzális levelező átjárónak tekinthető. A uucp-dom: kulcsszó mögött szereplő összes csomópont nevének érvényes UUCP szomszédra kell utalnia, amelyet a uuname paranccsal le is tudunk ellenőrizni.
A feladatból már csak annyi maradt hátra, hogy használat előtt ezt az állományt át kell alakítani DBM adatbázis formátumba. Az ehhez szükséges parancsot érdemes mailertable állomány elejére bejegyzésben felírni. A mailertable megváltoztatásakor mindig le kell futtatni ezt a parancsot.
Utolsó jótanács: ha nem lennénk
biztosak valamelyik kézbesítési
útvonal működésében, ne
felejtsük el a sendmail
-bt
beállítását.
Ezzel a sendmail az ún.
címtesztelő módban
(address test mode) indul el. Gépeljük be, hogy
3,0, majd írjuk be a tesztelni
kívánt címet. Az utolsó sorban
láthatjuk a felhasznált belső
levéltovábbító
ügynököt, a célgépet, amellyel ezt
meghívjuk, és a (valószínűleg az
átfordított) címet. Innen a Ctrl+D
billentyűkombinációval léphetünk
ki.
% sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 ize@pelda.com canonify input: ize @ pelda . com ... parse returns: $# uucp-dom $@ sajat.uucp.relay $: ize < @ pelda . com . > > ^D
Gyakran előfordulhat, hogy csak leveleket akarunk továbbküldeni. Mint például:
Asztali számítógépünk van, de használni akarunk olyan programokat, mint például a send-pr(1). Ehhez az internet-szolgáltatón keresztül kell továbbküldeni a levelet.
A számítógépünk egy olyan szerver, amely nem helyben kezeli a leveleket, ezért az összeset átküldi feldolgozásra.
Szinte bármelyik levélküldő ügynök képes betölteni ezt az űrt. Sajnos eléggé bonyolult helyesen beállítani úgy egy bármire képes levélküldőt, hogy egyszerűen csak szabaduljon meg a levelektől. Ilyenkor a sendmail vagy a postfix használatával tulajdonképpen ágyúval lövünk verébre.
Továbbá, ha egy átlagos internet-hozzáféréssel rendelkezünk, adódhat, hogy a szerződés egyszerűen tiltja a “levelező szerver” futtatását.
Legegyszerűbben úgy tudjuk kielégíteni az ilyen jellegű igényeket, ha feltelepítjük a mail/ssmtp portot. A root felhasználóval adjuk ki a következő parancsokat:
# cd /usr/ports/mail/ssmtp # make install replace clean
Telepítése után a mail/ssmtp portot a mindössze négysoros /usr/local/etc/ssmtp/ssmtp.conf állománnyal állíthatjuk be:
root=valodiemail@minta.com mailhub=level.minta.com rewriteDomain=minta.com hostname=_GEPNEV_
A root felhasználó számára feltétlenül egy valódi e-mail címet adjuk meg. A level.minta.com helyére az internet-szolgáltatónk kimenő leveleket továbbító szerverét adjuk meg (bizonyos szolgáltatók ezt “kimenő levelező szervernek” vagy “SMTP szervernek” nevezik).
Ne felejtsük el sendmail démont sem letiltani, beleértve a kimenő levelek kezelését. Ennek részleteit lásd a 28.4.2 Szakaszban.
A mail/ssmtp használatánál még adhatunk meg további beállításokat is. A /usr/local/etc/ssmtp állományban vagy az ssmtp man oldalán találhatunk példákat és olvashatunk bővebben a témáról.
Az ssmtp ilyen fajta beállításával a számítógépünkön levő szoftverek is helyesen fognak működni, miközben nem sértjük meg az internet-szolgáltató előírásait és nem tesszük lehetővé, hogy a számítógépünkről levélszemetet küldhessenek.
Ha statikus IP-címünk van, akkor az alapértelmezett beállítások tökéletesen megfelelőek számunkra. Csupán a gépünkhöz tartozó internetes címet kell megadnunk a gépünk nevének és a sendmail elvégzi a többit.
Ha viszont dinamikusan kiosztott IP-címmel rendelkezünk és betárcsázós PPP kapcsolaton keresztül csatlakozunk az internethez, akkor valószínűleg az internet-szolgáltató levelező szerverén van egy postaládánk. Most tegyük fel, hogy a internet-szolgáltató tartománya a szolgaltato.net és a felhasználói név a felhasznalo, a gépünk neve pedig otthoni.bsdm, valamint az internet-szolgáltató részéről levelezésre a relay.szolgaltato.net gépet használhatjuk.
A postaládánkból úgy tudjuk letölteni a leveleket, ha telepítünk hozzá egy programot. Erre a feladatra a fetchmail hibátlanul alkalmas, mivel több különböző protokollt ismer. Ez a program csomagként vagy a Portgyűjteményből (mail/fetchmail) is elérhető. Az internet-szolgáltatók erre általában a POP protokollt ajánlják fel. Ha a felhasználói PPP alkalmazást használjuk, állítsuk be az /etc/ppp/ppp.linkup állományt a következő módon és így a csatlakozáskor maguktól letöltődnek a leveleink:
MYADDR: !bg su felhasznalo -c fetchmail
Ha a sendmail segítségével küldjük tovább a leveleket a nem helyi hozzáférések felé (ahogy azt lentebb is láthatjuk), akkor minden bizonnyal a csatlakozáskor arra is szükségünk lesz, hogy a leveleket tároló sor is feldolgozódjon. Ezt úgy oldhatjuk meg, ha az /etc/ppp/ppp.linkup állományba a fetchmail parancs után a következőt tesszük:
!bg su felhasznalo -c "sendmail -q"
Ez a példa feltételezi, hogy az otthoni.bsdm gépen van egy felhasznalo nevű felhasználónk. Az otthoni.bsdm gépen a felhasznalo felhasználói könyvtárában hozzunk létre egy .fetchmailrc állományt:
poll szolgaltato.net protocol pop3 fetchall pass TitkosJelszo
Ezt az állományt csak és kizárólag a felhasznalo olvashatja, mivel szerepel benne a hozzá tartozó TitkosJelszo.
Úgy tudunk a megfelelő from:
fejléccel küldeni, ha felvilágosítjuk a
sendmail programot, hogy ne az
<felhasznalo@otthoni.bsdm>
címet, hanem a
<felhasznalo@szolgaltato.net>
címet
használja. Sőt, a gyorsítás
kedvéért a sendmail
számára érdemes elárulni, hogy a
relay.szolgaltato.net címen
keresztül küldjön.
A munka elvégzéséhez elegendő az alábbi .mc állomány:
VERSIONID(`otthoni.bsdm.mc 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwotthoni.bsdm MASQUERADE_AS(`szolgaltato.net')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(`SMART_HOST', `relay.szolgaltato.net') Dmotthoni.bsdm define(`confDOMAIN_NAME',`otthoni.bsdm')dnl define(`confDELIVERY_MODE',`deferred')dnl
Az előző szakaszban találhatjuk meg annak a módját, hogy miként varázsoljunk ebből az .mc állományból egy sendmail.cf állományt. A sendmail.cf frissítése után pedig ne felejtsük el a sendmail újraindítását!
Levelező szerverünkön az SMTP protokoll hitelesítésének (SMTP Authentication) engedélyezése több szempontból is előnyökkel bír. Az SMTP hitelesítésének bekapcsolása egy újabb réteget képez a sendmail védelmében, és az olyan állandóan mozgásban levő felhasználók számára is megoldást nyújt, akik anélkül képesek használni ugyanazt a levelező szervert, hogy minden alkalommal újrakonfigurálnák a levelező kliensüket.
Telepítsük fel a security/cyrus-sasl2 portot. A
security/cyrus-sasl2 port
több fordítási idejű
beállítást támogat. Itt most az
SMTP hitelesítését
fogjuk használni, ezért gondoskodjunk a
LOGIN
opció
engedélyezéséről.
A security/cyrus-sasl2 telepítés után nyissuk meg szerkesztésre a /usr/local/lib/sasl2/Sendmail.conf állományt (vagy ha még nem létezne, hozzuk létre), és benne vegyük fel a következő sort:
pwcheck_method: saslauthd
Ezt követően telepítsük a security/cyrus-sasl2-saslauthd portot, és tegyük bele az /etc/rc.conf állományba ezt a sort:
saslauthd_enable="YES"
Végezetül indítsuk el a saslauthd démont:
# /usr/local/etc/rc.d/saslauthd start
Ez a démon fog közvetíteni a sendmail és a FreeBSD passwd adatbázisa közti hitelesítésben. Ezzel elkerülhetjük az új felhasználói nevek és jelszavak felvételét az SMTP hitelesítés használatához, így a hozzáférések és a levelezés jelszava ugyanaz marad.
Most pedig írjuk hozzá az alábbi sorokat az /etc/make.conf állományhoz:
SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl2
Ezek a sorok állítják be a sendmail számára, hogy fordítás közben a cyrus-sasl2 függvényeit használja. A sendmail újrafordítása előtt mindenképpen legyen fenn a cyrus-sasl2 port.
A sendmail újrafordítását a következő parancsok végrehajtásával intézhetjük el:
# cd /usr/src/lib/libsmutil # make cleandir && make obj && make # cd /usr/src/lib/libsm # make cleandir && make obj && make # cd /usr/src/usr.sbin/sendmail # make cleandir && make obj && make && make install
A sendmail fordítása esetén semmilyen problémának nem szabadna előfordulnia, kivéve ha a /usr/src könyvtárat és a szükséges osztott könyvtárakat nem változtatjuk időközben túlságosan gyakran.
A sendmail lefordítása és újratelepítése után szerkesszük át az /etc/mail/freebsd.mc állományt (vagy azt az .mc állományt, amelyet éppen használunk). Sok rendszergazda a hostname(1) parancs válaszát használja fel az .mc típusú állományok egyedi elnevezéséhez). Írjuk bele a következő sorokat:
dnl set SASL options TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
Ezek állítják be a sendmail számára a felhasználók hitelesítésére alkalmas különböző módszereket. Ha a pwcheck módszer helyett valami mást akarunk használni, akkor járjunk utána a dokumentációban.
Zárásul futassuk le a make(1) parancsot az /etc/mail könyvtárban. Így lefut az új .mc állományunk és létrejön egy freebsd.cf (vagy amilyen nevet az .mc állománynak megadtunk) .cf állomány. Ezután a make install restart parancs kiadásával másoltassuk át ezt a sendmail.cf helyére és szabályosan indítassuk újra a sendmail szolgáltatást. A folyamatról részletesebb tájékoztatást az /etc/mail/Makefile állomány tud nyújtani.
Ha eddig minden a legnagyobb rendben történt,
akkor most már képesek vagyunk bejelentkezési
információt is átadni a levelező
kliensnek és elküldeni egy tesztüzenetet. A
hibák kiszűréséhez
állítsuk a sendmail
LogLevel
opcióját az 13
értékre és figyeljük a
/var/log/maillog
állományt.
További felvilágosításért olvassuk el a sendmail SMTP hitelesítéssel foglalkozó oldalát (angolul).
A levelező kliens (Mail User Agent, MUA) egy olyan alkalmazás, amelyik elektronikus levelek küldésére és fogadására használható. Azonkívül, ahogy az e-mail “fejlődik” és egyre bonyolultabbá válik, a levelező kliensek is egyre inkább erősebbé válnak abban a tekintetben, ahogy az e-maileket kezelik. Ezzel együtt a felhasználók is egyre több lehetőséget és rugalmasságot kapnak. A FreeBSD számos levelező klienst támogat, mindegyikük könnyedén telepíthető a FreeBSD Portgyűjteménye segítségével. A felhasználók választhatnak a grafikus kliensek, mint például az evolution vagy a balsa és a konzolos kliensek, például a mutt, pine vagy mail között, esetleg használhatják a nagyobb szervezetek részéről felkínált webes felületeket is.
A mail(1) a FreeBSD alapértelmezett levelező kliense. Egy olyan konzolos alkalmazás, amelyben elérhetjük az e-mailek küldéséhez és fogadásához szükséges összes alapvető funkciót, habár a csatolmányokat csak korlátozottan képes kezelni és csak a helyi postaládákat kezeli.
Annak ellenére, hogy a mail önmaga nem képes kommunikálni POP vagy IMAP szerverekkel, az ilyen postaládák tartalmát egy fetchmail-szerű alkalmazással (lásd 28.12 Szakasz) le tudjuk tölteni a számára is elérhető helyi mbox állományba.
A levelek küldéséhez és fogadásához egyszerűen hívjuk be a mail programot a következő módon:
Ezután a /var/mail könyvtárban található felhasználói postaládánk tartalmát automatikusan beolvassa a mail segédprogram. Ha a postaláda üres, akkor a program egyből befejezi futását és közli, hogy nem talált levelet. Amikor viszont tudott beolvasni leveleket, megjelenik egy felület, ahol a beérkezett üzenetek listáját láthatjuk. Az üzenetek automatikusan sorszámozódnak, ahogy ezt az alábbi példa is szemlélteti:
Mail version 8.1 6/6/93. Type ? for help. "/var/mail/marcs": 3 messages 3 new >N 1 root@localhost Mon Mar 8 14:05 14/510 "proba" N 2 root@localhost Mon Mar 8 14:05 14/509 "felhasznaloi hozzaferes" N 3 root@localhost Mon Mar 8 14:05 14/509 "minta"
Az üzenetek olvasásának a t paranccsal kezdhetünk neki, amelyet az elolvasandó üzenet sorszáma követ. Ebben a példában az első e-mailt nyitjuk meg:
& t 1 Message 1: From root@localhost Mon Mar 8 14:05:52 2004 X-Original-To: marcs@localhost Delivered-To: marcs@localhost To: marcs@localhost Subject: proba Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST) From: root@localhost (Charlie Root) Ezt az uzenetet probabol kuldom, valaszolj ra, ha megkaptad.
Ahogy az a fenti példából is látszik, a t billentyű hatására az üzenet a teljes fejlécével együtt jelenik meg. Az üzenetek listáját a h billentyűvel hozhatjuk vissza.
Ha egy levélre válaszolni szeretnénk, akkor ezt a mail paranccsal is megtehetjük, vagy az R vagy az r parancsokkal. Az R arra utasítja a mail programot, hogy csak az üzenet küldőjének válaszoljon, míg az r hatására nem csupán a küldő, hanem az üzenet összes címzettje megkapja a válaszunkat. A parancshoz hozzátűzhetjük egy levél sorszámát is, ekkor az adott levélre fogunk válaszolni. Miután kiadtuk a parancsot, írjuk meg a válaszunkat és új sorban kezdve zárjuk le az üzenetet egyetlen . beírásával. Valahogy így:
& R 1 To: root@localhost Subject: Re: proba Koszonom, megkaptam a leveledet. . EOT
Új levelet az m segítségével tudunk küldeni, ami után meg kell adnunk a címzettet. Egyszerre több címzettet is meg tudunk adni, ha a címzett helyén címeiket egy , karakterrel elválasztva soroljuk fel. Ezután a levél témája is megadható, amit végül a levél szövege követ. Az üzenetet egy új sorban megadott egyetlen . segítségével zárhatjuk le.
& mail root@localhost Subject: Elsajatitottam a mail hasznalatat Most mar en is tudok levelet irni es fogadni a mail hasznalataval... :) . EOT
Amikor a mail segédprogramban vagyunk, a ? használatával bármikor segítséget kérhetünk, valamint a mail működésével kapcsolatban a mail(1) man oldalát érdemes felkeresni.
Megjegyzés: Ahogy azt már korábban is említettük, a mail(1) parancsot eredetileg nem készítették fel az csatolt állományok kezelésére, ezért igen gyengén bánik velük. Az újabb levelező kliensek, mint például a mutt, a csatolt állományokat sokkal intelligensebb módon kezelik. Ha viszont ragaszkodunk a mail használatához, akkor a converters/mpack port használatát érdemes megfontolnunk.
A mutt apró mérete ellenére egy igen komoly levelező kliens és remek lehetőségeket ajánl fel. Íme ízelítésképpen közülük néhány:
Képes az üzeneteket szálakba rendezni
Az e-mailek titkosítására és elektronikus aláírására támogatja a PGP használatát
MIME támogatás
Maildir támogatás
Nagyfokú testreszabhatóság
Ezen lehetőségei révén a mutt ez egyik legfejlettebb levelező kliens. A mutt részletesebb bemutatását a http://www.mutt.org címen találjuk (angolul).
A mutt stabil változata a mail/mutt port használatával telepíthető fel, miközben a fejlesztés alatt levő változatot a mail/mutt-devel port telepíti. Miután a portot sikerült felraknunk, a mutt az alábbi parancs begépelésével indítható el:
% mutt
A mutt indulása után automatikusan beolvassa a /var/mail könyvtárban megtalálható felhasználói postaládát és ha lehetséges, akkor megjeleníti a tartalmát. Ha nincsen levél a felhasználó postaládájában, akkor a mutt a felhasználó parancsaira vár. Ezen a képen a mutt üzenetlistája látható:
A levelek elolvasásához egyszerűen csak válasszuk ki a kurzorral és nyomjuk meg az Enter billentyűt. Ezután a mutt így mutatja a levelet:
Ahogy azt már a mail(1) parancsnál is megszokhattuk, a mutt is lehetővé teszi, hogy vagy csak a küldőnek, vagy pedig rajta kívül még az összes címzettnek is válaszoljunk. A levél küldőjének az r lenyomásával tudunk válaszolni. A csoportos válaszadáshoz pedig, ahol tehát a küldőn kívül a címzettek is megkapják a levelünket, a g billentyűt kell használni.
Megjegyzés: A mutt az e-mailek létrehozásához és megválaszolásához a vi(1) szövegszerkesztőt használja. Ezt úgy tudjuk átállítani, ha a könyvtárunkban található .muttrc állományban átírjuk az editor változót, vagy értéket adunk az EDITOR környezeti változónak. A mutt beállításáról többet a http://www.mutt.org címen tudhatunk meg.
Egy új levél megírásához nyomjuk le az m gombot. Miután elláttuk érvényes témával a levelet, a mutt elindítja a vi(1) szövegszerkesztőt és nekiláthatunk a levél szövegének. Amint befejeztük, mentsük el és lépjünk ki a vi szerkesztőből. Ezután visszakapjuk a mutt felületét, ahol a küldendő e-mail összefoglalását láthatjuk. A levelet végül az y lenyomásával küldhetjük el. Erre a következő képen láthatunk egy példát:
A mutt ezenkívül még rengeteg segítséget is tartalmaz, amelyet a legtöbb menüből a ? gomb lenyomásával érhetünk el. A felső sorban mindig láthatjuk a kiadható parancsok rövid összefoglalását.
A pine alapvetően a kezdő felhasználók számára íródott, de számos komolyabb lehetőséget is támogat.
Figyelem: A pine szoftverrel kapcsolatban a múltban már rengeteg távolról kihasználható sebezhetőség látott napvilágot, és ennek köszönhetően a támadók megfelelően előkészített e-mailek segítségével tetszőleges kódot tudnak futtatni a rendszeren levő helyi felhasználókon keresztül. Noha az összes ilyen ismert hibát javították, de a FreeBSD biztonsági tisztje szerint a pine kódját biztonság szempontjából annyira hanyag módon írták, hogy további, eddig még felfedezetlen sebezhetőségeket is magában rejt. Ennek megfelelően tehát a pine használata mindenkinek csak saját felelősségre javasolt.
A pine jelenlegi verziója a mail/pine4 porton keresztül telepíthető. A telepítés lezajlása után a pine a következő paranccsal indítható:
% pine
A pine első futtatása során egy üdvözlő üzenetet és egy rövid bemutatkozást jelenít meg, valamint a pine fejlesztői arra kérik a felhasználókat, hogy küldjenek nekik egy névtelen üzenetet, amiből le tudják szűrni mennyien használják a kliensüket. A névtelen üzenet elküldéséhez a Enter lenyomásával járulhatunk hozzá vagy az E használatával enélkül tudunk kilépni a képernyőről. Ezt az üdvözlő képernyőt itt láthatjuk:
A felhasználó ezután a főmenübe kerül, ahol a kurzorbillentyűkkel minden gond nélkül tudunk mozogni. Ebben a főmenüben a levelek megírására, a leveleket tároló könyvtárak tallózására vagy éppen a címjegyzék karbantartására gyorsbillentyűket is használhatuk. A főmenü alatt szerepel az adott menüben végrehajtható feladatokhoz tartozó gyorsbillentyűk rövid felsorolása.
A pine alapértelmezés szerint az inbox könyvtárat nyitja meg. A bennelévő üzenetek listájának megtekintéséhez nyomjuk a I gombot vagy válasszuk ki a lentihez hasonló módon a
menüpontot:Az üzenetek listájában az adott könyvtárban található üzenetek láthatjuk, és köztük a kurzorbillentyűkkel mozoghatunk. A kiemelt üzenet az Enter lenyomásával olvasható el.
A lenti képen egy ilyen példa üzenetet láthatunk a pine programban. A rendelkezésünkre álló gyorsbillentyűk ilyenkor is a képernyő alján megjelennek referenciaként. Ilyen gyorsbillentyű többek közt az r gomb, amelynek hatására a klienssel megválaszolhatjuk a éppen látható üzenetet.
A pine kliensen belül a pico szövegszerkesztő segítségével tudunk megválaszolni egy e-mailt, amely alapból a pine mellé települ. A pico megkönnyíti a navigációt az üzenetekben és sokkal elnézőbb a kezdő felhasználókkal, mint például a vi(1) vagy a mail(1). Ha befejeztük a választ, az üzenetet a Ctrl+X billentyűkombinációval tudjuk elküldeni. A pine erre megerősítést fog kérni.
A pine alkalmazás a főmenüből elérhető http://www.washington.edu/pine oldalon találhatjuk (angolul).
menüpont meghívásával szabható testre. A további részleteket aA fetchmail egy mindentudó IMAP és POP kliens, amely lehetővé teszi a felhasználók számára, hogy automatikusan töltsenek le leveleket távoli IMAP és POP szerverekről és lementsék azokat a helyi postaládáikba. Így a levelek sokkal könnyebben elérhetőek. A fetchmail a mail/fetchmail port segítségével telepíthető, és számos lehetőséget ajánl fel, többek közt:
A POP3, APOP, KPOP, IMAP, ETRN és az ODMR protokollok ismerete.
Képes SMTP használatával levelet továbbítani, és ennek révén a szűrés, továbbküldés és az álnevek használata a megszokott módon működik.
Démonként futtatva képes adott időközönként ellenőrizni a frissen érkező üzeneteket.
Képes egyszerre több postaládát is kezelni, majd ezek tartalmát a beállításainak megfelelően továbbküldeni a különböző helyi felhasználóknak.
Noha a fetchmail összes lehetőségének aprólékos bemutatása meghaladná ennek a leírásnak a kereteit, azért szót kerítünk néhány alapvető funkciójára. A fetchmail segédprogramnak a megfelelő működéshez egy .fetchmailrc nevű konfigurációs állományra van szüksége. Ez az állomány tárolja a szerverekre vonatkozó, valamint a bejelentkezéshez szükséges információkat. Az állomány kényes tartalmára tekintettel azt javasoljuk, hogy csak a tulajdonosának engedélyezzük az olvasását:
% chmod 600 .fetchmailrc
Az alább ismertetésre kerülő .fetchmailrc állományban azt láthatjuk, ahogy egyetlen felhasználó postaládáját érjük el a POP protokoll használatával. Arra utasítja a fetchmail programot, hogy csatlakozzon a levelezes.com címre a joska felhasználóval és az XXX jelszóval. Ebben a példában feltételezzük, hogy a joska nevű felhasználó létezik a rendszerünkben is.
poll levelezes.com protocol pop3 username "joska" password "XXX"
A következő példában több POP és IMAP szerverhez csatlakozunk és ahol lehet, több helyi felhasználónak irányítjuk át a leveleket:
poll levelezes.com proto pop3: user "joska", with password "XXX", is "jozsi" here; user "andrea", with password "XXXX"; poll levelezes2.net proto imap: user "jani", with password "XXXXX", is "hardstuff" here;
A fetchmail program a
-d
beállítás
megadásával démonként is
elindítható, amely után meg kell adni
(másodpercekben) azt az időközt, aminek
elteltével a fetchmail
lekérdi a .fetchmailrc
állományban felsorolt szervereket. Az alábbi
példában a fetchmail
600 másodpercenként kéri el a
leveleket:
% fetchmail -d 600
A fetchmail további lehetőségeiről és működéséről a http://fetchmail.berlios.de/ oldalon olvashatunk (angolul).
A procmail segédprogram egy hihetetlenül erős alkalmazás, mellyel a beérkező leveleinket tudjuk szűrni. A felhasználók számára olyan “szabályok” megadását teszi lehetővé, amelyekre aztán a rendszer illeszti a bejövő leveleket, és az eredménynek megfelelően elvégez bizonyos feladatokat vagy átirányítja a levelet más postaladákba és/vagy e-mail címekre. A procmail a mail/procmail porttal telepíthető fel. Miután ez sikerült, akár közvetlenül be is építhetjük a legtöbb levelező kliensbe. Erről az adott levelező kliens dokumentációjában olvashatunk többet. A procmail úgy is integrálható, ha a felvesszük a következő sort a procmail szolgáltatára igényt tartó felhasználó könyvtárában található .forward állományba:
"|exec /usr/local/bin/procmail || exit 75"
A következő szakaszban láthatjuk a procmail néhány alapvető szabályát, valamint ezek rövid leírását. Ezeket a szabályokat a .procmailrc állományba kell beleírni, amely szintén a felhasználó könyvtárában leledzik.
Ezen szabályok többsége a procmailex(5) man oldalon is olvasható.
A <felhasznalo@levelezes.com>
címről
érkező leveleket irányítsuk át a
<jocim@levelezes2.com>
külső
címre:
:0 * ^From.*felhasznalo@levelezes.com ! jocim@levelezes2.com
Minden 1000 byte-nál kisebb levelet küldjünk
át a <jocim@levelezes2.com>
külső címre:
:0 * < 1000 ! jocim@levelezes2.com
Küldjük át az összes
<masik@levelezes.com>
címre küldött
levelet a masik
postaládába:
:0 * ^TOmasik@levelezes.com masik
Küldjük az összes olyan levelet a /dev/null eszközre, amelyek a témájában szerepel a “Spam” szó:
:0 ^Subject:.*Spam /dev/null
Egy hasznos szabály, amellyel el tudjuk kapni a FreeBSD.org levelezési listáiról érkező leveleket és el tudjuk raktározni ezeket a saját postaládájukba:
:0 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG { LISTNAME=${MATCH} :0 * LISTNAME??^\/[^@]+ FreeBSD-${MATCH} }
Ebben a fejezetben a UNIX típusú rendszerekben leggyakrabban alkalmazott hálózati szolgáltatások közül fogunk néhányat bemutatni. Ennek során megismerjük a hálózati szolgáltatások különböző típusainak telepítését, beállítását, tesztelését és karbantartását. A fejezet tartalmát folyamatosan példákkal igyekszünk illusztrálni.
A fejezet elolvasása során megismerjük:
hogyan dolgozzunk az inetd démonnal;
hogyan állítsuk be a hálózati állományrendszereket;
hogyan állítsunk be egy hálózati információs szervert a felhasználói hozzáférések megosztására;
hogyan állítsuk be automatikusan a hálózati hozzáférésünket a DHCP használatával;
hogyan állítsunk be névfeloldó szervereket;
hogyan állítsuk be az Apache webszervert;
hogyan állítsuk be az állományok átviteléért felelős (FTP) szervert;
a Samba használatával hogyan állítsunk be Windows-os kliensek számára állomány- és nyomtatószervert;
az NTP protokoll segítségével hogyan egyeztessük az időt és dátumot, hogyan állítsunk be egy időszervert;
a szabványos naplózó démon, a syslogd beállítását hálózati keresztüli naplózásra.
A fejezet elolvasásához ajánlott:
az /etc/rc szkriptek alapjainak ismerete;
az alapvető hálózati fogalmak ismerete;
a külső szoftverek telepítésének ismerete (4 fejezet).
Az inetd(8) démont gyakran csak “internet szuperszerverként” nevezik, mivel a helyi szolgáltatások kapcsolatainak kezeléséért felelős. Amikor az inetd fogad egy csatlakozási kérelmet, akkor eldönti róla, hogy ez melyik programhoz tartozik és elindít egy példányt belőle, majd átadja neki a socketet (az így meghívott program a szabvány bemenetéhez, kimenetéhez és hibajelzési csatornájához kapja meg a socket leíróit). Az inetd használatával úgy tudjuk csökkenteni a rendszerünk terhelését, hogy a csak alkalmanként meghívott szolgáltatásokat nem futtatjuk teljesen független önálló módban.
Az inetd démont elsősorban más démonok elindítására használjuk, de néhány triviális protokollt közvetlenül is képes kezelni, mint például a chargen, auth és a daytime.
Ebben a fejezetben az inetd beállításának alapjait foglaljuk össze mind parancssoros módban, mind pedig az /etc/inetd.conf konfigurációs állományon keresztül.
Az inetd működése az rc(8) rendszeren keresztül inicializálható. Az inetd_enable ugyan alapból a NO értéket veszi fel, vagyis tiltott, de a sysinstall használatával már akár a telepítés során bekapcsolható attól függően, hogy a felhasználó milyen konfigurációt választott. Ha tehát a:
inetd_enable="YES"
vagy
inetd_enable="NO"
sort tesszük az /etc/rc.conf állományba, akkor azzal az inetd démont indíthatjuk el vagy tilthatjuk le a rendszer indítása során. Az
# /etc/rc.d/inetd rcvar
paranccsal lekérdezhetjük a pillanatnyilag érvényes beállítást.
Emellett még az inetd démonnak az inetd_flags változón keresztül különböző parancssori paramétereket is át tudunk adni.
Hasonlóan a legtöbb szerverhez, az inetd viselkedését is befolyásolni tudjuk a parancssorban átadható különböző paraméterekkel. Ezek teljes listája a következő:
inetd [-d] [-l] [-w] [-W] [-c
maximum] [-C arány] [-a cím | név] [-p
állomány] [-R arány] [-s maximum]
[konfigurációs
állomány]
Ezek a paraméterek az /etc/rc.conf állományban az inetd_flags segítségével adhatóak meg az inetd részére. Alapértelmezés szerint az inetd_flags értéke -wW -C 60, ami az inetd által biztosított szolgáltatások TCP protokollon keresztüli wrappelését kapcsolja be, illetve egy IP-címről nem engedi a felkínált szolgáltatások elérését percenként hatvannál többször.
A kezdő felhasználók örömmel nyugtázhatják, hogy ezeket az alapbeállításokat nem szükséges módosítaniuk. A későbbiekben majd fény derül arra, hogy a kiszolgálás gyakoriságának szabályozása remek védekezést nyújthat túlzottan nagy mennyiségű kapcsolódási kérelem ellen. A megadható paraméterek teljes listája az inetd(8) man oldalán olvasható.
Az egyes szolgáltatásokhoz egyszerre
felépíthető kapcsolatok
alapértelmezett maximális
számát adja meg. Alapból ezt a
démont nem korlátozza. A
max-child
beállítással ez akár
szolgáltatásonként külön is
megadható.
Korlátozza, hogy egyetlen IP-címről
alapból hányszor hívhatóak meg
az egyes szolgáltatások egy percen
belül. Ez az érték alapból
korlátlan. A
max-connections-per-ip-per-minute
beállítással ez
szolgáltatásonként is
definiálható.
Megadja, hogy egy szolgáltatást egy perc alatt mennyiszer lehet meghívni. Ez az érték alapértelmezés szerint 256. A 0 megadásával eltöröljük ezt a típusú korlátozást.
Annak maximumát adja meg, hogy egyetlen
IP-címről egyszerre az egyes
szolgáltatásokat mennyiszer tudjuk
elérni. Alapból ez korlátlan.
Szolgáltatásonként ezt a
max-child-per-ip
paraméterrel
tudjuk felülbírálni.
Az inetd beállítását az /etc/inetd.conf konfigurációs állományon keresztül végezhetjük el.
Amikor az /etc/inetd.conf állományban módosítunk valamit, az inetd démont a következő paranccsal meg kell kérnünk, hogy olvassa újra:
A konfigurációs állomány minden egyes sora egy-egy démont ír le. A megjegyzéseket egy “#” jel vezeti be. Az /etc/inetd.conf állomány bejegyzéseinek formátuma az alábbi:
szolgáltatás-neve socket-típusa protokoll {wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]] felhasználó[:csoport][/bejelentkezési-osztály] szerver-program szerver-program-paraméterei
Az IPv4 protokollt használó ftpd(8) démon bejegyzése például így néz ki:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
Ez az adott démon által képviselt szolgáltatást nevezi meg, amelynek szerepelnie kell az /etc/services állományban. Ez határozza meg, hogy az inetd milyen porton figyelje a beérkező kapcsolatokat. Ha egy új szolgáltatást hozunk létre, akkor azt először az /etc/services állományba kell felvennünk.
Ennek az értéke stream, dgram, raw, vagy seqpacket lehet. A stream típust használja a legtöbb kapcsolat-orientált TCP démon, miközben a dgram típus az UDP szállítási protokollt alkalmazó démonok esetében használatos.
Valamelyik a következők közül:
A wait|nowait
beállítás mondja meg, hogy az
inetd démonból
meghívott démon saját maga
képes-e kezelni kapcsolatokat. A
dgram
típusú kapcsolatok
esetében egyértelműen a
wait
beállítást kell
használni, miközben a stream
esetén, ahol általában több
szálon dolgozunk, a nowait
megadása javasolt. A wait
hatására általában egyetlen
démonnak adunk át több socketet,
míg a nowait
minden sockethez egy
újabb példányt indít
el.
Az inetd által
indítható példányokat a
max-child
megadásával
korlátozhatjuk. Ha tehát
például az adott démon
számára legfeljebb példány
létrehozását
engedélyezzük, akkor a nowait
után /10
beállítást kell megadnunk. A
/0 használatával
korlátlan mennyiségű
példányt
engedélyezhetünk.
A max-child
mellett még
további két másik
beállítás jöhet
számításba az egyes démonok
által kezelhető kapcsolatok maximális
számának
korlátozásában. A
max-connections-per-ip-per-minute
az
egyes IP-címekről befutó
lekezelhető kapcsolatok percenkénti
számát szabályozza, így
például ha itt a tizes értéket
adjuk meg, akkor az adott szolgáltatáshoz
egy IP-címről percenként csak
tízszer férhetünk hozzá. A
max-child-per-ip
az egyes
IP-címekhez egyszerre elindítható
példányok számára ír
elő egy korlátot. Ezek a paraméterek
segítenek megóvni rendszerünket az
erőforrások akaratos vagy akaratlan
kimerítésétől és a DoS
(Denial of Service) típusú
támadásoktól.
Ebben a mezőben a wait
vagy
nowait
valamelyikét
kötelező megadni. A max-child
,
max-connections-per-ip-per-minute
és max-child-per-ip
paraméterek ellenben elhagyhatóak.
A stream
típusú
több szálon futó démonok a
max-child
,
max-connections-per-ip-per-minute
vagy
max-child-per-ip
korlátozása nélkül
egyszerűen csak így adhatóak meg:
nowait.
Ha ugyanezt a démont tíz kapcsolatra lekorlátozzuk, akkor a következőt kell megadnunk: nowait/10.
Amikor pedig IP-címenként 20 kapcsolatot engedélyezünk percenként és mindössze 10 példányt, akkor: nowait/10/20.
Az iménti beállítások a fingerd(8) démon alapértelmezett paramétereinél is megtalálhatóak:
finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s
Végezetül engedélyezzük 100 példányt, melyek közül IP-címenként 5 használható: nowait/100/0/5.
Ezzel azt a felhasználót adjuk meg, akinek a nevében az adott démon futni fog. Az esetek túlnyomó részében a démonokat a root felhasználó futtatja. Láthatjuk azonban, hogy biztonsági okokból bizonyos démonok a daemon vagy a legkevesebb joggal rendelkező nobody felhasználóval futnak.
A kapcsolat felépülésekor az itt
teljes elérési úttal megadott
démon indul el. Ha ezt a
szolgáltatást maga az
inetd belsőleg
valósítja meg, akkor ebben a mezőben az
internal
értéket adjuk
meg.
Ez a szerver-program
beállítással együtt
működik, és ebben a mezőben a
démon meghívásakor
alkalmazandó paramétereket tudjuk
rögzíteni, amelyet a démon
nevével kezdünk. Ha a démont a
parancssorból a
sajátdémon
-d paranccsal hívnánk meg, akkor a
sajátdémon
-d lesz
szerver-program-paraméterei
beállítás helyes értéke
is. Természetesen, ha a démon egy
belsőleg megvalósított
szolgáltatás, akkor ebben a mezőben is
az internal
fog megjelenni.
Attól függően, hogy a telepítés során mit választottunk, az inetd által támogatott szolgáltatások egyes része talán alapból engedélyezett is. Amennyiben egy adott démont konkrétan nem használunk, akkor érdemes megfontolni a letiltását. A kérdéses démon sorába tegyünk egy “#” jelet az /etc/inetd.conf állományba, majd olvastassuk újra az inetd beállításait. Egyes démonok, mint például az fingerd használata egyáltalán nem ajánlott, mivel a támadók számára hasznos információkat tudnak kiszivárogtatni.
Más démonok nem ügyelnek a
védelemre, és a kapcsolatokhoz rendelt
lejárati idejük túlságosan
hosszú vagy éppen nincs is. Ezzel a
támadónak lehetősége van lassú
kapcsolatokkal leterhelni az adott démont, ezáltal
kimeríteni a rendszer erőforrásait. Ha
úgy találjuk, hogy túlságosan sok az
ilyen kapcsolat, akkor jó ötletnek bizonyulhat a
démonok számára a
max-connections-per-ip-per-minute
,
max-child
vagy
max-child-per-ip
korlátozások
elrendelése.
Alapértelmezés szerint a TCP kapcsolatok wrappelése engedélyezett. A hosts_access(5) man oldalon találhatjuk meg az inetd által meghívható különféle démonok TCP-alapú korlátozásainak lehetőségeit.
A daytime, time, echo, discard, chargen és auth szolgáltatások feladatainak mindegyikét maga az inetd is képes ellátni.
Az auth szolgáltatás a hálózati keresztül azonosítást teszi lehetővé és bizonyos mértékig beállítható. A többit egyszerűen csak kapcsoljuk ki vagy be.
A témában az inetd(8) man oldalán tudunk még jobban elmerülni.
A FreeBSD több állományrendszert ismer, köztük a hálózati állományrendszert (Network File System, NFS) is. Az NFS állományok és könyvtárak megosztását teszi lehetővé a hálózaton keresztül. Az NFS használatával a felhasználók és a programok képesek majdnem úgy elérni a távoli rendszereken található állományokat, mintha helyben léteznének.
Íme az NFS néhány legjelentősebb előnye:
A helyi munkaállomások kevesebb tárterületet használnak, mivel a közös adatokat csak egyetlen számítógépen tároljuk és megosztjuk mindenki között.
A felhasználóknak nem kell a hálózat minden egyes gépén külön felhasználói könyvtárral rendelkezniük. Ezek ugyanis az NFS segítségével akár egy szerveren is beállíthatóak és elérhetővé tehetőek a hálózaton keresztül.
A különböző háttértárak, mint például a floppy lemezek, CD-meghajtók és Zip® meghajtók a hálózaton több számítógép között megoszthatóak. Ezzel csökkenteni tudjuk a hálózatunkban szükséges cserélhető lemezes eszközök számát.
Az NFS legalább két fő részből rakható össze: egy szerverből és egy vagy több kliensből. A kliensek a szerver által megosztott adatokhoz képesek távolról hozzáférni. A megfelelő működéshez mindössze csak néhány programot kell beállítani és futtatni.
A szervernek a következő démonokat kell működtetnie:
Démon | Leírás |
---|---|
nfsd | Az NFS démon, amely kiszolgálja az NFS kliensektől érkező kéréseket. |
mountd | Az NFS csatlakoztató démonja, amely végrehajtja az nfsd(8) által átküldött kéréseket. |
rpcbind | Ez a démon lehetővé teszi az NFS kliensek számára, hogy fel tudják deríteni az NFS szerver által használt portot. |
A kliensen is futnia kell egy démonnak, amelynek a neve nfsiod. Az nfsiod démon az NFS szerver felől érkező kéréseket szolgálja ki. A használata teljesen opcionális, csupán a teljesítményt hívatott javítani, de a normális és helyes működéshez nincs rá szükségünk. Az nfsiod(8) man oldalán erről többet is megtudhatunk.
Az NFS beállítása viszonylag egyértelműen adja magát. A működéséhez szükséges programok automatikus elindítása csupán néhány apró módosítást igényel az /etc/rc.conf állományban.
Az NFS szerveren gondoskodjunk róla, hogy az alábbi beállítások szerepeljenek az /etc/rc.conf állományban:
rpcbind_enable="YES" nfs_server_enable="YES" mountd_flags="-r"
A mountd magától el fog indulni, ha az NFS szervert engedélyezzük.
A kliensen a következő beállítást kell felvennünk az /etc/rc.conf állományba:
nfs_client_enable="YES"
Az /etc/exports állomány adja meg, hogy az NFS milyen állományrendszereket exportáljon (vagy másképpen szólva “osszon meg”). Az /etc/exports állományban tehát a megosztani kívánt állományrendszereket kell szerepeltetnünk, és azt, hogy melyik számítógépekkel tudjuk ezeket elérni. A gépek megnevezése mellett a hozzáférésre további megszorításokat írhatunk fel. Ezek részletes leírását az exports(5) man oldalon találjuk meg.
Lássunk néhány példát az /etc/exports állományban megjelenő bejegyzésekre:
A most következő példákban az
állományrendszerek
exportálásának finomságait
igyekszünk érzékeltetni, noha a
konkrét beállítások gyakran a
rendszerünktől és a hálózati
konfigurációtól függenek.
Például, ha a /cdrom
könytárat akarjuk három gép
számára megosztani, akik a szerverrel
megegyező tartományban találhatóak
(ezért nem is kell megadnunk a tartományt) vagy
mert egyszerűen megtalálhatók az
/etc/hosts állományunkban.
Az -ro
beállítás az
exportált állományrendszereket
írásvédetté teszi. Ezzel a
beállítással a távoli rendszerek nem
lesznek képesek módosítani az
exportált állományrendszer
tartalmát.
/cdrom -ro gép1 gép2 gép3
A következő sorban a /home
könyvtárat három gép
számára osztjuk meg, melyeket IP-címekkel
adtunk meg. Ez olyan helyi hálózat esetén
hasznos, ahol nem állítottunk be
névfeloldást. Esetleg a belső
hálózati neveket az
/etc/hosts állományban is
tárolhatjuk. Ezzel utóbbival kapcsolatban a
hosts(5) man oldalt érdemes fellapoznunk. Az
-alldirs
beállítás
lehetővé teszi, hogy az alkönyvtárak is
csatlakozási pontok lehessenek. Más
szóval, nem fogja csatlakoztatni az
alkönyvtárakat, de megengedi a kliensek
számára, hogy csak azokat a
könyvtárakat csatlakoztassák, amelyeket kell
vagy amelyekre szükségünk van.
/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4
A következő sorban az /a
könyvtárat úgy exportáljuk, hogy az
állományrendszerhez két
különböző tartományból is
hozzá lehessen férni. A
-maproot=root
beállítás
hatására a távoli rendszer
root felhasználója az
exportált állományrendszeren szintén
root felhasználóként
fogja írni az adatokat. Amennyiben a
-maproot=root beállítást
nem adjuk meg, akkor a távoli rendszeren hiába
root az adott felhasználó, az
exportált állományrendszeren nem lesz
képes egyetlen állományt sem
módosítani.
/a -maproot=root gep.minta.com doboz.haz.org
A kliensek is csak a megfelelő engedélyek birtokában képesek elérni a megosztott állományrendszereket. Ezért a klienst ne felejtsük el felvenni a szerver /etc/exports állományába.
Az /etc/exports állományban az egyes sorok az egyes állományrendszerekre és az egyes gépekre vonatkoznak. A távoli gépek állományrendszerenként csak egyszer adhatóak meg, és csak egy alapértelmezett bejegyzésük lehet. Például tegyük fel, hogy a /usr egy önálló állományrendszer. Ennek megfelelően az alábbi bejegyzések az /etc/exports állományban érvénytelenek:
# Nem használható, ha a /usr egy állományrendszer: /usr/src kliens /usr/ports kliens
Egy állományrendszerhez, vagyis itt a /usr partícióhoz, két export sort is megadtunk ugyanahhoz a kliens nevű géphez. Helyesen így kell megoldani az ilyen helyzeteket:
/usr/src /usr/ports kliens
Az adott géphez tartozó egy állományrendszerre vonatkozó exportoknak mindig egy sorban kell szerepelniük. A kliens nélkül felírt sorok egyetlen géphez tartozónak fognak számítani. Ezzel az állományrendszerek megosztását tudjuk szabályozni, de legtöbbek számára nem jelent gondot.
Most egy érvényes exportlista következik, ahol a /usr és az /exports mind helyi állományrendszerek:
# Osszuk meg az src és ports könyvtárakat a kliens01 és kliens02 részére, de csak a # kliens01 férhessen hozzá rendszeradminisztrátori jogokkal: /usr/src /usr/ports -maproot=root kliens01 /usr/src /usr/ports kliens02 # A kliensek az /exports könyvtárban teljes joggal rendelkeznek és azon belül # bármit tudnak csatlakoztatni. Rajtuk kívül mindenki csak írásvédetten képes # elérni az /exports/obj könyvtárat: /exports -alldirs -maproot=root kliens01 kliens02 /exports/obj -ro
A mountd démonnal az /etc/exports állományt minden egyes módosítása után újra be kell olvastatni, mivel a változtatásaink csak így fognak érvényesülni. Ezt megcsinálhatjuk úgy is, hogy küldünk egy HUP (hangup, avagy felfüggesztés) jelzést a már futó démonnak:
# kill -HUP `cat /var/run/mountd.pid`
vagy meghívjuk a mountd rc(8) szkriptet a megfelelő paraméterrel:
# /etc/rc.d/mountd onereload
Az 11.7 Szakaszban tudhatunk meg részleteket az rc szkriptek használatáról.
Ezek után akár a FreeBSD újraindításával is aktiválhatjuk a megosztásokat, habár ez nem feltétlenül szükséges. Ha root felhasználónként kiadjuk a következő parancsokat, akkor azzal minden szükséges programot elindítunk.
Az NFS szerveren tehát:
# rpcbind # nfsd -u -t -n 4 # mountd -r
Az NFS kliensen pedig:
# nfsiod -n 4
Ezzel most már minden készen áll a távoli állományrendszer csatlakoztatására. A példákban a szerver neve szerver lesz, valamint a kliens neve kliens. Ha csak ideiglenesen akarunk csatlakoztatni egy állományrendszert vagy egyszerűen csak ki akarjuk próbálni a beállításainkat, a kliensen root felhasználóként az alábbi parancsot hajtsuk végre:
# mount szerver:/home /mnt
Ezzel a szerveren található /home könyvtárat fogjuk a kliens /mnt könyvtárába csatlakoztatni. Ha mindent jól beállítottunk, akkor a kliensen most már be tudunk lépni az /mnt könyvtárba és láthatjuk a szerveren található állományokat.
Ha a számítógép indításával automatikusan akarunk hálózati állományrendszereket csatlakoztatni, akkor vegyük fel ezeket az /etc/fstab állományba. Erre íme egy példa:
szerver:/home /mnt nfs rw 0 0
Az fstab(5) man megtalálhatjuk az összes többi beállítást.
Bizonyos alkalmazások (például a mutt) csak akkor működnek megfelelően, ha az állományokat a megfelelő módon zárolják. Az NFS esetében az rpc.lockd használható az ilyen zárolások megvalósítására. Az engedélyezéséhez mind a szerveren és a kliensen vegyük fel a következő sort az /etc/rc.conf állományba (itt már feltételezzük, hogy az NFS szervert és klienst korábban beállítottuk):
rpc_lockd_enable="YES" rpc_statd_enable="YES"
A következő módon indíthatjuk el:
# /etc/rc.d/lockd start # /etc/rc.d/statd start
Ha nincs szükségünk valódi
zárolásra az NFS kliensek
és az NFS szerver között,
akkor megcsinálhatjuk azt is, hogy az
NFS kliensen a mount_nfs(8) programnak
az -L
paraméter
átadásával csak helyileg
végzünk zárolást. Ennek
további részleteről a mount_nfs(8) man
oldalon kaphatunk felvilágosítást.
Az NFS megoldását a gyakorlatban rengeteg esetben alkalmazzák. Ezek közül most felsoroljuk a legelterjedtebbeket:
Több gép között megosztunk egy telepítőlemezt vagy más telepítőeszközt. Ez így sokkal olcsóbb és gyakorta kényelmes megoldás abban az esetben, ha egyszerre több gépre akarjuk ugyanazt a szoftvert telepíteni.
Nagyobb hálózatokon sokkal kényelmesebb lehet egy központi NFS szerver használata, ahol a felhasználók könyvtárait tároljuk. Ezek a felhasználói könyvtárak aztán megoszthatóak a hálózaton keresztül, így a felhasználók mindig ugyanazt a könyvárat kapják függetlenül attól, hogy milyen munkaállomásról is jelentkeztek be.
Több géppel is képes így osztozni az /usr/ports/distfiles könyvtáron. Ezen a módon sokkal gyorsabban tudunk portokat telepíteni a gépekre, mivel nem kell külön mindegyikre letölteni az ehhez szükséges forrásokat.
Az amd(8) (automatikus csatlakoztató démon, az automatic mounter daemon) önműködően csatlakoztatja a távoli állományrendszereket, amikor azokon belül valamelyik állományhoz vagy könyvtárhoz próbálunk hozzáférni. Emellett az amd az egy ideje már inaktív állományrendszereket is automatikusan leválasztja. Az amd használata egy remek alternatívát kínál az általában az /etc/fstab állományban megjelenő állandóan csatlakoztatott állományrendszerekkel szemben.
Az amd úgy működik, hogy kapcsolódik egy NFS szerver /host és /net könyvtáraihoz. Amikor egy állományt akarunk elérni ezeken a könyvtárakon belül, az amd kikeresi a megfelelő távoli csatlakoztatást és magától csatlakoztatja. A /net segítségével egy IP-címről tudunk exportált állományrendszereket csatlakoztatni, miközben a /host a távoli gép hálózati neve esetében használatos.
Ha tehát a /host/izemize/usr könyvtárban akarunk elérni egy állományt, akkor az amd démonnak ahhoz először az izemize nevű gépről exportált /usr könyvtárat kell csatlakoztatnia.
Példa 29-2. Egy exportált állományrendszer csatlakoztatása az amd használatával
Egy távoli számítógép által rendelkezésre bocsátott megosztásokat a showmount paranccsal tudjuk lekérdezni. Például az izemize gépen elérhető exportált állományrendszereket így láthatjuk:
% showmount -e izemize Exports list on izemize: /usr 10.10.10.0 /a 10.10.10.0 % cd /host/izemize/usr
Ahogy a példában látjuk is, a showmount parancs a /usr könyvtárat mutatja megosztásként. Amikor tehát belépünk a /host/izemize/usr könyvtárba, akkor amd magától megpróbálja feloldani az izemize hálózati nevet és csatlakoztatni az elérni kívánt exportált állományrendszert.
Az amd az indító szkripteken keresztül az /etc/rc.conf alábbi beállításával engedélyezhető:
amd_enable="YES"
Emellett még az amd_flags
használatával további paraméterek is
átadható az amd
felé. Alapértelmezés szerint az
amd_flags
tartalmaz az alábbi:
amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"
Az /etc/amd.map állomány adja meg az exportált állományrendszerek alapértelmezett beállításait. Az /etc/amd.conf állományban az amd további lehetőségeit konfigurálhatjuk..
Ha többet is szeretnénk tudni a témáról, akkor az amd(8) és az amd.conf(5) man oldalakat javasolt elolvasnunk.
Némely PC-s ISA buszos Ethernet kártyákra olyan korlátozások érvényesek, melyek komoly hálózati problémák keletkezéséhez vezethetnek, különösen az NFS esetében. Ez a nehézség nem FreeBSD-függő, de a FreeBSD rendszereket is érinti.
Ez gond általában majdnem mindig akkor merül fel, amikor egy (FreeBSD-s) PC egy hálózatba kerül többek közt a Silicon Graphic és a Sun Microsystems által gyártott nagyteljesítményű munkaállomásokkal. Az NFS csatlakoztatása és bizonyos műveletek még hibátlanul végrehajtódnak, azonban hirtelen a szerver látszólag nem válaszol többet a kliens felé úgy, hogy a többi rendszertől folyamatosan dolgozza felfele a kéréseket. Ez a kliens rendszeren tapasztalható csak, amikor a kliens FreeBSD vagy egy munkaállomás. Sok rendszeren egyszerűen rendesen le sem lehet állítani a klienst, ha a probléma egyszer már felütötte a fejét. Egyedüli megoldás gyakran csak a kliens újraindítása marad, mivel az NFS-ben kialakult helyzetet máshogy nem lehet megoldani.
Noha a “helyes” megoldás az lenne, ha
beszereznénk egy nagyobb teljesítményű
és kapacitású kártyát a FreeBSD
rendszer számára, azonban egy jóval
egyszerűbb kerülőút is
található a kielégítő
működés eléréséhez. Ha a
FreeBSD rendszer képviseli a szervert,
akkor a kliensnél adjuk meg a -w=1024
beállítást is a
csatlakoztatásnál. Ha a FreeBSD rendszer a
kliens szerepét tölti be, akkor
az NFS állományrendszert az
-r=1024
beállítással
csatlakoztassuk róla. Ezek a
beállítások az fstab
állomány negyedik mezőjében is
megadhatóak az automatikus csatlakoztatáshoz, vagy
manuális esetben a mount(8) parancsnak a
-o
paraméterrel.
Hozzá kell azonban tennünk, hogy létezik egy másik probléma, amit gyakran ezzel tévesztenek össze, amikor az NFS szerverek és kliensek nem ugyanabban a hálózatban találhatóak. Ilyen esetekben mindenképpen győződjünk meg róla, hogy az útválasztók rendesen továbbküldik a működéshez szükséges UDP információkat, különben nem sokat tudunk tenni a megoldás érdekében.
A most következő példákban a
gyorsvonat lesz a
nagyteljesítményű munkaállomás
(felület) neve, illetve a freebsd pedig a
gyengébb teljesítményű Ethernet
kártyával rendelkező FreeBSD rendszer
(felület) neve. A szerveren az
/osztott nevű könyvtárat
fogjuk NFS állományrendszerként
exportálni (lásd exports(5)), amelyet majd a
/projekt könyvtárba fogunk
csatlakoztatni a kliensen. Minden esetben érdemes lehet
még megadnunk a hard
vagy
soft
, illetve bg
opciókat is.
Ebben a példában a FreeBSD rendszer (freebsd) lesz a kliens, és az /etc/fstab állományában így szerepel az exportált állományrendszer:
gyorsvonat:/osztott /projekt nfs rw,-r=1024 0 0
És így tudjuk manuálisan csatlakoztatni:
# mount -t nfs -o -r=1024 gyorsvonat:/osztott /projekt
Itt a FreeBSD rendszer lesz a szerver, és a gyorsvonat /etc/fstab állománya így fog kinézni:
freebsd:/osztott /projekt nfs rw,-w=1024 0 0
Manuálisan így csatlakoztathatjuk az állományrendszert:
# mount -t nfs -o -w=1024 freebsd:/osztott /projekt
Szinte az összes 16 bites Ethernet kártya képes működni a fenti írási vagy olvasási korlátozások nélkül is.
A kíváncsibb olvasók számára eláruljuk, hogy pontosan miért is következik be ez a hiba, ami egyben arra is magyarázatot ad, hogy miért nem tudjuk helyrehozni. Az NFS általában 8 kilobyte-os “blokkokkal” dolgozik (habár kisebb méretű darabkákat is tud készíteni). Mivel az Ethernet által kezelt legnagyobb méret nagyjából 1500 byte, ezért az NFS “blokkokat” több Ethernet csomagra kell osztani — még olyankor is, ha ez a program felsőbb rétegeiben osztatlan egységként látszik — ezt aztán fogadni kell, összerakni és nyugtázni mint egységet. A nagyteljesítményű munkaállomások a szabvány által még éppen megengedett szorossággal képesek ontani magukból az egy egységhez tartozó csomagokat, közvetlenül egymás után. A kisebb, gyengébb teljesítményű kártyák esetében azonban az egymáshoz tartozó, később érkező csomagok ráfutnak a korábban megkapott csomagokra még pontosan azelőtt, hogy elérnék a gépet, így az egységek nem állíthatóak össze vagy nem nyugtázhatóak. Ennek eredményeképpen a munkaállomás egy adott idő múlva megint próbálkozik, de ismét az egész 8 kilobyte-os blokkot küldi el, ezért ez a folyamat a végtelenségig ismétlődik.
Ha a küldendő egységek méretét az Ethernet által kezelt csomagok maximális mérete alá csökkentjük, akkor biztosak lehetünk benne, hogy a teljes Ethernet csomag egyben megérkezik és nyugtázódik, így elkerüljük a holtpontot.
A nagyteljesítményű munkaállomások természetesen továbbra is küldhetnek a PC-s rendszerek felé túlfutó csomagokat, de egy jobb kártyával az ilyen túlfutások nem érintik az NFS által használt “egységeket”. Amikor egy ilyen túlfutás bekövetkezik, az érintett egységet egyszerűen újra elküldik, amelyet a rákövetkező alkalommal nagy valószínűséggel már tudunk rendesen fogadni, összerakni és nyugtázni.
A hálózati információs szolgáltatást (Network Information Service, avagy NIS) a Sun Microsystems fejlesztette ki a UNIX (eredetileg SunOS) rendszerek központosított karbantartásához. Mostanra már lényegében ipari szabvánnyá nőtte ki magát, hiszen az összes nagyobb UNIX-szerű rendszer (a Solaris, HP-UX, AIX®, Linux, NetBSD, OpenBSD, FreeBSD stb.) támogatja a NIS használatát.
A NIS régebben sárga oldalak (Yellow Pages) néven volt ismert, de a különböző jogi problémák miatt később ezt a Sun megváltoztatta. A régi elnevezést (és a yp rövidítést) azonban még napjainkban is lehet néhol látni.
Ez egy RPC alapján működő, kliens/szerver felépítésű rendszer, amely az egy NIS tartomány belül levő számítógépek számára teszi lehetővé ugyanazon konfigurációs állományok használatát. Segítségével a rendszergazda a NIS klienseket a lehető legkevesebb adat hozzáadásával, eltávolításával vagy módosításával képes egyetlen helyről beállítani.
Hasonló a Windows NT® tartományaihoz, és habár a belső implementációt tekintve már akadnak köztük jelentős eltérések is, az alapvető funkciók szintjén mégis összevethetőek.
A NIS telepítése számos fogalom és fontos felhasználói program kerül elő FreeBSD-n, akár egy NIS szervert akarunk beállítani, akár csak egy NIS klienst:
Fogalom | Leírás |
---|---|
NIS tartománynév | A NIS központi szerverei és az összes hozzájuk tartozó kliens (beleértve az alárendelt szervereket) rendelkezik egy NIS tartománynévvel. Hasonló a Windows NT által használt tartománynevekhez, de a NIS tartománynevei semmilyen kapcsolatban nem állnak a névfeloldással. |
rpcbind | Az RPC (Remote Procedure Call, a NIS által használt egyik hálózati protokoll) engedélyezéséhez lesz rá szükségünk. Ha az rpcbind nem fut, akkor sem NIS szervert, sem pedig NIS klienst nem tudunk működtetni. |
ypbind | A NIS klienst “köti össze” a hozzá tartozó NIS szerverrel. A NIS tartománynevet a rendszertől veszi, és az RPC használatával csatlakozik a szerverhez. Az ypbind a NIS környezet kliens és szerver közti kommunikációjának magját alkotja. Ha az ypbind leáll a kliens gépén, akkor nem tudjuk elérni a NIS szervert. |
ypserv | Csak a NIS szervereken szabad futnia, mivel ez maga a NIS szerver programja. Ha az ypserv(8) leáll, akkor a szerver nem lesz képes tovább kiszolgálni a NIS kéréseket (szerencsére az alárendelt szerverek képesek átvenni ezeket). A NIS bizonyos változatai (de nem az, amelyik a FreeBSD-ben is megjelenik) nem próbálnak meg más szerverekhez csatlakozni, ha bedöglik az aktuális használt szerver. Ezen gyakran egyedül csak a szervert képviselő program (vagy akár az egész szerver) újraindítása segíthet, illetve az ypbind újraindítása a kliensen. |
rpc.yppasswdd | Ez egy olyan program, amelyet csak a NIS központi szerverein kell csak futtatni. Ez a démon a NIS kliensek számára a NIS jelszavaik megváltoztatását teszi lehetővé. Ha ez a démon nem fut, akkor a felhasználók csak úgy tudják megváltoztatni a jelszavukat, ha bejelentkeznek a központi NIS szerverre. |
A NIS környezetekben háromféle gép létezik: a központi szerverek, az alárendelt szerverek és a kliensek. A szerverek képezik a gépek konfigurációs információinak központi tárhelyét. A központi szerverek tárolják ezen információk hiteles másolatát, míg ezt az alárendelt szerverek redundánsan tükrözik. A kliensek a szerverekre támaszkodnak ezen információk beszerzéséhez.
Sok állomány tartalma megosztható ezen a módon. Például a master.passwd, a group és hosts állományokat meg szokták osztani NFS-en. Amikor a kliensen futó valamelyik programnak olyan információra lenne szüksége, amely általában ezekben az állományokban nála megtalálható lenne, akkor helyette a NIS szerverhez fordul.
A központi NIS szerver. Ez a szerver, amely leginkább a Windows NT elsődleges tartományvezérlőjéhez hasonlítható tartja karban az összes, NIS kliensek által használt állományt. A passwd, group, és összes többi ehhez hasonló állomány ezen a központi szerveren található meg.
Megjegyzés: Egy gép akár több NIS tartományban is lehet központi szerver. Ezzel a lehetőséggel viszont itt most nem foglalkozunk, mivel most csak egy viszonylag kis méretű NIS környezetet feltételezünk.
Az alárendelt NIS szerverek. A Windows NT tartalék tartományvezérlőihez hasonlítanak, és az alárendelt NIS szerverek feladata a központi NIS szerveren tárolt adatok másolatainak karbantartása. Az alárendelt NIS szerverek a redundancia megvalósításában segítenek, aminek leginkább a fontosabb környezetekben van szerepe. Emellett a központi szerver terhelésének kiegyenlítését is elvégzik. A NIS kliensek elsőként mindig ahhoz a NIS szerverhez csatlakoznak, amelytől először választ kapnak, legyen akár az egy alárendelt szerver.
A NIS kliensek. A NIS kliensek, hasonlóan a Windows NT munkaállomásokhoz, a NIS szerveren (amely a Windows NT munkaállomások esetében a tartományvezérlő) keresztül jelentkeznek be.
Ebben a szakaszban egy példa NIS környezetet állítunk be.
Tegyük fel, hogy egy aprócska egyetemi labor rendszergazdái vagyunk. A labor, mely 15 FreeBSD-s gépet tudhat magáénak, jelen pillanatban még semmilyen központosított adminisztráció nem létezik. Mindegyik gép saját /etc/passwd és /etc/master.passwd állománnyal rendelkezik. Ezeket az állományokat saját kezűleg kell szinkronban tartani. Tehát ha most felveszünk egy felhasználót a laborhoz, akkor az adduser parancsot mind a 15 gépen ki kell adni. Egyértelmű, hogy ez így nem maradhat, ezért úgy döntöttük, hogy a laborban NIS-t fogunk használni, és két gépet kinevezünk szervernek.
Az iméntieknek megfelelően a labor most valahogy így néz ki:
A gép neve | IP-cím | A gép szerepe |
---|---|---|
ellington | 10.0.0.2 | központi NIS |
coltrane | 10.0.0.3 | alárendelt NIS |
basie | 10.0.0.4 | tanszéki munkaállomás |
bird | 10.0.0.5 | kliensgép |
cli[1-11] | 10.0.0.[6-17] | a többi kliensgép |
Ha még nincs tapasztalatunk a NIS rendszerek összeállításában, akkor először jó ötlet lehet végiggondolni, miként is akarjuk kialakítani. A hálózatunk méretétől függetlenül is akadnak olyan döntések, amelyeket mindenképpen meg kell hoznunk.
Ez nem az a “tartománynév”, amit megszokhattunk. Ennek a pontos neve “NIS tartománynév”. Amikor a kliensek kérnek valamilyen információt, akkor megadják annak a NIS tartománynak a nevét is, amelynek részei. Így tud egy hálózaton több szerver arról dönteni, hogy melyikük melyik kérést válaszolja meg. A NIS által használt tartománynévre tehát inkább úgy érdemes gondolni, mint egy valamilyen módon összetartozó gépek közös nevére.
Előfordul, hogy egyes szervezetek az interneten is nyilvántartott tartománynevüket választják NIS tartománynévnek. Ez alapvetően nem ajánlott, mivel a hálózati problémák felderítése közben félreértéseket szülhet. A NIS tartománynévnek a hálózatunkon belül egyedinek kell lennie, és lehetőleg minél jobban írja le az általa csoportba sorolt gépeket. Például a Kis Kft. üzleti osztályát tegyük a “kis-uzlet” NIS tartományba. Ebben a példában most a proba-tartomany nevet választottuk.
A legtöbb operációs rendszer azonban (köztük a SunOS) a NIS tartománynevet használja internetes tartománynévként is. Ha a hálózatunkon egy vagy több ilyen gép is található, akkor a NIS tartomány nevének az internetes tartománynevet kell megadnunk.
Nem árt néhány dolgot fejben tartani, amikor a NIS szervernek használt gépet kiválasztjuk. Az egyik ilyen szerencsétlen dolog az a szintű függőség, ami a NIS kliensek felől megfigyelhető a szerverek felé. Ha egy kliens nem tudja a NIS tartományon belül felvenni a kapcsolatot valamelyik szerverrel, akkor az a gép könnyen megbízhatatlanná válhat. Felhasználói- és csoportinformációk nélkül a legtöbb rendszer egy időre le is merevedik. Ennek figyelembevételével tehát olyan gépet kell szervernek választanunk, amelyet nem kell gyakran újraindítani, és nem végzünk rajta semmilyen komoly munkát. A célnak legjobban megfelelő NIS szerverek valójában olyan gépek, amelyek egyedüli feladata csak a NIS kérések kiszolgálása. Ha a hálózatunk nem annyira leterhelt, akkor még a NIS szerver mellett más programokat is futtathatunk, de ne feledjük, hogy ha a NIS szolgáltatás megszűnik, akkor az az összes NIS kliensen éreztetni fogja kedvezőtlen hatását.
A NIS rendszerben tárolt összes információ általános példánya egyetlen gépen található meg, amelyet a központi NIS szervernek hívunk. Az információk tárolására szánt adatbázis pedig NIS táblázatoknak (NIS map) nevezzük. FreeBSD alatt ezek a táblázatok a /var/yp/tartománynév könyvtárban találhatóak, ahol a tartománynév a kiszolgált NIS tartományt nevezi meg. Egyetlen NIS szerver egyszerre akár több tartományt is kiszolgálhat, így itt több könyvtár is található, minden támogatott tartományhoz egy. Minden tartomány saját, egymástól független táblázatokkal rendelkezik.
A központi és alárendelt NIS szerverek az ypserv démon segítségével dolgozzák fel a NIS kéréseket. Az ypserv felelős a NIS kliensektől befutó kérések fogadásáért, és a kért tartomány valamint táblázat nevéből meghatározza az adatbázisban tárolt állományt, majd innen visszaküldi a hozzá tartozó adatot a kliensnek.
A központi NIS szerver beállítása viszonylag magától értetődő, de a nehézségét az igényeink szabják meg. A FreeBSD alapból támogatja a NIS használatát. Ezért mindössze annyit kell tennünk, hogy a következő sorokat betesszük az /etc/rc.conf állományba, és a FreeBSD gondoskodik a többiről.
nisdomainname="proba-tartomany"Ez a sor adja meg a hálózati beállítások (vagy például az újraindítás) során a NIS tartomány nevét, amely a korábbiak szerint itt most a proba-tartomany.
nis_server_enable="YES"Ezzel utasítjuk a FreeBSD-t, hogy a hálózati alkalmazások következő indításakor a NIS szervert is aktiválja.
nis_yppasswdd_enable="YES"Ezzel engedélyezzük az rpc.yppasswdd démont, amely a korábban említettek szerint lehetővé teszi a felhasználók számára, hogy a közvetlenül a kliensekről változtassák meg a NIS jelszavukat.
Megjegyzés: A konkrét NIS beállításainktól függően további bejegyzések felvételére is szükségünk lehet. Erre később még az olyan NIS szervereknél, amelyek egyben NIS kliensek, vissza fogunk térni.
Miután ezeket beállítottuk, rendszeradminisztrátorként adjuk ki az /etc/netstart parancsot. Az /etc/rc.conf állományban szereplő adatok alapján mindent beállít magától. Még mielőtt inicializálnánk a NIS táblázatokat, indítsuk el manuálisan az ypserv démont:
# /etc/rc.d/ypserv start
A NIS táblázatok lényegében a /var/yp könyvtárban tárolt adatbázisok. A központi NIS szerver /etc könyvtárában található konfigurációs állományokból állítódnak elő, egyetlen kivétellel: ez az /etc/master.passwd állomány. Ennek megvan a maga oka, hiszen nem akarjuk a root és az összes többi fontosabb felhasználóhoz tartozó jelszót az egész NIS tartománnyal megosztani. Ennek megfelelően a NIS táblázatok inicializálásához a következőt kell tennünk:
# cp /etc/master.passwd /var/yp/master.passwd # cd /var/yp # vi master.passwd
El kell távolítanunk az összes rendszerszintű (bin, tty, kmem, games, stb), és minden olyan egyéb hozzáférést, amelyeket nem akarjuk közvetíteni a NIS kliensek felé (például a root és minden más nullás, vagyis rendszeradminisztrátori azonosítóval ellátott hozzáférést).
Megjegyzés: Gondoskodjunk róla, hogy az /var/yp/master.passwd állomány sem a csoport, sem pedig bárki más számára nem olvasható (600-as engedély)! Ennek beállításához használjuk az chmod parancsot, ha szükséges.
Ha végeztünk, akkor már
tényleg itt az ideje inicializálni NIS
táblázatainkat. A FreeBSD erre egy
ypinit nevű szkriptet ajánl
fel (erről a saját man oldalán tudhatunk
meg többet). Ez a szkript egyébként a
legtöbb UNIX típusú
operációs rendszeren
megtalálható, de nem az összesen. A
Digital UNIX/Compaq Tru64 UNIX rendszereken ennek a neve
ypsetup. Mivel most a központi NIS
szerver táblázatait hozzuk létre,
azért az ypinit szkriptnek
át kell adnunk a -m
opciót
is. A NIS táblázatok
előállításánál
feltételezzük, hogy a fentebb ismertetett
lépéseket már megtettük, majd
kiadjuk ezt a parancsot:
ellington# ypinit -m proba-tartomany Server Type: MASTER Domain: proba-tartomany Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. At this point, we have to construct a list of this domains YP servers. rod.darktech.org is already known as master server. Please continue to add any slave servers, one per line. When you are done with the list, type a <control D>. master server : ellington next host to add: coltrane next host to add: ^D The current list of NIS servers looks like this: ellington coltrane Is this correct? [y/n: y] y [ .. a táblázatok generálása .. ] NIS Map update completed. ellington has been setup as an YP master server without any errors.
Az üzenetek fordítása:
A szerver típusa: KÖZPONTI, tartomány: proba-tartomany Az YP szerver létrehozásához meg kell válaszolni néhány kérdést az eljárás megkezdése előtt. Szeretnénk, ha az eljárás megszakadna a nem végzetes hibák esetén is? [i/n: n] n Rendben, akkor ne felejtsük el manuálisan kijavítani a hibát, ha valamivel gond lenne. Ha nem tesszük meg, akkor előfordulhat, hogy valami nem fog rendesen működni. Most össze kell állítanunk egy listát a tartomány YP szervereiről. Jelenleg a rod.darktech.org a központi szerver. Kérjünk, adjon meg további alárendelt szervereket, soronként egyet. Amikor ezt befejeztük, a <control D> lenyomásával tudunk kilépni. központi szerver : ellington következő gép : coltrane következő gép : ^D A NIS szerverek listája jelenleg a következő: ellington coltrane Ez megfelelő? [i/n: i] i [ .. a táblázatok generálása .. ] A NIS táblázatok sikeressen frissültek. Az elligon szervert minden hiba nélkül sikerült központi szerverként beállítani.
Az ypinit a /var/yp/Makefile.dist állományból létrehozza a /var/yp/Makefile állományt. Amennyiben ez létrejött, az állomány feltételezi, hogy csak FreeBSD-s gépek részvételével akarunk kialakítani egy egyszerveres NIS környezetet. Mivel a proba-tartomany még egy alárendelt szervert is tartalmaz, ezért át kell írnunk a /var/yp/Makefile állományt:
ellington# vi /var/yp/Makefile
Ezt a sort kell megjegyzésbe tennünk:
NOPUSH = "True"
(ha még nem lenne úgy).
Az alárendelt NIS szerverek
beállítása még a
központinál is egyszerűbb.
Jelentkezzünk be az alárendelt szerverre
és az eddigieknek megfelelően írjuk
át az /etc/rc.conf
állományt. Az egyetlen
különbség ezúttal csupán
annyi lesz, hogy az ypinit
lefuttatásakor a -s
opciót
kell megadnunk (mint slave, vagyis alárendelt). A
-s
opció használatához
a központi NIS szerver nevét is át kell
adnunk, ezért a konkrét parancs valahogy
így fog kinézni:
coltrane# ypinit -s ellington proba-tartomany Server Type: SLAVE Domain: test-domain Master: ellington Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. There will be no further questions. The remainder of the procedure should take a few minutes, to copy the databases from ellington. Transferring netgroup... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byuser... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byhost... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring group.bygid... ypxfr: Exiting: Map successfully transferred Transferring group.byname... ypxfr: Exiting: Map successfully transferred Transferring services.byname... ypxfr: Exiting: Map successfully transferred Transferring rpc.bynumber... ypxfr: Exiting: Map successfully transferred Transferring rpc.byname... ypxfr: Exiting: Map successfully transferred Transferring protocols.byname... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byaddr... ypxfr: Exiting: Map successfully transferred Transferring netid.byname... ypxfr: Exiting: Map successfully transferred Transferring hosts.byaddr... ypxfr: Exiting: Map successfully transferred Transferring protocols.bynumber... ypxfr: Exiting: Map successfully transferred Transferring ypservers... ypxfr: Exiting: Map successfully transferred Transferring hosts.byname... ypxfr: Exiting: Map successfully transferred coltrane has been setup as an YP slave server without any errors. Don't forget to update map ypservers on ellington.
Most már lennie kell egy /var/yp/proba-tartomany nevű könyvtárunknak is. A központi NIS szerver táblázatainak másolata itt fognak tárolódni. Ezeket soha ne felejtsük el frissen tartani. Az alárendelt szervereken a következő /etc/crontab bejegyzések pontosan ezt a feladatot látják el:
20 * * * * root /usr/libexec/ypxfr passwd.byname 21 * * * * root /usr/libexec/ypxfr passwd.byuid
Ez a két sor gondoskodik róla, hogy az alárendelt szerverek ne felejtsék el egyeztetni a táblázataikat a központi szerver táblázataival. Ezek a bejegyzések nem nélkülözhetetlenek a megfelelő működéshez, mivel a központi szerver automatikusan feltölti az alárendelt szerverekre a létrejött változásokat. Mivel azonban a jelszavak létfontosságúak a szervertől függő rendszerek számára, ezért ajánlott explicit módon is előírni a frissítést. Ez a forgalmasabb hálózatokon nagyobb jelentőséggel bír, mivel ott a táblázatok frissítése nem mindig fejeződik be rendesen.
Most pedig futassuk le a /etc/netstart parancsot az alárendelt szervereken is, amivel így elindul a NIS szerver.
A NIS kliens az ypbind démon segítségével egy kötésnek (bind) nevezett kapcsolatot épít ki egy adott NIS szerverrel. Az ypbind ellenőrzi a rendszer alapértelmezett tartományát (ezt a domainname paranccsal állítottunk be), majd RPC kéréseket kezd szórni a helyi hálózaton. Ezek a kérések annak a tartománynak a nevét tartalmazzák, amelyhez az ypbind megpróbál kötést létrehozni. Ha az adott tartomány kiszolgálására beállított szerver észleli ezeket a kéréseket, akkor válaszol az ypbind démonnak, amely pedig feljegyzi a szerver címét. Ha több szerver is elérhető (például egy központi és több alárendelt), akkor az ypbind az elsőként válaszoló címét fogja rögzíteni. Innentől kezdve a kliens közvetlenül ennek a szervernek fogja küldeni a NIS kéréseit. Az ypbind időnként “megpingeli” a szervert, hogy meggyőződjön az elérhetőségéről. Ha az ypbind egy adott időn belül nem kap választ a ping kéréseire, akkor megszünteti a kötést a tartományhoz és nekilát keresni egy másik szervert.
Egy FreeBSD-s gépet NIS kliensként meglehetősen egyszerűen lehet beállítani.
Nyissuk meg az /etc/rc.conf állományt és a NIS tartománynév beállításához, valamint az ypbind elindításához a következőket írjuk bele:
nisdomainname="proba-tartomany" nis_client_enable="YES"
A NIS szerveren található jelszavak importálásához távolítsuk el az összes felhasználói hozzáférést az /etc/master.passwd állományunkból és a vipw segítségével adjuk hozzá az alábbi sort az állomány végéhez:
+:::::::::
Megjegyzés: Ez a sor beenged bárkit a rendszerünkre, akinek a NIS szervereken van érvényes hozzáférése. A NIS klienseket ezzel a sorral sokféle módon tudjuk állítani. A hálózati csoportokról szóló szakaszban találunk majd erről több információt. A téma mélyebb megismeréséhez az O'Reilly Managing NFS and NIS című könyvét ajánljuk.
Megjegyzés: Legalább helyi hozzáférést (vagyis amit nem NIS-en keresztül importálunk) azonban mindenképpen hagyjunk meg az /etc/master.passwd állományunkban, és ez a hozzáférés legyen a wheel csoport tagja. Ha valami gond lenne a NIS használatával, akkor ezen a hozzáférésen keresztül tudunk a gépre távolról bejelentkezni, majd innen root felhasználóra váltva megoldani a felmerült problémákat.
A NIS szerverről az összes lehetséges csoport-bejegyzést az /etc/group állományban így tudjuk importálni:
+:*::
Miután elvégeztük ezeket a lépéseket, képesek leszünk futtatni az ypcat passwd parancsot, és látni a NIS szerver jelszavakat tartalmazó táblázatát.
Általában tetszőleges távoli felhasználó küldhet RPC kéréseket az ypserv(8) számára és kérheti le a NIS táblázatok tartalmát, feltéve, hogy ismeri a tartomány nevét. Az ilyen hitelesítés nélküli műveletek ellen az ypserv(8) úgy védekezik, hogy tartalmaz egy “securenets” nevű lehetőséget, amellyel az elérhetőségüket tudjuk leszűkíteni gépek egy csoportjára. Az ypserv(8) indításakor ezeket az információkat a /var/yp/securenets állományból próbálja meg betölteni.
Megjegyzés: Az elérési útvonala megadható a
-p
opció használatával. Ez az állomány olyan bejegyzéseket tartalmaz, amelyekben egy hálózati cím és tőle láthatatlan karakterekkel elválasztva egy hálózati maszk szerepel. A “#” karakterrel kezdődő sorokat megjegyzésnek nyilvánítjuk. Egy minta securenets állomány valahogy így nézne ki:
# Engedélyezzük önmagunkról a csatlakozást -- kell! 127.0.0.1 255.255.255.255 # Engedélyezzük a 192.168.128.0 hálózatról érkező csatlakozásokat: 192.168.128.0 255.255.255.0 # Engedélyezzük a laborban található 10.0.0.0 és 10.0.15.255 közti # címekkel rendelkező gépek csatlakozását: 10.0.0.0 255.255.240.0
Ha az ypserv(8) olyan címről kap kérést, amely illeszkedik az előírt címek valamelyikére, akkor a szokásos módon feldolgozza azt. Ellenkező esetben a kérést figyelmen kívül hagyja és egy figyelmeztetést vesz fel hozzá a naplóba. Ha a /var/yp/securenets állomány nem létezik, akkor az ypserv tetszőleges gépről engedélyezi a csatlakozást.
Az ypserv lehetőséget ad a Wietse Venema által fejlesztett TCP Wrapper csomag használatára is. Ezzel a rendszergazda a /var/yp/securenets állomány helyett a TCP Wrapper konfigurációs állományai alapján képes szabályozni az elérhetőséget.
Megjegyzés: Miközben mind a két módszer nyújt valamilyen fajta védelmet, de a privilegizált portok teszteléséhez hasonlóan az “IP álcázásával” (IP spoofing) sebezhetőek. Ezért az összes NIS-hez tartozó forgalmat tűzfallal kell blokkolnunk.
Az /var/yp/securenets állományt használó szerverek nem képesek az elavult TCP/IP implementációkat használó érvényes klienseket rendesen kiszolgálni. Egyes ilyen implementációk a címben a géphez tartozó biteket nullára állítják az üzenetszóráshoz, és/vagy ezért az üzenetszóráshoz használt cím kiszámításakor nem tudja észleli a hálózati maszkot. A legtöbb ilyen probléma megoldható a kliens konfigurációjának megváltoztatásával, míg más problémák megoldása a kérdéses kliensek nyugdíjazását kívánják meg, vagy a /var/yp/securenets használatának elhagyását.
Egy régebbi TCP/IP implementációval üzemelő szerveren pedig a /var/yp/securenets állomány használata kifejezetten rossz ötlet, és a hálózatunk nagy részében képes használhatatlanná tenni a NIS funkcióit.
A TCP Wrapper csomag alkalmazása a NIS szerverünk válaszadáshoz szükséges idejét is segít csökkenteni. Az ilyenkor jelentkező plusz késlekedés mellesleg elég nagy lehet ahhoz, hogy a klienseknél időtúllépés következzen be, különösen a terheltebb hálózatokon vagy a lassú NIS szerverek esetében. Ha egy vagy több kliensünk is ilyen tüneteket mutat, akkor érdemes a kérdéses kliens rendszereket alárendelt NIS szerverekké alakítani és önmagukhoz rendelni.
A laborunkban van egy basie nevű gép, amely a tanszék egyetlen munkaállomása. Ezt a gépet nem akarjuk kivenni a NIS tartományból, de a központi NIS szerver passwd állománya mégis egyaránt tartalmazza a hallgatók és az oktatók eléréseit. Mit lehet ilyenkor tenni?
Adott felhasználók esetében le tudjuk tiltani a bejelentkezést a gépen még olyankor is, ha léteznek a NIS adatbázisában. Ehhez mindössze a kliensen az /etc/master.passwd állomány végére be kell tennünk egy -felhasználónév sort, ahol a felhasználónév annak a felhasználónak a neve, akit nem akarunk beengedni a gépre. Ezt leginkább a vipw használatán keresztül érdemes megtennünk, mivel a vipw az /etc/master.passwd állomány alapján végez némi ellenőrzést, valamint a szerkesztés befejeztével magától újragenerálja a jelszavakat tároló adatbázist. Például, ha a bill nevű felhasználót ki akarjuk tiltani a basie nevű gépről, akkor:
basie# vipw [vegyük fel a -bill sort a végére, majd lépjünk ki] vipw: rebuilding the database... vipw: done basie# cat /etc/master.passwd root:[jelszó]:0:0::0:0:The super-user:/root:/bin/csh toor:[jelszó]:0:0::0:0:The other super-user:/root:/bin/sh daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin operator:*:2:5::0:0:System &:/:/sbin/nologin bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin news:*:8:8::0:0:News Subsystem:/:/sbin/nologin man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin +::::::::: -bill basie#
Az előző szakaszban ismertetett módszer viszonylag jól működik olyan esetekben, amikor nagyon kevés felhasználóra és/vagy számítógépre kell alkalmaznunk speciális megszorításokat. A nagyobb hálózatokban szinte biztos, hogy elfelejtünk kizárni egyes felhasználókat az érzékeny gépekről, vagy az összes gépen egyenként kell ehhez a megfelelő beállításokat elvégezni, és ezzel lényegében elvesztjük a NIS legfontosabb előnyét, vagyis a központosított karbantarthatóságot.
A NIS fejlesztői erre a problémára a hálózati csoportokat létrehozásával válaszoltak. A céljuk és működésük szempontjából leginkább a UNIX-os állományrendszerekben található csoportokhoz mérhetőek. A legnagyobb eltérés a numerikus azonosítók hiányában mutatkozik meg, valamint a hálózati csoportokat a felhasználókon kívül további hálózati csoportok megadásával is ki lehet alakítani.
A hálózati csoportok a nagyobb, bonyolultabb, többszáz felhasználós hálózatok számára jöttek létre. Egy részről ez nagyon jó dolog, különösen akkor, ha egy ilyen helyzettel kell szembenéznünk. Másrészről ez a mértékű bonyolultság szinte teljesen lehetetlenné teszi a hálózati csoportok egyszerű bemutatását. A szakasz további részében használt példa is ezt a problémát igyekszik illusztrálni.
Tételezzük fel, hogy laborunkban a NIS sikeres bevezetése felkeltette a főnökeink figyelmét. Így a következő feladatunk az lett, hogy terjesszük ki a NIS tartományt az egyetemen található néhány másik gépre is. Az alábbi két táblázatban az új felhasználók és az új számítógép neveit találjuk, valamint a rövid leírásukat.
Felhasználók nevei | Leírás |
---|---|
alpha, beta | az IT tanszék hétköznapi dolgozói |
charlie, delta | az IT tanszék újdonsült dolgozói |
echo, foxtrott, golf, ... | átlagos dolgozók |
able, baker, ... | ösztöndíjasok |
Gépek nevei | Leírás |
---|---|
haboru, halal, ehseg, szennyezes | A legfontosabb szervereink. Csak az IT tanszék dolgozói férhetnek hozzájuk. |
buszkeseg, kapzsisag, irigyseg, harag, bujasag, lustasag | Kevésbé fontos szerverek. Az IT tankszék összes tagja el tudja érni ezeket a gépeket. |
egy, ketto, harom, negy, ... | Átlagos munkaállomások. Egyedül csak a valódi dolgozók jelentkezhetnek be ezekre a gépekre. |
szemetes | Egy nagyon régi gép, semmi értékes adat nincs rajta. Akár még az öszöndíjasok is nyúzhatják. |
Ha ezeket az igényeket úgy próbáljuk meg teljesíteni, hogy a felhasználókat egyenként blokkoljuk, akkor minden rendszer passwd állományába külön fel kell vennünk a -felhasználó sorokat a letiltott felhasználókhoz. Ha csak egyetlen bejegyzést is kihagyunk, akkor könnyen bajunk származhat belőle. Ez a rendszer kezdeti beállítása során még talán nem okoz gondot, de az új felhasználókat biztosan el fogjuk felejteni felvenni a megfelelő csoportokba. Elvégre Murphy is optimista volt.
A hálózati csoportok használata ilyen helyzetekben számos előnyt rejt. Nem kell az egyes felhasználókat külön felvenni, egy felhasználót felveszünk valamelyik csoportba vagy csoportokba, és a csoportok összes tagjának egyszerre tudjuk tiltani vagy engedélyezni a hozzáféréseket. Ha hozzáadunk egy új gépet a hálózatunkhoz, akkor mindössze a hálózati csoportok bejelentkezési korlátozásait kell beállítani. Ha új felhasználót veszünk fel, akkor a felhasználót kell vennünk egy vagy több hálózati csoportba. Ezek a változtatások függetlenek egymástól, és nincs szükség “minden felhasználó és minden gép összes kombinációjára”. Ha a NIS beállításainkat előzetesen körültekintően megterveztük, akkor egyetlen központi konfigurációs állományt kell módosítani a gépek elérésének engedélyezéséhez vagy tiltásához.
Az első lépés a hálózati csoportokat tartalmazó NIS táblázat inicializálása. A FreeBSD ypinit(8) programja alapértelmezés szerint nem hozza létre ezt a táblázatot, de ha készítünk egy ilyet, akkor a NIS implementációja képes kezelni. Egy ilyen üres táblázat elkészítéséhez ennyit kell begépelni:
ellington# vi /var/yp/netgroup
Ezután elkezdhetjük felvenni a tartalmát. A példánk szerint legalább négy hálózati csoportot kell csinálnunk: az IT dolgozóinak, az IT új dolgozóinak, a normál dolgozóknak és az öszöndíjasoknak.
IT_DOLG (,alpha,proba-tartomany) (,beta,proba-tartomany) IT_UJDOLG (,charlie,proba-tartomany) (,delta,proba-tartomany) FELHASZNALO (,echo,proba-tartomany) (,foxtrott,proba-tartomany) \ (,golf,proba-tartomany) OSZTONDIJAS (,able,proba-tartomany) (,baker,proba-tartomany)
Az IT_DOLG, IT_UJDOLG stb. a hálózati csoportok nevei lesznek. Minden egyes zárójelezett csoport egy vagy több felhasználói hozzáférést tartalmaz. A csoportokban szereplő három mező a következő:
Azon gépek neve, amelykre a következő elemek érvényesek. Ha itt nem adunk meg neveket, akkor a bejegyzés az összes gépre vonatkozik. Ha megadjuk egy gép nevét, akkor jutalmunk a teljes sötétség, a rettegetés és totális megtébolyodás.
A csoporthoz tartozó hozzáférés neve.
A hozzáféréshez kapcsolódó NIS tartomány. A csoportba más NIS tartományokból is át tudunk hozni hozzáféréseket, ha netalán éppen olyan szerencsétlenek lennénk, hogy több NIS tartományt is felügyelnünk kell.
A mezők mindegyike tartalmazhat dzsókerkaraktereket. Erről részletesebben a netgroup(5) man oldalon olvashatunk.
Megjegyzés: A hálózati csoportoknak lehetőleg ne adjunk 8 karakternél hosszabb nevet, különösen abban az esetben, ha a NIS tartományban más operációs rendszereket is használunk. A nevekben eltérnek a kis- és nagybetűk. Ha a hálózati csoportokat nevét nagybetűkkel írjuk, akkor könnyen különbséget tudunk tenni a felhasználók, gépek és hálózati csoportok nevei között.
Egyes (nem FreeBSD alapú) NIS kliensek nem képesek kezelni a nagyon sok bejegyzést tartalmazó hálózati csoportokat. Például a SunOS néhány korábbi verziója fennakad rajta, ha egy hálózati csoport 15 bejegyzésnél többet tartalmaz. Az ilyen korlátozások alól úgy tudunk kibújni, ha 15 felhasználónként újabb hálózati csoportokat hozunk létre, amelyekkel az eredeti hálózati csoportot építjük fel:
NAGYCSP1 (,joe1,tartomany) (,joe2,tartomany) (,joe3,tartomany) [...] NAGYCSP2 (,joe16,tartomany) (,joe17,tartomany) [...] NAGYCSP3 (,joe31,tartomany) (,joe32,tartomany) NAGYCSOPORT NAGYCSP1 NAGYCSP2 NAGYCSP3Ugyanez a folyamat javasolt olyan esetekben is, ahol 225 felhasználónál többre lenne szükség egyetlen hálózati csoporton belül.
Az így létrehozott új NIS táblázat szétküldése meglehetősen könnyű feladat:
ellington# cd /var/yp ellington# make
Ez a parancs létrehoz három NIS táblázatot: netgroup, netgroup.byhost és netgroup.byuser. Az ypcat(1) paranccsal ellenőrizni is tudjuk az új NIS táblázatainkat:
ellington% ypcat -k netgroup ellington% ypcat -k netgroup.byhost ellington% ypcat -k netgroup.byuser
Az első parancs kimenete a /var/yp/netgroup állomány tartalmára emlékeztethet minket. A második parancsnak nincs semmilyen kimenete, hacsak nem adtunk meg valamilyen gépfüggő hálózati csoportot. A harmadik parancs a hálózati csoportokat listázza ki a felhasználókhoz.
A kliensek beállítása tehát nagyon egyszerű. A haboru nevű szerver beállításához indítsuk el a vipw(8) programot, és cseréljük a
+:::::::::
sort erre:
+@IT_DOLG:::::::::
Innentől kezdve kizárólag csak az IT_DOLG csoportban található felhasználók fognak bekerülni a haboru jelszó adatbázisába, és csak ezek a felhasználók tudnak ide bejelentkezni.
Sajnos ez a korlátozás a parancsértelmező ~ funkciójára és összes olyan rutinra is vonatkozik, amelyet a felhasználói nevek és azok numerikus azonosító között képez le. Más szóval a cd ~felhasználó parancs nem fog működni, és az ls -l parancs kimenetében a felhasználói nevek helyett csak numerikus azonosítók jelennek meg, továbbá afind . -user joe -print “No such user” (“Nincs ilyen felhasználó”) hibát fog visszaadni. Ez úgy tudjuk megjavítani, ha úgy importáljuk a szerverre az összes felhasználó bejegyzését, hogy közben tiltjuk a hozzáférésüket.
Ehhez vegyünk fel egy újabb sort az /etc/master.passwd állományba. A sor valahogy így fog kinézni:
+:::::::::/sbin/nologin, amely annyit tesz, hogy “importáljuk az összes bejegyzést, de a hozzájuk tartozó parancsértelmező a /sbin/nologin legyen”. A passwd állományban tetszőleges mező tartalmát le tudjuk úgy cserélni, ha megadunk neki egy alapértelmezett értéket az /etc/master.passwd állományban.
Figyelem: Vigyázzunk, hogy a +:::::::::/sbin/nologin sort az +@IT_DOLG::::::::: sor után írjuk. Ha nem így teszünk, akkor a NIS-ből importált összes felhasználói hozzáférés a /sbin/nologin parancsértelmezőt kapja.
Miután elvégeztük ezt a változtatást, minden újabb dolgozó felvétele után csupán egyetlen táblázatot kell megváltoztatnunk. Ugyanezt a taktikát követhetjük a kevésbé fontosabb szerverek esetében is, hogy ha a helyi /etc/master.passwd állományukban a korábbi +::::::::: bejegyzést valami ilyesmivel helyettesítjük:
+@IT_DOLG::::::::: +@IT_UJDOLG::::::::: +:::::::::/sbin/nologin
Az egyszerű munkaállomások esetében pedig ezekre a sorokra lesz szükségünk:
+@IT_DOLG::::::::: +@FELHASZNALOK::::::::: +:::::::::/sbin/nologin
Minden remekül üzemel egészen addig, amíg néhány hét múlva ismét változik a házirend: az IT tanszékre ösztöndíjasok érkeznek. Az IT ösztöndíjasai a munkaállomásokat és a kevésbé fontosabb szervereket tudják használni. Az új IT dolgozók már a központi szerverekre is bejelentkezhetnek. Így tehát létrehozunk egy új hálózati csoportot IT_OSZTONDIJAS néven, majd felvesszük ide az új IT ösztöndíjasokat, és nekilátunk végigzongorázni az összes gép összes konfigurációs állományát... Ahogy azonban egy régi mondás is tartja: “A központosított tervezésben ejtett hibák teljes káoszhoz vezetnek”.
A NIS az ilyen helyzeteket úgy igyekszik elkerülni, hogy megengedi újabb hálózati csoportok létrehozását más hálózati csoportokból. Egyik ilyen lehetőség a szerep alapú hálózati csoportok kialakítása. Például, ha a fontosabb szerverek bejelentkezési korlátozásai számára hozzunk létre egy NAGYSRV nevű csoportot, valamint egy másik hálózati csoportot KISSRV néven a kevésbé fontosabb szerverekhez, végül MUNKA néven egy harmadik hálózati csoportot a munkaállomásokhoz. Mindegyik ilyen hálózati csoport tartalmazza azokat a csoportokat, amelyek engedélyezik a gépek elérését. A hálózati csoportok leírását tartalmazó NIS táblázat most valahogy így fog kinézni:
NAGYSRV IT_DOLG IT_UJDOLG KISSRV IT_DOLG IT_UJDOLG IT_OSZTONDIJAS MUNKA IT_DOLG IT_OSZTONDIJAS FELHASZNALOK
A bejelentkezési megszorítások ilyen típusú megadása viszonylag jól működik, hogy ha azonos korlátozások alá eső gépek csoportjait akarjuk felírni. Bánatunk ez a kivétel, és nem a szabály. Az esetek nagy többségében ugyanis a bejelentkezésre vonatkozó korlátozásokat gépenként kell egyesével megadni.
A hálózati csoportok gépfüggő megadása tehát az iménti házirendhez társuló igények kielégítésének egyik módja. Ebben a forgatókönyvben az /etc/master.passwd állomány minden számítógépen két “+”-os sorral kezdődik. Közülük az első a gépen engedélyezett hozzáféréseket tartalmazó hálózati csoportra vonatkozik, a második pedig az összes többi hozzáféréshez az /sbin/nologin parancsértelmezőt kapcsolja hozzá. Itt jó ötlet, ha a gép nevének “VÉGIG-NAGYBETűS” változatát adjuk meg a hozzá tartozó hálózati csoport nevének:
+@GÉPNÉV::::::::: +:::::::::/sbin/nologin
Miután elvégeztük ezt a feladatot minden egyes gépen, az /etc/master.passwd állomány helyi változatait soha többé nem kell módosítanunk. Az összes többi változtatást a NIS táblázaton keresztül tudjuk keresztül vinni. Íme a felvázolt forgatókönyvhöz tartozó hálózati csoportok kiépítésének egyik lehetséges változata, egy-két finomsággal kiegészítve:
# Először a felhasználók csoportjait adjuk meg: IT_DOLG (,alpha,proba-tartomany) (,beta,proba-tartomany) IT_UJDOLG (,charlie,proba-tartomany) (,delta,proba-tartomany) TANSZ1 (,echo,proba-tartomany) (,foxtrott,proba-tartomany) TANSZ2 (,golf,proba-taromany) (,hotel,proba-tartomany) TANSZ3 (,india,proba-taromany) (,juliet,proba-tartomany) IT_OSZTONDIJAS (,kilo,proba-tartomany) (,lima,proba-tartomany) D_OSZTONDIJAS (,able,proba-tartomany) (,baker,proba-tartomany) # # Most pedig hozzunk létre csoportokat szerepek szerint: FELHASZNALOK TANSZ1 TANSZ2 TANSZ3 NAGYSRV IT_DOLG IT_UJDOLG KISSRV IT_DOLG IT_UJDOLG IT_OSZTONDIJAS MUNKA IT_DOLG IT_OSZTONDIJAS FELHASZNALOK # # Következzenek a speciális feladatokhoz tartozó csoportok: # Az echo és a golf tudja elérni a vírusvédelemért felelős gépet: VEDELEM IT_DOLG (,echo,proba-tartomany) (,golf,proba-tartomany) # # Gép alapú hálózati csoportok # A fő szervereink: HABORU NAGYSRV EHSEG NAGYSRV # Az india nevű felhasználó hozzá szeretné ehhez férni: SZENNYEZES NAGYSRV (,india,proba-tartomany) # # Ez valóban fontos és komolyan szabályoznunk kell: HALAL IT_DOLG # # Az előbb említett vírusvédelmi gép: EGY VEDELEM # # Egyetlen felhasználóra korlátozzuk le ezt a gépet: KETTO (,hotel,proba-tartomany) # [...és itt folytatódik a többi csoporttal]
Ha a felhasználói hozzáféréseinket valamilyen adatbázisban tároljuk, akkor a táblázat első részét akár az adatbázis lekérdezésein keresztül is elő tudjuk állítani. Ezzel a módszerrel az új felhasználók automatikusan hozzáférnek a gépekhez.
Legyünk viszont óvatosak: nem mindig javasolt gépeken alapuló hálózati csoportokat készíteni. Ha a hallgatói laborokba egyszerre több tucat vagy akár több száz azonos konfigurációjú gépet telepítünk, akkor a gép alapú csoportok helyett inkább szerep alapú csoportokat építsünk fel, mivel így a NIS táblázatok méretét egy elfogadható méreten tudjuk tartani.
Még mindig akad néhány olyan dolog, amit másképpen kell csinálnunk azután, hogy most már NIS környezetben vagyunk.
Amikor egy új felhasználót akarunk felvenni a laborba, akkor csak a központi NIS szerverre kell felvennünk, és újra kell generáltatnunk a NIS táblázatokat. Ha ezt elfelejtjük megtenni, akkor az új felhasználó a központi NIS szerveren kívül sehova sem lesz képes bejelentkezni. Például, ha fel akarjuk venni a jsmith nevű felhasználót a laborba, akkor ezt kell tennünk:
# pw useradd jsmith # cd /var/yp # make proba-tartomany
Vagy a pw useradd jsmith parancs helyett az adduser jsmith parancsot is használhatjuk.
A rendszergazdai szintű hozzáféréseket ne tároljuk a NIS táblázatokban. Olyan gépekre egyáltalán ne is küldjünk olyan karbantartáshoz használt hozzáféréseket, amelynek a felhasználói hivatalosan nem is férhetnének hozzájuk.
A központi NIS szervert és az alárendelt szervereket óvjuk minél jobban, és igyekezzünk minimalizálni a kieséseiket. Ha valaki feltöri vagy egyszerűen csak kikapcsolja ezeket a gépeket, akkor ezzel lényegében mindenkit megakadályoz abban, hogy be tudjon jelentkezni a laborban.
Ezek a központosított vezérlésű rendszerek legfőbb gyengeségei. Ha nem védjük kellően a NIS szervereinket, akkor azzal nagyon ellenséget szerezhetünk magunknak!
A FreeBSD-ben megtalálható ypserv szolgáltatás valamennyire képes ellátni a NIS első változatát használó klienseket is. A FreeBSD NIS implementációja csak a NIS v2 protokollt használja, azonban mivel más implementációk kompatibilisek kívánnak maradni a régebbi rendszerekkel, ismerik a v1 protokollt is. Az ilyen rendszerekhez tartozó ypbind démonok még olyankor is megpróbálnak v1-es NIS szerverekhez kötést létrehozni, amikor valójában nincs is rá szükségük (és gyakran még akkor is ilyet keresnek, amikor az üzenetükre már válaszolt egy v2-es szerver). Hozzátennénk, hogy bár az ypserver ezen változata a normál klienshívásokat képes feldolgozni, a táblázatokat már nem tudja átküldeni a v1-es klienseknek. Ebből következik, hogy a központi vagy alárendelt szerverek nem tudnak együttműködni olyan NIS szerverekkel, amelyek csak a v1-es protokollt beszélik. Szerencsére ilyen szervereket manapság már alig használnak.
Óvatosan kell bánnunk az ypserv elindításával olyan többszerveres tartományokban, ahol a szerverek maguk is NIS kliensek. Alapvetően nincs abban semmi kivetnivaló, ha a szervereket saját magukhoz kötjük ahelyett, hogy engednénk nekik a kötési kérések küldését és így egymáshoz kötnénk ezeket. Különös hibák tudnak származni olyan helyzetekben, amikor az egyik szerver leáll, miközben a többiek pedig függenek tőle. Végül is ilyenkor minden kliens szépen kivárja a szükséges időt, aztán megpróbál más szerverekhez kötődni, de az itt fellépő késlekedés jelentős mennyiségű lehet, és ez a hibajelenség ismét fennállhat, mivel előfordulhat, hogy a szerverek megint egymáshoz kapcsolódnak.
A klienst úgy tudjuk egy adott szerverhez kötni,
ha az ypbind parancsot a -S
beállítással indítjuk. Ha mindezt
nem akarjuk manuálisan megtenni a NIS szerver minden
egyes újraindításakor, akkor vegyük
fel a következő sorokat az
/etc/rc.conf
állományba:
nis_client_enable="YES" # elindítjuk a klienst is nis_client_flags="-S NIS tartomány,szerver"
Részletesebb lásd az ypbind(8) man oldalát.
A NIS rendszerek kiépítése során az emberek leggyakrabban a jelszavak formátumával kapcsolatban tapasztalnak nehézségeket. Ha a szerverünk DES titkosítású jelszavakat használ, akkor csak olyan klienseket fog tudni támogatni, amelyek szintén így kódolják ezeket. Például, ha a hálózaton vannak Solaris rendszerű NIS klienseink, akkor szinte biztos, hogy DES titkosítást kell használnunk.
A szerverek és a kliensek által használt formátumokat az /etc/login.conf állományba tekintve deríthetjük ki. Ha a gépek többségén a DES titkosítást látjuk, akkor a default osztálynak egy ilyen bejegyzést kell tartalmaznia:
default:\ :passwd_format=des:\ :copyright=/etc/COPYRIGHT:\ [a többit most nem mutatjuk]
A passwd_format tulajdonság további lehetséges értékei lehetnek a blf és az md5 (melyek rendre a Blowfish és MD5 titkosítású jelszavakat adják meg).
Ha változtattunk valamit az /etc/login.conf állományban, akkor a bejelentkezési tulajdonságok adatbázisát is újra kell generálni, melyet root felhasználóként a következő módon tehetünk meg:
# cap_mkdb /etc/login.conf
Megjegyzés: Az /etc/master.passwd állományban jelenlevő jelszavak formátuma azonban nem frissítődik egészen addig, amíg a felhasználók a bejelentkezési adatbázis újragenerálása után meg nem változtatják a jelszavaikat.
Úgy tudjuk még biztosítani, hogy a jelszavak megfelelő formátumban kódolódjanak, ha az /etc/auth.conf állományban megkeressük a crypt_default sort, amelyben a választható jelszóformátumok felhasználásái sorrendjét találhatjuk meg. Itt tehát mindössze annyit kell tennünk, hogy a kiszemelt formátumot a lista elejére tesszük. Például, ha a DES titkosítású jelszavakat akarunk használni, akkor ez a bejegyzés így fog kinézni:
crypt_default = des blf md5
Ha a fenti lépéseket követjük az összes FreeBSD alapú NIS szervernél és kliensnél, akkor biztosra mehetünk abban, hogy a hálózatunkon belül ugyanazt a jelszóformátumot fogják használni. Ha gondunk akadna a NIS kliensek hitelesítésével, akkor itt érdemes kezdeni a hiba felderítését. Ne felejtsük: ha egy NIS szervert egy heterogén hálózatba akarunk telepíteni, akkor valószínűleg az összes rendszeren a DES titkosítást kell választani, mivel általában ez a közös nevező ebben a tekintetben.
A Dinamikus állomáskonfigurációs protokoll, avagy Dynamic Host Configuration Protocol (DHCP) annak eszközeit írja le, hogy egy rendszer miként tud csatlakozni egy hálózathoz és miként tudja azon belül megszerezni a kommunikációhoz szükséges információkat. A FreeBSD 6.0 előtti változatai az ISC (Internet Systems Consortium, vagyis az internetes rendszerkonzorcium) által kidolgozott DHCP kliens (dhclient(8)) implementációját tartalmazzák. A későbbi verziókban pedig az OpenBSD 3.7 verziójából átvett dhclient paranccsal dolgozhatunk. Ebben a szakaszban a dhclient parancsra vonatkozó összes információ egyaránt érvényes az ISC és az OpenBSD által fejlesztett DHCP kliensekre. A DHCP szerver az ISC-től származik.
Ebben a szakaszban az ISC és az OpenBSD DHCP klienseinek kliens- és szerver oldali komponsenseit mutatjuk be. A kliens oldali program neve a dhclient, amely a FreeBSD részeként érkezik, és a szerver oldali elem pedig a net/isc-dhcp31-server porton keresztül érhető el. A lentebb említett hivatkozások mellett a témában még a dhclient(8), dhcp-options(5) és a dhclient.conf(5) man adhatnak bővebb felvilágosítást a témában.
Amikor a dhclient, vagyis a DHCP kliens elindul egy kliensgépen, akkor a hálózaton üzenetszórással próbálja meg elkérni a konfigurációjához szükséges adatokat. Alapértelmezés szerint ezek a kérések a 68-as UDP porton keresztül mennek. A szerver ezekre a 67-es UDP porton válaszol, ahol visszaad a kliensnek egy IP-címet és a hálózat használatához szükséges további információkat, mint például a hálózati maszkot, az alapértelmezett átjáró és a névfeloldásért felelős szerverek címét. Az összes ilyen jellegű adat egy DHCP “bérlet” (lease) formájában érkezik meg, amely csak egy adott ideig érvényes (ezt a DHCP szerver karbantartója állítja be). Így a hálózaton a kliens nélküli IP-címeket egy idő után automatikusan visszanyerjük.
A DHCP kliensek rengeteg információt képes elkérni a szervertől. Ezek teljes listáját a dhcp-options(5) man oldalán olvashatjuk el.
A FreeBSD teljes egészében tartalmazza az ISC vagy az OpenBSD DHCP kliensét, a dhclient programot (attól függően, hogy a FreeBSD melyik változatát használjuk). A DHCP kliensek támogatása a telepítőben és az alaprendszerben is megtalálható, és ezzel mentesülünk minden konkrét hálózati beállítás alól a DHCP szervereket alkalmazó hálózatokon. A dhclient a FreeBSD 3.2 változata óta megtalálható a rendszerben.
DHCP használatát a sysinstall is lehetővé teszi. Amikor egy hálózati felületet a sysinstall programon belül állítunk be, akkor a második kérdés mindig ez szokott lenni: “Do you want to try DHCP configuration of the interface?” (“Megpróbáljuk DHCP használatával beállítani a felületet?”) Ha erre igennel válaszolunk, akkor azzal lényegében a dhclient parancsot indítjuk el, és ha mindez sikerrel zárul, akkor szinte magától kitöltődik az összes hálózati beállításunk.
A DHCP használatához két dolgot kell beállítanunk a rendszerünkön:
Gondoskodjunk róla, hogy a bpf eszköz része a rendszermagunknak. Ha még nem lenne benne, akkor a rendszermag beállításait tartalmazó állományba vegyük fel a device bpf sort és fordítsuk újra a rendszermagot. A rendszermagok fordításáról a 8 fejezetben tudhatunk meg többet.
A bpf eszköz alapból megtalálható a GENERIC rendszermagokban, így ha ezt használjuk, akkor nem kell saját verziót készítenünk a DHCP használatához.
Megjegyzés: Azok számára viszont, akik biztonsági szempontból aggódnak a rendszerük miatt, meg kell említenünk, hogy a bpf egyben az az eszköz, amely a csomagok lehallgatását is lehetővé teszi (habár az ilyeneket root felhasználóként lehet csak elindítani). A bpf kell a DHCP használatához, azonban ha nagyon fontos nekünk a rendszerünk biztonsága, akkor a bpf eszközt érdemes kivennünk a rendszermagból, ha még pillanatnyilag nem használunk ilyet.
Az /etc/rc.conf állományunkat az alábbiak szerint kell módosítani:
ifconfig_fxp0="DHCP"
Megjegyzés: Az fxp0 eszközt ne felejtsük el kicserélni arra a felületre, amelyet automatikusan akarunk beállítani. Ennek mikéntje a 11.8 Szakaszban olvasható.
Ha a dhclient a rendszerünkben máshol található, vagy egyszerűen csak további beállításokat akarunk átadni a dhclient parancsnak, akkor adjuk meg a következőt is (változtassuk meg igényeink szerint):
dhclient_program="/sbin/dhclient" dhclient_flags=""
A DHCP szerver, a dhcpd a net/isc-dhcp31-server port részeként érhető el. Az a port tartalmazza az ISC DHCP szerverét és a hozzá tartozó dokumentációt.
/etc/dhclient.conf
A dhclient működéséhez szükség lesz egy konfigurációs állományra, aminek a neve /etc/dhclient.conf. Ez az állomány általában csak megjegyzéseket tartalmaz, mivel az alapértelmezett értékek többnyire megfelelőek. Ezt a konfigurációs állományt a dhclient.conf(5) man oldal írja le.
/sbin/dhclient
A dhclient statikusan linkelt és az /sbin könyvtárban található. A dhclient(8) man oldal tud róla részletesebb felvilágosítást adni.
/sbin/dhclient-script
A dhclient-script a FreeBSD-ben levő DHCP kliens konfigurációs szkriptje. Működését a dhclient-script(8) man oldal írja le, de a felhasználók részéről semmilyen módosítást nem igényel.
/var/db/dhclient.leases
A DHCP kliens az érvényes bérleteket tartja nyilván ezekben az állományban és naplóként használja. A dhclient.leases(5) man oldal ezt valamivel bővebben kifejti.
A DHCP protokoll működését az RFC 2131 mutatja be. A témához kapcsolódóan itt tudunk még leírásokat találni.
Ebben a szakaszban arról olvashatunk, hogy miként kell egy FreeBSD típusú rendszert DHCP szervernek beállítani, ha az ISC (internetes rendszerkonzorcium) DHCP szerverét használjuk.
Ez a szerver nem része a FreeBSD-nek, ezért a szolgáltatás elindításához először fel kell raknunk a net/isc-dhcp31-server portot. A Portgyűjtemény használatára vonatkozóan a 4 fejezet lehet segítségünkre.
Ha a FreeBSD rendszerünket DHCP szerverként akarjuk beállítani, akkor ehhez elsőként a bpf(4) eszköz jelenlétét kell biztosítani a rendszermagban. Ehhez vegyük fel a device bpf sort a rendszermagunk beállításait tartalmazó állományba, majd fordítsuk újra a rendszermagot. A rendszermag lefordításáról a 8 fejezetben olvashatunk.
A bpf eszköz a FreeBSD-hez alapból adott GENERIC rendszermag része, ezért a DHCP használatához nem kell feltétlenül újat fordítanunk.
Megjegyzés: A biztonsági szempontok miatt aggódó felhasználók részére megjegyezzük, hogy a bpf eszköz egyben a csomagok lehallgatását is lehetővé teszi (habár az ilyen témájú programok futtatásához megfelelő jogokra is szükség van). A bpf használata kötelező a DHCP működtetéséhez, de ha nagyon kényesek vagyunk a biztonságot illetően, akkor minden olyan esetben, amikor nem használjuk ki ezt a lehetőséget, távolítsuk el a rendszermagból.
A következő lépésben át kell szerkesztenünk a mintaként mellékelt dhcpd.conf állományt, amelyet a net/isc-dhcp31-server port rakott fel. Ez alapértelmezés szerint a /usr/local/etc/dhcpd.conf.sample néven található meg, és mielőtt bármit is változtatnánk rajta, másoljuk le /usr/local/etc/dhcpd.conf néven.
A dhcpd.conf az alhálózatokat illetve a gépeket érintő deklarációkat tartalmazza, és talán a legkönnyebben a következő példa alapján mutatható be:
option domain-name "minta.com"; option domain-name-servers 192.168.4.100; option subnet-mask 255.255.255.0; default-lease-time 3600; max-lease-time 86400; ddns-update-style none; subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.129 192.168.4.254; option routers 192.168.4.1; } host mailhost { hardware ethernet 02:03:04:05:06:07; fixed-address levelezes.minta.com; }
Miután befejeztük a dhcpd.conf módosítását, a DHCP szerver az /etc/rc.conf állományban tudjuk engedélyezni, vagyis tegyük bele a következőt:
dhcpd_enable="YES" dhcpd_ifaces="dc0"
A dc0 felület nevét helyettesítsük annak a felületnek (vagy whitespace karakterekkel elválasztott felületeknek) a nevével, amelyen keresztül a DHCP szerver várni fogja a kliensek kéréseit.
Ezután a következő parancs kiadásával indítsuk el a szervert:
# /usr/local/etc/rc.d/isc-dhcpd start
Amikor a jövőben valamit változtatunk a konfigurációs állományon, akkor ezzel kapcsolatban fontos megemlíteni, hogy ha csak egy SIGHUP jelzést küldünk a dhcpd démonnak, akkor az a többi démontól eltérően önmagában még nem eredményezi a konfigurációs adatok újraolvasását. Helyette a SIGTERM jelzéssel kell leállítani a programot, majd újraindítani a fenti paranccsal.
/usr/local/sbin/dhcpd
A dhcpd statikusan linkelt és a /usr/local/sbin könyvtárban található. A porttal együtt felkerülő dhcpd(8) man oldal ad részletesebb útmutatást dhcpd használatáról.
/usr/local/etc/dhcpd.conf
Mielőtt a dhcpd megkezdhetné működését, egy konfigurációs állományra is szükségünk lesz, amely a /usr/local/etc/dhcpd.conf. Ez az állomány tartalmazza az összes olyan információt, ami kell a kliensek megfelelő kiszolgálásához valamint a szerver működéséhez. Ez a konfigurációs állomány porthoz tartozó dhcpd.conf(5) man oldalon kerül ismertetésre.
/var/db/dhcpd.leases
A DHCP szerver ebben az állományba tartja nyilván a kiadott bérleteket, egy napló formájában. A porthoz kapcsolódó dhcpd.leases(5) man oldalon erről többet is megtudhatunk.
/usr/local/sbin/dhcrelay
A dhcrelay állománynak olyan komolyabb környezetekben van szerepe, ahol a DHCP szerver a kliensektől érkező kéréseket egy másik hálózaton található DHCP szerverhez továbbítja. Ha szükség lenne erre a lehetőségre, akkor telepítsük fel a net/isc-dhcp31-relay portot. A porthoz tartozó dhcrelay(8) man oldal ennek részleteit taglalja.
A FreeBSD alapértelmezés szerint a BIND (Berkeley Internet Name Domain) egyik verzióját tartalmazza, amely a névfeloldási (Domain Name System, DNS) protokoll egyik elterjedt implementációja. A DNS protokollon keresztül tudunk az IP-címekhez neveket rendelni és fordítva. Például a www.FreeBSD.org névre a FreeBSD Projekt webszerverének IP-címét kapjuk meg, miközben a ftp.FreeBSD.org pedig a hozzá tartozó FTP szerver IP-címét fogja visszaadni. Ehhez hasonlóan a fordítottja is megtörténhet, vagyis egy IP-címhez is kérhetjük a hálózati név feloldását. A névfeloldási kérések kiszolgálásához nem feltétlenül szükséges névszervert futtatni a rendszerünkön.
A FreeBSD jelen pillanatban alapból a BIND9 névszervert tartalmazza. A benne szereplő változata több biztonsági javítást, új állományrendszeri kiosztást és automatizált chroot(8) beállítást is magában foglal.
Az interneten keresztüli névfeloldást legfelső szintű tartományoknak (Top Level Domain, TLD) nevezett hitelesített tövek némileg bonyolult rendszerén alapszik, valamint más egyéb olyan névszervereken, amelyek további egyéni információkat tárolnak és táraznak.
A BIND fejlesztését jelenleg az Internet Systems Consortium (http://www.isc.org/) felügyeli.
A leírás megértéséhez be kell mutatnunk néhány névfeloldással kapcsolatos fogalmat.
Fogalom | Meghatározás |
---|---|
Közvetlen névfeloldás (forward DNS) | A hálózati nevek leképezése IP-címekre. |
ős (origin) | Egy adott zóna állományban szereplő tartományra vonatkozik. |
named, BIND | A FreeBSD-n belüli BIND névszerver különböző megnevezései. |
Névfeloldó (resolver) | Az a program a rendszerben, amelyhez a hálózaton levő gépek a zónák adatainak elérésével kapcsolatban fordulnak. |
Inverz névfeloldás (reverse DNS) | Az IP-címek leképzése hálózati nevekre. |
Gyökérzóna (root zone) | Az interneten található zónák hierarchiájának töve. Minden zóna ebbe a gyökérzónába esik, ahhoz hasonlóan, ahogy egy állományrendszerben az állományok a gyökérkönyvtárba. |
Zóna (zone) | Egy különálló tartomány, altartomány vagy a névfeloldás azon része, amelyet egyazon fennhatóság alatt tartanak karban. |
Példák zónákra:
A gyökérzónára a leírásokban általában . néven szoktak hivatkozni.
A org. egy legfelső szintű tartomány (TLD) a gyökérzónán belül.
A minta.org. a org. TLD tartomány alatti zóna.
A 1.168.192.in-addr.arpa egy olyan zóna, amelyek a 192.168.1.* IP-címtartományban szereplő összes címet jelöli.
Mint láthatjuk, a hálózati nevek balról kiegészülve pontosodnak. Tehát például a minta.org. sokkal pontosabb meghatározás, mint a org., ahogy az org. magánál a gyökérzónánál jelent többet. A hálózati nevek felosztása leginkább egy állományrendszerhez hasonlítható, például a /dev könyvtár a gyökéren belül található, és így tovább.
A névszerverek általában két alakban jelennek meg. Egyikük a hitelesített névszerver, a másikuk a gyorsítótárazó névszerver.
Egy hitelesített névszerverre akkor van szükségünk, ha:
a világ többi része felé akarunk hiteles névfeloldási információkat szolgáltatni;
regisztráltunk egy tartományt (például minta.org) és az alatta levő hálózati nevekhez is szeretnénk IP-címeket rendeltetni;
a IP-címtartományunkban szükség van inverz névfeloldási bejegyzésekre (amely IP-címből ad meg hálózati nevet) is;
a kérések teljesítéséhez egy tartalék avagy második, alárendelt (slave) névszerver kell.
A gyorsítótárazó névszerverre akkor van szükségünk, ha:
egy helyi névfeloldó szerver felhasználásával fel akarjuk gyorsítani az egyébként a külső névszerver felé irányuló kérések kiszolgálását.
Amikor valaki lekérdezi a www.FreeBSD.org címét, akkor a névfeloldó először általában a kapcsolatot rendelkezésre bocsátó internet-szolgáltató névszerverét kérdezi meg és onnan kapja meg a választ. Egy helyi, gyorsítótárazó névszerver használata esetén azonban egy ilyen kérést csak egyszer kell kiadni a külső névszervernek. Ezután már minden további ilyen kérés el sem hagyja a belső hálózatunkat, mivel a válasz szerepel a gyorsítótárban.
FreeBSD alatt a BIND démon nyilvánvaló okokból named néven érhető el.
Állomány | Leírás |
---|---|
named(8) | A BIND démon. |
rndc(8) | A névszervert vezérlő segédprogram. |
/etc/namedb | A BIND által kezelt zónák adatait tároló könyvtár. |
/etc/namedb/named.conf | A démon konfigurációs állománya. |
Attól függően, hogy miként állítjuk be az adott zónát a szerveren, a hozzá tartozó állományok a /etc/namedb könyvtáron belül a master, slave vagy dynamic alkönyvtárban foglalnak helyet. Az itt tárolt állományokban levő névfeloldási információk alapján válaszol a névszerver a felé intézett kérésekre.
Mivel a BIND alapból elérhető a rendszerben, viszonylag könnyen be tudjuk állítani.
A named alapértelmezett beállítása szerint egy chroot(8) környezetben futó egyszerű névfeloldást végző szerver, amely a helyi IPv4 interfészen (127.0.0.1) fogadja a kéréseket. Ezzel a beállítással a következő parancson keresztül tudjuk elindítani:
# /etc/rc.d/named onestart
Ha engedélyezni akarjuk a named démont minden egyes rendszerindításkor, tegyük a következő sort az /etc/rc.conf állományba:
named_enable="YES"
Értelemszerűen az /etc/namedb/named.conf tele van olyan beállítási lehetőségekkel, amelyek meghaladják ennek a leírásnak a kereteit. Ha viszont kíváncsiak vagyunk a FreeBSD-ben a named indításához használt beállításokra, akkor az /etc/defaults/rc.conf állományban nézzük meg named_* változókat és olvassuk át az rc.conf(5) man oldalt. Emellett még a 11.7 Szakaszt is hasznos lehet elolvasni.
A named beállításait tartalmazó állományok pillanatnyilag az /etc/namedb könyvtárban találhatóak és hacsak nem egy egyszerű névfeloldóra tartunk igényt, akkor a használata előtt módosítanunk is kell. Itt ejtjük meg a beállítások nagy részét.
// $FreeBSD$ // // Részletesebb leírást a named.conf(5) és named(8) man oldalakon, valamint // a /usr/share/doc/bind9 könyvtárban találhatunk. // // Ha egy hitelesített szervert akarunk beállítani, akkor igyekezzünk // a névfeloldás összes finom részletével pontosan tisztában lenni. // Ugyanis még a legkisebb hibákkal is egyrészt elvághatunk gépeket az // internet-lérésétől, vagy másrészt felesleges forgalmat tudunk // generálni // options { // A chroot könyvtárhoz relatív elérési út, amennyiben létezik directory "/etc/namedb"; pid-file "/var/run/named/pid"; dump-file "/var/dump/named_dump.db"; statistics-file "/var/stats/named.stats"; // Ha a named démont csak helyi névfeloldóként használjuk, akkor ez // egy biztonságos alapbeállítás. Ha viszont a named démon az egész // hálózatunkat is kiszolgálja, akkor ezt a beállítást tegyük // megjegyzésbe, vagy adjunk meg egy rendes IP-címet, esetleg // töröljük ki. listen-on { 127.0.0.1; }; // Ha rendszerünkön engedélyezett az IPv6 használata, akkor a helyi // névfeloldó használatához ezt a sort vegyük ki a megjegyzésből. // A hálózatunk többi részéről pedig úgy lehet elérni, ha itt megadunk // egy IPv6 címet, vagy az "any" kulcsszót. // listen-on-v6 { ::1; }; // Az alábbi zónákat már a lentebb található üres zónák eleve lefedik. // Ha tehát a lenti üres zónákat kivesszük a konfigurációból, akkor // ezeket a sorokat is tegyük megjegyzésbe. disable-empty-zone "255.255.255.255.IN-ADDR.ARPA"; disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; // Ha a szolgáltatónk névszervert is elérhetővé tett számunkra, akkor // itt adjuk meg annak az IP-címét és engedélyezzük az alábbi sort. // Ezzel egyben kihasználjuk a gyorsítótárat is, így mérsékeljük az // internet felé mozgó névfeloldásokat. /* forwarders { 127.0.0.1; }; * // Ha a 'forwarders' rész nem üres, akkor alapértelmezés szerint a // 'forward first' értékkel rendelkezik. Ekkor a kérést a helyi szerver // kapja abban az esetben, amikor a 'forwarders' részben megadott // szerverek nem tudják megválaszolni. Emellett a névszerverben a // következő sor hozzáadásával letilthatjuk, hogy önmagától ne // kezdeményezzen kéréseket: // forward only; // Ha a kérések továbbítását az /etc/resolv.conf állományban megadott // bejegyzések mentén szeretnénk automatikusan konfigurálni, akkor vegyük // ki a megjegyzésből az alábbi sort és adjuk hozzá az /etc/rc.conf // állományhoz a name_auto_forward=yes sort. Emellett használható még a // named_auto_forward_only beállítás is (amely fentebb leírt funkciót // valósítja meg). // include "/etc/namedb/auto_forward.conf";
Ahogy arról a megjegyzésekben is szó esik, úgy tudjuk aktiválni a gyorsítótárat, ha megadjuk a forwarders beállítást. Normális körülmények között a névszerver az interneten az egyes névszervereket rekurzívan fogja keresni egészen addig, amíg meg nem találja a keresett választ. Az iménti beállítás engedélyezésével azonban először a szolgáltató névszerverét (vagy az általa kijelölt névszervert) fogjuk megkérdezni, a saját gyorsítótárából. Ha a szolgáltató kérdéses névszervere egy gyakran használt, gyors névszerver, akkor ezt érdemes bekapcsolnunk.
Figyelem: Itt a 127.0.0.1 megadása nem működik. Mindenképpen írjuk át a szolgáltatónk névszerverének IP-címére.
/* A BIND legújabb változataiban alapértelmezés szerint minden egyes kimenő kérésnél más, véletlenszerűen választott UDP portot használnak, ezáltal jelentős mértékben csökkenthető a gyorsítótár meghamisíthatóságának (cache poisoning) esélye. Javasoljuk mindenkinek, hogy használják ki ezt a lehetőséget és eszerint állítsák be a tűzfalakat. Ha nem sikerül a tűzfalat hozzáigazítani ehhez a viselkedéshez AKKOR ÉS CSAK IS AKKOR engedélyezzük a lenti beállítást. Alkalmazásával sokkal kevésbé lesz ellenálló a névszerver a különböző hamisítási kísérletekkel szemben, ezért lehetőség szerint kerüljük el. Az NNNNN helyére egy 49160 és 65530 közti számot kell beírnunk. */ // query-source address * port NNNNN; }; // Ha engedélyezzük a helyi névszervert, akkor az /etc/resolv.conf // állományban első helyen megadni a 127.0.0.1 címet. Sőt, az // /etc/rc.conf állományból se felejtsük ki. // A hagyományos "root-hints" megoldás. Használjuk ezt VAGY a lentebb // megadott alárendelt zónákat. zone "." { type hint; file "named.root"; }; /* Több szempontból is előnyös, ha a következő zónákat alárendeljük a gyökér névfeloldó szervereknek: 1. A helyi felhasználók kéréseit gyorsabban tudjuk feloldalni. 2. A gyökérszerverek felé nem megy semmilyen hamis forgalom. 3. A gyökérszerverek meghibásodása vagy elosztott DoS támadás esetén rugalmasabban tudunk reagálni. Másfelöl azonban ez a módszer a "hints" állomány alkalmazásával szemben több felügyeletet igényel, mivel figyelnünk kell, nehogy egy váratlan meghibásodás működésképtelenné tegye a szerverünket. Ez a megoldás leginkább a sok klienst kiszolgáló névszerverek esetén bizonyulhat jövedelmezőbbnek. Óvatosan bánjunk vele! A módszer alkalmazásához vegyük ki a megjegyzésből a következő bejegyzéseket és tegyük megjegyzésbe a fenti hint zónát. */ zone "." { type slave; file "slave/root.slave"; masters { 192.5.5.241; // F.ROOT-SERVERS.NET. }; notify no; }; zone "arpa" { type slave; file "slave/arpa.slave"; masters { 192.5.5.241; // F.ROOT-SERVERS.NET. }; notify no; } zone "in-addr.arpa" { type slave; file "slave/in-addr.arpa.slave"; masters { 192.5.5.241; // F.ROOT-SERVERS.NET. }; notify no; }; */ /* Az alábbi zónák helyi kiszolgálásával meg tudjuk akadályozni, hogy a belőlük indított kérések elhagyják a hálózatunkat és a elérjük a gyökér névfeloldó szervereket. Ez a megközelítés két komoly előnnyel rendelkezik: 1. A helyi felhasználók kéréseit gyorsabban tudjuk megválaszolni. 2. A gyökérszerverek felé nem továbbítódik semmilyen hamis forgalom. */ // RFC 1912 zone "localhost" { type master; file "master/localhost-forward.db"; }; zone "127.in-addr.arpa" { type master; file "master/localhost-reverse.db"; }; zone "255.in-addr.arpa" { type master; file "master/empty.db"; }; // A helyi IPv6 címek részére létrehozott RFC 1912-szerű zóna zone "0.ip6.arpa" { type master; file "master/localhost-reverse.db"; }; // "Ez" a hálózat (RFC 1912 és 3330) zone "0.in-addr.arpa" { type master; file "master/empty.db"; }; // Magáncélú hálózatok (RFC 1918) zone "10.in-addr.arpa" { type master; file "master/empty.db"; }; zone "16.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "17.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "18.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "19.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "20.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "21.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "22.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "23.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "24.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "25.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "26.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "27.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "28.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "29.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "30.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "31.172.in-addr.arpa" { type master; file "master/empty.db"; }; zone "168.192.in-addr.arpa" { type master; file "master/empty.db"; }; // Helyi link/APIPA (RFC 3330 és 3927) zone "254.169.in-addr.arpa" { type master; file "master/empty.db"; }; // Dokumentációs próbahálózat (RFC 3330) zone "2.0.192.in-addr.arpa" { type master; file "master/empty.db"; }; // Útválasztási teljesítmény tesztelésére (RFC 3330) zone "18.198.in-addr.arpa" { type master; file "master/empty.db"; }; zone "19.198.in-addr.arpa" { type master; file "master/empty.db"; }; // Az IANA részére fentartott - a régi E osztályú címtér zone "240.in-addr.arpa" { type master; file "master/empty.db"; }; zone "241.in-addr.arpa" { type master; file "master/empty.db"; }; zone "242.in-addr.arpa" { type master; file "master/empty.db"; }; zone "243.in-addr.arpa" { type master; file "master/empty.db"; }; zone "244.in-addr.arpa" { type master; file "master/empty.db"; }; zone "245.in-addr.arpa" { type master; file "master/empty.db"; }; zone "246.in-addr.arpa" { type master; file "master/empty.db"; }; zone "247.in-addr.arpa" { type master; file "master/empty.db"; }; zone "248.in-addr.arpa" { type master; file "master/empty.db"; }; zone "249.in-addr.arpa" { type master; file "master/empty.db"; }; zone "250.in-addr.arpa" { type master; file "master/empty.db"; }; zone "251.in-addr.arpa" { type master; file "master/empty.db"; }; zone "252.in-addr.arpa" { type master; file "master/empty.db"; }; zone "253.in-addr.arpa" { type master; file "master/empty.db"; }; zone "254.in-addr.arpa" { type master; file "master/empty.db"; }; // Hozzárendelés nélküli IPv6-címek (RFC 4291) zone "1.ip6.arpa" { type master; file "master/empty.db"; }; zone "3.ip6.arpa" { type master; file "master/empty.db"; }; zone "4.ip6.arpa" { type master; file "master/empty.db"; }; zone "5.ip6.arpa" { type master; file "master/empty.db"; }; zone "6.ip6.arpa" { type master; file "master/empty.db"; }; zone "7.ip6.arpa" { type master; file "master/empty.db"; }; zone "8.ip6.arpa" { type master; file "master/empty.db"; }; zone "9.ip6.arpa" { type master; file "master/empty.db"; }; zone "a.ip6.arpa" { type master; file "master/empty.db"; }; zone "b.ip6.arpa" { type master; file "master/empty.db"; }; zone "c.ip6.arpa" { type master; file "master/empty.db"; }; zone "d.ip6.arpa" { type master; file "master/empty.db"; }; zone "e.ip6.arpa" { type master; file "master/empty.db"; }; zone "0.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "1.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "2.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "3.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "4.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "5.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "6.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "7.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "8.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "9.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "a.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "b.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "0.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "1.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "2.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "3.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "4.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "5.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "6.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "7.e.f.ip6.arpa" { type master; file "master/empty.db"; }; // IPv6 ULA (RFC 4193) zone "c.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "d.f.ip6.arpa" { type master; file "master/empty.db"; }; // IPv6 helyi link (RFC 4291) zone "8.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "9.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "a.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "b.e.f.ip6.arpa" { type master; file "master/empty.db"; }; // Elavult IPv6 helyi címek (RFC 3879) zone "c.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "d.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "e.e.f.ip6.arpa" { type master; file "master/empty.db"; }; zone "f.e.f.ip6.arpa" { type master; file "master/empty.db"; }; // Az IP6.INT már elavult (RFC 4159) zone "ip6.int" { type master; file "master/empty.db"; }; // FONTOS: Ne használjuk ezeket az IP-címeket, mert nem valódiak, // csupán illusztrációs és dokumentációs célokból adtuk meg! // // Az alárendelt zónák beállításaira vonatkozó bejegyzések. Érdemes // ilyet beállítani legalább ahhoz a zónához, amelyhez a tartományunk is // tartozik. Az elsődleges névszerverhez tartozó IP-címet érdeklődjük meg // az illetékes hálózati rendszergazdától. // // Soha ne felejtsünk el megadni zónát az inverz kereséshez! A neve az IP-cím // tagjainak fordított sorrendjéből // származik, amelyhez hozzátoldunk még egy // ".IN-ADDR.ARPA" (illetve IPv6 esetén ".IP6.ARPA") részt. // // Mielőtt nekilátnánk egy elsődleges zóna beállításának, gondoljuk // végig, hogy tényleg a megfelelő szinten ismerjük a névfeloldás és // a BIND működését. Gyakran ugyanis egyáltalán nem nyilvánvaló // csapdákba tudunk esni. Egy alárendelt zóna beállítása általában sokkal egyszerűbb feladat. // // FONTOS: Ne kövessük vakon a most következő példát :-) Helyette inkább // valódi neveket és címeket adjunk meg. /* Példa dinamikus zónára key "mintaorgkulcs" { algorithm hmac-md5; secret "sf87HJqjkqh8ac87a02lla=="; }; zone "minta.org" { type master; allow-update { key "mintaorgkulcs"; }; file "dynamic/minta.org"; }; */ /* Példa inverz alárendelt zónákra zone "1.168.192.in-addr.arpa" { type slave; file "slave/1.168.192.in-addr.arpa"; masters { 192.168.1.1; }; }; */
A named.conf állományban tehát így adhatunk meg közvetlen és inverz alárendelt zónákat.
Minden egyes újabb kiszolgált zónához az egy új bejegyzést kell felvenni a named.conf állományban.
Például a minta.org címhez tartozó legegyszerűbb ilyen bejegyzés így néz ki:
zone "minta.org" { type master; file "master/minta.org"; };
Ez egy központi zóna, ahogy arról a
type
mező, vagyis a típusa is
árulkodik. Továbbá a
file
mezőben láthatjuk, hogy a
hozzá tartozó információkat az
/etc/namedb/master/minta.org
állományban tárolja.
zone "minta.org" { type slave; file "slave/minta.org"; };
Az alárendelt esetben a zónához tartozó információkat a zóna központi szerverétől kapjuk meg és megadott állományban mentjük el. Ha valamiért a központi szerver leáll vagy nem érhető el, akkor az alárendelt szerver az átküldött zóna információk alapján képes helyette kiszolgálni a kéréseket.
A minta.org címhez tartozó példa központi zóna állomány (amely az /etc/namedb/master/néven.org érhető el) tartalma az alábbi:
$TTL 3600 ; alapértelmezés szerint 1 óra minta.org. IN SOA ns1.minta.org. admin.minta.org. ( 2006051501 ; sorozatszám 10800 ; frissítés 3600 ; ismétlés 604800 ; lejárat 300 ; TTL negatív válasz ) ; névszerverek IN NS ns1.minta.org. IN NS ns2.minta.org. ; MX rekordok IN MX 10 mx.minta.org. IN MX 20 levelezes.minta.org. IN A 192.168.1.1 ; a gépek nevei localhost IN A 127.0.0.1 ns1 IN A 192.168.1.2 ns2 IN A 192.168.1.3 mx IN A 192.168.1.4 levelezes IN A 192.168.1.5 ; álnevek www IN CNAME minta.org.
A “.”-ra végződő hálózati nevek abszolút nevek, míg minden más “.” nélküli név az ősére vezehető vissza (tehát relatív). Például az ns1 névből az ns1.minta.org keletkezik.
A zóna állományok felépítése a következő:
rekordnév IN rekordtípus érték
A névfeloldásban leggyakrabban alkalmazott rekordok típusai:
a zóna fennhatóságának kezdete
egy hitelesített névszerver
egy gép címe
egy álnév kanonikus neve
levélváltó
mutató a tartománynévre (az inverz feloldás használja)
minta.org. IN SOA ns1.minta.org. admin.minta.org. ( 2006051501 ; sorozatszám 10800 ; 3 óránként frissítsünk 3600 ; 1 óra után próbálkozzunk újra 604800 ; 1 hét után jár le 300 ) ; TTL negatív válasz
a tartomány neve, amely egyben a zóna őse
a zóna elsődleges/hitelesített névszervere
a zónáért felelős
személy neve, akinek az e-mail
címét a “@”
behelyettesítésével kapjuk meg.
(Tehát a <admin@example.org>
címből admin.example.org
lesz.)
az állomány sorozatszáma. Ezt a zóna állomány módosításakor mindig növelnünk kell. Manapság a rendszergazdák a sorozatszámot ééééhhnnvv alakban adják meg. A 2006051501 tehát azt jelenti, hogy az állományt 2006. május 15-én módosították utoljára, és a 01 pedig arra utal, hogy aznap először. A sorozatszám megadása fontos az alárendelt névszerverek számára, mivel így tudják megállapítani, hogy a zóna mikor változott utoljára.
IN NS ns1.minta.org.
Ez egy NS bejegyzés. A zónához tartozó minden hitelesített névszervernek lennie kell legalább egy ilyen bejegyzésének.
localhost IN A 127.0.0.1 ns1 IN A 192.168.1.2 ns2 IN A 192.168.1.3 mx IN A 192.168.1.4 levelezes IN A 192.168.1.5
Az A rekord egy gép nevét adja meg. Ahogy a fenti példából is kiderül, az ns1.minta.org név a 192.168.1.2 címre képződik le.
IN A 192.168.1.1
Ez a sor 192.168.1.1 címet rendeli az aktuális őshöz, amely jelen esetünkben az example.org.
www IN CNAME @
A kanonikus neveket tároló rekordokat általában egy gép álneveihez használjuk. Ebben a példában a www a “főgép” egyik álneve, amely itt éppenséggel a minta.org (192.168.1.1) tartományneve. A CNAME rekordok mellé más típusú rekordokat ugyanarra a hálózati névre soha ne adjunk meg.
IN MX 10 levelezes.minta.org.
Az MX rekord adja meg, hogy milyen levelező szerverek felelősek a zónába érkező levelek fogadásáért. A levelezes.minta.org a levelező szerver hálózati neve, ahol a 10 az adott levelező szerver prioritása.
Több levelező szerver is megadható 10-es, 20-as stb. prioritásokkal. A minta.org tartományon belül először mindig a legnagyobb MX prioritással rendelkező levelező szervernek próbáljuk meg továbbítani a leveleket (a legkisebb prioritási értékkel rendelkező rekord), majd ezután a második legnagyobbnak stb. egészen addig, amíg a levelet tovább nem küldtük.
Az in-addr.arpa zóna állományok (inverz DNS) esetén ugyanez a felépítés, kivéve, hogy a PTR típusú bejegyzések szerepelnek az A és CNAME helyett.
$TTL 3600 1.168.192.in-addr.arpa. IN SOA ns1.minta.org. admin.minta.org. ( 2006051501 ; sorozatszám 10800 ; frissítés 3600 ; ismétlés 604800 ; lejárat 300 ) ; TTL negatív válasz IN NS ns1.minta.org. IN NS ns2.minta.org. 1 IN PTR minta.org. 2 IN PTR ns1.minta.org. 3 IN PTR ns2.minta.org. 4 IN PTR mx.minta.org. 5 IN PTR levelezes.minta.org.
Ez az állomány írja le tehát a kitalált tartományunkon belül az IP-címek és hálózati nevek összerendelését.
Érdemes megemlíteni, hogy a PTR rekordok jobb oldalán álló nevek mindegyikének teljes hálózati névnek kell lennie (vagyis “.” karakterrel kell végződnie).
A gyorsítótárazó névszerver az a névszerver, amely elsődleges feladata a rekurzív kérések kiszolgálása. Egyszerűen továbbítja a beérkező kéréseket, majd megjegyzi azokat, így később közvetlenül tud válaszolni.
Habár a névfeloldás szempontjából a BIND a legelterjedtebb, a biztonságosságával azért akadnak gondok. Gyakran találnak benne potenciális és kihasználható biztonsági réseket.
A FreeBSD azonban a named démont automatikusan egy chroot(8) környezetbe helyezi. Emellett még léteznek további más védelmi mechanizmusok is, amelyek segítségével el tudjuk kerülni a névfeloldást célzó esetleges támadásokat.
Sosem árt olvasgatni a CERT által kiadott biztonsági figyelmeztetéseket és feliratkozni a FreeBSD security notifications levelezési lista címére, hogy folyamatosan értesüljünk az interneten és a FreeBSD-ben talált különböző biztonsági hibákról.
Tipp: Ha valamilyen gondunk támadna, akkor esetleg próbálkozzunk meg a forrásaink frissítésével és a named újrafordításával.
A FreeBSD szolgálja ki a legforgalmasabb honlapok nagy részét szerte a világban. A mögöttük álló webszerverek általában az Apache webszervert alkalmazzák. Az Apache használatához szükséges csomagok megtalálhatóak a FreeBSD telepítőlemezén is. Ha a FreeBSD első telepítésekor még nem telepítettük volna az Apache szerverét, akkor a www/apache13 vagy www/apache12 portból tudjuk feltenni.
Az Apache szervert sikeres telepítését követően be kell állítanunk.
Megjegyzés: Ebben a szakaszban az Apache webszerver 1.3.X változatát mutatjuk be, mivel ezt használják a legtöbben FreeBSD alatt. Az Apache 2.X rengeteg új technológiát vezetett be, de ezekkel itt most nem foglalkozunk. Az Apache 2.X változatával kapcsolatban keressük fel a http://httpd.apache.org/ oldalt.
Az Apache webszerver konfigurációs állománya FreeBSD alatt /usr/local/etc/apache/httpd.conf néven található. Ez az állomány egy szokványos UNIX-os szöveges konfigurációs állomány, ahol a megjegyzéseket egy # karakterrel vezetjük be. Az itt használható összes lehetséges beállítási lehetőség átfogó ismertetése meghaladná az egész kézikönyv határait, ezért most csak a leggyakrabban módosított direktívákat fogjuk ismertetni.
Ez adja meg az Apache számára az alapértelmezett könyvtárat. A binárisai ezen belül a bin és sbin alkönyvtárakban, a konfigurációs állományai pedig az etc/apache könyvtárban tárolódnak.
Erre a címre küldhetik nekünk a szerverrel kapcsolatos hibákat. Ez a cím egyes szerver által generált oldalakon jelenik meg, például hibák esetében.
A ServerName segítségével meg tudjuk adni, hogy milyen nevet küldjön vissza a szerver a klienseknek olyankor, ha az nem egyezne meg a jelenlegivel (vagyis a www nevet használjuk a gépünk valódi neve helyett).
A DocumentRoot adja meg azt a könyvtárat, ahonnan kiszolgáljuk a dokumentumokat. Alapértelmezés szerint az összes kérés erre a könyvtárra fog vonatkozni, de a szimbolikus linkek és az álnevek akár más helyekre is mutathatnak.
A változtatások végrehajtása előtt mindig is jó ötlet biztonsági másolatot készíteni az Apache konfigurációs állományairól. Ahogy sikerült összerakni egy számunkra megfelelő konfigurációt, készen is állunk az Apache futtatására.
A többi hálózati szervertől eltérően az Apache nem az inetd szuperszerverből fut. A kliensektől érkező HTTP kérések minél gyorsabb kiszolgálásának érdekében úgy állítottuk be, hogy önállóan fusson. Ehhez egy szkriptet is mellékeltünk, amellyel igyekeztünk a lehető legjobban leegyszerűsíteni a szerver indítását, leállítását és újraindítását. Az Apache első indításához adjuk ki a következő parancsot:
# /usr/local/sbin/apachectl start
Így pedig a szervert bármikor leállíthatjuk:
# /usr/local/sbin/apachectl stop
Ha valamilyen okból megváltoztattuk volna a szerver beállításait, akkor ezen a módon tudjuk újraindítani:
# /usr/local/sbin/apachectl restart
Ha a jelenleg megnyitott kapcsolatok felbontása nélkül akarjuk újraindítani az Apache szervert, akkor ezt írjuk be:
# /usr/local/sbin/apachectl graceful
Mindezekről az apachectl(8) man oldalon találunk bővebb leírást.
Amennyiben szükségünk lenne az Apache elindítására a rendszer indításakor, akkor a következő sort vegyünk fel az /etc/rc.conf állományba:
apache_enable="YES"
Az Apache 2.2 esetében:
apache22_enable="YES"
Amikor az Apache httpd nevű programjának szeretnénk további paranccsori paramétereket átadni a rendszer indítása során, akkor ezeket így tudjuk megadni az rc.conf állományban:
apache_flags=""
Most, miután a webszerverünk működik, a böngészőnkkel mindezt ellenőrizni is tudjuk a http://localhost/ cím beírásával. Ilyenkor az alapértelmezés szerinti /usr/local/www/data/index.html állomány tartalmát láthatjuk.
Az Apache a virtuális nevek használatának két különböző módját ismeri. Ezek közül az első módszer a név alapú virtualizáció (Name-based Virtual Hosting). Ilyenkor a kliens HTTP/1.1 fejlécéből próbálja meg a szerver megállapítani a hivatkozási nevet. Segítségével több tartomány is osztozhat egyetlen IP-címen.
Az Apache név alapú virtualizációjának beállításához az alábbi beállítást kell hozzátennünk a httpd.conf állományhoz:
NameVirtualHost *
Ha a webszerverünk neve www.tartomany.hu, és hozzá egy www.valamilyenmasiktartomany.hu virtuális nevet akarunk megadni, akkor azt a következőképpen tehetjük meg a httpd.conf állományon belül:
<VirtualHost *> ServerName www.tartomany.hu DocumentRoot /www/tartomany.hu </VirtualHost> <VirtualHost *> ServerName www.valamilyenmasiktartomany.hu DocumentRoot /www/valamilyenmasiktartomany.hu </VirtualHost>
A címek és elérési utak helyére helyettesítsük be a használni kívánt címeket és elérési utakat.
A virtuális nevek beállításának további részleteivel kapcsolatosan keressük fel az Apache hivatalos dokumentációját a http://httpd.apache.org/docs/vhosts/ címen (angolul).
Az alap szerver képességeinek kiegészítéséhez több különböző Apache modul áll rendelkezésünkre. A FreeBSD Portgyűjteménye az Apache telepítése mellett lehetőséget ad a népszerűbb bővítményeinek telepítésére is.
A mod_ssl modul az OpenSSL könyvtár használatával valósít meg erős titkosítást a biztonságos socket réteg második, illetve harmadik verziójával (Secure Sockets Layer, SSL v2/v3) és a biztonságos szállítási rétegbeli (Transport Layer Security v1) protokoll segítségével. Ez a modul mindent biztosít ahhoz, hogy a megfelelő hatóságok által aláírt tanúsítványokat tudjunk kérni, és ezáltal egy védett webszervert futtassunk FreeBSD-n.
Ha még nem telepítettünk volna fel az Apache szervert, akkor a www/apache13-modssl porton keresztül a mod_ssl modullal együtt is fel tudjuk rakni az Apache 1.3.X változatát. Az SSL támogatása pedig már az Apache 2.X www/apache22 porton keresztül elérhető változataiban alapértelmezés szerint engedélyezett.
Mindegyik nagyobb szkriptnyelvhez létezik egy külön Apache-modul, amelyek segítségével komplett Apache-modulokat tudunk készíteni az adott nyelven. Gyakran a dinamikus honlapok is így próbálják a szerverbe épített belső értelmezőn keresztül a külső értelmező indításából és benne a szkriptek lefuttatásából fakadó költségeket megspórolni, ahogy erről a következő szakaszokban olvashatunk.
Az utóbbi évtizedben egyre több vállalkozás fordult az internet felé bevételeik és részesedéseinek növelésének reményében, amivel egyre jobban megnőtt az igény a dinamikus honlapokra is. Miközben bizonyos cégek, mint például a Microsoft, a saját fejlesztésű termékeikbe építettek be ehhez támogatást, addig a nyílt forrásokkal foglalkozó közösség sem maradt tétlen és felvette a kesztyűt. A dinamikus tartalom létrehozásához többek közt Django, Ruby on Rails, a mod_perl és a mod_php modulok használhatóak.
A Django egy BSD típusú licensszel rendelkező keretrendszer, amelynek használatával nagy teljesítményű és elegáns webes alkalmazásokat tudunk gyorsan kifejleszteni. Tartalmaz egy objektum-relációs leképezőt, így az adattípusokat Python-objektumokként tudjuk leírni, és ezekhez az objektumokhoz egy sokrétű, dinamikus adatbázis hozzáférést nyújtó alkalmazásfejlesztői felületet, így a fejlesztőknek egyetlen SQL utasítást sem kell megírniuk. Találhatunk még benne továbbá egy bővíthető sablonrendszert, amelynek köszönhetően az alkalmazás belső működése elválasztható a HTML-beli megjelenésétől.
A Django működéséhez a mod_python modulra, az Apache szerverre és egy tetszőlegesen választott SQL alapú adatbázisrendszerre van szükség. A hozzá tartozó FreeBSD port mindezeket automatikusan telepíti a megadott beállítások szerint.
Példa 29-3. A Django telepítése az Apache, mod_python3 és a PostgreSQL használatával
# cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL
Miután a Django és a hozzá szükséges komponensek felkerültek rendszerünkre, hozzunk létre egy könyvtárat a leendő Django projektünknek és állítsuk be az Apache szervert, hogy az oldalunk belül a megadott linkekre a saját alkalmazásunkat hívja meg a beágyazott Python-értelmezőn keresztül.
Példa 29-4. Az Apache beállítása a Django és mod_python használatához
A következő sort kell hozzátennünk a httpd.conf állományhoz, hogy az Apache bizonyos linkeket a webes alkalmazás felé irányítson át:
<Location "/"> SetHandler python-program PythonPath "['/a/django/csomagok/helye/'] + sys.path" PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE azoldalam.beallitasai PythonAutoReload On PythonDebug On </Location>
A Ruby on Rails egy olyan másik nyílt forráskódú keretrendszer, amivel lényegében egy teljes fejlesztői készletet kapunk és amelyet kifejezetten arra élezték ki, hogy segítségével a webfejlesztők sokkal gyorsabban tudjanak haladni és a komolyabb alkalmazások gyorsabb elkészítése se okozzon nekik gondot. A Portrgyűjteményből pillanatok alatt telepíthető.
# cd /usr/ports/www/rubygem-rails; make all install clean
Az Apache és Perl egyesítésén fáradozó projekt a Perl programozási nyelv és az Apache webszerver erejének összehangolásán dolgozik. A mod_perl modulon keresztül Perlben vagyunk képesek modulokat készíteni az Apache szerverhez. Ráadásul a szerverben egy belső állandó értelmező is található hozzá, ezzel igyekeznek megspórolni a külső értelmező és a Perl indításából keletkező többletköltségeket.
A mod_perl több különböző módon állítható munkába. A mod_perl használatához nem szabad elfelejtenünk, hogy a mod_perl 1.0-ás verziója csak az Apache 1.3 változatával működik, és a mod_perl 2.0-ás változata pedig csak az Apache 2.X változataival. A mod_perl 1.0 a www/mod_perl portból telepíthető, valamint a statikusan beépített változata a www/apache13-modperl portban található. A mod_perl 2.0 a www/mod_perl2 portból rakható fel.
A PHP, vagy másik nevén “PHP, a hipertext feldolgozó” egy általános célú szkriptnyelv, amelyet kifejezetten honlapok fejlesztéséhez hoztak létre. A szabványos HTML ágyazható nyelv felépítésében a C, Java és Perl nyelveket ötvözi annak elérése érdekében, hogy ezzel segítse a fejlesztőket a dinamikusan generált oldalak minél gyorsabb megírásában.
A PHP5 támogatását úgy tudjuk hozzáadni az Apache webszerverhez, ha telepítjük a lang/php5 portot.
Ha a lang/php5 portot most telepítjük először, akkor a vele kapcsolatos beállításokat tartalmazó OPTIONS menü automatikusan megjelenik. Ha ezzel nem találkoznánk, mert például valamikor korábban már felraktuk volna a lang/php5 portot, akkor a port könyvtárában következő parancs kiadásával tudjuk újra visszahozni:
# make config
A beállítások között jelöljük be az APACHE opciót, amelynek eredményeképpen létrejön az Apache webszerverhez használható mod_php5 betölthető modul.
Megjegyzés: A PHP4 modult még ma is rengeteg szerver használja több különböző okból (például kompatibilitási problémák vagy a már korábban kiadott tartalom miatt). Ha tehát a mod_php5 helyett inkább a mod_php4 modulra lenne szükségünk, akkor a lang/php4 portot használjuk. A lang/php4 portnál is megtalálhatjuk a lang/php5 fordítási idejű beállításainak nagy részét.
Az iméntiek révén települnek és beállítódnak a dinamikus PHP alkalmazások támogatásához szükséges mouldok. Az /usr/local/etc/apache/httpd.conf állományban ellenőrizni is tudjuk, hogy az alábbi részek megjelentek-e:
LoadModule php5_module libexec/apache/libphp5.so
AddModule mod_php5.c <IfModule mod_php5.c> DirectoryIndex index.php index.html </IfModule> <IfModule mod_php5.c> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule>
Ahogy befejeződött a művelet, a PHP modul betöltéséhez mindösszesen az apachectl paranccsal kell óvatosan újraindítanunk a webszervert:
# apachectl graceful
A PHP jövőbeni frissítéseihez már nem lesz szükségünk a make config parancsra, mivel a korábban kiválasztott OPTIONS menün belüli beállítasainkat a FreeBSD Portgyűjteményéhez tartozó keretrendszer automatikusan elmenti.
A PHP FreeBSD-ben megtalálható támogatása kifejezetten moduláris, ezért az alap telepítése igencsak korlátozott. A további elemek hozzáadásához a lang/php5-extensions portot tudjuk használni. A port egy menüvezérelt felületet nyújt a PHP különböző bővítményeinek telepítéséhez. Az egyes bővítményeket azonban a megfelelő portok használatával is fel tudjuk rakni.
Például PHP5 modulhoz úgy tudunk támogatást adni a MySQL adatbázis szerverhez, ha telepítjük a databases/php5-mysql portot.
Miután telepítettünk egy bővítményt, az Apache szerverrel újra be kell töltetnünk a megváltozott beállításokat:
# apachectl graceful
Az adatállomány átviteli protokoll (File Transfer Protocol, FTP) a felhasználók számára lehetőséget ad az ún. FTP szerverekre állományokat feltölteni, illetve onnan állományokat letölteni. A FreeBSD alaprendszere is tartalmaz egy ilyen FTP szerverprogramot, ftpd néven. Ezért FreeBSD alatt egy FTP szerver beállítása meglehetősen egyszerű.
A beállítás legfontosabb lépése, hogy eldöntsük milyen hozzáféréseken át lehet elérni az FTP szervert. Egy hétköznapi FreeBSD rendszerben rengeteg hozzáférés a különböző démonokhoz tartozik, de az ismeretlen felhasználók számára nem kellene megengednünk ezek használatát. Az /etc/ftpusers állományban szerepelnek azok a felhasználók, akik semmilyen módon nem érhetik el az FTP szolgáltatást. Alapértelmezés szerint itt találhatjuk az előbb említett rendszerszintű hozzáféréseket is, de ide minden további nélkül felvehetjük azokat a felhasználókat, akiknél nem akarjuk engedni az FTP elérését.
Más esetekben előfordulhat, hogy csak korlátozni akarjuk egyes felhasználók FTP elérését. Ezt az /etc/ftpchroot állományon keresztül tehetjük meg. Ebben az állományban a lekorlátozni kívánt felhasználókat és csoportokat írhatjuk bele. Az ftpchroot(5) man oldalán olvashatjuk el ennek részleteit, ezért ennek pontos részleteit itt most nem tárgyaljuk.
Ha az FTP szerverünkhöz névtelen (anonim) hozzáférést is engedélyezni akarunk, akkor ahhoz először készítenünk kell egy ftp nevű felhasználót a FreeBSD rendszerünkben. A felhasználók ezután az ftp vagy anonymous nevek, valamint egy tetszőleges jelszó (ez a hagyományok szerint a felhasználó e-mail címe) használatával is képesek lesznek bejelentkezni. Az FTP szerver ezután a névtelen felhasználók esetében meghívja a chroot(2) rendszerhívást, és ezzel lekorlátozza hozzáférésüket az ftp felhasználó könyvtárára.
Két szöveges állományban adhatunk meg a becsatlakozó FTP kliensek számára üdvözlő üzeneteket. Az /etc/ftpwelcome állomány tartalmát még a bejelentkezés előtt látni fogják a felhasználók, a sikeres bejelentkezést követően pedig az /etc/ftpmotd állomány tartalmát látják. Vigyázzunk, mert ennek az állománynak már a bejelentkezési környezethez képest relatív az elérése, ezért a névtelen felhasználók esetében ez konkrétan az ~ftp/etc/ftpmotd állomány lesz.
Ahogy beállítottuk az FTP szervert, az /etc/inetd.conf állományban is engedélyeznünk kell. Itt mindössze annyira lesz szükségünk, hogy eltávolítsuk a megjegyzést jelző “#” karaktert a már meglevő ftpd sor elől:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
Ahogy arról már a 29-1 Példa szót ejtett, az inetd beállításait újra be kell olvastatnunk a konfigurációs állomány megváltoztatása után. A 29.2.2 Szakasz írja le az inetd engedélyezésének részleteit.
Az ftpd önálló szerverként is elindítható. Ehhez mindössze elegendő csak a megfelelő változót beállítani az /etc/rc.conf állományban:
ftpd_enable="YES"
Miután megadtuk az iménti változót, a szerver el fog indulni a rendszer következő indítása során. Szükség esetén természetesen root felhasználóként a következő paranccsal is közvetlenül elindítható:
# /etc/rc.d/ftpd start
Most már be is tudunk jelentkezni az FTP szerverre:
% ftp localhost
Az ftpd démon a syslog(3) használatával naplózza az üzeneteket. Alapértelmezés szerint a rendszernaplózó démon az FTP működésére vonatkozó üzeneteket az /var/log/xferlog állományba írja. Az FTP naplóinak helyét az /etc/syslog.conf állományban tudjuk módosítani:
ftp.info /var/log/xferlog
Legyünk körültekintőek a névtelen FTP szerverek üzemeltetésekor. Azt pedig kétszer is gondoljuk meg, hogy engedélyezzük-e a névtelen felhasználók számára állományok feltöltését, hiszen könnyen azon kaphatjuk magunkat, hogy az FTP oldalunk illegális állománycserék színterévé válik vagy esetleg valami sokkal rosszabb történik. Ha mindenképpen szükségünk lenne erre a lehetőségre, akkor állítsunk be olyan engedélyeket a feltöltött állományokra, hogy a többi névtelen felhasználó ezeket a tartalmuk tüzetes ellenőrzéséig ne is olvashassa.
A Samba egy olyan elterjedt nyílt forráskódú szoftver, ami Microsoft Windows kliensek számára tesz lehetővé állomány- és nyomtatási szolgáltatásokat. Az ilyen kliensek általa helyi meghajtóként képesek elérni a FreeBSD állományrendszerét, vagy helyi nyomtatóként a FreeBSD általt kezelt nyomtatókat.
A Samba csomagja általában megtalálható a FreeBSD telepítőeszközén. Ha a FreeBSD-vel együtt nem raktuk fel a Samba csomagját, akkor ezt később net/samba3 port vagy csomag telepítésével pótolhatjuk.
A Samba konfigurációs állománya a telepítés után /usr/local/share/examples/samba/smb.conf.default néven található meg. Ezt kell lemásolnunk /usr/local/etc/smb.conf néven, amelyet aztán a Samba tényleges használata előtt módosítanunk kell.
Az smb.conf állomány a Samba futásához használt beállításokat tartalmazza, mint például Windows kliensek számára felkínált a nyomtatók és “megosztások” adatait. A Samba csomagban ezen kívül találhatunk még egy swat nevű webes eszközt, amellyel egyszerű módon tudjuk az smb.conf állományt állítgatni.
A Samba webes adminisztrációs segédeszköze (Samba Web Administration Tool, SWAT) az inetd démonon keresztül fut démonként. Ennek megfelelőn az /etc/inetd.conf állományban a következő sort kell kivennünk megjegyzésből, mielőtt a swat segítségével megkezdenénk a Samba beállítását:
swat stream tcp nowait/400 root /usr/local/sbin/swat swat
Ahogy azt a 29-1 Példa is mutatja, az inetd démont újra kell indítanunk a megváltozott konfigurációs állományának újbóli beolvasásához.
Miután az inetd.conf állományban a swat engedélyezésre került, a böngészőnk segítségével próbáljunk meg a http://localhost:901 címre csatlakozni. Először a rendszer root hozzáférésével kell bejelentkeznünk.
Miután sikeresen bejelentkeztünk a Samba beállításait tárgyaló lapra, el tudjuk olvasni a rendszer dokumentációját, vagy a
fülre kattintva nekiláthatunk a beállítások elvégzésének. A részben található opciók az /usr/local/etc/smb.conf állomány [global] szekciójában található változókat tükrözik.Akár a swat eszközzel, akár a /usr/local/etc/smb.conf közvetlen módosításával dolgozunk, a Samba beállítása során a következőkkel mindenképpen össze fogunk futni:
A szervert elérni kívánó számítógépek által használt NT tartomány vagy munkacsoport neve.
A Samba szerver NetBIOS neve. Alapértelmezés szerint ez a név a gép hálózati nevének első tagja.
Ez a szöveg jelenik meg akkor, ha például a net view paranccsal vagy valamilyen más hálózati segédprogrammal kérdezzük le a szerver beszédesebb leírását.
A /usr/local/etc/smb.conf állományban a két legfontosabb beállítás a választott biztonsági modell és a kliensek felhasználói jelszavainak tárolásához használt formátum. Az alábbi direktívák vezérlik ezeket:
Itt a két leggyakoribb beállítás a security = share és a security = user. Ha a kliensek a FreeBSD gépen található felhasználói neveiket használják, akkor felhasználói szintű védelemre van szükségünk (tehát a user beállításra). Ez az alapértelmezett biztonsági házirend és ilyenkor a klienseknek először be kell jelentkezniük a megosztott erőforrások eléréséhez.
A megosztás (share) szintű védelem esetében, a klienseknek nem kell a szerveren érvényes felhasználói névvel és jelszóval rendelkezniük a megosztott erőforrások eléréséhez. Ez volt az alapbeállítás a Samba korábbi változataiban.
A Samba számos különböző hitelesítési modellt ismer. A klienseket LDAP, NIS+, SQL adatbázis vagy esetleg egy módosított jelszó állománnyal is tudjuk hitelesíteni. Az alapértelmezett hitelesítési módszer a smbpasswd, így itt most ezzel foglalkozunk.
Ha feltesszük, hogy az alapértelmezett smbpasswd formátumot választottuk, akkor a Samba úgy fogja tudni hitelesíteni a klienseket, ha előtte létrehozzuk a /usr/local/private/smbpasswd állományt. Ha a Windows-os kliensekkel is el akarjuk érni a UNIX-os felhasználói hozzáféréseinket, akkor használjuk a következő parancsot:
# smbpasswd -a felhasználónév
Megjegyzés: A Samba a 3.0.23c verziójától kezdődően a hitelesítéshez szükséges állományokat a /usr/local/etc/samba könyvtárban tárolja. A felhasználói hozzáférések hozzáadására innentől már a tdbsam parancs használata javasolt:
# pdbedit-a
-u
felhasználónév
A hivatalos Samba HOGYAN ezekről a beállításokról szolgál további információkkal (angolul). Viszont az itt vázolt alapok viszont már elegendőek a Samba elindításához.
A net/samba3 port a Samba irányítására egy új indító szkriptet tartalmaz. A szkript engedélyezéséhez, tehát általa a Samba elindításának, leállításának és újraindításának lehetővé tételéhez vegyük fel a következő sort az /etc/rc.conf állományba:
samba_enable="YES"
Ha még finomabb irányításra vágyunk:
nmbd_enable="YES"
smbd_enable="YES"
Megjegyzés: Ezzel egyben a rendszer indításakor automatikusan be is indítjuk a Samba szolgáltatást.
A Samba a következőkkel bármikor elindítható:
# /usr/local/etc/rc.d/samba start Starting SAMBA: removing stale tdbs : Starting nmbd. Starting smbd.
Az rc szkriptekkel kapcsolatban a 11.7 Szakaszt ajánljuk elolvasásra.
A Samba jelen pillanatban három különálló démonból áll. Láthatjuk is, hogy az nmbd és smbd démonokat elindította a samba szkript. Ha az smb.conf állományban engedélyeztük a winbind névfeloldási szolgáltatást is, akkor láthatjuk, hogy ilyenkor a winbindd démon is elindul.
A Samba így állítható le akármikor:
# /usr/local/etc/rc.d/samba stop
A Samba egy összetett szoftvercsomag, amely a Microsoft Windows hálózatokkal kapcsolatos széles körű együttműködést tesz lehetővé. Az általa felkínált alapvető lehetőségeken túl a többit a http://www.samba.org honlapon ismerhetjük meg (angolul).
Idővel a számítógép órája hajlamos elmászni. A hálózati idő protokoll (Network Time Protocol, NTP) az egyik módja az óránk pontosan tartásának.
Rengeteg internetes szolgáltatás elvárja vagy éppen előnyben részesíti a számítógép órájának pontosságát. Például egy webszervertől megkérdezhetik, hogy egy állományt adott ideje módosítottak-e. A helyi hálózatban az egyazon állományszerveren megosztott állományok ellentmondásmentes dátumozása érdekében szinte elengedhetetlen az órák szinkronizálása. Az olyan szolgáltatások, mint a cron(8) is komolyan építkeznek a pontosan járó rendszerórára, amikor egy adott pillanatban kell lefuttatniuk parancsokat.
A FreeBSD alapból az ntpd(8) NTP szervert tartalmazza, amellyel más NTP szerverek segítségével tudjuk beállítani gépünk óráját, vagy éppen idővel kapcsolatos információkat szolgáltatni másoknak.
Az óránk egyeztetéséhez egy vagy több NTP szerverre lesz szükségünk. Előfordulhat, hogy a hálózati rendszergazdánk vagy az internet-szolgáltatónk már beállított egy ilyen szervert erre a célra. Ezzel kapcsolatban olvassuk el a megfelelő leírásokat. A nyilvánosan elérhető NTP szerverekről készült egy lista, ahonnan könnyedén ki tudjuk keresni a számunkra leginkább megfelelő (hozzánk legközelebbi) szervert. Ne hagyjuk figyelmen kívül a szerverre vonatkozó házirendet és kérjünk engedélyt a használatához, amennyiben ez szükséges.
Több, egymással közvetlen kapcsolatban nem álló NTP szerver választásával járunk jól, ha netalán az egyikük váratlanul elérhetetlenné vagy az órája pontatlanná válna. Az ntpd(8) a visszakapott válaszokat intelligensen használja fel, mivel esetükben a megbízható szervereket részesíti előnyben.
Ha a számítógépünk indításakor akarjuk egyeztetni az óránkat, akkor erre az ntpdate(8) nevű programot használhatjuk. Ez olyan asztali gépek számára megfelelő választás, amelyeket gyakran indítanak újra és csak időnként kell szinkronizálnunk. A legtöbb gépnek viszont az ntpd(8) használatára van szüksége.
Az ntpdate(8) elindítása olyan esetekben is hasznos, ahol az ntpd(8) is fut. Az ntpd(8) az órát fokozatosan állítja, ellenben az ntpdate(8) az eltérés mértékétől és irányától függetlenül egyszerűen átállítja a gép óráját a pontos időre.
Az ntpdate(8) elindítását
úgy tudjuk engedélyezni a rendszer
indításakor, ha az
/etc/rc.conf állományba
berakjuk az ntpdate_enable="YES" sort.
Emellett még ntpdate_flags
változóban meg kell adnunk az alkalmazott
beállítások mellett azokat a szervereket,
amelyekkel szinkronizálni akarunk.
Az NTP az /etc/ntp.conf állományon keresztül állítható, amelyek felépítését az ntp.conf(5) man oldal tárgyalja. Íme erre egy egyszerű példa:
server ntplocal.minta.com prefer server timeserver.minta.org server ntp2a.minta.net driftfile /var/db/ntp.drift
A server beállítás adja meg az egyeztetéshez használt szervereket, soronként egyet. Ha egy szerver mellett szerepel még a prefer paraméter is, ahogy azt a példában a ntplocal.minta.com mellett láthattuk, akkor a többivel szemben azt a szervert fogjuk előnyben részesíteni. Az így kiemelt szervertől érkező választ abban az esetben viszont eldobjuk, hogy a többi szervertől kapott válasz jelentős mértékben eltér tőle. Minden más esetben a ő válasza lesz a mérvadó. A prefer paramétert általában olyan NTP szerverekhez használják, amelyek közismerten nagy pontosságúak, tehát például külön erre a célra szánt felügyeleti eszközt is tartalmaznak.
A driftfile beállítással azt az állományt adjuk meg, amiben a rendszeróra frekvencia eltolódásait tároljuk. Az ntpd(8) program ezzel ellensúlyozza automatikusan az óra természetes elmászását, ezáltal lehetővé téve, hogy egy viszonylag pontos időt kapjuk még abban az esetben is, amikor egy kis időre külső időforrások nélkül maradnánk.
A driftfile beállítással egyben azt az állományt jelöljük ki, amely az NTP szervertől kapott korábbi válaszokat tárolja. Ez az NTP működéséhez szükséges belső adatokat tartalmaz, ezért semmilyen más programnak nem szabad módosítania.
Alapértelmezés szerint az NTP szerverünket bárki képes elérni az interneten. Az /etc/ntp.conf állományban szereplő restrict beállítás segítségével azonban meg tudjuk mondani, milyen gépek érhetik el a szerverünket.
Ha az NTP szerverünk felé mindenféle próbálkozást el akarunk utasítani, akkor az /etc/ntp.conf állományba a következő sort kell felvennünk:
restrict default ignore
Megjegyzés: Ezzel egyben azonban a helyi beállításainkban szereplő szerverek elérését is megakadályozzuk. Ha külső NTP szerverekkel is szeretnénk szinkronizálni, akkor itt is engedélyezünk kell ezeket. Erről bővebben lásd az ntp.conf(5) man oldalon.
Ha csak a belső hálózatunkban levő gépek számára szeretnénk elérhetővé tenni az órák egyeztetését, de sem a szerver állapotának módosítását nem engedélyezzük, sem pedig azt, hogy a vele egyenrangú szerverekkel szinkronizáljon, akkor az iménti helyett a
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
sort írjuk bele, ahol a 192.168.1.0 a belső hálózatunk IP-címe és a 255.255.255.0 a hozzá tartozó hálózati maszk.
Az /etc/ntp.conf több restrict típusú beállítást is tartalmazhat. Ennek részleteiről az ntp.conf(5) man oldalon, az Access Control Support című szakaszban olvashatunk.
Úgy tudjuk az NTP szervert elindítani a
rendszerünkkel együtt, ha az
/etc/rc.conf állományban
szerepeltetjük az ntpd_enable="YES"
sort. Ha az ntpd(8) számára további
beállításokat is át akarunk adni,
akkor az /etc/rc.conf
állományban adjuk meg az
ntpd_flags
paramétert.
Ha a gépünk újraindítása
nélkül akarjuk elindítani a szerver, akkor az
ntpd parancsot adjuk ki az
/etc/rc.conf állományban a
ntpd_flags
változóhoz megadott
paraméterekkel. Mint például:
# ntpd -p /var/run/ntpd.pid
Az ntpd(8) program megfelelő működéséhez nem szükséges állandó internet kapcsolat. Ha azonban igény szerinti tárcsázással építjünk fel ideiglenes kapcsolatot, akkor érdemes letiltani az NTP forgalmát, nehogy feleslegesen aktiválja vagy tartsa életben a vonalat. Ha PPP típusú kapcsolatunk van, akkor az /etc/ppp/ppp.conf állományban a filter direktívával tudjuk ezt leszabályozni. Például:
set filter dial 0 deny udp src eq 123 # Nem engedjük az NTP által küldött adatoknak, hogy tárcsázást # kezdeményezzenek: set filter dial 1 permit 0 0 set filter alive 0 deny udp src eq 123 # Nem engedjük az NTP adatainak, hogy fenntartsák a kapcsolatot: set filter alive 1 deny udp dst eq 123 set filter alive 2 permit 0/0 0/0
Mindenezekről részletesebb felvilágosítást a ppp(8) man oldal PACKET FILTERING című szakaszában és a /usr/share/examples/ppp/ könyvtárban található példákban kaphatunk.
Megjegyzés: Egyes internet-szolgáltatók blokkolják az alacsonyabb portokat, ezáltal az NTP nem használható, mivel a válaszok nem fogják elérni a gépünket.
Az NTP szerver dokumentációja HTML formátumban a /usr/share/doc/ntp/ könyvtárban található.
A rendszernaplókkal kapcsolatos műveletek egyaránt fontosak a biztonság és a karbantartás szempontjából. Ha közepes vagy nagyobb méretű, esetleg különböző típusú hálózatokban adminisztrálunk több gépet, akkor könnyen átláthatatlanná válhat a naplók rendszeres felügyelete. Ilyen helyzetekben a távoli naplózás beállításával az egész folyamatot sokkal kényelmesebbé tehetjük.
Némileg képesek vagyunk enyhíteni a naplóállományok kezelésének terhét, ha egyetlen központi szerverre küldjük át az adatokat. Ekkor a FreeBSD alaprendszerében megtalálható alapeszközökkel, mint például a syslogd(8) vagy a newsyslog(8) felhasználásával egyetlen helyen be tudjuk állítani a naplók összegyűjtését, összefésülését és cseréjét. A most következő példa konfigurációban az A gép, a naploszerver.minta.com fogja gyűjteni a helyi hálózatról érkező naplóinformációkat. A B gép, a naplokliens.minta.com pedig a szervernek küldi a naplózandó adatokat. Éles környezetben mind a két gépnek rendelkeznie kell megfelelő DNS bejegyzésekkel, vagy legalább szerepelniük kell egymás /etc/hosts állományaiban. Ha ezt elmulasztjuk, a szerver nem lesz hajlandó adatokat fogadni.
A naplószerverek olyan gépek, amelyeket úgy állítottunk be, hogy naplózási információkat tudjanak fogadni távoli számítógépekről. A legtöbb esetben így egyszerűsíteni tudunk a konfiguráción, vagy olykor egyszerűen csak hasznos, ha ezt a megoldást alkalmazzuk. Függetlenül attól, hogy miért használjuk, a továbblépés előtt néhány előkészületet meg kell tennünk.
Egy rendesen beállított naplószervernek legalább a következő követelményeknek kell eleget tennie:
az 514-es UDP portot engedélyezni kell mind a kliensen, mind pedig a szerveren futó tűzfal szabályrendszerében;
a syslogd(8) képes legyen a távoli kliens gépekről érkező üzeneteket fogadni;
a syslogd(8) szervernek és az összes kliensnek rendelkeznie kell érvényes DNS (közvetlen és inverz) bejegyzésekkel vagy szerepelnie kell az /etc/hosts állományban.
A naplószerver beállításához mindegyik klienst fel kell vennünk az /etc/syslog.conf állományba, valamint meg kell adnunk a megfelelő funkciót (facility):
+naplokliens.minta.com *.* /var/log/naplokliens.log
Megjegyzés: A syslog.conf(5) man oldalán megtalálhatjuk a különböző támogatott és elérhető funkciókat.
Miután beállítottuk, az összes adott funkcióhoz tartozó üzenet az előbb megadott állományba (/var/log/naplokliens.log) fog kerülni.
A szerveren továbbá meg kell adnunk a következő sort az /etc/rc.conf állományban:
syslogd_enable="YES" syslogd_flags="-a naplokliens.minta.com -vv"
Az első sorral engedélyezzük a
syslogd elindítását a
rendszerindítás során, majd a
második sorral engedélyezzük, hogy a kliens
naplózni tudjon a szerverre. Itt még
látható a -vv
opció,
amellyel a naplózott üzenetek
részletességét tudjuk növelni. Ennek
nagyon fontos a szerepe a naplózási
funkciók behangolásakor, mivel így a
rendszergazdák pontosan láthatják milyen
típusú üzenetek milyen funkcióval
kerültek rögzítésre a
naplóban.
Befejezésképpen hozzuk létre a naplóállományt. Teljesen mindegy, hogy erre milyen megoldást alkalmazunk, például a touch(1) remekül megfelel:
# touch /var/log/naplokliens.log
Ezután indítsuk újra és ellenőrizzük a syslogd démont:
# /etc/rc.d/syslogd restart # pgrep syslog
Ha válaszul megkapjuk a futó démon azonosítóját, akkor sikerült újraindítanunk, elkezdhetjük a kliens beállítását. Ha valamiért nem indult volna újra a szerver, az /var/log/messages állományból próbáljuk meg kideríteni az okát.
A naplókliens az a gép, amely egy helyi naplópéldány karbantartása mellett továbbküldni a naplózandó információkat egy naplószervernek.
Hasonlóan a naplószerverekhez, a klienseknek is teljesítenie bizonyos alapvető elvárásokat:
a syslogd(8) démon küldjön bizonyos típusú üzeneteket a naplószervernek, amely ezeket pedig képes legyen fogadni;
a hozzá tartozó tűzfal engedje át a forgalmat az 514-es UDP porton;
rendelkezzen mind közvetlen, mind pedig inverz DNS bejegyzéssel, vagy szerepeljenek az /etc/hosts állományban.
A kliens beállítása sokkal egyszerűbb a szerverhez képest. A kliensen adjuk hozzá a következő sorokat az /etc/rc.conf állományhoz:
syslogd_enabled="YES" syslogd_flags="-s -vv"
A szerver beállításaihoz
hasonlóan itt is engedélyezzük a
syslogd démont és
megnöveljük a naplózott üzenetek
részletességét. A -s
kapcsolóval pedig megakadályozzuk, hogy a kliens
más gépekről is hajlandó legyen
naplóüzeneteket elfogadni.
A funkciók a rendszernek azon részét írják le, amelyhez létrejön az adott üzenet. Tehát például az ftp és ipfw egyaránt ilyen funkciók. Amikor keletkezik egy naplóüzenet valamelyikükhöz, általában megjelenik a nevük. A funkciókhoz tartozik még egy prioritás vagy szint is, amellyel az adott üzenet fontosságát jelzik. Ezek közül a leggyakoribb a warning (mint “figyelmeztetés”) és info (mint “információ”). A használható funkciók és a hozzájuk tartozó prioritások teljes listáját a syslog(3) man oldalán olvashatjuk.
A naplószervert meg kell adnunk a kliens /etc/syslog.conf állományában. Itt a @ szimbólummal jelezzük, hogy az adatokat egy távoli szerverre szeretnénk továbbküldeni, valahogy így:
*.* @naploszerver.minta.com
Ezután a beállítás érvényesítéséhez újra kell indítanunk a syslogd démont:
# /etc/rc.d/syslogd restart
A logger(1) használatával próbáljuk ki a kliensről a aplóüzenetek hálózaton keresztüli küldését, és küldjünk valamit a syslogd démonnak:
# logger "Udvozlet a naplokliensrol"
A parancs kiadása után az üzenetnek mind a kliens, mind pedig a szerver /var/log/messages állományában meg kell jelennie.
Előfordulhat, hogy a naplószerver valamiért nem kapja meg rendesen az üzeneteket, ezért valamilyen módon meg kell keresnünk a hiba okát. Ez több minden lehet, de általában két leggyakoribb ok valamilyen hálózati kapcsolódási vagy DNS beállítási hiba. Ezek teszteléséhez gondoskodjunk róla, hogy a gépek kölcsönösen elérhetőek egymásról az /etc/rc.conf állományban megadott hálózati nevük szerint. Ha ezzel látszólag minden rendben van, akkor próbáljuk meg módosítani a syslogd_flags értékét az /etc/rc.conf állományban.
A most következő példában a /var/log/naplokliens.log teljesen üres, illetve a /var/log/messages állomány semmilyen hibára utaló okot nem tartalmaz. A hibakereséshez még több információt a syslogd_flags átírásával tudunk kérni:
syslogd_flags="-d -a naploklien.minta.com -vv"
Természetesen ne felejtsük el újraindítani a szervert:
# /etc/rc.d/syslogd restart
A démon újraindítása után közvetlenül az alábbiakhoz hasonló üzenetek árasztják el a képernyőt:
logmsg: pri 56, flags 4, from naploszerver.minta.com, msg syslogd: restart syslogd: restarted logmsg: pri 6, flags 4, from naploszerver.minta.com, msg syslogd: kernel boot file is /boot/kernel/kernel Logging to FILE /var/log/messages syslogd: kernel boot file is /boot/kernel/kernel cvthname(192.168.1.10) validate: dgram from IP 192.168.1.10, port 514, name naplokliens.minta.com; rejected in rule 0 due to name mismatch.
A diagnosztikai üzeneteket végigolvasva nyilvánvaló válik, hogy azért dobja el az üzeneteket a szerver, mert nem megfelelő a gép neve. Miután átnézzük a beállításainkat, felfedezhetünk az /etc/rc.conf állományban egy apró hibát:
syslogd_flags="-d -a naploklien.minta.com -vv"
Láthatjuk, hogy ebben a sorban a naplokliens névnek kellene szerepelni, nem pedig a naploklien névnek. Miután elvégeztük a szükséges javításokat, indítsuk újra a szervert és vizsgáljuk meg az eredményt:
# /etc/rc.d/syslogd restart logmsg: pri 56, flags 4, from naploszerver.minta.com, msg syslogd: restart syslogd: restarted logmsg: pri 6, flags 4, from naploszerver.minta.com, msg syslogd: kernel boot file is /boot/kernel/kernel syslogd: kernel boot file is /boot/kernel/kernel logmsg: pri 166, flags 17, from naploszerver.minta.com, msg Dec 10 20:55:02 <syslog.err> naploszerver.minta.com syslogd: exiting on signal 2 cvthname(192.168.1.10) validate: dgram from IP 192.168.1.10, port 514, name naplokliens.minta.com; accepted in rule 0. logmsg: pri 15, flags 0, from naplokliens.minta.com, msg Dec 11 02:01:28 pgj: Masodik teszt uzenet Logging to FILE /var/log/naplokliens.log Logging to FILE /var/log/messages
Itt már minden üzenet rendben megérkezett és a megfelelő állományokba került (a /var/log/messages a kliensen, és a /var/log/naplokliens.log a szerveren)).
Mint minden hálózati szolgáltatás esetén, ilyenkor is figyelembe kell vennünk bizonyos biztonsági megfontolásokat a tényleges konfiguráció kiépítése előtt. Olykor előfordulhat, hogy a naplók különböző kényes információkat tartalmaznak, mint például a helyi rendszeren futó szolgáltatások nevei, felhasználói nevek vagy egyéb konfigurációs adatok. A kliens és a szerver között hálózaton utazó adatok viszont se nem titkosítottak, se nem jelszóval védettek. Ha titkosítást szeretnénk használni, akkor javasoljuk például a security/stunnel portot, amellyel egy titkosított tunnelen keresztül tudunk adatokat küldeni a hálózaton.
A helyi rendszer biztonságának szavatolása is fontos lehet. A naplók sem a használat során, sem pedig a lecserélésük után nem kerülnek titkosításra. Emiatt a helyi rendszerhez hozzáférő felhasználók kedvükre nyerhetnek ki belőlük a rendszerünket érintő konfigurációs információkat. Ezért ilyenkor nagyon fontos, hogy mindig a megfelelő engedélyeket állítsuk be a naplókra. A newsyslog(8) segédprogrammal be tudjuk állítani a frissen létrehozott és a lecserélt naplók engedélyeit. Tehát könnyen megakadályozhatjuk a helyi felhasználók kíváncsiskodását, ha itt a naplók engedélyeit például a 600 kóddal adjuk meg.
A tűzfalakkal a rendszerünkön keresztülfolyó bejövő és kimenő forgalmat tudjuk szűrni. A tűzfalak egy vagy több “szabályrendszer” alapján vizsgálják az éppen érkező vagy távozó hálózati csomagokat, és vagy továbbengedik ezeket vagy megállítják. A tűzfalak szabályai a csomagok egy vagy több jellemzőjét veszik szemügyre, amelyek lehetnek például a protokoll típusa, a forrás vagy cél hálózati címe, esetleg a forrás- vagy a célport.
A tűzfalak jelentős mértékben képesek gyarapítani egy gép vagy egy hálózat védelmét. Leginkább a következőkre tudjuk felhasználni:
A belső hálózatunkban futó alkalmazások, szolgáltatások, gépek megvédésére és elszigetelésére az internetről érkező nem kívánt forgalom ellen
A belső hálózatban levő gépek elérését tudjuk korlátozni vagy letiltani az interneten elérhető szolgáltatások felé
A hálózati címfordítás (Network Address Translation, NAT) beállításához, ahol a belső hálózatunk privát IP-címeket használnak és egy közös kapcsolaton keresztül érik el az internetet (egyetlen IP-címmel, vagy pedig automatikusan kiosztott publikus címekkel).
A fejezet elolvasása során megismerjük:
hogyan adjuk meg helyesen a csomagok szűrését leíró szabályokat;
a FreeBSD-be épített tűzfalak közti különbségeket;
hogyan állítsuk be és használjuk az OpenBSD PF tűzfalát;
hogyan állítsuk be és használjuk az IPFILTER tűzfalat;
hogyan állítsuk be és használjuk az IPFW tűzfalat.
A fejezet elolvasása előtt ajánlott:
a FreeBSD-hez és az internethez kötődő alapvető fogalmak ismerete.
A tűzfalak szabályrendszereit alapvetően kétféleképpen tudjuk összeállítani: “inkluzív”, vagyis megengedő, illetve “exkluzív” vagyis kizáró módon. Az exkluzív tűzfalak minden forgalmat átengednek, amiről nem rendelkeznek a tűzfal szabályai. Az inkluzív tűzfalak ennek pontosan az ellenkezőjét teszik. Csak azt a forgalmat engedik át, amiről van szabály és minden mást blokkolnak.
Az inkluzív tűzfalak alkalmazásával sokkal jobban kezünkbentudjuk tartani a hálózatunk kimenő forgalmát, ezért leginkább az internetes szolgáltatásokat futtató rendszerek esetében bizonyulhat jobb választásnak. Emellett az internetről a hálózatunk felé irányuló forgalmat is képes szabályozni. Ekkor az egyetlen szabályra sem illeszkedő csomagokat egyszerűen eldobjuk és naplózzuk. Az inkluzív tűzfalak általában biztonságosabbak az exkluzív típusú társaiknál, mivel esetükben jelentős mértékben visszaszorul a nem kívánatos átfolyó forgalom.
Megjegyzés: Hacsak nem emeljük ki külön, a fejezet további részében minden példaként megadott szabályrendszer inkluzív tűzfalat hoz létre.
Ez a típusú védelem még tovább fokozható az “állapottartó tűzfalak” (stateful firewall) használatával. Az ilyen típusú tűzfalak szemmel tartják a rajtuk keresztül megnyitott kapcsolatokat, és vagy csak a már meglevő kapcsolathoz tartozó forgalmat engedik át vagy nyitnak egy újat. Az állapottartó tűzfalak hátránya, hogy a “Denial of Service” (DoS) típusú támadásokkal szemben sokkal sérülékenyebbek olyan helyzetekben, amikor az új kapcsolatok nagyon gyorsan jönnek létre. A legtöbb tűzfal esetében azonban tudjuk vegyíteni az állapottartó és nem állapottartó viselkedést, és ezzel egy ideális beállítást kialakítani.
A FreeBSD alaprendszerébe három különböző tűzfalat építettek be, melyek a következők: az IPFILTER (másik nevén IPF), az IPFIREWALL (más néven IPFW) és az OpenBSD csomagszűrője (Packet Filter, azaz PF). A forgalom szabályozására (vagyis alapvetően a sávszélesség kihasználtságának vezérlésére) a FreeBSD két beépített csomagot tartalmaz: ez az altq(4) és a dummynet(4). Általában a Dummynet az IPFW, míg az ALTQ a PF partnere. Az IPFILTER esetében maga az IPFILTER végzi a címfordítást és a szűrést, a sávszélességet pedig az IPFW a dummynet(4) vagy a PF az ALTQ segítségével. Az IPFW és a PF szabályokkal rendelkezik a rendszerünkbe érkező vagy onnan távozó csomagokról, habár megoldásaik teljesen máshogy működnek és a szabályok megadási módja is eltér.
A FreeBSD azért tartalmaz egyszerre ennyiféle tűzfalat, mert az emberek elvárásai és igényei eltérnek. Egyikük sem tekinthető a legjobbnak.
A szerző egyébként az IPFILTER megoldását részesíti előnyben, mivel egy hálózati címfordítást alkalmazó környezetben sokkal könnyebb vele megfogalmazni az állapottartó szabályokat, valamint tartalmaz egy beépített FTP proxyt is, amivel így a kimenő FTP kapcsolatok beállítása még tovább egyszerűsödik.
Mivel az összes tűzfal a csomagok fejlécének bizonyos mezőinek alapján dolgozik, ezért a tűzfal szabályrendszerét megalkotó egyénnek teljesen tisztában kell lennie a TCP/IP működésével, továbbá azzal, hogy ezekben a mezőkben milyen értékek szerepelhetnek és ezeket hogyan használják egy átlagos kapcsolat alatt. Ebben a témában a http://www.ipprimer.com/overview.cfm címen találhatunk egy remek ismertetőt (angolul).
2003 júliusában az OpenBSD PF néven ismert csomagszűrőjét átírták FreeBSD-re és elérhetővé tették a FreeBSD Portgyűjteményének részeként. A PF programot beépítetten tartalmazó első kiadás pedig 2004 novemberében a FreeBSD 5.3 volt. A PF egy teljes, mindentudó tűzfal, amely támogatja az ún. ALTQ (Alternate Queuing, vagyis a “váltóbesorolás”) megoldást. Az ALTQ lehetővé teszi a sávszélesség korlátozását a szolgáltatás minősége (Quality of Service, QoS) alapján.
Az OpenBSD Projekt kiváló munkát végez a PF felhasználói útmutatójának karbantartásával. A kézikönyv ezen szakasza ezért elsősorban azzal foglalkozik, hogyan kell a PF-et FreeBSD alatt használni, miközben igyekszik egy általános összefoglalást adni a témáról. A részletesebb információkkal kapcsolatban azonban feltétlenül nézzük meg a felhasználói útmutatót.
A http://pf4freebsd.love2party.net/ címen olvashatunk többet arról (angolul), hogy a PF-et hogyan használjunk FreeBSD-n.
A PF modul betöltéséhez a következő sort kell felvennünk az /etc/rc.conf állományba:
pf_enable="YES"
Ezt követően futtassuk le a hozzá tartozó rendszerindító szkriptet:
# /etc/rc.d/pf start
A PF modul abban az esetben nem fog betöltődni, ha nem találja a szabályokat tartalmazó konfigurációs állományt. Ez alapértelmezés szerint az /etc/pf.conf állomány. Ha a szabályok leírása rendszerünkön máshol található, akkor az /etc/rc.conf állományban a következő módon adhatjuk meg annak pontos helyét:
pf_rules="/elérési/út/pf.conf"
Megjegyzés: A FreeBSD 7.0 kiadással a minta pf.conf állomány az /etc könyvtárból átkerült a /usr/share/examples/pf könyvtárba. A FreeBSD 7.0 előtti kiadásokban alapértelmezés szerint található egy pf.conf állomány az /etc könyvtárban.
A PF modul parancssorból akár kézzel is betölthető:
# kldload pf.ko
A PF működésének naplózását a pflog.ko teszi lehetővé, amelyet az alábbi sor hozzáadásával engedélyezhetünk az /etc/rc.conf állományban:
pflog_enable="YES"
A modul betöltését a hozzá tartozó rendszerindító szkript segítségével kérhetjük:
# /etc/rc.d/pflog start
Ha a PF többi funkcióját is használni szeretnénk, akkor ehhez egy új rendszermagot kell fordítanunk PF támogatással.
Noha egyáltalán nem szükséges beépítenünk a PF támogatását a rendszermagba, abban az esetben mégis szükségünk lehet rá, amikor a PF olyan komolyabb lehetőségeit szeretnénk kiaknázni, amelyek már nem részei a modulnak. Ilyen például a pfsync(4), amely a PF által használt állapottáblázatok bizonyos változásainak megjelenítésére alkalmas pszeudoeszköz. A carp(4) megoldásával párosítva így akár hibatűrő tűzfalak is kialakíthatóak a PF-fel. A CARP megoldásáról a kézikönyvben bővebb ismertetést a 31.13 Szakasz ad.
A PF rendszermag konfigurációs beállításai a /usr/src/sys/conf/NOTES állományban találhatóak:
device pf device pflog device pfsync
A device pf beállítás engedélyezi a csomagszűrő tűzfalat (pf(4)).
A device pflog megadásával keletkezik egy pflog(4) pszeudo hálózati eszköz, amellyel egy bpf(4) eszközre érkező forgalmat tudunk naplózni. Ezután a pflogd(8) démon használható tőle származó naplózott adatok rögzítésére.
A device pfsync engedélyezi a pfsync(4) pszeudo hálózati eszköz létrejöttét, amely az ún. “állapotváltások” megfigyelésére alkalmas.
A következő rc.conf(5) beállítások aktiválják a rendszerindítás során a PF és a pflog(4) használatát:
pf_enable="YES" # a PF engedélyezése (a modul betöltése, ha kell) pf_rules="/etc/pf.conf" # a pf szabályait tartalmazó állomány pf_flags="" # a pfctl indításához szükséges további paraméterek pflog_enable="YES" # a pflogd(8) elindítása pflog_logfile="/var/log/pflog" # hol tartsa a pflogd az naplóit pflog_flags="" # a pflogd indításához szükséges paraméterek
Ha a tűzfalunk mögött egy helyi hálózat is meghúzódik, akkor az ott levő gépek számára valamilyen módon tudnunk kell továbbítani a csomagokat vagy címfordítást kell végezni, így ez is mindenképpen kelleni fog:
gateway_enable="YES" # az átjáró funkciók engedélyezése
A PF a beállításait a pf.conf(5) állomány tárolja (amely alapértelmezés szerint az /etc/pf.conf helyen található), és az ebben található szabályok alapján módosítja, dobja el vagy éppen engedi át a csomagokat. A FreeBSD rendszerünkben ehhez találhatunk néhány példát a /usr/share/examples/pf/ könyvtárban. A PF által használt szabályokról minden részletre kiterjedően a PF felhasználói útmutatójában olvashatunk.
Figyelem: A PF felhasználói útmutatójának olvasásakor ne feledkezzünk meg róla, hogy a különböző FreeBSD verziók különböző PF verziókat tartalmaznak. A FreeBSD 7.X és későbbi változatok az OpenBSD 4.1 kiadásában szereplő PF változatot tartalmazzák.
A FreeBSD packet filter levelezési lista remek hely a PF tűzfal beállításával és futtatásával kapcsolatos kérdésekre. A kérdezés előtt azonban ne felejtsük el alaposan átnézni az archívumot!
A PF a pfctl(8) segítségével vezérelhető. Az alábbiakban ezzel kapcsolatban most összefoglalunk néhány hasznos parancsot (de ne felejtsük el megnézni a pfctl(8) man oldalon található többi lehetőséget sem):
Parancs | Leírás |
---|---|
pfctl -e | A PF engedélyezése |
pfctl -d | A PF tiltása |
pfctl -F all -f /etc/pf.conf | Az összes (címfordítási, szűrési, állapottartási stb.) szabály törlése, és az /etc/pf.conf állomány újratöltése |
pfctl -s [ rules | nat | state ] | A szűrési (rules), címfordítási (nat) és állapottartási (state) információk lekérdezése |
pfctl -vnf /etc/pf.conf | Az /etc/pf.conf állomány ellenőrzése a benne levő szabályok betöltése nélkül |
Az ALTQ kizárólag csak úgy használható, ha a konfigurációs beállításokon keresztül beépítjük a FreeBSD rendszermagjába. Az ALTQ alkalmazását nem minden hálózati kártya meghajtója támogatja, ezért ezt a altq(4) man oldalon ellenőrizzük.
A következő rendszermag konfigurációs beállításokkal engedélyezhetjük az ALTQ használatát és bővíthetjük azt további lehetőségekkel:
options ALTQ options ALTQ_CBQ # osztályozás alapú besorolás (Class Bases Queuing, CBQ) options ALTQ_RED # véletlen korai észlelés (Random Early Detection, RED) options ALTQ_RIO # RED befele/kifele options ALTQ_HFSC # hiearchikus csomagütemező (Hierarchical Packet Scheduler, HFSC) options ALTQ_PRIQ # prioritásos besorolás (Priority Queuing, PRIQ) options ALTQ_NOPCC # az SMP esetén kell
Az options ALTQ az ALTQ rendszert engedélyezi.
Az options ALTQ_CBQ engedélyezi a osztályozás alapú besorolást (Class Based Queuing, CBQ). A CBQ használatával a kapcsolatunkhoz tartozó sávszélességet különböző osztályokra vagy sorokra tudjuk bontani és a szűrési szabályoknak megfelelően osztályozni segítségükkel a forgalmat.
Az options ALTQ_RED a véletlen korai észlelés (Random Early Detection, RED) használatát engedélyezi. A RED a hálózati forgalomban keletkező torlódások elkerülésére alkalmas. A RED ezt a problémát úgy oldja meg, hogy méri a sorok hosszát és összeveti a hozzá tartozó minimális és maximális küszöbértékekkel. Ha a sor hossza meghaladja a számára előírt maximális értéket, akkor az új csomagokat eldobja. Nevéhez hűen a RED az eldobásra ítélt csomagokat véletlenszerűen választja ki.
Az options ALTQ_RIO engedélyezi a RED használatát mind a két irányba, tehát be- és kifelé.
Az options ALTQ_HFSC a pártatlan hierachikus szolgáltatási görbe alapú csomagütemezőt (Hierarchical Fair Service Curve Packet Scheduler, HFSC) engedélyezi. Vele kapcsolatban a http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html címen találhatunk bővebben olvasnivalót (angolul).
Az options ALTQ_PRIQ a prioritásos besorolást (Priority Queuing, PRIQ) teszi elérhetővé. A PRIQ mindig elsőként a nagyobb értékű sorban levő forgalmat továbbítja.
Az options ALTQ_NOPCC az ALTQ SMP, vagyis többprocesszoros támogatását adja meg. Ilyen típusú rendszerekben ez kötelező.
Az IPFILTER szerzője Darren Reed. Az IPFILTER nem kötődik egyik rendszerhez sem: ez egy olyan nyílt forráskódú alkalmazás, amelyet átírtak FreeBSD, NetBSD, OpenBSD, SunOS, HP/UX és Solaris operációs rendszerekre. Az IPFILTER karbantartása és támogatása pillanatnyilag is aktív, folyamatosan jelennek meg újabb változatai.
Az IPFILTER egy rendszermag oldalán működő tűzfalazási és egy címfordítási mechanizmusra alapszik, amelyet felhasználói programokkal tudunk felügyelni és vezérelni. A tűzfal szabályai az ipf(8) segédprogrammal állíthatóak be vagy törölhetőek. A hálózati címfordításra vonatkozó szabályokat az ipnat(1) segédprogrammal állíthatjuk be vagy törölhetjük. Az ipfstat(8) segédprogram képes futás közben statisztikákat készíteni az IPFILTER rendszermagban elhelyezkedő részeinek viselkedéséről. Az ipmon(8) program pedig az IPFILTER cselekvéseit képes a rendszernaplókba feljegyezni.
Az IPF eredetileg olyan szabályfeldolgozási módszer szerint készült, amelyben “az utolsó egyező szabály nyer” és csak állapotnélküli szabályokat ismert. Az idő múlásával az IPF részévé vált a “quick” opció és a “keep state” opción keresztül az állapottartás is, melyek drámai mértékben korszerűsítették a szabályok feldolgozásának elvét. Az IPF hivatalos dokumentációja csak a régi szabályok létrehozását és azok feldolgozásának leírását tartalmazza. A korszerűsített funkciók csak kiegészítésképpen jelennek meg, és az általuk felkínált előnyök megértése egy sokkal magasabb szintű és biztonságosabb tűzfal megépítését teszik lehetővé.
A szakaszban szereplő utasításokban olyan szabályok szerepelnek, amelyek kihasználják a “quick” és “keep state” opciókat. Ezek az inkluzív tűzfalszabályok létrehozásának alapjai.
A régi típusú szabályokról a http://www.obfuscation.org/ipf/ipf-howto.html#TOC_1 és http://coombs.anu.edu.au/~avalon/ip-filter.html címeken olvashatunk (angolul).
Az IPF gyakran ismételt kérdései a http://www.phildev.net/ipf/index.html címen érhetőek el (angolul).
A nyílt forrású IPFILTER levelezési lista kereshető archívumait a http://marc.theaimsgroup.com/?l=ipfilter címen találjuk (angolul).
Az IPF megtalálható a FreeBSD alaptelepítésében mint menet közben külön betölthető modul. Ha az rc.conf állományba beírjuk a ipfilter_enable="YES" sort, akkor ez a modul dinamikusan betöltődik. A betölthető modul alapból naplóz és a default pass all beállítást tartalmazza. Ha helyette a block all szabályt akarjuk használni, akkor emiatt még nem kell feltétlenül újrafordítanunk a FreeBSD rendszermagját, elég ha egyszerűen csak a szabályrendszerünk végére beszúrjuk.
Az IPF használatához nem kötelező a következő beállításokkal újrafordítani a FreeBSD rendszermagját, itt csupán háttérinformációként szerepel. Amikor az IPF a rendszermagba kerül, a betölhető modulra nem lesz szükség.
Az IPF a rendszermag forrásai között található /usr/src/sys/conf/NOTES állományban megadott beállításai a következő módon foglalhatóak össze:
options IPFILTER options IPFILTER_LOG options IPFILTER_DEFAULT_BLOCK
Az options IPFILTER engedélyezi az “IPFILTER” tűzfal támogatását.
Az options IPFILTER_LOG hatására az IPF az ipl csomagnaplózó pszeudo eszközre jegyzi fel a forgalmat — minden olyan szabály esetén, ahol megjelenik a log kulcsszó.
Az options IPFILTER_DEFAULT_BLOCK megváltoztatja az alapértelmezett viselkedést, tehát minden olyan csomag, amely nem illeszkedik a tűzfal valamelyik pass típusú (átengedő) szabályára, blokkolásra kerül.
Ezek a beállítások csak azt követően érvényesülnek, ha fordítottunk és telepítettünk velük egy új rendszermagot.
Az /etc/rc.conf állományban a következő utasításokra lesz szükségünk az IPF működésbe hozására a rendszer indítása során:
ipfilter_enable="YES" # az ipf tűzfal indítása ipfilter_rules="/etc/ipf.rules" # betölti a szabályokat tartalmazó szöveges állományt ipmon_enable="YES" # elindítja az IP monitor naplózását ipmon_flags="-Ds" # D = indítás démonként # s = naplózás a syslog használatával # v = a tcp ablak, ack, seq csomagok naplózása # n = az IP-címek és portok feloldása
Ha olyan helyi hálózat áll meg a tűzfal mögött, amely egy fenntartott privát IP-címtartományt használ, akkor még a következő utasításokra is szükségünk lesz a címfordítás bekapcsolásához:
gateway_enable="YES" # a helyi hálózat átjárója ipnat_enable="YES" # az ipnat funkció elindítása ipnat_rules="/etc/ipnat.rules" # az ipnat működéséhez szükséges definíciók
Az ipf(8) parancs használható a szabályokat tartalmazó állomány betöltésére. Általában egy állományba írjuk össze a tűzfal szabályait és ezzel a paranccsal cseréljük le egyszerre a tűzfalban levő jelenlegi szabályokat:
# ipf -Fa -f /etc/ipf.rules
Az -Fa
az összes belső
szabály törlését jelenti.
Az -f
jelzi, hogy egy
állományból kell beolvasni a
betöltendő szabályokat.
Ezzel mintegy lehetőségünk van változtatni a korábban összeállított szabályainkon, futtatni a fenti IPF parancsot és ezen keresztül úgy frissíteni a szabályok friss másolatával a már működő tűzfalat, hogy nem is kell újraindítanunk a rendszert. Ez a módszer igen kényelmes az új szabályok kipróbálásához, mivel bármikor tetszőlegesen végrehajtható.
Az ipf(8) man oldala tartalmazza a parancsnak megadható további beállításokat.
Az ipf(8) parancs a szabályokat tároló állományt egy szabványos szöveges állománynak tekinti, semmilyen szimbolikus helyettesítést alkalmazó szkriptet nem fogad el.
Lehetőségünk van azonban olyan IPF szabályokat készíteni, amelyek kiaknázzák a szkriptek szimbolikus helyettesítésének lehetőségeit. Erről bővebben lásd 30.5.9 Szakasz.
Az ipfstat(8) alapértelmezés szerint a arra használatos, hogy le tudjuk kérdezni és megjeleníteni a tűzfalhoz tartozó számlálók értékeit, amelyek a legutóbbi indítás vagy az ipf -Z parancs által kiadott lenullázásuk óta a bejövő vagy kimenő forgalomból a megadott szabályoknak megfelelő csomagok alapján gyűjtenek össze statisztikákat.
A parancs működésének részleteit az ipfstat(8) man oldalon olvashatjuk.
Az ipfstat(8) meghívása alapból így néz ki:
input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0 output packets: blocked 4200 passed 1284345 nomatch 14687 counted 0 input packets logged: blocked 99286 passed 0 output packets logged: blocked 0 passed 0 packets logged: input 0 output 0 log failures: input 3898 output 0 fragment state(in): kept 0 lost 0 fragment state(out): kept 0 lost 0 packet state(in): kept 169364 lost 0 packet state(out): kept 431395 lost 0 ICMP replies: 0 TCP RSTs sent: 0 Result cache hits(in): 1215208 (out): 1098963 IN Pullups succeeded: 2 failed: 0 OUT Pullups succeeded: 0 failed: 0 Fastroute successes: 0 failures: 0 TCP cksum fails(in): 0 (out): 0 Packet log flags set: (0)
Az -i
mint bejövő (inbound), vagy
az -o
mint kimenő (outbound) forgalomra
vonatkozó paraméterek megadásával a
rendszermagban az adott oldalon jelenleg telepített
és alkalmazott szabályokat kérhetjük
le és jeleníthetjük meg.
Az ipfstat -in parancs így a bejövő forgalomra vonatkozó belső szabályokat mutatja a szabályok számával.
Az ipfstat -on parancs a kimenő forgalmat érintő belső szabályokat mutatja a szabályok számával.
Az eredmény körülbelül ilyen lesz:
@1 pass out on xl0 from any to any @2 block out on dc0 from any to any @3 pass out quick on dc0 proto tcp/udp from any to any keep state
Az ipfstat -ih a bejövő forgalomhoz tartozó belső szabályokat mutatja és mindegyik elé odaírja, hogy eddig mennyi csomag illeszkedett rájuk.
Az ipfstat -oh ugyanígy a kimentő forgalom esetén mutatja a belső szabályokat és mindegyik előtt feltünteti, hogy az adott pillanatig mennyi csomag illeszkedett rájuk.
A kimenete nagyjából ilyen lesz:
2451423 pass out on xl0 from any to any 354727 block out on dc0 from any to any 430918 pass out quick on dc0 proto tcp/udp from any to any keep state
Az ipfstat parancs talán egyik
legfontosabb funkciója a -t
kapcsolóval csalható elő, melynek
hatására a rendszerben aktív
állapotok táblázatát mutatja meg
ugyanúgy, ahogy a top(1) a FreeBSD rendszerben
futó programokat. Amikor a tűzfalunk
támadás alatt áll, ezzel a
funkcióval tudjuk a problémát
beazonosítani, leásni a mélyébe
és látni a támadótól
érkező csomagokat. A
kiegészítésképpen megadható
alkapcsolók megadásával
kiválaszthatjuk azt a cél vagy forrás
IP-címet, portot vagy protokollt, amelyet valós
időben meg akarunk figyelni. Ennek részleteit az
ipfstat(8) man oldalán láthatjuk.
Az ipmon megfelelő
működéséhez be kell kapcsolnunk a
rendszermag IPFILTER_LOG
beállítását. Ez a parancs
két különböző módban
használható. Ha parancsot a -D
opció nélkül gépeljük be, akkor
ezek közül alapból a natív módot
kapjuk meg.
A démon mód abban az esetben hasznos, ha
folyamatosan naplózni akarjuk a rendszerben zajló
eseményeket, majd később ezeket
átnézni. Így képes egymással
együttműködni a FreeBSD és az IPFILTER. A
FreeBSD beépítve tartalmaz olyan
lehetőséget, aminek révén
magától cseréli a rendszernaplókat.
Ezért ha átküldjük a syslogd(8)
démonnak a naplózandó üzeneteket,
akkor sokkal jobban járunk, mintha egyszerűen csak
mezei állományba naplóznánk. Az
rc.conf alapértelmezései
között az ipmon_flags
beállítás a -Ds
kapcsolókat rögzíti:
ipmon_flags="-Ds" # D = indítás démonként # s = naplózás a syslog használatával # v = a tcp ablak, ack, seq csomagok naplózása # n = az IP-címek és portok nevének feloldása
Ennek a viselkedésnek az előnyei minden bizonnyal egyértelműek. Segítségével képesek vagyunk az esetek megtörténte után átnézni, hogyan milyen csomagokat dobott el a rendszer, azok milyen címekről érkeztek és hova szánták. Ez egy komoly fegyver a támadók lenyomozásában.
Hiába engedélyezzük a naplózást, az IPF önszántából semmilyen naplózási szabályt nem fog gyártani. A tűzfal gazdájának kell eldöntenie, hogy a szabályokat közül melyiket akarja naplózni, és így neki kell megadnia a log kulcsszót ezekben az esetekben. Normális esetben csak a deny szabályokat naplózzák.
Egyáltalán nem ritka, hogy a szabályrendszer végén egy alapértelmezés szerint mindent eldobó szabály áll, amely naplóz. Ezzel lehetőségünk nyílik rögzíteni azokat a csomagokat, amelyek egyetlen szabályra sem illeszkedtek.
A syslogd egy saját
módszert alkalmaz a naplózott adatok
elkülönítésére. Egy
“funkciók” (facility) és
“szintek” (level) segítségével
kialakított speciális csoportosítást
alkalmaz. Az IPMON -Ds
módja
alapértelmezés szerint a local0
“funkciót” használja. Ezen
túl a következő szinteken
különíthetjük el igényeinknek
megfelelően a naplózott adatokat:
LOG_INFO - az átengedés vagy blokkolás helyett a "log" kulcsszóval ellátott csomagok LOG_NOTICE - az át is engedett csomagok LOG_WARNING - a blokkolt csomagok LOG_ERR - a naplózott csomagok közül azok, amelyek túlságosan kicsik (hibás a fejlécük)
Az IPFILTER csak akkor tud naplózni a /var/log/ipfilter.log állományba, ha előtte létrehozzuk. Az alábbi parancs erre tökéletesen megfelelő:
# touch /var/log/ipfilter.log
A syslogd(8) működését az /etc/syslog.conf állományban szereplő definíciók vezérlik. A syslog.conf állomány számottevő mértékben képes meghatározni azt, ahogy a syslog az IPF és a hozzá hasonló alkalmazásoktól kapott rendszerszintű üzeneteket kezeli.
Az /etc/syslog.conf állományba az alábbi sor kell felvennünk:
local0.* /var/log/ipfilter.log
A local0.* megadásával az összes ilyen típusú üzenet egy előre rögzített helyre kerül.
Az /etc/syslog.conf állományban elvégzett módosításokat úgy léptethetjük érvénybe, ha újraindítjuk a számítógépet vagy az /etc/rc.d/syslogd reload paranccsal megkérjük a syslogd(8) démont, hogy olvassa újra az /etc/syslog.conf állományt.
Az imént létrehozott naplót ne felejtsük el megadni az /etc/newsyslog.conf állományban sem, és akkor ezzel a cseréjét is megoldjuk.
Az ipmon által létrehozott üzenetek whitespace karakterekkel elválasztott adatmezőkből állnak. A következő mezők az összes üzenet esetében megjelennek:
A csomag megérkezésének dátuma
A csomag megérkezésének időpontja. ÓÓ:PP:MM.E alakban jelennek meg az órák, percek, másodpercek és ezredmásodpercek (ez több számjegy hosszú is lehet) szerint
Azon interfész a neve, ahol a csomag feldolgozásra került, például dc0
A szabályhoz tartozó csoport és sorszám, például @0:17
Ezek az ipfstat -in paranccsal nézhetőek meg.
Cselekvés: a p mint átment (passed), b mint blokkolt (blocked), S mint rövid csomag (short packet), n mint egyik szabályra sem illeszkedett (not match), L mint naplózás (log). A módosítók megjelenítésének sorrendje: S, p, b, n, L. A nagybetűs P és B azt jelzi, hogy a csomagot egy felsőbb szintű beállítás miatt naplózták, nem egy szabály hatására.
Címek: ez tulajdonképpen három mezőt takar: a forrás címet és portot (melyet egy vessző választ el), a -> jelet és cél címet és portot. Például: 209.53.17.22,80 -> 198.73.220.17,1722.
A PR után a protokoll neve vagy száma olvasható, például PR tcp.
A len csomaghoz tartozó fejléc és törzsének teljes hosszát jelöli, például len 20 40.
Amennyiben a csomag TCP, egy kötőjellel kezdődően további mezők is megjelenhetnek a beállított opcióknak megfelelő betűk képében. A betűket és beállításaikat az ipf(5) man oldalán olvashatjuk.
Amennyiben a csomag ICMP, a sort két mező zárja, melyek közül az első tartalma mindig “ICMP”, és ezt egy perjellel elválasztva az ICMP üzenet típusa és altípusa követi. Tehát például az ICMP 3/3 a “nem elérhető port” üzenetet hordozza.
Az IPF használatában gyakorlott felhasználók közül néhányan képesek olyan stílusú szabályrendszert készíteni, ahol szimbolikus helyettesítést használnak. Ennek az egyik legnagyobb előnye az, hogy ilyenkor elég csak a szimbolikus névhez tartozó értéket megváltoztatni és amikor a szkript lefut, akkor az összes rá hivatkozó szabályba ez kerül be. Szkript lévén a szimbolikus helyettesítéssel ki tudjuk emelni a gyakran használt értékeket és behelyettesíteni ezeket több helyre. Ezt a most következő példában láthatjuk.
Az itt alkalmazott felírás kompatibilis az sh(1), csh(1) és tcsh(1) parancsértelmezőkkel.
A szimbolikus helyettesítést egy dollárjellel fejezzük ki: $.
A szimbolikus mezőkben nem szerepel a $ jelölés.
A szimbolikus mező tartalmát kettős idézőjelbe (") tesszük.
Kezdjük így el a szabályok írását:
######### Az IPF szabályait tartalmazó szkript eleje ########### oif="dc0" # a kimenő interfész neve odns="192.0.2.11" # az internet szolgáltató névszerverének IP-címe myip="192.0.2.7" # a szolgáltatótól kapott statikus IP-címünk ks="keep state" fks="flags S keep state" # Választhatunk, hogy az /etc/ipf.rules állományt ebből a szkriptből # hozzuk létre vagy futtathatjuk "magát" a szkriptet. # # Egyszerre csak az egyik sort használjuk. # # 1) Ezzel gyárhatjuk le az /etc/ipf.rules állományt: #cat > /etc/ipf.rules << EOF # # 2) Ezzel futtathajuk "magát" a szkriptet: /sbin/ipf -Fa -f - << EOF # Engedélyezzük a szolgáltató névszerverének elérését. pass out quick on $oif proto tcp from any to $odns port = 53 $fks pass out quick on $oif proto udp from any to $odns port = 53 $ks # Engedélyezzük kifelé a titkosítatlan www funkciót. pass out quick on $oif proto tcp from $myip to any port = 80 $fks # Engedélyezzük kifelé a TLS SSL felett üzemelő titkosított www funkciót. pass out quick on $oif proto tcp from $myip to any port = 443 $fks EOF ################## Itt az IPF szkript vége ########################
Ennyi lenne. A példában szereplő szabályok most nem annyira lényegesek, a hangsúly most igazából a szimbolikus helyettesítésen és annak használatán van. Ha a fenti példát az /etc/ipf.rules.script állományba mentjük, akkor ezeket a szabályokat a következő paranccsal újra tudjuk tölteni:
# sh /etc/ipf.rules.script
Egyetlen aprócska gond van a beágyazott szimbólumokat tartalmazó állományokkal: az IPF maga nem képes megérteni a helyettesítéseket, azért közvetlenül nem olvassa a szkriptet.
Ez a szkript két módon hasznosítható:
Vegyük ki megjegyzésből a cat paranccsal kezdődő sort, és tegyük megjegyzésbe az /sbin/ipf kezdetűt. A megszokottak szerint tegyük az ipfilter_enable="YES" sort az /etc/rc.conf állományba, majd minden egyes módosítása után futtassuk le a szkriptet az /etc/ipf.rules állomány létrehozásához vagy frissítéséhez.
Tiltsuk le az IPFILTER aktiválását a rendszerindításkor, tehát írjuk bele az ipfilter_enable="NO" sort (ami mellesleg az alapértelmezett értéke) az /etc/rc.conf állományba.
Tegyünk egy, az alábbi szkripthez hasonlót az /usr/local/etc/rc.d/ könyvtárba. A szkriptnek adjuk valamilyen értelmes nevet, például ipf.loadrules.sh. Az .sh kiterjesztés használata kötelező.
#!/bin/sh sh /etc/ipf.rules.script
A szkript engedélyeit állítsuk be úgy, hogy a root tulajdonában legyen és képes legyen olvasni, írni valamint végrehajtani.
# chmod 700 /usr/local/etc/rc.d/ipf.loadrules.sh
Most miután a rendszer elindult, az IPF szabályai be fognak töltődni.
Az IPF esetében a szabályrendszer olyan szabályokból áll, amelyek a csomagokról tartalmuk alapján eldöntik, hogy át kell engedni vagy vissza kell tartani. A gépek közt két irányban áramló csomagok egy munkamenet alapú társalgást képeznek. A tűzfalhoz tartozó szabályrendszer egyaránt feldolgozza a internetről a hálózatunk felé igyekvő csomagokat, illetve a hálózatunk ezekre adott válaszait. Az egyes TCP/IP szolgáltatásokat (mint például telnet, www, levelezés stb.) a hozzájuk tartozó protokol és szabványos (fogadó) portszám írja le. Ezekre a forrásról általában valamilyen nem szabványos (magasabb értékű) portról érkeznek csomagok. Ekkor a kommunikáció összes paramétere (vagyis a portok és címek) bármelyike alapján definiálhatunk blokkolást vagy továbbengedést leíró szabályokat.
Az IPF eredetileg úgy íródott, hogy a szabályokat “az utolsó illeszkedő szabály nyer” stílusban dolgozza fel és csak állapot nélküli szabályokat ismert. Az idők folyamán az IPF szabályai kiegészültek a “quick” és az állapottartásra vonatkozó “keep state” opciókkal, amelynek köszönhetően óriási mértékben korszerűsödött a szabályok feldolgozása.
A szakaszban szereplő utasítások olyan szabályokat alkalmaznak, amelyekben egyaránt szerepel a “quick” és az állapottartásért felelős “keep state” beállítás. Ez az inkluzív tűzfalak létrehozásának egyik alapeszköze.
Figyelem: A tűzfal szabályainak összeállítása során nagyon óvatosnak kell lennünk! Bizonyos beállítások hatására akár ki is zárhatjuk magunkat a szerverünkről. Az ebből fakadó esetleges kellemetlenségek elkerülése érdekében javasoljuk, hogy a tűzfal alapjait először helyi konzolról építsük fel, ne pedig távolról, például ssh segítségével.
A szabályok felépítésének bemutatását itt most leszűkítjük a modern állapottartó szabályokra és az “első illeszkedő szabály nyer” típusú feldolgozásra. A szabályok felírásának régebbi módjai az ipf(8) man oldalon találhatóak.
A # karakterrel egy megjegyzés kezdetét jelezzük, és általában a sor végén vagy egy külön sorban bukkan fel. Az üres sorokat a rendszer nem veszi figyelembe.
A szabályok kulcsszavakat tartalmaznak. Ezeknek a kulcsszavaknak balról jobbra haladva adott sorrendben kell szerepelniük. A kulcsszavakat kiemeltük. Egyes kulcsszavakhoz további beállítások is tartozhatnak, amelyek maguk is kulcsszavak lehetnek, és még további opciókkal rendelkezhetnek. Az alábbi nyelvtan mindegyik elemét kiemeltük és az alábbiakban egyenként kifejtjük a részleteiket.
CSELEKVÉS BE-KI OPCIÓK SZűRÉS ÁLLAPOTTARTÓ PROTOKOLL FORRÁS_CÍM,CÉL_CÍM OBJEKTUM PORTSZÁM TCP_BEÁLLÍTÁS ÁLLAPOTTARTÓ
CSELEKVÉS = block | pass
BE-KI = in | out
OPCIÓK = log | quick | on interfész
SZűRÉS = proto érték | forrás/cél IP | port = szám | flags beállítás
PROTOKOLL = tcp/udp | udp | tcp | icmp
FORRÁS_CÍM,CÉL_CÍM = all | from objektum to objektum
OBJEKTUM = IP-cím | any
PORTSZÁM = portszám
TCP_BEÁLLÍTÁS = S
ÁLLAPOTTARTÓ = keep state
A cselekvés határozza meg, hogy mit kell tenni azokkal a csomagokkal, amelyek illeszkednek a szabály többi részére. Minden szabályhoz tartoznia kell egy cselekvésnek. A következő cselekvések közül választhatunk:
A block megadásával a szabályban szereplő szűrési feltételre illeszkedő csomagot eldobjuk.
A pass megadásával a szabályban szereplő szűrési feltételre illeszkedő csomagot átengedjük a tűzfalon.
Az összes szűrési szabály esetében kötelező egyértelműen nyilatkozunk arról, hogy a bemenő vagy a kimenő forgalomra vonatkozik. Ezért a következő kulcsszó vagy az in vagy pedig az out, de közülük egyszerre csak az egyiket szabad használni, máskülönben a szabály hibásnak minősül.
Az in jelenti, hogy a szabályt az internet felől az adott interfészen beérkező csomagokra kell alkalmazni.
Az out jelenti, hogy a szabályt az internet felé az adott interfészen kiküldött csomagokra kell alkalmazni.
Megjegyzés: Ezek az opciók csak a lentebb bemutatott sorrendben használhatók.
A log jelzi, hogy illeszkedés esetén a csomag fejlécét az ipl eszközön keresztül naplózni kell (lásd a naplózásról szóló szakaszt).
A quickjelzi, hogy illeszkedés esetén ez lesz a legutolsónak ellenőrzött szabály és így egy olyan “rövidzárat” tudunk képezni a feldolgozásban, amellyel elkerüljük a csomagra egyébként vonatkozó többi szabály illesztését. Ez az opció a korszerűsített szabályfeldolgozás kihasználásához elengedhetetlen.
Az on használatával a szűrés feltételei közé bevonhatjuk a csomaghoz tartozó hálózati interfészt. Itt az interfészek az ifconfig(8) által megjelenített formában adhatóak meg. Az opció megadásával csak az adott interfészen az adott irányba (befelé/kifelé) közlekedő csomagokra fog illeszkedni a szabály. Ez az opció a korszerűsített szabályfeldolgozás kihasználásához nélkülözhetetlen.
Amikor naplózunk egy csomagot, akkor a hozzá tartozó fejléc az IPL csomagnaplózó pszeudo eszközhöz kerül. A log kulcsszó után közvetlenül a következő minősítők szerepelhetnek (a következő sorrendben):
A body jelzi, hogy a csomag tartalmának első 128 byte-ját még jegyezzük fel a fejléc mellé.
A first minősítőt akkor érdemes használnunk, amikor a log kulcsszót a keep state opcióval együtt alkalmazzuk, mivel ilyenkor csak a szabályt kialakító csomag kerül naplózásra és nem minden olyan, ami illeszkedik az állapottartási feltételekre.
Ebben a szakaszban olyan kulcsszavak jelenhetnek meg, amelyekkel a csomagok különféle tulajdonságai alapján ítélkezhetünk azok illeszkedéséről. Itt adott egy kiinduló kulcsszó, amelyhez további kulcsszavak is tartoznak, és amelyek közül csak egyet választhatunk. Az alábbi általános tulajdonságok alapján tudjuk szűrni a csomagokat, ebben a sorrendben:
A proto egy olyan kulcsszó, amelyhez hozzá kell rendelnünk még valamelyik opcióját is. Ez az opció segít az adott protokolloknak megfelelően válogatni a csomagok között. A korszerűsített szabályfeldolgozás lehetőségeinek kihasználásához nélkülözhetetlen.
Opcióként a tcp/udp | udp | tcp | icmp, vagy bármelyik, az /etc/protocols állományban megtalálható kulcsszó felhasználható. A tcp/udp ebből a szempontból speciálisnak tekinthető, mivel hatására egyszerre illeszthetőek a szabályra a TCP és UDP csomagok, és így a protokolltól eltekintve azonos szabályok felesleges többszörözését kerülhetjük el.
Az all kulcsszó gyakorlatilag a “from any to any” (“bárhonnan bárhova”) szinonímája és nem tartozik hozzá paraméter.
A from forrás to cél felépítése: a from és to kulcsszavak az IP-címek illesztésére használhatóak. Ilyenkor a szabályokban a forrás és a cél paramétereknek is szerepelniük kell. Az any egy olyan speciális kulcsszó, amely tetszőleges IP-címre illeszkedik. Néhány példa az alkalmazására: from any to any vagy from 0.0.0.0/0 to any, from any to 0.0.0.0/0, from 0.0.0.0/0 to any vagy from any to 0.0.0.0.
Az IP-címek megadhatóak pontozott numerikus formában a hálózati maszk bitekben mért hosszával együtt, vagy akár egyetlen pontozott numerikus IP-címként.
Nincs lehetőség olyan IP-címtartományok illesztésére, amelyek nem adhatóak meg kényelmesen ponttal elválasztott számok és maszk hosszával. A net-mgmt/ipcalc port az ilyen számításokat könnyíti meg. A hálózati maszkok hosszának megállapításban segíthet az említett segédprogram (angol nyelvű) honlapja: http://jodies.de/ipcalc.
Amikor portra vonatkozó illeszkedést írunk elő, megadhatjuk a forrásra és célra, amit aztán vagy csak TCP vagy pedig csak UDP csomagokra alkalmazunk. A portok feltételeinek megfogalmazásánál használhatjuk a portok számát vagy az /etc/services állományban szereplő nevüket. Amikor a port egy from típusú objektum leírásában jelenik meg, akkor automatikusan a forrásportot jelenti, míg a to objektum leírásában pedig a célportot. A to objektumoknál a port megadása elengedhetetlen a korszerűsített szabályfeldolgozás előnyeinek kihasználásához. Példa: from any to any port = 80.
Az egyes portokat különböző műveletek segítségével, numerikusan hasonlíthatjuk össze, ahol akár porttartományt is megadhatunk.
port "=" | "!=" | "<" | ">" | "<=" | ">=" | "eq" | "ne" | "lt" | "gt" | "le" | "ge".
A porttartományok megadásához használjuk a port "<>" | "><" felírási módot.
Figyelem: A forrásra és célra vonatkozó paraméterek után szereplő másik két paraméter nélkülözhetetlen a korszerűsített szabályfeldolgozás működéséhez.
A beállítások csak a TCP forgalom szűrésénél érvényesülnek. A betűk jelölik azokat a lehetséges beállításokat, amelyek a TCP csomagok fejlécében megvizsgálhatóak.
A korszerűsített szabályfeldolgozás a flags S paraméter segítségével ismeri fel a TCP munkameneteket kezdeményező kéréseket.
A keep state jelzi, hogy a szabály paramétereinek megfelelő bármely csomag aktiválja az állapottartó szűrés használatát.
Megjegyzés: Ez a beállítás feltétlenül szükséges a korszerűsített szabályfeldolgozás megfelelő kihasználásához.
Az állapottartó szűrés a csomagok kétirányú áramlását egy létrejött kapcsolatba sorolja be. Amikor aktiválódik, az állapottartó szabály előre dinamikusan létrehozza a kétirányú kommunikációban megforduló csomagokhoz a megfelelő belső szabályokat. Olyan vizsgálatokat végez, amelyek segítségével ki tudja deríteni, hogy a csomag küldője és címzettje között fennálló kétirányú kapcsolat érvényes szabályok szerint zajlik-e. Minden olyan csomagot, amely nem illeszkedik megfelelően a kapcsolatra vonatkozó sémára, csalásnak tekintjük és automatikusan eldobjuk.
Az állapottartás révén lehetőségünk van a TCP vagy UDP kapcsolatokhoz tartozó ICMP csomagokat is átengedni a tűzfalon. Tehát ha kapunk egy 3-as típusú, 4-es kódú ICMP választ valamilyen böngészésre használt állapottartó szabályon keresztül kiküldött kérésre, akkor az automatikusan bejöhet. Amelyik csomagot az IPF egyértelműen képes besorolni az aktív kapcsolatba, még ha az eltérő protokollt is használ, beengedi.
Ami ilyenkor történik:
Az internethez csatlakozó interfészen keresztül kifelé haladó csomagokat először egy dinamikus állapottábla alapján illesztjük, és ha a csomag illeszkedik az aktív kapcsolatban következőként várt csomagra, akkor átmegy a tűzfalon és a dinamikus állapottáblában frissül a kapcsolat állapota. Az aktív munkameneten kívül csomagok pedig egyszerűen a kimenő szabályrendszer szerint kerülnek ellenőrzésre.
Hasonlóan az előzőhöz, az internethez csatlakozó interfészen keresztül befelé haladó csomagokat először egy dinamikus állapottábla alapján illesztjük, és ha a csomag illeszkedik az aktív kapcsolatban következőként várt csomagra, akkor átmegy a tűzfalon és a dinamikus állapottáblában frissül a kapcsolat állapota. Az aktív munkamenethez nem tartozó csomagok pedig egyszerűen a bejövő szabályrendszer szerint kerülnek ellenőrzésre.
Amikor egy kapcsolat befejeződik, automatikusan törlődik a dinamikus állapottáblából.
Az állapottartó csomagszűrés használatával az újonnan keletkező kapcsolatok elutasítására vagy engedélyezésére tudunk koncentrálni. Ha engedélyeztük egy új kapcsolat létrejöttét, akkor a rákövetkező összes többi csomag automatikusan átmegy a tűzfalon és minden más hamis csomag eldobódik. Ha tiltjuk az új kapcsolatot, akkor egyetlen rákövetkező csomag sem juthat át. Az állapottartó szűrés által felkínált fejlett elemzési lehetőségek képesek védelmet nyújtani a behatolók részéről alkalmazott megannyi különböző támadási módszer ellen.
A most következő szabályrendszer arra mutat példát, hogyan programozzunk le egy nagyon biztonságos inkluzív tűzfalat. Az inkluzív tűzfalak csak a szabályainak megfelelő szolgáltatásokat engedik keresztül, és alapértelmezés szerint minden mást blokkolnak. Egy hálózat gépeit védő tűzfalnak, amelyet gyakran “hálózati tűzfalnak” (network firewall) is neveznek, legalább két hálózati interfésszel kell rendelkeznie. Ezeket az interfészeket általában úgy állítják be, hogy tökéletesen megbíznak az egyik oldalban (a helyi hálózatban), a másikban (az internetben) pedig egyáltalán nem. A tűzfalat egyébként úgy is beállíthatjuk, hogy csak a tűzfalat működtető gépet védje — ezt “egyrendszeres tűzfalnak” (host based firewall) nevezik. Az ilyen típusú megoldásokat nem biztonságos hálózaton keresztül kommunikáló szervereknél alkalmaznak.
Mindegyik UNIX-típusú rendszert, köztük a FreeBSD-t is úgy alakították ki, hogy az operációs rendszeren belüli kommunikáció az lo0 interfészen és a 127.0.0.1 IP-címen keresztül történik. A tűzfal szabályai között feltétlenül szerepelniük kell olyanoknak, amelyek lehetővé teszik ezen a speciális intefészen a csomagok zavartalan mozgását.
Az internetre csatlakozó interfészhez kell rendelni a kifelé és befelé haladó forgalom hitelesítését é a hozzáférésének vezérlését. Ez lehet a felhasználói PPP által létrehozott tun0 interfész vagy a DSL-, illetve kábelmodemhez csatlakozó hálózati kártya.
Ahol egy vagy több hálózati kártya is csatlakozik több különböző helyi hálózathoz, úgy kell beállítani a hozzájuk tartozó interfészeket, hogy egymás felé és az internet felé képesek legyenek küldeni és fogadni.
A szabályokat először három nagy csoportba kell szerveznünk: először jönnek a megbízható interfészek, ezeket követik az internet felé mutató interfészek, végül internet felől jövő, nem megbízható interfészeke.
Az egyes csoportokban szereplő szabályokat úgy kell megadni, hogy közülük előre kerüljenek a leggyakrabban alkalmazottak, és a csoport utolsó szabálya blokkoljon és naplózzon minden csomagot az adott interfészen és irányban.
A kimenő forgalomat vezérlő szabályrendszer csak pass (tehát átengedő) szabályokat tartalmazhat, amelyek bentről az interneten elérhető szolgáltatásokat azonosítják egyértelműen. Az összes ilyen szabályban meg kell jelenni a quick, on, proto, port és keep state beállításoknak. A proto tcp szabályok esetében meg kell adni a flag opciót is, amivel fel tudjuk ismertetni a kapcsolatok keletkezését és ezen keresztül aktiválni az állapottartást.
A bejövő forgalmat vezérlő szabályrendszerben először az eldobni kívánt csomagokat kell megadni, aminek két eltérő oka van. Először is előfordulhat, hogy a veszélyes csomagok részleges illeszkedés miatt szabályosnak tűnnek. Az ilyen csomagokat értelemszerűen nem lenne szabad beengedni a szabályok részleges megfelelése alapján. A másodszor az eleve ismerten problémás és értelmetlen csomagokat csendben el kellene vetni, mielőtt a szakaszhoz tartozó utolsó szabály fogná meg és naplózná. Ez az utolsó szabály egyébként szükség esetén felhasználható a támadók elleni bizonyítékok begyűjtésére.
A másik, amire még oda kell figyelnünk, hogy a blokkolt csomagok esetében semmilyen válasz nem keletkezzen, egyszerűen csak tűnjenek el. Így a támadó nem fogja tudni, hogy a csomagjai vajon elérték-e a rendszerünket. Minél kevesebb információt tudnak összegyűjteni a rendszerünkről a támadók, annál több időt kell szánniuk csínytevéseik kieszelésére. A log first opciót tartalmazó szabályok csak az illeszkedésnél fogják naplózni a hozzájuk tartozó eseményt. Erre láthatunk példát az nmap OS fingerprint szabálynál. Az security/nmap segédprogramot a támadók gyakran alkalmazzák a megtámadni kívánt szerver operációs rendszerének felderítésére.
Minden log first opcióval megadott szabály illeszkedésénél a ipfstat -hio parancs meghatározódik az eddigi illeszkedések aktuális száma. Nagyobb értékek esetében következtethetünk arra, hogy a rendszerünket megtámadták (vagyis csomagokkal árasztják éppen el).
Az ismeretlen portszámok felderítésére az /etc/services állomány, esetleg a http://www.securitystats.com/tools/portsearch.php (angol nyelvű) honlap használható.
Érdemes továbbá megnézni a trójai programok által használt portokat a http://www.simovits.com/trojans/trojans.html címen (angolul).
A következő szabályrendszer egy olyan biztonságos “inkluzív” típusú tűzfal, amelyet éles rendszeren is használnak. Ezt a rendszerünkön nem használt szolgáltatásokra vonatkozó pass szabályok törlésével könnyedén a saját igényeink szerint alakíthatjuk.
Ha nem akarunk látni bizonyos üzeneteket, akkor vegyünk fel hozzájuk egy block típusú szabályt a befelé irányuló forgalomhoz tartozó szabályok közé.
A szabályokban írjuk át a dc0 interfész nevét annak a hálózati kártyának az interfészére, amelyen keresztül csatlakozunk az internethez. A felhasználói PPP esetében ez a tun0 lesz.
Tehát a következőket kell beírni az /etc/ipf.rules állományba:
################################################################# # A helyi hálózatunkon zajló forgalmat ne korlátozzuk. # Csak akkor kell, ha helyi hálózathoz is csatlakozunk. ################################################################# #pass out quick on xl0 all #pass in quick on xl0 all ################################################################# # A belső interfészen szintén ne korlátozzunk semmit. ################################################################# pass in quick on lo0 all pass out quick on lo0 all ################################################################# # Az internet felé forgalmazó interfész (kimenő kapcsolatok) # A saját hálózatunkról belülről vagy erről az átjáróról # kezdeményezett kapcsolatokat vizsgáljuk az internet felé. ################################################################# # Engedélyezzük az internet szolgáltatók névszerverének elérését, # az "xxx" helyett a névszervet IP-címét kell megadni. # Másoljuk le ezeket a sorokat, ha a szolgáltatónknak több # névszerverét is beakarjuk állítani. A címeiket az /etc/resolv.conf # állományban találjuk. pass out quick on dc0 proto tcp from any to xxx port = 53 flags S keep state pass out quick on dc0 proto udp from any to xxx port = 53 keep state # DSL vagy kábeles hálózatoknál engedélyezzük a # szolgáltatónk DHCP szerverének elérését. # Ez a szabály nem kell, ha "felhasználói PPP"-vel # kapcsolódunk az internethez, ilyenkor tehát az egész # csoport törölhető. # Használjuk az alábbi szabályt és keressük meg a naplóban az # IP-címet. Ha megtaláltuk, akkor tegyük bele a megjegyzésben # szereplő szabályba és töröljük az első szabályt. pass out log quick on dc0 proto udp from any to any port = 67 keep state #pass out quick on dc0 proto udp from any to z.z.z.z port = 67 keep state # Kifelé engedélyezzük a szabványos nem biztonságos WWW funkciókat. pass out quick on dc0 proto tcp from any to any port = 80 flags S keep state # Kifelé engedélyezzük a biztonságos WWW funkciókat TLS SSL # protokollal. pass out quick on dc0 proto tcp from any to any port = 443 flags S keep state # Kifelé engedélyezzük az e-mailek küldését és fogadását. pass out quick on dc0 proto tcp from any to any port = 110 flags S keep state pass out quick on dc0 proto tcp from any to any port = 25 flags S keep state # Kifelé engedélyezzük az idő szolgáltatást. pass out quick on dc0 proto tcp from any to any port = 37 flags S keep state # Kifelé engedélyezzük az nntp híreket. pass out quick on dc0 proto tcp from any to any port = 119 flags S keep state # Kifelé engedélyezzük az átjáróról és a helyi hálózatról a nem # biztonságos FTP használatát (passzív és akív módokban is). Ez a # funkció a működéséhez a nat szabályokat tartalmazó állományban # hivatkozott FTP proxyt használja. Amennyiben a pkg_add paranccsal # csomagokat akarunk telepíteni az átjáróra, erre a szabályra # mindenképpen szükségünk lesz. pass out quick on dc0 proto tcp from any to any port = 21 flags S keep state # Kifelé engedélyezzük az ssh/sftp/scp # (biztonságos telnet/rlogin/FTP) # szolgáltatások # elérését az SSH (secure shell) használatával. pass out quick on dc0 proto tcp from any to any port = 22 flags S keep state # Kifelé engedélyezzük a nem biztonságos telnet elérését. pass out quick on dc0 proto tcp from any to any port = 23 flags S keep state # Kifelé engedélyezzük FreeBSD CVSUp funkcióját. pass out quick on dc0 proto tcp from any to any port = 5999 flags S keep state # Kifelé engedélyezzük a pinget. pass out quick on dc0 proto icmp from any to any icmp-type 8 keep state # Kifelé engedélyezzük a helyi hálózatról érkező whois kéréseket. pass out quick on dc0 proto tcp from any to any port = 43 flags S keep state # Minden mást eldobunk és naplózzuk az első előfordulásukat. # Ez a szabály blokkol alapértelmezés szerint mindent. block out log first quick on dc0 all ################################################################# # Az internet felőli interfész (bejövő kapcsolatok) # A saját hálózatunk felé vagy erre az átjáróra # nyitott kapcsolatokat vizsgáljuk az internet felől. ################################################################# # Eldobjuk az összes olyan bejövő forgalmat, amit hivatalosan nem # lehetne továbbítani vagy fenntartott címterülethez tartozik. block in quick on dc0 from 192.168.0.0/16 to any #RFC 1918: privát IP block in quick on dc0 from 172.16.0.0/12 to any #RFC 1918: privát IP block in quick on dc0 from 10.0.0.0/8 to any #RFC 1918: privát IP block in quick on dc0 from 127.0.0.0/8 to any #helyi block in quick on dc0 from 0.0.0.0/8 to any #helyi block in quick on dc0 from 169.254.0.0/16 to any #DHCP block in quick on dc0 from 192.0.2.0/24 to any #dokumentációs célokra fenntartva block in quick on dc0 from 204.152.64.0/23 to any #Sun klaszterek összekötésére használt block in quick on dc0 from 224.0.0.0/3 to any #D és E osztályú multicast ##### Itt eldobunk egy rakás csúf dolgot ############ # Ezeket nem akarjuk a naplóban látni: # Eldobjuk a töredékcsomagokat. block in quick on dc0 all with frags # Eldobjuk a túlságosan rövid TCP csomagokat. block in quick on dc0 proto tcp all with short # Eldobjuk a forrás által közvetített (source routed) csomagokat. block in quick on dc0 all with opt lsrr block in quick on dc0 all with opt ssrr # Elutasítjuk az "OS fingerprint" kéréseket. # Naplózzuk az első előfordulást, így nálunk lesz a kíváncsiskodó # egyén IP-címe. block in log first quick on dc0 proto tcp from any to any flags FUP # Eldobunk mindent, aminek speciális beállításai vannak. block in quick on dc0 all with ipopts # Elutasítjuk a publikus pinget. block in quick on dc0 proto icmp all icmp-type 8 # Elutasítjuk az ident kéréseket. block in quick on dc0 proto tcp from any to any port = 113 # Blokkoljuk az összes Netbios szolgáltatást: 137=név, 138=datagram, # 139=session. A Netbios az MS Windows megosztását implementálja. # Blokkoljuk az MS Windows hosts2 névszerver kéréseit is a 81-es # porton. block in log first quick on dc0 proto tcp/udp from any to any port = 137 block in log first quick on dc0 proto tcp/udp from any to any port = 138 block in log first quick on dc0 proto tcp/udp from any to any port = 139 block in log first quick on dc0 proto tcp/udp from any to any port = 81 # Engedélyezzük a szolgáltatónk DHCP szerverétől érkező forgalmat. # Ebben a szabályban meg kell adnunk a szolgáltató DHCP szerverének # IP-címét, mivel itt csak a hiteles forrásból fogadunk el csomagokat. # Erre csak DSL- és kábelmodemes kapcsolat esetében van szükség, a # "felhasználói PPP" alkalmazása során szükségtelen. Ez az IP-cím # megegyezik a kimenő kapcsolatoknál megadott címmel. pass in quick on dc0 proto udp from z.z.z.z to any port = 68 keep state # Befelé engedélyezzük a szabványos WWW funkciót, mivel webszerverünk # van. pass in quick on dc0 proto tcp from any to any port = 80 flags S keep state # Befelé engedélyezzük az internetről érkező nem biztonságos telnet # kapcsolatokat. Azért nem biztonságos, mert az azonosítókat és # jelszavakat titkosítatlan formában közli az interneten keresztül. # Töröljük ezt a szabályt, ha nem használunk telnet szervert. #pass in quick on dc0 proto tcp from any to any port = 23 flags S keep state # Befelé engedélyezzük az internetről # érkező ssh/sftp/scp (biztonságos # telnet/rlogin/FTP) # kapcsolatokat az SSH (secure shell) használatával. pass in quick on dc0 proto tcp from any to any port = 22 flags S keep state # Minden mást dobjuk el és naplózzuk az első előfordulásukat. # Az első alkalom naplózásával elejét tudjuk venni a "Denial of # Service" típusú támadásoknak, amivel egyébként lehetséges lenne a # napló elárasztása. # Ez a szabály blokkol alapértelmezés szerint mindent. block in log first quick on dc0 all ################### Itt van a szabályok vége ##############################
A NAT jelentése Network Address Translation, vagyis hálózati címfordítás. A Linux esetében ezt “IP masqueradingnak”, vagyis IP maszkolásnak hívják. A hálózati címfordítás és az IP maszkolás lényegben ugyanazt takarja. Az IPF címfordításért felelős funkciójának köszönhetően képesek vagyunk a tűzfal mögött elhelyezkedő helyi hálózat számára megosztani az internet-szolgáltatól kapott publikus IP-címet.
Sokakban felmerülhet a kérdés, hogy erre vajon mi szükségünk lehet. Az internet-szolgáltatók a magánszemélyeknek általában dinamikus IP-címeket osztanak ki. A dinamikus itt arra utal, hogy a címünk minden alkalommal változik, amikor betárcsázunk a szolgáltatóhoz vagy amikor ki- és bekapcsoljuk a modemünket. Ez a dinamikus IP-cím fog azonosítani minket az interneten.
Most tegyük fel, hogy öt gépünk van otthon, viszont csak egyetlen előfizetéssel rendelkezünk. Ebben az esetben öt telefonvonalat kellene használnunk és mindegyik géphez előfizetni az internetre.
A hálózati címfordítás alkalmazásával azonban mindössze egyetlen előfizetés kell. A gépek közül négyet hozzákötünk egy switch-hez és a switch-et pedig a fennmaradó géphez, amelyen FreeBSD fut. Ez utóbbi lesz az így kialakított helyi hálózatunk átjárója. A tűzfalban működő címfordítás segítségével a helyi hálózaton található gépek IP-címeit észrevétlenül át tudjuk fordítani a hálózatunk publikus IP-címére, ahogy a csomagok elhagyják az átjárót. A beérkező csomagok esetében mindez visszafelé történik meg.
Az IP-címek közül adott egy tartomány, amit a címfordítást használó helyi hálózatok részére tartanak fenn. Az RFC 1918 szerint az alábbi IP-címtartományok használhatók a helyi hálózatban, mivel ezeken keresztül közvetlenül sosem lehet kijutni az internetre:
A címfordításra vonatkozó szabályokat az ipnat paranccsal tudjuk betölteni. Az ilyen típusú szabályokat általában az /etc/ipnat.rules állományban találjuk. A részleteket lásd az ipnat(1) man oldalán.
Amikor a címfordítás üzembe
helyezése után meg akarjuk változtatni a
címfordítás szabályait,
először a címfordítás
szabályait tartalmazó állományt
módosítsuk, majd a belső
címfordítási szabályok és a
címfordítási táblázatban
szereplő aktív bejegyzések
törléséhez futassuk le az
ipnat parancsot a -CF
beállítással.
A címfordítási szabályok újratöltését egy ehhez hasonló paranccsal tudjuk elvégezni:
# ipnat -CF -f /etc/ipnat.szabályok
A címfordításhoz tartozó statisztikákat ezzel a paranccsal tudjuk lekérdezni:
# ipnat -s
A címfordítási táblázatban pillanatnyilag szereplő összerendeléseket a következő paranccsal tudjuk listázni:
# ipnat -l
A szabályok feldolgozásával és az aktív szabályokkal/bejegyzésekkel kapcsolatos információk részletezését így engedélyezhetjük:
# ipnat -v
A címfordítási szabályok nagyon rugalmasak és rengeteg olyan funkciót meg tudunk velük valósítani, ami az üzleti és otthoni felhasználók számára egyaránt hasznos.
Itt most a szabályok felépítését csak egyszerűsítve mutatjuk be, leginkább a nem üzleti környezetek tekintetében. A szabályok komplett formai leírását az ipnat(5) man oldalán találjuk.
Egy címfordítási szabály tehát valahogy így néz ki:
map INTERFÉSZ HELYI_IP_TARTOMÁNY -> PUBLIKUS_CÍM
A szabályt a map kulcsszó kezdi.
A INTERFÉSZ helyére az internet felé mutató külső interfész nevét írjuk be.
A HELYI_IP_TARTOMÁNY lesz az, amelyben a kliensek címeznek. Ez például a 192.168.1.0/24.
A PUBLIKUS_CÍM lehet egy külső IP-cím vagy a 0/32 speciális kulcsszó, amellyel a FELÜLET-hez rendelt IP-címre hivatkozunk.
A publikus cél felé haladó csomag megérkezik a helyi hálózatról. Miután a kimenő kapcsolatokra vonatkozó szabályok átengedik, a címfordítás kapja meg a szerepet és fentről lefelé haladva nekilát alkalmazni a saját szabályait, ahol az első egyező szerint cselekszik. A címfordítás a szabályokat a csomaghoz tartozó interfészre és a forrás IP-címére illeszti. Amikor a csomag interfészének neve illeszkedik egy címfordítási szabályra, akkor ezután a csomag forrás (vagyis a helyi hálózaton belüli) IP-címéről igyekszik eldönteni, hogy a szabály nyilának bal oldalán szereplő tartományba esik-e. Ha erre is illeszkedik, akkor a forrás IP-címét átírjuk a 0/32 kulcsszó alapján felderített publikus IP-címre. A címfordító rutin ezt feljegyzi a saját belső táblázatába, így amikor a csomag visszatér az internetről, akkor képes lesz visszafordítani az eredeti belső IP-címére és feldolgozásra átadni a tűzfal szabályainak.
A címfordítás életre keltéséhez a következőket kell beállítanunk az /etc/rc.conf állományban.
Először engedélyezzük a gépünknek, hogy közvetítsen forgalmat az interfészek között:
gateway_enable="YES"
Minden alkalommal indítsuk el a címfordításért felelős IPNAT programot:
ipnat_enable="YES"
Adjuk meg az IPNAT számára a betöltendő szabályokat:
ipnat_rules="/etc/ipnat.rules"
Az olyan helyi hálózatokban, ahol rengeteg PC található vagy több alhálózatot is tartalmaz, az összes privát IP-cím egyetlen publikus IP-címbe tömörítése igen komoly problémává tud dagadni és az azonos portok gyakori használata a helyi hálózatra kötött számítógépek között ütközéseket okoz. Két módon tudunk megoldást nyújtani erre a problémára.
Egy normális címfordítási szabály valahogy így nézne ki:
map dc0 192.168.1.0/24 -> 0/32
A fenti szabályban a csomag forrásportját az IPNAT változatlanul a feldolgozás után hagyja. Ha ehhez még hozzátesszük a portmap kulcsszót, akkor ezzel utasítani tudjuk az IPNAT-ot, hogy csak az adott tartományban képezze le a forrásportokat. Például a következő szabály hatására az IPNAT a forrásportokat egy adott tartományon belül fogja módosítani:
map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp 20000:60000
Ha viszont még inkább meg akarjuk könnyíteni a dolgunkat, akkor itt egyszerűen csak adjuk meg az auto kulcsszót, amellyel az IPNAT önmagától megállapítja, hogy milyen portokat tud használni:
map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto
Minden nagyobb helyi hálózat esetében elérkezünk ahhoz a ponthoz, ahol már egyetlen publikus cím nem elég. Ha több publikus IP-címmel is rendelkezünk, akkor ezekből a címekből egy “közös készletet” hozhatunk létre, amiből majd az IPNAT válogathat miközben a csomagok címeit átírja kifelé menetben.
Például ahelyett, hogy a csomagokat egyetlen publikus IP-címre képeznénk le, ahogy itt tesszük:
map dc0 192.168.1.0/24 -> 204.134.75.1
A hálózati maszk segítségével meg tudjuk adni IP-címek egy tartományát is:
map dc0 192.168.1.0/24 -> 204.134.75.0/255.255.255.0
CIDR-jelöléssel:
map dc0 192.168.1.0/24 -> 204.134.75.0/24
Gyakran előfordul, hogy van webszerverünk, levelező szerverünk, adatbázis szerverünk és névszerverünk, melyek a helyi hálózat különböző gépein futnak. Ebben az esetben a szerverekhez tartozó forgalmat is fordítanunk kell, illetve valamilyen módon a bejövő forgalmat is át kell irányítanunk a helyi hálózat megfelelő gépeihez. Az IPNAT ezt a gondot a hálózati címfordítás átirányítást támogató funkcióival szünteti meg. Tegyük fel, hogy a 10.0.10.25 belső címen van egy webszerverünk, amelyhez a 20.20.20.5 publikus IP tartozik. Ilyenkor a következő szabályt adjuk meg:
rdr dc0 20.20.20.5/32 port 80 -> 10.0.10.25 port 80
vagy:
rdr dc0 0.0.0.0/0 port 80 -> 10.0.10.25 port 80
Így tudjuk beállítani a 10.0.10.33 címmel rendelkező névszervert a kintről érkező névfeloldási kérések fogadására:
rdr dc0 20.20.20.5/32 port 53 -> 10.0.10.33 port 53 udp
Az FTP egy olyan őskövület, amely még az internet egy régi korszakából maradt fenn, amikor az egyetemek között még bérelt vonal létezett és az FTP szolgált a kutatók közt az állományok megosztására. Ez még abban az időben történt, amikor a biztonság egyáltalán nem volt lényeges szempont. Az évek előrehaladtával az FTP protokoll beleivódott a feltörekvő internet gerincébe és a titkosítatlanul küldött azonosítóival és jelszavaival továbbra is ugyanolyan védtelen maradt. Az FTP két változatban, aktív és passzív módban képes működni. Az eltérés kettejük között az adatcsatorna megállapításában van. A passzív mód sokkal biztonságosabb, mivel ilyenkor az adatcsatornát az FTP kapcsolatot kezdeményező állítja be. Az FTP különböző módjainak magyarázatát és a köztük levő különbséget a http://www.slacksite.com/other/ftp.html címen ismerhetjük meg részleteiben (angolul).
Az IPNAT egy speciális beépített FTP proxyval rendelkezik, amelyre a hálózati címfordítás leképezései között hivatkozhatunk. Képes figyelni az összes aktív vagy passzív FTP kapcsolathoz tartozó kimenő kérést és ezekhez dinamikusan létrehozni olyan ideiglenes szűrési szabályokat, amelyek valóban csak az adatcsatornához felhasznált portokat tartalmazzák. Ezzel ki tudjuk küszöbölni az FTP azon káros hatását a tűzfalra nézve, hogy egyszerre túlságosan sok magasabb tartománybeli port legyen nyitva.
Ez a szabály a belső hálózat összes FTP forgalmát lekezeli:
map dc0 10.0.10.0/29 -> 0/32 proxy port 21 ftp/tcp
Ez a szabály pedig az átjáróról érkező FTP forgalommal bírkózik meg:
map dc0 0.0.0.0/0 -> 0/32 proxy port 21 ftp/tcp
Ez a szabály kezeli a belső hálózatról érkező összes nem FTP típusú forgalmat:
map dc0 10.0.10.0/29 -> 0/32
Az FTP leképzésére vonatkozó szabály a szokásos leképzési szabály elé kerül. Az összes csomag fentről haladva az első illeszkedő szabály alapján kerül feldolgozásra. Először az interfész nevét vizsgáljuk, majd a belső hálózatbeli forrás IP-t, végül azt, hogy a csomag egy FTP kapcsolat része. Ha minden paraméterében megfelel, akkor az FTP proxy készít egy ideiglenes szűrési szabályt hozzá, amellyel az FTP kapcsolathoz tartozó csomagok mind a két irányba képesek lesznek vándorolni, természetesen a címfordítással együtt. Az összes többi bentről érkező csomag átlép ezen a szabályon és megáll a harmadiknál, ahol az interfésznek és forrás IP-nek megfelelően átfordítjuk a címét.
Az FTP esetében csak egyetlen szűrési szabályra van szükségünk a hálózati címfordításba épített FTP proxy használatához.
FTP proxy nélkül az alábbi három szabály kellene:
# Kifelé engedélyezzük a belső gépek FTP elérést az internet irányába, # aktív és passzív módokban. pass out quick on rl0 proto tcp from any to any port = 21 flags S keep state # Kifelé engedélyezzük a passzív módhoz tartozó magasabb tartománybeli # adatcsatornákat. pass out quick on rl0 proto tcp from any to any port > 1024 flags S keep state # Aktív módban beengedjük az FTP szervertől érkező adatcsatornát. pass in quick on rl0 proto tcp from any to any port = 20 flags S keep state
Az IPFIREWALL (IPFW) a FreeBSD által támogatott tűzfalazó alkalmazás, melyet a FreeBSD Projektben résztvevő önkéntesek fejlesztettek ki és tartanak karban. Régi típusú, állapottartás nélküli szabályokat használ, és az itt használatos szabályírási technikát “egyszerű állapottartó megoldásnak” nevezzük.
Az IPFW szabvány FreeBSD-ben levő, mintaként szolgáló szabályrendszere (ez az /etc/rc.firewall és /etc/rc.firewall6 állományokban található meg) annyira egyszerű, hogy komolyabb módosítások nélkül nem ajánlatos használni. Ez a példa nem tartalmaz állapottartó szűrést, ami viszont a legtöbb esetben kívánatos lenne, ezért ezt a szakaszt nem erre alapozzuk.
Az IPFW állapottartás nélküli szabályainak felépítésében olyan technikailag kifinomult leválogatási képességek bújnak meg, amelyek jócskán meghaladják az átlagos tűzfalépítők tudását. Az IPFW elsősorban olyan szakemberek vagy szakmailag előrehaladott felhasználók számára készült, akiknek speciális csomagszűrési igényeik vannak. A különböző protokollok használatának és a hozzájuk tartozó fejlécinformációk mindenre kiterjedő ismerete szinte nélkülözhetetlen az IPFW valódi erejének kihasználásához. Ez a szint azonban túlmutat a kézikönyv ezen szakaszának keretein.
Az IPFW hét komponensből épül fel, melyek közül az elsődleges a rendszermag tűzfalazásért felelős szabályfeldolgozó és a hozzá tartozó csomagnyilvántartás, majd ezt követi a naplózás, a hálózati címfordítást aktiváló divert szabály, valamint a komolyabb célok megvalósítására alkalmas lehetőségek: a forgalom korlátozásáért felelős dummynet, a továbbküldésre alkalmas fwd rule szabály, a hálózati hidak támogatása, illetve az ipstealth. Az IPFW egyaránt használható IPv4 és IPv6 esetén.
Az IPFW az alap FreeBSD telepítésben külön, futás időben betölthető modulként érhető el. Ha az rc.conf állományban megadjuk a firewall_enable="YES" beállítást, akkor a rendszer indulásakor ezt a modult dinamikusan betölti. Az IPFW-t csak akkor kell a FreeBSD rendszermagjába beépítenünk, ha szükségünk van a címfordítási funkciójára is.
Ha tehát az rc.conf állományban megadtuk a firewall_enable="YES" sort és újraindítottuk a számítógépünket, akkor a következő fehérrel kiemelt üzenet fog megjelenni a rendszerindítás során:
ipfw2 initialized, divert disabled, rule-based forwarding disabled, default to deny, logging disabled
A “logging disabled” üzenetből kiderül, hogy a modul nem végez naplózást. A naplózást és a hozzá tartozó részletesség szintjét úgy tudjuk beállítani, ha az /etc/sysctl.conf állományba felvesszük a következő sorokat, amivel a következő indításkor már működni fog:
net.inet.ip.fw.verbose=1 net.inet.ip.fw.verbose_limit=5
Ha nem akarjuk kihasználni az IPFW által felkínált címfordítási lehetőségeket, akkor egyáltalán nem szükséges a FreeBSD rendszermagjába belefordítani a támogatását. Ezért az alábbiakat csak kiegészítő információként tüntettük fel.
options IPFIREWALL
Ez a beállítás engedélyezi az IPFW használatát a rendszermag részeként.
options IPFIREWALL_VERBOSE
Ezzel és a log kulcsszóval tudjuk az IPFW szabályain keresztülhaladó csomagokat naplózni.
options IPFIREWALL_VERBOSE_LIMIT=5
Ez az érték korlátozza a syslogd(8) segítségével naplózott azonos bejegyzések maximális számát. Ezt a beállítást olyan veszélyes környezetekben érdemes használnunk, ahol naplózni akarunk. Segítségével meg tudjuk akadályozni, hogy a rendszernapló elárasztásával megakasszák a rendszerünket.
options IPFIREWALL_DEFAULT_TO_ACCEPT
Ezen beállítás hatására a tűzfal alapértelmezés szerint mindent átenged, ami általában akkor jöhet jól, amikor először beállítjuk a tűzfalat.
options IPDIVERT
Ezzel a beállítással engedélyezzük a címfordítás használatát.
Megjegyzés: Ha nem adjuk meg az IPFIREWALL_DEFAULT_TO_ACCEPT beállítást, vagy ha nem engedélyezzük a bejövő csomagokat, akkor a gépünkre semmilyen csomag nem lesz képes bejutni, illetve onnan kijutni.
Így tudjuk engedélyezni a tűzfalat:
firewall_enable="YES"
A FreeBSD-hez mellékelt alapértelmezett tűzfaltípusok közül az /etc/rc.firewall állomány átolvasásával tudunk választani, és megadni az alábbi helyett:
firewall_type="open"
A következő értékek állnak rendelkezésünkre:
open — átengedi az összes forgalmat
client — csak ezt a gépet védi
simple — az egész hálózatot védi
closed — a helyi interfész kivételével minden IP alapú forgalmat tilt
UNKNOWN — tiltja a tűzfal szabályainak betöltését
állománynév — a tűzfal szabályait tartalmazó állomány abszolút elérési útvonala
Két különböző módon lehet betölteni a saját ipfw szabályainkat. Az egyik közülük, ha a firewall_type változóban megadjuk a tűzfal szabályait tartalmazó állomány abszolút elérési útvonalát, az ipfw(8) parancssori beállításai nélkül. Az alábbi példában egy olyan egyszerű szabályrendszert láthatunk, amely blokkolja az összes bejövő és kimenő forgalmat:
add deny in add deny out
Másrészről az firewall_script változóban is megadhatjuk azt a szkriptet, amelyben a rendszerindítás során meghívjuk ipfw parancsot. Az iménti szabályrendszert az alábbi szkripttel tudjuk kiváltani:
#!/bin/sh ipfw -q flush ipfw add deny in ipfw add deny out
Megjegyzés: Ha a firewall_type változó client vagy simple értékét használjuk, akkor az /etc/rc.firewall állományban található alapértelmezett szabályokat érdemes átvizsgálnunk, hogy kellően illeszkednek-e az adott géphez. Hozzátennénk, hogy a fejezetben szereplő példák azt feltételezik, hogy a firewall_script értéke az /etc/ipfw.rules állomány.
A naplózás így engedélyezhető:
firewall_logging="YES"
Figyelem: A
firewall_logging
változó egyedül csak annyit tesz, hogy beállítja anet.inet.ip.fw.verbose
sysctl változónak az 1 értéket (lásd 30.6.1 Szakasz). A napló korlátozására nincs külön változó az rc.conf állományon belül, de az /etc/sysctl.conf állomány segítségével és manuálisan be tudjuk állítani a hozzá tartozó változót:net.inet.ip.fw.verbose_limit=5
Amennyiben a gépünk átjáróként viselkedik, tehát a natd(8) segítségével címfordítást végez, a 31.9 Szakaszban olvashatunk utána, hogy ehhez az /etc/rc.conf állományban milyen beállításokat kell megadnunk.
Normál esetben az ipfw parancs használatos arra, hogy a tűzfal működése közben az aktív belső szabályai közé vegyünk fel vagy töröljünk közülük manuálisan bejegyzéseket. Ennek a módszernek az egyedüli hátránya, hogy az így végrehajtott módosítások el fognak veszni a rendszer leállításával. Itt inkább azt a megoldást javasoljuk, hogy az összes szabályt tegyük bele egy állományba és a rendszerindítás során ezt töltsük be, majd ha változtatni akarunk a tűzfalon, akkor ezt az állományt módosítsuk és a régiek törlésével töltsük be újra az egész szabályrendszert.
Az ipfw parancs mellesleg remekül használható a jelenleg futó tűzfalszabályok megjelenítésére a konzolon. Az IPFW nyilvántartásában az egyes szabályokhoz dinamikusan jönnek létre számlálók, amelyek a rá illeszkedő csomagokat számolják. A tűzfal tesztelése folyamán a szabályok és hozzá tartozó számlálók lekérdezése a megfelelő működés ellenőrzésének egyik lehetséges módja.
A szabályokat így tudjuk egymás után felsoroltatni:
# ipfw list
A szabályokat így tudjuk az utolsó illeszkedésük idejével együtt megjeleníteni:
# ipfw -t list
A következő példában a nyilvántartási információkat kérdezzük le, ekkor a szabályok mellett az illeszkedő csomagok száma is láthatóvá válik. Az első sorban a szabály száma szerepel, majd ezt követi rendre az illeszkedő kimenő és bejövő csomagok mennyisége, valamint végül maga a szabály.
# ipfw -a list
A statikus szabályok mellett a dinamikusakat így lehet kilistázni:
# ipfw -d list
A lejárt dinamikus szabályokat is meg tudjuk nézni:
# ipfw -d -e list
A számlálók nullázása:
# ipfw zero
Csak a SZÁM sorszámú szabályhoz tartozó számlálók nullázása:
# ipfw zero SZÁM
Az IPFW esetében a szabályrendszer olyan szabályokból áll, amelyek a csomagokról tartalmuk alapján eldöntik, hogy át kell engedni vagy vissza kell tartani. A gépek közt két irányban áramló csomagok egy munkamenet alapú társalgást képeznek. A tűzfalhoz tartozó szabályrendszer egyaránt feldolgozza a internetről a hálózatunk felé igyekvő csomagokat, illetve a hálózatunk ezekre adott válaszait. Az egyes TCP/IP szolgáltatásokat (mint például telnet, www, levelezés stb.) a hozzájuk tartozó protokol és szabványos (fogadó) portszám írja le. Ezekre a forrásról általában valamilyen nem szabványos (magasabb értékű) portról érkeznek csomagok. Ekkor a kommunikáció összes paramétere (vagyis a portok és címek) bármelyike alapján definiálhatunk blokkolást vagy továbbengedést leíró szabályokat.
Amikor egy csomag eléri a tűzfalat, a szabályrendszer első szabályával kerül összehasonlításra és amíg nem illeszkedik valamelyikre, addig lefut rá a többi szabály is fentről lefelé egyesével, a sorszámuknak megfelelő növekvő sorrendben. Ha a csomag megfelel valamelyik szabály leválogatási paramétereinek, akkor a benne megnevezett cselekvés zajlik le, és számára a feldolgozás befejeződik. Ezt a viselkedést neveztük “az első illeszkedés nyer” típusú keresésnek. Amennyiben a csomag egyetlen szabályra sem illeszkedik, akkor az IPFW 65535-ös sorszámú állandó szabálya fogja elcsípni, amely feladata szerint eldobja az összes hozzá beérkező csomagot anélkül, hogy bármit is válaszolna a csomag feladójának.
Megjegyzés: A keresés a count, skipto és tee szabályok után még folytatódik.
Az itt szereplő utasítások különböző állapottartásra vonatkozó opciókat, például a keep state, limit, in, out és via kulcsszavakat tartalmazó szabályokon alapulnak. Lényegében ezt tekinthetjük az inkluzív típusú tűzfalak kiindulási alapjaként.
Figyelem: A tűzfal szabályainak beállítása során nem árt óvatosnak lennünk, mert figyelmetlenségünk révén könnyen kizárathatjuk magunkat a gépünkről.
Az itt bemutatásra kerülő szabályok felépítését csak olyan mértékig részletezzük, ami elengedő a szabványos inkluzív típusú tűzfalak kialakításához. A szabályok felépítésének pontos leírását az ipfw(8) man oldalán találhatjuk meg.
A szabályok kulcsszavakat tartalmaznak. Ezeket a kulcsszavakat soronként egy előre rögzített sorrendben kell szerepeltetni. A kulcsszavakat a szövegben kiemeltük. Bizonyos kulcsszavakhoz további opciókhoz is tartozhatnak, amelyek gyakran maguk is kulcsszavak és szintén további opciókat tartalmazhatnak.
A # egy megjegyzés kezdetét jelzi, mely egyaránt megjelenhet egy külön sorban, vagy egy szabályt tartalmazó sor végén. Az üres sorok nem vesznek részt a feldolgozásban.
PARANCS SZABÁLY_SZÁM CSELEKVÉS NAPLÓZÁS SZűRÉS ÁLLAPOTTARTÁS
Minden új szabály előttt az
add
(mint hozzáadás)
parancsnak kell szerepelni, amellyel a belső
táblázatba tudjuk felvenni.
A szabályhoz az alábbi cselekvések valamelyike kapcsolható, amely akkor hajtódik végre, amikor a csomag megfelel a hozzá tartozó szűrési feltételeknek.
allow | accept | pass |
permit
A fentiek közül mindegyik ugyanazt jelenti, vagyis hatásukra az illeszkedő csomag kilép a tűzfalból. Ez a szabály megállítja a keresést.
check-state
A csomagot a dinamikus szabályokat tároló táblázattal veti össze. Ha itt egyezést talál, akkor végrehajtja az egyező dinamikus szabályhoz tartozó cselekvést, minden más esetben továbblép a következő szabályra. Ennek a szabálynak nincs illeszthető paramétere. Ha a szabályrendszerben nem szerepel ilyen, akkor a dinamikus szabályok vizsgálatát az első keep-state vagy limit használatánál vonja be a rendszer.
deny | drop
Mind a két szó ugyanarra utal, vagyis a szabályra illeszkedő csomagokat el kell dobni. Ebben az esetben a keresés befejeződik.
log
vagy
logamount
Amikor egy csomag egy log
kulcsszót tartalmazó szabályra
illeszkedik, akkor a rendszernaplóban egy üzenet
keletkezik a security (biztonság)
funkción keresztül. A naplóba
ténylegesen csak akkor kerül bele az
üzenet, ha az adott szabály még nem
haladta meg a hozzá tartozó
logamount paraméter
értékét. Ha ezt nem adtuk meg, akkor
az itt érvényes korlát a
net.inet.ip.fw.verbose_limit
sysctl
változóból fog származni. A
nulla érték mind a két esetben
megszünteti ezt a korlátozást. Ha
elértük a korlátot, akkor a
naplózást úgy tudjuk újra
engedélyezni, ha töröljük a
naplózáshoz tartozó
számláló értékét,
lásd az ipfw reset log
parancsot.
Megjegyzés: A naplózás mindig az összes paraméter illeszkedésének ellenőrzése után történik, de még a cselekvés (accept, deny) elvégzése előtt. Teljesen rajtunk múlik, hogyan milyen szabályokat naplózunk.
Ebben a szakaszban azok a kulcsszavak találhatóak, amelyek segítségével a csomagok különböző tulajdonságait tudjuk megvizsgálni és eldönteni, hogy illeszkedik-e a szabályra vagy sem. A következő általános tulajdonságokat tudjuk megvizsgálni, ebben a kötött sorrendben:
udp | tcp | icmp
Bármilyen más olyan protokoll is megadható, amely megtalálható az /etc/protocols állományban. Ezzel adjuk a csomaghoz tartozó protokollt. Használata kötelező.
from forrás
to cél
Mind a from és to kulcsszavak IP-címek illesztésére alkalmasak. A szabályoknak tartalmazniuk kell a forrás ÉS a cél paramétereket is. Az any egy olyan kulcsszó, amely tetszőleges IP-címre illeszkedik. A me pedig egy olyan speciális kulcsszó, amely a tűzfalat működtető FreeBSD-s gép (tehát ez a gép) adott interfészhez tartozó IP-címét jelöli, mint ahogy a from me to any, from any to me, from 0.0.0.0/0 to any, from any to 0.0.0.0/0, from 0.0.0.0 to any, from any to 0.0.0.0 vagy from me to 0.0.0.0 paraméterekben. Az IP-címek numerikus pontozott formában a hálózati maszk hosszával együtt (CIDR-jelöléssel), vagy egyszerűen csak pontozott formában adhatóak meg. A hálózati maszkok megállapításában a net-mgmt/ipcalc port lehet segítségünkre. Erről bővebb információkat a segédprogram honlapján, a http://jodies.de/ipcalc címen találhatunk (angolul).
port
szám
A portszámokat is ismerő protokollok esetében (mint például a TCP vagy UDP) adhatjuk meg. Fontos, hogy itt annak a szolgáltatásnak a portszámát adjuk meg, amelyre a szabály vonatkozik. A szolgáltatás (az /etc/services állományból származó) nevét is megadhatjuk a port száma helyett.
in | out
A beérkező valamint a kimenő csomagokat adhatjuk meg ezen a módon. Itt az in és out kulcsszavak, melyeket kötelező megadni a szabály részeként.
via
interfész
Név szerint az adott interfészen keresztül haladó csomagokat tudjuk szűrni. A via kulcsszó hatására a használt interfész is számítani fog a csomag feldolgozása során.
setup
Ez a kulcsszó a TCP csomagok esetében a kapcsolatok felépítésére vonatkozó kéréseket segít beazonosítani.
keep-state
Ez egy kötelező kulcsszó. Feldolgozásakor a tűzfal létrehoz dinamikus szabályt, amely alapértelmezés szerint az egyazon protokollt használó forrás és cél IP/port párosok közti kétirányú forgalomra fog automatikusan illeszkedni.
limit
{forráscím |
forrásport |
célcím |
célport}
A tűzfal csak N darab, a szabálynak megfelelő azonos paraméterű kapcsolatot fog átengedi. Itt egy vagy több forrás- és célcím valamint forrás- és célport adható meg. A limit és a keep-state egy szabályon belül nem használható. A limit ugyanazokat az állapottartó funkciókat képviseli, mint a keep-state, csak a saját kiegészítéseivel megtoldva.
Az állapottartó szűrés a kétirányú csomagváltásokat egy létrejött kapcsolatba sorolja. Olyan vizsgálatokat végez, amivel képes megállapítani, hogy a csomag küldője és címzettje között kialakult kommunikáció követ-e valamilyen kétirányú csomagküldésre érvényes folyamatot. Az így felállított sablontól eltérő összes csomag hamisnak minősül és automatikusan eldobásra kerül.
A check-state segítségével ellenőrizhetjük, hogy az adott csomag a IPFW szerint megfelel-e valamelyik dinamikusan leképzett szabálynak. Ha egyezik valamelyikőjükkel, akkor a csomag a tűzfalból kilépve folytatja útját és a kommunikációban soron következő csomag számára létrejön egy másik dinamikus szabály. Ha nincs egyezés, akkor csomag feldolgozása a szabályrendszer következő szabályánál folytatódik.
A dinamikus szabályokat kezelő rutin sebezhető, mivel ha egyszerre nagy mennyiségű SYN csomagot küldünk, akkor olyan sok dinamikus bejegyzés keletkezik, hogy egyszerűen kifogyunk a rendelkezésre álló erőforrásokból. A FreeBSD fejlesztői azonban az ilyen természetű támadások kivédésére is felkészítették, és kialakították belőle a limit opciót. Alkalmazásával le tudjuk korlátozni az egyszerre folyó párhuzamos kapcsolatok számát a forrás vagy a cél a limit paraméternél megadott mezőinek és a csomag IP-címe alapján. Így az adott szabályhoz és IP-címhez csak előre rögzített mennyiségű nyitott állapotú dinamikus szabály létezhet egy időben. Ha ezt a korlátot átlépjük, a csomag eldobódik.
A naplózás előnyei nyilvánvalóak. Ha engedélyezzük, aktiválása után képesek leszünk olyan információknak utánanézni, mint például milyen csomagokat dobtunk el, honnan érkeztek, hova tartottak. Ez egy komoly fegyverünk lehet a potenciális támadókkal szemben.
Azonban hiába engedélyezzünk önmagában a naplózást, attól az IPFW még saját magától nem fog naplózást előíró szabályokat gyártani. A tűzfal karbantartóinak maguknak kell eldöntenie, hogy a szabályrendszerben mely szabályokhoz tartozzon naplózás, nekik kell felvenni ezekhez a log kulcsszót. Általában csak az eldobással járó deny típusú szabályokat vagy a bejövő ICMP pingeket szokták naplózni. Gyakran úgy oldják meg ezt, hogy a szabályrendszer utolsó szabályaként lemásolják az ipfw alapértelmezett “mindent eldobunk” szabályát és a naplózást adják meg benne. Ezen a módon fény derül azokra a csomagokra, amelyek a szabályrendszerben semmire sem illeszkedtek.
A naplózás azonban egy kétélű fegyver, mivel ha nem vagyunk elég körültekintőek, akkor a sok naplóinformáció között könnyen el tudunk veszni és a lemezünk is gyorsan betelhet a mindent elfoglaló naplóktól. Mellesleg a naplók megdagasztását célzó DoS típusú támadás a rendszerek lebénítására alkalmazott egyik legősibb technika. Ezek az üzenetek nem csak a rendszernaplóba kerülnek bele, hanem az elsődleges konzol képernyőjére is kiíródnak, ami egy idő után idegesítő tud lenni.
A rendszermag IPFIREWALL_VERBOSE_LIMIT=5 beállításával azonban képesek vagyunk korlátozni azokat a rendszernapló felé küldött egymás után következő üzeneteket, amelyek ugyanarra a szabályra vonatkoznak. Amikor ezt a beállítást megadjuk a rendszermag fordításánál, akkor az egyes szabályokhoz az általa meghatározott értéken felül nem jön létre több hasonló üzenet. Hiszen semmi sem derül ki 200 teljesen azonos naplóüzenetből. Például, ha az egyes szabályokhoz legfeljebb öt egymást követő üzenetet engedélyezünk, akkor a többi fennmaradó azonos üzenetet összeszámolja a rendszer és a következő módon közvetíti a rendszernaplózó szolgáltatás felé:
last message repeated 45 times
Ami magyarul így hangzik:
az utolsó üzenet 45 alkalommal ismétlődött meg
Az összes csomagokkal kapcsolatos naplózás alapértelmezés szerint a /var/log/security állományba kerül, amelyet az /etc/syslog.conf állomány definiál.
A rutinosabb IPFW felhasználók a szabályokat egy állományban programozzák le olyan stílusban, hogy szkriptként is futtatható legyen. Ennek az egyik legnagyobb előnye, hogy a tűzfal szabályai így egyszerre cserélhetőek a rendszer újraindítása nélkül. Ez a módszer nagyon kényelmes az új szabályok kipróbálásánál, mivel tetszőleges alkalommal végrehajthatjuk. Mivel ez egy szkript, ki tudjuk használni az itt megszokott szimbolikus helyettesítés által felkínált lehetőségeket, és ezzel a gyakran használt értékeket is egyszerre több szabályban tudjuk helyettesíteni. Erre a következőkben fogunk egy konkrét példát látni.
A szkript felépítése kompatibilis a sh(1), csh(1) és tcsh(1) parancsértelmezőkkel. A szimbolikus mezők helyettesítését a $ vagyis dollárjel vezeti be. Maguk a szimbolikus mezők nem tartalmazzák a $ előtagot. A szimbolikus mezők értékeit "kettős idézőjelek" között kell megadni.
A szabályok összeírását kezdjük el így:
####### itt kezdődik az ipfw szabályait tartalmazó szkript ###### # ipfw -q -f flush # töröljük az összes aktuális szabályt # Set defaults oif="tun0" # a kimenő interfész odns="192.0.2.11" # az internet szolgáltató névszerverének IP-címe cmd="ipfw -q add " # a szabályok hozzáadásához szükséges elemek ks="keep-state" # csupán a lustaság miatt $cmd 00500 check-state $cmd 00502 deny all from any to any frag $cmd 00501 deny tcp from any to any established $cmd 00600 allow tcp from any to any 80 out via $oif setup $ks $cmd 00610 allow tcp from any to $odns 53 out via $oif setup $ks $cmd 00611 allow udp from any to $odns 53 out via $oif $ks #### itt fejeződik be az ipfw szabályait tartalmazó szkript ######
Ezzel készen is vagyunk. Most ne törődjünk a példában szereplő szabályokkal, itt most a szimbolikus helyettesítés használatát igyekeztük bemutatni.
Ha az iménti példát az /etc/ipfw.rules állományba mentettük el, akkor az alábbi parancs kiadásával tudjuk újratölteni a benne szereplő szabályokat:
# sh /etc/ipfw.rules
Az /etc/ipfw.rules állományt egyébként tetszőleges néven hívhatjuk és bárhová rakhatjuk.
Ugyanez természetesen elérhető a következő parancsok egymás utáni begépelésével is:
# ipfw -q -f flush # ipfw -q add check-state # ipfw -q add deny all from any to any frag # ipfw -q add deny tcp from any to any established # ipfw -q add allow tcp from any to any 80 out via tun0 setup keep-state # ipfw -q add allow tcp from any to 192.0.2.11 53 out via tun0 setup keep-state # ipfw -q add 00611 allow udp from any to 192.0.2.11 53 out via tun0 keep-state
A most következő címfordítás nélküli szabályrendszer arra mutat példát, hogyan valósítsunk meg egy biztonságos “inkluzív” tűzfalat. Az inkluzív tűzfalak csak a szabályainak megfelelő szolgáltatásokat engedik át, minden mást alapértelmezés szerint tiltanak. A komplett hálózati szegmensek védelmére összeállított tűzfalaknak legalább két interfészük van, amelyek mindegyikéhez tartoznia kell szabályoknak a megfelelő működéshez.
Az UNIX mintájú operációs rendszer, köztül a FreeBSD is olyan, hogy a rendszerben belüli kommunikációt a lo0 nevű interfészen és a 127.0.0.1 IP-címen bonyolítja le. A tűzfalban mindenképpen szerepelniük kell olyan szabályoknak, amelyek gondoskodnak ezen speciális belső csomagok zavartalan közlekedéséről.
Az internet felé csatlakozó interfész lesz az, amelyen keresztül a kifelé menő kéréseket hitelesítjük és vezéreljük az internet elérését, valamint ahol szűrjük az internet felől érkező kéréseket. Ez lehet a PPP esetében a tun0 eszköz, vagy a DSL-, illetve kábelmodemhez csatlakozó hálózati kártya.
Abban az esetben, amikor egy vagy több hálózati kártyával csatlakozunk a tűzfal mögött található belső helyi hálózatra, szintén gondoskodnunk kell a helyi hálózaton belül mozgó csomagok akadálymentes továbbításáról.
A szabályokat először három nagyobb osztályba kell sorolnunk: az összes szabadon forgalmazó interfész, a publikus kimenő és a publikus bejövő interfész csoportjába.
A publikus interfészekhez tartozó csoportokban úgy kell rendeznünk a szabályokat, hogy előre kerüljenek a gyakrabban használtak és hátra a kevésbé használtak, valamint a csoportok utolsó szabálya blokkoljon és naplózzon minden csomagot az adott interfészen és irányban.
A következő szabályrendszerben szereplő, a kimenő kapcsolatokat tartalmazó csoport csak olyan allow típusú szabályokat tartalmaz, amelyek szűrési feltételei egyértelműen azonosítják az interneten elérhető szolgáltatásokat. Az összes szabályban megjelennek a proto, port, in/out, via és keep state opciók. A proto tcp szabályokban emellett szerepel még egy setup opció is, amellyel a kapcsolatokat kezdeményező csomagokat tudjuk azonosítani és felvenni az állapottartásért felelős dinamikus szabályok közé.
A bejövő forgalmat vezérlő szabályrendszerben először az eldobni kívánt csomagokat kell megadni, aminek két eltérő oka van. Először is előfordulhat, hogy a veszélyes csomagok részleges illeszkedés miatt szabályosnak tűnnek. Az ilyen csomagokat értelemszerűen nem lenne szabad beengedni a szabályok részleges megfelelése alapján. A másodszor az eleve ismerten problémás és értelmetlen csomagokat csendben el kellene vetni, mielőtt a szakaszhoz tartozó utolsó szabály fogná meg és naplózná. Ez az utolsó szabály egyébként szükség esetén felhasználható a támadók elleni bizonyítékok begyűjtésére.
A másik, amire még oda kell figyelnünk, hogy a blokkolt csomagok esetében semmilyen válasz nem keletkezzen, egyszerűen csak tűnjenek el. Így a támadó nem fogja tudni, hogy a csomagjai vajon elérték-e a rendszerünket. Minél kevesebb információt tudnak összegyűjteni a rendszerünkről a támadók, annál biztonságosabbnak tekinthető. Amikor ismeretlen portokra érkező csomagokat naplózunk, érdemes az /etc/services/ állományban vagy http://www.securitystats.com/tools/portsearch.php címen (angolul) utánanézni a porthoz tartozó szolgáltatásnak. A különböző trójai programok által portok számai ezen a linken érhetőek el (angolul): http://www.simovits.com/trojans/trojans.html.
A most következő, címfordítást nem tartalmazó szabályrendszer teljesen inkluzív típusú. Éles rendszereken is nyugodtan alkalmazhatjuk. Egyszerűen csak annyit kell tennünk, hogy megjegyzésbe tesszük az olyan szolgáltatásokra vonatkozó szabályokat, amelyeket nem akarunk engedélyezni. Amikor pedig olyan üzenetek jelennek meg a naplóban, amelyeket nem akarunk tovább látni, a bejövő kapcsolatokhoz vegyünk fel egy deny típusú szabályt hozzájuk. Minden szabályban cseréljük ki a dc0 interfészt arra a hálózati kártyára, amely közvetlenül csatlakoztatja rendszerünket az internethez. A felhasználói PPP esetében ez a tun0.
A szabályok használatában felfedezhetünk egyfajta rendszerszerűséget:
Mindegyik sorban, ahol az internet felé nyitunk meg egy kapcsolatot, a keep-state opciót használjuk.
Az internetről az összes hitelesített szolgáltatás elérése tartalmazza a limit opciót az elárasztások kivédése miatt.
Az összes szabályban az in vagy az out paraméterrel megadjuk szűrni kívánt forgalom irányát.
Az összes szabályban szerepel a via paraméterrel a csomagokat továbbító interfész neve.
Az alábbi szabályokat tegyük az /etc/ipfw.rules állományba.
############## Itt kezdődnek az IPFW szabályai ########################## # Kezdés előtt töröljük az összes aktív szabályt. ipfw -q -f flush # Állítsuk be a parancsok további szükséges opciót. cmd="ipfw -q add" pif="dc0" # az internethez csatlakozó # interfész neve ################################################################# # A belső hálózat számára ne korlátozzunk semmit se. # Ha nincs helyi hálózatunk, akkor erre nincs szükségünk. # Az 'xl0' nevét írjuk át a helyi hálózatra csatlakozó # interfész nevére. ################################################################ #$cmd 00005 allow all from any to any via xl0 ################################################################ # A rendszer belső interfészét se szűrjük. ################################################################ $cmd 00010 allow all from any to any via lo0 ################################################################ # A csomagot engedjük át a tűzfalon, ha korábban már felvettünk # hozzá egy dinamikus szabályt a keep-state opcióval. ################################################################ $cmd 00015 check-state ################################################################ # Az internet felé forgalmazó interfész (kimenő kapcsolatok) # A saját hálózatunkról belülről vagy erről az átjáróról # kezdeményezett kapcsolatokat vizsgáljuk az internet felé. ################################################################ # Kifelé engedélyezzük az internet-szolgáltatónk névszerverének # elérését. Az x.x.x.x a szolgáltatónk névszerverének IP-címe # legyen. Ha a szolgáltatónak több névszervere is van, akkor # másoljuk le ezeket a sorokat és az /etc/resolv.conf # állományban található IP-címeket helyettesítsük be. $cmd 00110 allow tcp from any to x.x.x.x 53 out via $pif setup keep-state $cmd 00111 allow udp from any to x.x.x.x 53 out via $pif keep-state # Kábel/DSL konfigurációk esetében kifelé engedélyezzük a # szolgáltatónk DHCP szerverének elérését. Ha a "felhasználói # PPP"-t használjuk, akkor erre nem lesz szükségünk, az egész # csoportot törölhetjük. Az alábbi szabállyal csíphetjük el a # beírandó IP-címet. Ha a naplóban megtaláltuk, akkor vegyük # ki az első szabályt, a másodikba írjuk bele a címet és # engedélyezzük. $cmd 00120 allow log udp from any to any 67 out via $pif keep-state #$cmd 00120 allow udp from any to x.x.x.x 67 out via $pif keep-state # Kifelé engedélyezzük a szabvány nem biztonságos WWW # funkció elérését. $cmd 00200 allow tcp from any to any 80 out via $pif setup keep-state # Kifelé engedélyezzük a biztonságos HTTPS funkció # elérését TLS SSL használatával. $cmd 00220 allow tcp from any to any 443 out via $pif setup keep-state # Kifelé engedélyezzük a e-mailek küldését és fogadását. $cmd 00230 allow tcp from any to any 25 out via $pif setup keep-state $cmd 00231 allow tcp from any to any 110 out via $pif setup keep-state # Kifelé engedélyezzük a FreeBSD (a make install és a CVSUP) # funkcióit. Ezzel lényegében a rendszeradminisztrátornak # ,,ISTENI'' jogokat adunk. $cmd 00240 allow tcp from me to any out via $pif setup keep-state uid root # Kifelé engedélyezzük a pinget. $cmd 00250 allow icmp from any to any out via $pif keep-state # Kifelé engedélyezzük az idő szolgáltatást. $cmd 00260 allow tcp from any to any 37 out via $pif setup keep-state # Kifelé engedélyezzük az nntp news szolgáltatást # (vagyis a hírcsoportokat) $cmd 00270 allow tcp from any to any 119 out via $pif setup keep-state # Kifelé engedélyezzük a biztonságos FTP, telnet és SCP # elérését az SSH (secure shell) használatával. $cmd 00280 allow tcp from any to any 22 out via $pif setup keep-state # Kifelé engedélyezzük a whois szolgáltatást. $cmd 00290 allow tcp from any to any 43 out via $pif setup keep-state # Dobjuk el és naplózzunk mindent, ami megpróbál kijutni. # Ez a szabály gondoskodik róla, hogy alapértelmezés szerint # mindent blokkoljunk. $cmd 00299 deny log all from any to any out via $pif ################################################################ # Az internet felőli interfész (bejövő kapcsolatok) # A saját hálózatunk felé vagy erre az átjáróra # nyitott kapcsolatokat vizsgáljuk az internet felől. ################################################################ # Blokkoljunk minden olyan bejövő forgalmat, amely a fenntartott # címtartományok felé tart. $cmd 00300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918: privát IP $cmd 00301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918: privát IP $cmd 00302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918: privát IP $cmd 00303 deny all from 127.0.0.0/8 to any in via $pif #helyi $cmd 00304 deny all from 0.0.0.0/8 to any in via $pif #helyi $cmd 00305 deny all from 169.254.0.0/16 to any in via $pif #DHCP $cmd 00306 deny all from 192.0.2.0/24 to any in via $pif #dokumentációs célokra fenntartott $cmd 00307 deny all from 204.152.64.0/23 to any in via $pif #Sun klaszterek összekötésére használt $cmd 00308 deny all from 224.0.0.0/3 to any in via $pif #D és E osztályú multicast # A nyilvános pingek tiltása. $cmd 00310 deny icmp from any to any in via $pif # Az ident szolgáltatás tiltása. $cmd 00315 deny tcp from any to any 113 in via $pif # Blokkoljuk az összes Netbios szolgáltatást: 137=név, 138=datagram, # 139=session. A Netbios az MS Windows megosztását implementálja. # Blokkoljuk az MS Windows hosts2 névszerver kéréseit is a 81-es # porton. $cmd 00320 deny tcp from any to any 137 in via $pif $cmd 00321 deny tcp from any to any 138 in via $pif $cmd 00322 deny tcp from any to any 139 in via $pif $cmd 00323 deny tcp from any to any 81 in via $pif # Eldobjuk az összes későn érkező csomagot. $cmd 00330 deny all from any to any frag in via $pif # Eldobjuk azokat az ACK csomagokat, amelyek egyik dinamikus # szabálynak sem felelnek meg. $cmd 00332 deny tcp from any to any established in via $pif # Befelé engedélyezzük a szolgáltató DHCP szerverének válaszát. Ebben # a szabályban csak a DHCP szerver IP-címe szerepelhet, mivel ez az # egyetlen olyan hitelesített forrás, ami ilyen csomagokat küldhet. # Ez csak a kábeles és DSL típusú kapcsolatok esetében szükséges. # Amikor a "felhasználói PPP"-vel csatlakozunk az internethez, nem # kell ez a szabály. Ugyanazt az IP-címet kell megadnunk, amelyet a # kimenő kapcsolatoknál is. #$cmd 00360 allow udp from any to x.x.x.x 67 in via $pif keep-state # Befelé engedélyezzük a szabvány WWW funkciót, mivel webszerverünk # is van. $cmd 00400 allow tcp from any to me 80 in via $pif setup limit src-addr 2 # Befelé engedélyezzük a biztonságos FTP, telnet és SCP # típusú kapcsolatokat az internetről. $cmd 00410 allow tcp from any to me 22 in via $pif setup limit src-addr 2 # Befelé engedélyezzük az internetről érkező nem biztonságos telnet # kapcsolatokat. Azért tekintjük nem biztonságosnak, mert az # azonosítók és a jelszavak az interneten titkosítatlanul vándorolnak. # Töröljük ezt a csoportot, ha nincs telnet szolgáltatásunk. $cmd 00420 allow tcp from any to me 23 in via $pif setup limit src-addr 2 # Dobjuk el és naplózzuk az összes többi kintről érkező csomagot. $cmd 00499 deny log all from any to any in via $pif # Alapértelmezés szerint dobjuk el mindent. Az ide érkező # csomagokat is naplózzuk, amiből többet is ki tudunk majd # deríteni. $cmd 00999 deny log all from any to any ############# Itt fejeződnek be az IPFW szabályai #####################
Az IPFW címfordító funkciójának kihasználásához további konfigurációs beállítások alkalmazására is szükségünk lesz. A rendszermagban opció között meg kell adnunk az option IPDIVERT sort a többi IPFIREWALL sor mellett, és fordítanunk egy saját verziót.
Emellett még az /etc/rc.conf állományban is engedélyezni kell az IPFW alapvető funkcióit.
natd_enable="YES" # engedélyezzük a címfordításért felelős démont natd_interface="rl0" # az internet felé mutató hálózati kártya neve natd_flags="-dynamic -m" # -m = a portszámok megtartása, ha lehetséges
Az állapottartó szabályok használata a divert natd címfordítási opcióval együtt nagyban növeli a szabályrendszer leprogramozásának bonyolultságát. A check-state és divert natd szabályok helye kritikus a megfelelő működés tekintetében. Az eddig megszokott egyszerű viselkedés itt már nem érvényesül. Bevezetünk egy új cselekvést is, amelynek a neve skipto. A skipto parancs használatához elengedhetetlen a szabályok sorszámozása, mivel pontosan tudnunk kell, hogy a skipto hatására hova kell ugrania a vezérlésnek.
A következő példában nem fogunk sok megjegyzést látni, mivel benne az egyik lehetséges programozási stílust próbáljuk érzékeltetni és a csomagok szabályrendszerek közti áramlását magyarázzuk.
A feldolgozás a szabályokat tartalmazó állomány tetején található első szabállyal kezdődik, és innen egyesével pereg végig lefelé a feldolgozás egészen addig, amíg a csomag a szűrési feltételek valamelyikének eleget nem tesz és távozik a tűzfalból. Leginkább a 100-as, 101-es, 450-es, 500-as és 510-es sorszámú szabályokat emelnénk ki. Ezek vezérlik kimenő és bejövő csomagok fordítását, ezért a hozzájuk tartozó dinamikus állapottartó bejegyzések mindig a helyi hálózat IP-címeire hivatkoznak. Amit még érdemes megfigyelnünk, hogy az összes áteresztő és eldobó szabályban szerepel a csomag haladási iránya (tehát kimenő vagy éppen bejövő) és az érintett interfészt megnevezése. Emellett azt is vegyük észre, hogy az összes kifelé irányuló kapcsolatlétrehozási kérés az 500-as sorszámú szabályhoz fog ugrani a címfordítás elvégzéséhez.
Tegyük fel, hogy a helyi hálózatunkon levő felhasználók szeretnek honlapokat nézgetni az interneten. A honlapok a 80-as porton keresztül kommunikálnak. Tehát amikor egy ilyen csomag eléri a tűzfalat, nem fog illeszkedni a 100-as szabályra, mert a fejléce szerint kifelé halad és nem befelé. A 101-es szabályon is átlép, mivel ez az első csomag, így a dinamikus állapottartó táblázatban sem szerepel még. A csomag végül a 125-ös szabályra fog illeszkedni: kifelé halad az internetre csatlakozó hálózati kártyán. A csomagban azonban még mindig az eredeti forrás IP-címe található, amely a helyi hálózat egyik gépére hivatkozik. A szabály illeszkedésekor két cselekvés is végbemegy. A keep-state opció hatására ez a szabály felveszi ezt a kapcsolatot az állapottartó dinamikus szabályok közé és végrehajtja a másik megadott feladatot. Ez a feladat része a dinamikus táblázatba rögzített bejegyzésnek, ami ebben az esetben a skipto 500 (“ugorjunk az 500-as szabályra”) lesz. Az 500-as szabály a továbbküldés előtt lefordítja a csomag forrás IP-címét. Ezt ne felejtsük el, nagyon fontos! A csomag ezután eljut a céljához, és visszatérve ismét belép a szabályrendszer tetején. Ezúttal illeszkedni fog a 100-as szabályra és a cél IP-címét visszafordítjuk a helyi hálózatunk megfelelő gépének címére. Ezután a check-state szabályhoz kerül, amely megtalálja a dinamikus szabályok között és továbbengedi a belső hálózatra. Ezzel visszakerül a küldő géphez, amely egy újabb csomagot küld egy újabb adatszeletet kérve a távoli szervertől. Ekkor már a check-state szabály megtalálja a hozzá tartozó bejegyzést a dinamikus szabályok között és végrehajtódik a korábban letárolt skipto 500 művelet. A csomag erre az 500-as szabályra ugrik, ahol lefordítjuk a címét és továbbküldjük.
Az bejövő oldalon minden, ami egy korábban kialakult kapcsolat részeként érkezik, automatikusan a check-state és a megfelelő helyre rakott divert natd szabályok által dolgozódik fel. Itt mindössze a rossz csomagok eldobásával és a hitelesített szolgáltatások elérésének biztosításával kell foglalkoznunk. Például a tűzfalon egy webszerver fut, és azt szeretnénk, hogy az internetről képesek legyenek elérni a rajta levő oldalakat. Az újonnan beérkező kapcsolatépítési kérelem a 100-as szabályra fog illeszkedni, amelynek a cél IP-címét a tűzfal helyi hálózaton található címére fogjuk leképezni. A csomagot ezután még megvizsgáljuk, nem tartalmaz-e valamilyen huncutságot, majd végül a 425-ös szabálynál fog kikötni. Az egyezéskor két dolog történhet: a csomaghoz felveszünk egy dinamikus szabályt, de ezúttal az adott forrás IP-címről érkező kapcsolatkérések számát 2-re lekorlátozzuk. Ezzel az adott szolgáltatás portján meg tudjuk óvni a tűzfalat üzemeltető gépet a DoS típusú támadásoktól. A csomagot ezután hozzá tartozó cselekvés szerint továbbengedjük a belső hálózat felé. Visszatéréskor a tűzfal felismeri, hogy a csomag egy már meglevő kapcsolathoz tartozik, ezért közvetlenül az 500-as szabályhoz kerül címfordításra, majd a kimenő interfészen keresztül továbbküldjük.
Íme az első példa egy ilyen szabályrendszerre:
#!/bin/sh cmd="ipfw -q add" skip="skipto 500" pif=rl0 ks="keep-state" good_tcpo="22,25,37,43,53,80,443,110,119" ipfw -q -f flush $cmd 002 allow all from any to any via xl0 # nem szűrjük a belső hálózatot $cmd 003 allow all from any to any via lo0 # nem szűrjük a helyi interfészt $cmd 100 divert natd ip from any to any in via $pif $cmd 101 check-state # A kimenő csomagok hitelesítése: $cmd 120 $skip udp from any to xx.168.240.2 53 out via $pif $ks $cmd 121 $skip udp from any to xx.168.240.5 53 out via $pif $ks $cmd 125 $skip tcp from any to any $good_tcpo out via $pif setup $ks $cmd 130 $skip icmp from any to any out via $pif $ks $cmd 135 $skip udp from any to any 123 out via $pif $ks # Az összes olyan csomagot eldobjuk, amely a fenntartott # címtartományokba tart: $cmd 300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918: privát IP $cmd 301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918: privát IP $cmd 302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918: privát IP $cmd 303 deny all from 127.0.0.0/8 to any in via $pif #helyi $cmd 304 deny all from 0.0.0.0/8 to any in via $pif #helyi $cmd 305 deny all from 169.254.0.0/16 to any in via $pif #DHCP $cmd 306 deny all from 192.0.2.0/24 to any in via $pif #dokumentációs célokra fenntartott $cmd 307 deny all from 204.152.64.0/23 to any in via $pif #Sun klaszter $cmd 308 deny all from 224.0.0.0/3 to any in via $pif #D és E osztályú multicast # Az érkező csomagok hitelesítése: $cmd 400 allow udp from xx.70.207.54 to any 68 in $ks $cmd 420 allow tcp from any to me 80 in via $pif setup limit src-addr 1 $cmd 450 deny log ip from any to any # Ide ugrunk a kimenő állapottartó szabályoknál: $cmd 500 divert natd ip from any to any out via $pif $cmd 510 allow ip from any to any ##################### a szabályok vége ##################
A következő példa teljesen megegyezik az előzővel, azonban itt már dokumentációs szándékkal szerepelnek megjegyzések is, melyek a tapasztalatlan IPFW szabályíróknak segítik jobban megérteni a szabályok pontos működését.
A második példa:
#!/bin/sh ############# Az IPFW szabályai itt kezdődnek ########################### # Kezdés előtt töröljük az összes jelenleg aktív szabályt: ipfw -q -f flush # Beállítjuk a parancsok megfelelő előtagjait: cmd="ipfw -q add" skip="skipto 800" pif="rl0" # az internethez csatlakozó # hálózati interfész neve ################################################################# # A belső hálózat számára ne korlátozzunk semmit se. # Ha nincs helyi hálózatunk, akkor erre nincs szükségünk. # Az 'xl0' nevét írjuk át a helyi hálózatra csatlakozó # interfész nevére. ################################################################# $cmd 005 allow all from any to any via xl0 ################################################################# # A rendszer belső interfészét se szűrjük. ################################################################# $cmd 010 allow all from any to any via lo0 ################################################################# # Ellenőrizzük, hogy ez egy beérkező csomag és ha igen, akkor # fordítsuk a címét. ################################################################# $cmd 014 divert natd ip from any to any in via $pif ################################################################# # Ha ehhez a csomaghoz korábban már vettük fel dinamikus # szabályt a keep-state opció révén, akkor engedjük tovább. ################################################################# $cmd 015 check-state ################################################################# # Az internet felé forgalmazó interfész (kimenő kapcsolatok) # A saját hálózatunkról belülről vagy erről az átjáróról # kezdeményezett kapcsolatokat vizsgáljuk az internet felé. ################################################################# # Kifelé engedélyezzük az internet-szolgáltatónk névszerverének # elérését. Az x.x.x.x a szolgáltató névszerverének IP-címe # lesz. Ha a szolgáltatónknak több névszervere is van, akkor # az /etc/resolv.conf állományból nézzük ki a címeiket és # másoljuk le az alábbi sor mindegyikükhöz. $cmd 020 $skip tcp from any to x.x.x.x 53 out via $pif setup keep-state # A kábeles és DSL kapcsolatok esetén engedélyezzük a szolgáltató # DHCP szerverének elérését. $cmd 030 $skip udp from any to x.x.x.x 67 out via $pif keep-state # Kifelé engedélyezzük a szabvány nem biztonságos WWW funkciót $cmd 040 $skip tcp from any to any 80 out via $pif setup keep-state # Kifelé engedélyezzük a biztonságos HTTPS funkciót a TLS SSL # használatával. $cmd 050 $skip tcp from any to any 443 out via $pif setup keep-state # Kifelé engedélyezzük az e-mailek küldését és fogadását. $cmd 060 $skip tcp from any to any 25 out via $pif setup keep-state $cmd 061 $skip tcp from any to any 110 out via $pif setup keep-state # Kifelé engedélyezzük a FreeBSD (make install és CVSUP) funkcióit. # Ezzel a rendszeradminisztrátornak ,,ISTENI'' jogokat adunk. $cmd 070 $skip tcp from me to any out via $pif setup keep-state uid root # Kifelé engedélyezzük a pinget. $cmd 080 $skip icmp from any to any out via $pif keep-state # Kifelé engedélyezzük az idő szolgáltatást. $cmd 090 $skip tcp from any to any 37 out via $pif setup keep-state # Kifelé engedélyezzük az nntp news szolgáltatást (tehát a # hírcsoportokat). $cmd 100 $skip tcp from any to any 119 out via $pif setup keep-state # Kifelé engedélyezzük a biztonságos FTP, telnet és SCP # funkciókat az SSH (secure shell) használatával. $cmd 110 $skip tcp from any to any 22 out via $pif setup keep-state # Kifelé engedélyezzük ki a whois kéréseket. $cmd 120 $skip tcp from any to any 43 out via $pif setup keep-state # Kifelé engedélyezzük az NTP időszerver elérését. $cmd 130 $skip udp from any to any 123 out via $pif keep-state ################################################################# # Az internet felőli interfész (bejövő kapcsolatok) # A saját hálózatunk felé vagy erre az átjáróra # nyitott kapcsolatokat vizsgáljuk az internet felől. ################################################################# # Tiltsuk a fenntartott címtartományok felé haladó összes beérkező # forgalmat. $cmd 300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918: privát IP $cmd 301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918: privát IP $cmd 302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918: privát IP $cmd 303 deny all from 127.0.0.0/8 to any in via $pif #helyi $cmd 304 deny all from 0.0.0.0/8 to any in via $pif #helyi $cmd 305 deny all from 169.254.0.0/16 to any in via $pif #DHCP $cmd 306 deny all from 192.0.2.0/24 to any in via $pif #dokumentációs célokra fenntartott $cmd 307 deny all from 204.152.64.0/23 to any in via $pif #Sun klaszter $cmd 308 deny all from 224.0.0.0/3 to any in via $pif #D és E osztályú multicast # Az ident tiltása. $cmd 315 deny tcp from any to any 113 in via $pif # Blokkoljuk az összes Netbios szolgáltatást: 137=név, 138=datagram, # 139=session. A Netbios az MS Windows megosztását implementálja. # Blokkoljuk az MS Windows hosts2 névszerver kéréseit is a 81-es # porton. $cmd 320 deny tcp from any to any 137 in via $pif $cmd 321 deny tcp from any to any 138 in via $pif $cmd 322 deny tcp from any to any 139 in via $pif $cmd 323 deny tcp from any to any 81 in via $pif # Dobjuk el a későn érkező csomagokat. $cmd 330 deny all from any to any frag in via $pif # Dobjuk el azokat az ACK csomagokat, amelyekre nincs # dinamikus szabály. $cmd 332 deny tcp from any to any established in via $pif # Engedélyezzük a szolgáltató DHCP szerverétől érkező forgalmat. Ennek # a szabálynak tartalmaznia kell a DHCP szerver címét, mert csak tőle # fogadunk el ilyen típusú csomagokat. Egyedül csak kábeles vagy DSL # konfigurációk esetén használatos, a "felhasználói PPP" esetében # törölhetjük. Ez ugyanaz az IP-cím, amelyet a kimenő kapcsolatoknál # megadtunk. $cmd 360 allow udp from x.x.x.x to any 68 in via $pif keep-state # Befelé engedélyezzük a szabvány WWW funkciót, mivel van # webszerverünk. $cmd 370 allow tcp from any to me 80 in via $pif setup limit src-addr 2 # Befelé engedélyezzük a biztonságos FTP, telnet és SCP # használatát az internetről. $cmd 380 allow tcp from any to me 22 in via $pif setup limit src-addr 2 # Befelé engedélyezzük a nem biztonságos telnet elérését az # internetről. Azért nem tekintjük biztonságosnak, mert az # azonosítókat és a jelszavakat az interneten titkosítatlanul # közvetíti. Ha nincs telnet szolgáltatásunk, akkor törölhetjük is ezt # a csoportot. $cmd 390 allow tcp from any to me 23 in via $pif setup limit src-addr 2 # Dobjuk el és naplózzuk az összes internetről érkező hitelesítetlen kapcsolatot. $cmd 400 deny log all from any to any in via $pif # Dobjuk el és naplózzuk az összes internetre menő hitelesítetlen kapcsolatot. $cmd 450 deny log all from any to any out via $pif # Ez lesz a kimenő szabályokhoz tartozó "skipto" célja. $cmd 800 divert natd ip from any to any out via $pif $cmd 801 allow ip from any to any # Minden mást alapértelmezés szerint tiltunk és naplózunk. $cmd 999 deny log all from any to any ############# Az IPFW szabályai itt fejeződnek be #####################
Ebben a fejezetben számos komolyabb hálózati témát fogunk tárgyalni.
A fejezet elolvasása során megismerjük:
az átjárók és az útválasztás alapjait;
hogyan állítsunk be IEEE® 802.11 és Bluetooth eszközöket;
a FreeBSD segítségével hogyan tudunk két hálózatot összekötni hálózati hidakon keresztül;
hogyan indítsuk hálózatról egy lemez nélküli gépet;
hogyan állítsunk be hálózati címfordítást;
hogyan kapcsoljunk össze két számítógépet PLIP használatával;
hogyan állítsuk be az IPv6 használatát egy FreeBSD-s gépen
hogyan állítsuk be az ATM használatát;
hogyan engedélyezzük és használjuk a Közös címredundancia protokollt FreeBSD-ben.
A fejezet elolvasásához ajánlott:
Egy gép egy másikat úgy tud megtalálni a hálózaton, ha erre létezik egy olyan mechanizmus, amely leírja, hogyan tudunk eljutni az egyiktől a másikig. Ezt hívjuk útválasztásnak (routing). Az “útvonal” (route) címek egy párjaként adható meg, egy “céllal” (destination) és egy “átjáróval” (gateway). Ez a páros mondja meg, hogy ha el akarjuk érni ezt a célt, akkor ezen az átjárón keresztül kell továbbhaladnunk. A céloknak három típusa lehet: egyéni gépek, alhálózatok és az “alapértelmezett”. Az “alapértelmezett útvonalat” (default route) abban az esetben alkalmazzuk, ha semelyik más útvonal nem megfelelő. Az alapértelmezett útvonalakról a későbbiekben még beszélni fogunk. Három típusa van az átjáróknak: egyéni gépek, felületek (avagy “linkek”) és a hardveres Ethernet címek (MAC-címek).
Az útválasztás különböző területeit a következő netstat parancs alapján fogjuk bemutatni:
% netstat -r Routing tables Destination Gateway Flags Refs Use Netif Expire default outside-gw UGSc 37 418 ppp0 localhost localhost UH 0 181 lo0 test0 0:e0:b5:36:cf:4f UHLW 5 63288 ed0 77 10.20.30.255 link#1 UHLW 1 2421 example.com link#1 UC 0 0 host1 0:e0:a8:37:8:1e UHLW 3 4601 lo0 host2 0:e0:a8:37:8:1e UHLW 0 5 lo0 => host2.example.com link#1 UC 0 0 224 link#1 UC 0 0
Az első két sorban az alapértelmezett útvonalat (melyről részleteiben majd a következő szakaszban fogunk szólni) és a localhost útvonalát láthatjuk.
A localhost címhez az útválasztási táblázatban a lo0 eszköz tartozik (a Netif oszlopban), amelyet loopback eszköznek is neveznek. Ez arra utasítja a rendszert, hogy az ide küldött csomagokat ne a helyi hálózaton küldje keresztül, hanem csak ezen a belső felületen, mivel úgyis oda jutnának vissza, ahonnan indultak.
A táblázatban a következő sor egy 0:e0 kezdetű címet tartalmaz. Ez egy hardveres Ethernet cím, más néven MAC-cím. A FreeBSD magától képes beazonosítani tetszőleges gépet (ebben a példában a test0 gépet) a helyi Ethernetes hálózaton és felvenni hozzá egy útvonalat, közvetlenül az ed0 Ethernetes csatolófelületen keresztül. Ehhez a típusú útvonalhoz tartozik még egy lejárati idő is (a Expire oszlop), amely akkor kap szerepet, ha ennyi idő elteltével nem kapunk semmilyen hírt a gépről. Amikor ilyen történik, az géphez eddig nyilvántartott útvonal automatikusan törlődik. Ezek a gépek a RIP (útvonal-információs protokoll, Routing Information Protocol) nevű mechanizmuson keresztül azonosítódnak, mely a legrövidebb út kiszámítása alapján határozza meg a helyi gépekhez vezető útvonalat.
A FreeBSD a helyi alhálózat (10.20.30.255 és example.com, az alhálózathoz tartozó név) esetében is felvesz útvonalakat. A link#1 megnevezés a gépben található első Ethernet-kártyát jelöli. Megfigyelhetjük, hogy rajta kívül nincs is több felülete.
Mindegyik csoport (a helyi hálózati gépek és a helyi alhálózatokatok) útvonalait a routed nevű démon tartja automatikusan karban. Ha ez nem fut, akkor csak a statikusan definiált (vagyis az előre megadott) útvonalak fognak létezni.
A host1 sor a saját gépünkre vonatkozik, amelyet az Ethernet címe szerint ismerünk. Mivel mi vagyunk küldő gép, a FreeBSD tudni fogja, hogy ilyenkor az Ethernetes felület helyett a loopback eszközt (lo0) kell használnia.
A két host2 sor arra mutat példát, amikor az ifconfig(8) paranccsal álneveket hozunk létre (ennek konkrét okait lásd az Ethernetről szóló részben). A lo0 felület neve után szereplő => szimbólum azt jelzi, hogy ez nem csak egy loopback felület (mivel a címe szintén a helyi gépre mutat), hanem a felület egy másik neve. Ilyen útvonalak csak az álneveket ismerő gépeknél jelennek meg. A helyi hálózaton minden más gépnél egyszerűen csak a link#1 jelenik meg az ilyen útvonalak esetében.
Az utolsó sor (a 224 céllal rendelkező alhálózat) a multicastre (többesküldésre) szolgál, amellyel majd egy másik szakaszban foglalkozunk.
Végezetül az útvonalakhoz tartozó különféle tulajdonságok a Flags oszlopban láthatóak. Az alábbi rövid táblázatban összefoglaltunk közülük néhányat:
U | Up: az útvonal aktív |
H | Host: az útvonal egyetlen gépre mutat |
G | Gateway: az adott cél felé ezen a gépen keresztül küldjünk, amely majd kitalálja, hogy merre küldje tovább |
S | Static: ez az útvonal statikus, nem a rendszer hozta létre automatikusan |
C | Clone: ebből az útvonalból származtatunk új útvonalat azokhoz a gépekhez, amelyekhez csatlakozunk. Ilyen útvonalakat általában a helyi hálózatokban találhatunk |
W | WasCloned: azt jelzi, hogy ezt az útvonalat egy helyi hálózatra mutató (klón, avagy Clone típusú) útvonal alapján hoztuk létre automatikusan |
L | Link: az útvonal Ethernetes hardverhez kapcsolódik |
Amikor a helyi rendszernek fel kell vennie a kapcsolatot egy távoli géppel, ellenőrzi az útválasztási táblázatban, hogy létezik-e már hozzá valamilyen útvonal. Ha a távoli gép egy olyan alhálózatba esik, amelyet már el tudunk érni (klónozott útvonalak), akkor a rendszer megnézi, hogy a hozzá tartozó felületen képes-e kapcsolatot létesíteni.
Ha minden ismert útvonal csődöt mond, akkor a rendszerünknek marad még egy utolsó esélye: az “alapértelmezett” útvonal használata. Ez az útvonal egy speciális átjáró útvonal (ebből általában csak egyetlen egy létezik a rendszerben) és tulajdonságai között mindig szerepel a c. A helyi hálózat gépei közül ez az átjáró az legyen, amelyik közvetlenül kapcsolódik a külső világhoz (PPP összeköttetéssel, DSL, kábelmodem, T1 vagy bármilyen más hálózati felületen keresztül).
Amikor pedig magát a külső világ felé átjáróként szolgáló gépet állítjuk be, az alapértelmezett útvonal az internet-szolgáltatónk által megadott gép címe lesz.
Vegyünk egy példát az alapértelmezett útvonalakra. Egy tipikus konfiguráció:
A Helyi1 és Helyi2 gépek a hálózatunk tagjai. A Helyi1 az internet-szolgáltatót éri el egy betárcsázós PPP kapcsolaton keresztül. A PPP szerver a külső felületén keresztül a helyi hálózaton pedig egy másik átjáróhoz csatlakozik.
Az egyes gépek alapértelmezett útvonalai így alakulnak:
Gyakran felmerül a kérdés, hogy “Miért (és hogy-hogy) a T1-ÁJ a Helyi1 gép számára az alapértelmezett átjáró és nem a szolgáltató azon szervere, amelyhez csatlakozott?”
Ne felejtsük el, hogy a PPP felület a szolgáltató helyi hálózatában a mi részünkre kap címet, és a itt az összes többi géphez tartozó útvonal automatikusan létrejön. Emiatt már eleve el tudjuk érni a T1-ÁJ gépet, ezért amikor a szolgáltatón keresztül küldünk, nincs szükségünk egy további lépcsőre.
Általában a X.X.X.1 címet szokták a helyi hálózat átjárójának kiosztani. Ezért (az előbbi példát újrahasznosítva) ha a helyi hálózatunkon a C osztályú 10.20.30 címtartományt használjuk, és a szolgáltatónkhoz a 10.9.9 címtartomány tartozik, akkor az alapértelmezett útvonalak a következők lesznek:
Gép | Alapértelmezett útvonal |
---|---|
Helyi2 (10.20.30.2) | Helyi1 (10.20.30.1) |
Helyi1 (10.20.30.1, 10.9.9.30) | T1-ÁJ (10.9.9.1) |
Az /etc/rc.conf állományon keresztül könnyen meg tudjuk adni az alapértelmezett útvonalat. A példánkban a Helyi2 gép /etc/rc.conf állományába kell felvennünk a következő sort:
defaultrouter="10.20.30.1"
A route(8) parancs használatával viszont akár közvetlenül is megtehetjük mindezt:
# route add default 10.20.30.1
A route(8) man oldalon olvashatunk arról bővebben, hogy a hálózati útválasztási táblázatokat kézzel hogyan tudjuk módosítani.
Egy másik típusú konfigurációról is szót kell ejtenünk, ahol a gép egyszerre két hálózatnak is tagja. Gyakorlatilag az átjáróként üzemelő számítógépek (mint például az, amelyik a fenti példában PPP kapcsolattal csatlakozott) ilyen kettős hálózatú gépnek tekinthetőek. Ez a kifejezés azonban igazából csak azokra az esetekre illik, ahol a gép egyszerre két helyi hálózatban is megjelenik.
Az egyik esetben a gépben két Ethernet kártya található, melyek mindegyike birtokol egy-egy hálózati címet az egyes alhálózatokon. De előfordulhat az is, hogy a gépünkben csupán egyetlen Ethernet kártya van és az ifconfig(8) segítségével álneveket hoztunk létre hozzá. Az előbbi általában két fizikailag elkülönölő Ethernet alapú hálózat esetében történik, míg az utóbbinál csak egyetlen fizikai hálózati szegmensről van szó, amely viszont logikailag két külön alhálózatot tartalmaz.
Akármelyiket is vesszük, az útválasztási táblázatok úgy jönnek létre, hogy bennük a gép a másik alhálózat felé átjáróként (bejövő útvonalként) lesz nyilvántartva. Ebben a konfigurációban a gép a két alhálózat között útválasztóként fog tevékenykedni, és gyakran valamelyik vagy éppen mind a két irányba be kell állítanunk valamilyen csomagszűrést vagy tűzfalazást.
Ha azt szeretnénk, hogy ez a gép a két felület között továbbítson csomagokat, akkor a FreeBSD-ben külön engedélyezni kell ezt a lehetőséget. A következő szakaszban ennek részleteit tárjuk fel.
A hálózati útválasztó nem csinál mást, csak továbbküldi az egyik felületén beérkező csomagokat egy másik felületére. Az internetes szabványok és a sokéves mérnöki tapasztalat azonban nem engedik, hogy a FreeBSD Projekt alapértelmezés szerint is elérhetővé tegye ezt a FreeBSD rendszerekben. Ezt a lehetőséget az alábbi változó YES értékűre állításával lehet engedélyezni az rc.conf(5) állományban:
gateway_enable="YES" # Ez legyen YES, ha átjáróként akarunk üzemelni
Ezzel lényegében a
net.inet.ip.forwarding
sysctl(8)
változó értékét
állítjuk 1-re. Ha
valamiért egy időre szüneteltetni akarjuk a
csomagok továbbküldését, akkor
állítsuk a változó
értékét 0-ra.
Az új útválasztónak nem árt arról sem tudnia, hogy merre továbbítsa a forgalmat. Ha elég egyszerű a hálózatunk, akkor akár statikus útvonalakat is használhatunk. A FreeBSD alapból tartalmazza a BSD-k esetén szabványos routed(8) útválasztó démont, amely a RIP (v1 és v2) valamint az IRDP megoldásokat ismeri. A BGP v4, OSPF v2 és a többi fejlettebb útválasztási protokoll a net/zebra csomagban érhető el. Az ettől bonyolultabb hálózati útválasztási feladatokhoz olyan kereskedelmi termékek is elérhetőek, mint például a GateD®.
Tegyük fel, hogy hálózatunk a következő:
Ebben a forgatókönyvben az A-utvalaszto a mi FreeBSD-s gépünk, amely az internet felé vezető útválasztó szerepét játssza. Számára az alapértelmezett útvonal a 10.0.0.1, amelyen keresztül a külső világot tudja elérni. Feltételezzük, hogy a B-utvalaszto nevű gépet már eleve jól állítottuk be, ezért tudja merre kell mennie. (A kép alapján egyszerű: csak vegyünk fel egy alapértelmezett útvonalat a B-utvalaszto géphez, ahol így a 192.168.1.1 lesz az átjáró.)
Ha megnézzük most az A-utvalaszto útválasztási táblázatát, akkor nagyjából a következőket fogjuk látni:
% netstat -nr Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 10.0.0.1 UGS 0 49378 xl0 127.0.0.1 127.0.0.1 UH 0 6 lo0 10.0.0/24 link#1 UC 0 0 xl0 192.168.1/24 link#2 UC 0 0 xl1
Az A-utvalaszto útválasztási táblázata alapján jelen helyzetben nem lehet elérni a 2. belső hálózatot. Nincs ugyanis olyan útvonal, amely a 192.168.2.0/24 alhálózat felé vezetne. Ezt például úgy tudjuk megoldani, ha manuálisan felvesszük ezt az útvonalat. Az alábbi paranccsal hozzáadjuk a 2. belső hálózat elérését az A-utvalaszto útválasztási táblázatához, ahol a 192.168.1.2 lesz a következő ugrási pont (next hop):
# route add -net 192.168.2.0/24 192.168.1.2
Most már az A-utvalaszto bármelyik gépet képes elérni a 192.168.2.0/24 hálózaton.
A fenti példa tökéletesen szemlélti a statikus útvonalak felvételét egy működő rendszeren. Azonban ezzel az a gond, hogy az így megadott útválasztási információ nem marad meg a gép újraindítása után. Ezért az előbbihez hasonló statikus útvonalakat inkább az /etc/rc.conf állományban rögzítsük:
# A 2. belső hálózat elérését felvesszük statikus útvonalként static_routes="belsohalo2" route_belsohalo2="-net 192.168.2.0/24 192.168.1.2"
A static_routes konfigurációs változó karakterláncok szóközzel tagolt felsorolását tartalmazza. Mindegyik karakterlánc egy útvonal neve. Az iménti példában csak egyetlen ilyen név szerepelt a static_routes értékében, amely a belsohalo2 volt. Utána beírtunk még egy konfigurációs változót is, amelynek a neve route_belsohalo2. Ide helyeztük a route(8) parancsnak átadandó beállítás összes paraméterét. Ez pontosan olyan, mintha a következő parancsot adtuk volna ki:
# route add -net 192.168.2.0/24 192.168.1.2
Ezért kellett a "-net 192.168.2.0/24 192.168.1.2".
Ahogy már korábban is említettük, a static_routes értékében több karakterláncot is megadhatunk, aminek segítségével egyszerre több statikus útvonalat is létrehozhatunk. A következő sorok arra mutatnak példát, hogy a 192.168.0.0/24 és 192.168.1.0/24 hálózatok számára miként állítsunk be statikus útvonalakat a képzeletbeli útválasztónkon:
static_routes="net1 net2" route_net1="-net 192.168.0.0/24 192.168.0.1" route_net2="-net 192.168.1.0/24 192.168.1.1"
Azt már tudjuk, hogyan adjuk meg a külvilág felé vezető útvonalakat, azonban arról még nem beszéltünk, hogy kívülről miként találnak meg bennünket.
Annyit már megismertünk, hogy az útválasztási táblázatokban megadhatjuk a hálózaton azt a gépet, amelyen keresztül az adott címtartomány (a példában egy C osztályú alhálózat) felé küldhetünk, amely pedig továbbküldi a hozzá érkező csomagokat.
Amikor a csatlakozunk az internet-szolgáltatónkhoz, a nála levő útválasztási táblázatok úgy állítódnak be, hogy az alhálózatunk felé igyekvő adatok a korábban létrejött PPP összeköttetésen keresztül jutnak el hozzánk. A világ többi részén levő rendszerek viszont honnan fogják tudni, hogy a mi internet-szolgáltatónknak küldjenek?
Van egy rendszer (ez leginkább a névszerverek elosztott információs adatbázisához hasonlít), ami nyilvántartja a pillanatnyilag kiosztott címtartományokat és megadja a csatlakozási pontjukat az internet gerinchálózatán. Ez a “gerinc” tulajdonképpen olyan fővonalakból áll, amelyen keresztül a világban az országok között mozog az internet forgalma. A gerinchálózat mindegyik gépe tárolja a központi útválasztási táblázatok egy másolatát, ami a forgalmat egy adott hálózatról a megadott gerincbeli hordozóra irányítja át, végig az internet-szolgáltatók láncán egészen addig, amíg az el nem éri a hálózatunkat.
A szolgáltatónk feladata, hogy a gépünk felé leágazásként (és így a felénk vezető útként) beregisztálja magát a gerinchálózat gépein. Ezt nevezik az útvonal terjedésének.
Néha gondok lehetnek az útvonal terjedésével, és egyes gépek nem képesek elérni minket. A traceroute(8) parancs mind közül talán az egyik leghasznosabb ilyen helyzetekben, mivel ezzel fel tudjuk deríteni, hogy az útválasztás hol akad meg. Ugyanilyen jól hasznosítható azokban az esetekben, amikor látszólag nem tudunk elérni egy távoli gépet (tehát a ping(8) csődöt mond).
A traceroute(8) parancsnak annak a távoli gépnek a nevét kell megadnunk, amelyhez csatlakozni akarunk. Futása közben megjeleníti azokat az átjárókat, amelyeken keresztül csatlakozni próbál, akár sikerült elérni a célgépet, akár a kapcsolat hiánya miatt kudarcot vall.
A parancs használatáról és működéséről részletesebb információkat a traceroute(8) man oldalán találunk.
A FreeBSD alapból támogatja mind a multicastet használó alkalmazásokat, mind pedig a multicasthez tartozó útválasztást. Multicast esetében semmilyen speciális beállítás nem szükségeltetik, az ilyen alkalmazások egyből el tudják érni ezt a lehetőséget. A multicast kérések útválasztásához azonban be kell építenünk némi támogatást a rendszermagba:
options MROUTING
Emellett még el kell indítanunk az mrouted(8) démont is, amelyhez az /etc/mrouted.conf állományban még be kell állítanunk tunneleket és a DVMRP használatát. A multicasthez tartozó további beállításokat az mrouted(8) man oldalán találhatjuk.
Megjegyzés: A FreeBSD 7.0 megjelenésével a mrouted(8) démont kivették az alaprendszerből. Azt a DVMRP többesküldési protokollt valósítja meg, amelyet a legtöbb alkalmazásban mostanság már a pim(4) segítségével oldanak meg. Ennek megfelelően a hozzá tartozó multicast protokollt valósítja meg, amelyet a legtöbb alkalmazásban mostanság már a pim(4) segítségével oldanak meg. Ennek megfelelően a hozzá tartozó map-mbone(8) és mrinfo(8) segédprogramok is eltávolításra kerültek. Ezek a programok attól a kiadástól kezdődően a Portgyűjtemény részeként érhetőek el a net/mrouted portban.
A legtöbb vezeték nélküli hálózat az IEEE 802.11 szabványon nyugszik. Az alapvető vezeték nélküli hálózatokban több olyan állomást találhatunk, amelyek egymással rádiójelek szórásával kommunikálnak a 2,4 GHz vagy 5 GHz frekvenciatartományban (noha ez a helyi viszonyoknak megfelelően változhat, és a 2,3 GHz, illetve a 4,9 GHz tartományokban is lehetséges a kommunikáció).
A 802.11 szabványú hálózatok kétféleképpen szerveződnek. Először is infrastrukturálisan, (infrastructural mode) ahol az egyik állomást kinevezzük a központnak és a többi pedig ehhez fog tartozni. Az ilyen hálózatokat BSS-nek nevezzük és az imént említett központ neve hozzáférési pont (Access Point, AP) lesz. A BSS-ben az összes kommunikáció a hozzáférési pontokon keresztül halad még abban az esetben is, amikor az egyik állomás egy másik vezeték nélküli állomással akarja felvenni a kapcsolatot. Az ilyen jellegű hálózatok másik típusú szerveződési módjában nincsenek kijelölt központok és a kommunikáció az állomások között közvetlenül zajlik. A hálózat ezen formáját IBBS-nek nevezzük, vagy ismeretebb nevén ad-hoc hálózatnak (ad-hoc network).
A 802.11 alapú hálózatok elsőként a 2,4 GHz-es sávot hódították meg, és az IEEE 802.11 valamint 802.11b szabványokban rögzített protokollokat használták. Ezekben a specifikációkban megtalálhatjuk a működési frekvenciát, a közeghozzáférési réteg jellemzőinek leírását, beleértve a keretezést és az átviteli sebességeket (a kommunikáció ugyanis eltérő sebességekkel is történhet). A később kiadott 802.11a szabvány azt specifikálja, hogy az 5 GHz-es tartományban miként működjenek, ahol többek közt megtalálhatjuk a különféle jelkezelési mechanizmusokat és a nagyobb átviteli sebességek használatát. Ezt még a 802.11g szabvány követte, ami a 802.11b hálózatokkal kompatibilis módon lehetővé tette a 802.11a jelkezelésének és átviteli módszereinek használatát a 2,4 GHz-es sávban.
A 802.11 alapú hálózatok mindenféle átviteli technikáitól eltekintve többféle biztonsági megoldással találkozhatunk. Az korai 802.11 dokumentumok egy nagyon egyszerű biztonsági protokollt, a WEP-et említenek. Ez a protokoll a hálózaton mozgó adatokat egy rögzített és ismert osztott kulccsal kódolja le az RC4 titkosítással. A kommunikációhoz az összes állomásnak előre meg kell egyeznie ebben a kulcsban. Erről a sémáról időközben kiderült, hogy könnyen feltörhető és manapság már csak nagyon ritkán alkalmazzák, kivéve talán csak a kóbor felhasználók elijesztésére. A jelenleg érvényes biztonsági előírásokat az IEEE 802.11i specifikáció adja meg, amely új kriptográfiai titkosításokat definiál valamint egy további protokollt az állomások azonosítására és a kulcsok cseréjére. Emellett a titkosításhoz használt kulcsok időszakosan frissülnek és külön eszközök állnak rendelkezésre a betörési kísérletek észlelésére (és azok elhárítására). A vezeték nélküli hálózatok esetében másik elterjedt titkosítási protokoll a WPA. Ez igazából 802.11i elődjének tekinthető, amelyet egy ipari csoport definiált, amíg a 802.11i minősítés alatt állt. A WPA ennek megfelelően teljesíti a 802.11i szabvány elvárásainak egy részét és kifejezetten a régi hardverek számára készült. A WPA működéséhez egyedül a TKIP titkosításra van szükségünk, amely az eredeti WEP titkosításból származik. A 802.11i engedi a TKIP használatát, de az adatok kódolására egy erősebb titkosítás, az AES-CCM ismeretét is igényli. (Az AES a WPA esetében nem kell, mivel a régi eszközök esetében túlságosan költségesnek ítélték meg a használatát.)
A fenti szabványokon kívül a 802.11e a másik fontos szabvány, amire tekintettel kell lennünk. Ez írja le a 802.11 hálózatokon a multimédiás alkalmazások közvetítéséhez, mint például a videók valós idejű lejátszásához vagy a VoIP (voice over IP) megvalósításához tartozó protokollokat. A 802.11i szabványhoz hasonlóan a 802.11e is magában foglal egy előzetes specifikációt, amelyet WME (később pedig már WMM)-nek neveznek. Ezt szintén egy ipari csoport definiálta a 802.11e részeként, amivel a 802.11e végső elfogadásáig tudják a multimédiás igényeket kiszolgálni. Amit a 802.11e és WME/WMM megoldásaival kapcsolatban érdemes tudnunk: a QoS (Quality of Service) protokoll és más egyéb fejlett közeghozzáférési protokollok segítségével a vezeték nélküli hálózatokban lehetővé teszik a forgalom prioritás szerinti ütemezését. Ezen protokollok megfelelő implementációjának segítségével tehát a fontosabb adatok nagy sebességű küldését és áramoltatását vagyunk képesek elérni.
A FreeBSD a 6.0 verzió óta ismeri a 802.11a, 802.11b és 802.11g szabványokon alapján működő hálózatokat. A WPA és 802.11i biztonsági protokollok (a 11a, 11b és 11g szabványok bármelyike esetén) hasonlóképpen támogatottak, valamint a WME/WMM protokollok működéséhez szükséges QoS csak bizonyos vezeték nélküli eszközök esetében.
A vezeték nélküli hálózatok használatához egy vezeték nélküli hálózati kártyára lesz szükségünk, valamint a rendszermagban is be kell állítani ehhez a megfelelő támogatást. Ez utóbbit több különböző modulra szedték szét, és ezek közül csak azokat kell beállítani, amelyeket tényleg használni is fogunk.
Először is tehát kell egy vezeték nélküli eszköz. Az elterjedtebb típusaik általában az Atheos által gyártott alkatrészeket tartalmazzák. Az ilyen fajtájú eszközöket az ath(4) meghajtó kezeli, melyet úgy tudunk a rendszer indításakor betölteni, ha a /boot/loader.conf állományba felvesszük a következő sort:
if_ath_load="YES"
Az Atheos meghajtója három különálló részre oszlik: maga a meghajtó (ath(4)), a hardveres réteg, ami a chipfüggő funkciókat kezeli (ath_hal(4)) és a keretek küldésével kapcsolatban az átviteli sebesség megválasztását lehetővé tevő algoritmus (ez itt most az ath_rate_sample). Amikor ezt a támogatást modulként töltjük be, ezek a függőségek automatikusan feloldódnak. Ha az Atheos eszközök helyett valamelyik másikhoz tartozó modult szeretnénk használni, akkor például az Intersil Prism esetében a wi(4) meghajtót kell megadnunk:
if_wi_load="YES"
Megjegyzés: A leírás további részeiben az ath(4) eszközt fogjuk használni, minden más esetben ennek a nevét kell csak lecserélünk a példákban. A rendszerben elérhető vezeték nélküli meghajtók és az általuk támogatott kártyák listája a FreeBSD Hardverjegyzetekben található. Ezek a jegyzetek a különböző architektúrákra és kiadásokhoz a FreeBSD holnapjáról, a Kiadási jegyzetek oldalról érhetőek el. Ha a vezeték nélküli eszközünkhöz nem létezik natív FreeBSD-s meghajtó, akkor az NDIS meghajtó segítségével akár közvetlenül a Windows-os meghajtóját is használhatjuk.
FreeBSD 7.X esetén az eszközmeghajtó beállításával együtt a 802.11 hálózatok támogatását is be kell töltenünk a rendszermagba. Ez az ath(4) meghajtó esetében a legalább a wlan(4), wlan_scan_ap és wlan_scan_sta modulok betöltését jelenti. A wlan(4) modul a vezetéknélküli eszköz meghajtóprogramjával együtt töltődik be, míg a többi modult a /boot/loader.conf állomány használatával kell a rendszerindítás során betöltenünk:
wlan_scan_ap_load="YES" wlan_scan_sta_load="YES"
A FreeBSD 8.0 kiadástól kezdődően ezek a modulok részei a wlan(4) meghajtónak, amely a hálózati kártya meghajtójával együtt mindig automatikusan betöltődik.
Emellett még azokra a modulokra is szükségünk van, amelyek a használni kívánt biztonsági protokollokhoz nyújtanak kriptográfiai támogatást. Ezek hivatalosan a wlan(4) modul kérésére automatikusan betöltődnek, azonban itt most manuálisan állítjuk be. Erre a célra a következő modulokat találjuk: wlan_wep(4), wlan_ccmp(4) és wlan_tkip(4). A wlan_ccmp(4) és wlan_tkip(4) meghajtók csak akkor fognak kelleni, ha a WPA és/vagy a 802.11i biztonsági protokollokat használjuk. Amennyiben a hálózatunkon nincs titkosítás, akkor még a wlan_wep(4) támogatás sem kell. Ezeket a modulok úgy lehet betölteni a rendszerindításnál, ha felvesszük a következő sorokat a /boot/loader.conf állományba:
wlan_wep_load="YES" wlan_ccmp_load="YES" wlan_tkip_load="YES"
Miután ezt megcsináltuk, egyszerűen csak indítsuk újra a gépünket. Ha még nem akarjuk újraindítani a gépet, akkor a kldload(8) parancs segítségével akár kézzel is betölthetjük az előbb felsorolt modulokat.
Megjegyzés: Ha nem akarunk modulokat használni, a működéshez szükséges meghajtókat a rendszermagba is be tudjuk építeni a következő sorok megadásával a rendszermag beállításait tartalmazó állományban:
device wlan # a 802.11 támogatása device wlan_wep # 802.11 WEP támogatás device wlan_ccmp # 802.11 CCMP támogatás device wlan_tkip # 802.11 TKIP támogatás device wlan_amrr # AMRR forgalomvezérlési algoritmus device ath # Atheros IEEE 802.11 vezeték nélküli hálózati meghajtó device ath_hal # az Atheros meghajtó hardveres rétege options AH_SUPPORT_AR5416 # az AR5416 tx/rx leírók engedélyezése device ath_rate_sample # SampleRate forgalomvezérlési algoritmusHozzátesszük, hogy az alábbi sorok hozzáadása a FreeBSD 7.X változatában kötelező, más verzióknál viszont nem:
device wlan_scan_ap # a 802.11 AP módú keresés device wlan_scan_sta # a 802.11 STA módú keresésAz előbbiek megadásával fordítsuk újra és telepítsük a rendszermagot, majd indítsuk újra a számítógépünket.
Miután a rendszerünk újra elindult, a rendszer indítás során generált üzenetei között találnunk kell valamennyi információt a felismert vezeték nélküli eszközökről. Például:
ath0: <Atheros 5212> mem 0x88000000-0x8800ffff irq 11 at device 0.0 on cardbus1 ath0: [ITHREAD] ath0: AR2413 mac 7.9 RF2413 phy 4.5
Általában az infrastrukturális avagy a BBS mód használata a gyakori. Ebben a működési módban adott számú vezeték nélküli hozzáférési pont csatlakozik a hagyományos hálózatra. Mindegyik vezeték nélküli hálózatnak saját neve van, amit a hálózat SSID-jének hívunk. A vezeték nélküli kliensek ezekhez a vezeték nélküli hozzáférési pontokhoz kapcsolódnak.
A hálózatok kereséséhez az ifconfig paranccsal tudunk nekifogni. Egy ilyen kérés kiszolgálása eltarthat néhány pillanatig, mivel ekkor a rendszernek végig kell bóklásznia az összes elérhető frekvenciát és azokon hozzáférési pontok után kutatni. Egyedül a rendszeradminisztrátor kezdeményezheti ezeket a kereséseket:
# ifconfig wlan0 create wlandev ath0 # ifconfig wlan0 up scan SSID/MESH ID BSSID CHAN RATE S:N INT CAPS dlinkap 00:13:46:49:41:76 11 54M -90:96 100 EPS WPA WME freebsdap 00:11:95:c3:0d:ac 1 54M -83:96 100 EPS WPA
Megjegyzés: Csak
up
jelzésű felületen tudunk hálózatokat keresni. További keresésekre már nincs szükség a felületup
állapotban tartásához.
Megjegyzés: FreeBSD 7.X esetén a wlan0 eszköz helyett közvetlenül az adott eszköz nevét kell megadnunk, például ath0. Az iménti sorokat ennek megfelelően tehát ebben az esetben így kell értelmezni:
# ifconfig ath0 up scanA leírás további részében a FreeBSD 7.X felhasználóknak ezen séma alapján kell használniuk a parancsokat és a konfigurációs beállításokat.
A keresés során keletkező listában láthatjuk megtalált BBS vagy IBBS fajtájú hálózatokat. A hálózatok neve és SSID-ja mellett még megjelenik egy BSSID oszlop is, ahol a hozzáférési pontok MAC-címe szerepel. A CAPS oszlop az egyes állomások tulajdonságait adja meg:
Extended Service Set (ESS): az állomás egy infrastrukturális vagyis BBS hálózat része.
IBSS/ad-hoc hálózat: az állomás egy ad-hoc hálózat része.
Privacy: a BBS-en belül minden keretet titkosítani kell. Tehát a BSS arra kötelezi az állomást, hogy WEP, TKIP vagy AES-CCMP titkosítás használatával kódolja a hálózat tagjai között közlekedő kereteket.
Short Preamble: a hálózatban rövid bevezetőjeleket használnak (a 802.11b High Rate/DSSS PHY előírásai szerint), ahol a szokványos 128 bites szinkronizációs mező hossza csak 56 bit.
Short Slot Time: a 802.11g hálózat rövid slotidőt használ, mivel nem találhatóak benne régi (802.11b szabványú) állomások.
A jelenleg ismert hálózatok listáját így tudjuk lekérdezni:
# ifconfig wlan0 list scan
Ezt az információt maga az adapter
automatikusan, vagy a felhasználó tudja
frissíteni a scan
kérés kiadásával. Az elavult
adatok maguktól törlődnek a
gyorsítótárból, így
idővel a lista zsugorodni fog, hacsak nem keresünk
folyamatosan hálózatokat.
Ebben a szakaszban arra mutatunk példákat, hogy miként tudunk FreeBSD alatt titkosítás nélkül használni egy vezeték nélküli hálózati kártyát. Miután elsajátítottuk az itt szereplő ismereteket, határozottan javasoljuk, hogy a vezeték nélküli hálózatunkat WPA használatával állítsuk be.
A vezeték nélküli hálózatok beállítása három elemi lépésből épül fel: a hozzáférési pont kiválasztása, az állomásunk hitelesítése és az IP-cím beállítása. A következőkben ezeket a lépéseket vitatjuk meg.
A legtöbb esetben hagyjuk, hogy a rendszer válassza ki magának a különböző heurisztikák alapján a leginkább megfelelő hozzáférési pontot. Ez az alapértelmezett tevékenység, amikor aktiváljuk a felületet vagy valamilyen más módon, például az/etc/rc.conf állományból hivatkozunk rá:
wlans_ath0="wlan0" ifconfig_wlan0="DHCP"
Megjegyzés: A korábban említettek szerint a FreeBSD 7.X felhasználóknak csak a kártyát kell beállítani:
ifconfig_ath0="DHCP"
Ha viszont több hozzáférési pont közül mi magunk akarunk kiválasztani egyet, akkor ezt az SSID megadásával tehetjük meg:
wlans_ath0="wlan0" ifconfig_wlan0="ssid saját_ssid DHCP"
Amikor olyan környezetben vagyunk, ahol több hozzáférési pontnak is megegyezik az SSID-ja (gyakran így próbálják egyszerűsíteni azt, hogy automatikusan váltani lehessen köztük), akkor szükségünk lehet ezt egy adott eszközhöz hozzárendelni. Ebben az esetben a hozzáférési pont BSSID-ját is definiálni kell (és az SSID-t akár el is hagyhatjuk):
wlans_ath0="wlan0" ifconfig_wlan0="ssid saját_ssid bssid xx:xx:xx:xx:xx:xx DHCP"
Más módokon is képesek vagyunk
szabályozni a hozzáférési
pontok megválasztását,
például a rendszerünk által
vizsgált frekvenciasávok
megadásával. Ez olyankor tud hasznos lenni,
ha többsávos vezeték
nélküli kártyánk van, és
az összes tartomány
végigpásztázása
túlságosan sok időt venne el. Ezt a
művelet a mode
paraméter
megadásával lehet egy konkrét
sávra leszűkíteni,
például a
wlans_ath0="wlan0" ifconfig_wlan0="mode 11g ssid saját_ssid DHCP"
beállítás hatására
a kártya 802.11g módban fog üzemelni,
ami kizárólag csak 2,4 GHz-es
frekvenciákon használható, így
az 5 GHz-es csatornákat egyszerűen
figyelmen kívül hagyjuk. Ugyanezt a
channel
paraméterrel is meg tudjuk
oldani, mivel így a működést egy
adott frekvenciára korlátozzuk, valamint a
chanlist
paraméterrel, ahol a
pásztázandó csatornákat
sorolhatjuk fel. Ezekről a
paraméterekről részletesebb
leírást az ifconfig(8) man oldalon
találhatunk.
Miután sikeresen kiválasztottuk a számunkra megfelelő hozzáférési pontot, az adatok küldéséhez az állomásunknak valamilyen módon hitelesítenie kell magát. A hitelesítés több módon történhet. Erre a leggyakrabban alkalmazott sémát nyílt hitelesítésnek (open authentication) nevezik, ahol a hálózathoz tetszőleges állomás csatlakozhat és kommunikálhat vele. Ezt a típusú hitelesítést akkor érdemes használni, amikor a vezeték nélküli hálózatunkat teszteljük. Más sémákban az adatfolyam megindításához egy titkosítási kézfogás szükséges, vagy előre megosztott kulcsok esetleg jelszavak segítségével, vagy bonyolultabb sémák esetében itt még olyan különböző háttérszolgáltatások is megjelennek, mint például a RADIUS. A legtöbb felhasználó a nyílt hitelesítést használja, ami egyben az alapértelmezés is. A másik legelterjedtebb beállítás a WPA-PSK, avagy WPA Personal, amelyről lentebb még szólni fogunk.
Megjegyzés: Ha Apple AirPort® Extreme Base Station típusú hozzáférési pontunk van, akkor az osztott kulcsú hitelesítés mellett egy WEP kulcsot is be állítanunk. Ezt az /etc/rc.conf állományban vagy a wpa_supplicant(8) programban tehetjük meg. Ha egyetlen AirPort bázisállomásunk van, akkor az elérést valahogy így tudjuk beállítani:
wlans_ath0="wlan0" ifconfig_wlan0="authmode shared wepmode on weptxkey 1 wepkey 01234567 DHCP"Általánosságban véve elmondhatjuk, hogy az osztott kulcsú hitelesítést inkább kerüljük el, mivel WEP kulcsok használatára alapszik és ráadásul olyan módon, hogy nagyon könnyű feltörni. Ha már mindenképpen a WEP mellett kell döntenünk (például a régebbi eszközökkel így tudunk csak kompatibilisek maradni), akkor jobban járunk, ha a nyílt hitelesítéshez alkalmazzuk. A WEP használatát érintő további információkat a 31.3.3.1.4 Szakaszban találjuk.
Miután kiválasztottunk egy hozzáférési pontot és beállítottuk a hitelesítés paramétereit, egy IP-cím is kelleni fog a kommunikációhoz. Az esetek túlnyomó részében DHCP-n keresztül kapunk IP-címet a vezeték nélküli kapcsolatunkhoz. Ezt úgy érhetjük el, ha egyszerűen megnyitjuk az /etc/rc.conf állományt és az alábbihoz hasonló módon felvesszük a DHCP paramétert az eszközünk beállításaihoz:
wlans_ath0="DHCP" ifconfig_wlan0="DHCP"
Így már készen is állunk a vezeték nélküli felület használatára:
# /etc/rc.d/netif start
Ahogy a felület működőképessé válik, az ifconfig parancs segítségével ellenőrizni is tudjuk az ath0 felület állapotát:
# ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255 media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g status: associated ssid dlinkap channel 11 (2462 Mhz 11g) bssid 00:13:46:49:41:76 country US ecm authmode OPEN privacy OFF txpower 21.5 bmiss 7 scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst
A status: associated azt jelenti, hogy sikeresen csatlakoztunk egy vezeték nélküli hálózathoz (jelen esetben ez a dlinkap). A bssid 00:13:46:49:41:76 rész a hozzáférési pont MAC-címét tartalmazza. Az authmode OPEN pedig arról számol be, hogy a kommunikáció nem titkosított.
Ha valami okból nem tudjuk az IP-címünket DHCP szerveren keresztül lekérni, beállíthatunk rögzített IP-címet is. Ehhez nem kell mást tennünk, mint a korábban bemutatott DHCP kulcsszót kicserélni egy konkrét címmel. A hozzáférési ponthoz megadott többi paramétert azonban feltétlenül hagyjuk meg:
wlans_ath0="wlan0" ifconfig_wlan0="inet 192.168.1.100 netmask 255.255.255.0ssid saját_ssidi"
A WPA (Wi-Fi Protected Access, vagyis védett wi-fi hozzáférés) a 802.11 szabványokban használatos biztonsági protokoll, amelyet a WEP gyengeségeinek és megfelelő hitelesítésének ellensúlyozására dolgoztak ki. A WPA a 802.1X hitelesítési protokolljait erősíti és az adat sértetlenségének megőrzésére a WEP helyett több titkosítási algoritmust is felhasznál. A WPA által igényelt egyetlen titkosítás a TKIP (Temporary Key Integrity Protocol, vagyis az ideiglenes kulcs integritási protokoll), amely a WEP által az integritás ellenőrzésére és a bejutások észlelésére és azok reagálására szánt alap RC4 titkosítást bővíti ki. A TKIP a régebbi hardvereken csupán szoftveres módosítással működőképessé tehető. Ez a kompromisszum a védelmet ugyan növeli, de még mindig kevés a támadások megfelelő elhárításához. A WPA a TKIP mellett tartalmazza még az AES-CCMP titkosítást is, és ennek a használata javasolt. Ezt a specifikációt gyakran WPA2 (vagy RSN) néven emlegetik.
A WPA definiál hitelesítési és titkosítási protokollokat. A hitelesítés általában a következő két technika egyike alapján történik: vagy 802.1X és egy háttérszolgáltatás, például a RADIUS segítségével, vagy egy előre megosztott kulcsot alkalmazó minimális kézfogással az állomás és a hozzáférési pont között. Az előbbit gyakran WPA Enterprise-nak, míg az utóbbit WPA Personalnak hívják. Mivel a legtöbben nem állítanak be egy komplett RADIUS alapú szervert a vezeték nélküli hálózatukhoz, ezért a WPA-PSK a WPA leginkább elterjedten használt változata.
A vezeték nélküli kapcsolat és a hitelesítés (kulcs alapján vagy szerverrel) vezérlését a wpa_supplicant(8) segédprogram végzi. Ennek a programnak működéséhez egy konfigurációs állományra van szüksége, amely az /etc/wpa_supplicant.conf néven érhető el. Erről az állományról bővebb információt a wpa_supplicant.conf(5) man oldalán lelhetünk.
A WPA-PSK, más néven WPA-Personal, egy adott jelszó alapján generált előre megosztott kulcssal (pre-shared key, PSK) működik, amit a vezeték nélküli hálózatokban mesterkulcsént használnak. Ez azt jelenti, hogy minden egyes vezeték nélküli felhasználó ugyanazon a kulcson osztozik. A WPA-PSK olyan kis méretű hálózatok esetében megfelelő, ahol a hitelesítést elvégző szerver használata nem lehetséges vagy nem oldható meg.
Figyelem: Mindig igyekezzünk erős jelszavakat használni, melyek kellően hosszúak és sokféle karaktert tartalmaznak, és így nehezebben fejthetőek meg vagy törhetőek fel.
Először az /etc/wpa_supplicant.conf állományban állítsuk be az SSID-t és a hálózatunkhoz tartozó előre megosztott kulcsot:
network={ ssid="freebsdap" psk="freebsdmall" }
Ezután az /etc/rc.conf állományban jelezzük, hogy a vezeték nélküli eszközt a WPA segítségével állítjuk be és az IP-címet a DHCP szervertől kérjük el:
wlans_ath0="wlan0" ifconfig_ath0="WPA DHCP"
Innentől már fel is tudjuk éleszteni a felületet:
# /etc/rc.d/netif start Starting wpa_supplicant. DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 5 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 6 DHCPOFFER from 192.168.0.1 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPACK from 192.168.0.1 bound to 192.168.0.254 -- renewal in 300 seconds. wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet autoselect OFDM/36Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL
Kézzel is megpróbálhatjuk elindítani az előbb elkészített /etc/wpa_supplicant.conf állomány használatával:
# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf Trying to associate with 00:11:95:c3:0d:ac (SSID='freebsdap' freq=2412 MHz) Associated with 00:11:95:c3:0d:ac WPA: Key negotiation completed with 00:11:95:c3:0d:ac [PTK=CCMP GTK=CCMP] CTRL-EVENT-CONNECTED - Connection to 00:11:95:c3:0d:ac completed (auth) [id=0 id_str=]
A következő parancs a dhclient indítása legyen, amivel megszerezzük a DHCP szervertől az IP-címünket:
# dhclient wlan0 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPACK from 192.168.0.1 bound to 192.168.0.254 -- renewal in 300 seconds. # ifconfig wlan0 ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL
Megjegyzés: Ha az /etc/rc.conf állományban szerepel a ifconfig_wlan0="DHCP" sor, akkor egyáltalán nem szükséges a dhclient parancs manuális kiadása, mivel a dhclient magától el fog indulni, miután a wpa_supplicant egyeztette a kulcsokat.
Amikor a DHCP nem használható, megadhatunk a statikus IP-címet is, miután a wpa_supplicant sikeresen lebonyolította a hitelesítést:
# ifconfig wlan0 inet 192.168.0.100 netmask 255.255.255.0 # ifconfig wlan0 ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL
Ha egyáltalán nem használunk DHCP szervert, akkor nekünk kell beállítani az alapértelmezett átjárót és a névszervert is:
# route add default alapértelmezett_átjáró # echo "nameserver névszerver" >> /etc/resolv.conf
A másik mód, ahogy a WPA használható, az a 802.1X hitelesítési szerveren keresztül történik, és ebben az esetben a WPA neve WPA-Enterprise. Ez sokkal biztonságosabb a WPA-Personal előre kiosztott kulcsaival szemben. A WPA-Enterprise az EAP (Extensible Authentication Protocol, azaz Bővíthető hitelesítési protokoll) használatán alapszik.
Az EAP önmaga nem végez titkosítást, mivel úgy alakították ki, hogy magát az EAP protokollt kell egy titkosított járaton keresztül bújtatni. Az EAP hitelesítési módszereinek több típusát is kidolgozták, melyek közül a legismertebbek az EAP-TLS, EAP-TTLS valamint a EAP-PEAP.
Az EAP-TLS (EAP szállítási rétegbeli védelemmel) a vezeték nélküli világban egy nagyon jól támogatott hitelesítési protokoll, mivel ez volt az első EAP módszer, amit a Wi-fi szövetség jóváhagyott. Az EAP-TLS működéséhez három tanúsítvány kell: egy hitelesítő hatóságtól (Certificate Authority, CA), egy a hitelesítést végző szervertől és egy a klienstől. Ezzel az EAP módszerrel mind a hitelesítő szerver, mind a vezeték nélküli kliens külön képviselik a saját tanúsítványaikat, és ezeket a szervezetünket hitelesítő hatóság aláírása alapján ellenőrzik.
A korábbiaknak megfelelően a beállításokat szintén az /etc/wpa_supplicant.conf állományon keresztül végezzük el:
network={ ssid="freebsdap" proto=RSN key_mgmt=WPA-EAP eap=TLS identity="loader" ca_cert="/etc/certs/cacert.pem" client_cert="/etc/certs/clientcert.pem" private_key="/etc/certs/clientkey.pem" private_key_passwd="freebsdmallclient" }
Az /etc/rc.conf állományba vegyük fel a következő sorokat:
wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP"
A következő lépés a felület felébresztése lesz az rc.d eszköz segítségével:
# /etc/rc.d/netif start Starting wpa_supplicant. DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPACK from 192.168.0.20 bound to 192.168.0.254 -- renewal in 300 seconds. wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL
Természetesen, ahogy azt már az előbbiekben is megmutattuk, mindezt manuálisan is el tudjuk végezni a wpa_supplicant és az ifconfig parancsok segítségével.
Az EAP-TLS használatakor mind a hitelesítést végző szervernek és kliensnek is kell tanúsítvány, azonban az EAP-TTLS ( szállítási rétegbeli védelem EAP tunnelen keresztül) esetében a kliensnél ez elhagyható. Ez a módszer nagyjából olyan, mint amit a webes oldalak csinálnak, ahol a webszerverek egy védett SSL tunnelt képeznek még akkor is, amikor a látogatók nem rendelkeznek kliens oldali tanúsítvánnyal. Az EAP-TTLS egy titkosított TLS tunnelen keresztül védi le a hitelesítési adatok forgalmát.
Ezt ismét az /etc/wpa_supplicant.conf állományon keresztül tudjuk beállítani:
network={ ssid="freebsdap" proto=RSN key_mgmt=WPA-EAP eap=TTLS identity="test" password="test" ca_cert="/etc/certs/cacert.pem" phase2="auth=MD5" }
Mindezek mellett még a következő sorokat is vegyük fel az /etc/rc.conf állományba:
wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP"
Ezután hozzuk működésbe a felületet:
# /etc/rc.d/netif start Starting wpa_supplicant. DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPACK from 192.168.0.20 bound to 192.168.0.254 -- renewal in 300 seconds. wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL
A PEAP (Védett EAP) az EAP-TTLS egyik alternatívájaként jött létre. A PEAP módszernek két változata van, melyek közül a leggyakoribb a PEAPv0/EAP-MSCHAPv2. A leírás további részében a PEAP elnevezéssel erre az EAP módszerre fogunk hivatkozni. A PEAP az EAP-TLS után a leginkább alkalmazott szabvány, más szóval, ha a hálózatunkban többféle operációs rendszer is megtalálható, akkor az EAP-TLS után valószínűleg a PEAP lesz a másik, amit mindegyik ismerni fog.
A PEAP hasonló az EAP-TTLS-hez: szerver oldali tanúsítványokkal hitelesíti a klienseket és titkosított TLS tunnelt hoz létre a kliens és a hitelesítést végző szerver között, amivel segíti megóvni a hitelesítési információkat. Biztonság szempontjából az EAP-TTLS és a PEAP között az a különbség, hogy a PEAP hitelesítés a felhasználói nevet titkosítatlanul küldi és csak a jelszó megy át a titkosított TLS tunnelen. Az EAP-TTLS egyaránt a TLS tunnelt használja mind a felhasználói név, mind a jelszó esetében.
Az EAP-PEAP beállításait az /etc/wpa_supplicant.conf állományba kell felvenni:
network={ ssid="freebsdap" proto=RSN key_mgmt=WPA-EAP eap=PEAP identity="test" password="test" ca_cert="/etc/certs/cacert.pem" phase1="peaplabel=0" phase2="auth=MSCHAPV2" }
A következőket kell még hozzátennünk az /etc/rc.conf állományhoz:
wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP"
Ezután már működésbe is hozhatjuk a felületet:
# /etc/rc.d/netif start Starting wpa_supplicant. DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPACK from 192.168.0.20 bound to 192.168.0.254 -- renewal in 300 seconds. wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL
A WEP (Wired Equivalent Privacy, azaz kábellel egyenértékű titkosság) az eredeti 802.11 szabvány része. Nincs külön hitelesítési mechanizmusa, csupán a hozzáférés-vezérlés egy gyenge formájával találkozhatunk benne, amit azonban könnyen fel lehet törni.
A WEP ifconfig parancs használatán keresztül állítható be:
# ifconfig wlan0 create wlandev ath0 # ifconfig wlan0 inet 192.168.1.100 netmask 255.255.255.0 \ ssid saját_hálózat wepmode on weptxkey 3 wepkey 3:0x3456789012
A weptxkey utal arra, hogy a küldés során WEP kulcsot használunk. Itt most egy harmadik kulcsot használtunk, amelynek egyeznie kell a hozzáférési pont beállításaival. Ha nem tudjuk pontosan, hogy milyen kulcsot használ a hozzáférési pont, akkor próbálkozzunk az 1 érték (vagyis az első kulcs) megadásával.
A wepkey után következik a kiválasztott WEP kulcs. index:kulcs alakban kell megadni, és ha itt nem adunk meg indexet, akkor azzal az 1 indexű kulcsot állítjuk be. Úgyis fogalmazhatnánk, hogy az indexet csak olyankor kell megadni, amikor nem az első kulcsot akarjuk használni.
Megjegyzés: A 0x3456789012 értéket a hozzáférési pontnál beállított kulcsra kell beállítani.
Ha érdekelnek minket a további részletek, akkor bátran lapozzuk fel az ifconfig(8) parancs man oldalát.
A wpa_supplicant segédprogramot is bevonhatjuk a vezeték nélküli felületek WEP alapú használatába. A fenti példát a következő módon tudjuk leírni az /etc/wpa_supplicant.conf állományban:
network={ ssid="sajat_halozat" key_mgmt=NONE wep_key3=3456789012 wep_tx_keyidx=3 }
Majd:
# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf Trying to associate with 00:13:46:49:41:76 (SSID='dlinkap' freq=2437 MHz) Associated with 00:13:46:49:41:76
Az IBSS vagy más néven ad-hoc módot pont-pont típusú kapcsolatok kialakítására tervezték. Például, ha az A és a B gépek között egy ad-hoc típusú hálózatot akarunk létesíteni, akkor egyszerűen csak ki kell választanunk két IP-címet és egy SSID-t.
Így állítjuk be az A gépet:
# ifconfig wlan0 create wlandev ath0 wlanmode adhoc # ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap # ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 00:11:95:c3:0d:ac inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <adhoc> status: running ssid freebsdap channel 2 (2417 MHz) bssid 02:11:95:c3:0d:ac country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60 protmode CTS wme burst
Az adhoc paraméterrel utalunk arra, hogy a felület most IBSS módban működik.
A B gépen ezután már képesek vagyunk észlelni az A gépet:
# ifconfig wlan0 create wlandev ath0 wlanmode adhoc SSID/MESH ID BSSID CHAN RATE S:N INT CAPS freebsdap 02:11:95:c3:0d:ac 2 54M -64:-96 100 IS WME
A kimenetben szereplő I is megerősíti, hogy az A gépet ad-hoc módban érjük el. Így már csak a B gépet kell beállítanunk egy másik IP-címmel:
# ifconfig wlan0 inet 192.168.0.2 netmask 255.255.255.0 ssid freebsdap # ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <adhoc> status: running ssid freebsdap channel 2 (2417 Mhz 11g) bssid 02:11:95:c3:0d:ac country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60 protmode CTS wme burst
Most már mind az A és mind a B készen áll az adatok cseréjére.
A FreeBSD képes hozzáférési pontként (Access Point, AP) is üzemelni, így nem kell külön hardveres hozzáférési pontot vásárolnunk vagy ad-hoc hálózatot használnunk. Ez különösen akkor hasznos, amikor a FreeBSD gépet egy másik hálózat (például az internet) felé állítottuk be átjárónak.
Mielőtt nekiállnánk a FreeBSD-s gépünket hozzáférési pontnak beállítani, egy olyan rendszermagra lesz szükségünk, amely tartalmazza a megfelelő vezeték nélküli támogatást a kártyánkhoz. Emellett az alkalmazni kívánt biztonsági protokollok támogatását is bele kell építenünk. Ennek részleteit lásd a 31.3.2 Szakaszban.
Megjegyzés: Jelenleg az NDIS meghajtón keresztül használt Windows-os meghajtók nem teszik lehetővé hozzáférési pontok kialakítását. Egyedül a vezeték nélküli eszközök natív FreeBSD-s meghajtói ismerik a hozzáférési pont módot.
Ahogy betöltöttük a vezeték nélküli hálózatok támogatását, egyből ellenőrizni is tudjuk, hogy a vezeték nélküli eszközünk használható-e hozzáférési pontként (avagy “hostap” módban):
# ifconfig wlan0 create wlandev ath0 # ifconfig wlan0 list caps drivercaps=6f85edc1<STA,FF,TURBOP,IBSS,HOSTAP,AHDEMO,TXPMGT,SHSLOT,SHPREAMBLE,MONITOR,MBSS,WPA1,WPA2,BURST,WME,WDS,BGSCAN,TXFRA> crytocaps=1f<WEP,TKIP,AES,AES_CCM,TKIPMIC>
A fenti kimenetben láthatjuk a kártyánk tulajdonságait. A HOSTAP szó arról tanúskodik, hogy a vezeték nélküli kártyánk képes hozzáférési pontként viselkedni. Mellette még a különféle támogatott titkosítási módszerek is láthatóak: WEP, TKIP, AES stb. Ezekből az információkból tudjuk kideríteni, hogy a hozzáférési pontunkon milyen titkosítási protokollokat tudunk használni.
A vezeték nélküli eszközünket innentől már csak hozzáférési pontnak állíthatjuk át a viruális hálózati eszköz létrehozásakor, ezért a korábban létrehozott eszközt ehhez először meg kell semmisítenünk:
# ifconfig wlan0 destroy
Ezzel létrejön a megfelelő beállításokkal, majd ezekhez állítjuk még be a többit:
# ifconfig wlan0 create wlandev ath0 wlanmode hostap # ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1
Az ifconfig parancs ismételt használatával le is tudjuk kérdezni az wlan0 felület állapotát:
# ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255 inet6 fe80::211:95ff:fec3:dac%ath0 prefixlen 64 scopeid 0x4 ether 00:11:95:c3:0d:ac media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap> status: running ssid freebsdap channel 1 (2412 Mhz) bssid 00:11:95:c3:0d:ac country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60 protmode CTS wme burst dtimperiod 1 -dfs
A hostap paraméterből kiderül, hogy a felület hozzáférési pont módban van.
Ha az /etc/rc.conf állományban megadjuk a következő sorokat, akkor a felület beállítása a rendszer indításakor magától megtörténik:
wlans_ath0="wlan0" create_args_wlan0="wlanmode hostap" ifconfig_wlan0="inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1"
Habár a hozzáférési pontok működtetése nem javasolt hitelesítés vagy titkosítás nélkül, ebben a módban könnyen meg tudunk győződni a hozzáférési pontunk használhatóságáról. Ez a típusú konfiguráció ezenkívül még fontos szerepet játszik a klienseken felbukkanó hibák kiszűrésében is.
Miután sikerült az előbbiekben bemutatottak alapján beállítani a hozzáférési pontunkat, egy másik vezeték nélküli gépről rögtön meg is kezdhetjük a keresését:
# ifconfig ath0 up scan SSID/MESH ID BSSID CHAN RATE S:N INT CAPS freebsdap 00:11:95:c3:0d:ac 1 54M -66:-96 100 ES WME
Láthatjuk, hogy a kliens megtalálta a hozzáférési pontot és tudunk is rá kapcsolódni:
# ifconfig wlan0 inet 192.168.0.2 netmask 255.255.255.0 ssid freebsdap # ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode OPEN privacy OFF txpower 21.5 bmiss 7 scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst
Ebben a szakaszban a FreeBSD-s hozzáférési pontunkat WPA titkosítással állítjuk be. A WPA és a WPA alapú kliensek beállításának részleteit a 31.3.3.1.3 Szakaszban találjuk.
A WPA titkosítást használó hozzáférési pontokon a hostapd démon foglalkozik a kliensek hitelesítésével és a kulcsok kezelésével.
A továbbiakban az összes beállítást egy olyan FreeBSD-s gépen végezzük el, amely hozzáférési pontként működik. Ahogy sikerült beállítanunk a hozzáférési pont módot, az /etc/rc.conf állományban a következő sor segítségével könnyen meg tudjuk oldani, hogy az hostapd démon a rendszerrel együtt magától elinduljon:
hostapd_enable="YES"
Mielőtt megpróbálnánk beállítani a hostapd démont, ne felejtsük el elvégezni a 31.3.5.1 Szakaszban említett alapvető beállításokat sem.
A WPA-PSK használatát olyan kis méretű hálózatok számára szánják, ahol egy külön hitelesítő szervert alkalmazása nem lehetséges vagy nem kívánatos.
A konfiguráció az /etc/hostapd.conf állományon keresztül történik:
interface=wlan0 debug=1 ctrl_interface=/var/run/hostapd ctrl_interface_group=wheel ssid=freebsdap wpa=1 wpa_passphrase=freebsdmall wpa_key_mgmt=WPA-PSK wpa_pairwise=CCMP TKIP
Figyelem: Lehetőleg mindig erős jelszavakat használjunk, amelyek kellően hosszúak és sokféle karaktert tartalmaznak, így nehezebben fejthetőek meg vagy törhetőek fel.
A következő lépés a hostapd elindítása:
# /etc/rc.d/hostapd forcestart
# ifconfig wlan0 wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2290 inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255 inet6 fe80::211:95ff:fec3:dac%ath0 prefixlen 64 scopeid 0x4 ether 00:11:95:c3:0d:ac media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap> status: associated ssid freebsdap channel 1 bssid 00:11:95:c3:0d:ac authmode WPA2/802.11i privacy MIXED deftxkey 2 TKIP 2:128-bit txpowmax 36 protmode CTS dtimperiod 1 bintval 100
A hozzáférési pont mostantól működik, innentől a kliensek már képesek csatlakozni hozzá, bővebben lásd a 31.3.3.1.3 Szakaszban. A hozzáférési ponthoz tartozó állomásokat az ifconfig wlan0 list sta paranccsal tudjuk listázni.
A WEP titkosítást nem javasoljuk a hozzáférési pontok esetében, mivel nem tartalmaz semmilyen hitelesítési mechanizmust és könnyen feltörhető. Egyes régebbi vezeték nélküli kártyák azonban csak a WEP által nyújtott védelmet ismerik, ezért az ilyenek csak olyan hozzáférési pontokhoz tudnak csatlakozni, amelyek vagy nem használnank hitelesítést és titkosítást, vagy erre a WEP protokollt használják.
A vezeték nélküli eszközt tegyük hozzáférési pont módba és állítsuk be neki a megfelelő SSID-t és IP-címet:
# ifconfig wlan0 create wlandev ath0 wlanmode hostap # ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 \ ssid freebsdap wepmode on weptxkey 3 wepkey 3:0x3456789012 mode 11g
A weptxkey beállítás után adjuk meg a küldéshez használt WEP kulcsot. Itt a harmadik kulcsot adtuk meg (vegyük észre, hogy a kulcsok számozása az 1 értékkel kezdődik). Ez a paramétert az adatok tényleges titkosításához kell megadni.
A wepkey a kiválasztott WEP kulcs beállítását jelöli, aminek a formátuma index:kulcs. Ha itt nem adunk meg indexet, akkor automatikusan az első kulcsot állítjuk be. Ezért talán mondanunk sem kell, hogy az indexet csak akkor kell megadni, ha nem az első kulcsot akarjuk használni.
A wlan0 felület állapotának megtekintéséhez adjuk ki megint az ifconfig parancsot:
# ifconfig wlan0 ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255 ether 00:11:95:c3:0d:ac media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap> status: running ssid freebsdap channel 4 (2427 Mhz) bssid 00:11:95:c3:0d:ac country US ecm authmode OPEN privacy ON deftxkey 3 wepkey 3:40-bit txpower 21.5 scanvalid 60 protmode CTS wme burst dtimperiod 1 -dfs
Egy másik vezeték nélküli gépről most már megpróbálhatjuk megkeresni a hozzáférési pontot:
# ifconfig wlan0 create wlandev ath0 SSID BSSID CHAN RATE S:N INT CAPS freebsdap 00:11:95:c3:0d:ac 1 54M 22:1 100 EPS
Láthatjuk, hogy a kliens megtalálta a hozzáférési pontot, és a megfelelő paraméterekkel (kulcs stb.) képes kapcsolódni hozzá a 31.3.3.1.4 Szakaszban leírtak szerint.
A vezetékes hálózatok általában jobb teljesítményt nyújtanak és megbízhatóbbak, miközben a vezeték nélküli hálózatok pedig nagyobb rugalmasságot és mozgásteret szolgáltatnak. Ezért a hordozható számítógépek tulajdonosaiban felmerülhet az igény, hogy egyszerre mind a kettőt használva, tetszőlegesen és problémamentesen válthassanak a hálózatok között.
FreeBSD rendszereken ún. “hibatűrő” módon két vagy akár több hálózati interfészt össze tudunk vonni. Ennek köszönhetően az aktív hálózati kapcsolat megszünésekor rendszerünk önállóan igyekszik mindig a fennmaradó elérhető hálózatok közül a leginkább preferáltabbra váltani.
A hálózati összeköttetések összefűzésével és a hibatűrés konkrét megvalósításával az 31.6 Szakaszban foglalkozunk, ahol a 31-3 Példaban láthatjuk is a vezetékes és vezeték nélküli kapcsolatok együttes használatának beállítását.
Ha valamilyen gondunk lenne a vezeték nélküli hálózatok használatával, akad néhány lépés, amivel esetleg fel tudjuk deríteni a hiba okát.
Ha nem látjuk a hozzáférési pontot a pásztázás után, ellenőrizzük, hogy a vezeték nélküli eszközt véletlenül nem korlátoztuk-e le bizonyos csatornákra.
Ha nem tudunk csatlakozni a hozzáférési ponthoz, akkor egyeztessük vele az állomás egyes paramétereit, beleértve a hitelesítési sémát és a biztonsági protokollokat. Minél jobban egyszerűsítsük le a konfigurációkat. Ha WPA vagy WEP titkosítást használunk, akkor a hozzáférési ponton állítsunk be nyílt hitelesítést és kapcsoljuk ki a titkosítást, majd nézzük meg, hogy így eljut-e hozzánk valamilyen forgalom.
Ahogy sikerült csatlakozunk a hozzáférési ponthoz, a biztonsági beállításokat olyan egyszerű eszközökkel próbáljuk meg diagnosztizálni, mint például a ping(8).
A wpa_supplicant
segédprogrammal tudunk nyomkövetést
végezni. A -dd
opció
megadásával indítsuk el
manuálisan és ellenőrizzük a
rendszernaplókat.
Vannak alacsonyabb szintű nyomkövetési lehetőségek is. A 802.11 protokollt támogató rétegben is tudunk engedélyezni nyomkövetési üzeneteket a /usr/src/tools/tools/net80211 könyvtárban található wlandebug program segítségével. Például a
# wlandebug -i ath0 +scan+auth+debug+assoc net.wlan.0.debug: 0 => 0xc80000<assoc,auth,scan>
paranccsal a hozzáférési pontok kereséséhez és a 802.11 protokollon belül a kapcsolat megszervezéséhez szükséges kézfogásokhoz kapcsolódó konzolüzeneteket tudjuk engedélyezni.
A 802.11 rétegben rengeteg hasznos statisztikát találhatunk. Mindezeket a wlanstats eszközzel tudjuk kiíratni. Ezeknek a statisztikáknak a 802.11 réteg összes hibáját be kell tudniuk azonosítaniuk. Vigyázzunk azonban, mert az eszközmeghajtókban a 802.11 réteg alatt rejlő bizonyos hibák ilyenkor nem jelennek meg. Az eszközfüggő problémák felderítésével kapcsolatban a megfelelő meghajtó dokumentációját olvassuk át.
Amennyiben a fenti tanácsok mentén sem sikerül orvosolnunk a hibát okát, küldjünk egy hibajelentést és mellékeljük hozzá a fentebb tárgyalt eszközök által gyártott kimeneteket.
A Bluetooth egy olyan vezeték nélküli technológia, amellyel a 2,4 GHz-es frekvenciatartományban tudunk személyi hálózatokat létrehozni 10 méteren belül. Az ilyen típusú hálózatok általában alkalmi jelleggel keletkeznek különféle hordozható eszközök, mint például mobiltelefonok, kézi számítógépek és laptopok között. Eltérően más népszerű vezeték nélküli technológiáktól, például a wi-fitől, a Bluetooth magasabb szintű szolgáltási profilokat is felajánl: FTP-szerű állományszervereket, az állományok áttolását, hang átküldését, soros vonali emulációt és még sok minden mást.
A FreeBSD-ben megvalósított Bluetooth protokollkészlet a Netgraph rendszerre építkezik (lásd netgraph(4)). A Bluetooth alapú USB-s hardverzárak széles körét támogatja az ng_ubt(4) meghajtó. A Broadcom BCM2033 chipre épített Bluetooth eszközöket az ubtbcmfw(4) és az ng_ubt(4) meghajtók támogatják. A 3Com Bluetooth PC Card 3CRWB60-A eszközt az ng_bt3c(4) meghajtó támogatja. A soros és UART alapú Bluetooth eszközöket a sio(4), ng_h4(4) és hcseriald(8) ismeri. Ebben a szakaszban a Bluetooth alapú USB-s hardverzárak használatát mutatjuk be.
Alapértelmezés szerint a Bluetooth eszközmeghajtók modulként érhetőek el. Az eszköz csatlakoztatása előtt a megfelelő meghajtót be kell töltenünk a rendszermagba:
# kldload ng_ubt
Ha a Bluetooth eszköz már a rendszer indításakor is jelen van, akkor a modult az /boot/loader.conf állományon keresztül is betölthetjük:
ng_ubt_load="YES"
Dugjuk be az USB-s hardverzárunkat. Az alábbihoz hasonló kimenet fog keletkezni a konzolon (vagy a rendszernaplóban):
ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2 ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2 ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3, wMaxPacketSize=49, nframes=6, buffer size=294
Az /etc/rc.d/bluetooth szkript fogja végezni a Bluetooth használatához szükséges protokollkészlet elindítását és leállítását. Jó ötlet leállítani az eszköz eltávolítása előtt, de ha elhagyjuk, (általában) nem okoz végzetes hibát. Az indításkor a következő kimenetet kapjuk:
# /etc/rc.d/bluetooth start ubt0 BD_ADDR: 00:02:72:00:d4:1a Features: 0xff 0xff 0xf 00 00 00 00 00 <3-Slot> <5-Slot> <Encryption> <Slot offset> <Timing accuracy> <Switch> <Hold mode> <Sniff mode> <Park mode> <RSSI> <Channel quality> <SCO link> <HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD> <Paging scheme> <Power control> <Transparent SCO data> Max. ACL packet size: 192 bytes Number of ACL packets: 8 Max. SCO packet size: 64 bytes Number of SCO packets: 8
A Host Controller Interface (HCI) egy parancsfelületet nyújt a működési sáv vezérlőjéhez (baseband controller) és az összeköttetések kezelőjéhez (link manager), valamint hozzáférést a hardverállapot és -vezérlő regiszterekhez. Ez a felület egy egységes módszert szolgáltat a Bluetooth működési sávjához tartozó tulajdonságok eléréséhez. Az eszközön üzemelő HCI réteg a Bluetooth hardverben található HCI firmware-rel vált adatokat és parancsokat. A Host Controller Transport Layer (vagyis a fizikai busz) meghajtója mind a két HCI réteget és a kettejük közti információcserét is elérhetővé teszi.
Az egyes Bluetooth eszközökhöz létrejön egy-egy hci típusú Netgraph-beli csomópont. Ez a HCI csomópont általában a Bluetooth eszközmeghajtó csomópontjához (lefelé) és az L2CAP csomóponthoz (felfelé) csatlakozik. Az összes HCI műveletet a HCI csomóponton kell elvégezni és nem az eszközmeghajtóhoz tartozón. A HCI csomópont alapértelmezett neve a “devicehci”. Ezekről többet az ng_hci(4) man oldalán tudhatunk meg.
Az egyik legáltalánosabb feladat a Bluetooth eszközök esetében a közelben levő további eszközök felderítése. Ezt a műveletet tudakozódásnak (“inquiry”) nevezik. A tudakozódást és az összes többi HCI-hez kapcsolódó műveletet a hccontrol(8) segédprogrammal tudjuk elvégezni. A lentebb látható példa azt mutatja meg, hogyan tudunk Bluetooth eszközöket keresni egy adott távolságon belül. Az elérhető eszközök listáját néhány másodpercen alatt megkapjuk. A távoli azonban eszközök csak akkor fognak válaszolni, ha felderíthető (“discoverable”) módban vannak.
% hccontrol -n ubt0hci inquiry Inquiry result, num_responses=1 Inquiry result #0 BD_ADDR: 00:80:37:29:19:a4 Page Scan Rep. Mode: 0x1 Page Scan Period Mode: 00 Page Scan Mode: 00 Class: 52:02:04 Clock offset: 0x78ef Inquiry complete. Status: No error [00]
A BD_ADDR a Bluetooth eszköz egyedi címe, hasonló a hálózati kártyák MAC-címéhez. Erre a címre lesz szükség ahhoz, hogy a továbbiakban kommunikálni tudjunk az eszközzel. Emberek számára értelmezhető nevet is hozzá tudunk rendelni a BD_ADDR címhez. Az /etc/bluetooth/hosts állomány tartalmazza a Bluetooth eszközökre vonatkozó információkat. A következő példában azt láthatjuk, hogyan tudunk beszédesebb nevet adni egy távoli eszköznek:
% hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4 BD_ADDR: 00:80:37:29:19:a4 Name: Pav T39-ese
Amikor tudakozódni kezdünk a távoli Bluetooth eszközök jelenléte felől, a gépünket “sajat.gep.nev (ubt0)” néven fogják látni. Ez a helyi eszközhöz rendelt név bármikor megváltoztatható.
A Bluetooth rendszer lehetőség ad pont-pont (természetesen csak két Bluetooth egység között) vagy pont-multipont típusú kapcsolatok kiépítésére. A pont-multipont kapcsolat esetén a kapcsolaton több Bluetooth eszköz osztozik. A most következő példában megláthatjuk, hogyan kell az aktív működési sávban lekérdezni a helyi eszköz létrejött kapcsolatait:
% hccontrol -n ubt0hci read_connection_list Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State 00:80:37:29:19:a4 41 ACL 0 MAST NONE 0 0 OPEN
A kapcsolat azonosítója (connection handle) akkor hasznos, amikor egy sávbeli kapcsolatot akarunk lezárni. Ezt általában nem kell kézzel megcsinálni. A rendszer magától lezárja az inaktív sávbeli kapcsolatokat.
# hccontrol -n ubt0hci disconnect 41 Connection handle: 41 Reason: Connection terminated by local host [0x16]
A hccontrol help paranccsal tudjuk lekérdezni az elérhető HCI parancsokat. A legtöbb HCI parancs végrehajtásához nem kellenek rendszeradminisztrátori jogosultságok.
A Logical Link Control and Adaptation Protocol (L2CAP) a kapcsolat-orientált és a kapcsolat nélküli adatszolgáltatásokért felelős a felsőbb rétegek felé, valamit támogatja a protokollok többszörözését, a darabolást és az összerakást. Az L2CAP a magasabb szintű protokollok és az alkalmazások számára egészen 64 kilobyte méretig lehetővé teszi az adatcsomagok küldését és fogadását.
A L2CAP a csatorna (channel) fogalmára építkezik. A csatorna egy logikai kapcsolatot képvisel a működési sávon belüli kapcsolat felett. Mindegyik csatornához egyetlen protokoll kötődik, egy a többhöz alapon. Több csatorna is tarthozhat ugyanahhoz a protokollhoz, de egy csatornán nem használhatunk több protokollt. A csatornákon keresztül érkező L2CAP csomagok ezután a megfelelő felsőbb rétegbeli protokollokhoz kerülnek. Több csatorna osztozhat ugyanazon a sávbeli kapcsolaton.
Minden Bluetooth eszközhöz létrejön egy l2cap típusú Netgraph-csomópont. Az L2CAP csomópont általában egy Bluetooth HCI csomóponthoz (lefelé) és egy Bluetooth sockethez (felfelé) kapcsolódik. Az L2CAP csomópont alapértelmezett neve “devicel2cap”. Erről részletesebben az ng_l2cap(4) man oldal világosít fel minket.
Ezen a szinten hasznos parancsnak bizonyulhat az l2ping(8), amivel más eszközöket tudunk pingelni. Előfordulhat, hogy egyes Bluetooth implementációk nem válaszolnak semmilyen feléjük küldött adatra, így az alábbi példában is szereplő 0 bytes teljesen normális.
# l2ping -a 00:80:37:29:19:a4 0 bytes from 0:80:37:29:19:a4 seq_no=0 time=48.633 ms result=0 0 bytes from 0:80:37:29:19:a4 seq_no=1 time=37.551 ms result=0 0 bytes from 0:80:37:29:19:a4 seq_no=2 time=28.324 ms result=0 0 bytes from 0:80:37:29:19:a4 seq_no=3 time=46.150 ms result=0
Az l2control(8) segédprogram használható az L2CAP csomópontok különböző műveleteinek kivitelezésére. Ebben a példában a helyi eszközhöz tartozó logikai kapcsolatokat (csatornák) és sávokat kérdezzük le:
% l2control -a 00:02:72:00:d4:1a read_channel_list L2CAP channels: Remote BD_ADDR SCID/ DCID PSM IMTU/ OMTU State 00:07:e0:00:0b:ca 66/ 64 3 132/ 672 OPEN % l2control -a 00:02:72:00:d4:1a read_connection_list L2CAP connections: Remote BD_ADDR Handle Flags Pending State 00:07:e0:00:0b:ca 41 O 0 OPEN
Másik ugyanilyen diagnosztikai eszköz a btsockstat(1). Ha a viselkedését tekintjük, akkor leginkább a netstat(1) programra hasonlít, de a Bluetooth hálózatban megjelenő adatszerkezetekkel dolgozik. Az alábbi példa az iménti l2control(8) parancs kimenetében szereplő logikai kapcsolatokat mutatja:
% btsockstat Active L2CAP sockets PCB Recv-Q Send-Q Local address/PSM Foreign address CID State c2afe900 0 0 00:02:72:00:d4:1a/3 00:07:e0:00:0b:ca 66 OPEN Active RFCOMM sessions L2PCB PCB Flag MTU Out-Q DLCs State c2afe900 c2b53380 1 127 0 Yes OPEN Active RFCOMM sockets PCB Recv-Q Send-Q Local address Foreign address Chan DLCI State c2e8bc80 0 250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3 6 OPEN
Az RFCOMM protokoll a soros portok emulációját valósítja meg az L2CAP protokollon keresztül. A protokoll az ETSI TS 07.10. RFCOMM szabványán alapszik, és egy egyszerű átviteli protokoll, amelyet a 9 tűs RS-232 (EIATIA-232-E) soros portok emulációjára készítettek fel. Az RFCOMM protokoll legfeljebb 60 kapcsolat (RFCOMM csatorna) párhuzamos használatát támogatja két Bluetooth eszköz között.
Az RFCOMM számára a teljes kommunikációs útvonal két különböző eszközön futó alkalmazást (kommunikációs végpontot) és köztük levő kommunikációs szegments foglalja magában. Az RFCOMM az adott eszközön a soros portot használó alkalmazások részére készült. A kommunikációs szegmens az egyik eszköztől a másikig vezető Bluetooth alapú összeköttetés (közvetlen kapcsolat).
Közvetlen kapcsolat esetén az RFCOMM csak az eszközök közti kapcsolattal foglalkozik, valamint hálózati kapcsolat esetén az eszköz és a modem közti kapcsolattal. Az RFCOMM más konfigurációkat is támogat, például olyan modulokat, amelyek az egyik oldalon a Bluetooth vezeték nélküli technológián keresztül kommunikálnak, míg a másik oldalon egy vonalas felületet nyújtanak.
A FreeBSD-ben az RFCOMM protokollt Bluetooth foglalatok rétegében valósították meg.
Alapértelmezés szerint a Bluetooth kommunikáció nem hitelesítődik és bármelyik eszköz képes bármelyik másikkal felvenni a kapcsolatot. Egy Bluetooth eszköz (például egy mobiltelefon) egy adott szolgáltatáshoz igényelhet hitelesítést (például betárcsázáshoz). A Bluetooth alapú hitelesítés többnyire PIN kódokkal történik. A PIN kód egy legfeljebb 16 karakterből álló ASCII karakterlánc. A felhasználóknak mind a két eszközön ugyanazt a PIN kódot kell megadniuk. Miután megadtuk a PIN kódot, az eszközök létrehoznak hozzájuk egy összekötettésbeli kulcsot (link key). Ezután ezt a kulcsot vagy az eszközökön tároljuk vagy pedig valamilyen tartós tárolón. A következő alkalommal mind a két eszközt ezt a korábban elkészített kulcsot fogja használni. Ezt az eljárást nevezik párosításnak (pairing). Ha valamelyik eszköz elveszti az össszeköttetés kulcsát, akkor a párosítást meg kell ismételni.
A hcsecd(8) démon felelős az összes Bluetooth alapú hitelesítési kérés lekezeléséért. Az alapértelmezett konfigurációs állománya az /etc/bluetooth/hcsecd.conf. Például így tudjuk benne egy mobiltelefonhoz megadni az “1234” PIN kódot:
device { bdaddr 00:80:37:29:19:a4; name "Pav T39-ese"; key nokey; pin "1234"; }
Semmilyen korlátozás nincs a PIN
kódokra (a méretüktől eltekintve).
Egyes eszközökbe (például a Bluetooth
fejhallgatók) előre rögzített PIN
kódot építettek bele. A
-d
kapcsoló hatására a
hcsecd(8) démont az előtérben lehet
futtatni, így könnyebben láthatjuk mi
történik. A távoli eszközt
állítsuk be a párosítás
elfogadására és kezdeményezzünk
felé egy Bluetooth kapcsolatot. A távoli
eszköznek erre azt kell válaszolnia, hogy elfogadta
a párosítást, majd kérni fogja a PIN
kódot. Adjuk meg ugyanazt a PIN kódot, mint amit
a hcsecd.conf állományba is
beírtunk. Most már a gépünk és
a távoli eszköz párban vannak. A
párosítást a távoli
eszközről is kezdeményezhetjük.
A FreeBSD 5.5, 6.1 és újabb változataiban az /etc/rc.conf állományba a következő sort kell felvenni a hcsecd automatikus indításához:
hcsecd_enable="YES"
Ez pedig a hcsecd démon által generált kimenetre példa:
hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4
A Service Discovery Protocol (SDP) segítségével a kliens alkalmazások képes felderíteni, hogy a szerver alkalmazások részéről milyen szolgáltatások érhetőek el, valamint ezek a szolgáltatások milyen tulajdonságokkal rendelkeznek. A szolgáltatások tulajdonsági közé soroljuk többek között a felajánlott szolgáltatás típusát vagy osztályát, illetve a szolgáltatás kihasználásához szükséges mechanizmusra vagy protokollra vonatkozó információkat.
Az SDP az SDP szerver és az SDP kliens közti kommunikációt foglalja magában. A szerver karbantart egy listát azokról a szolgáltatási rekordokról, amelyek a szerverhez tartozó szolgáltatások jellemzőit írják le. Mindegyik ilyen szolgáltatási rekord egyetlen szolgáltatás adatait tartalmazza. A kliensek egy SDP kéréssel ezeket a szolgáltatási rekordokat kérhetik el az SDP szervertől. Amennyiben a kliens, vagy a hozzá tartozó alkalmazás a szolgáltatás használata mellett dönt, akkor a szolgáltatás használatához a megfelelő szolgáltató felé nyitnia kell egy külön kapcsolatot. Az SDP csak a szolgáltatások és azok tulajdonságainak felderítéséhez ad segítséget, de semmilyen eszközt nem tartalmaz a felhasználásukra.
Általában az SDP kliensek általában valamilyen számunkra kellő tulajdonság alapján keresnek szolgáltatásokat. Ráadásul adódhatnak olyan alkalmak is, amikor a szolgáltatások előzetes ismerete nélkül szeretnénk felderíteni a rendelkezésre álló szolgáltatások típusait. A felajánlott szolgáltatások ilyen típusú feldolgozását nevezzük böngészésnek (browsing).
Az sdpd(8) Bluetooth SDP szerver és a parancssoros sdpcontrol(8) kliens az alap FreeBSD telepítés része. Az alábbi példában egy SDP böngészési kérést adunk ki:
% sdpcontrol -a 00:01:03:fc:6e:ec browse Record Handle: 00000000 Service Class ID List: Service Discovery Server (0x1000) Protocol Descriptor List: L2CAP (0x0100) Protocol specific parameter #1: u/int/uuid16 1 Protocol specific parameter #2: u/int/uuid16 1 Record Handle: 0x00000001 Service Class ID List: Browse Group Descriptor (0x1001) Record Handle: 0x00000002 Service Class ID List: LAN Access Using PPP (0x1102) Protocol Descriptor List: L2CAP (0x0100) RFCOMM (0x0003) Protocol specific parameter #1: u/int8/bool 1 Bluetooth Profile Descriptor List: LAN Access Using PPP (0x1102) ver. 1.0
és így tovább. Mindegyik szolgáltatáshoz hozzátartozik a tulajdonságok egy listája (például RFCOMM csatorna). Lehetséges, hogy szolgáltatástól függően bizonyos tulajdonságokat kell figyelnünk. Egyes Bluetooth implementációk nem támogatják a szolgáltatások böngészését és ezért egy üres listát adnak vissza. Ebben az esetben egy konkrét szolgáltatásra tudunk rákeresni. A következő példában az OBEX Object Push (OPUSH) szolgáltatást keressük:
% sdpcontrol -a 00:01:03:fc:6e:ec search OPUSH
FreeBSD alatt az sdpd(8) szerverrel tudunk szolgáltatásokat felajánlani a Bluetooth klienseknek. A FreeBSD 5.5, 6.1 vagy későbbi változataiban ehhez a következő sort kell megadnunk az /etc/rc.conf állományban:
sdpd_enable="YES"
Ezután az sdpd démon így indítható el:
# /etc/rc.d/sdpd start
A távoli kliensek részére Bluetooth szolgáltatásokat felajánlani kívánó helyi szerver alkalmazásoknak regisztrálniuk kell magukat a helyi SDP démonnál. Például az egyik ilyen alkalmazás az rfcomm_pppd(8), és elindítása után regisztrálni fogja a Bluetooth LAN szolgáltatást a helyi SDP démonnál.
A helyi SDP szerveren regisztrált szolgáltatásokat a helyi vezérlési csatornán keresztül egy browse kéréssel tudjuk lekérdezni:
# sdpcontrol -l browse
A betárcsázós hálózati (Dial-Up Networking, DUN) profil leggyakrabban a modemek és mobiltelefonok között tűnik fel. Ez a profil a következő forgatókönyveket dolgozza fel:
A számítógépünkkel egy mobiltelefont vagy modemet vezeték nélküli modemként használunk, amivel az internethez vagy más hálózatokhoz csatlakozunk betárcsázással.
A számítógépünkkel egy mobiltelefonon vagy modemen keresztül fogadunk adathívásokat.
A PPP hálózati hozzáférési (LAN) profil a következő helyezetekben alkalmazható:
LAN hozzáférés egyetlen Bluetooth eszközhöz
LAN hozzáférés több Bluetooth eszközhöz
Két gép összekötése (a soros vonali kapcsolat emulációval PPP-n keresztül)
FreeBSD alatt mind a két profilt a ppp(8) és az rfcomm_pppd(8) valósítja meg — egy olyan wrapper eszköz, amely az RFCOMM Bluetooth kapcsolatokat a PPP számára is értelmessé alakítja át. Mielőtt még bármelyik profilt elkezdenénk használni, egy új PPP címkét kell létrehozni az /etc/ppp/ppp.conf állományban. Erre példát az rfcomm_pppd(8) man oldalon találhatunk.
A következő példában az rfcomm_pppd(8) programot fogjuk használni arra, hogy egy RFCOMM típusú kapcsolatot nyissunk a 00:80:37:29:19:a4 címmel rendelkező távoli Bluetooth eszköz felé. A tényleges RFCOMM csatorna számát SDP-n keresztül a távoli eszköztől kapjuk. Az RFCOMM csatorna kézzel is megadható, és ilyen esetekben az rfcomm_pppd(8) nem fog SDP kérést küldeni. A sdpcontrol(8) használatával tudjuk lekérdezni a távoli eszközön létrejött RFCOMM csatornát.
# rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup
A PPP hálózati elérés (LAN) szolgáltatás beindításához futni kell a sdpd(8) szervernek. A helyi hálózaton keresztül csatlakozó kliensekhez létre kell hozni egy új bejegyzést az /etc/ppp/ppp.conf állományban. Az rfcomm_pppd(8) man oldalon találhatunk erre példákat. Végezetül indítsuk el az RFCOMM PPP szervert egy érvényes RFCOMM csatornaszámmal. Az RFCOMM PPP szerver ekkor automatikusan regisztrálja a Bluetooth LAN szolgáltatást a helyi SDP démonnál. A következő példában megmutatjuk, hogyan lehet elindítani egy RFCOMM PPP szervert:
# rfcomm_pppd -s -C 7 -l rfcomm-server
Az OBEX egy széles körben alkalmazott protokoll a mobileszközök közti egyszerű állományvitelre. Legfőképpen az infravörös kommunikációban alkalmazzák, ahol a laptopok vagy PDA-k közti általános állományátvitelre használják, illetve névjegykártyák vagy naptárbejegyzések átküldésére mobiltelefonok között és egyéb PIM alkalmazást futtató eszközök esetében.
Az OBEX szervert és klienst egy külső csomag, az obexapp valósítja meg, amelyet az comms/obexapp portból érhetünk el.
Az OBEX kliens használható objektumok áttolására vagy lehúzására az OBEX szerverhez. Ez az objektum lehet például egy névjegykártya vagy egy megbeszélt találkozó. Az OBEX kliens SDP-n keresztül tud magának RFCOMM csatornaszámot szerezni. Ezt úgy tehetjük meg, ha a szolgáltatás neve helyett egy RFCOMM csatorna számát adjuk meg. A támogatott szolgáltatások: IrMC, FTRN és OPUSH. Számként RFCOMM csatorna is megadható. Az alábbi példában egy OBEX munkamenetet láthatunk, ahol az eszköz információs objektumát húzzuk le a mobiltelefonról és egy új objektumot (egy névjegykártyát) tolunk fel a telefon könyvtárába.
% obexapp -a 00:80:37:29:19:a4 -C IrMC obex> get telecom/devinfo.txt devinfo-t39.txt Success, response: OK, Success (0x20) obex> put new.vcf Success, response: OK, Success (0x20) obex> di Success, response: OK, Success (0x20)
Az OBEX objektumok tologatásának támogatásához az sdpd(8) szervernek kell futnia. Továbbá a beérkező objektumok tárolásához létre kell hoznunk még egy könyvtárat is. Ez az könyvtár alapértelmezés szerint a /var/spool/obex. Végül indítsuk el az OBEX szervert egy érvényes RFCOMM csatorna számának megadásával. Az OBEX szerver ezután automatikusan regisztrálja az “OBEX Object Push” nevű szolgáltatást a helyi SDP démonnál. Ebben a példában láthatjuk az OBEX szerver indítását:
# obexapp -s -C 10
A soros vonali profil (Serial Port Profile, SPP) használatával RS232 (vagy ahhoz hasonló) vonali adatátvitelt tudunk emulálni. Ez a profil a régebben fejlesztett alkalmazásokkal birkózik meg, és a Bluetooth technológiával valódi kábel helyett egy virtuális soros portot képez le.
Az rfcomm_sppd(1) segédprogram ezt a soros vonali profilt valósítja meg. Így egy pszeudo terminált tudunk virtuális soros portként használni. Ha nem adunk meg RFCOMM csatornát, akkor az rfcomm_sppd(1) képes SDP-n keresztül kérni egyet magának a távoli eszköztől. Ha ezt felül kívánjuk bírálni, akkor a parancssorban megadhatunk akár egy konkrét RFCOMM csatornát is.
# rfcomm_sppd -a 00:07:E0:00:0B:CA -t /dev/ttyp6 rfcomm_sppd[94692]: Starting on /dev/ttyp6...
Miután csatlakoztunk, a pszeudo terminált tudjuk soros portként használni:
# cu -l ttyp6
Egyes Bluetooth eszközök nem támogatják a szerepek cseréjét (role switch). Alapértelmezés szerint amikor a FreeBSD elfogad egy új kapcsolatot, megpróbál rajta szerepet cserélni és mesterré válni. Azok az eszközök, amelyek ezt nem támogatják, nem lesznek képesek emiatt csatlakozni. Ez a szerepváltás az új kapcsolatok felépítése során zajlik le, ezért egy távoli eszköztől nem lehet megtudni, hogy ismeri-e ezt a lehetőséget. A helyi oldalon a következő HCI opcióval lehet kikapcsolni a szerepcserét:
# hccontrol -n ubt0hci write_node_role_switch 0
Persze, igen. Egy külső csomag, a hcidump segítségével, amely a comms/hcidump portból érhető el. A hcidump segédprogram a tcpdump(1) programhoz hasonlítható. Ezzel lehet a Bluetooth csomagok tartalmát megnézni a terminálon vagy elmenteni ezeket egy állományba.
Gyakran hasznos lehet anélkül felosztani egy fizikai hálózatot (például egy Ethernet szegmenst) két külön hálózati szegmensre, hogy külön IP-alhálózatot kellene létrehozunk és összekötnünk ezeket egy útválasztóval. A két ilyen módon kialakított hálózatot összekötő eszközt nevezzük “hálózati hídnak” (bridge). A legalább két hálózati felülettel rendelkező FreeBSD rendszerek képesek hálózati híd szerepét betölteni.
A hálózati híd az eszközök adatkapcsolati rétegben a hozzá tartozó felületein megjelenő (vagyis Ethernet) címének megtanulásával működik. A két hálózat között csak akkor közvetít forgalmat, amikor a forrás és cél nem ugyanabban a hálózatban található.
A hálózati hidak bizonyos szempontból lényegében nagyon kevés porttal rendelkező Ethernet switch-ek.
Napjainkban akad néhány igen jellemző szituáció, ahol szükség van a hálózati hidak alkalmazására.
A hálózati hidak alapvető feladata két vagy több hálózati szegmens összekötése. Az egyszerű hálózati környezet felállítása helyett több okból is felmerülhet a hidak létrehozása: kábelezési megszorítások, tűzfalazás vagy pszeudo hálózatok, például virtuális gépek felületének csatlakoztatása miatt. Egy híd használatával ráadásul össze tudunk kötni egy vezeték nélküli hozzáférési pontként üzemelő felületet egy vezetékes hálózattal.
Sokszor előfordulhat, hogy útválasztás vagy hálózati címfordítás (NAT) nélkül szeretnénk tűzfalat használni.
Példaként képzeljünk el egy olyan kis méretű céget, amely egy DSL vagy ISDN vonalon kapcsolódik az internet-szolgáltatójához. A szolgáltatótól 13, mindenki által használható IP-címet kaptak és a hálózatukban 10 gép van. Ebben a helyzetben egy útválasztást végző tűzfal működtetése nehézkessé válna az alhálózatok problémái miatt.
Egy hídként viselkedő tűzfallal azonban minden IP számozási probléma nélkül egyszerűen be tudjuk dobni a gépeket a DSL/ISDN útválasztó mögé.
Egy hálózati híddal úgy kapcsolunk össze két hálózati szegmenst, hogy közben meg tudjuk vizsgálni a kettejük között mozgó Ethernet kereteket. Ezt a híd felületen a bpf(4) valamint a tcpdump(1) segítségével tudjuk megoldani, vagy úgy, ha egy másik felületen elküldjük az összes keret másolatát (span, vagyis feszítő port).
A két Ethernet hálózatot egy IP alapú összeköttetésen keresztül is össze tudunk kötni, ha a hálózatokat egy EtherIP járaton keresztül kötjük össze híddal, vagy egy OpenVPN-hez hasonló tap(4) alapú megoldással.
A hálózatokat több linken keresztül kötjük össze és a redundáns útvonalakat a feszítőfa protokollal (Spanning Tree Protocol, STP). Az Ethernetes hálózatok esetében a megfelelő működéshez a két eszköz között csak egyetlen aktív útvonal létezhet, így a feszítőfa protokoll észleli a hurkokat és a redundáns összeköttetéseket blokkolt állapotba teszi. Amikor azonban az aktív linkek egyike meghibásodik, akkor a protokoll újraszámolja a fát és a hálózati pontjai közti konnektivitást megpróbálja helyreállítani az addig blokkolt linkek ismételt engedélyezésével.
Ebben a szakaszban az if_bridge(4) hálózati híd implementációval foglalkozunk, de a Netgraph segítségével is tudunk hidakat építeni. Ez utóbbiról az ng_bridge(4) man oldalon olvashatunk.
Amikor létrehozunk egy hálózati hidat, az ifconfig(8) automatikusan betölti a hozzá tartozó meghajtót. Ha viszont a rendszermag beállításait tartalmazó állományba felvesszük a device if_bridge sort, akkor akár be is építhetjük a rendszermagba.
A csomagszűrés minden olyan tűzfallal használható, amely a pfil(9) rendszerre kapcsolódik. Maga a tűzfal is betölthető modulként, vagy belefordítható a rendszermagba.
A hálózati híddal forgalmat is tudunk szabályozni az altq(4) vagy a dummynet(4) segítségével.
Hálózati hidak felületek klónozásával hozhatóak létre. A híd létrehozásához használjuk az ifconfig(8) programot, és a megfelelő meghajtó automatikusan betöltődik, ha nem lenne még elérhető a rendszermagban.
# ifconfig bridge create bridge0 # ifconfig bridge0 bridge0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 96:3d:4b:f1:79:7a id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200 root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0
Ekkor létrejön a hálózati hídhoz tartozó felület és véletlenszerűen generálódik hozzá egy Ethernetes cím. A maxaddr és a timeout paraméterek vezérlik, hogy a híd mennyi MAC-címet tartson meg a keretek továbbításáért felelős táblázatban és mennyi másodperc után töröljön automatikusan egy bejegyzést a legutolsó használat után. A többi paraméter a feszítőfa működését irányítja.
Vegyük fel a hídhoz tartozó hálózati tagfelületeket. A híd csak akkor fog a tagfelületek között csomagokat továbbküldeni, amikor a híd és a tagok is up állapotban vannak:
# ifconfig bridge0 addm fxp0 addm fxp1 up # ifconfig fxp0 up # ifconfig fxp1 up
A híd most már átküldi az Ethernet kereteket a fxp0 és fxp1 felületek között. Az iméntiekkel megegyező konfigurációt az /etc/rc.conf állományban így alakíthatjuk ki:
cloned_interfaces="bridge0" ifconfig_bridge0="addm fxp0 addm fxp1 up" ifconfig_fxp0="up" ifconfig_fxp1="up"
Ha a hídhoz IP-címet is rendelni akarunk, akkor inkább magánál a hídnál adjuk meg, ne a tagoknál. Ezt statikusan vagy DHCP használatával is megtehetjük:
# ifconfig bridge0 inet 192.168.0.1/24
A hídhoz IPv6 címet is hozzá tudunk rendelni.
Ha engedélyezzük a csomagszűrést, a hídon áthaladó csomagok először a küldő felület érkezési oldalára kerülnek, majd a hídra, végül a megfelelő irányban levő felület küldési oldalára. Bármelyik fázis letiltható. Amikor a csomagok áramlásának iránya fontos számunkra, akkor jobban járunk, ha nem magára a hídra, hanem csak a tagfelületekre állítjuk be a tűzfalat.
A híd számos módosítható beállítással rendelkezik a nem-IP és ARP csomagok átküldésére, valamint arra, hogy az IPFW tűzfal adatkapcsolati réteg szintjén működhessen. Az if_bridge(4) man oldal ennek részleteit tárja fel.
A híd meghajtója a gyors feszítőfa protokollt (Rapid Spanning Tree Protocol, RSTP avagy 802.1w) valósítja meg, ami visszafelé kompatibilis a korábban említett feszítőfa protokollal. A feszítőfákat a hálózati topológiában felbukkanó hurkok észlelésére és eltávolítására alkalmazzák. Az RSTP azonban a hagyományos STP-nél valamivel gyorsabb konvergenciát ígér, mivel itt a szomszédos switch-ek kicserélik egymás között az adataikat, és így újabb hurkok létrehozása nélkül képesek viszonylag gyorsan egyik állapotból átváltani a másikba.
Az alábbi táblázat a támogatott működési módokat láthatjuk:
Operációs rendszer | STP módok | Alapértelmezés |
---|---|---|
FreeBSD 5.4—FreeBSD 6.2 | STP | STP |
FreeBSD 6.3+ | RSTP vagy STP | STP |
FreeBSD 7.0+ | RSTP vagy STP | RSTP |
A tagfelületeken az stp paranccsal tudjuk engedélyezni a feszítőfák használatát. Az fxp0 és fxp1 felületeket összekötő hídfelület esetében tehát így:
# ifconfig bridge0 stp fxp0 stp fxp1 bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether d6:cf:d5:a0:94:6d id 00:01:02:4b:d4:50 priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200 root id 00:01:02:4b:d4:50 priority 32768 ifcost 0 port 0 member: fxp0 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP> port 3 priority 128 path cost 200000 proto rstp role designated state forwarding member: fxp1 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP> port 4 priority 128 path cost 200000 proto rstp role designated state forwarding
Láthatjuk, hogy a híd a feszítőfában megkapta a 00:01:02:4b:d4:50-es azonosítót és a 32768-as prioritást. Mivel root id értéke is ugyanez, elmondhatjuk, hogy ez a fa gyökereként funkcionáló híd.
Ha a hálózaton már valahol létezik egy másik híd:
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 96:3d:4b:f1:79:7a id 00:13:d4:9a:06:7a priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200 root id 00:01:02:4b:d4:50 priority 32768 ifcost 400000 port 4 member: fxp0 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP> port 4 priority 128 path cost 200000 proto rstp role root state forwarding member: fxp1 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP> port 5 priority 128 path cost 200000 proto rstp role designated state forwarding
A root id 00:01:02:4b:d4:50 priority 32768 ifcost 400000 port 4 sor mutatja, hogy a fa gyökerét képező híd most a 00:01:02:4b:d4:50 azonosítóval rendelkezik, és ezt a hidat 400000-res költséggel éri el a port 4 (a 4. porton) keresztül, amely jelen esetben az fxp0 felület.
A hidak támogatják az ún. megfigyelési módot, ahol a csomagokat a bpf(4) feldolgozásuk után eldobja, így nem folytatódik a feldolgozásuk vagy nem haladnak tovább. Ennek kihasználásával a két vagy több felületen érkező adatokat egyetlen bpf(4) folyammá tudjuk alakítani. Ez olyan hálózati csapok forgalmának átszerkesztésében hasznos, ahol a két különböző felületen keresztül küldjük ki az RX/TX (fogadás/küldés) jeleket.
Az alábbi paranccsal tudjuk megoldani, hogy négy felületről érkező adatot legyünk képesek egyetlen folyamként olvasni:
# ifconfig bridge0 addm fxp0 addm fxp1 addm fxp2 addm fxp3 monitor up # tcpdump -i bridge0
A hídhoz befutó Ethernet keretek mindegyikéről készül egy másolat, ami egy megadott feszítő porton keresztül megy tovább. Hidanként végtelen számú ilyen feszítő port létezhet, és ha egy felületet feszítő portnak adtunk meg, akkor hagyományos portként már nem használhatjuk. Ez leginkább akkor hasznos, amikor passzívan akarjuk megfigyelni a híddal rendelkező hálózatot a híd valamelyik feszítő portjára csatlakozó gépről.
Küldessük az összes keretről egy másolatot az fxp4 felületre:
# ifconfig bridge0 span fxp4
A privát felületek (private interface) csak más privát felületek felé küldenek tovább adatot. Így feltétel nélkül tudjuk korlátozni a forgalmat, és sem Ethernet keretek, sem pedig ARP nem megy keresztül rajtuk. Ha viszont szelektíven akarjuk korlátozni a forgalmat, akkor helyette használjunk tűzfalat.
Ha a híd egyik tagfelületét tapadósnak (sticky) adjuk meg, akkor a dinamikusan megtanult címek bejegyzései a gyorsítótárba kerülésük után állandósulnak. A tapadós bejegyzések soha nem évülnek el vagy cserélődnek le, még abban az esetben sem, ha utána az adott címet egy másik felületről látjuk. Így a továbbításra vonatkozó táblázatot nem kell előre feltöltenünk, és a híd egyik oldalán meglátott kliensek nem képesek átvándorolni egy másik hálózati szegmensbe.
Másik ilyen példa a tapadós címek használatára az lehetne, amikor a hidat VLAN-nal kombináljuk, és így egy olyan útválasztót hozunk létre, ahol az ügyfeleink az IP-címtartomány pocséklása nélkül zárhatóak el egymástól. Tegyük fel, hogy az A-ugyfel a vlan100, és a B-ugyfel a vlan101 felületen csatlakozik. A híd IP-címe 192.168.0.1, amely maga is egy internet felé mutató útválasztó.
# ifconfig bridge0 addm vlan100 sticky vlan100 addm vlan101 sticky vlan101 # ifconfig bridge0 inet 192.168.0.1/24
Mind a két kliens a 192.168.0.1 címet látja alapértelmezett átjáróként, és mivel a híd gyorsítótára tapadós bejegyzéseket tartalmaz, a MAC-címeik meghamisításával nem tudják elcsípni a másikuk forgalmát.
A VLAN-ok közti bárminemű kommunikációt privát felületek létrehozásával akadályozzuk meg (vagy egy tűzfallal):
# ifconfig bridge0 private vlan100 private vlan101
Ezzel a megoldással az ügyfeleinket teljesen elszigeteljük egymástól úgy, hogy közben az egész /24 címtartomány külön alhálózatok kialakítása nélkül kiosztható.
Korlátozhatóak az egy felület mögül küldeni képes egyedi MAC-címek. Amikor ezen a határon felül érkeznek ismeretlen feladótól csomagok, egészen addig eldobjuk ezeket, amíg egy korábban már regisztrált bejegyzést a rendszer ki nem töröl vagy ki nem veszünk a gyorsítótárból.
A következő példában az vlan100 felületen csatlakozó A-ugyfel számára korlátozzuk le 10-re az Ethernet eszközök számát:
# ifconfig bridge0 ifmaxaddr vlan100 10
A hidak és az STP paraméterei az alap FreeBSD rendszerben megtalálható SNMP démonnal felügyelhetőek. A hídhoz exportált felügyeleti információk (Management Information Base, MIB) megfelelnek az IETF által előírt szabványoknak, így akár tetszőleges SNMP kliens vagy bármilyen más felügyeleti szoftver alkalmas az olvasásukra.
A hidat működtető gépen az /etc/snmp.config állományban engedélyezzük a begemotSnmpdModulePath."bridge" = "/usr/lib/snmp_bridge.so" sort és indítsuk el a bsnmpd démont. Itt még szükség lehet más beállítások, például a közösségek nevének (community name) vagy a hozzáférési listák (access list) módosítására is. Ezzel kapcsolatban a bsnmpd(1) és az snmp_bridge(3) man oldalakat lapozzuk fel.
A következő példában a Net-SNMP nevű szoftver (net-mgmt/net-snmp) fogjuk használni a híd elérésére, de ugyanerre a net-mgmt/bsnmptools port is alkalmas. Az SNMP klienst használó gépen egészítsük ki az $HOME/.snmp/snmp.conf állományt a híd felügyeleti információinak importálásával az Net-SNMP rendszerébe:
mibdirs +/usr/share/snmp/mibs mibs +BRIDGE-MIB:RSTP-MIB:BEGEMOT-MIB:BEGEMOT-BRIDGE-MIB
Az IETF BRIDGE-MIB (RFC 4188) használatán keresztül így tudjuk elindítani egy híd felügyeletét:
% snmpwalk -v 2c -c public bridge1.example.com mib-2.dot1dBridge BRIDGE-MIB::dot1dBaseBridgeAddress.0 = STRING: 66:fb:9b:6e:5c:44 BRIDGE-MIB::dot1dBaseNumPorts.0 = INTEGER: 1 ports BRIDGE-MIB::dot1dStpTimeSinceTopologyChange.0 = Timeticks: (189959) 0:31:39.59 centi-seconds BRIDGE-MIB::dot1dStpTopChanges.0 = Counter32: 2 BRIDGE-MIB::dot1dStpDesignatedRoot.0 = Hex-STRING: 80 00 00 01 02 4B D4 50 ... BRIDGE-MIB::dot1dStpPortState.3 = INTEGER: forwarding(5) BRIDGE-MIB::dot1dStpPortEnable.3 = INTEGER: enabled(1) BRIDGE-MIB::dot1dStpPortPathCost.3 = INTEGER: 200000 BRIDGE-MIB::dot1dStpPortDesignatedRoot.3 = Hex-STRING: 80 00 00 01 02 4B D4 50 BRIDGE-MIB::dot1dStpPortDesignatedCost.3 = INTEGER: 0 BRIDGE-MIB::dot1dStpPortDesignatedBridge.3 = Hex-STRING: 80 00 00 01 02 4B D4 50 BRIDGE-MIB::dot1dStpPortDesignatedPort.3 = Hex-STRING: 03 80 BRIDGE-MIB::dot1dStpPortForwardTransitions.3 = Counter32: 1 RSTP-MIB::dot1dStpVersion.0 = INTEGER: rstp(2)
A példában látszik, hogy a dot1dStpTopChanges.0 értéke kettő, ami arra utal, hogy az STP híd topológiája kétszer változott. A topológia változása pedig azt jelenti, hogy a hálózaton belül egy vagy több link állapota megváltozott vagy egyszerűen meghibásodott és ezért egy új fát kellett számolni. A dot1dStpTimeSinceTopologyChange.0 érték adja meg, hogy ez pontosan mikor is történt.
Több híd felületének felügyeletéhez a belső BEGEMOT-BRIDGE-MIB parancsot is használhatjuk:
% snmpwalk -v 2c -c public bridge1.example.com enterprises.fokus.begemot.begemotBridge BEGEMOT-BRIDGE-MIB::begemotBridgeBaseName."bridge0" = STRING: bridge0 BEGEMOT-BRIDGE-MIB::begemotBridgeBaseName."bridge2" = STRING: bridge2 BEGEMOT-BRIDGE-MIB::begemotBridgeBaseAddress."bridge0" = STRING: e:ce:3b:5a:9e:13 BEGEMOT-BRIDGE-MIB::begemotBridgeBaseAddress."bridge2" = STRING: 12:5e:4d:74:d:fc BEGEMOT-BRIDGE-MIB::begemotBridgeBaseNumPorts."bridge0" = INTEGER: 1 BEGEMOT-BRIDGE-MIB::begemotBridgeBaseNumPorts."bridge2" = INTEGER: 1 ... BEGEMOT-BRIDGE-MIB::begemotBridgeStpTimeSinceTopologyChange."bridge0" = Timeticks: (116927) 0:19:29.27 centi-seconds BEGEMOT-BRIDGE-MIB::begemotBridgeStpTimeSinceTopologyChange."bridge2" = Timeticks: (82773) 0:13:47.73 centi-seconds BEGEMOT-BRIDGE-MIB::begemotBridgeStpTopChanges."bridge0" = Counter32: 1 BEGEMOT-BRIDGE-MIB::begemotBridgeStpTopChanges."bridge2" = Counter32: 1 BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot."bridge0" = Hex-STRING: 80 00 00 40 95 30 5E 31 BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot."bridge2" = Hex-STRING: 80 00 00 50 8B B8 C6 A9
Így tudjuk megadni, hogy a hidat mib-2.dot1dBridge részfán keresztül akarjuk megfigyelni:
% snmpset -v 2c -c private bridge1.example.com BEGEMOT-BRIDGE-MIB::begemotBridgeDefaultBridgeIf.0 s bridge2
A lagg(4) felület lehetővé teszi, hogy több hálózati felületet egyetlen virtuális felületként fűzzünk össze, és ezzel egy hibatűrő és nagysebességű összeköttetést alakítsunk ki.
Csak az elsődlegesként kijelölt porton keresztül fogad és küld adatokat. Amikor ez az elsődleges port elérhetetlenné válik, a következő aktív portot fogja használni. Az elsőként felvett felület válik automatikusan az elsődleges porttá, és az utána felvett összes többit pedig csak hiba esetén használjuk.
A Cisco Fast EtherChannel (FEC) technológia támogatása. Ez egy statikus beállítás, és nem egyezteti az összefűzést a többiekkel vagy a linkek felügyeletéhez nem vált kereteket. Ha a switch támogatja az LACP használatát, akkor inkább azt válasszuk.
A FEC a kimenő forgalmat a fejlécekben szereplő protokollok alapján számolt hasítókóddal próbálja szétosztani az aktív portok között, és tetszőleges aktív porton fogad beérkező adatokat. Az említett hasítókódban egy Ethernetes forrás- és célcím szerepel, valamint ha elérhető, akkor egy VLAN címke, illetve az IPv4/IPv6 forrás- és célcím.
Az IEEE 802.3ad Link Aggregation Control Protocol (LACP) és a Marker Protcol támogatása. Az LACP megpróbálja egyeztetni a többi géppel az összefűzhető linkeket egy vagy több csoportban (Link Aggregated Group, LAG). Mindegyik ilyen csoportban ugyanolyan sebességű portokat találunk, full-duplex működési módban. A forgalmat így a legnagyobb összsebességgel rendelkező csoportban megtalálható portok között osztja el, ami a legtöbb esetben az összes portot magában foglaló csoport. A fizikai konnektivitás megváltozása esetén a linkek összefűződése igen gyorsan alkalmazkodik az új konfigurációhoz.
Az LACP a kimenő forgalmat az aktív portok között osztja szét fejlécekben szereplő protokollok alapján számolt hasítókóddal, és bármelyik aktív portról fogad bejövő forgalmat. A hasítókódban megtalálható az Ethernetes forrás- és célcím, valamint ha elérhető, akkor a VLAN címke, illetve az IPv4/IPv6 forrás- és célcímek.
Ez a FEC mód másik neve.
A kimenő forgalmat egy körkörös (Round-Robin) elvű ütemezővel osztja szét az aktív portok között és tetszőleges aktív portról fogad bejövő forgalmat. Ez a működési mód megsérti az Ethernet keretek rendezését és csak nagy körültekintés mellett alkalmazzuk.
Példa 31-1. LACP alapú összefűzés egy Cisco® switch-csel
Ebben a példában egy FreeBSD-s gép két felületét kapcsoljuk össze switch-csel egy egyszerű terhelés-kiegyenlítéssel és hibatűréssel beállított linken keresztül. Mivel az Ethernet keretek sorrendje döntő fontosságú, ezért a két állomás között egyazon fizikai linken zajló forgalom maximális sebességét az adott felület kapacitása korlátozza. A küldési algoritmus a lehető legtöbb információ alapján próbálja egymástól megkülönböztetni a forgalmakat és elosztani ezeket a rendelkezésre álló felületek között.
A Cisco switch-en vegyünk fel a FastEthernet0/1 és FastEthernet0/2 interfészeket az 1 csoportba (channel group):
interface FastEthernet0/1 channel-group 1 mode active channel-protocol lacp ! interface FastEthernet0/2 channel-group 1 mode active channel-protocol lacp
A FreeBSD-s gépen pedig a fxp0 és fxp1 használatával hozzunk létre a lagg(4) interfészt:
# ifconfig lagg0 create # ifconfig lagg0 up laggproto lacp laggport fxp0 laggport fxp1
Ellenőrizzük a felület állapotát:
# ifconfig lagg0
A ACTIVE jelzésű, vagyis aktív állapotú portok az összefűzéshez kialakított csoport azon tagjai, amelyeknél felépült a kapcsolat a távoli switch felé és készen állnak a küldésre és fogadásra. Ha az ifconfig(8) programtól részletesebb kimenetet kérünk, akkor láthatjuk a csoportok azonosítóit is:
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:05:5d:71:8d:b8 media: Ethernet autoselect status: active laggproto lacp laggport: fxp1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING> laggport: fxp0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
A show lacp neighbor paranccsal kérdezhetjük le a portok állapotát:
switch# show lacp neighbor Flags: S - Device is requesting Slow LACPDUs F - Device is requesting Fast LACPDUs A - Device is in Active mode P - Device is in Passive mode Channel group 1 neighbors Partner's information: LACP port Oper Port Port Port Flags Priority Dev ID Age Key Number State Fa0/1 SA 32768 0005.5d71.8db8 29s 0x146 0x3 0x3D Fa0/2 SA 32768 0005.5d71.8db8 29s 0x146 0x4 0x3D
Részletesebb kijelzést a show lacp neighbor detail paranccsal kaphatunk.
Példa 31-2. A hibatűrés beállítása
A hibatűrési mód arra alkalmas, hogy amikor az elsődleges porton elvesztjük a kapcsolatot, helyette egy másodlagos interfész használatára tudunk áttérni. Hozzuk létre és állítsuk be a lagg0 interfészt, ahol az fxp0 legyen a főinterfész, az fxp1 pedig a tartalék interfész:
# ifconfig lagg0 create # ifconfig lagg0 up laggproto failover laggport fxp0 laggport fxp1
Az így létrejövő interfész nagyjából az alábbi lesz, ahol eltérés a MAC-cím és az eszköz neve:
# ifconfig lagg0 lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:05:5d:71:8d:b8 media: Ethernet autoselect status: active laggproto failover laggport: fxp1 flags=0<> laggport: fxp0 flags=5<MASTER,ACTIVE>
A forgalom kezdetben az fxp0 felületen keresztül érkezik és távozik. Ha az fxp0 felületen valamiért megszakadna a kapcsolat, helyette az fxp1 lesz az aktív link. Ha később helyreáll a kapcsolat az elsődleges felületen, akkor újra az lesz aktív link.
Példa 31-3. Hibatűrés beállítása vezetékes és vezeték nélküli hálózatok között
Hordozható számítógépek használata esetén általában érdemesebb a vezeték nélküli kapcsolatot másodlagos interfészként beállítani, így csak akkor használja a rendszer, ha vezetékes hálózat nem érhető el. A lagg(4) segítségével egyetlen IP-címmel tudjuk használni mind a két interfészt: a teljesítmény és biztonságosság miatt elsősorban a vezetékes hálózatot használjuk, miközben megmarad a lehetőség az adatok továbbítására a vezeték nélküli kapcsolaton keresztül is.
A beállítás során a vezeték nélküli interfész MAC-címét úgy kell módosítanunk, hogy megegyezzen a lagg(4) címével. A lagg(4) interfész a saját MAC-címét az elsődleges interfésztől örökli, amely jelen esetünkben a vezetékes interfész lesz.
A most következő példában a vezetékes hálózatunk lesz az elsődleges interfész (bge0), míg a vezeték nélküli (wlan0) a másodlagos. A wlan0 interfészt az iwn0 interfészből hoztuk létre, és a vezetékes kapcsolat MAC-címét állítjuk be neki. Első lépésként tehát le kell kérdeznünk a vezetékes interfész MAC-címét:
# ifconfig bge0 bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4> ether 00:21:70:da:ae:37 inet6 fe80::221:70ff:feda:ae37%bge0 prefixlen 64 scopeid 0x2 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet autoselect (1000baseT <full-duplex>) status: active
A bge0 helyett természetesen a saját vezetékes hálózati interfészünket kell megadni, és az ether kezdetű sorban is saját kártyánk MAC-címe fog megjelenni. Ezután már meg is tudjuk változtatni az iwn0 címét:
# ifconfig iwn0 ether 00:21:70:da:ae:37
Aktiváljuk a vezeték nélküli interfészt, de ne állítsunk be neki semmilyen IP-címet:
# ifconfig wlan0 create wlandev iwn0 ssid wlan_hálózat up
Hozzuk létre a lagg(4) interfészt a bge0 mint elsődleges interfész megadásával, valamint a wlan0 legyen a szükség esetén használható tartalék:
# ifconfig lagg0 create # ifconfig lagg0 up laggproto failover laggport bge0 laggport wlan0
Az így létrehozott interfész nagyjából így fog megjelenni, egyedüli fontosabb eltérések a MAC-címek és az eszközök nevei:
# ifconfig lagg0 lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8<VLAN_MTU> ether 00:21:70:da:ae:37 media: Ethernet autoselect status: active laggproto failover laggport: wlan0 flags=0<> laggport: bge0 flags=5<MASTER,ACTIVE>
Hogy ne kelljen a rendszer minden egyes indítása után ezt a műveletet megismételni, vegyük fel a következő sorokat az /etc/rc.conf állományba:
ifconfig_bge0="up" ifconfig_iwn0="ether 00:21:70:da:ae:37" wlans_iwn0="wlan0" ifconfig_wlan0="WPA" cloned_interfaces="lagg0" ifconfig_lagg0="laggproto failover laggport bge0 laggport wlan0 DHCP"
A FreeBSD képes hálózaton keresztül elindulni és helyi lemez nélkül egy NFS szerver által megosztott állományrendszer csatlakoztatásával működni. Ehhez a szabványos konfigurációs állományok módosításán kívül semmi másra nincs szükségünk. Egy ilyen rendszert viszonylag könnyű beállítani, mivel az összes hozzávaló szinte készen elérhető:
Rögtön adott legalább két módszer, ha a rendszermagot hálózaton keresztül akarjuk betölteni:
PXE: az Intel által fejlesztett Preboot eXecution Environment (“indítás előtti végrehajtási környezet”) nevű rendszer a hálózati kártyákba vagy alaplapokba épített ROM segítségével teszi lehetővé az intelligens rendszerindítást. A pxeboot(8) man oldalán olvashatunk erről részletesebben.
Az Etherboot port (net/etherboot) olyan ROM-ba programozható kódot készít, amellyel rendszermagokat tudunk hálózaton keresztül betölteni. Ez a kód egyaránt felhasználható egy hálózati rendszerindító PROM beégetéséhez, vagy betölthető a helyi floppy (esetleg merev)lemezről, illetve MS-DOS rendszer alól. Elég sok hálózati kártya támogatja ezt a módot.
Egy mintaszkript (/usr/share/examples/diskless/clone_root) is próbálja megkönnyíteni a szerveren a munkaállomás rendszerindító állományrendszerének létrehozását és karbantartását. Ezt a szkriptet valószínűleg némileg módosítani kell, de így is sokat segít az elindulásban.
Az /etc könyvtárban található szabványos rendszerindításhoz használt állományok, amelyekkel a lemez nélküli indulást lehet detektálni és segíteni.
A lapozás, amennyiben szükséges, NFS vagy helyi lemez segítségével oldható meg.
Számos módon állíthatunk be egy lemez nélküli munkaállomást. Rengeteg részből tevődik össze, és ezek legtöbbje remekül testreszabható az igényeinknek. A továbbiakban egy teljes rendszer összeállításának lehetséges variációit ismertetjük, különös hangsúlyt fektetünk arra, hogy egyszerűek és a hagyományos FreeBSD indítószkriptekkel kompatibilisek maradjanak. A bemutatandó rendszer a következő jellemzőkkel bír:
A lemez nélküli munkaállomások megosztott / és /usr állományrendszereket használnak.
A rendszer indításához használt gyökér állományrendszer a szabvány FreeBSD-s gyökér (ez általában a szerveré), ahol néhány állományt felülírtunk a lemez nélküli működéshez vagy azért, mert egyszerűen az adott munkaállomáshoz tartozik.
A gyökér azon részeit, amelyeket írhatóvá kívánunk tenni, md(4) alapú állományrendszerekkel lapoljuk felül. Ilyenkor azonban bármilyen rajtuk ejtett változtatás a rendszer újraindításával elveszik.
A rendszermagot vagy az Etherboot vagy a PXE használatával küldessük át és töltsük be, mivel egyes helyzetekben ezekre szükség lesz.
Figyelem: A bemutatott rendszer nem biztonságos. Helyezzük a hálózatunk egy jól védett részére, és a többi gép ne tekintse megbízhatónak.
A szakaszban szereplő összes információt a FreeBSD 5.2.1-RELEASE változatával teszteltük.
A lemez nélküli munkaállomások beállítása egyszerre adja magát és könnyen is elvéthető. Az elkövetett hibákat olykor számos okból kifolyólag nehéz felismerni. Például:
A fordítási időben megadott beállítások mást eredményeznek futási időben.
A hibaüzenetek gyakran titokzatosak vagy esetleg teljesen el is maradnak.
Ezért ha valamennyire tisztában vagyunk a háttérben zajló folyamatokkal, akkor sokkal több eséllyel leszünk képesek megoldani a menet közben felmerülő problémákat.
A rendszernek a sikeres felkapaszkodáshoz több műveletet is végre kell hajtania:
A gépnek szüksége van olyan induló paraméterekhez, mint például az IP-cím, a végrehajtható állomány neve, a szerver neve, a gyökér elérési útja. Ezeket a DHCP vagy a BOOTP protokollok használatával adhatjuk meg. A DHCP a BOOTP kompatibilis kiterjesztése, ezért ugyanazokat a portokat és alapvető csomagformátumot alkalmazza.
A rendszerüket kizárólag BOOTP használatával is beállíthatjuk. A bootpd(8) szerver az alap FreeBSD rendszer része.
A DHCP azonban rengeteg előnnyel rendelkezik a BOOTP protokollal szemben (áttekinthetőbb konfigurációs állományok, a PXE használatának lehetősége, illetve sok minden más, ami nem csak a lemez nélküli működéshez kellhet), ezért itt alapvetően egy DHCP alapú konfigurációt mutatunk be, de ahol megoldható, megemlítjük a bootpd(8) esetén alkalmas példákat is. A mintaként szolgáló konfiguráció az ISC DHCP szoftvercsomagot használja (a tesztszerverre ennek a 3.0.1.r12 verzióját telepítetük fel).
A gépnek egy vagy több programot kell a saját memóriájába áttöltenie. Erre vagy a TFTP vagy pedig az NFS alkalmas. A TFTP és az NFS között sok helyen fordítási időben tudunk választani. Gyakori hibaforrás a protokollhoz rosszul megadott állománynevek használata: a TFTP általában az összes állományt a szerverről egyetlen könyvtárból tölti át, ezért arra számít, hogy a neveiket ehhez viszonyítva adjuk meg. Az NFS használata során azonban abszolút elérési utakat kell megadnunk.
A rendszer indítását lehetővé tevő közbenső programokat és a rendszermagot valahogy inicializálni kell és elindítani. Ezen a területen több fontos változat kapott helyet:
A PXE a pxeboot(8) kódját fogja betölteni, ez lényegében a FreeBSD betöltő harmadik fokozatának egy módosított változata. A loader(8) a működéséhez szükséges paramétereket a rendszer indításakor kapja meg, majd a vezérlés átadása előtt ezeket a rendszermag környezetében hagyja. Ebben az esetben akár a GENERIC rendszermag is használható.
Az Etherboot kevesebb előkészítéssel közvetlenül magát a rendszermagot tölti be. Ehhez azonban egy saját rendszermagot kell építeni, külön beállításokkal.
A PXE és az Etherboot egyaránt jól használható. Mivel azonban a rendszermagok általában a loader(8) kódjára hagyják a munka legnagyobb részét, ezért ahol lehetséges, a PXE megoldását érdemes alkalmazni.
Tehát ha az alaplapi BIOS és a hálózati kártya is támogatja a PXE használatát, akkor válasszunk inkább azt.
Végezetül a gépnek valamilyen módon hozzá kell tudnia férnie az állományrendszerekhez. Erre többnyire az NFS jöhet szóba.
A további részleket lásd a diskless(8) man oldalon.
Az ISC DHCP szervere képes a BOOTP és DHCP kéréseket is megválaszolni.
Az ISC DHCP 3.0 nem az alaprendszer része, ezért a használatához először telepítenünk kell a net/isc-dhcp30-server portot vagy a neki megfelelő csomagot.
Ahogy feltelepítettük, le kell futtatnunk az ISC DHCP konfigurációs állományát (ezt általában /usr/local/etc/dhcpd.conf néven találjuk meg). A most következő, megjegyzésekkel kiegészített példában egy margaux nevű gép az Etherboot, valamint egy corbieres nevű gép PXE használatával akar kapcsolódni:
default-lease-time 600; max-lease-time 7200; authoritative; option domain-name "minta.com"; option domain-name-servers 192.168.4.1; option routers 192.168.4.1; subnet 192.168.4.0 netmask 255.255.255.0 { use-host-decl-names on; option subnet-mask 255.255.255.0; option broadcast-address 192.168.4.255; host margaux { hardware ethernet 01:23:45:67:89:ab; fixed-address margaux.minta.com; next-server 192.168.4.4; filename "/data/misc/kernel.diskless"; option root-path "192.168.4.4:/data/misc/diskless"; } host corbieres { hardware ethernet 00:02:b3:27:62:df; fixed-address corbieres.minta.com; next-server 192.168.4.4; filename "pxeboot"; option root-path "192.168.4.4:/data/misc/diskless"; } }
Itt a bootpd (egyetlen kliensre korlátozott) beállítását láthatjuk. Ezt az /etc/bootptab állományba tegyük.
Ne feledjük, hogy a BOOTP használatához az Etherboot portot a NO_DHCP_SUPPORT beállítással kell fordítanunk, miközben a PXE esetében kell a DHCP. Egyébként a bootpd egyedüli nyilvánvaló előnye csupán annyi, hogy az alaprendszer része.
.def100:\ :hn:ht=1:sa=192.168.4.4:vm=rfc1048:\ :sm=255.255.255.0:\ :ds=192.168.4.1:\ :gw=192.168.4.1:\ :hd="/tftpboot":\ :bf="/kernel.diskless":\ :rp="192.168.4.4:/data/misc/diskless": margaux:ha=0123456789ab:tc=.def100
Az Etherboot honlapján találhatunk egy minden részletre kiterjedő dokumentációt (angolul), amely elsősorban ugyan a Linux típusú rendszerek számára íródott, de ettől függetlenül még hasznos információkat tartalmaz. A továbbiakban csak annyit szeretnénk körvonalazni, hogy az Etherboot miként bírható működésre FreeBSD rendszerekkel.
Először telepítenünk kell a net/etherboot csomagot vagy portot.
Az Etherboot beállítását (vagyis a TFTP használatának megadását az NFS helyett) az Etherboot forrását tartalmazó könyvtárban található Config állomány megfelelő átírásával tudjuk megtenni.
Itt most floppyról fogjuk indítani a rendszert. A többi módszerrel (PROM vagy MS-DOS program) kapcsolatban olvassuk el az Etherboot dokumentációját.
A rendszerindító lemez elkészítéséhez tegyünk egy lemezt annak a gépnek a meghajtójába, ahová az Etherboot felkerült. Váltsunk az Etherboot könyvtárán belül az src alkönyvtárba és gépeljük be:
# gmake bin32/eszköztípus.fd0
Az eszköztípus a lemez nélküli munkaállomás Ethernet kártyájától függ. Az ugyanebben a könyvtárban található NIC állományból tudjuk kiolvasni, hogy az adott kártyához melyik eszköztípus tartozik.
Alapértelmezés szerint a pxeboot(8) betöltő a rendszermagot NFS-en keresztül tölti be. Ha az /etc/make.conf állományban a LOADER_TFTP_SUPPORT beállítást adjuk meg, akkor TFTP támogatással is lefordítható. Ezzel kapcsolatban a /usr/share/examples/etc/make.conf állományban található megjegyzéseket érdemes elolvasnunk.
A make.conf állományban még további két másik hasznos opciót is találhatunk a soros vonali konzollal üzemelő lemez nélküli gépek számára: az egyik a BOOT_PXELDR_PROBE_KEYBOARD, a másik pedig a BOOT_PXELDR_ALWAYS_SERIAL.
A gép indításakor úgy tudjuk beüzemelni a PXE használatát, ha a BIOS beállításai között a Boot from network opciót választjuk ki, vagy a gép bekapcsolása után lenyomjuk hozzá a megfelelő funkcióbillentyűt.
Ha a PXE vagy az Etherboot a TFTP protokollt használja, akkor az állományszerveren a tftpd démont kell elindítani:
Készítsünk egy könyvtárat, ahonnan majd a tftpd küldi az állományokat, például legyen ez a /tftpboot.
Vegyük fel a következő sort az /etc/inetd.conf állományunkba:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot
Megjegyzés: A tapasztalat szerint egyes PXE verziók a TFTP TCP alapú változatát használják. Ebben az esetben vegyünk fel még egy második sort is, ahol a dgram udp részt stream tcp-re cseréljük.
Mondjuk meg az inetd
démonnak, hogy olvassa újra a
konfigurációs
állományát. Az alábbi parancs
megfelelő működéséhez Az
inetd_enable="YES"
sornak szerepelnie
kell az /etc/rc.conf
állományban:
# /etc/rc.d/inetd restart
A tftpboot könyvtárat bárhova rakhatjuk a szerveren. Viszont az inetd.conf és dhcpd.conf állományokban ezt ne felejtsük fel megadni.
Minden esetben engedélyeznünk kell az NFS használatát és vele együtt exportálni az NFS szerverről elérni kívánt állományrendszereket.
Az /etc/rc.conf állományba tegyük bele a következőt:
nfs_server_enable="YES"
Az /etc/exports állományban a lemez nélküli rendszereknek szánt gyökérkönyvtárat tegyük elérhetővé (a példában írjuk át a kötet csatlakozási pontját és a margaux corbieres helyére állítsuk be a saját lemez nélküli munkaállomásaink neveit:
/data/misc -alldirs -ro margaux corbieres
Kérjük meg a mountd démont, hogy olvassa újra a konfigurációs állományát. Előfordulhat azonban, hogy ehhez először az NFS szolgáltatást kell engedélyezni az /etc/rc.conf állományból és újraindítani a gépet.
# /etc/rc.d/mountd restart
Ha az Etherboot használata mellett döntünk, akkor a lemez nélküli kliensek számára a rendszermagot a következő beállítások használatával kell újrafordítani (a megszokottak mellett):
options BOOTP # BOOTP-n keresztül kérünk IP-címet és hálózati nevet options BOOTP_NFSROOT # a BOOTP-től kapott információk alapján csatoljuk a gyökeret NFS-en keresztül
Ezek mellett valószínűleg szükségünk lesz a BOOTP_NFSV3, BOOT_COMPAT és BOOTP_WIRED_TO beállítások megadására is (lásd a NOTES állományt).
A beállítások nevei régről származnak és némileg félrevezetőek lehetnek, mivel valójában semmit sem változtatnak a rendszermagban levő DHCP vagy a BOOTP rutinok használatában (egyébként meg lehet adni vagy az egyik vagy a másik protokoll kizárólágos használatát is).
Fordítsuk le a rendszermagot (lásd 8 fejezet), és másoljuk a dhcpd.conf állományban megadott helyre.
Megjegyzés: Amikor a PXE protokollt használjuk, a rendszermagot nem fontos az imént felsorolt paraméterekkel fordítanunk (habár ajánlatos). Az engedélyezésükkel több DHCP kérés keletkezik a rendszermag elindulása közben, ezért kisebb a kockázata annak, hogy a pxeboot(8) által bizonyos esetekben megszerzett és az új értékek között valamilyen ellentmondás jön létre. A használatuk egyik előnye, hogy így mellékhatásként a hálózati nevünket is megkapjuk. Ellenkező esetben erre is találnunk kellene valamilyen módot, például fenntartani egy-egy rc.conf állományt minden kliensen.
Megjegyzés: Az Etherboot csak akkor lesz képes betölteni a rendszermagot, ha device hinteket is beépítünk. Ezt a következő beállítással tudjuk megoldani (erről bővebben lásd a NOTES állomány megjegyzéseit):
hints "GENERIC.hints"
A dhcpd.conf állomány root-path beállításának megfelelően hozzunk létre a rendszer indítására alkalmas gyökér állományrendszert.
Ezzel a módszerrel a DESTDIR könyvtárba pillanatok alatt telepíteni tudunk egy teljes szűz rendszert (és nem csak a rendszerindító állományrendszert). Ehhez mindössze csak annyit kell tenni, hogy lefuttatjuk a következő szkriptet:
#!/bin/sh export DESTDIR=/data/misc/diskless mkdir -p ${DESTDIR} cd /usr/src; make buildworld && make buildkernel make installworld && make installkernel cd /usr/src/etc; make distribution
Miután végzett, már csak a DESTDIR könyvtárban található /etc/rc.conf és /etc/fstab állományokat kell az igényeinkhez igazítani.
Amennyiben szükséges, a szerveren található lapozóállományt NFS-en keresztül el tudjuk érni.
A rendszermag maga nem támogatja az NFS alapú lapozás engedélyezését a rendszer indításakor. A lapozóállományt ezért a rendszerindító szkripteken keresztül aktiváljuk, amelyekben csatlakoztatunk egy írható állományrendszert, ahol létrehozzuk és engedélyezzük a lapozóállományt. Tetszőleges méretű lapozóállományt például így tudunk készíteni:
# dd if=/dev/zero of=/a/lapozóállomány/helye bs=1k count=1 oseek=100000
Az engedélyezéséhez pedig a következő sort kell felvenni az rc.conf állományba:
swapfile=/a/lapozóállomány/helye
Ha a lemez nélküli munkaállomáson X szervert akarunk futtatni, akkor az XDM konfigurációs állományait kicsit módosítanunk kell, mert alapértelmezés szerint a /usr könyvtárban hozza létre a naplókat.
Amikor a rendszer indításához használt állományrendszert nem egy FreeBSD alapú számítógépen tároljuk, akkor először ezt egy FreeBSD-s gépen kell elkészíteni, majd a tar vagy cpio segítségével átmásolni a megfelelő helyre.
Ilyen helyzetekben gyakran gondok adódhatnak olyan speciális állományokkal, mint például amelyek a /dev könyvtárban találhatóak, mivel a fő- és aleszközazonosítók tárolására szánt méret különbözhet. Ezt úgy oldhatjuk meg, ha exportálunk egy könyvtárat a nem FreeBSD alapú szerveren, ezt csatlakoztatjuk a FreeBSD-s gépen, majd a devfs(5) segítségével a eszközleírókat a felhasználó számára észrevétlen módon foglaljuk le.
Az ISDN technológiai és hardveres hátteréről sokat megtudhatunk Dan Kegel ISDN-ről szóló oldalán (angolul).
Az ISDN használatát röviden így foglalhatnánk össze:
Ha Európában élünk, akkor minden bizonnyal az ISDN kártyákkal foglalkozó szakaszt érdemes elolvasnunk.
Ha elsősorban betárcsázós ISDN-nel szeretnénk csatlakozni az internetre egy internet-szolgáltatón keresztül, akkor a terminál adaptereket tárgyaló szakaszt nézzük meg. A szolgáltatók váltásakor ezzel jár a legtöbb rugalmasság és a legkevesebb probléma.
Ha két helyi hálózat összekötésére használjuk, vagy az internethez egy bérelt ISDN vonalon keresztül kapcsolódunk, akkor egy önálló útválasztó vagy hálózati híd beállításában érdemes gondolkodnunk.
A költség fontos szerepet játszik az elfogadható megoldás kiválasztásában. A most következő lehetőségeket a legolcsóbbtól indulva kezdjük el felsorolni egészen a legdrágábbig.
A FreeBSD-ben megtalálható ISDN implementáció csak a DSS1/Q.931 (más néven Euro-ISDN) szabvány szerint gyártott passzív kártyákat támogatja. Ismer azonban egyes olyan aktív kártyákat is, amelyeknél a firmware további más jelkezelési protokollokat is támogat. Ilyen többek közt az elsőként támogatott Primary Rate (PRI) ISDN kártya.
Az isdn4bsd szoftver segítségével kapcsolódni tudunk más ISDN útválasztókhoz IP-n keresztül a nyers HDLC felett, vagy szinkron PPP használatával. Mindezeket a rendszermagban található PPP-re vagy az isppp-re építkezik.
FreeBSD alatt egyre több PC-s ISDN kártyához készül el a támogatás, és a visszajelzések azt mutatják, hogy Európában és a világ minden részén sikerrel használják ezeket.
A passzív ISDN kártyák közül is leginkább az Infineon (korábban Siemens) gyártmányú ISAC/HSCX/IPAC ISDN chipkészletek támogatottak, de a Cologne chippel rendelkező (de csak ISA buszos) ISDN kártyák, a Winbond W6692 chipes PCI buszos kártyák, és a Tiger300/320/ISAC chipkészletek egyes változatai, valamint néhány gyártófüggő chipkészlettel rendelkező kártya, mint például az AVM Fritz!Card PCI V.1.0 és az AVM Fritz!Card PnP is remekül működik.
Jelenleg a következő aktív ISDN kártyákat támogatja a rendszer: AVM B1 (ISA és PCI) BRI kártyák és az AVM T1 PCI PRI kártyák.
Az isdn4bsd dokumentációját a rendszerünkön belül a /usr/share/examples/isdn/ könyvtárban találhatjuk meg, vagy közvetlenül az isdn4bsd honlapján, ahol több hivatkozást is találunk tippekre, hibajegyzékekre és bőségesebb dokumentációra, például az isdn4bsd saját kézikönyvére.
Ha szeretnénk egy másik ISDN protokoll
támogatásának
kifejlesztésében résztvenni, vagy egy
jelenleg még nem támogatott ISDN
kártyát használhatóvá tenni,
esetleg valamilyen más módon segíteni az
isdn4bsd ügyét,
vegyük fel a kapcsolatot Hellmuth Michaelis <hm@FreeBSD.org>
fejlesztővel.
Az isdn4bsd telepítésével, beállításával és hibaelhárításával kapcsolatos kérdéseinket a freebsd-isdn levelezési listán tehetjük fel.
Az ISDN számára olyanok a terminál adapterek, mint a hagyományos telefonvonalak számára a modemek.
A legtöbb terminál adapter a Hayes-modemek szabványos AT parancskészletét használja, és könnyen be lehet iktatni egy modem helyett.
A terminál adapterek alapvetően ugyanúgy működnek, mint a modemek, kivéve, hogy egy átlagos modemnél jóval nagyobb adatátviteli sebességre képesek. Ezért a PPP kapcsolatunkat pontosan ugyanúgy kell beállítani, mint a modemek esetében. Ne felejtsük a soros pont sebességét a maximális értékre állítani.
A terminál adapterek használatának egyik legnagyobb előnye, hogy segítségükkel dinamikus PPP-n keresztül tudunk az internet-szolgáltatónkhoz kapcsolódni. Mivel az IP-címtartomány egyre inkább szűkösebb, a legtöbb szolgáltató nem szívesen oszt ki bárkinek is statikus IP-címet. A legtöbb önálló útválasztó azonban nem képes alkalmazkodni az IP-címek dinamikus kiosztásához.
A terminál adapter az elérhető lehetőségeket és a kapcsolat stabilitását tekintve teljesen a PPP démontól függ. Emiatt egy FreeBSD-s gépet könnyű modemről átállítani az ISDN használatára, ha már egyszer beállítottuk a PPP démont. Ezzel együtt azonban a PPP használata során tapasztalt problémák ugyanúgy ismét felmerülnek.
Ha a maximális stabilitásra van szükségünk, akkor a rendszermag PPP beállítását használjuk, és ne a felhasználói PPP megoldást.
A FreeBSD hivatalosan az alábbi terminál adaptereket ismeri:
Motorola BitSurfer és Bitsurfer Pro
Adtran
Valószínűleg a többi terminál adapterrel is képes együttműködni, mivel a terminál adapterek gyártói általában igyekeznek a termékeiket a szabványos modemes AT parancskészletével kompatibilissá tenni.
Az igazi probléma a külső terminál adapterekkel adódik, mivel, akárcsak a modemek esetében, egy nagyon jó soros kártyát igényelnek.
A soros eszközök működésének részleteit valamint az aszinkron és szinkron soros portok közti különbségeket a FreeBSD soros hardverekről szóló cikkében olvashatjuk.
A terminál adaptereken keresztül elérhető sebességet a PC-kben található szabványos (aszinkron) soros port 115,2 Kb/mp-re korlátozza, még 128 Kb/mp-es adatátvitelű kapcsolatok esetében is. Az ISDN által nyújtott 128 Kb/mp kihasználásához a terminál adaptert egy szinkron soros kártyával kell összekötnünk.
Ne higyjük, hogy egy belső terminál adapter megvásárlásával megmenekülünk ettől a gondtól. A belső terminál adapterekbe egyszerűen csak egy sima szabványos PC-s soros portot építettek bele. Mindössze egy soros kábelt és egy konnektort takarítunk meg velük.
A terminál adapterhez csatlakozó szinkron kártyák legalább olyan gyorsak, mint egy önálló útválasztó, és egy egyszerű 386-osra épülő FreeBSD rendszerrel talán még rugalmasabban is kezelhetőek.
A terminál adapter plusz szinkron kártya kontra önálló útválasztó kérdése már hitkérdéssé fajult, amiről igen sokat vitatkoztak szerte a levelezési listákon. A teljes okfejtés elolvasásához az archívum böngészését javasoljuk.
Az ISDN hidak vagy útválasztók nem egészen a FreeBSD vagy operációs rendszerek területéhez tartoznak. Az útválasztás és a hálózatok hidak alapjainak a számítógépes hálózatokról szóló szakirodalomban járhatunk utána.
Ebben a szakaszban a hálózati híd és az útválasztó kifejezéseket egymás szinonímájaként fogjuk használni.
Ahogy az olcsóbb ISDN útválasztók és hidak árai egyre jobban csökkennek, ezért egyre inkább népszerűbbé válnak. Az ISDN útválasztó egy apró doboz, amelyet közvetlenül a helyi Ethernet hálózatunkra tudunk csatlakoztatni, és a többi útválasztóhoz vagy hídhoz kapcsolódik. A benne található szoftverrel képes kommunikálni a PPP vagy más egyéb népszerű protokollokon keresztül.
Az útválasztó egy szabványos terminál adapternél sokkal nagyobb adatátvitelt tesz lehetővé, mivel a teljes szinkron ISDN kapcsolatot képes kihasználni.
Az ISDN útválasztókkal és hidakkal kapcsolatban az egyik legnagyobb problémát a különböző gyártók közti eltérések jelenthetik. Ha egy szolgáltatóhoz akarunk ezen a módon csatlakozni, akkor érdemes előzetesen egyeztetni az igényeinket velük.
Ha két helyi hálózati szegmenst akarunk összekapcsolni, mint például az otthoni és az irodai hálózatot, akkor ez a megoldás jár a legkevesebb karbantartási költséggel. Mivel ekkor mi magunk vásároljuk a kapcsolat mind a két oldalára a felszerelést, biztosak lehetünk benne, hogy az így létrehozott összekötettés működni fog.
Például, ha egy otthon vagy a vállalat egy fiókjánál levő gépet akarjuk összekötni az igazgatóság hálózatával, akkor a következő felállást érdemes követnünk:
Példa 31-4. Egy otthoni vagy egy fiókbeli hálózat
A hálózat busz topológiájú és 10 Base 2 Ethernetet használ (“thinnet”). Ha szükséges, akkor az útválasztót egy AUI/10BT adó-vevővel csatlakoztassuk a hálózati kábelre.
Ha az otthoni vagy fiókbeli számítógép az egyedüli, akkor egy keresztkötésű sodrott érpár kábellel akár közvetlenül is csatlakozhatunk az útválasztóhoz.
Példa 31-5. Az igazgatósági iroda vagy egy másik helyi hálózat
A hálózat csillag topológiájú, és 10 Base T Ethernet kábelezésű (“sodrott érpár”).
A legtöbb útválasztó/híd előnye, hogy egyszerre 2 egymástól független PPP kapcsolatot tudunk felépíteni velük 2 egymástól független géppel. Ezt a legtöbb terminál adapter nem támogatja, kivéve azok a (általában drága) típusok, amelyek két soros porttal rendelkeznek. Ezt ne tévesszük össze a csatornák nyalábolásával, az MPP-vel és a többivel.
Ez nagyon hasznos lehet például olyan esetekben, amikor van egy dedikált ISDN kapcsolatunk az irodában, amelyet ugyan szeretnénk megcsapolni, de nem szeretnénk a másik ISDN vonalat is elrabolni. Az irodában levő A útválasztó képes a dedikált B csatornájú kapcsolaton (64 Kb/mp) keresztül elérni az internetet, miközben a másik B csatornát ettől független adatkapcsolatra használja. A második B csatorna így használható betárcsázásra, kitárcsázásra vagy a másik B csatornával együtt dinamikus nyalábolásra (MPP stb.) a nagyobb sávszélesség elérése érdekében.
Az Ethernetes híd nem IP alapú forgalmat is képes továbbítani, ezért rajta keresztül akár IPX vagy SPX és más egyéb protokollokat is használni tudunk.
A FreeBSD hálózati címfordításért felelős démonprogramja, a natd(8) (Network Address Translation daemon), a beérkező nyers IP csomagokat dolgozza fel, és a helyi gépek forráscímét kicserélve visszailleszti ezeket a csomagokat a kimenő folyamba. A natd(8) mindezt úgy teszi a forrás IP-címekkel és portokkal, hogy amikor az adat visszaérkezik, akkor képes lesz megmondani a csomag eredeti küldőjét és visszaküldeni neki a választ.
A hálózati címfordítást általában az internet-kapcsolatok megosztásánál alkalmazzuk.
Az IPv4 világában egyre jobban fogyó IP-címek és az egyre növekvő számú, nagysebességre vágyó, például kábeles vagy DSL-es fogyasztók miatt az igény is egyre nagyobb az internet-kapcsolatok megosztására. Ha több számítógéppel szeretnénk egyetlen kapcsolaton és egy IP-címen keresztül kapcsolódni az internetre, akkor ehhez a natd(8) tökéletes választás.
Az esetek többségében a felhasználók egy kábeles vagy DSL vonalra csatlakoznak, melyhez egyetlen IP-cím tartozik, és ezen a gépen keresztül szeretnék elérni az internetet a helyi hálózaton levő többi gépről.
Ezt úgy tudjuk elérni, ha az internethez kapcsolódó FreeBSD-s gépet átjárónak állítjuk be. Ebben az átjáróban legalább két hálózati felületnek kell léteznie — az egyikkel az internetes útválasztóhoz, a másikkal pedig a helyi hálózathoz kapcsolódik. A belső hálózaton levő gépek egy hub vagy egy switch segítségével csatlakoznak egymáshoz.
Megjegyzés: Több módon is el tudjuk érni a belső hálózatról az internetet egy FreeBSD-s átjárón keresztül. Ebben a példában most csak olyan átjárókkal foglalkozunk, amelyekben legalább két hálózati kártya található.
Egy ehhez hasonló beállítás igen gyakori a megosztott internet-kapcsolatok esetében. A helyi hálózat egyik gépe csatlakozik az internetre. A többi gép ezen az “átjárón” keresztül éri el az internetet.
A natd(8) működéséhez szükséges címfordítási támogatást a GENERIC típusú rendszermagok nem tartalmazzák, viszont a /boot/loader.conf megfelelő paraméterezésével a rendszer betöltése közben ezt hozzá tudjuk adni:
ipfw_load="YES" ipdivert_load="YES"
Valamint a net.inet.ip.fw.default_to_accept
változót állítsuk az 1 értékre.
net.inet.ip.fw.default_to_accept="1"
Megjegyzés: Ez utóbbi beállítást leginkább a tűzfal és a címfordítást végző átjáró próbálgatásakor érdemes alkalmazni. Ilyenkor ugyanis az ipfw(8) alapértelmezett módon az allow ip from any to any (minden forgalom engedélyezett) szabályt követi, és nem pedig a kevésbé barátságos deny ip from any to any (minden forgalom tiltott) szabályt. A rendszer újraindításakor így valamivel nehezebb lesz kizárnunk magunkat a szabályok megadása során.
Amikor viszont nincs lehetőségünk modulok használatára, vagy szeretnénk minden igényelt funkciót beépíteni a rendszermagba, akkor a rendszermag beállításait tartalmazó állományban a következőket kell megadnunk:
options IPFIREWALL options IPDIVERT
A fentiek mellett még ezeket a lehetőségeket tudjuk választani:
options IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_VERBOSE
A tűzfal és a hálózati címfordítás beindításához a következőknek kell az /etc/rc.conf állományban lennie:
gateway_enable="YES" firewall_enable="YES" firewall_type="OPEN" natd_enable="YES" natd_interface="fxp0" natd_flags=""
Amikor megadjuk ezeket a beállításokat az /etc/rc.conf állományban, pontosan ugyanaz történik, mintha a natd -interface fxp0 parancsot adtunk volna ki a rendszer indításakor. Ez tehát manuálisan is elindítható.
Megjegyzés: Ha túlságosan sok paramétert akarunk egyszerre beállítani natd(8) használatához, akkor akár egy külön konfigurációs állományt is megadhatunk. Ebben az esetben a konfigurációs állományt a következő módon kell megjelölni az /etc/rc.conf állományban:
natd_flags="-f /etc/natd.conf"Ekkor a /etc/natd.conf állomány fogja tartalmazni a beállításokat, soronként egyet. Például a következő szakaszban ez lesz a tartalma:
redirect_port tcp 192.168.0.2:6667 6667 redirect_port tcp 192.168.0.3:80 80A konfigurációs állományról és az
-f
opció használatával kapcsolatban olvassuk el a natd(8) man oldalát.
A helyi hálózaton mindegyik gépnek az RFC 1918 által megadott privát IP-címterekből származó címet kell használnia, és az alapértelmezett átjárónak mindenhol a natd démont futtató gép IP-címét kell megadni.
Például a belső hálózaton található A és B kliensek IP-címei rendre 192.168.0.2 és 192.168.0.3, míg a natd(8) démont futtató gép belső címe 192.168.0.1. Az A és a B kliens alapértelmezett átjáróját a natd gépre, vagyis a 192.168.0.1 címre kell beállítanunk. A natd gép külső, avagy internetes felülete semmilyen további módosítást nem igényel a natd(8) működéséhez.
A natd(8) alkalmazásának hátránya, hogy a belső hálózatra csatlakozó kliensek az internetről nem érhetőek el. Tehát a helyi hálózat kliensei képesek elérni a külvilágot, de az visszafelé már nem igaz. Ez akkor jelent igazából problémát, ha az egyik belső kliensen szolgáltatásokat akarunk futtatni. A probléma egyik egyszerű megoldása, ha a natd használatával az internet felől egyszerűen átirányítunk bizonyos portokat a megfelelő belső kliensre.
Például tegyük fel, hogy az A kliens egy IRC szervert, míg a B kliens egy webszervert futtat. Ez akkor fog működni, ha a szolgáltatásokhoz tartozó 6667 (IRC) és 80 (web) portokat átirányítjuk a hozzájuk tartozó gépek felé.
Ehhez a natd(8) démonnak a
-redirect_port
paramétert kell
átadni. A pontos felírás így
néz ki:
-redirect_port protokoll célIP:célPORT[-célPORT] [külsőIP:]külsőPORT[-külsőPORT] [távoliIP[:távoliPORT[-távoliPORT]]]
A fenti példában tehát ezt kell megadnunk:
-redirect_port tcp 192.168.0.2:6667 6667 -redirect_port tcp 192.168.0.3:80 80
Így az egyes külső tcp portokat átirányítjuk a belső hálózat gépei felé.
A -redirect_port
paraméternek
akár egész porttartományokat is
megadhatunk. Például a tcp
192.168.0.2:2000-3000 2000-3000
megadásával az összes 2000-től 3000-ig
terjedő port csatlakozását
leképezzük az A kliens 2000
és 3000 közti portjaira.
Ezek a beállítások a natd(8) közvetlen futtatásakor adhatóak meg, esetleg az /etc/rc.conf állományban az natd_flags="" opció keresztül, vagy egy külön konfigurációs állományban.
A többi beállítási lehetőséget a natd(8) man oldalán ismerhetjük meg.
A címek átirányítása abban az esetben hasznos, amikor több IP-cím áll rendelkezésünkre, de ezek egy géphez tartoznak. Ilyenkor az natd(8) képes a belső hálózat egyes gépeihez saját külső IP-címet rendelni. A natd(8) a belső hálózat kliensei által küldött csomagokban kicseréli a címüket a megfelelő külső IP-címmel, illetve az ezekre a címekre érkező forgalmat továbbítja a megfelelő belső kliens irányába. Ezt a megoldást statikus hálózati címfordításnak is nevezzük. Például a 128.1.1.2 és a 128.1.1.3 IP-címek a natd démont futtató átjáróhoz tartoznak. A 128.1.1.1 cím használható a natd alapú átjáró külső IP-címeként, miközben a 128.1.1.2 és a 128.1.1.3 címeket a belső hálózaton elérhető A és B kliensek felé közvetítjük.
A -redirect_address
felírása
tehát a következő:
-redirect_address helyiIP publikusIP
helyiIP | A helyi hálózaton található kliens saját IP-címe. |
publikusIP | A klienshez tartozó megfelelő külső IP-cím. |
Az iménti példában a pontos paraméterek ezek lesznek:
-redirect_address 192.168.0.2 128.1.1.2 -redirect_address 192.168.0.3 128.1.1.3
A -redirect_port
opcióhoz
hasonlóan ez is megadható az
/etc/rc.conf állományban az
natd_flags=""
beállításon keresztül vagy egy
külön konfigurációs
állományban. A címek
átirányításával nincs
szüksége a portok
átirányítására, mivel az
adott IP-címhez tartozó összes forgalmat
átirányítjuk.
A natd démont futtató gépen a külső IP-címeket aktiválni kell és a külső felületéhez kell rendelni. A rc.conf(5) man oldalon járhatunk utána, hogy mindezt hogyan is tudjuk megcsinálni.
A párhuzamos vonali IP (Parallel Line IP, PLIP) a TCP/IP protokoll használatát valósítja meg párhuzamos porton keresztül. Olyan gépek számára lehet hasznos, amelyekben nincs hálózati kártya, vagy esetleg laptopoknál. Ebben a szakaszban a következőket tárgyaljuk:
Párhuzamos (laplink) kábel készítése
Két számítógép összekapcsolása a PLIP segítségével
Párhuzamos kábelt a legtöbb számítástechnikai boltban tudunk vásárolni. Ha mégsem tudnánk sehol sem beszerezni, vagy egyszerűen tudni szeretnénk, hogyan lehet ilyet készíteni, akkor az alábbi táblázatban láthatjuk, hogy miként tudunk egy hétköznapi nyomtatókábelt átalakítani a céljainkra.
Táblázat 31-1. A párhuzamos kábel hálózati használatra alkalmas bekötése
A-név | A-vég | B-vég | Leírás | Post/Bit |
---|---|---|---|---|
DATA0 | 2 | 15 | Adat | 0/0x01 |
DATA1 | 3 | 13 | Adat | 0/0x02 |
DATA2 | 4 | 12 | Adat | 0/0x04 |
DATA3 | 5 | 10 | Vál. imp. | 0/0x08 |
DATA4 | 6 | 11 | Adat | 0/0x10 |
GND | 18-25 | 18-25 | Föld | - |
Először is szereznünk kell valahonnan egy laplink kábelt. Ha ez megvan, akkor mind a két gépen ellenőrizzük, hogy a rendszermag tartalmazza az lpt(4) meghajtót:
# grep lp /var/run/dmesg.boot lpt0: <Printer> on ppbus0 lpt0: Interrupt-driven port
A párhuzamos portnak megszakítással vezéreltnek kell lennie (“interrupt driven”), és az /boot/device.hints állományban szerepelnie kell nagyjából a következő soroknak:
hint.ppc.0.at="isa" hint.ppc.0.irq="7"
Ezután nézzük meg, hogy a rendszermag beállításait tartalmazó állományban megjelenik-e a device plip sor, vagy a plip.ko modul betöltődött-e. Akármelyik is történt, a párhuzamos hálózati felület most már a rendelkezésünkre áll, és az ifconfig(8) paranccsal ezt meg is tudjuk nézni:
# ifconfig plip0 plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
A laplink kábelt csatlakoztassuk mind a két számítógéphez.
Mind a két a hálózati felület paramétereit root felhasználóként hangoljuk be. Például, ha az egyikgép nevű gépet akarjuk a másikgép nevű géphez csatlakoztatni:
egyikgép <-----> másikgép IP-cím 10.0.0.1 10.0.0.2
Az egyikgép felületét így állítsuk be:
# ifconfig plip0 10.0.0.1 10.0.0.2
A másikgép felületét így állítsuk be:
# ifconfig plip0 10.0.0.2 10.0.0.1
Ezt követően már egy működő kapcsolatnak kell felépülnie. Az egyéb részletek kapcsán az lp(4) és az lpt(4) man oldalait nézzük át.
Ezt a két gépet vegyük fel az /etc/hosts állományba is:
127.0.0.1 localhost.saját.tartomány localhost 10.0.0.1 egyikgép.saját.tartomány egyikgép 10.0.0.2 másikgép.saját.tartomány
A kapcsolat működőképességéről úgy tudunk meggyőződni, ha az egyik gépről megpróbáljuk pingelni a másikat. Például az egyikgép esetében:
# ifconfig plip0 plip0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000 # netstat -r Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire másikgép egyikgép UH 0 0 plip0 # ping -c 4 másikgép PING másikgép (10.0.0.2): 56 data bytes 64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms 64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms 64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms 64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms --- másikgép ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms
Az IPv6 (másik néven az IPng, vagy a “az internet következő generációs protokollja”, “IP next generation”) a jól ismert IP protokoll (avagy az IPv4) új változata. Hasonlóan a jelenleg működő összes többi BSD rendszerhez, a FreeBSD is tartalmazza a KAME IPv6 referencia implementációt. Ezért ha ezzel szeretnénk kísérletezni, akkor ehhez a FreeBSD minden eszköz biztosít számunkra. Ez a szakasz az IPv6 beállítását és használatát mutatja be.
Az 1990-es évek elején az IPv4-es címterek rohamos mértékű kimerülését figyelték meg. Az internet jelenlegi bővülési üteme mellett két nagyobb aggodalomnak adott okot:
A címek elfogyása. Napjainkban efelől egyre kevesebb a kétség, mivel az RFC 1918 által megfogalmazott privát címterek (10.0.0.0/8, 172.16.0.0/12, és 192.168.0.0/16), valamint a hálózati címfordítás (Network Address Translation, NAT) használata igen elterjedt.
Az útválasztási táblázatok méretének növekedése. Ez még manapság is aggasztó.
Az IPv6 ezeket és még más egyéb problémákat a következő módon igyekszik megoldani:
A 128 bites címtér használata. Más szóval, elméletben összesen 340 282 366 920 938 463 463 374 607 431 768 211 456 darab címet képes kiosztani. Ez azt jelenti, hogy bolygónk minden egyes négyzetméterére megközelítőleg 6,67 * 10^27 IPv6 típusú cím jut.
Az útválasztók a saját táblázataikban csak a hálózatok összevont címeit tárolják el, ezáltal egy átlagos útválasztási táblázatban található bejegyzések száma 8192 alá csökken.
Az IPv6 emellett még rengeteg más előnyös lehetőséget is kínál:
A címek automatikus beállítása (lásd RFC 2462)
Anycast (bárkiküldés, vagyis “egy a sokból”)
Kötelező (mandatory) multicast
IPsec (IP szintű védelem)
Egyszerűsített fejléc
Mobil IP
IPv6-IPv4 közti átjárhatóság
Ha mindezekről többet szeretnénk megtudni, akkor erre érdemes továbblépnünk:
Az IPv6 áttekintése a playground.sun.com honlapon
Az IPv6 címeknek több típusa létezik: a unicast (egyesküldés), az anycast (bárkiküldés) és a multicast (többesküldés).
A unicasthez használt címek jól ismert címek. Az így elküldött csomag pontosan ahhoz a felülethez érkezik meg, amelyhez az adott cím tartozik.
Az anycasthez használt címek felírásukban tökéletesen megegyeznek a unicast esetével, de valójában felületek egy csoportját címezik. Az anycastre beállított címekre küldött csomagok mindig a(z útválasztó szerinti) legközelebb levő felülethez érkeznek meg. Az anycastet az útválasztók számára találták ki.
A multicasthez használt címek felületek egy csoportját nevezik meg. A multicast címekre érkező csomagokat a csoport minden egyes tagja megkapja.
Megjegyzés: Az IPv4 esetében az üzenetszórásra szánt (általában az xxx.xxx.xxx.255 formátumú) címeket az IPv6 esetében multicast címekkel fejezzük ki.
Táblázat 31-2. Fenntartott IPv6 címek
IPv6 cím | Az előtag hossza (bitekben) | Leírás | Megjegyzés |
---|---|---|---|
:: | 128 bit | nem specifikált | Vö. a 0.0.0.0 címmel az IPv4 esetében. |
::1 | 128 bit | saját cím | Vö. a 127.0.0.1 címmel az IPv4 esetében. |
::00:xx:xx:xx:xx | 96 bit | IPv4 beágyazása | Az alsó 32 bit egy IPv4 formátumú cím. Ezt “IPv4 kompatibilis IPv6 címnek” is nevezik. |
::ff:xx:xx:xx:xx | 96 bit | IPv4-re leképzett IPv6 címek | Az alsó 32 bit egy IPv4 címet jelöl. Olyan gépeknél használatos, amelyek nem támogatják az IPv6 protokollt. |
fe80:: - feb:: | 10 bit | helyi összeköttetés | Vö. az IPv4 loopback címeivel. |
fec0:: - fef:: | 10 bit | helyi cím | |
ff:: | 8 bit | multicast | |
001 (2-es alapú) | 3 bit | globális unicast | Az összes globális unicast címet ebből a tartományból osztjuk ki. Az első 3 bit értéke“001”. |
Az IPv6 címek kanonikus formája így ábrázolható: x:x:x:x:x:x:x:x, ahol mindegyik “x” egy 16 bites hexadecimális érték. Például: FEBC:A574:382B:23C1:AA49:4592:4EFE:9982.
Gyakran a címek hosszú nullákból álló sorozatokat tartalmaznak, ezért mindegyik ilyen sorozatot rövidíteni tudjuk a “::” jelöléssel. Rajtuk kívül még az egyes hexadecimális csoportokban a bevezető nullák is elhagyhatóak. Például az fe80::1 cím kanonikus formája: fe80:0000:0000:0000:0000:0000:0000:0001.
A harmadik forma szerint az utolsó 32 bites részt írjuk fel a megszokott (decimális) IPv4 stílusú pontozással, ahol tehát a “.” választja el a tagokat. Így például a 2002::10.0.0.1 felírás a 2002:0000:0000:0000:0000:0000:0a00:0001 kanonikus (hexadecimális) ábrázolásnak feleltethető meg, ami pedig egyszerűen 2002::a00:1 alakban is megadható.
Mostanra már minden bizonnyal a kedves olvasó érteni fogja a következőt:
# ifconfig
rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255 inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1 ether 00:00:21:03:08:e1 media: Ethernet autoselect (100baseTX ) status: active
A fe80::200:21ff:fe03:8e1%rl0 cím az automatikusan beállított helyi összeköttetés címe. Ez az automatikus beállítás részeként a MAC-címből jött létre.
Az IPv6 címek szerkezetéről további részleteket az RFC 3513-ban találunk.
Jelenleg négy módon tudunk más IPv6-os géphez és hálózathoz csatlakozni:
Kérjünk a hálózati elérésünkért felelős illetékesektől IPv6 alapú hálózatot. A részletek tekintetében vegyük fel a kapcsolatot az internet-szolgáltatónkkal.
A SixXS a világ minden táján kínál végpontokkal rendelkező tunneleket.
Egy 6-ból-4 (RFC 3068) típusú tunnellel.
Ha betárcsázós kapcsolatunk van, akkor használjuk a net/freenet6 portot.
IPv6 alatt régebben két típusa volt a nevek feloldásáért felelős rekordoknak. Az IETF az A6 rekordokat időközben elavultnak nyilvánította. Ezért manapság már az AAAA rekordok tekinthetőek szabványosnak.
Az AAAA rekordok használata magától értetődik. A hálózati nevükhöz az alábbi módon tudunk IPv6 címet rendelni az elsődleges zónát leíró állományban:
SAJÁTNÉV AAAA SAJÁTIPv6CÍM
Ha nem rendelkezünk saját névfeloldási zónával, akkor erre kérjük meg a névfeloldást végző szolgáltatónkat. A bind jelenlegi változatai (8.3 és 9), valamint a dns/djbdns (IPv6 támogatására vonatkozó javítással) támogatják az AAAA rekordokat.
Ezek a beállítások egy helyi hálózaton levő gépre vonatkoznak, nem pedig egy útválasztóra. Az rtsol(8) az alábbi megadásával fogja automatikusan beállítani a felületeinket a rendszer indításakor:
ipv6_enable="YES"
Ha az fxp0 felülethez statikusan akarunk IP-címet rendelni, például a 2001:471:1f11:251:290:27ff:fee0:2093 címet, akkor ehhez a következőt kell megadni:
ipv6_ifconfig_fxp0="2001:471:1f11:251:290:27ff:fee0:2093"
Az /etc/rc.conf állományban az alapértelmezett átjárót a következő módon tudjuk a 2001:471:1f11:251::1 címre beállítani:
ipv6_defaultrouter="2001:471:1f11:251::1"
Itt most a tunnelt biztosító szolgáltató által mutatott irányt követjük, és olyan formára alakítjuk, amely megmarad az újraindítás után is. A rendszer indításakor az /etc/rc.conf állományban valami ilyesmit kell megadni a járat visszaállításához:
Soroljuk fel a beállítandó általános tunnel alapú felületeket, ilyen lehet például a gif0:
gif_interfaces="gif0"
A felületnek állítsunk be egy helyi végpontot a SAJÁT_IPv4_CÍM megadásával, valamint egy távoli végpontot a TÁVOLI_IPv4_CÍM megadásával:
gifconfig_gif0="SAJÁT_IPv4_CÍM TÁVOLI_IPv4_CÍM"
Az IPv6 tunnelünk végpontjához kapott cím aktiválásához az alábbit kell még megadnunk:
ipv6_ifconfig_gif0="SAJÁT_KAPOTT_IPv6_TUNNEL_VÉGPONTJÁNAK_CÍME"
Ezután már csak az alapértelmezett útvonalat kell beállítani az IPv6 számára. Ez az IPv6 járat másik oldala:
ipv6_defaultrouter="SAJÁT_IPv6_TÁVOLI_TUNNEL_VÉGPONTJÁNAK_CÍME"
Amennyiben a szerver IPv6 alapú forgalmat közvetít a hálózatunk és a világ között, az /etc/rc.conf állományba a következőt kell felvennünk:
ipv6_gateway_enable="YES"
Ebben a szakaszban az rtadvd(8) beállításával fogjuk az alapértelmezett IPv6 útvonalat kihirdetni.
Az rtadvd(8) engedélyezéséhez az alábbi sort kell betennünk az /etc/rc.conf állományba:
rtadvd_enable="YES"
Emellett még fontos megadnunk azt a felületet, ahol az IPv6 útválasztó kérelmezését végezzük. Ha erre a feladatra például az fxp0 felületet választjuk, akkor erről az rtadvd(8) így értesíthető:
rtadvd_interfaces="fxp0"
Most pedig készítenünk kell hozzá egy konfigurációt is, vagyis az /etc/rtadvd.conf állományt. Íme erre egy példa:
fxp0:\ :addrs#1:addr="2001:471:1f11:246::":prefixlen#64:tc=ether:
Az fxp0 felületet természetesen cseréljük ki a sajátunkkal.
Ezután a 2001:471:1f11:246:: címre helyére írjuk be a saját kiosztásunk előtagját.
Egy egész /64 alhálózat esetén nem is kell többet megadni. Minden más helyezetben az előtag hosszára prefixlen# vonatkozó értéket is be kell még állítanunk.
A klasszikus IP ATM felett (Classical IP over ATM, CLIP) a legegyszerűbb módszer az IP-címek használatára az Aszinkron adatátviteli móddal (Asynchronous Transfer Mode, ATM) együtt. Kapcsolt és állandó kapcsolatok (Switched Virtual Channel, SVC és Permanent Virtual Channel, PVC) esetén egyaránt megfelelő. Ebben a szakaszban ez utóbbival fogunk foglalkozni.
A CLIP beállítását állandó csatornákon például úgy tudjuk megoldani, ha az összes gépet külön ezekre a célokra szánt állandó csatornákkal összekapcsoljuk egymással. Ez az egyszerű megoldás azonban nagyobb számú gép esetében már nem eléggé hatékony. A következő példában csupán négy gépet kötünk hálózatba, melyik mindegyike egy ATM kártyával csatlakozik az ATM hálózatra. Ehhez elsőként tervezzük meg az IP-címek kiosztását és a gépek közti ATM kapcsolatokat. A példában ez az alábbiak szerint alakul:
A teljes hálózat felépítéséhez minden egyes pár között egy-egy ATM kapcsolatra lesz szükségünk:
Gépek | VPI.VCI pár |
---|---|
A-gep - B-gep | 0.100 |
A-gep - C-gep | 0.101 |
A-gep - D-gep | 0.102 |
B-gep - C-gep | 0.103 |
B-gep - D-gep | 0.104 |
C-gep - D-gep | 0.105 |
A kapcsolatok egyes végein szereplő VPI és VCI értékek természetesen eltérhetnek, de ezeket mi most az egyszerűség kedvéért egyenlőnek tekintettük. A következő lépésben minden gépen állítsuk be az ATM felület:
A-gep# ifconfig hatm0 192.168.173.1 up B-gep# ifconfig hatm0 192.168.173.2 up C-gep# ifconfig hatm0 192.168.173.3 up D-gep# ifconfig hatm0 192.168.173.4 up
Ha feltételezzük, hogy minden gépen a hatm0 az ATM felület neve. Most pedig az A-gep-en állítsuk be az állandó csatornákat. (Itt most feltesszük, hogy az ATM switch-eken mindezt már elvégeztük. A switch kézikönyvében erről részletesebb leírást is találhatunk.)
A-gep# atmconfig natm add 192.168.173.2 hatm0 0 100 llc/snap ubr A-gep# atmconfig natm add 192.168.173.3 hatm0 0 101 llc/snap ubr A-gep# atmconfig natm add 192.168.173.4 hatm0 0 102 llc/snap ubr B-gep# atmconfig natm add 192.168.173.1 hatm0 0 100 llc/snap ubr B-gep# atmconfig natm add 192.168.173.3 hatm0 0 103 llc/snap ubr B-gep# atmconfig natm add 192.168.173.4 hatm0 0 104 llc/snap ubr C-gep# atmconfig natm add 192.168.173.1 hatm0 0 101 llc/snap ubr C-gep# atmconfig natm add 192.168.173.2 hatm0 0 103 llc/snap ubr C-gep# atmconfig natm add 192.168.173.4 hatm0 0 105 llc/snap ubr D-gep# atmconfig natm add 192.168.173.1 hatm0 0 102 llc/snap ubr D-gep# atmconfig natm add 192.168.173.2 hatm0 0 104 llc/snap ubr D-gep# atmconfig natm add 192.168.173.3 hatm0 0 105 llc/snap ubr
Természetesen nem csak UBR használható, hanem minden más olyan forgalmazási beállítás, amit az ATM kártyáink ismernek. Itt most a forgalmi beállítás nevét a hozzá tartozó konkrét paraméterek követik. Az atmconfig(8) segédprogram használatához így kérhetünk segítséget:
# atmconfig help natm add
Olvassuk el az atmconfig(8) man oldalát.
Ugyanez a beállítás az /etc/rc.conf állomány használatával is elvégezhető. Az A-gep esetében mindez így nézne ki:
network_interfaces="lo0 hatm0" ifconfig_hatm0="inet 192.168.173.1 up" natm_static_routes="B-gep C-gep D-gep" route_B-gep="192.168.173.2 hatm0 0 100 llc/snap ubr" route_C-gep="192.168.173.3 hatm0 0 101 llc/snap ubr" route_D-gep="192.168.173.4 hatm0 0 102 llc/snap ubr"
A CLIP útvonalak pillanatnyi állapota így kérdezhető le:
A-gep# atmconfig natm show
A Közös cím redundancia protokoll (Common Address Redundancy Protocol, avagy CARP) segítségével több gép képes egyazon IP-címen osztozni. Bizonyos konfigurációkban ez a terhelés elosztására (terhelés-kiegyenlítésre) vagy a rendelkezésre állás növelésére (hibatűrésre) alkalmazható. A benne szereplő gépek akár eltérő IP-címmel is rendelkezhetnek, ahogy azt majd a példában is láthatjuk.
A CARP támogatásának engedélyezéséhez a FreeBSD rendszermagját a következő beállítással kell újrafordítanunk:
device carp
A CARP által biztosított lehetőségek ezután már elérhetőek, és számos sysctl változón keresztül állíthatóak:
Változó | Leírás |
---|---|
net.inet.carp.allow | A beérkező CARP csomagok elfogadása. Alapértelmezés szerint engedélyezett. |
net.inet.carp.preempt | Ezzel a beállítással az adott gépen az összes CARP felület leáll, ha közülük bármelyik is működésképtelenné válik. Alapértelmezés szerint tiltott. |
net.inet.carp.log | A 0 értékkel kikapcsoljuk a naplózást. Az 1 értékkel a rossz CARP csomagok naplózását engedélyezzük. Az ettől nagyobb értékek esetén pedig a CARP felületek változásait naplózzuk. Az alapértelmezett értéke az 1. |
net.inet.carp.arpbalance | Az ARP protokoll segítségével próbálja meg a helyi hálózati forgalmat mentesíteni a terheléstől. Alapértelmezés szerint tiltott. |
net.inet.carp.suppress_preempt | Ez a változó írásvédett, és a megszakítás elnyomásának állapotát mutatja. A megszakítás elnyomható, ha a felület egyik linkje nem működik. A 0 érték arra utal, hogy a megszakítást nem nyomták el. Minden probléma növeli ennek a változónak az értékét. |
A CARP eszközök maguk az ifconfig paranccsal készíthetőek el:
# ifconfig carp0 create
Egy valós környezetben az ilyen felületeknek egy VHID néven ismert egyedi azonosítóval kell rendelkezniük. Ez a VHID vagy más néven a virtuális gépazonosító (azaz Virtual Host Identification) fogja a gépünket a hálózat többi elemétől megkülönböztetni.
A CARP használatának egyik módja, ahogy arra már korábban is utaltunk, a szerverek rendelkezésre állásának feljavítása. Ebben a példában három géppel fogunk hibatűrést biztosítani, melyik mindegyike egyedi IP-címmel rendelkezik és ugyanazt a webes tartalmat szolgáltatják. A gépeket egy Round Robin rendszerű (körbejáró) névfeloldással együtt használjuk. A tartalék gépünknek lesz még további két CARP felülete, külön a szerver IP-címeihez tartozó egyes webes tartalmakhoz. Amikor valami meghibásodik, a tartalék szerver átveszi a meghibásodott gép IP-címét. Ilyenkor a hiba teljesen észrevétlen marad a felhasználók számára. A tartalék szerveren a többi szerverrel egyező tartalomnak és szolgáltatásoknak kell megjelennie, hogy bármikor át tudja tőlük venni a forgalmat.
A hálózati neveiktől és a virtuális azonosítóiktól eltekintve a két gépet ugyanúgy kell beállítani. Ebben a példában a gépeket most az a-gep.minta.org és b-gep.minta.org nevekkel láttuk el. Először is a CARP beállításához el kell helyeznünk a megfelelő hivatkozásokat az rc.conf állományban. Az a-gep.minta.org esetében az rc.conf állomány a következő sorokat tartalmazza:
hostname="a-gep.minta.org" ifconfig_fxp0="inet 192.168.1.3 netmask 255.255.255.0" cloned_interfaces="carp0" ifconfig_carp0="vhid 1 pass testpass 192.168.1.50/24"
Miközben a b-gep.minta.org az rc.conf állományában ezeket adjuk meg:
hostname="b-gep.minta.org" ifconfig_fxp0="inet 192.168.1.4 netmask 255.255.255.0" cloned_interfaces="carp0" ifconfig_carp0="vhid 2 pass testpass 192.168.1.51/24"
Megjegyzés: Nagyon fontos, hogy az ifconfig parancs pass paraméterével megadott jelszavak megegyezzenek. A carp eszközök csak a megfelelő jelszót birtokló gépeket fogadják el. A virtuális gépazonosítónak azonban minden esetben el kell térnie.
A harmadik, szolgaltato.minta.org címmel rendelkező gépet fogjuk felkészíteni az előbbi gépek meghibásodására felkészíteni. Ennek a gépnek két carp eszközre lesz szüksége, melyek az egyes gépeket kezelik. Az ehhez illeszkedő sorok valahogy így fognak kinézni az rc.conf állományban:
hostname="szolgaltato.minta.org" ifconfig_fxp0="inet 192.168.1.5 netmask 255.255.255.0" cloned_interfaces="carp0 carp1" ifconfig_carp0="vhid 1 advskew 100 pass testpass 192.168.1.50/24" ifconfig_carp1="vhid 2 advskew 100 pass testpass 192.168.1.51/24"
Két carp eszköz használatával a szolgaltato.minta.org képes észlelni és átvenni bármelyik olyan gép IP-címét, amely nem válaszol.
Megjegyzés: Az alap FreeBSD rendszermag használata esetén előfordulhat, hogy a megszakítás (a “preemption” opció) engedélyezett. Amennyiben így lenne, a szolgaltato.minta.org nem fogja minden esetben fogja rendesen visszaadni az IP-címet az eredeti tulajdonosának. Ilyenkor a rendszergazdának kell ezt manuálisan megtennie. Tehát a következő parancsot kell kiadnia a szolgaltato.minta.org gépen:
# ifconfig carp0 down && ifconfig carp0 upEzt az adott géphez tartozó carp felülettel kell megcsinálni.
Innentől a CARP már teljesen engedélyezhető és készen áll a tesztelésre. A teszteléshez vagy a hálózati rendszert kell újraindítani, vagy a gépeket.
További információkat a carp(4) man oldalán találhatunk.
A FreeBSD beszerezhető számos kiskereskedőtől dobozos termék formájában is (FreeBSD CD-k, egyéb szoftverek és nyomtatott dokumentáció):
CompUSA
WWW: http://www.compusa.com/
Frys Electronics
WWW: http://www.frys.com/
FreeBSD CD- és DVD-készletek rengeteg helyről rendelhetőek:
FreeBSD Mall, Inc.
700 Harvest Park Ste F
Brentwood, CA 94513
Egyesült Államok
Telefon: +1 925 240-6652
Fax: +1 925 674-0821
e-mail: <info@freebsdmall.com>
WWW: http://www.freebsdmall.com/
Dr. Hinner EDV
St. Augustinus-Str. 10
D-81825 München
Németország
Telefon: (089) 428 419
WWW: http://www.hinner.de/linux/freebsd.html
Ikarios
22-24 rue Voltaire
92000 Nanterre
Franciaország
WWW: http://ikarios.com/form/#freebsd
JMC Software
Írország
Telefon: 353 1 6291282
WWW: http://www.thelinuxmall.com
The Linux Emporium
Hilliard House, Lester Way
Wallingford
OX10 9TA
Egyesült Királyság
Telefon: +44 1491 837010
Fax: +44 1491 837016
WWW: http://www.linuxemporium.co.uk/products/bsd/
Linux+ DVD Magazine
Lewartowskiego 6
Warsaw
00-190
Lengyelország
Telefon: +48 22 860 18 18
e-mail: <editors@lpmagazine.org>
WWW: http://www.lpmagazine.org/
Linux System Labs Australia
21 Ray Drive
Balwyn North
VIC - 3104
Ausztrália
Telefon: +61 3 9857 5918
Fax: +61 3 9857 8974
WWW: http://www.lsl.com.au
LinuxCenter.Ru
Galernaya utca, 55
Szentpétervár
190000
Oroszország
Telefon: +7-812-3125208
e-mail: <info@linuxcenter.ru>
WWW: http://linuxcenter.ru/shop/freebsd
Ha viszonteladók vagyunk és szeretnénk CD-s FreeBSD termékeket forgalmazni, akkor az alábbi terjesztők valamelyikével vegyük fel a kapcsolatot:
Cylogistics
809B Cuesta Dr., #2149
Mountain View, CA 94040
Egyesült Államok
Telefon: +1 650 694-4949
Fax: +1 650 694-4953
e-mail: <sales@cylogistics.com>
WWW: http://www.cylogistics.com/
Ingram Micro
1600 E. St. Andrew Place
Santa Ana, CA 92705-4926
Egyesült Államok
Telefon: 1 (800) 456-8000
WWW: http://www.ingrammicro.com/
Kudzu, LLC
7375 Washington Ave. S.
Edina, MN 55439
Egyesült Államok
Telefon: +1 952 947-0822
Fax: +1 952 947-0876
e-mail: <sales@kudzuenterprises.com>
LinuxCenter.Kz
Uszty-Kamenogorszk
Kazahsztán
Telefon: +7-705-501-6001
e-mail: <info@linuxcenter.kz>
WWW: http://linuxcenter.kz/page.php?page=fr
LinuxCenter.Ru
Galernaya utca, 55
Szentpétervár
190000
Oroszország
Telefon: +7-812-3125208
e-mail: <info@linuxcenter.ru>
WWW: http://linuxcenter.ru/freebsd
Navarre Corp
7400 49th Ave South
New Hope, MN 55428
Egyesült Államok
Telefon: +1 763 535-8333
Fax: +1 763 535-0341
WWW: http://www.navarre.com/
A FreeBSD hivatalos forrásai anonim FTP-n keresztül is elérhetőek különféle tükrözésekről. Az ftp://ftp.FreeBSD.org/pub/FreeBSD/ oldal ugyan jó minőségű kapcsolattal rendelkezik és rengeteg felhasználót is enged egyidejűleg kapcsolódni, azonban valószínűleg jobban járunk, ha egy “hozzánk közelebbi” tükrözést választunk (különösen abban az esetben, amikor mi magunk is egy tükrözést akarunk készíteni).
A FreeBSD tükrözések adatbázisában az itt megtalálhatónál sokkal pontosabb leltárt kaphatunk az elérhető tükrözésekről, mivel közvetlenül a névfeloldás segítségével állapítja meg a szükséges adatokat és nem egy rögzített listát tárol.
Emellett az alábbi tükrözésekről a FreeBSD elérhető anonim FTP-n keresztül is. Amennyiben az anonim FTP használata mellett döntenénk, igyekezzünk a hozzánk legközelebb levő szervert használni. Az “Elsődleges tükrözésekként” feltüntetett oldalak általában a teljes FreeBSD archívumot tartalmazzák (az összes jelenleg elérhető változatot az összes architektúrára), de a környékünkön vagy országunkban elhelyezkedő tükörszerverekről többnyire gyorsabban tudunk majd letölteni. A regionális oldalakon gyakorta csak a népszerűbb architektúrákon futó népszerűbb változatokat találjuk meg, nem a teljes FreeBSD archívumot. Minden szerver elérhető anonim FTP-vel, de közülük néhány még további más módszereket is támogat. Az egyes oldalak által ismert konkrét módszereket a nevük után zárójelben közüljük.
Központi szerverek, Elsődleges tükrözések, Amerikai Egyesült Államok, Ausztrália, Ausztria, Brazília, Cseh Köztársaság, Dánia, Dél-Afrika, Egyesült Királyság, Észtország, Finnország, Franciaország, Görögország, Hollandia, Hongkong, Írország, Izland, Izrael, Japán, Kanada, Kína, Korea, Lengyelország, Lettország, Litvánia, Németország, Norvégia, Olaszország, Örményország, Oroszország, Portugália, Románia, Spanyolország, Svájc, Svédország, Szaúd-Arábia, Szlovák Köztársaság, Szlovénia, Tajvan, Törökország, Új-Zéland, Ukrajna.
(Dátum: UTC)
ftp://ftp.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)
Bármilyen gond esetén a következő címet kell értesíteni:
<mirror-admin@FreeBSD.org>
.
ftp://ftp4.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)
ftp://ftp10.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@us.FreeBSD.org>
.
ftp://ftp4.us.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)
ftp://ftp5.us.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)
ftp://ftp7.us.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
ftp://ftp12.us.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)
ftp://ftp13.us.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@au.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@at.FreeBSD.org>
.
ftp://ftp.at.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@br.FreeBSD.org>
.
ftp://ftp3.br.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)
ftp5.br.FreeBSD.org
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@cz.FreeBSD.org>
.
ftp://ftp.cz.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@dk.FreeBSD.org>
.
ftp://ftp.dk.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@za.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@uk.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@ee.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@fi.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@fr.FreeBSD.org>
.
ftp://ftp1.fr.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
ftp://ftp4.fr.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)
ftp://ftp6.fr.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@gr.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@nl.FreeBSD.org>
.
ftp://ftp.nl.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@ie.FreeBSD.org>
.
ftp://ftp2.ie.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
ftp://ftp3.ie.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@is.FreeBSD.org>
.
ftp://ftp.is.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@il.FreeBSD.org>
.
ftp://ftp.il.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@jp.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@ca.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@cn.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@kr.FreeBSD.org>
.
ftp://ftp.kr.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@pl.FreeBSD.org>
.
ftp://ftp2.pl.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@lv.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@lt.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<de-bsd-hubs@de.FreeBSD.org>
.
ftp://ftp1.de.FreeBSD.org/freebsd/ (ftp / http / rsync)
ftp://ftp2.de.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
ftp://ftp4.de.FreeBSD.org/FreeBSD/ (ftp / http / rsync)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@no.FreeBSD.org>
.
ftp://ftp.no.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@it.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@am.FreeBSD.org>
.
ftp://ftp1.am.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@ru.FreeBSD.org>
.
ftp://ftp.ru.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
ftp://ftp2.ru.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
ftp://ftp5.ru.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@pt.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@ro.FreeBSD.org>
.
ftp://ftp1.ro.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@es.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@ch.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@se.FreeBSD.org>
.
ftp://ftp2.se.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
ftp://ftp4.se.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)
ftp://ftp5.se.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
Bármilyen gond esetén a következő címet kell értesíteni:
<ftpadmin@isu.net.sa>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@sk.FreeBSD.org>
.
ftp://ftp.sk.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)
ftp://ftp2.sk.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@si.FreeBSD.org>
.
Bármilyen gond esetén a következő címet kell értesíteni:
<hostmaster@tw.FreeBSD.org>
.
ftp://ftp.tw.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / rsync / rsyncv6)
ftp://ftp2.tw.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)
ftp://ftp6.tw.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
ftp://ftp.tr.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)
ftp://ftp2.tr.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)
Az egyes kiadásokhoz tartozó alap CD-készletek BitTorrent segítségével is elérhetőek. A lemezek képeire hivatkozó torrent állományokat a http://torrents.freebsd.org:8080 címről tölthetjük le.
A BitTorrent kliens telepíthető a net-p2p/py-bittorrent portból vagy csomagból.
Miután sikeresen letöltöttük BitTorrenten keresztül a lemezképeket, a 18.6.3 Szakasz nyújthat segítséget abban, hogy kell ezeket lemezre írni.
Az anonim CVS (vagy más néven anoncvs) a FreeBSD-hez mellékelt CVS-es segédprogramok által nyújtott olyan lehetőség, amivel távoli CVS repositorykkal tudunk szinkronizálni. Több más dolog mellett lehetővé teszi a FreeBSD felhasználói számára, hogy kiemelt jogosultságok nélkül képesek legyenek olvasással kapcsolatos CVS műveleteket végrehajtani a FreeBSD Projekt hivatalos anoncvs szerverein. A használatához egyszerűen csak a kiválasztott anoncvs szervert kell beállítani a CVSROOT környezeti változó értékének, ahol aztán a cvs login parancsnak a szerver által ismert “anoncvs” jelszót kell megadni. Ezután a cvs(1) paranccsal a többi CVS szerverhez hasonlóan lehetőségünk nyílik hozzáférni.
Megjegyzés: A cvs login parancs a bejelentkezésekhez szükséges jelszavakat a HOME könyvtárunkban levő .cvspass állományban tárolja. Ha ez az állomány nem létezik, akkor a cvs login első használatakor hibát kapunk. Ilyenkor csak hozzunk létre egy üres .cvspass állományt, majd próbálkozzunk újra.
Habár azt mondhatnánk, hogy a CVSup és az anoncvs lényegében egyazon feladatot oldják meg, mind a két esetben léteznek olyan kompromisszumok, amelyek befolyásolhatják a felhasználó választását a két szinkronizációs módszer között. Dióhéjban ezt úgy tudnánk összefoglalni, hogy a CVSup a hálózati erőforrásokat hatékonyabban kihasználja és kettejük közül ez a fejlettebb, azonban ennek meg kell fizetnünk az árát. A CVSup használatához először ugyanis telepítenünk kell és be kell állítanunk egy speciális klienst, illetve az adatokat a CVSup által gyűjteményeknek (collection) nevezett, viszonylag nagy méretű egyeségekben érhetjük el.
Ezzel szemben az anoncvs használata során a megfelelő CVS modul nevének felhasználásával tetszőlegesen megvizsgálhatunk önálló állományokat vagy akár programokat (mint az ls vagy a grep). Természetesen az anoncvs segítségével csupán az olvasást igénylő CVS műveleteket végezhetjük el, ezért ha a FreeBSD Projekt keretein belül fejleszteni is szeretnénk, akkor inkább érdemes a CVSup alkalmazást választani.
A cvs(1) parancsot nagyon könnyű beállítani az anonim CVS repositoryk használatához, hiszen mindössze annyit kell tennünk, hogy a CVSROOT környezeti változó értékének megadjuk a FreeBSD Projekt valamelyik anoncvs szerverét. Ezen sorok írásának pillanatában a következő szerverek érhetőek el:
Franciaország: :pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs (pserver módban a jelszó “anoncvs”, az SSH pedig nincs jelszó)
Tajvan: :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs (pserver módban a cvs login használatával tetszőleges jelszó megadható, az SSH esetén pedig nincs jelszó)
SSH2 HostKey: 1024 02:ed:1b:17:d6:97:2b:58:5e:5c:e2:da:3b:89:88:26 /etc/ssh/ssh_host_rsa_key.pub SSH2 HostKey: 1024 e8:3b:29:7b:ca:9f:ac:e9:45:cb:c8:17:ae:9b:eb:55 /etc/ssh/ssh_host_dsa_key.pub
Egyesült Államok: anoncvs@anoncvs1.FreeBSD.org:/home/ncvs (csak SSH v2 — nincs jelszó)
SSH2 HostKey: 2048 53:1f:15:a3:72:5c:43:f6:44:0e:6a:e9:bb:f8:01:62 /etc/ssh/ssh_host_dsa_key.pub
Mivel a CVS használatával
“kikérhetjük” (check out)
tulajdonképpen a FreeBSD forrásainak
akármelyik eddigi (vagy majd ezután
keletkező) változatát, érdemes
megismerkednünk a cvs(1) által alkalmazott
revízió (revision) (az -r
opcióval állítható)
fogalmával és a FreeBSD Projekt repositoryjain
belül engedélyezett
értékeivel.
Címkéket (tag) két esetben használhatunk: a revíziók és az ágak esetén. A revíziós címkék mindig egy adott revízióra hivatkoznak, ami állandóan ugyanazt jelenti. Ezzel szemben az ágak címkéi a fejlesztés adott irányú menetének az adott pillanatban legfrissebb revízióját hivatkozzák. Mivel az ágak címkéi nem egy adott revízióra vonatkoznak, ezért elmondhatjuk róluk, hogy naponta változik a jelentésük.
Az A.7 Szakasz tartalmazza a felhasználók számára fontos revíziós címkéket. Ezek azonban nem igazak a Portgyűjteményre, mivel a Portgyűjteménynek nincs egyszerre több fejlesztési iránya.
Egy ág címkéjének
megadásával általában az adott
irányhoz tartozó állományok
legfrissebb változatát kapjuk meg. Ha viszont
az állományok egy korábbi
változatára lenne szükségünk,
akkor a -D dátum
opció
megadásával meg tudjuk adni annak
időpontját. Erről részletesebben a
cvs(1) man oldalán olvashatunk.
Habár a továbbhaladáshoz mindenképpen javasoljuk a cvs(1) man oldalának részletes áttanulmányozását, mutatunk néhány gyors példát az anonim CVS használatának tömör illusztrálására:
Példa A-1. Valami (az ls(1)) kikérése a -CURRENT ágból
% setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
% cvs login
“Jelszóként” ezután bármit megadhatunk.
% cvs co ls
Példa A-2. Az src/ fa kikérése SSH-n keresztül
% cvs -d anoncvs@anoncvs1.FreeBSD.org:/home/ncvs co src The authenticity of host 'anoncvs1.freebsd.org (216.87.78.137)' can't be established. DSA key fingerprint is 53:1f:15:a3:72:5c:43:f6:44:0e:6a:e9:bb:f8:01:62. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'anoncvs1.freebsd.org' (DSA) to the list of known hosts.
Példa A-3. Az ls(1) 6-STABLE ágban szereplő változatának kikérése
% setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs % cvs login Amikor kéri, “jelszóként” bármit megadhatunk. % cvs co -rRELENG_6 ls
Példa A-4. Az ls(1) változásainak (Unified Diff formátumú) listázása
% setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs % cvs login Itt “jelszóként” bármit megadhatunk. % cvs rdiff -u -rRELENG_5_3_0_RELEASE -rRELENG_5_4_0_RELEASE ls
A következő helyeken találhatunk még hasznos információkat a CVS használatáról:
A CVS bemutatása (forrás: Kaliforna Állami Műszaki Egyetem).
A CVS honlapja, a CVS fejlesztésével és alkalmazásával foglalkozó közösség oldala.
A CVSweb a FreeBSD Projekt által használt CVS rendszerének webes felülete.
A CTM használatáva a távoli könyvtárakat tudunk egy központi változattal szinkronban tartani. Eredetileg a FreeBSD forrásaihoz fejlesztették ki, de idővel mások más célokra is alkalmasnak találhatják majd. Az eltérések (delták) feldolgozásával kapcsolatban kevéske dokumentáció áll rendelkezésre, ezért a ctm-users levelezési listát érdemes felkeresni, ha többet szeretnénk megtudni a CTM egyéb célú alkalmazásairól.
A CTM segítségével a FreeBSD forrásainak helyi másolatát hozhatjuk létre. A források több különböző “kivitelben” is hozzáférhetőek. A CTM minden esetben képes eleget tenni az igényeinknek, akár az egész CVS fát, akár annak egy részét kívánjuk csak figyelemmel követni. Ha netalán FreeBSD fejlesztők lennénk, és híján vagyunk vagy éppen gyenge TCP/IP kapcsolattal rendelkezünk, esetleg egyszerűen csak automatikusan értesülni szeretnénk a változásokról, a CTM-et nekünk találták ki. A leggyorsabban fejlődő ágakból is naponta legfeljebb három deltát fogunk kapni, azonban érdemes megfontolni a változások automatikus elküldését levélben. A szükséges frissítések méretét mindig igyekszünk minimalizálni. Ez egyébként általában alig 5 KB, de néha (tízből egyszer) előfordul, hogy 10 és 50 KB között van, és időnként 100 KB vagy afeletti mennyiségű frissítés is érkezhet.
Amikor a fejlesztők által használt forrásokat töltjük le, magunknak kell gondoskodnunk a menet közben felmerülő különböző problémák megoldásáról. Ez kiváltképp igaz abban az esetben, amikor az aktuális, vagy hivatalos nevén “CURRENT” ágat követjük. Mielőtt azonban egy ilyenbe belevágnánk, érdemes fellapozni a FreeBSD legfrissebb változatának használatáról szóló fejezetet.
A működéshez két komponens szükségeltetik: a CTM kliensprogramja és hozzá a kezdeti delták (amivel majd letöltjük a “CURRENT” forrásait).
A CTM program már a 2.0 kiadástól kezdve a FreeBSD része, és a források között a /usr/src/usr.sbin/ctm könyvtárban találjuk meg (amennyiben felraktuk).
A CTM működéséhez kellő “deltákat” két módon, FTP-n vagy e-mailen keresztül szerezhetjük be. Ha el tudunk érni interneten levő FTP oldalakat, akkor az alábbi FTP helyeken találunk a CTM-hez használható adatokat:
ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/
valamint lásd a tükrözéseket.
FTP-n keresztül lépjünk be a könyvtárba, töltsük le a README nevű állományt és kövessük a benne szereplő utasításokat.
Ha viszont e-mailen keresztül akarjuk megszerezni a deltákat:
Iratkozzunk fel a CTM terjesztési listáinak egyikére. A ctm-cvs-cur lista az egész CVS-fát, míg a ctm-src-cur a fő fejlesztési ágat teszi elérhetővé. A ctm-src-4 a 4.X kiadásaihoz ágakat tartalmazza, és így tovább. (Ha nem tudjuk, hogyan kell feliratkozni egy levelezési listára, akkor kattintsunk a lista nevére vagy kövessük a http://lists.FreeBSD.org/mailman/listinfo linket, majd kattintsunk arra a listára, ahova fel akarunk iratkozni. Ezen az oldalon az összes, a feliratkozáshoz nélkülözhetetlen információnak szerepelnie kell.)
Miután elkezdenek megérkezni a CTM-frissítéseket tartalmazó levelek, a tartalmukat a ctm_rmail programmal tudjuk kicsomagolni és felhasználni. Az /etc/aliases állományba akár közvetlenül is beírhatjuk a ctm_rmail programot, és ezzel a önállósítani tudjuk a levélben érkező frissítések feldolgozását. A ctm_rmail man oldalán olvashatjuk ennek részleteit.
Megjegyzés: Nem számít, milyen módon jutunk hozzá a CTM által használt deltákhoz, minden esetben fel kell iratkoznunk a ctm-announce levelezési listára. Az elkövetkezendőkben ez lesz az egyetlen hely, ahová a CTM rendszer működtetésével kapcsolatos bejelentések beküldésre kerülnek. A feliratkozáshoz kattinsunk a fenti lista nevére és kövessük a mellette szereplő utasításokat.
Mielőtt nekilátnánk a CTM-hez tartozó delták használatának, először el kell jutnunk egy kiindulási ponthoz, ahonnan majd létre tudjuk hozni a rákövetkező deltákat.
Ehhez elsőként vegyük számba, pontosan mink is van. Általában mindenki egy “üres” könyvtárral kezd. Ilyenkor egy kezdeti “Empty” (mint “üres”) elnevezésű deltával tudjuk megkezdeni az CTM által ismert fa szinkronizálását. Erre a célra lesznek majd szintén alkalmasak a “megkezdett” delták is, amelyek valamikor a CD-re fognak felkerülni.
Mivel a fák maguk több tíz megabyte-nyi méretűek, ezért érdemes inkább valami kéznél levő eszközzel megkezdeni a folyamatot. Ha van -RELEASE verziójú CD-nk, akkor másoljuk le róla és bontsuk ki a kiindulásként használt forrásokat. Ezzel jelentős mennyiségű adat átvitelét takaríthatjuk meg.
A “kezdő” deltákat könnyen megismerjük a szám után X karakterrel leválasztott nevükről (például src-cur.3210XEmpty.gz). Az X után szereplő megnevezés a kezdeti “kiindulás” (seed) fokának felel meg. Az Empty egy üres könyvtárra utal. A szabályok szerint az Empty állapotból 100 deltánként jön létre újabb (kiindulásra alkalmas) alapváltozat. Ezek azonban nagyon nagyok is lehetnek. A 70 vagy 80 megabyte-os gzippel csomagolt adatok gyakoriak az XEmpty delták esetén.
Miután kiválasztottuk a számunkra megfelelő alapváltozatot, szükségünk lesz a tőle nagyobb sorszámú összes deltára is.
A delták felhasználásához egyszerűen csak ennyit kell tennünk:
# cd /ahol/tárolni/akarjuk/az/adatokat # ctm -v -v /ahol/tároljuk/a/deltákat/src-xxx.*
A CTM képes értelmezni a gzip által csomagolt adatokat, ezért nincs szükség a delták előzetes kitömörítésére, amivel tárhelyet tudunk spórolni.
Hacsak nem tekinti tökéletesen
biztonságosnak az egész folyamatot, akkor a
CTM nem fog
módosítani a fán. A deltákat a
CTM -c
kapcsolójával is ellenőrizhetjük,
aminek során egyáltalán nem fog
módosulni a forrásfa. Ekkor egyszerűen
csak ellenőrzi a delták
sértetlenségét és megnézi,
hogy minden rendben zajlana-e az alkalmazásuk
során.
A CTM-nek vannak még további kapcsolói is, melyekről bővebben a man oldalakból és a forráskódokból tájékozódhatunk.
Most már minden megvan, ami kellhet. Amikor kapunk egy újabb deltát, a forrásaink frissítéséhez csak futtassuk át a CTM-en.
Ne töröljük le azokat a deltákat, melyeket nehezen tudtunk letölteni. Helyette érdemes inkább megtartani ezeket arra az esetre, ha valami rossz történne. Még ha csak floppylemezek is állnak rendelkezésünkre, mindenképpen másoljuk le ezeket az fdwrite paranccsal.
Fejlesztőként biztosan szeretnénk kísérletezni és állományokat megváltoztatni a forrásfában. A CTM a helyben elkövetett változtatásokat csak korlátozottan támogatja: az ize nevű állomány meglétének vizsgálata előtt az ize.ctm állományt fogja keresni. Ha létezik, akkor a CTM az ize helyett ezen fog dolgozni.
Ezzel a viselkedéssel nyerjük a saját változtatásaink megtartásának egyszerű módját: csak másoljuk le .ctm kiterjesztéssel a módosítani tervezett állományokat. Ezután már szabadon módosíthatjuk a forrásokat, miközben a CTM a .ctm kiterjesztésű állományokat folyamatosan szinkronban tartja.
A CTM által a
forrásokon elvégzendő
változtatások listáját az
-l
kapcsolóval
kérdezhetjük le.
Ez akkor esik kézre, ha szeretnénk feljegyezni a bekövetkező változásokat, vagy bármilyen módon elő- vagy utófeldolgozni a módosított állományokat, esetleg szimplán elővigyázatosak akarunk lenni.
Néha egyszerűen csak szeretnénk az összes érintett állományról biztonsági másolatot készíteni a CTM által elvégzett frissítés előtt.
A -B
mentés-állomány
beállítás megadásával az
adott CTM delta által
módosítandó összes
állomány tárolásra kerül a
mentés-állomány
nevű állományba.
Egyes esetekben érdekünkben állhat leszűkíteni a CTM által eszközölt frissítések hatáskörét, vagy egyszerűen csak néhány állomány szinkronizálására van szükségünk.
A CTM számára
feldolgozható állományok
listáját reguláris kifejezés
formájában az -e
és
-x
opciók mentén
határozhatjuk meg.
Például ha a lib/libc/Makefile állomány az összegyűjtött CTM delták szerinti legfrissebb verziójához kívánunk hozzájutni, akkor futtassuk az alábbi parancsot:
# cd /akarhova/ahova/ki/akarjuk/bontani/ # ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*
A CTM deltákban
megadott minden egyes állomány esetén
az -e
az -x
opciók
a parancssorban történt megadásuk
sorrendjében kerülnek feldolgozásra. Egy
állományt kizárólag csak akkor
dolgoz fel a CTM, ha az az
-e
és -x
opciók kiértékelése után
is indokolt.
Rengeteg van:
Valamiféle hitelesítés bevezetése a CTM rendszerbe, amivel észlelhetőek a meghamisított CTM-frissítések.
A CTM beállításainak letisztázása, mivel eléggé megtévesztőek és nehézkesen használhatóak.
Léteznek delták a portok gyűjteményéhez is, azonban még nem mutatkozott túlzottan nagy érdeklődés irántuk.
A CTM/FreeBSD anonim FTP-n keresztül elérhető az alábbi tüköroldalak valamelyikéről. Amennyiben ezen a módon kívánjuk letölteni a CTM rendszerhez tartozó állományokat, először próbálkozzunk a hozzánk legközelebb levő szerverrel.
Ha bármilyen gond merülne fel, értesítsük a ctm-users levelezési listát.
Ha nem találtunk volna hozzánk közel eső tükrözést, vagy ha talált tükör nem elég friss, akkor próbálkozzunk egy olyan keresőmotor használatával, mint például az alltheweb.
A CVSup távoli szervereken található központi repositorykban levő forrásfák terjesztésére és a rajtuk keresztüli frissítésre alkalmas programcsomag. A FreeBSD forrásait egy CVS repositoryban tartják karban Kaliforniában egy fejlesztéseket tároló központi számítógépen. A CVSup segítségével a FreeBSD felhasználói könnyen szinkronban tudják vele tartani a saját forrásaikat.
A CVSup az ún. lehúzással frissít. Ilyenkor a kliensek csak akkor kérnek a szervertől frissítéseket, amikor szükségük van rá, miközben a szerver passzívan várja a frissítési kérelmeket. Ennek megfelelően tehát minden esetben a kliens kezdeményezi a frissítést, a szerver pedig önmagától sosem küld ilyeneket kéretlenül. A felhasználóknak így vagy maguknak kell meghívniuk a CVSup kliensét, vagy a frissítések rendszeres automatikus letöltéséhez be kell állítaniuk a cron rendszerprogramot.
A CVSup kifejezés ebben az írásmódban az egész programcsomagra utal. Fő alkotórészei a a felhasználó gépén futó cvsup nevű kliens, és a FreeBSD tüköroldalain futó cvsupd nevű szerver.
A FreeBSD dokumentációjának és levelezési listáinak fürkészése során rengeteg hivatkozást találhatunk egy sup nevű alkalmazásra. A sup a CVSup elődje volt, és hasonló célokat szolgált. A CVSup használat tekintetében nagyon hasonlít a sup-hoz, és ami azt illeti, a a sup konfigurációs állományaival visszafele kompatibilis formátumot használ. Mivel a CVSup sokkal gyorsabb és rugalmasabb, a supot már nem használja a FreeBSD Projekt.
Megjegyzés: A csup a CVSup C nyelven újraírt változata. Legnagyobb előnye, hogy gyorsabb és nincs szüksége a Modula-3 nyelv futtató környezetére, ezért azt nem kell a használatához telepíteni. Ráadásul, ha a FreeBSD 6.2 vagy annál későbbi változatát használjuk, akkor minden további nélkül a rendelkezésünkre áll, hiszen az alaprendszer része. A FreeBSD korábbi verzióinak alaprendszerei ugyan nem tartalmazzák a csup(1) parancsot, viszont a net/csup port vagy csomag segítségével pillanatok alatt telepíteni tudjuk. Amennyiben a csup mellett tennénk le a voksunkat, a szakasz fennmaradó részében egyszerűen hagyjuk ki a CVSup telepítéséről szóló lépéseket és a CVSup hivatkozásait helyettesítsük a csup programmal.
A CVSup telepítésének legegyszerűbb módja a FreeBSD csomaggyűjteményében található előrefordított net/cvsup csomag használata. Ha viszont inkább forrásból akarjuk telepíteni a CVSupot, akkor helyette használjuk a net/cvsup portot. De legyünk elővigyázatosak: a net/cvsup portnak szüksége van a Modula-3 rendszerre, aminek letöltése és lefordítása pedig meglehetősen sok időt és tárhelyet igényel.
Megjegyzés: Ha olyan gépen akarjuk használni a CVSupot, ahol nincs XFree86, Xorg vagy bármilyen más ilyen szerver, akkor használjuk a net/cvsup-without-gui portot, ami nem tartalmazza a hozzá tartozó grafikus felületet.
Ha a FreeBSD 6.1 vagy korábbi változatain szeretnénk telepíteni a csupot, használjuk a FreeBSD csomaggyűjteményében megtalálható net/csup csomagot. Ha viszont forrásból kívánjuk telepíteni a csup programot, akkor helyette használjuk a net/csup portot.
A CVSup működését a supfile elnevezésű állomány vezérli. A /usr/share/examples/cvsup/ könyvárban találhatunk néhány példát a supfile állományokra.
A supfile állományban szereplő információk a CVSup használatával kapcsolatban a következő kérdéseket válaszolják meg:
Az imént feltett kérdésekre a következő szakaszokban összeállítandó supfile segítségével fogunk válaszolni. Ehhez először bemutatjuk a supfile formátumú állományok általános szerkezetét.
A supfile állományok szöveget tartalmaznak. A megjegyzések # karakterrel kezdődnek és a sor végéig tartanak. A kizárólag csak megjegyzéseket tartalmazó vagy üres sorok nem kerülnek feldolgozásra.
Az összes többi fennmaradó sorban pedig azokat az állományokat írjuk le, amelyeket a felhasználó le akar tölteni. Az ilyen fajtájú sorok egy “gyűjtemény” (collection) nevével kezdődnek, ami állományok egy szerver által meghatározott logikai csoportjára utal. A gyűjtemény neve ennek megfelelően elárulja a szervernek, hogy pontosan milyen állományokra van szükségünk. Ezután következik whitespace-szel elválasztva nulla vagy több mező, amelyek a korábban feltett kérdéseinket válaszolják meg rendre. Ezeknek a mezőknek két típusa létezik: a beállításokat és a konkrét értéket tároló mezők. A beállításokat tároló mezők különböző kulcsszavakat tartalmaznak, például a delete (törlés) vagy compress (tömörítés). Az értéket tároló mezők is egy kulcsszóval kezdődnek, azonban utána közvetlenül egy = (egyenlőségjel) jön, amelyet egy második szó követ szorosan. Így például a release=cvs pontosan egy ilyen értékmező lesz.
Egy supfile általában egynél több gyűjtemény letöltését írja le. Ezért az ilyen állományok felépítésének egyik módja, ha az egyes gyűjteményhez explicite megadjuk a hozzá tartozó mezőket. Azonban így a supfile állományok gyorsan megnövekednek és kényelmetlenné válnak, mivel a legtöbb gyűjtemény esetén szinte ugyanazokat a mezőket kellene megadnunk. A CVSup az ilyen típusú bonyodalmak elkerülésére egy alapértelmezési megoldást javasol. A *default nevű álgyűjteménnyel kezdődő sorok segítségével meg tudunk adni olyan beállításokat és értékeket, amelyek az utána következő gyűjtemények számára alapértelmezésnek fognak számítani a supfile állományban. Az itt megadott alapértelmezések természetesen az egyes gyűjteményekben tetszőleges módon felülbírálhatóak, a mezők magán a gyűjteményen belüli megadásával. Az állományban az alapértelmezések is megváltoztathatóak vagy bővíthetőek további *default sorok hozzáadásával.
Mindezek tudatában most már megkezdhetjük a FreeBSD-CURRENT ág tartalmának letöltésére és frissen tartására alkalmas supfile állomány összeállítását.
Milyen állományokat akarunk letölteni?
A CVSupon keresztül elérhető állományok “gyűjteményeknek” hívott nevesített csoportokra bontva érhetőek el. A hivatkozható gyűjtemények leírását a következő szakaszban találjuk. Ebben a példában most szeretnénk letölteni az egész FreeBSD rendszer forrását. Ezt a src-all nevű gyűjteményre hivatkozva érhetjük el. A supfile állományunk létrehozásának első lépéseként soronként egyet megadva felsoroljuk a letölteni kívánt gyűjteményeket (jelen esetünkben csak egyetlen egyet):
src-all
Milyen verzióikra van szükségünk?
A CVSup használatával tulajdonképpen a források összes valaha létezett verziójához hozzá tudunk férni. Ez annak köszönhető, hogy a cvsupd szerver közvetlenül a CVS repositoryból dolgozik, ami pedig az összes verziót tartalmazza. A tag= és date= értékmezők segítségével adhatjuk meg az igényelt verziókat.
Figyelem: Legyünk óvatosak azonban a tag= mezők helyes megadásával. Egyes címkék ugyanis csak bizonyos állománygyűjtemények esetén élnek. Ha hibás vagy elírt címkét adunk meg, akkor a CVSup törölni fog olyan állományokat, amelyeket valószínűleg nem kellene. A ports-* gyűjtemények esetében pedig kifejezetten csak a tag=. mezők használhatóak!
A tag= mezők a tárházban található szimbolikus címkéket nevezik meg. A címkéknek két típusa van: a revíziókhoz és az ágakhoz tartozó címkék. A revíziós címkék mindig egy adott revíziót hivatkoznak, jelentésük állandó. Ezzel szemben az ágak címkéi egy adott fejlesztési ág adott időpontjában elérhető revíziót címkézi. Mivel az ágak címkéi nem egy konkrét revízióra vonatkoznak, ezért akár olyanra is utalhatnak, ami pillanatnyilag még nem is létezik.
Az A.7 Szakaszban megtalálhatjuk a fontosabb ágak címkéit. A CVSup konfigurációs állományában a címkéket a tag= előtaggal kell bevezetni (így tehát a RELENG_4 címke hivatkozása tag=RELENG_4 lesz). Ne felejtsük el, hogy a Portgyűjtemény esetében csak tag=. mező megadásának van értelme.
Figyelem: Igyekezzünk pontosan lemásolni a címkék neveit, mivel a CVSup nem képes megkülönböztetni az érvényes és az érvénytelen címkéket. Ha véletlen elírjuk a címkét, akkor a CVSup úgy fog viselkedni, mintha olyan érvényes címkére hivatkozhatunk volna, amihez nem tartoznak állományok. Ennek következtében pedig egyszerűen letörli a már meglevő forrásainkat.
Egy ág címkéjének
megadása során általában az
adott fejlesztési vonal legfrissebb
verzióját kapjuk meg. Ha viszont az adott
ág valamelyik korábbi
változatára lenne szükségünk,
akkor a date=
értékmező
felhasználásával meg tudjuk adni a
hozzá tartozó dátumot. Ennek
működéséről a cvsup(1) man
oldala részletesebben értekezik.
A példában mi most a FreeBSD-CURRENT verziót akarjuk letölteni. Ezért a következő sort tesszük a supfile állományunk elejére:
*default tag=.
Ha nem adunk meg sem tag=, sem pedig date= mezőket, akkor egy fontos eset következik be. Ilyenkor ugyanis egy konkrét verzió helyett közvetlenül a szerver CVS repositoryjából kapjuk meg az állományokat, az összes kiegészítő információjukkal együtt. A fejlesztők általában ezt a típusú megoldást kedvelik, mivel így a saját rendszerükön is könnyen karban tudnak tartani egy példányt, amiben tudnak keresni a revíziók között és ki tudják kérni akár az állományok korábbi változatait is. Természetesen ennek függvényében jóval több tárhelyre van szükségük.
Honnan akarjuk ezeket beszerezni?
A host= mező beállításával közöljük a cvsup klienssel, honnan töltse le a frissítéseket. A CVSup tükrözések közül bármelyik megfelel erre a célra, habár leginkább azt érdemes választani, ami a kibertérben a hozzánk legközelebb esik. A példában most egy kitalált FreeBSD terjesztési oldalt választunk, a cvsup99.FreeBSD.org-ot:
*default host=cvsup99.FreeBSD.org
A CVSup futtatása
előtt tehát ne felejtsük el
megváltoztatni ezt a létező
számítógép
hálózati nevére. A
cvsup futtatásakor a -h
hálózati
név
opció
megadásával lehetőségünk
ennek
felülbírálására.
Hova akarjuk rakni a számítógépünkön?
A prefix= mező adja meg a cvsup számára, hogy hova tegye a kapott állományokat. A példában a forrásokat közvetlenül a forrásokat tároló központi könyvtárba, a /usr/src könyvtárba tettük. Mivel a src könyvtár neve már hallgatólagosan benne foglaltatik a letöltésre kiválasztott gyűjtemény nevében, ezért itt csak ennyit kell megadnunk:
*default prefix=/usr
Hova akarjuk rakni az állapotot tároló állományokat?
A CVSup kliens egy “bázisnak” (base) nevezett könyvtárban folyamatosan fenntart bizonyos állományokban állapotokat (status file). Ezek a már letöltött állományok nyilvántartásával segítik a CVSup hatékony munkavégzését. Mi most a szabványos bázist, a /var/db könyvtárat fogjuk használni:
*default base=/var/db
Amennyiben még nem létezne a bázisként használni kívánt könyvtár, ideje létrehoznunk. A cvsup ugyanis egy nem létező könyvtár esetén nem lesz hajlandó működni.
További beállítások a supfile állományban:
Általában még egy sor szokott szerepelni a supfile állományokban:
*default release=cvs delete use-rel-suffix compress
A release=cvs mező jelzi, hogy a szervernek a FreeBSD fő CVS repositoryból kell kikeresnie az információkat. Tulajdonképpen majdnem mindig erről van szó, és az itt megadható többi lehetőség ismertetése most egyébként is meghaladná a szakasz határait.
A delete hatására a CVSup képes lesz állományokat törölni. Mindig érdemes megadnunk, hiszen a CVSup csak így tudja teljes mértékben frissentartani a forrásokat. A CVSup természetesen csak azokat az állományokat igyekszik letörölni, amelyek miatt valóban felelős. A kóbor állományokat nem fogja bántani.
A use-rel-suffix hatása egy igazi... Rejtély. Ha tényleg érdekel minket a működése, lapozzuk fel bátran a cvsup(1) man oldalát. Nyugodtan adjuk meg és különösebben ne törődjünk vele.
A compress beállítás segítségével a kommunikációs csatornán vándorló adatokat tudjuk gzip-szerű módon tömöríteni. Ha a hálózati kapcsolatunk sebessége meghaladja a 1,5 Mbitet másodpercenként (T1), akkor ezt már nem érdemes használni, viszont minden más esetben lényeges gyorsulást hozhat.
Összegezzük az eddigieket:
Íme a példaként összerakott supfile állományunk teljes tartalma:
*default tag=. *default host=cvsup99.FreeBSD.org *default prefix=/usr *default base=/var/db *default release=cvs delete use-rel-suffix compress src-all
Ahogy arról már korábban szó esett, a CVSup lehúzással frissít. Ez alapvetően annyit jelent, hogy feltárcsázunk egy CVSup szervert, aki a következőt mondja nekünk: “A következőket tudod tőlem letölteni...”, amire a kliensünk ezt válaszolja: “Rendben, akkor nekem kell ez, ez, ez meg ez.” Alapértelmezés szerint a CVSup kliense azokat az állományokat fogja letölteni, amelyeket a konfigurációs állományban szereplő gyűjtemények és címkék által megneveztünk. Ez azonban nem mindig felel meg az igényeinknek, különösen akkor, amikor a doc, ports vagy www fákat akarjuk letölteni — az emberek többsége ugyanis nem beszél négy vagy öt nyelven, ezért nincs is szükségük a nyelvfüggő állományok letöltésére. A Portgyűjtemény letöltése során a ports-all helyett egyszerűen egyenként is felsorolhatjuk a számunkra érdekes kategóriákat (például ports-astrology, ports-biology stb). Azonban mivel a doc és a www fákhoz nincsenek nyelvfüggő gyűjtemények, ezért elő kell halásznunk a CVSup egyik remek funkcióját, a refuse állományt.
A refuse állománnyal lényegében arra utasítjuk a CVSup alkalmazást, hogy a gyűjteményekből ne töltse le az összes állományt. Úgy is fogalmazhatnánk, hogy javaslatára a kliens visszautasít (refuse) bizonyos szervertől érkező állományokat. Ezeket a visszautasításokat tároló refuse állományt a bázis/sup/ könyvtárban találhatjuk meg (illetve ha még nincsenek, akkor ide kell rakunk ezeket). Itt a bázis a supfile állományban megadott base= mezőre utal, ami a példánkban a /var/db könyvtár volt. Ennek megfelelően tehát a refuse állomány a /var/db/sup/refuse lesz.
A refuse állomány felépítése igen egyszerű: a letölteni nem kívánt állományok és könyvtárak neveit tartalmazza. Például ha az angolul mellett esetleg még beszélünk egy kevés németet is, de nincs szükségünk az angol dokumentáció német fordítására sem, akkor a következőket írjuk a refuse állományba:
doc/bn_* doc/da_* doc/de_* doc/el_* doc/es_* doc/fr_* doc/hu_* doc/it_* doc/ja_* doc/mn_* doc/nl_* doc/no_* doc/pl_* doc/pt_* doc/ru_* doc/sr_* doc/tr_* doc/zh_*
és így tovább a többi nyelvre is (melyeket a FreeBSD CVS repository böngészésével deríthetjük ki).
Ezzel az alkalmas funkcióval a lassú vagy drága internetes kapcsolattal rendelkező felhasználók nagyon jól tudnak gazdálkodni, mivel így nem kell letölteniük az egyáltalán nem használt állományokat. A refuse állományokról és a CVSup más hasonlóan elegáns funkcióiról a saját man oldaláról tudhatunk meg többet.
Most már készen állunk egy próba frissítés elvégzésére. A parancssorban nem sok mindent kell beírnunk ehhez:
# cvsup supfile
ahol a supfile a frissen létrehozott supfile állományunk neve lesz. Feltételezve, hogy a parancsot X11 alatt adtunk ki, az cvsup erre feldob egy grafikus ablakot néhány gombbal. Nyomjuk meg a
feliratú gombot és dőljünk hátra.Mivel a példában a /usr/src könyvtárunk frissítését állítottuk be, az állományok aktualizálásához szükséges jogosultságok biztosításához a cvsup programot root felhasználóként kell elindítanunk. Teljesen érthető, ha egy kicsit izgatottak vagyunk ezekben a pillanatokban, hiszen az előbb hoztunk létre egy általunk eddig ismeretlen programhoz egy konfigurációs állományt. Ezért megemlítenénk, hogy ilyenkor először mindig próbáljuk ki a konfigurációkat, mielőtt azok bármilyen módosítást végeznének a fontos állományainkon. Ehhez hozzunk létre valahol egy üres könyvtárat, majd adjuk meg a parancssorban ennek a nevét:
# mkdir /var/tmp/proba # cvsup supfile /var/tmp/proba
Az így megadott könyvtárba kerülnek a frissítés eredményeképpen keletkező állományok. A CVSup először megvizsgálja a /usr/src könyvtárban található állományokat, viszont egyiküket sem módosítja vagy törli. A frissítések ehelyett a /var/tmp/proba/usr/src könyvtárba fognak kerülni. A CVSup emellett még a báziskönyvtárában tárolt állapotokat sem fogja megváltoztatni. A módosított állományok új változatai a megadott könyvtárba jönnek létre. Mivel a /usr/src könyvtárt ehhez csak olvasni fogjuk, a próba lefuttatásához még root felhasználónak sem kell lennünk.
Ha nem használunk X11-et vagy egyszerűen csak nincs szükségünk a grafikus felületre, a parancssorban pár további opció megadásával így is kiadhatjuk a cvsup parancsot:
# cvsup -g -L 2 supfile
A -g
hatására a
CVSup nem hozza be a grafikus
felületét. Ha nem talál X11-et, akkor ez
természetesen automatikus, de ellenkező esetben ezt
is meg kell adnunk.
Az -L 2
megadásával a
CVSup az összes
elvégzendő frissítésről
részletes értesítést ad. A
részletességnek három foka van, -L
0
-tól indulva egészen -L
2
-ig. Itt az alapértelmezett
érték a 0, amivel a hibaüzenetek
kivételével egyetlen üzenetet sem
kapunk.
Rengeteg egyéb beállítás adható még meg, ezeket a cvsup -H kiadásával kérdezhetjük le. A beállítások pontosabb leírását a man oldalon találjuk meg.
Miután elégedetten tapasztaltuk, hogy a frissítés remekül működik, a cron(8) segítségével próbáljuk meg az egész folyamatot önműködövé tenni a CVSup szabályos időközönkénti futtatásával. Ekkor viszont magától értetődik, hogy a CVSup számára ne engedjük használni a grafikus felületet.
A CVSup révén elérhető állománygyűjtemények egy hierarchikus rendszert alkotnak. Van néhány nagyobb állománygyűjtemény, amelyek kisebb al-állománygyűjteményekre bonthatóak. A nagyobb gyűjtemények letöltése ezért a kisebb algyűjtemények letöltésével egyenlő. A gyűjtemények közt fennálló hierarchikus rendszer a lentebb szereplő lista behúzásaiban érhető tetten.
A leggyakrabban használt gyűjtemények a src-all és a ports-all neveket viselik. A többi gyűjteményt általában csak kevesen és csak speciális célokra használják, ezért egyes tükrözéseken nem feltétlenül találjuk meg mindegyiküket.
A FreeBSD fő CVS repositoryja, beleértve a titkosításhoz tartozó kódokat is.
A FreeBSD terjesztéséhez és tükrözéséhez kapcsolódó állományok.
A FreeBSD kézikönyvének és a többi dokumentáció forrásai. Nem tartalmazza a FreeBSD honlapjának forrásait.
A FreeBSD portgyűjteménye.
Fontos: Ha nem akarjuk a ports-all egészét (vagyis a teljes portfát) frissíteni, csak a lentebb szereplő egyes algyűjteményeket letölteni, akkor soha ne feledkezzünk meg a ports-base megadásáról! Amikor valami változik a portok működésében, akkor a ports-base által képviselt algyűjteményben szereplő állományokat igen gyorsan elkezdik használni a “valódi” portok. Ezért ha csak a “valódi” portokat frissítjük, amelyek viszont igényt tartanak néhány újabb funkcióra is, akkor könnyen fordítási hibára vagy különböző rejtélyes hibaüzenetekbe futhatunk. Emiatt legeslegelőször mindig tegyünk róla, hogy a ports-base algyűjteményünk a lehető legfrissebb legyen.
Fontos: Ha a ports/INDEX állomány egy saját példányát kívánjuk létrehozni, akkor ahhoz a ports-all gyűjteményt (tehát a teljes portfát) le kell kérnünk. A ports/INDEX állományt a portfa egy része alapján nem készíthetjük el. Erről bővebben lásd a GYIK-ot.
A fogyatékos felhasználókat segítő szoftverek.
Arab nyelvi támogatás.
Archiváló eszközök.
Csillagászathoz tartozó portok.
Hangtámogatás.
A Portgyűjtemény saját infrastruktúrája — az Mk/, Tools/ és /usr/ports különféle alkönyvtáraiban elhelyezkedő állományok.
Megjegyzés: Ne hagyjuk figyelmen kívül a fenti fontos figyelmeztetést sem: ezt az algyűjteményt mindig a FreeBSD Portgyűjteményével együtt frissítsük!
Teljesítménytesztek.
Biológia.
Számítógépes tervezőeszközök (CAD).
Kínai nyelvi támogatás.
Kommunikációs szoftverek.
Karakterkódolások közti átalakítók.
Adatbázisok.
A számítógép feltalálása előtt is már létező eszközök.
Fejlesztőeszközök.
Névfeloldással kapcsolatos szoftverek.
Szövegszerkesztők.
Más operációs rendszerek emulátorai.
Pénzügyi, gazdasági és hasonló alkalmazások.
FTP kliensek és szerverek.
Játékok.
Német nyelvi támogatás.
Grafikus segédeszközök.
Héber nyelvi támogatás.
Magyar nyelvi támogatás.
IRC-vel kapcsolatos programok.
Japán nyelvi támogatás.
Java segédeszközök.
Koreai nyelvi támogatás.
Programozási nyelvek.
Levelező programok.
Numerikus számításokkal foglalkozó programok.
MBone alkalmazások.
Egyéb segédprogramok.
Multimediás szoftverek.
Hálózati szoftverek.
Üzenetküldő (Instant Messaging, IM) szoftverek.
Hálózati karbantartó szoftverek.
Egyenrangú (Peer to Peer, P2P) hálózatok.
USENET hírszoftverek.
A Palm™ sorozat szoftveres támogatása.
Lengyel nyelvi támogatás.
A portok és csomagok karbantartását végző segédeszközök.
Portugál nyelvi támogatás.
Nyomdai programok.
Orosz nyelvi támogatás.
Tudományos programok.
Biztonsági segédprogramok.
Parancsértelmezők.
Rendszerprogramok.
Szövegfeldolgozást segítő eszközök (kivéve az asztali kiadványszerkesztést).
Ukrán nyelvi támogatás.
Vietnámi nyelvi támogatás.
A világhálóhoz tartozó szoftverek.
Az X Window System működését segítő portok.
X11 órák.
X11 meghajtók.
X11 állománykezelők.
X11 betűtípusok és a hozzájuk tartozó segédprogramok.
X11 eszközrendszerek.
X11 szerverek.
X11 témák.
X11 ablakkezelők.
A FreeBSD projektek forrásainak repositoryja.
A FreeBSD fontosabb forrásai, a titkosításhoz tartozó kódokkal együtt.
A /usr/src könyvtárban levő egyéb állományok.
Az egyfelhasználós módban használható segédeszközök (/usr/src/bin).
A CDDL licenc szerint terjesztett segédprogramok és függvénykönyvtárak (/usr/src/cddl).
A FreeBSD Projekten kívül fejlesztett segédprogramok és függvénykönyvtárak, viszonylag kevés módosítással (/usr/src/contrib).
A FreeBSD Projekten kívül fejlesztett, titkosítással kapcsolatos segédprogramok és függvénykönyvtárak, viszonylag kevés módosítással (/usr/src/crypto).
Kerberos és DES (/usr/src/eBones). A FreeBSD jelenlegi változatai nem használják.
A rendszer beállításait tartalmazó állományok (/usr/src/etc).
Játékok (/usr/src/games).
A GPL licenc szerint terjesztett segédprogramok (/usr/src/gnu).
(C nyelvi) Header állományok (/usr/src/include).
A Kerberos5 biztonsági csomag (/usr/src/kerberos5).
A KerberosIV biztonsági csomag (/usr/src/kerberosIV).
Függvénykönyvtárak (/usr/src/lib).
Más programok által futtatott rendszerprogramok (/usr/src/libexec).
A FreeBSD kiadások elkészítéséhez szükséges állományok (/usr/src/release).
Statikusan linkelt programok vészhelyzet esetére, lásd rescue(8) (/usr/src/rescue).
Egyfelhasználós módban használható rendszereszközök (/usr/src/sbin).
Titkosítással foglalkozó függvénykönyvtárak és parancsok (/usr/src/secure).
Több rendszer között megosztható állományok (/usr/src/share).
A rendszermag (/usr/src/sys).
A rendszermagban levő titkosítással foglalkozó kód (/usr/src/sys/crypto).
A FreeBSD karbantartására való különböző segédprogramok (/usr/src/tools).
Felhasználói segédprogramok (/usr/src/usr.bin).
Rendszerszintű segédprogramok (/usr/src/usr.sbin).
A FreeBSD Projekt honlapjának forráskódja.
A CVSup szerver saját konfigurációs állományai. A CVSup tükrözései használják.
A GNATS hibanyilvántartó adatbázis.
A FreeBSD levelezési listáinak archívuma.
A FreeBSD Projekt honlapjának generált állományai (de nem a forrásai). A WWW tükrözések használják.
A CVSup részletesebb bemutatását és a hozzá tartozó GYIK-ot A CVSup honlapján találjuk meg.
A CVSup FreeBSD-re vonatkozó tárgyalása a FreeBSD technical discussions levelezési listan történik. Itt és az FreeBSD announcements levelezési listan jelentik be a szoftver újabb változatait.
A CVSup alkalmazással kapcsolatos kérdéseket és hibajelentéseket illetően a CVSup GYIK-ot érdemes megnéznünk.
A FreeBSD CVSup szerverei az alábbi oldalakon érhetőek el:
Központi szerverek, Elsődleges tükrözések, Amerikai Egyesült Államok, Ausztrália, Ausztria, Brazília, Costa Rica, Cseh Köztársaság, Dánia, Dél-Afrika, Egyesült Királyság, Észtország, Finnország, Franciaország, Fülöp-szigetek, Görögország, Hollandia, Írország, Izland, Izrael, Japán, Kanada, Kína, Kirgizisztán, Korea, Kuvait, Lengyelország, Lettország, Litvánia, Magyarország, Németország, Norvégia, Olaszország, Örményország, Oroszország, Portugália, Románia, San Marino, Spanyolország, Svájc, Svédország, Szlovák Köztársaság, Szlovénia, Tajvan, Thaiföld, Törökország, Új-Zéland, Ukrajna.
(Dátum: UTC)
cvsup.FreeBSD.org
cvsup1.FreeBSD.org
cvsup2.FreeBSD.org
cvsup3.FreeBSD.org
cvsup4.FreeBSD.org
cvsup5.FreeBSD.org
cvsup6.FreeBSD.org
cvsup7.FreeBSD.org
cvsup8.FreeBSD.org
cvsup9.FreeBSD.org
cvsup10.FreeBSD.org
cvsup11.FreeBSD.org
cvsup12.FreeBSD.org
cvsup13.FreeBSD.org
cvsup14.FreeBSD.org
cvsup15.FreeBSD.org
cvsup16.FreeBSD.org
cvsup18.FreeBSD.org
cvsup1.us.FreeBSD.org
cvsup2.us.FreeBSD.org
cvsup3.us.FreeBSD.org
cvsup4.us.FreeBSD.org
cvsup5.us.FreeBSD.org
cvsup6.us.FreeBSD.org
cvsup7.us.FreeBSD.org
cvsup8.us.FreeBSD.org
cvsup9.us.FreeBSD.org
cvsup10.us.FreeBSD.org
cvsup11.us.FreeBSD.org
cvsup12.us.FreeBSD.org
cvsup13.us.FreeBSD.org
cvsup14.us.FreeBSD.org
cvsup15.us.FreeBSD.org
cvsup16.us.FreeBSD.org
cvsup18.us.FreeBSD.org
cvsup.au.FreeBSD.org
cvsup.at.FreeBSD.org
cvsup.br.FreeBSD.org
cvsup2.br.FreeBSD.org
cvsup3.br.FreeBSD.org
cvsup4.br.FreeBSD.org
cvsup5.br.FreeBSD.org
cvsup1.cr.FreeBSD.org
cvsup.cz.FreeBSD.org
cvsup.dk.FreeBSD.org
cvsup2.dk.FreeBSD.org
cvsup.za.FreeBSD.org
cvsup2.za.FreeBSD.org
cvsup.uk.FreeBSD.org
cvsup2.uk.FreeBSD.org
cvsup3.uk.FreeBSD.org
cvsup4.uk.FreeBSD.org
cvsup.ee.FreeBSD.org
cvsup.fi.FreeBSD.org
cvsup2.fi.FreeBSD.org
cvsup.fr.FreeBSD.org
cvsup1.fr.FreeBSD.org
cvsup2.fr.FreeBSD.org
cvsup3.fr.FreeBSD.org
cvsup4.fr.FreeBSD.org
cvsup5.fr.FreeBSD.org
cvsup8.fr.FreeBSD.org
cvsup1.ph.FreeBSD.org
cvsup.gr.FreeBSD.org
cvsup2.gr.FreeBSD.org
cvsup.nl.FreeBSD.org
cvsup2.nl.FreeBSD.org
cvsup3.nl.FreeBSD.org
cvsup.ie.FreeBSD.org
cvsup2.ie.FreeBSD.org
cvsup.is.FreeBSD.org
cvsup.il.FreeBSD.org
cvsup.jp.FreeBSD.org
cvsup2.jp.FreeBSD.org
cvsup3.jp.FreeBSD.org
cvsup4.jp.FreeBSD.org
cvsup5.jp.FreeBSD.org
cvsup6.jp.FreeBSD.org
cvsup1.ca.FreeBSD.org
cvsup.cn.FreeBSD.org
cvsup2.cn.FreeBSD.org
cvsup.kg.FreeBSD.org
cvsup.kr.FreeBSD.org
cvsup2.kr.FreeBSD.org
cvsup3.kr.FreeBSD.org
cvsup1.kw.FreeBSD.org
cvsup.pl.FreeBSD.org
cvsup2.pl.FreeBSD.org
cvsup3.pl.FreeBSD.org
cvsup.lv.FreeBSD.org
cvsup2.lv.FreeBSD.org
cvsup.lt.FreeBSD.org
cvsup2.lt.FreeBSD.org
cvsup3.lt.FreeBSD.org
cvsup.hu.FreeBSD.org
cvsup.de.FreeBSD.org
cvsup2.de.FreeBSD.org
cvsup3.de.FreeBSD.org
cvsup4.de.FreeBSD.org
cvsup5.de.FreeBSD.org
cvsup6.de.FreeBSD.org
cvsup7.de.FreeBSD.org
cvsup8.de.FreeBSD.org
cvsup.no.FreeBSD.org
cvsup.it.FreeBSD.org
cvsup1.am.FreeBSD.org
cvsup.ru.FreeBSD.org
cvsup2.ru.FreeBSD.org
cvsup3.ru.FreeBSD.org
cvsup4.ru.FreeBSD.org
cvsup5.ru.FreeBSD.org
cvsup6.ru.FreeBSD.org
cvsup7.ru.FreeBSD.org
cvsup.pt.FreeBSD.org
cvsup2.pt.FreeBSD.org
cvsup3.pt.FreeBSD.org
cvsup.ro.FreeBSD.org
cvsup1.ro.FreeBSD.org
cvsup2.ro.FreeBSD.org
cvsup3.ro.FreeBSD.org
cvsup.sm.FreeBSD.org
cvsup.es.FreeBSD.org
cvsup2.es.FreeBSD.org
cvsup3.es.FreeBSD.org
cvsup.ch.FreeBSD.org
cvsup.se.FreeBSD.org
cvsup2.se.FreeBSD.org
cvsup.sk.FreeBSD.org
cvsup.si.FreeBSD.org
cvsup2.si.FreeBSD.org
cvsup.tw.FreeBSD.org
cvsup3.tw.FreeBSD.org
cvsup4.tw.FreeBSD.org
cvsup5.tw.FreeBSD.org
cvsup6.tw.FreeBSD.org
cvsup7.tw.FreeBSD.org
cvsup8.tw.FreeBSD.org
cvsup9.tw.FreeBSD.org
cvsup10.tw.FreeBSD.org
cvsup11.tw.FreeBSD.org
cvsup12.tw.FreeBSD.org
cvsup13.tw.FreeBSD.org
cvsup14.tw.FreeBSD.org
cvsup.th.FreeBSD.org
cvsup.tr.FreeBSD.org
cvsup2.tr.FreeBSD.org
cvsup.nz.FreeBSD.org
cvsup3.ua.FreeBSD.org
cvsup5.ua.FreeBSD.org
cvsup6.ua.FreeBSD.org
Meg kell adnunk egy revízió címkéjét, amikor a cvs vagy CVSup használatával letöltjük vagy frissítjük a forrásokat. A revíziós címkék a FreeBSD egyik fejlesztési irányát vagy egy adott időpontbeli állapotát hivatkozzák. Az előbbi egy “ág címkéje”, míg az utóbbi pedig egy “kiadás címkéje”.
A HEAD kivételével (amely mindig egy érvényes címke) az összes címke csak a src/ fára vonatkozik. A ports/, doc/ és www/ fák nem tartalmaznak ágakat.
A fő fejlesztési ág, avagy a FreeBSD-CURRENT szimbolikus neve. Ha nem adunk meg revíziót, ez lesz az alapértelmezés.
A CVSup számára ezt . címke jelzi (itt most nem mondatvégi pontot jelöli, hanem a . karaktert).
Megjegyzés: A CVS számára ez lesz az alapértelmezett érték, ha nem adunk meg konkrét revíziós címkét. Többnyire nem túlzottan jó ötlet egy STABLE változatot használó gépen a CURRENT verziójú források kikérése, kivéve hacsak nem ez a szándékunk.
A FreeBSD-8.X fejlesztési ága, más néven a FreeBSD 8-STABLE
A FreeBSD-8.1 kiadás ága, ahová csak a biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-8.0 kiadás ága, ahová csak a biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-7.X fejlesztési ága, más néven a FreeBSD 7-STABLE
A FreeBSD-7.3 kiadás ága, ahová csak a biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-7.2 kiadás ága, ahová csak a biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-7.1 kiadás ága, ahová csak a biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-7.0 kiadás ága, ahová csak a biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-6.X fejlesztési ága, más néven a FreeBSD 6-STABLE
A FreeBSD-6.4 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-6.3 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-6.2 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-6.1 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-6.0 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-5.X fejlesztési ág, más néven a FreeBSD 5-STABLE.
A FreeBSD-5.5 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-5.4 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-5.3 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-5.2 és FreeBSD-5.2.1 kiadások ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-5.1 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-5.0 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-4.X fejlesztési ága, más néven a FreeBSD 4-STABLE.
A FreeBSD-4.11 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-4.10 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-4.9 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-4.8 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-4.7 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-4.6 és FreeBSD-4.6.2 kiadások ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-4.5 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-4.4 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-4.3 kiadás ága, ahová csak biztonsági frissítések és a kritikus hibajavítások kerülnek.
A FreeBSD-3.X fejlesztési ága, más néven a 3.X-STABLE.
A FreeBSD-2.2.X fejlesztési ága, más néven a 2.2-STABLE. Ez az ág manapság már elavult.
Ezek a címkék a FreeBSD egyes kiadásainak dátumára hivatkoznak. Egy kiadás előkészítésének és terjesztésének folyamatáról részleteiben a kiadásokat összefoglaló lapról és a kiadások építéséről szóló cikkből tájékozódhatunk. Az src fában RELENG_ kezdetű címkéket találunk. A ports és doc fákban a címkék nevei a RELEASE előtaggal kezdődnek. Végezetül a www fában nincsenek kiadásokhoz tartozó címkék.
FreeBSD 8.1
FreeBSD 8.0
FreeBSD 7.3
FreeBSD 7.2
FreeBSD 7.1
FreeBSD 7.0
FreeBSD 6.4
FreeBSD 6.3
FreeBSD 6.2
FreeBSD 6.1
FreeBSD 6.0
FreeBSD 5.5
FreeBSD 5.4
FreeBSD 4.11
FreeBSD 5.3
FreeBSD 4.10
FreeBSD 5.2.1
FreeBSD 5.2
FreeBSD 4.9
FreeBSD 5.1
FreeBSD 4.8
FreeBSD 5.0
FreeBSD 4.7
FreeBSD 4.6.2
FreeBSD 4.6.1
FreeBSD 4.6
FreeBSD 4.5
FreeBSD 4.4
FreeBSD 4.3
FreeBSD 4.2
FreeBSD 4.1.1
FreeBSD 4.1
FreeBSD 4.0
FreeBSD 3.5
FreeBSD 3.4
FreeBSD 3.3
FreeBSD 3.2
FreeBSD 3.1
FreeBSD 3.0
FreeBSD 2.2.8
FreeBSD 2.2.7
FreeBSD 2.2.6
FreeBSD 2.2.5
FreeBSD 2.2.2
FreeBSD 2.2.1
FreeBSD 2.2.0
A FreeBSD a következő szerverein érhető el AFS:
Az állományok a következő helyen érhetőek el: /afs/stacken.kth.se/ftp/pub/FreeBSD/
stacken.kth.se # Stacken Computer Club, KTH, Svédország 130.237.234.43 #hot.stacken.kth.se 130.237.237.230 #fishburger.stacken.kth.se 130.237.234.3 #milko.stacken.kth.se
Karbantartó:
<ftp@stacken.kth.se>
A most következő oldalakon a FreeBSD-t érhetjük el az rsync protokollal. Az rsync segédprogram működésében leginkább a rcp(1) parancshoz hasonlít, de sokkal több beállítással rendelkezik, és az rsync távoli frissítéseket kezelő protokollja segítségével csak az állományok csoportjai között levő eltéréseket küldi át, amivel a hálózaton keresztüli szinkronizáció rendkívül felgyorsítható. Ez olyankor jelent számunkra a legtöbbet, ha a FreeBSD FTP szerverének vagy CVS repositoryjának egyik tükrözését tartjuk karban. Az rsync több operációs rendszerre is elérhető, és FreeBSD-n a net/rsync port vagy csomag tartalmazza.
rsync://ftp.cz.FreeBSD.org/
Elérhető gyűjtemények:
ftp: a FreeBSD FTP szerverének részleges tükrözése.
FreeBSD: a FreeBSD FTP szerverének teljes tükrözése.
rsync://ftp.nl.FreeBSD.org/
Elérhető gyűjtemények:
FreeBSD: a FreeBSD FTP szerverének teljes tükrözése.
rsync://ftp.mtu.ru
Elérhető gyűjtemények:
FreeBSD: A FreeBSD FTP szerver teljes tartalma.
FreeBSD-gnats: A GNATS hibanyilvántartó adatbázis.
FreeBSD-Archive: A FreeBSD archívumait tároló FTP szerver tükrözése.
rsync://ftp.tw.FreeBSD.org/
rsync://ftp2.tw.FreeBSD.org/
rsync://ftp6.tw.FreeBSD.org/
Elérhető gyűjtemények:
FreeBSD: a FreeBSD FTP szerverének teljes tükrözése.
rsync://rsync.mirrorservice.org/
Elérhető gyűjtemények:
sites/ftp.freebsd.org: a FreeBSD FTP szerverének teljes tükrözése.
rsync://ftp-master.FreeBSD.org/
Ezt a szervert csak az elsődleges FreeBSD tükrözéseknek szabad használniuk.
Elérhető gyűjtemények:
FreeBSD: a FreeBSD FTP szerverének központi archívuma.
acl: a FreeBSD központi ACL listája.
rsync://ftp13.FreeBSD.org/
Elérhető gyűjtemények:
FreeBSD: a FreeBSD FTP szerver teljes tükrözése.
Míg a man oldalak a FreeBSD operációs rendszer egyes önálló részeit tárgyalják, ismert a tény, hogy arról egyáltalán nem szólnak, miképpen illeszkednek egymáshoz ezek az alkotóelemek, és ezáltal hogyan működik maga az operációs rendszer. Erre a célra egyedül csak egy jó UNIX-os rendszeradminisztrációs szakkönyv és egy jó felhasználói kézikönyv alkalmas.
Idegennyelvű könyvek és folyóiratok:
Using FreeBSD (kínai). Drmaster, 1997. ISBN 9-578-39435-7.
FreeBSD Unleashed (kínai fordítás). China Machine Press. ISBN 7-111-10201-0.
FreeBSD From Scratch (1. kiadás, kínai). China Machine Press. ISBN 7-111-07482-3.
FreeBSD From Scratch (2. kiadás, kínai). China Machine Press. ISBN 7-111-10286-X.
FreeBSD Handbook (2. kiadás, kínai). Posts & Telecom Press. ISBN 7-115-10541-3.
FreeBSD 3.x Internet (kínai). Tsinghua University Press. ISBN 7-900625-66-6.
FreeBSD & Windows (kínai). China Railway Publishing House. ISBN 7-113-03845-X
FreeBSD Internet Services HOWTO (kínai). China Railway Publishing House. ISBN 7-113-03423-3
FreeBSD for PC 98'ers (japán). SHUWA System Co, LTD. ISBN 4-87966-468-5 C3055 P2900E.
FreeBSD (japán). CUTT. ISBN 4-906391-22-2 C3055 P2400E.
Complete Introduction to FreeBSD (japán). Shoeisha Co., Ltd. ISBN 4-88135-473-6 P3600E.
Personal UNIX Starter Kit FreeBSD (japán). ASCII. ISBN 4-7561-1733-3 P3000E.
FreeBSD Handbook (japán fordítás). ASCII. ISBN 4-7561-1580-2 P3800E.
FreeBSD mit Methode (német). Computer und Literatur Verlag/Vertrieb Hanser, 1998. ISBN 3-932311-31-0.
FreeBSD 4 - Installieren, Konfigurieren, Administrieren (német). Computer und Literatur Verlag, 2001. ISBN 3-932311-88-4.
FreeBSD 5 - Installieren, Konfigurieren, Administrieren (német). Computer und Literatur Verlag, 2003. ISBN 3-936546-06-1.
FreeBSD de Luxe (német). Verlag Modere Industrie, 2003. ISBN 3-8266-1343-0.
FreeBSD Install and Utilization Manual (japán). Mainichi Communications Inc., 1998. ISBN 4-8399-0112-0.
Onno W Purbo, Dodi Maryanto, Syahrial Hubbany, Widjil Widodo Building Internet Server with FreeBSD (indonéz nyelven). Elex Media Komputindo.
Absolute BSD: The Ultimate Guide to FreeBSD (kínai fordítás). GrandTech Press, 2003. ISBN 986-7944-92-5.
The FreeBSD 6.0 Book (kínai). Drmaster, 2006. ISBN 9-575-27878-X.
Angol nyelvű könyvek és folyóiratok:
Absolute BSD, 2nd Edition: The Complete Guide to FreeBSD. No Starch Press, 2007. ISBN: 978-1-59327-151-0
The Complete FreeBSD. O'Reilly, 2003. ISBN: 0596005164
The FreeBSD Corporate Networker's Guide. Addison-Wesley, 2000. ISBN: 0201704811
FreeBSD: An Open-Source Operating System for Your Personal Computer. The Bit Tree Press, 2001. ISBN: 0971204500
Teach Yourself FreeBSD in 24 Hours. Sams, 2002. ISBN: 0672324245
FreeBSD 6 Unleashed. Sams, 2006. ISBN: 0672328755
FreeBSD: The Complete Reference. McGrawHill, 2003. ISBN: 0072224096
BSD Magazine, megjelenik a Software Press Sp., z o.o. SK gondozásában. ISSN 1898-9144
Computer Systems Research Group, UC Berkeley. 4.4BSD User's Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-075-9
Computer Systems Research Group, UC Berkeley. 4.4BSD User's Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-076-7
UNIX in a Nutshell. O'Reilly & Associates, Inc., 1990. ISBN 093717520X
Mui, Linda. What You Need To Know When You Can't Find Your UNIX System Administrator. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-104-6
Ohio Állami Egyetemnek van egy Alapozó UNIX kurzusa, amely az Interneten keresztül is elérhető HTML és PostScript formátumokban.
Ennek a dokumentumnak egy olasz fordítása is elérhető az Olasz FreeBSD Dokumentációs Projekt keretében.
Jpman Project, Japanese FreeBSD User's Group. FreeBSD User's Reference Manual (japán fordítás). Mainichi Communications Inc., 1998. ISBN4-8399-0088-4 P3800E.
Az Edinburghi Egyetemen készítettek az újoncok számára egy Internetes kézikönyvet a UNIX környezetekhez.
Albitz, Paul and Liu, Cricket. DNS and BIND (4. kiadás). O'Reilly & Associates, Inc., 2001. ISBN 1-59600-158-4
Computer Systems Research Group, UC Berkeley. 4.4BSD System Manager's Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-080-5
Costales, Brian és mások. Sendmail (2. kiadás). O'Reilly & Associates, Inc., 1997. ISBN 1-56592-222-0
Frisch, Ćleen. Essential System Administration (2. kiadás). O'Reilly & Associates, Inc., 1995. ISBN 1-56592-127-5
Hunt, Craig. TCP/IP Network Administration (2. kiadás). O'Reilly & Associates, Inc., 1997. ISBN 1-56592-322-7
Nemeth, Evi. UNIX System Administration Handbook (3. kiadás). Prentice Hall, 2000. ISBN 0-13-020601-6
Stern, Hal. Managing NFS and NIS. O'Reilly & Associates, Inc., 1991. ISBN 0-937175-75-7
Jpman Project, Japan FreeBSD Users Group. FreeBSD System Administrator's Manual (japán fordítás). Mainichi Communications Inc., 1998. ISBN4-8399-0109-0 P3300E.
Dreyfus, Emmanuel. Cahiers de l'Admin: BSD (2. kiadás, franciául). Eyrolles, 2004. ISBN 2-212-11463-X
Asente, Paul, Converse, Diana, and Swick, Ralph. X Window System Toolkit. Digital Press, 1998. ISBN 1-55558-178-1
Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-078-3
Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-079-1
Harbison, Samuel P. and Steele, Guy L. Jr. C: A Reference Manual (4. kiadás). Prentice Hall, 1995. ISBN 0-13-326224-3
Kernighan, Brian and Dennis M. Ritchie. The C Programming Language (2. kiadás). PTR Prentice Hall, 1988. ISBN 0-13-110362-8
Lehey, Greg. Porting UNIX Software. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-126-7
Plauger, P. J. The Standard C Library. Prentice Hall, 1992. ISBN 0-13-131509-9
Spinellis, Diomidis. Code Reading: The Open Source Perspective. Addison-Wesley, 2003. ISBN 0-201-79940-5
Spinellis, Diomidis. Code Quality: The Open Source Perspective. Addison-Wesley, 2006. ISBN 0-321-16607-8
Stevens, W. Richard and Stephen A. Rago. Advanced Programming in the UNIX Environment (2. kiadás). Reading, Mass. : Addison-Wesley, 2005. ISBN 0-201-43307-9
Stevens, W. Richard. UNIX Network Programming (2. kiadás), PTR Prentice Hall, 1998. ISBN 0-13-490012-X
Wells, Bill. “Writing Serial Drivers for UNIX”. Dr. Dobb's Journal. 19(15), 1994. december, 68-71. és 97-99. oldal.
Andleigh, Prabhat K. UNIX System Architecture. Prentice-Hall, Inc., 1990. ISBN 0-13-949843-5
Jolitz, William. “Porting UNIX to the 386”. Dr. Dobb's Journal. 1991. január - 1992. július.
Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels és John Quarterman. The Design and Implementation of the 4.3BSD UNIX Operating System. Reading, Mass. : Addison-Wesley, 1989. ISBN 0-201-06196-1
Leffler, Samuel J., Marshall Kirk McKusick. The Design and Implementation of the 4.3BSD UNIX Operating System: Answer Book. Reading, Mass. : Addison-Wesley, 1991. ISBN 0-201-54629-9
McKusick, Marshall Kirk, Keith Bostic, Michael J Karels és John Quarterman. The Design and Implementation of the 4.4BSD Operating System. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-54979-4
(A könyv 2. fejezete elérhető online a FreeBSD Dokumentációs Projekt részeként, valamint itt a 9. fejezet.)
Marshall Kirk McKusick, George V. Neville-Neil. The Design and Implementation of the FreeBSD Operating System. Boston, Mass. : Addison-Wesley, 2004. ISBN 0-201-70245-2
Stevens, W. Richard. TCP/IP Illustrated, Vol 1: The Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63346-9
Schimmel, Curt. UNIX Systems for Modern Architectures. Reading, Mass. : Addison-Wesley, 1994. ISBN 0-201-63338-8
Stevens, W. Richard. TCP/IP Illustrated, Vol 3: TCP for Transactions, HTTP, NNTP and the UNIX Domain Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63495-3
Vahalia, Uresh. UNIX Internals — The New Frontiers. Prentice Hall, 1996. ISBN 0-13-101908-2
Wright, Gary R. és W. Richard Stevens. TCP/IP Illustrated, Vol 2: The Implementation. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63354-X
Cheswick, William R. és Steven M. Bellovin. Firewalls and Internet Security: Repelling the Wily Hacker. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63357-4
Garfinkel, Simson és Gene Spafford. Practical UNIX & Internet Security (2. kiadás). O'Reilly & Associates, Inc., 1996. ISBN 1-56592-148-8
Garfinkel, Simson. PGP Pretty Good Privacy. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-098-8
Anderson, Don és Tom Shanley. Pentium Processor System Architecture (2. kiadás). Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40992-5
Ferraro, Richard F. Programmer's Guide to the EGA, VGA, and Super VGA Cards (3. kiadás). Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-62490-7
Az Intel által gyártott processzorokról és chipsetekről, valamint az általuk kialakított szabványokról a saját fejlesztői oldalukon, általában PDF állományok formájában kaphatunk információkat.
Shanley, Tom. 80486 System Architecture (3. kiadás). Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40994-1
Shanley, Tom. ISA System Architecture (3. kiadás). Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40996-8
Shanley, Tom. PCI System Architecture (4. kiadás). Reading, Mass. : Addison-Wesley, 1999. ISBN 0-201-30974-2
Van Gilluwe, Frank. The Undocumented PC (2. kiadás). Reading, Mass: Addison-Wesley Pub. Co., 1996. ISBN 0-201-47950-8
Messmer, Hans-Peter. The Indispensable PC Hardware Book (4. kiadás). Reading, Mass: Addison-Wesley Pub. Co., 2002. ISBN 0-201-59616-4
Lion, John. Lion's Commentary on UNIX (6. kiadás, forráskóddal). ITP Media Group, 1996. ISBN 1573980137
Raymond, Eric S. The New Hacker's Dictionary (3. kiadás). MIT Press, 1996. ISBN 0-262-68092-0. Vagy Zsargon fájlként is ismert.
Salus, Peter H. A quarter century of UNIX. Addison-Wesley Publishing Company, Inc., 1994. ISBN 0-201-54777-5
Simon Garfinkel, Daniel Weise, Steven Strassmann. The UNIX-HATERS Handbook. IDG Books Worldwide, Inc., 1994. ISBN 1-56884-203-1. Elfogyott, de még elérhető ezen a linken.
Don Libes, Sandy Ressler. Life with UNIX — különkiadás. Prentice-Hall, Inc., 1989. ISBN 0-13-536657-7
The BSD family tree. http://www.FreeBSD.org/cgi/cvsweb.cgi/src/share/misc/bsd-family-tree vagy egy telepített FreeBSD rendszeren a /usr/share/misc/bsd-family-tree állomány.
Networked Computer Science Technical Reports Library. http://www.ncstrl.org/
Old BSD releases from the Computer Systems Research group (CSRG). http://www.mckusick.com/csrg/Ez a 4 CD-s készlet tartalmazza az összes BSD verziót a 1BSD-től kezdve a 4.4BSD és 4.4BSD-Lite2-ig (de nem a 2.11BSD-t sajnos nem). Az utolsó lemezen megtalálhatóak a végleges források, illetve az SCCS állományok.
The C/C++ Users Journal. R&D Publications Inc. ISSN 1075-2838
Sys Admin — The Journal for UNIX System Administrators. Miller Freeman, Inc. ISSN 1061-2688
freeX — Das Magazin für Linux - BSD - UNIX (német). Computer- und Literaturverlag GmbH. ISSN 1436-7033
A FreeBSD gyors ütemű fejlődése a nyomtatott médiát alkalmatlanná teszi a legfrissebb fejlesztések nyomonkövetésére. Ezzel szemben az elektronikus erőforrások a biztos, ha gyakran nem is csak az egyetlen, módjai a legújabb előrelépések figyelemmel követésének. Mivel a FreeBSD-t többségében önkéntesek fejlesztik, az őt körülvevő felhasználói közösség önmaga is egyfajta “szakmai segélynyújtó egyletként” funkcionál, amelyet leghatékonyabban elektronikus levélben, webes fórumokon vagy USENET hírcsoportokon keresztül érhetünk el.
A továbbiakban a FreeBSD felhasználók közösségének különböző fajtájú elérhetőségeit vázoljuk fel nagyvonalakban. Ha úgy érezzük, hogy ebből a felsorolásban kimaradt volna valami, akkor ne habozzunk róla értesítést küldeni a FreeBSD Dokumentációs Projekt levelezési lista címére (angolul), hogy felvehessük a többi közé.
A FreeBSD köré csoportosulókat levelezési listákon keresztül tudjuk közvetlenül elérni, ezen a módon tehetünk fel kérdéseket, vethetünk fel témákat. Ezek között több különböző területtel foglalkozó listát találhatunk. Ezért célszerű mindig a hozzászólásainkat a témánkhoz legközelebb álló listára küldeni, mert enélkül szinte biztos, hogy nem kapunk pontos vagy gyors választ.
A különböző listák témájának rövid leírása a dokumentum alján olvasható. Szeretnénk mindenkit megkérni, hogy mielőtt feliratkozik vagy levelet küld valamelyik listára, figyelmesen olvassa el ezeket. Az egyes listák tagjai már így is naponta többszáz FreeBSD-vel kapcsolatos üzenetet kapnak, miközben a listák tematikájának és szabályainak lefektetésével igyekszünk a jel-zaj arányt minél kedvezőbb szinten tartani. Ezek nélkül a levelezési listák a Projekt számára haszontalan kommunikációs eszközökké válnának.
Megjegyzés: A freebsd-test címet használjuk, ha ki akarjuk próbálni, hogy tudunk-e levelet küldeni a FreeBSD listáira. A többi listára viszont lehetőleg ne küldjünk teszt jellegű üzeneteket.
Ha nem tudjuk eldönteni, hogy pontosan melyik listát is kellene megcímeznünk kérdésünkkel, olvassuk el a Hogyan kapjunk értékelhető választ a FreeBSD-questions levelezési listáról című leírást (angolul).
Mielőtt akármelyik listára is levelet küldenénk, olvassuk el a Levelezési listák Gyakran Ismételt Kérdéseit (angolul), amivel elkerülhetjük a gyakran feltett kérdések és témák ismételt felhozását.
A levelezési listák tartalma folyamatosan archiválódik, és ezekben az archívumokban a FreeBSD honlapján tudunk keresni. Az itt elérhető, kulcsszavak alapján történő keresés remek módját nyújtja a gyakran felmerülő kérdések egyszerű és gyors megválaszolásának, ezért ilyen esetekben először mindig ezt javasolt használni. Ez egyben mellesleg azt is jelenti, hogy a FreeBSD levelezési listáira küldött üzenetek fennmaradnak az örökkévalóságig. Ha a beküldendő üzenet bizalmas információkat tartalmaz, érdemes megfontolni egy eldobható anonim e-mail cím használatát és kizárólag csak a publikus részet beküldeni.
Általános listák: A következő általános célú listákhoz szabadon (és nyugodtan) csatlakozhatunk:
Lista | Tartalom |
---|---|
freebsd-advocacy | A FreeBSD igéjének terjesztése |
freebsd-announce | Fontosabb események és előrelépések a projektek életében |
freebsd-arch | Architekturális és tervezési kérdések tárgyalása |
freebsd-bugbusters | A FreeBSD hibabejelentéseit tároló adatbázis és a kapcsolódó eszközök karbantartására vonatkozó megbeszélések |
freebsd-bugs | Hibajelentések |
freebsd-chat | A FreeBSD közösség nem szakmai jellegű dolgai |
freebsd-current | A FreeBSD-CURRENT használatának tárgyalása |
freebsd-isp | A FreeBSD-t alkalmazó internet-szolgáltatók fóruma |
freebsd-jobs | FreeBSD-s munkalehetőségek |
freebsd-policy | A FreeBSD fejlődését irányító csoport (Core Team) döntéseiről tájékoztató lista. A forgalma kicsi, csak olvasható. |
freebsd-questions | A felhasználók kérdései és szakmai segítségnyújtás |
freebsd-security-notifications | Biztonsági figyelmeztetések |
freebsd-stable | A FreeBSD-STABLE használatát illető kérdések |
freebsd-test | Ide lehet küldeni a próbaüzeneteket |
Szakmai listák: A következő listák szakmai jellegű témákat képviselnek. Mielőtt bármelyikükre levelet küldenénk vagy feliratkoznánk, figyelmesen olvassuk el a tartalmukat és céljaikat bemutató rövid leírásukat.
Lista | Tartalom |
---|---|
freebsd-acpi | Az ACPI és energiagazdálkodás támogatás fejlesztése |
freebsd-afs | Az AFS portolása FreeBSD-re |
freebsd-aic7xxx | Az Adaptec AIC 7xxx sorozat meghajtóinak fejlesztése |
freebsd-alpha | A FreeBSD Alpha portja |
freebsd-amd64 | A FreeBSD AMD64 portja |
freebsd-apache | Az Apache és hozzá tartozó portok tárgyalása |
freebsd-arm | A FreeBSD ARM® portja |
freebsd-atm | FreeBSD használata ATM hálózatokkal |
freebsd-audit | A forráskód ellenőrzéséről szóló projekt |
freebsd-binup | A bináris frissítésekkel foglalkozó rendszer tervezése és fejlesztése |
freebsd-bluetooth | A Bluetooth technológia használata a FreeBSD-ben |
freebsd-cluster | A FreeBSD klaszteres környezetben |
freebsd-cvsweb | A CVSweb karbantartása |
freebsd-database | Adatbázisok használata és fejlesztése FreeBSD alatt |
freebsd-doc | FreeBSD-ről szóló leírások készítése |
freebsd-drivers | Eszközmeghajtók írása FreeBSD-re |
freebsd-eclipse | Az Eclipse integrált fejlesztői környezet, eszközeinek, gazdag kliens alkalmazásinak és portjainak FreeBSD alatti használata |
freebsd-embedded | A FreeBSD használata beágyazott alkalmazásokban |
freebsd-eol | Olyan FreeBSD-s szoftverek független továbbfejlesztése, amelyeket hivatalosan már nem támogatnak |
freebsd-emulation | Linux/MS-DOS/Windows és hasonló rendszerek emulációja |
freebsd-firewire | A FreeBSD és a FireWire® (iLink, IEEE 1394) kapcsolatának technikai kérdései |
freebsd-fs | Állományrendszerek |
freebsd-gecko | A Gecko Rendering Engine alkalmazásával kapcsolatos problémák |
freebsd-geom | A GEOM-hoz tartozó témák és implementációk |
freebsd-gnome | A GNOME és GNOME-alkalmazások portolása |
freebsd-hackers | Általános szakmai témák |
freebsd-hardware | A FreeBSD futtatására szolgáló hardverekkel foglalkozó témák |
freebsd-i18n | A FreeBSD honosítása |
freebsd-ia32 | A FreeBSD használata az IA-32 (Intel x86) platformon |
freebsd-ia64 | A FreeBSD portolása az Intel következő IA64 rendszereire |
freebsd-ipfw | Az IP tűzfal kódjának újratervezését érintő szakmai megbeszélések |
freebsd-isdn | ISDN fejlesztők levelei |
freebsd-jail | A jail(8) segédprogram |
freebsd-java | Java fejlesztők kérdései és a JDK-k átültetése FreeBSD-re |
freebsd-kde | A KDE és KDE-alkalmazások portolása |
freebsd-lfs | Az LFS portolása FreeBSD-re |
freebsd-libh | A második generációs telepítő- és csomagrendszer |
freebsd-mips | A FreeBSD portolása MIPS®-re |
freebsd-mobile | A mobil számítógépekkel kapcsolatos megbeszélések |
freebsd-mono | Mono és C# alkalmazások FreeBSD alatt |
freebsd-mozilla | A Mozilla átültetése FreeBSD-re |
freebsd-multimedia | Multimédia alkalmazások |
freebsd-new-bus | A buszarchitektúrával kapcsolatos szakmai megbeszélések |
freebsd-net | A TCP/IP forráskódjával és hálózatkezeléssel kapcsolatos kérdések |
freebsd-openoffice | A OpenOffice.org és StarOffice alkalmazások portolása FreeBSD-re |
freebsd-performance | Nagy terhelésű és teljesítményű rendszerek teljesítményhangolási kérdései |
freebsd-perl | A rengeteg Perl alapú port karbantársa |
freebsd-pf | A csomagszűrő működésével kapcsolatos kérdések és megbeszélések |
freebsd-platforms | Portolás nem Intel architektúrájú platformokra |
freebsd-ports | A Portgyűjtemény működése |
freebsd-ports-bugs | A portokhoz tartozó hibák és hibajelentések megbeszélése |
freebsd-ppc | A FreeBSD portolása PowerPC®-re |
freebsd-proliant | HP ProLiant szerverek és a FreeBSD kapcsolata |
freebsd-python | A Python FreeBSD-n futó változatának problémái |
freebsd-qa | A minőségbiztosítás megbeszélése, különösen a kiadások közeledtével |
freebsd-rc | Az rc.d rendszer és annak fejlődése |
freebsd-realtime | A FreeBSD valósidejű kiterjesztéseinek fejlesztése |
freebsd-ruby | A Ruby használata FreeBSD rendszereken |
freebsd-scsi | A SCSI alrendszer |
freebsd-security | A FreeBSD működését fenyegető biztonsági problémák |
freebsd-small | A FreeBSD használata beágyazott alkalmazásokban (elavult; helyette a freebsd-embedded címét használjuk) |
freebsd-smp | Az [A]Szimmetrikus többszálú feldolgozáshoz ([A]Symmetric MultiProcessing) tartozó tervezési megbeszélések |
freebsd-sparc64 | A FreeBSD portolása SPARC® alapú rendszerekre |
freebsd-standards | A FreeBSD megfelelése a C99 és POSIX szabványoknak |
freebsd-sun4v | A FreeBSD portolása UltraSPARC T1 alapú rendszerekre |
freebsd-sysinstall | A sysinstall(8) fejlesztése |
freebsd-threads | A FreeBSD szálkezelése |
freebsd-testing | A FreeBSD teljesítmény- és megbízhatósági tesztjei |
freebsd-tilera | A FreeBSD portolása a Tilera processzorcsalád tagjaira |
freebsd-tokenring | A Token Ring támogatása a FreeBSD-ben |
freebsd-toolchain | A FreeBSD alapvető segédprogramjainak karbantartása |
freebsd-usb | USB támogatás a FreeBSD-ben |
freebsd-virtualization | A FreeBSD részéről támogatott különböző virtualizációs technológiák tárgyalása |
freebsd-vuxml | A VuXML infrastruktúra tárgyalása |
freebsd-x11 | Az X11 karbantartása és támogata FreeBSD alatt |
freebsd-xen | A Xen™ FreeBSD portjának (implementációk, használat) tárgyalása |
Korlátozott listák: (Limited lists) A következő listák sokkal jobban specializálódótt (és igényesebb) közösségnek szólnak, nem a nagyközönségnek. Ezért mielőtt egy ilyen listára feliratkoznánk, érdemes némi tapasztalatot gyűjtenünk a szakmai témájú listákon, így megismerjük az itt alkalmazott kommunikációs szabályokat.
Lista | Tartalom |
---|---|
freebsd-hubs | A tükrözések üzemeltetői számára (infrastrukturális támogatás) |
freebsd-user-groups | A felhasználói csoportok összefogása |
freebsd-vendors | A forgalmazók koordinálása a kiadások előtt |
freebsd-wip-status | A FreeBSD-vel kapcsolatos folyamatban levő fejlesztések helyzetjelentései |
freebsd-www | A www.FreeBSD.org karbantartói számára |
Kivonatolt listák: (Digest lists) Az eddig említett listák elérhetőek kivonatolt formában is. Miután feliratkoztunk egy listára, a hozzáférésünk beállításainál kiválaszthatjuk, hogy kivonatolt formátumban kívánjuk-e kapni a leveleket.
CVS és SVN listák: (CVS & SVN lists) A következő listák a forrásfa különböző részeinek változtatásáról és a hozzájuk tartozó üzenetekről adnak értesítést. Ezek a listák csak olvasásra vannak, nem szabad rájuk levelet küldeni.
Lista | Forráskód területe | A terület leírása (minek a forrása) |
---|---|---|
cvs-all | /usr/(CVSROOT|doc|ports) | A fában végzett akármelyik módosítás (az összes CVS lista együtt) |
cvs-doc | /usr/(doc|www) | A doc és www ágak változásai |
cvs-ports | /usr/ports | A portfa változásai |
cvs-projects | /usr/projects | A projektek változásai |
cvs-src | /usr/src | A rendszer forrásának változásai (az svn és cvs közti importer működése alapján generálódik) |
svn-src-all | /usr/src | A Subversion repositoryk változásai (kivéve a user és a projects) |
svn-src-head | /usr/src | A Subversion repository “főágának” (a FreeBSD-CURRENT forrásainak) változásai |
svn-src-projects | /usr/projects | A projects változásai a forrásokat tároló Subversion repositoryn belül |
svn-src-release | /usr/src | A releases változásai a forrásokat tároló Subversion repositoryn belül |
svn-src-releng | /usr/src | A releng ágak (biztonsági frissítések és kiadások) változásai a forrásokat tároló Subversion repositoryn belül |
svn-src-stable | /usr/src | A stabil verziókhoz tartozó ágak változásai a forrásokat tároló Subversion repositoryn belüle |
svn-src-stable-6 | /usr/src | A stable/6 ág változásai a forrásokat tároló Subversion repositoryn belül |
svn-src-stable-7 | /usr/src | A stable/7 ág változásai a forrásokat tároló Subversion repositoryn belül |
svn-src-stable-8 | /usr/src | A stable/8 ág változásai a forrásokat tároló Subversion repositoryn belül |
svn-src-stable-other | /usr/src | A Subversion repositoryban található korábbi stable ágak változásai |
svn-src-svnadmin | /usr/src | A forrásokat tároló Subversion repositoryhoz tartozó szkriptek és egy konfigurációs állományok változásai |
svn-src-user | /usr/src | A user változásai a forrásokat tároló Subversion repositoryn belül |
svn-src-vendor | /usr/src | A vendor változásai a forrásokat tároló Subversion repositoryn belül |
Ha fel akarunk iratkozni valamelyik listára, kattintsunk a nevére, vagy menjünk a http://lists.FreeBSD.org/mailman/listinfo címre és a válasszuk ki onnan a keresett listát. A lista oldalán megtalálunk minden feliratkozással kapcsolatos utasítást.
Ténylegesen úgy tudunk üzenni egy
listára, ha levelet küldünk az
<listanév@FreeBSD.org>
címre, amely ezután a lista tagjai
között kézbesítésre kerül a
világban.
A listáról úgy tudunk leiratkozni, ha a
róla kapott valamelyik levél alján
található URL-re kattintunk. Másik
megoldás, ha magunk küldünk egy levelet a
<listanév-unsubscribe@FreeBSD.org>
címre.
Még egyszer szeretnénk kérni, hogy a szakmai témájú levelezési listákon folyó társalgásokat igyekezzünk az adott témán belül tartani. Ha csupán a fontosabb bejelentésekre vagyunk kíváncsiak, akkor a kisforgalmú FreeBSD announcements levelezési lista használatát válasszuk.
Minden FreeBSD-s levelezési lista
rendelkezik bizonyos alapszabályokkal, amelyek minden
tagnak el kell fogadnia. Az ismeretett irányelvek elleni
vétkezés a FreeBSD postamesterének
<postmaster@FreeBSD.org>
két (2, azaz
kettő) írásos figyelmeztetését
vonja maga után, amelyek figyelmen kívül
hagyásával, tehát a harmadik
szabálysértés alkalmával, a
küldő eltávolításra kerül a
FreeBSD összes levelezési
listájáról és a továbbiakban
szűrni fogják a leveleit. Sajnáljuk, hogy
ilyen szabályokat és szankciókat kellett
bevezetnünk, de napjaink internetes
technológiái igen elvadultak és ahogy az
látható is, sokan egyszerűen nem
fogják fel, mennyire sérülékenyek
egyes részei.
Közlekedési szabályok:
Minden beküldött levél témájának meg kell felelnie az adott lista tartalmának, tehát például a szakmai kérdésekkel foglalkozó listákon csak szakmai témájú leveleknek szabad megjelenniük. Az oda nem illő cseverészés és értelmetlen vitázás csak a lista értékét csökkenti, ezért ezt senkitől sem tűrjük. A kötetlenebb, konkrét téma nélküli megbeszéléseket inkább a FreeBSD chat levelezési lista címén folytassuk.
2 listánál többre ne küldjük be ugyanazt a levelet, és 2 listára is csak akkor küldjük, ha az egyértelműen és nyilvánvalóan indokolt. A legtöbb listánál így is rengeteg az átfedés, kivéve a legtitkosabb kombinációkat (például “-stable és -scsi”), ezért nem túl sok értelme van egyszerre egynél több listát is értesíteni. Ha olyan üzenetet kapunk, amelynek a Cc (másolat) mezőjében több lista címe is szerepel, akkor továbbküldés vagy válaszadás során töröljük ezeket. Az általunk küldött levelekért továbbra is mi magunk vagyunk a felelősek, függetlenül attól, hogy ki volt a levél eredeti feladója.
Tilos (vita közben) személyeskedni vagy káromkodni, beleértve a felhasználókat és a fejlesztőket is. A netikett megszegését, például a privát levelezés előzetes engedély nélküli továbbküldését vagy egyes részleteinek közlését, elítéljük, de nyíltan nem tiltjuk. Nagyon ritka esetekben azonban előfordulhat, hogy a sértő tartalom önmagában ellenkezik a lista elveivel és figyelmeztetést (esetleg kitiltást) von maga után.
A FreeBSD-hez nem kötődő termékek vagy szolgáltatások reklámozása szigorúan tilos, és ha bebizonyosodik, hogy a küldő szándékosan küldte szét, akkor azonnali kitiltásban részesül.
Az egyes listák tematikája:
Az ACPI és energiagazdálkodás támogatásának fejlesztése
Andrew File System
Ez a lista a CMU/Transarc AFS portolásáról szól
Fontosabb események / nagyobb lépések
Olyan emberek számára ajánlott ez a levelezési lista, akik csak a FreeBSD jelentősebb eseményei bejelentései iránt érdeklődnek. Ide értendők a különböző időközi és egyéb kiadások, a FreeBSD újításainak bejelentései. Időnként önkéntesek toborzására stb. is használják. A forgalma nagyon kicsi, tartalma szigorúan ellenőrzőtt.
Architekturális és tervezési kérdések
Ez a lista a FreeBSD architektúráját érintő megbeszélések színtere. Az itt megjelenő üzenetek szigorúan szakmai jellegűek. Néhány idevágó téma:
Hogyan alakítsuk úgy át a fordítási rendszert, hogy egyszerre több különböző paraméterű fordítás is képes legyen futni.
Mit kellene javítani a VFS-en a Heidemann-rétegek működéséhez.
Hogyan tudnánk úgy átalakítani az eszközmeghajtók felületét, hogy ugyanazok a meghajtók minden gond nélkül képesek legyenek több buszon és architektúrán is működni.
Hogyan írjunk meghajtót hálózati eszközökhöz.
A forráskód vizsgálatát végző projekt
Ez a levelezési lista a FreeBSD forráskódjának vizsgálatával foglalkozik. Habár eredetileg csak a biztonságot érintő változtatások ellenőrzésére jött létre, napjainkra már a forráskód mindenféle változását felülvizsgálja.
Erre a listára rengeteg javítás érkezik, amelyek valószínűleg egy átlag FreeBSD felhasználó számára nem túlzottan érdekesek. A kód változásától független biztonsági kérdések megvitatása a freebsd-security listán történik. Viszont az összes fejlesztőnek javasoljuk, hogy küldjék be felülvizsgálatra a javításaikat, különösen abban az esetben, amikor a forráskód olyan részéhez nyúlnak, ahol az adott hiba javítása a rendszer egészének működésére kihatással lehet.
A FreeBSD bináris frissítésével foglalkozó projekt
Ez a lista ad otthont a binup vagy más néven a bináris frissítési rendszer (binary update system) körül felmerülő problémák tárgyalásának. Tervezési kérdések, implementációs részletek, javítások, hiba- és állapotjelentések, funkciók igénylése, a kód változásainak naplózása és minden, ami a binuppal kapcsolatos.
Bluetooth a FreeBSD-ben
Ez a Bluetooth-os FreeBSD felhasználók gyülekezőhelye. Tervezési és implementációs kérdések, javítások, hiba- és állapotjelentések, funkciók igénylése, minden, ami Bluetooth.
A hibajelentések kezelésének összefogása
A lista célja a Bugmeister és az ő Bugbustereinek, valamint a hibajelentések adatbázisai iránti kifejezetten érdeklődő személyek együttműködésének és kapcsolattartásának elősegítése. Ez a lista nem az egyes hibákról, javításokról vagy azok jelentéséről szól.
Hibajelentések
Ezen a levelezési listán lehet a FreeBSD hibáit bejelenteni. Ha lehet, akkor a hibákat a send-pr(1) paranccsal vagy a webes felületen keresztül küldjük be.
A FreeBSD közösség nem szakmai jellegű dolgai
Erre a listára kerül minden olyan nem szakmai jellegű, társadalmi érintkezéssel kapcsolatos információ, ami a többi listáról kimaradt: Jordan mennyire hasonlít a rajzfilmeken látható vadászgörényre, kis- vagy nagybetűvel írjuk-e, ki iszik sok kávét, hol főzik a legjobb söröket, ki főz sört az alagsorában és így tovább. Elvétve felbukkannak olyan fontosabb események is (bulik, lakodalmak, gyermekáldás, új munkahely stb), amelyek ugyan szakmai témájúak, de a folyományaik már inkább a -chat listára tartoznak.
A FreeBSD irányítását végző csapat
Ezt a belső levelezési listát a Core Team tagjai használják. Akkor érdemes ide levelet küldeni, ha FreeBSD-vel kapcsolatos fontos ügyekben lenne szükségünk döntésre vagy véleményre.
A FreeBSD-CURRENT használatával kapcsolatos megbeszélések
A FreeBSD-CURRENT felhasználóinak levelezési listája. Itt értesülhetünk a -CURRENT felhasználókat érintő friss újdonságairól, és azokról az utasításokról, amelyek követésével működéképesen tarthatjuk a -CURRENT rendszerünket. Aki a “-CURRENT” verziót használja, mindenképpen iratkozzon fel erre a listára. Ez is egy szakmai jellegű lista, ahová csak szigorúan ilyen témákat várnak.
A FreeBSD CVSweb projekt
A FreeBSD CVSweb szolgáltatásának használatáról, fejlesztéséről és karbantartásáról szóló megbeszélések.
A dokumentációs projekt
Ez a levelezési lista a FreeBSD-ről szóló különböző dokumentumok készítésével kapcsolatos problémák és projektek tárgyalásait öleli fel. A levelezési lista tagjait együttesen a “FreeBSD Dokumentációs Projekt”-nek nevezik. Ez egy nyílt lista, csatlakozzunk hozzá bátran!
Eszközmeghajtók írása FreeBSD-re
A FreeBSD-hez készülő eszközmeghajtókról szóló szakmai fórum. Elsősorban itt tehetik fel a meghajtók készítői a FreeBSD rendszermagjában megtalalálható API-kra vonatkozó kérdéseiket.
Az Eclipse integrált fejlesztői környezetének, segéprogramjainak, kliensalkalmazásainak és portjainak FreeBSD felhasználók számára meghirdetett fóruma.
A lista azzal a szándékkal jött létre, hogy kölcsönös támogatást nyújtson az Eclipse fejlesztői környezet, a hozzá tartozó segédeszközök, kliensalkalmazások FreeBSD változatának megválasztásában, telepítésében és használatában. Emellett az Eclipse környezet és pluginjainak FreeBSD-re történő portolásáról is szó esik.
Valamint igyekszik minél többet profitálni az Eclipse és a FreeBSD köré csoportosuló közösségek kölcsönös információcseréjéből.
Habár a lista elsődlegesen az Eclipse felhasználóinek igényeire koncentrál, azok számára is táptalajt ad, akik az Eclipse keretrendszer segítségével FreeBSD specifikus alkalmazásokat szeretnének kifejleszteni.
A FreeBSD használata beágyazott alkalmazásokban
Ez a lista a FreeBSD beágyazott rendszerekben történő használatát igyekszik megvitatni. Ez egy szakmai jellegű lista, ezért ide szigorúan csak ilyen témájú leveleket várunk. A listán tárgyalt beágyazott rendszereknek tekintünk minden olyan számítási eszközt, amely az általános számítási környezetekkel szemben egyetlen feladatot lát el. Nem feltétlenül csak ilyenek, de például a különféle telefonok, illetve hálózati eszközök, mint például útválasztók, switchek, PBX-ek, távoli mérőeszközök, PDA-k, eladási rendszerek és így tovább.
A Linux/MS-DOS/Windows rendszerek emulációja
Ezen a listán arról értekezhetünk és olvashatunk, hogy FreeBSD alatt miként futtassunk más operációs rendszerekre írt programokat.
Összefogás a FreeBSD Projekt által tovább már támogatott, FreeBSD-hez tartozó szoftverekért
Ezen a listán kap vagy kaphat helyet a FreeBSD Projekt által hivatalosan tovább már nem fejlesztett szoftverek felhasználói összefogáson alapuló támogatása (például biztonsági figyelmeztetések vagy javítások formájában).
FireWire (iLink, IEEE 1394)
Ez a levelezési lista foglalkozik a FreeBSD FireWire (azaz IEEE 1394, avagy iLink) alrendszerének implementációjával. Az itt felmerülő témák többek közt a szabványok, buszos eszközök és a hozzájuk tartozó protokollok, vezérlőkártyák és chipkészletek, valamint a működtetésükre szánt programok felépítése és megvalósítása.
Állományrendszerek
A FreeBSD-ben megjelenő állományrendszerek kivesézése. Mivel ez egy szakmai jellegű lista, ide határozottan csak ilyen jellegű leveleket várunk.
Gecko Rendering Engine
Ezen a levelezési listán a Gecko FreeBSD rendszerekre portolt változatával kapcsolatos fórumot találjuk.
Az itt felmerülő témák többségükben a Gecko alapú alkalmazásokról, telepítésükről, és a FreeBSD alatti fejlesztésükről, támogatásukról szólnak.
GEOM
A GEOM és a vele kapcsolatos implementáció megbeszélései. Szakmai jellegű lista, ezért erre tekintettel csak ilyen témájú leveleket postázzunk ide.
GNOME
A GNOME asztalkörnyezet FreeBSD rendszereket érintő használatáról szóló lista. Műszaki jellegű, ezért szigorúan csak ilyen témákban társgalodjunk itt.
IP tűzfalak
A FreeBSD-ben levő IP tűzfal újratervezésével foglalkozó elgondolások és szakmai témájú megbeszélések otthona. Ide szigorúan csak ilyen témájú leveleket küldjünk!
A FreeBSD portolása I64-re
Ez a levelezési lista a FreeBSD az Intel IA-64 platformjára készített portjával foglalkozó egyének kommunikációs eszköze, ahol az ezzel kapcsolatos problémák és azok különböző megoldásai kerülnek terítékre. A téma iránt érdeklődőket is szívesen látjuk.
ISDN kommunikáció
Ez a levelezési lista a FreeBSD ISDN támogatásáról szól.
Java alapú fejlesztések
A levelezési listán a nagyobb Java alkalmazások FreeBSD alapú fejlesztését, valamint a JDK-k portolásáról és karbantartását beszélik meg.
Munkát keres/kínál
Erre a fórumra tudjuk beküldeni a kifejezetten FreeBSD-hez kapcsolódó munkaajánlatokat és önéletrajzokat, tehát ez a megfelelő hely, ha FreeBSD-s munkát keresünk, vagy éppen FreeBSD szakértőket. Ez azonban nem egy általános célú állásbörze, mert arra megvannak a megfelelő helyek.
Szeretnénk hozzátenni, hogy ez a lista, a többi FreeBSD.org levelezési listához hasonlóan, világméretekben működik. Ezért ne felejtsük sosem pontosan megjelölni a munkavégzés helyét, illetve hogy milyen kommunikációs és esetlegesen költözési lehetőségeket javaslunk.
A leveleket csak nyílt formátumban küldjük — elsősorban szöveges formátumban, de az egyszerűbb PDF, HTML vagy még néhány más hozzájuk hasonló formátumot is alkalmazhatunk. Az olyan zárt formátumok, mint például a Microsoft Word (.doc) azonban nem fognak továbbítódni.
KDE
A KDE és FreeBSD kapcsolatáról szóló lista. Szigorúan szakmai jellegű, ezért csak ilyen témájú levelek küldése elfogadott.
Szakmai kérdések
Ez a FreeBSD szakmai jellegű kérdéseivel foglalkozó fórum. Ez az első számű szakmai levelezési lista. A FreeBSD fejlesztésével aktívan foglalkozó egyének számára ajánljuk, hiszen itt vethetik fel problémáikat, itt kereshetnek rájuk megoldásokat. Az ilyen típusú megbeszéléseket figyelemmel követő egyéneket is szívesen fogadjuk. Mivel ez egy erősen szakmai jellegű lista, ezért csak ilyen témájú leveleket várunk ide.
A FreeBSD és a hardverek kapcsolatáról általában
Ezen a listán kerül megvitatásra minden olyan hardver, amelyen a FreeBSD működik: milyen gondok adódhatnak, milyen hardvereket érdemes beszereznünk vagy elkerülnünk.
Tükrözések
A FreeBSD tükrözéseit karbantartó egyének számára fontos bejelentések és megbeszélések.
Az internet-szolgáltatók fóruma
Ezen a levelezési listán a FreeBSD-t használó internet-szolgáltatók tehetik fel kérdéseiket. Szigorúan csak szakmai jellegű kérdések engedélyezettek.
Mono és C# alkalmazások FreeBSD alatt
Ezen a levelezési listán a Mono fejlesztői keretrendszer FreeBSD alatt futó változatával kapcsolatos megbeszélések folynak. Ez egy szakmai jellegű lista. Itt a Mono vagy más C# alkalmazások FreeBSD változatának elkészítésén dolgozó egyének tudnak problémákat felvetni vagy megvitatni a különböző megoldásokat. Rajtuk kívül viszont szeretettel várunk minden érdeklődőt a téma iránt.
OpenOffice.org
Az OpenOffice.org és StarOffice portolásával és karbantartásával kapcsolatos megbeszélések.
A FreeBSD hangolásának és gyorsításának tárgyalása
Ezen a levelezési listán van lehetőségük a hackereknek, rendszergazdáknak és/vagy az érintett feleknek a FreeBSD teljesítményével kapcsolatos témákban kifejteni a véleményüket. Leginkább nagy terhelés alatt levő, vagy teljesítménybeli problémákkal küszködő, esetleg még többet tudó FreeBSD rendszerek tárgyalása a cél. Lehetőleg az érintett gyártókkal és szállítókkal együttesen próbáljuk kidolgozni a FreeBSD teljesítményének növelésére tett kísérleteinket, ezért őket is szívesen látjuk ezen a listán. Ez a kifejezetten szakmai jellegű lista többségében a tapasztalt FreeBSD felhasználók, hackerek vagy rendszergazdák számára tárja fel a gyors, megbízható és skálázható FreeBSD rendszerek lehetőségeit. Ez alapvetően nem egy kérdezgetős lista, ahol a dokumentációk elolvasását tudjuk megspórolni, hanem egy olyan hely, ahol a teljesítményt érintő megválaszolatlan kérdések és előremutató fejlesztések nyernek teret.
A csomagszűrő tűzfalrendszerrel kapcsolatos kérdések
A FreeBSD csomagszűrőjéhez (packet filter, pf) tartozó tűzfalrendszer megbeszéléseit összefoglaló lista. Szakmai jellegű fejtegetések és felhasználói kérdések egyaránt jöhetnek. Továbbá ezen a listán foglalkozunk az ALTQ rendszer működésével is.
Portolás nem Intel plaformokra
A FreeBSD különböző, nem az Intel architektúrára építkező portjainak indítványozása és általános jellegű megvitatása. Ez egy kiemelten szakmai jellegű lista, ezért ide csak ilyen témájú leveleket várunk.
Az Core Team szabályozásai
Alacsony forgalmú, csak olvasható lista, ahol a FreeBSD fejlesztését irányító csoport különböző döntéseiről olvashatunk.
A “portok” megbeszélése
A FreeBSD “portgyűjteményével” (/usr/ports), a portok infrastruktúrájával és a portok fejlesztésének irányításával kapcsolatos megbeszélések. Erősen szakmai jellegű lista, ezért ide csak ilyen témában írjunk.
A “portok” hibáinak tárgyalása
A FreeBSD “portgyűjteményének” (/usr/ports), a bejelentett portok és azok módosításához kötődő hibajelentésekkel foglalkozó lista. Ez egy szakmai jellegű lista, ahol csak ilyen jellegű témákra számítunk.
A FreeBSD és a HP ProLiant szerverek kapcsolatát érintő szakmai megbeszélések
Ezen a levelezési listán a FreeBSD HP ProLiant szervereken történő használatát célozzuk meg, beleértve a ProLianthoz tartozó eszközmeghajtókat, karbantartó és konfigurációs szoftvereket és BIOS-frissítéseket. Ennek megfelelően tehát a hpasmd, hpasmcli és hpacucli modulok is elsősorban itt kerülnek felboncolásra.
A FreeBSD és a Python
A lista a FreeBSD Python támogatásának fejlesztéséről folytatott szakmai megbeszéléseket foglalja össze. Elsősorban a Python portolásával foglalkozó egyének, valamint a külső fejlesztők által készített modulok és a Zope FreeBSD-s alkalmazásával foglalkozik. Az említett témák iránti érdeklődőket is szeretettel várjuk.
Felhasználói kérdések
Ez a levelezési lista a FreeBSD-vel kapcsolatos kérdésekről szól. Lehetőleg ne küldjünk “hogyan” témájú kérdéseket erre a szakmai listára, hacsak nem kifejezetten szakmai jellegűnek szánjuk.
A Ruby használata FreeBSD rendszereken
Ezen a listán a FreeBSD Ruby támogatásával foglalkozunk, témáját tekintve teljesen szakmai jellegű. Elsősorban a Ruby portokon, külső Ruby könyvtárakon és rendszereken dolgozó fejlesztők figyelmébe ajánljuk.
Mindenkit szeretettel várunk, aki ezekkel kapcsolatos szakmai tárgyú témákat szeretne megvitatni.
A SCSI alrendszer
Ezt a levelezési listát a FreeBSD alatt a SCSI alrendszerrel foglalkozók számára tarjuk fenn. Mivel ez egy erősen szakmai jellegű lista, ezért rajta csak szakmai témák megengedettek.
Biztonsági problémák
A FreeBSD biztonságát illető kérdések (DES, Kerberos, biztonsági rések és javításaik, stb.) Szakmai jellegű lista, ezért ide csak a témához szorosan kapcsolódó leveleket szabad beküldeni. Alapvetően nem kérdezz-felelek típusú a lista működése, habár a GYIK-hoz minden hozzájárulást (kérdést ÉS választ EGYARÁNT) szívesen veszünk.
Biztonsági figyelmeztetések
A FreeBSD-t érintő biztonsági problémákról és javításaikról szóló értesítések. Megbeszélésekkel, vitákkal nem foglalkozik, mivel azok a FreeBSD-security listán folynak.
A FreeBSD használata beágyazott alkalmazásokban
A szokatlanul kis méretű vagy beágyazott FreeBSD rendszerekhez kapcsolódó megbeszélések színhelye. Szakmai jellegű lista, ezért szigorúan csak a témához tartozó leveleket fogad.
Megjegyzés: Ezt a listát időközben felváltotta a freebsd-embedded lista.
A FreeBSD-STABLE használatáról szóló lista
Ez a FreeBSD-STABLE használóinak levelezési listája. Ide kerülnek beküldésre a -STABLE ágat futtató felhasználókat érintő friss változások, valamint hozzájuk kötődően a -STABLE használatához szükséges elvégzendő lépések. Aki a “STABLE” jelzésű változatot használja, mindenképpen iratkozzon fel rá. Szigorúan szakmai jellegű lista, ezért csak szakmai témájú leveleket vár.
C99 és POSIX megfelelés
Ez a fórum foglalkozik a FreeBSD és a C99, valamint a POSIX szabványok szerinti megfelelésével.
A FreeBSD alapvető segédprogramjainak karbantartása
Ezen a listán a FreeBSD egyes kiadásaihoz mellékelt alapvető segédprogramokkal kapcsolatos témákat találjuk meg. Ilyen többek közt rendszerben használt Clang és a GCC fordítók aktuálisan használt változatai, de emellett még szó eshet a rendszerhez kapcsolódó különféle assemblerek, linkerek és debuggerek állapotáról.
A FreeBSD USB támogatása
Ez a levelezési lista fogja összes a FreeBSD USB támogatásával foglalkozó szakmai témákat.
A felhasználói csoportokat irányító lista
Ez a levelezési lista az egyes területeken működő felhasználói csoportok az irányítást végző központi csoport tagjai általi összehangolásához tartozó problémák megbeszélésére való. Ez a lista leginkább a gyűlések letisztázására és a több csoporton átívelő nagyobb projektek szervezéséhez használatos.
Gyártók
A FreeBSD projekt és a hozzá kötödő hardver- és szoftvergyártók együttműködését elősegítő lista.
A FreeBSD részéről támogatott különböző virtualizációs technológiák
Ezen a levelezési listán elsősorban a FreeBSD által támogatott virtualizációs megoldásokat vitatjuk meg. Ennek keretében egyrészt az ehhez kapcsolódó alapvető funkciók megvalósítása valamint további újítások kerülnek a középpontba, másrészt a felhasználók számára ezzel létrehoztunk egy fórumot a felmerülő problémák megoldására és az alkalmazási lehetőségek megbeszelésére.
A FreeBSD-vel kapcsolatos folyamatban levő fejlesztések helyzetjelentése
Ezen a levelezési listán kerülnek bejelentésre a FreeBSD továbbfejlesztéséhez fűződő különböző munkák és azok haladásának menete. Az ide befutó üzeneteket moderálják. Javasoljuk, hogy elsődlegesen az adott témához tartozó tematikus FreeBSD listára küldjük a bejelentésünket és csak egy másolatot erre a listára. Ennek köszönhetően a munkánk az adott témaspecifikus listán rögtön meg is vitatható, mivel ezen a listán semmi ilyen nem engedélyezett.
A lista archívumába tekintve tájékozódhatunk arról, hogy pontosan milyen formai követelmények illene megfelelnie a beküldenő üzenetünknek.
A listára beérkező üzenetekből egy szerkesztett válogatás jelenik meg néhány havonta a FreeBSD honlapján a Projekt helyzetjelentésének részeként [13]. A korábban beküldött jelentések mellett itt még találhatunk további példákat.
A Xen FreeBSD portjának (implementáció és használat) megvitatása
A lista elsősorban a Xen FreeBSD-re készült változatával foglalkozik. Előreláthatólag elég kevesen fognak írni erre a listára ahhoz, hogy helyet kapjanak rajta az implementációt és a kialakítást érintő szakmai jellegű megbeszélések és a telepítéssel kapcsolatos kérdések egyaránt.
A kéretlen reklámlevelek, vírusok és egyebek elleni védekezés céljából a FreeBSD levelezési listáinak forgalmát több módon is szűrik. Az ebben a szakaszban bemutatott szűrési megoldások nem fedik le a levelezési listák védelme érdekében alkalmazott összes lehetőséget.
A levelezési listákra csak bizonyos típusú csatolt állományokat küldhetünk be. Az alábbi listában nem található MIME típusú csatolt objektumokat még a listára érkezés előtt törlik.
application/octet-stream
application/pdf
application/pgp-signature
application/x-pkcs7-signature
message/rfc822
multipart/alternative
multipart/related
multipart/signed
text/html
text/plain
text/x-diff
text/x-patch
Megjegyzés: Egyes levelezési listák ugyan megengedhetnek további csatolt MIME objektumokat is, habár a legtöbb lista esetében a fenti lista a mérvadó.
Ha egy levélben a szöveg HTML és nyers szöveg formátumban is szerepel, a HTML változat automatikusan eltávolításra kerül. Ha az e-mail csak HTML formában tartalmazza a szöveget, akkor automatikusan nyers szövegre alakítódik át.
A két FreeBSD-s hírcsoport mellett még
akadnak olyan további csoportok is, ahol FreeBSD
témájú kérdéseket vitathatunk
meg vagy hasznos lehet számunkra. Az itt felsorolt
hírcsoportok
kulcsszavakkal kereshető archívuma Warren
Toomey tulajdona (<wkt@cs.adfa.edu.au>
).
de.comp.os.unix.bsd (német)
fr.comp.os.bsd (francia)
it.comp.os.freebsd (olasz)
tw.bbs.comp.386bsd (hagyományos kínai)
A FreeBSD fórumok a FreeBSD kapcsán felmerülő kérdések és szakmai témák megvitatásához egy webes felületet kínálnak fel.
A Planet FreeBSD honlapján fejlesztők által vezetett tucatnyi webes naplót és hozzájuk tartozó RSS feedeket találhatunk. Sok fejlesztő ezen a módon készít rövid feljegyzéseket a jelenlegi munkájáról, az új javításokról és más egyéb terveiről.
A Youtube-on keresztül elérhető BSDConferences csatornán a világ minden táján tartott különböző BSD témájú konferenciák videoanyagait találhatjuk meg. Segítségével megtekinthetjük a fontosabb fejlesztők által a saját munkájukról tartott különböző előadásokat.
Központi szerverek, Amerikai Egyesült Államok, Ausztrália, Ausztria, Belgium, Brazília, Costa Rica, Cseh Köztársaság, Dánia, Dél-Afrika, Egyesült Királyság, Észtország, Finnország, Franciaország, Fülöp-szigetek, Görögország, Hollandia, Hongkong, Izland, Japán, Kanada, Kína, Kirgizisztán, Korea, Kuvait, Lettország, Litvánia, Magyarország, Németország, Norvégia, Olaszország, Örményország, Oroszország, Portugália, Románia, San Marino, Spanyolország, Svájc, Svédország, Szlovák Köztársaság, Szlovénia, Tajvan, Thaiföld, Törökország, Ukrajna.
(Dátum: UTC)
Központi szerverek
Amerikai Egyesült Államok
Ausztrália
Ausztria
http://www.at.FreeBSD.org/ (IPv6)
Belgium
Brazília
Costa Rica
Cseh Köztársaság
http://www.cz.FreeBSD.org/ (IPv6)
Dánia
http://www.dk.FreeBSD.org/ (IPv6)
Dél-Afrika
Egyesült Királyság
Észtország
Finnország
Franciaország
Fülöp-szigetek
Görögország
Hollandia
Hongkong
Izland
Japán
Kanada
Kína
Kirgizisztán
Korea
Kuvait
Lettország
Litvánia
Magyarország
Németország
Norvégia
Olaszország
Örményország
http://www1.am.FreeBSD.org/ (IPv6)
Oroszország
Portugália
Románia
San Marino
Spanyolország
Svájc
http://www.ch.FreeBSD.org/ (IPv6)
http://www2.ch.FreeBSD.org/ (IPv6)
Svédország
Szlovák Köztársaság
Szlovénia
Tajvan
Thaiföld
Törökország
Ukrajna
A következő felhasználói csoportok nyújtanak FreeBSD-s e-mail címeket tagjaiknak. A rendszergazdák bármilyen visszaélés esetén fenntartják a visszavonás jogát.
Címtartomány | Lehetőségek | Felhasználói csoport | Rendszergazda |
---|---|---|---|
ukug.uk.FreeBSD.org | Csak továbbítás | <ukfreebsd@uk.FreeBSD.org> | Lee Johnston
<lee@uk.FreeBSD.org> |
Arra az esetre, ha ellenőriznünk kellene a tisztségviselők vagy fejlesztők aláírását, esetleg titkosított e-mailt szeretnénk küldeni nekik, ebben a fejezetben mellékeljük az ehhez szükséges kulcsokat. A FreeBSD.org összes felhasználójának kulcsa letölthető a http://www.FreeBSD.org/doc/pgpkeyring.txt címről.
<security-officer@FreeBSD.org>
pub 1024D/CA6CDFB2 2002-08-27 FreeBSD Security Officer <security-officer@FreeBSD.org> Key fingerprint = C374 0FC5 69A6 FBB1 4AED B131 15D6 8804 CA6C DFB2 sub 2048g/A3071809 2002-08-27
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 KRrlaWusbYfqZn4BQsSpYw90evo= =BvhO -----END PGP PUBLIC KEY BLOCK-----
<core-secretary@FreeBSD.org>
pub 2048R/2CA49776 2012-07-23 Key fingerprint = 89F6 C031 B4E3 D472 E4CE 8372 4D58 FDCD 2CA4 9776 uid FreeBSD Core Team Secretary <core-secretary@freebsd.org> sub 2048R/BBAD1C98 2012-07-23
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.19 (FreeBSD) mQENBFANQTEBCADwvspc52P27Eq2Wdm0/kbaEC84FHSud6fZdn1Zhib/7fjuAHoV U+61w64t9KQVA5NHKviO19j+7dm4CY20aOJHjcHj89q7NpIfE/05J/krTAJ0Ysk+ HdztzVOD3Zt5c9wGVKKfXbzQ3AAoISmJWF5K8a5oJo1wPt4xD4J0up9OzHOQRUjM MKXOYkg/8RVNrdcuVJt/31wkhpsm0Bf6AnHzUybHdgnzSdhFEiQoWg+OFC3X6X4B gWH32fo2FiZNsogvLEbd5fdiGPxbsT58p3D6Zd83e7IhffPxjFMlCq2ZL506drAy jbadDdk7d76RWvDDuFGykFXwJOtxoKuH/drFABEBAAG0OEZyZWVCU0QgQ29yZSBU ZWFtIFNlY3JldGFyeSA8Y29yZS1zZWNyZXRhcnlAZnJlZWJzZC5vcmc+iQE4BBMB AgAiBQJQDUExAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBNWP3NLKSX dlVTB/9BZ7FcZK2YDB9ervPig3t35Z7ips/4KKbpnTwkWw4QktwkGEOLsAr2fdRC XBkRiTMzT2Zwh/M8OzNkDcgJcHic5EQSIKOF0HEj/YuCE7HOBvSkxo70wHN8F1eJ 8mqTETgv6P2BpeM3pPoMeisGAhp9NFQWYb5N7Bb5x+U2jjLnDAjmcuc1AkzrOlth gPrs73PY0rnu73acrzrThavCaKRO/40+Xmp88+QYHhvGjsUF54kbjXitiFQJP9ha ZdV22OjIigm3tOmOkPGFHMHG7g1GYp52NLbeDcytMX42eYZi1pOSvovoi3OImRb5 rMNvryEmT6yTWC93MJOKbQe7Yn8LiEYEEBECAAYFAlAN0EQACgkQk13vRKCTJitF ngCffyTfE6cq5Osi9c3QGFVHYxC8uAUAn3MZ4iqGJirIXdaNT8YCK79Brdw0iJwE EAECAAYFAlAN0JkACgkQ/KbBSP+K4wUKiAP/TqgTqqV7mCIwesCGf6MaYNlhdv0S GYuPNa3RfSTbEHMyhDt9FPjaiiHpuYSl39e1/tNPFO5+48XrKsII4lu8Qgjgakgu KeYt8cFTjSzAX9lz9uNMieZE4Lv1/mkc8LEKYfmbaipxwPVcaxz1HiGakPIITTJ3 34jo2LkqZBII8Xq5AQ0EUA1BMQEIALrp6i6T/r8rqpTSUU6Y6RAzKe8tMW/hCs/0 pJt4MdIVxboVg1WgNwZuKk3srJIim60REEaR0JG8awMG+GIf9t3BMckIsQ8Pm9W9 VQ0084iVuhUQcrjpmI+T6fsX0ssX1AFrO7lH6hLXVEXoNmCaXG3lIc1OGlR8lYi7 r7xAbCYkFz+2isttqZxcn/CNPSRzn+CXE/jNMaikNQGouUrF8twi3ubyzYhpBvVj dn1PO+KFLD/kbo5rPx3+sdgw65d8XedVMiS+U5OVVpY57zoYLjeCb/QTAR/Yunen epd3OlwW6fR2959njWbhPFG1Wfj9FR6kgw18hpcaY/qzLN87MvcAEQEAAYkBHwQY AQIACQUCUA1BMQIbDAAKCRBNWP3NLKSXdsXeB/9WxOG4sVcRYmcru1z6Y6L6XnIh IEn/awPWt5MY3qtTZzFBXWIyxJnQYr+U2Wk2ano6Vqc8Uco+GuXqA0IfMsmcCciV vYTUxQUmqqRxepJ0Yw0FZdcQ7V0aaUNStlqyfWopZsSycVvPrp+jOwPO1gP57DkI yGUDK+3tDoSuFCYIAf+0ZYhJiYI2y86T7UQ5j+m98c2VZejtFBRtBmEwu/dsuQqw UgbOFW6RakI1waLsGxZoG4nZCRWsDqN3NVe9agQy5FzVTHHiCqx0HZx2usdwpov+ UWiwIJwPX1hpxtgkBOq/DG0go94EybMGrzSXFCP6NccYpmGY3o+8bYI4HjLY =Y5nS -----END PGP PUBLIC KEY BLOCK-----
<portmgr-secretary@FreeBSD.org>
pub 2048R/BBC4D7D5 2012-07-24 Key fingerprint = FB37 45C8 6F15 E8ED AC81 32FC D829 4EC3 BBC4 D7D5 uid FreeBSD Ports Management Team Secretary <portmgr-secretary@FreeBSD.org> sub 2048R/5F65CFE7 2012-07-24
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFAOzqYBCACYd+KGv0/DduIRpSEKWZG2yfDILStzWfdaQMD+8zdWihB0x7dd JDBUpV0o0Ixzt9mvu5CHybx+9lOHeFRhZshFXc+bIJOPyi+JrSs100o7Lo6jg6+c Si2vME0ixG4x9YjCi8DisXIGJ1kZiDXhmVWwCvL+vLInpeXrtJnK8yFkmszCOr4Y Q3GXuvdU0BF2tL/Wo/eCbSf+3U9syopVS2L2wKcP76bbYU0ioO35Y503rJEK6R5G TchwYvYjSXuhv4ec7N1/j3thrMC9GNpoqjVninTynOk2kn+YZuMpO3c6b/pfoNcq MxoizGlTu8VT4OO/SF1y52OkKjpAsENbFaNTABEBAAG0R0ZyZWVCU0QgUG9ydHMg TWFuYWdlbWVudCBUZWFtIFNlY3JldGFyeSA8cG9ydG1nci1zZWNyZXRhcnlARnJl ZUJTRC5vcmc+iQE4BBMBAgAiBQJQDs6mAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIe AQIXgAAKCRDYKU7Du8TX1QW2B/0coHe8utbTfGKpeM4BY9IyC+PFgkE58Hq50o8d shoB9gfommcUaK9PNwJPxTEJNlwiKPZy+VoKs/+dO8gahovchbRdSyP1ejn3CFy+ H8pol0hDDU4n7Ldc50q54GLuZijdcJZqlgOloZqWOYtXFklKPZjdUvYN8KHAntgf u361rwM4DZ40HngYY9fdGc4SbXurGA5m+vLAURLzPv+QRQqHfaI1DZF6gzMgY49x qS1JBF4kPoicpgvs3o6CuX8MD9ewGFSAMM3EdzV6ZdC8pnpXC8+8Q+p6FjNqmtjk GpW39Zq/p8SJVg1RortCH6qWLe7dW7TaFYov7gF1V/DYwDN5iQEcBBABAgAGBQJQ DuVrAAoJENk3EJekc8mQ3KwIAImNDMXAF8ajPwCZFpM6KDi3F/jpwyBPISGY1oWu YPEi1zN94k5jS90aZb3W8Y8x4JTh35Ewb6XODi3uGLSLCmnlqu2a80yPfXf5IuWm IQdFNQxvosj9UHrg+icZGFmm+f0hPJxMTsZREv3AvivQfnb/N3xIICxW4SjKSYXQ cq4hr4ObhUx7GKnjayq+ofU2cRlujr87uOH0fO3xhOJG4+cX5mI1HGK38k0Csc1z qYa/66Qe5dnIZz+sNXpEPMLAHIt1a45UB967igJdZSDFN33bPl1QWmf3aUXU3d1V ttiSyHkpm4kb9KgsDkUk1IJ5nUe9OXydWtoqNW5afDa5N0aIRgQQEQIABgUCUA7l wwAKCRB59uBxdBRinNh2AJ41+zfsaQSRHWvSkqOXGcP/fgOduwCfUJDT+M1eXe2u dmKof/9yzGYMirK5AQ0EUA7OpgEIAMzcSWKX+T66lfKXUV5J9+hXuOauu9WLW2dl q0+w9AlWfGfgGbMZz/7YmNUqzNjHqQngNsQQIShrFgVqNWkZOZn2TpLCrIl7Itl3 gVYXWZQpKzjCgU1Ymp+yNZR+fWZzSDF9DZdLZY9y9SI3lljb33o+N1EVfNUvRJks KY2lm6Gra9gPtaCZLuZu5zw/SSDnJBNU8wbMoce8yFDfcOjCq+4BcPAws8qcFCsm ICmE6FZvEJZE/y9wdH7kB1oU+kThpOKPEgu9YmubXNU81MxhGdQEDvG2525iSwQy r3lhwqGngJEcyDc6A/cAJ/c+KZ4pc3ufULSgtXDqlJLE7wUg4esAEQEAAYkBHwQY AQIACQUCUA7OpgIbDAAKCRDYKU7Du8TX1Th6B/4uVcoIFXcKaj1/GAZjeZl0M4mG TUKIjjfCITrMaV+Ftp1wo+ZujAAlepyQ1VesMlB/P1bw0AvZx2qwntaGjbB1yc9B 2pmLeYBydBtW2LgXLiafxRIy2uPFxSO510IyR5/K5cGTIyvz1o9ZcNlmYnpL4rs0 xAx/HN2ErRiUmvoGHvBMqt1yVQHtlUDoSJqFoBg0d7Vn4K8mvyHRBW/45ox0huV1 H2yNLzcKpX/N9gakkCjxv2YseDJgSYLwM+Ee9Tx/FgZm5jRYw3pcVcn8/NPojIBG /Wi/dTH3gTQtigdaRZoPdZkE7Iqu2o8FS1SSvDaZRwJHS5pAQjvDIDI8xoZR =k9Rx -----END PGP PUBLIC KEY BLOCK-----
<tabthorpe@FreeBSD.org>
pub 2048R/A473C990 2010-05-28 Key fingerprint = D883 2D7C EB78 944A 69FC 36A6 D937 1097 A473 C990 uid Thomas Abthorpe (FreeBSD Committer) <tabthorpe@FreeBSD.org> uid Thomas Abthorpe <tabthorpe@abthorpe.org> uid Thomas Abthorpe <tabthorpe@goodking.ca> uid Thomas Abthorpe <tabthorpe@goodking.org> uid Thomas Abthorpe <thomas@goodking.ca> sub 2048R/8CA60EE0 2010-05-28
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 QzgBefclBFqxGuJeC7jwAK5OvvZU =ie5/ -----END PGP PUBLIC KEY BLOCK-----
<gavin@FreeBSD.org>
pub 1024D/A093262B 2005-02-18 Key fingerprint = 313A A79F 697D 3A5C 216A EDF5 935D EF44 A093 262B uid Gavin Atkinson <gavin@16squared.co.uk> uid Gavin Atkinson (FreeBSD key) <gavin@FreeBSD.org> uid Gavin Atkinson (Work e-mail) <ga9@york.ac.uk> uid Gavin Atkinson <gavin.atkinson@ury.york.ac.uk> sub 2048g/58F40B3D 2005-02-18
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =w86g -----END PGP PUBLIC KEY BLOCK-----
<jhb@FreeBSD.org>
pub 1024R/C10A874D 1999-01-13 John Baldwin <jbaldwin@weather.com> Key fingerprint = 43 33 1D 37 72 B1 EF 5B 9B 5F 39 F8 BD C1 7C B5 uid John Baldwin <john@baldwin.cx> uid John Baldwin <jhb@FreeBSD.org> uid John Baldwin <jobaldwi@vt.edu>
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =BVS/ -----END PGP PUBLIC KEY BLOCK-----
<kib@FreeBSD.org>
pub 4096R/C1BCAD41 2012-11-17 Key fingerprint = 7DE0 3388 64AC 53C3 7B88 3A79 90C2 B92B C1BC AD41 uid Konstantin Belousov <kib@FreeBSD.org> uid Konstantin Belousov <kostikbel@gmail.com> uid Konstantin Belousov <kib@kib.kiev.ua> sub 4096R/3BBC8F64 2012-11-17
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 Z3HzdaVN+w== =+dQH -----END PGP PUBLIC KEY BLOCK-----
<theraven@FreeBSD.org>
pub 4096R/65C4F55D 2012-11-28 Key fingerprint = 3E8F 5E9F 7586 F090 AC2C 58C2 BA06 FF14 65C4 F55D uid David Chisnall <theraven@FreeBSD.org> sub 4096R/04B2A21D 2012-11-28
-----BEGIN PGP PUBLIC KEY BLOCK----- Comment: GPGTools - http://gpgtools.org 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 JHb9JdgKmF4SXR4Z6/y3LFUPc4g= =70vB -----END PGP PUBLIC KEY BLOCK-----
<hrs@FreeBSD.org>
pub 1024D/2793CF2D 2001-06-12 Key fingerprint = BDB3 443F A5DD B3D0 A530 FFD7 4F2C D3D8 2793 CF2D uid Hiroki Sato <hrs@allbsd.org> uid Hiroki Sato <hrs@eos.ocn.ne.jp> uid Hiroki Sato <hrs@ring.gr.jp> uid Hiroki Sato <hrs@FreeBSD.org> uid Hiroki Sato <hrs@jp.FreeBSD.org> uid Hiroki Sato <hrs@vlsi.ee.noda.tus.ac.jp> uid Hiroki Sato <hrs@jp.NetBSD.org> uid Hiroki Sato <hrs@NetBSD.org> uid Hiroki Sato <hrs@ec.ss.titech.ac.jp> uid Hiroki Sato <hrs@ieee.org> uid Hiroki Sato <hrs@acm.org> sub 1024g/8CD251FF 2001-06-12
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBDsmLLMRBACzChIgYTqLMuheXTZHCAY+wFm4wOcjUhx5PkzCsb1H2qGO5/3p LNv7Z1zaGRXQMUSGphxM+Sipe5EQV+/1OGAGcN5Lz2sOd7otDbCdwR92QIzYnyfn 35pkS/rabz+UFKEwh+ccBQDKZg6oDRD8DtsLDzAvBag+fauln2uqlDlKSwCg4AGc ke9KiRL+VZJgD7laVQMT600D/0WAnR8FgnA5oEDqLRDP1tZErGiU7TPUVkq7ZkpR ViQsJTYQIzxWXF8wkD9j0QqC6KgkChYifW9r5+GJuEh857G7NMDh5CnGcFsr/9uh wn1LH1iJkG5FPb6Zx1HaMPqEbvSwp50DF/8kHaQlAqjQfzABW+BKcsHAZiTV00Bu S7yEA/wLmej2UdFb+CvoZC4qDTwj/Fy6xO3ME3D6hCBLCR4KeYT5IT/J70G56g1/ Ic/Itdj3cOf/RaqsYXizK9GMvsEFRJiMJTNKREpH5sztAyyCVkhDAGAA73lOf9y4 sGq5vZ6h6veFEQzFTMToaV5acMRMEJK/ugaJkTEGq3Gn2tQjabQcSGlyb2tpIFNh dG8gPGhyc0BhbGxic2Qub3JnPohfBBMRAgAfAhsDBAsHAwIDFQIDAxYCAQIeAQIX gAUCPzY1qgIZAQAKCRBPLNPYJ5PPLZ9oAKCmq49oDZQjcOyvFU8/KDmfbn4BDQCg voc51W3coHVSnCJ2hdZ14bywoaCIRgQTEQIABgUCP2J1AAAKCRDIhqQr1bLw+7LV AKCq3qP9/wt0ZAIGsqWOjUFz3hQ2qACg78XPR9G4dmrJ846YsVhgrQNmw0eIRgQS EQIABgUCP2f4zQAKCRDuPE27/jtZzahEAKCVpEe/QDSOf5NaMWwhgmwE0AwutQCg 2yWsWti78yyHT4P2QboyA10mbuSIRgQSEQIABgUCP20rygAKCRAY9QOAJMJ4AkDH AKDnyV8MxkRvOBpGnEaLBVImzXjb1wCfaH7junzXHzZ3Gcd3IFFmcGHJnyKIRgQS EQIABgUCP20r1gAKCRAh+cW892qb9X9NAKCMUXGwmD+ltJCrJuTZwrXSx1uCGQCe OdaAdqEa+lCHz5w2qsBCY8d/lO6IRgQQEQIABgUCQLQzIgAKCRAvsXjH5Mut+TB4 AJ9Z29xSOopBvGQlhUkltzfXDtwyFQCff4V5ipHAI0Kax8YO+XnZFlXcyxuIXAQT EQIAHAUCPfrawgIbAwQLBwMCAxUCAwMWAgECHgECF4AACgkQTyzT2CeTzy3iNQCd G50Bck/H4B1DwXvZGdwWVhzIKP8An3GdPUHhfAPzlDCdKTBYedwkDdBeiEYEExEC AAYFAkCy6TcACgkQK6gmAsLOgJnCGgCgkl0tqmZUfu4WF7eiI8hwa4LValgAnjV2 hndmz3RjfP+FYE7PVlCmtsp3iQEcBBMBAgAGBQJAswvvAAoJENVYvCoVl0652S8I ANI4Zrb87WLDYI1qc6t3FzZqsUfmw/7gex5X5qMTKod7Y+jgfe13oJ3CbZmdW8Al f2N2nkhO8tDvnKzLGhzPeQwMPkj4yaFmf2i8S0Qu5lcbN9XVWUvSZzGVnXWe8yW8 8Gic3S38CTxilOwc0igtHitRYjZO4dqLrRXmcCB0fb6H0HY/KN5cPPeamFGHVcvY 4LsKEgoNMFgebRY+1w4mg5P6Bisk1+lkeQhLb7a9sQEFYXoZDBibcDLVcor3ZbM2 +00R5jP5CJrUqqsna5ZdTCzt5+aUuo7K66PB+L725T0z+PF1eHOtWhLh3B2r9YfI 8BKjJMCZyabqX8OlxLuTZWOJARwEEwECAAYFAkCzDmEACgkQscybBm85tqTxfggA mUiw8fiJ0jeeFml3XCOP8/pdZlFb2gh4cN6Q4xUXaVhL6piB12tyCv/UR8/nF3vQ tE/So+gmR1LnpFgPIe2kTXm+/K7ZAz0KrDM87nM53gnXfloxqgER0t+AZenIhjSI J70fv4MGO+WWepMKnATNFrXOsw3Wa3fGIZL82aXw9TyB9nO9InHnPRh6CoXE8WzT PCNM0M67CLHbFmPEDWXbTzzA58OKbvEfO8nP83k+xUT5xivFGcFG6UP+BEiNqaKO JZ/FGtNXKQkqcHpSliGDQVYugNkPV6veY3yFSUnQG0Pu7rwv+IIrnKVWznFbmXRT 2vymQx0C11KDRLrpiPh79YkBHAQTAQIABgUCQLMxZQAKCRBSm6PEYwEaYn5MB/0Q uzNqwu+lIjBqMHOiHTkdpZ4CKdEawOm4GuXct74NEHDatml8SHJ0ZDb4oxVXmPQU /7r9bDIxJ0LKI9gmehQDUCo7lsQ+tQ16uH59O5RjBF6GhNO0oUFB7xLQmNhEhAmG iw7V5eoBmLnge7/le+zTXkrQEtqKm7HpF93ABijoTBAn3TjI+Osbw+Ma6RcaNTOp nP2mdzSkSUL/JiDtroQGL/ExHRYXhiuL+EH1/gLhN7oopDj3jU2Mc6oecJ0FDwTJ W/oO7UivtEUxAIVxtQCHc9xPJN28/okIa0ovfA1Urbu9hw6vbINDdgDwGqLcL9da aT/ShCbx3F+U0Fjn80VAiQEcBBMBAgAGBQJAs0hBAAoJEE/xZ7ZF/0/GR0AH/0LS 1ijoe9lIBzxOo5eIqo9K5sPNBZmNr4IlIbNK1tr6+8xRzbxAoxf71TD4MosWmhcr EbLrF0B5yeNNI4B0f7wVfCXu2lNIqbCp10imXWN8Gb+WYh9yN+BTyINn5R2wl8Ld 2FOiPYrzH90GDUkVG6NyRz0FjgPPh9zMXMS0qkaQtqcva2bBBkgV5JkEsBRm/Koc BfQOncaqVKgTNGp3fB5vE+Hxw4aCFfKQcj67jhbJ01eMqjkKNffdayslK3svZfVU t2HTOEaRLuufTzdETUHjo9DSkALXZnOXNxk2r70iq78DayGkiNLNGS+OKeBa9YM8 GlSC5Si9UtJhE0eMz12JARwEEwECAAYFAkCzeNQACgkQz6a0YlCyhwucbAf/XVbd pTDa57nGOpfr/7x44KWNUndmj8u2oNOMlnvjgMyWPnRlmrHxEh4J3GrS2OYihs2G jBCfKenwU/lJc6Yo3/jeCQ8YR5aqJhHPTyQkj20akLuj6u34UzTSTunBeTKltBt/ aVH99FVM4/2lcJlgJfra8KxEo4E7Vy0iiQqKzCI9YlaKMejbetwVPz/OEMzqhzt8 R1ZOykDY3UeMLZ0+CFmb7KOYG9rKFyQL0k3CTXtR+47T9Mlosbr5cBu/YGgq4Drz gzcdQfGurcwwPZvjnyo6bi7A8KH9McBG8bgCvpJW5ieVHNJS/e8jzv4DBGB92yx6 x0Fz7TE85QEJVON6VokBHAQTAQIABgUCQLOhdwAKCRCa8Fji3/gfywuSB/0XqEuE eAhUlKMB1vRF3UWhjWZo5CQLj+O8LVWwdVNOWHyu8AntKvZ9B9vBNe6eo2ucyCNA Y0d2zz09ESx+PuCfPM1baPq4ERHS2aK0lUHE6UGBJyn3P625vc3Ro03U1UMxFyGU JNYwuNU4XnnpuelkZUxYo9QhdlYSysS+EBkHecFBrJBdPPpV0vUIUt5mXohluhpp bdDjS7FY5ighQ2kzGS1KZLeZuZIMcLE3XiTz9WVjeNdVC15qkPNM81nJYZyIrFPE HU+igNHV/MYNGpSCbGJCChgM+xRXlK+FzHsqFTxGHUsUsgNU6SUpd1Slnvv/KpUZ ybo98kVoioxMjApliQEcBBMBAgAGBQJAtFWFAAoJECMDnpndGqL0t+0IAJCmfqs5 8YR+diazjHeKtK7EihQ3JPMRipw2SyqtnC9U1/f06LeGPAcpUWDyeU5LxwILGMA5 myRMcedVERh4e3+52nEkPvkgWvCOLDREfr53W5Oaa1i67Z5aOP6s7c+yqzqxsaDD As0g94+AXlCVA5/4qWU6sIKDsBo8F4k/K3PgGafS+6wYu7vMh2w8JFOerUPrGNJt 58HR9uIeRyZjvqW/qmo8zO8IPZbvC5AZARx8eWAKNCaTaZJ6FkJBPni/7FLAg2KL zZ68ic1ArwOpIcJ8unnKtNX5PNqLUI6tzoHXvSKU1nsPS0XqqvAh1wB77HLZJ0VW GLuaVs4dag4gXQqJARwEEwECAAYFAkC0pVAACgkQ7sMTGGbBry4GfwgAr0QwDB39 I/gjoGLY4CQzMu1fbVzz8IA1heg3iSUbjIrAH3zvaXe1AZRtK4Cg9HItSVHW+lcV sz65QVi6ZRpRMzyLRvQJWgaxPAIs8YBlk7j5/2wldPOBU9lvjxsBWPrgB6QVVIkW uV+obMLwsNIZAKsfeVfrhQ/IVpRAScC60Ah3LAWigh+LTEI3Pm4xH59COmzLG8k4 ayO9DRFwOpHfQjCZkw74oCEd8+KleYh822cSuVgczy25HFinOeSdrSNjOAv1y6Rj GzX2AQTpiX/IyTXFaF+eEnYpMTCFwEhPTBOnyeLqbIy9xDgQPSdvf6HmjrP/WxU+ HBhmjI9HE9E45YhGBBMRAgAGBQJAs1A5AAoJELtDm8wUsvfjsyYAnjrTbYvW6xKQ /O9lt1GCOuhQZBUhAJ92jwhqsz8G7s6i1thQcXqECojAAIkBHAQTAQIABgUCQLnD 0AAKCRBRWr1fqVzK5vbOB/40np6PZsU6M6vuV3VGy48dUJG0G1Eq9NsrCRmTBuq8 mDFjxLTGhzG3CULYApaYlFkBbW43amVvvL6jo3Nb3caYSR+Cc4ElO8UHMa8hfH6C vtsjBCKUm7xutEHeibAU1cEN+XUxz+D5ElM8OcaWHIXmR3MNhNMX3wA9Bqn0wQkQ bCkEFoPxRmKNZniv1uezVKUpTjTr2KtbneTBJDs5akRUqPWv0lYZnSSemOiK8b5l Pz/jdl0tGdXk1GXJoqK8VfZ7U/9WxvoMc7O8Yyeh0zHiFb4EqwmUjaDz0sMl4llL 8n+K4EVk+7tPeOE2BCiK0cuew/1O4a+g4fmPiD1aCJVliQEcBBMBAgAGBQJAww4o AAoJEH5cQ+a3aIYCJzUIAKrri3wR0lD/JbW3s8RgBiTvqEiAz4U0Gv6Y5rJZ6Nct 2+bGc0aIJ5yz6QPuUXPFo4ZlNcYQ5vg/SvTe+7PZDw+aNgaRWVDPbJAcTM7uqYUM 6F7MTZ4/BObgAWUmC7JylFvbxhEclvpMo04DR03EYAlQIl09HTEN1Pj+kE+foOrb Sh+SX+l4ZIi6I/REFbgN03wmzaaDcqKzNtIG+LBb/FaZFD6KwkPwOdYVI9m7nMcL Juo4eIK2sJjs7N43PjFd+biDxCk6xyc2SA5z23ntLnRVehN4Q4z+/NqXPO0ZPsQs STSzZD9pNf0lFQwXrkPJXXhx31sfxUIwkKJ1H9x7b2qJARwEEwECAAYFAkDFTiwA CgkQvkqD8L6ek+KYUgf/bfnAAnlMo6Zd3zAVPyVS/p1m1X6UPxm3E+gkszl1fFSr FpZtOyaPHZ7Iqkt7jhdkyMfvpmHKRbE62NkGB1g44BfsMBwihCmND9byBRifdpZn +F+E+UY9aulJRW0aehb0V2XwYrgUhEt6aKw/dJ1lyqb9ZYlaQc8sKqxtHQG1CK0P v4zowxz0oztupX8r/4MYHlmpqAjwKrsIENtE3paAt9IY84seGnkrvszY6wtzVX3C aAyMr1A32o03XItZ9e9L87IUzbyOtxA3u1gtg8ZkqzYAtS2SVKN0NX98GBKj02js FMBNFnkOwDwhiQhx85yssAaGtuhFPIkZ8tQ9pyaEsokBHAQTAQIABgUCQZ43WQAK CRCyqy0garY05YPdB/9aTDHRFqAYSj/fx/scFQHoZYpdJTD56NB8agDcR7EC+Xnt QNkKOe6vP+wIB/ygFlQkZp+ev1jt3HcuoQL7nKdnuw3DiJxfcIbZEspEwH3+HOck 48oDLxKrfEXpdFouXm5jLI+GQiPhz23AMAR+WjOgAqv1x7bZK2FLtXowMSHSmlnR GRZzrW4IWBjV0dqHupwB12xp+zjAnMs7cAZrJRrFywG7c1lN/NAIwxoQeHWEx2ZH TY4xy+9VrLV6j0k4HnIQOM2xB72FQtlFNlfpb7EDpL3u4pGbyW2dlj9nWtI3Krba mv+cNA/QnHr/IoU6pa60ejbVr4lQchHoRMVhepWjiJwEEAECAAYFAkRTRLwACgkQ dntIq/8gahAVxAP+JtDZdeK5+tDJgOPQdcFltHFoqDvZ2LFNDBJLKpH+QK2+PZS6 09hiWHMus6twiqfg4eFFVMFFmAjT7UsabyutpjE/iP+f6Fg2aP+Tek9DuwySlhl9 veVksP2w/Mqzs+fartJi8fjptyrJrs51pnGjNJ1b6qjDOSStzVNZGbxv44OIRgQQ EQIABgUCRFM8EgAKCRAyKyKXH4ocQRkqAKDH/pID8abw30Q8w9km0bcsUaWFiQCg q/v7PFHkTJYnPdVsnCg/LA2X7OSJARwEEwECAAYFAkRlszgACgkQ86Tl1vEaQXGs 5QgAr2dePAIXSrtMNtSIPVgNRjE4LgE2qLRplztMrJuChQJZj7ZFnA9iUVZMxWfs J+MeT9yMEQ26wjTM2wh44Pko1vlB2g0hr5ROKnfvQh+jCMtAmepzYPtjzWLCd/C0 bmFdfKwQpRjo/7GnRpxz7Hks2szKoTwKSUak+qS8af/Eb34RTpj26Wno35kkKUbM Ahp1ilAJu+IQzysXzEv9WcDbfttLH/CsVKQEpiiJdVo4X/wTXuWYUthGKEGQLIgJ 65EWSSgx1a5pDblpdMqgIrGrB+DZ27Nx9B4ak5zeHetKUhdlXebGMmJnEjpbhWOU XnjJfkfuXoQ5PDquUdhTdI3jeIicBBMBAgAGBQJG7sWGAAoJEOUVKCUzHNpd9IcD /2sZ9+90VXLjxdarr5GvDg0HngCFT1wtet2uD1DntwwO0GTD34k4wWjyvU1UQKwY BejZL1q/ajAGYnb3X/MwLmmPESMtvRPq6C7CBP9yrU6Av150JB66xucYIm+OClKC uOhUYA0N7zSWb4p5tiKrW8wIkuKFOIGWb9LX1CPUuTMdtB9IaXJva2kgU2F0byA8 aHJzQGVvcy5vY24ubmUuanA+iFwEExECABwCGwMECwcDAgMVAgMDFgIBAh4BAheA BQI/NjWnAAoJEE8s09gnk88tDGwAoKKlztOThA99pOdkBzcnUf5WZzs7AKDLXGWD qRGYoWFahtFFfTewbmF4hYhGBBMRAgAGBQI/YhqdAAoJEMiGpCvVsvD7ne8An2ub eOUwXnA14CeUpLF1w/xhwsXMAJ9+WLC8Nvmc7nSVOc3n9PRczw9QZYhGBBIRAgAG BQI/Z/jXAAoJEO48Tbv+O1nNMUMAn2pZ3Lf0oxxJIm5gyrUE3KIeFVzkAJ95FVow Q7crc0eH5SIp8BxxBfAtx4hGBBIRAgAGBQI/bSvNAAoJEBj1A4AkwngCrCgAnRCt W5Nf1V3YFee4Z+0ddwlVb4pTAKDAyh2aXycPLycD+qh3quEJRv9UAYhGBBIRAgAG BQI/bSvZAAoJECH5xbz3apv18q0AoI/DNEyYCGJZZM8BhqI21JKPJyoYAJsG/aM9 lUP7pTEkPhlw66eEieM1t4hGBBARAgAGBQJAtDMmAAoJEC+xeMfky6351HUAnjUh nfRQ68jCLpcJ1w2QV6BLgLjkAJ94tzIqvopvWWoslVkZ4W8p8s2ej4hcBBMRAgAc BQI9+tr/AhsDBAsHAwIDFQIDAxYCAQIeAQIXgAAKCRBPLNPYJ5PPLahAAKCagnmf g/q4QePsPpYXUMR7QNXTnQCfTUK8lpH1QNMrJ3tZs+roFUq1xm6IRgQTEQIABgUC QLLpPAAKCRArqCYCws6AmVIjAJ9pHD1aZvT97pmBN/+UqIUQDbdGIgCgpKP/ev/G 7sFYe/NKm5hQmPewj8GJARwEEwECAAYFAkCzC/gACgkQ1Vi8KhWXTrkllAf/WkBM aDovrk1oagVyLpSrbmUmX4XqziOMuUC7A7fE/+nQKHwFb/2//qVsI+bO0wT2NVyv hD0RFT+8duoaYZLVLlPR55TDBt+gizO2cOLpMWIqmu9nrqdzOnRwfUbG+6NBnUxm TE9yqJfBmQ7OHMKC5E6SdPlO5RVJNhco3etD04KuvnMo7tyreRp/5HKG14ULUR+l /cbS3Icph4C7RHXiHzw5B/D0mhiZB/GWOR3JGkBTU8uOfHPDXt4nZipidJkCCc96 DqdW/NLpwuROcnaini5AQZdMZ3KVPLlH3te/ykYElrPL4yBxv/cjKQfSmpCRadtx AQLghR6zSmJfmlkqeIkBHAQTAQIABgUCQLMOagAKCRCxzJsGbzm2pIKjCADxWmW/ j1dYE6ufjQGNjdH0x/D6X3RyH4lnzVcOSsD0N7t3um2UQeX8/4U+C9IA1tbS7XMk TxiIDOTlTGoqcOOOn9xvIVBTcQGFeNPtVlyPXzH9/qzavObp+OMEJf0yuv8jPXHZ sEvdQt5K1oC0wpRH9tGPUrlxkd4Y9e8t0/QjFEfhMgdPbxQgTSvPL4GO003Q/tbZ nGUNq1vSDBfJWHzKds6JuAQwAze5WkpYshGlG1qGloHSMgq7g+m8xbQkZzEOjpqz Usx9o40J8MwoLhNV3xXgb2HKYV3Yvot6sgBebcgqflOh3GAn8V4Lcv9KzNq9tePG 1Mdt8zy+mbx4jqh/iQEcBBMBAgAGBQJAszFnAAoJEFKbo8RjARpiC4MIANo+t6lK FZL7ih/5MVSEYtiX1Id/xugFysV9bnYmAMewXa7Rc5jEmF6z8mMLFx3c6QxgCgGp oRQy2Au0LIhaqDuBfwB53a7bJytcqCidSoq4+qO83a2KsKPM1tIm/K2xFh3RTmIF QeulU8uCVGRRBRNYiQ2YAVS87xpvifbWyXUJcj+7brDJ/QQfyq3vUZrrdtNDxPua u0c047cZA61/leksemGrsr0Y8J+5QcmYMIYDBKp9M7m2pL9bcaN2EMGOhWMsQsmA h6z+aJFiURD0eOUw4hqhWMamKlPwUQVNSyoPey7tOm9r3sZgZwBVYCadCdGYYWuz 3LLu9HdScv82Bi+JARwEEwECAAYFAkCzSEMACgkQT/FntkX/T8ZUgAgAilvvV9LU QSahnidmtYt8mGz0fUhQEBM/3PCz9ra6DNhPqdnlIAZqPJMQFoIWktZdLRQCZxy/ DY9CIz+vAWLAhHbk2t3XrcLwIW1lAgpLiInUuOqnHrj/VgUAvw19xrddWIz7mwz3 HbmPU1pNzApLB3Q5m0+bferOoZK0tAzGVbpalXwSSrWAKgUseWgFToTjq7MhPZsv 24VAIL0whLnd+2ctHPaHlADsXQMNUxmt8CYkSMvVNeZoN4o+JGPbT/wetsHZuJmL QXciGsvTtEXOuFsr4nioytGTDrK4WncvM3FjkqqekI7/SLLuDEtsb1WRqNLlD1m5 xjxZSxGlE366EIkBHAQTAQIABgUCQLOhfQAKCRCa8Fji3/gfy4oOB/9ggnMgICxK UtYBfTSBEC6cEKgRoej5wXZDMGzWZVvVDhUwF5qv/OTATt+Onq/p8odfGxRQmSSN kY1r4ks5igOg6KG6B/G7mh3yqZTVwiiOOVchx561OW8cza0gsBek7J3VOc3IcCs5 tQ9gip54usuK9cJPv8DQ42zFhsGhYPmqpBH/e+VWYLEba10MSgW/RWBlYvJLqS2L EawS0S9YeC6ZCKruCdBxlieF/w1YZlYIaiXRqPayfGlxwKOym5PfNTk9WTK4yOvz vntt35rhvK0VOmTvHZUlkZti4JG46sPHm/VNKQaypooUX+wnZ+O3wwSrMPGL9Ud6 zjH6m6cv8H5+iQEcBBMBAgAGBQJAtFWIAAoJECMDnpndGqL0uTkH/iTY4gjZ9Px5 Q7LgG+0ADehZzm+Awh8M0bRyUEAe+054p6qImCwRGe+FuAORXKXAk5I0Le416s3N 1COFarDpT0USda85hsmLKm3JDRweqxCG22tqw07B1C8NriNd5QUcsm5Biqp+i329 R18fOsKezVNzcPKXMPr7OEabvkLDxl6fsjRJyMUtXNiNZgDqGDfQbDoa0FJoB8qj k52L3byROi0Sz4d0HrMzlv5j68mH4s4VVuS1QRVkpf7/eyAy/bjpTD8LMU37l08F qH2EJVAGY80OeIxEkQnpx0H2SwWoI0/tzjIzJhmd39v9FOuJo7eVM0Jm3wWiVdm6 ve5yx4n7byiJARwEEwECAAYFAkC0pVQACgkQ7sMTGGbBry6bUwgAnVA37A2Q3hqa 16NkAVgkT0C0/eQ+vnoNYbF0wlxjwoS/Qfu9TuLPnxpo/Rf6CfVMumM+oryiFTOs mxVI7jZTVOmiqIZb1XlRgDHZgrDjVl9kuj1hvCDh6Csz9R0iDoUk2aEruh42U/41 Rda9lBRS19YhbjzDIYkswPUczFzZMBYpaCP3tBDX91vLYVemaZvEH5ywWqwGGmac 0/+zWIAPiKmth15mUxEEYJqgbeQQqHAkLi8O7OmHNBilIrrtfxJ50oQaXV/SgDJI LcMOUug7XA8gFJW9i9tGJ4qGcHK4AzCYYrzylzJNRO3Qb6vUhwsTdAxPIworLGK+ tF0KsfGO0IhGBBMRAgAGBQJAs1A7AAoJELtDm8wUsvfjvj8An0nOQT6vDhSRxtd9 AeSXn2YL9Fg7AJ0Tbkl7UkEVAOVB6a8rNKUzx7kYoIkBHAQTAQIABgUCQLnD0QAK CRBRWr1fqVzK5u3iB/97mlSp1spnjX6QTpSL0pLY3RmoEG6DJgsJpw3F+hiRmM6i khmSSQ/jtFWJjmKc+KtoM/HOwb/oLv1m+3/ISEwWtLkpe72zUPlu9hVqR4nojBTp 3Ht5iJtyxEpeaZY13pQ+T1YEnbwCrFD9qVEZDPmwtpo92fWq/RNXanQsfluPhagb 80DkKeo3Nx1zbLwY3i2sWSUk9nzuwyu+ObRzS14s/RN1EsZ45aQqAYr6T0wM/lAd ubIKQIfXfAzAE5eVK6JI91vckT0nOT7hhgKVJCSnA1TLfSvsw8QEmDbOBze58oW9 mgu2Gx+HnllSfsZC/sQpoCxpk05EnYRpj6Xnbo/8iQEcBBMBAgAGBQJAww4sAAoJ EH5cQ+a3aIYCXtcIAID2T+S6gH9QoC3YzKKydibBdw7Buw8s5wXOLvGwBZvqwqDo q8qj9HFV3JP62THH+hs4Ei1S5OyjCQdz+sVwHIVGr2S7ETtYIHM9ILEvbxKvGgpU KF91v9K4QIidatU3hWgbqMWcfU6d6uO2lnF1eHRj5RmY/wJZbpnKCtcbnNeKlVU6 oIon+k+EpqaL7AK91gZPeRfowIOuzs/eXM0NFt8wk1CBnbW8eqkhNt1Ld+wdNdeL L0LmCSExLHUaAEAIHzizhn8nd/7rHkp0dt0Z2RULz96GyWQnvzQExVZ/TwzjaEER 1OpJZ4RRVwQUlL5seabdlen6ZUSoJ/p5ROGUsCuJARwEEwECAAYFAkDFTjMACgkQ vkqD8L6ek+JByAgAvhMdhgUvb5guYTTT0XFmnFkzOhJgHCql9lr6tbpeCxSL3ekt QONeLeri1cwKP24RtMiv+9c0BpPE37FkWGmmLSxGEZFILghNeB1oqTU84bX2wJtP 3KOvtAD6L3dwd7AZ8C9UkSz4BN/G65tmA1sR0EZ3/VGL54g2BluumqiHcCvI2Sgq s+LpDdP6sIXuAFctvioWhHJGmJ6nLNtgzvjwEtRdOxPStiAiIYmWTwqmsptrMrVA r0diXSuhypJZBKmi6osj+tSNkqfuIk8OL10hICl/2Yr6BxfC8yklR0LhgVNGV9sc BHHoD0KrPG69MnPDafqiAogJBg1IkdKPY7nr14kBHAQTAQIABgUCQZ43YAAKCRCy qy0garY05Z9TB/oDFaPDHv5wjz58pn7YKGZwP1MNR2wnxSgKzV552uR4PBk9cQ3R 4DPUn4WRytHbLkaBKFv/ufnY47S8+pgqbONqa8muCpPTBUPVf60KWcxqbWJOerRI oWCW9LUMzz1eXYZ8Seku/z8Qj3drFdJrQperbu2e/kT5NnyvpxofStLMjhIAVcCx 5Krd+1GG/ECIOt2t4KGQmxXFqJRfbYoUPQSRGHEILJs3pGMgZkvT98jDBgVrUvaM ZavyaAIBzgsG2c12uS0NiurDPX+H6RzR7pFgmqjqe1BzbEZtQZT1iIZo6wqu3JX0 B2YgnTAZN1gR3x8yGth/1cThYGIXy7VpSEkmiJwEEAECAAYFAkRTRMEACgkQdntI q/8gahDYXwP9FFzYGPGLxvXzkX2XrIvKWGpSak5DAuKWtnIGF35rxuUdVNXL3MYs ontnmeOF3Gsv15ihg6s44EqdY9lSYmSWqWENoDb482+L2TL4XO6mZU+g9V3I/6IB DEdkUSTQ00P2cKSLhIk4wlz/fCW6PSBlN+hR8IFYidNCxyd9tH8ltqqIRgQQEQIA BgUCRFM8FwAKCRAyKyKXH4ocQVbtAJ9u6TROe7eGMeKbFYLRdsq9h1vM0ACfeomw IMtARwMczy8JNgYncTgkSKaJARwEEwECAAYFAkRlszoACgkQ86Tl1vEaQXFLwgf+ JnJSLSk4X1Ym9Kc+Ak3H9sPWUHCai2eQ6F5Nuxcby2l1oc1lD/hHR0fcl/PnKXb5 U7Dk2Y2L6IjpznYK7UNPsMtN4L4KbiHJImbfTsIWravlGbukqKPCa06qvdwTuuNk 6I/rGVAjLs7Eq5Pig6uaQxmgvU52/kGbPve/gfP8WC598FkabcL+rdqGKk2O/Kuj 65LPPlAShIDR0kR+tSM34HzhaMdAZSFKv+Xl1ekUsQP1LFUDQ0yxao/Ltotu0y/X f6zYRxdVckMe9Z2osjCh602oE4yP7bmE2QxM4H6jEucZGY+HETuEIg2OhBYMEsT+ MrzyLc/L410oZVNGBksqB7QcSGlyb2tpIFNhdG8gPGhyc0ByaW5nLmdyLmpwPohe BBMRAgAeBQI/NjP8AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEE8s09gnk88t uwMAnR65rFqhkPBpogVS2hkBCFvVX1LzAKCwtgpaYLqGJrCrUZwfHz2RQOgVL4hG BBMRAgAGBQI/YhqdAAoJEMiGpCvVsvD7iw0AoJWnr7IQYBy6hCFX56yGIRUWmZ+R AKC3j8EkR+m/9+awiCoiYeatigCw7ohGBBIRAgAGBQI/bSvNAAoJEBj1A4AkwngC SSEAoOe4zoTpjUABdjwneqEWACMqwmZ0AKCPalZ55dBL0Sq0peJfnDc9KnksUYhG BBIRAgAGBQI/bSvZAAoJECH5xbz3apv1fFcAoK4/sizJv/rZ+W1NglHt9tm14hyM AKD/esdnQJtfwdF+5xJh1VUilzPP0ohGBBARAgAGBQJAtDMlAAoJEC+xeMfky635 ysIAniSKbYLQhy3dUnlvCUriOKwFfCTUAJ0XOyhV8fT2Shqs9O2FeX+oTcGBGohG BBMRAgAGBQJAsuk8AAoJECuoJgLCzoCZwNcAn0sIddq2esx4P4xfWLYfvYsokZ+0 AKCcxkf4i/GlhSHxs0LT+BDKyWzpc4kBHAQTAQIABgUCQLML9wAKCRDVWLwqFZdO uWsCCACX8pUlEb6bIbIyUqsYEBeY0oMwWdD+gRdjF7WzBnBoR3z5uGJJTFKws3Yd mp2scXP/7xjrPhHGgDnMWj4Txm8vHQeL9AxyR3T+d6Pt8J7c9KGEtlhcYD5HWx6p 4LtlUv2zqxNBrfFBuRFMUO1kzF8tFwhsvPMVTtkciugdQbu7VGTVplowmHY8TmRN YKjoEiY2WCWqhPeXQ4o3M0nHrv+PF9KTHhEAoesNDwHSgz4KFiTPaN2N6r1cxulu atDu7eggfa8Ks1KT5YLCqZcuT+Y04zUWlrKBDVC1Akw6rmY6cy/dJjA2m6gq1vKs 4UYhpZN0oNnTPmIJrLca9fCA40pXiQEcBBMBAgAGBQJAsw5pAAoJELHMmwZvObak /cIIANBoIezbWvzay1QUYePdjzHQPOMT4AlHGYOqZxv79pUcM5H0WuNnMQ6JSycO uZVg+McmgN+tIvmTMfcbDvXJze3Yu7rY8U+BzBZ1dzAyXivxcjSuftGGAgBG+FF0 eEJyzfYwDF17ohF2dIazLKpapQhnH547/xeicwsqCD22a1RGbFB9urMX2g+mlBdD 6eu8NpeNn+v0uR5arBi3Icy0JClgmMYOhBpTYkGnuIxl8bz781Wg4qorJct+c3zL PBTkF4W6ouOyn66kBVyfoijIlChf9RFPQc7Vy5yKHdn6p1eZdQ1kQ02LrEWQkzMt Ot4cY+b1aTNCAhkg15QcKXaCyKeJARwEEwECAAYFAkCzMWcACgkQUpujxGMBGmJz 0wgAhseUPK4ge6iQcnyfSNV6uAMtFAw2Kh+Em4qMUiBLE1aURYiteS4iOqTqhYqX 9QNMXumVs7Koa0gQFn5NPhYYpqt32vn2+v0PXCldwbckWARZoTjHE960KjY/lJPG gMimXzTf2RMayqRz2Itri1kfkD5Ws9NBFf8SHSjS4W7svceidxpAYAHsoEUCdnrr KMvEvY8YEz1qkxzpnHd8yCR4v0wf2bNrSjnMQLijiRRqp31s03Qbiu1r4Xx8UO91 jqj4S8USTwk2gjPJavFrJ/0SaetxRfLQ9oq4O4RqFTxumcenlEdxkD1ewpWx9n3v P/w8FZeAHhw9qpQrPKwXmf12YokBHAQTAQIABgUCQLNIQwAKCRBP8We2Rf9PxkHt CACTPFGqKwdToKiRmoIrTNDB2h2v6ulCXCb0ZR3hJtbd7LMc0MEDBtwTcKBqInWY 8Pm5cRPHaBs4PUVHdd2yfNZ49hcTFioSeNXcLy1apUE2VHEHY/NxxyzQV3dlknAj NMdzMClflact0XJ04XlxsUhUqy5f3ptyH8dkuUUzj+tCw7lCJ98VtebI1vvXHzj+ DI37b89zptJkHSjyVuIPe8qS9T820/a/4h1kprDG/U0xs/F1HoeclKa3yXVEOtp/ 4ZumtyPq8eZF7hz3Qf6stb4m4YKR3ZnLXZJM30OpJ6KZgEBunBnmqhbRNm37XJbc HAmAjsdff2l+FnnZ/FwgRqHGiQEcBBMBAgAGBQJAs6F9AAoJEJrwWOLf+B/LCdkI AJ7jPDrvd+NvsJYXiqyHgkJRA46oRqOMeJeabQS9c3HJHSCMvxZ1JWRKmIVMQc7W MMQ58OpN3jMgH/Qk03edO8olkgJa4cGdM7ESmR9QFsYJ9nO96CBK+D28h/HLgoT8 VsFLHMBZbXApqnTrn3DLzAHSdUG1AyEa/a10OizuA0NkP4gB5D0qRlWjD8OGRhRR sVIwNmi+XT6/rnJnycWeglxLaq+L7BOUUbf/AmzjYSsT1s1G8DPfZsumo7Axf2mq l0plpVkY10bmoEBV5unb+yDkQDcPz5R/4Jrs2BgFofz9GLdzSPW9toQzybst0DXT 5jhIhMGMpX+hbhInd561nZ2JARwEEwECAAYFAkC0VYcACgkQIwOemd0aovS8awf7 BZqwZSMurqtGbcpbOLmZ0ZNz4oSRXn09oSQeIU88qjYmHmEUS84SxmE77pokRdmj FwxP72Ld92j7DsjfCrrhFYYZ+RKlylKQvmQ631jWM3YHJcUWxERWKgqpsakuhWbg UlwagMUvNUvXJ2ZKUMf1kd5dBS1VUPheq4CUKyi5DaqM9C9bYIoi0NFHYb3nsXYe 1l8UhGEJiqdy2myBDujOIbUPT/JqN9MG71moCtP+ioe+0Eb6j5Zj4XzU1zT/Nnt6 rIsUBbuq6OnIb++p1gkryWJDheDvFQelvosZsMxHF7FFndleZ04FBUCHwcnoYLwc AJpUstEj3gG2Dnro1iH1XYkBHAQTAQIABgUCQLSlUwAKCRDuwxMYZsGvLtcKB/9H g8/vtnRmmuST4NXCI+CR1lMLILUcYZxTE0l6JvHghJchMfWuvFNWyAwdSOMplJtF M/EII6XvGNUY4JwYNI1pPWPuJlKfUfTSjpTJCpL9VdmGrgABbP03akgg3sTM7yzU jlMUMvbEzbfUwDkddxBk5kBSR+SdnJYNOWAsftiC9H/fDSLs2feh6Vw50K8H3Rlj A3bfg/Ph7qMKncdJ+aXa6Ll22BXTUqq9Yv9Lg9ZF3Oa/lFeTLVn4J/4C9ODQOc/I R5twLFuQcZTITj4305sF9k3e067BQjSaegAcmbPy2z5bz+b8RqKDGMx+12pmSzXC 6G/gRNAXv8ulxafP3cn9iEYEExECAAYFAkCzUDsACgkQu0ObzBSy9+N3ogCeKzZQ 67tklSSuK4gEmVZTyemmgN4AoLqKa0hsDnCRDMpl/E+5ThW6onE1iQEcBBMBAgAG BQJAucPSAAoJEFFavV+pXMrmR1kH/jgAMsHoMZUAd/rJU0n0nnAPqqMQ3DdIOWSO z/u2EkDADUb2Q/4UzzsrnbNvZvR2ci4XzEKII0UBYpVPbJeTmmLYBjlYT9C5+2yA FJVUsbfP+7ctLXTvfMrODXUl8Ztd0KxZgbVYMC78GjDKHxLChz7fchFMJcza1fxw RdKu17nbR4zUw1MzzwOccTbT6FMc/OXr8v5vLlltZFGlBazyz2EKnw1mcHIzwapR wGgWjxuppm32mxUkkzgOQaxK2NHQLnJlaYDHhFK2JlpeqoXwnMGqWrCDGKUz4y4W TnUkd/X8LXLqMSYhM+CGjQwdKiOb5nCz4vCYPTKV9aohBdPhljyJARwEEwECAAYF AkDDDi0ACgkQflxD5rdohgJYqQf/Y9F+jLmoHMjSLXWgJWh9bW55JTt6DYofmbIE x8KPD+ANmxfZ52YoLfzPif3WCC5HY+kBHz4d93dxscYg6SNIYQ8tZeUtUyaJL1rw XDmqf42Xwx9Gz63p/drGixirohHCcZQKht1btZEyfjxrdsb2qGFQBgRgh14PVWCQ TshVskbkvTyCb8lpqrzlwieFeqi773VKdY3+2+g5k39yuf/UYdDnprd4THt1W4Ty jc8JQEMY8tgUqhibrkHO6uqfdaOcsGX4mo76ou7TnSDybg6IXqIcMnk+dhb4z16W 0oI0+zksTg8hCcY+azbsv9UJ6IodbTrnp0M3Zdm8QfHxvdeO0IkBHAQTAQIABgUC QMVOMwAKCRC+SoPwvp6T4mHXB/43978B6YGrqi4NpR+dQ/ozbme2CuolEXGN6SMB rBtNCh1mnek9W5+VmGk8B+0hPsoXSJJjq3AgUGgGO5oTbjl/RWZcdAUgdzgKLOVn PqkHbcktQQmbMQ8qnaGcZKyIvSthaQdLtz52amh2HK4KYZrrwdcdd3UkJhRAcBUs x+O98gntz2Q1wzsT+vV8qjLNR0m2OulzDzdcUr2spLueLSs+JBOBDP8IbsfIl/n1 ZLEZZe2HlQvTqlD2dk54ecbD/Dls7Bxsi+HN+g6Ync/PjkH18DDkCdrY5ynGiyX2 UFUXB01j46Al/dkVbsC1rmhMP2GBNsp4RAKaoYC8tTv9DVKsiQEcBBMBAgAGBQJB njdgAAoJELKrLSBqtjTlIOQH/2g3UvCc4NJrD7cS6NcX9uN3MUrKpWuLaCMAMp1M iFkYnWZYeohijSLL44A8ysfNhBsOi4/qxHvucpADrLwCMiQG2ZLlunjztjWHf/z3 RSPXNiPqxPLBOxNYUXOWisjrH56rNJfgkWxmeOZxLaypR0WU47FnsmBiI6F667XC iuy7OGVWM8WuZxBPE9X58eFxQW3fF/xid6s4B+bblK78W5/BEBWFyTy0qs/cFAt6 ygEocUWfCAFeRlozOUqq7VxTqcuNT7VKmegNcx9nn8GjJm8qH04OGh7YhdlvXSVJ 8kNokVhI8aReYCh/fTngo+fnTwnSQFqCH4+YI1Ez3dHOWAyInAQQAQIABgUCRFNE wQAKCRB2e0ir/yBqEOPgA/wO7j3Mhk4OqxHxHMksKraD5eI8AE9wTzg1wPvi7v1H LpBRcnAYk00rIo4SCdfW0NnDftAR9ICMRZLmKpFdIUyt0vBe7Y0LN0F88CM+vc9W TBaLMwGW+4TCx9JNXfkIQW4/qjyLLjrpWz7i2RhB/BBsPaw6GyMIjRXgmYh9huwx gIhGBBARAgAGBQJEUzwYAAoJEDIrIpcfihxBjz4AnRNvgo0gvLWZ8fMAqOqbue1B cWGuAKDF0vOWJKmYYPR23KFOqQHtMjXh+okBHAQTAQIABgUCRGWzOgAKCRDzpOXW 8RpBcXTlCACrJgWCbcSrevmj8o4wGkB04vu9nS8BfTHPRrSGsWLzMddYc22qCIIE e7C4e/x9FwKlgKgXTxWCny9sHZRV2GxDNbQZ+J4FhYbN+OhdJgZ8ktQBugIwL6aW sS/iNxxNwrmLxhCdP6QBs/4UjwUgT+D9+WPFeWPH9+TLYKmgARovDGfKN5o+1pNm tGSR1dnCO/xJFEBIJsQP0+f3/eynveKrM+xYe/oQl4UiwO3jSJ9cDXhb4k0PvUHj cTtKSYFlBOqJGIMyRlzC37Etfp0EA28HK9vkUALBYg51I9BBFlWNNDUSKoh5iEVi VXpKH1YycZtB1xT6sovICcoXW/kFT892tB1IaXJva2kgU2F0byA8aHJzQEZyZWVC U0Qub3JnPohXBBMRAgAXBQI7JiyzBQsHCgMEAxUDAgMWAgECF4AACgkQTyzT2CeT zy1mDwCfXSsWEkIoJrS19y8BEHHwmvxr7YMAoNrAkAELLhNB4m1IVFDMfvbsYPpv iEYEExECAAYFAj9iGpoACgkQyIakK9Wy8PvDdQCeIxayh4kylfj5i+ORa7rlLq/y ezAAn00i90m9s9IAsVU+acpeV8Vi0gHmiEYEExECAAYFAj9h5W0ACgkQ2MoxcVug UsPIYACfSPsTdSxiQSHgpRKbDulDPvFvfygAoKuzef2rOiknp93cmLIDR9CRntJE iEYEEhECAAYFAj9n+NcACgkQ7jxNu/47Wc3/7QCeIqFMWARZdzIS7qcxdOVBvMJs mH0AnRzgsS8SE/8QCjVpc1fv619MUmIfiEYEEhECAAYFAj9tK80ACgkQGPUDgCTC eAJyUACfYcR3Rw3VUiaBoMMdHe9q5UipEVQAn1v8ZYhuxn+RvGLzwZohs367QBmS iEYEEhECAAYFAj9tK9kACgkQIfnFvPdqm/W4cgCgo1ldHQKTfSWRryWPkC2771hh IEEAn1ks/cfd+C/bxonsxhQnkNy5K1L5iEYEEBECAAYFAkC0MyUACgkQL7F4x+TL rfmsqwCfbM/TTE0E4ZIGU0Yez0m5fkumEHYAnA0vBeyhDdDZne1NDym1Yy1/S6jG iEYEExECAAYFAkCy6TwACgkQK6gmAsLOgJnGRwCggMJGYjtsW2APIEdivzPBRCv8 HbUAn2/a0c4HydmE/KI0xPa+wRWRAE5giQEcBBMBAgAGBQJAswv4AAoJENVYvCoV l0655vsH/3ckAfYuOCsiQr27S6lc6RP6XctvSDs6cXqFOVGargOkoNy4k17uFHqp 8DYMcJDEIY1S7S9up1g6jjdKEHlhNWQvQn2P6Rf17EquvamlTBrPqieA1MyEvsw4 /GD6Is428oC4oWifDCl/dflLrN1DCjhh12HUqMO9x3Z2jV9rwpvgx8JkDuLf11jn 8flvmYwQ6tTc4MzKKvnSKqGR2UfRCRpBlEeItGuWkUXbu5pzzCuEr6HPKlrKPWTn jmZPDzYu9Lo//YaObSfKtXWnrI4raKhX6OpZLe+gQ7Y08As8WdgF1IYxlpQW3SYC 75I5OOWShdkREh7qh2yF1x/z5RKYPumJARwEEwECAAYFAkCzDmoACgkQscybBm85 tqRAcgf8COuziKPRIOVtb1Qcj/5lwL/9cfUVsTjKZvohC3Trjl3HARvhSepIBubC TnytN71KrNnbNeOcn9cGYB5pPQa4LrQrsLWEckTjxyFWtlHEY/DxFyDS5cxQ18MN ffBh4lfnM97JJJZcw8I6Yyf/HuR2V21D8++GzzsiZh0Joidc+TvQ/BnnQnZOT8pq bEGj8V3BRZs42bK30iSSMa7ps4aqmn+T7OzWGummf6HKWudSpYkBmF4pRRMu29gm Vi4Ogs4LF4A17xBlVVSTuX1oKb1KiOU0ZktAorvej6cRdRJx23r26y0QsE72nUdq XGOH81NYMCUKwwb54/qM8by24uS0HYkBHAQTAQIABgUCQLMxZwAKCRBSm6PEYwEa Yg6FCACu5aJxR8766QB+f4gt3IaYgXuEH2oowL9wdQd1CdmkXyrvR3yo4wYCpKMR hp87p264S1w3PKQtgTKtAOqSWIkk/mPXWQt9NceNT9IuzTGdkwUVxRj5o7K78COl 6OUwPZeo/4aYLzuPQWBw1t10+UXcEhgBzSmm8maLETdNyJuQ+vCs32ln/uPq+Ka3 /K2R//yfFk64yGQJnpCRoIZyrBJ/xRXYRoHwYwLblKDE1bmkLyFBc895CZldomLT Ocqkoqd95ZrxUDUYCLnl8wjFxU6zoRgfv60NKnanVXnZwQh177Zvx17bUrynrxQT nDGWoS+JZS78jgFG64BQdrkcHmgAiQEcBBMBAgAGBQJAs0hDAAoJEE/xZ7ZF/0/G a7IH/j71C2OYVWrl7Qjv9GNqZrLM1dCzwjNPNWmifcC++khgdMSd1FKGxj+khrIj VNJU+jTXDHkmT5FSUFs4OWHfdlQUbxU3TRgDuAn0JZKFUQMTBqZoPZmdQEGmoGmb aD0pijtvoX7n5itI8ZGNgwTEEy74x+2iEesfP4UPWTmLrTaHpttNQQsIbAUPu9L1 xgoHv+iGdBE0onfV751znTlOs3Ih1g7cHe1sDHoAsMYdCPWlezHb5Ww3RjedQ1Sx l1uMSB/vWPcqmXxhvDkh3d7b9RyYxDw2KzaabbPc/zFQSKUDEfoqojG6mAxaJwvp nJ+FlayzEyayQmubwM18ASQhGp2JARwEEwECAAYFAkCzoX0ACgkQmvBY4t/4H8ul Nwf+JkrvpXazK4gxVcUWeEL/5u60JoMj23NAfeQO26lEmyZ/L/rlKsfLk6Ac9Y6Q pueDYAf36DsB1wJXopwJdnDre8AUSgWNxHNt2GbSgImZKVvX53xYNCnXkpSW8z8Q JxA9kQJGgGKSt1nqC5Rsq9n5SUUQh1oRveH4mfHZ0yfRQk20DHml9cXp7CsViRQM q8T5JYlQQA+AWm6pQNg3LkQO2ruKbpRh5L5B/xUc+gNhOza7ICME7CztnuwG/hMw l7tbOmBYu9GfTjt/xfbZT91YupO7dBXf56ICxImY5vMgXnf1nOe5aBgJvJYLJxjb Vo/SBUnhpPSE6UgxdlNotLT/TokBHAQTAQIABgUCQLRViAAKCRAjA56Z3Rqi9PSh B/9FFEiv5NWbOXwIi7nJK9qaOuGrL6L49G4nuBGrLBhi3EJBqZzYUgWXZj7L0Qtz 6+wd9SGLfV9ffmFfTj7da015BvIlnULrHMPZF0l9sa0BfXnxFXLAvv5h1CnPYrai dIDxOONUhzp4Gl+UzqMmfMBDR7ZKWKf7CeC2TBhEktSR7/RUsfNS9aZ+r5KM9743 IFaNstsAZ2NLt8R6GBN3i8QRMdkxytd7TRaX1pn6/6EcZa/ZePit994PkoRCQlWc mZS6ehMCA2Uy90/Kl4VN6OxxvXwVSdsZYnKXeI5bdyKCZjitD81jW1UZhKEGRxKR g+keF6Yl9Djm5BEGWulpHyr4iQEcBBMBAgAGBQJAtKVUAAoJEO7DExhmwa8u7aQI ALHQuLoO90nWXSfrLEV7x4CthxxZdT9R4zIY3OafwksGiHl+2tWacr1M+DMyfMuK BV1RidCb0s7Zu7zPekF6EqsCCjKRYmmURhxDdz+Dq1eiKw2JqHTULcZarcvNquZU ouTujOpzwHOu68hCjkAmYEOSyCWqCjZer5Q8V/wY6SLS8VzNIEHqtPoWiRguynne 7HmqlqpB1fk3oDnWPQC+QtG2aIOE6ncopC/qO92FFN5nsj7fne6wEOLd/Z+MG2z3 vi3ihLcgHGMDL/9YEKWg66EsNlqj1Mzc4iTSyMqA5ObBaQvTTjzyRFroOKCA4505 CxPTbaE9pVdsU4Be0KyufN2IRgQTEQIABgUCQLNQOwAKCRC7Q5vMFLL344nyAJ0T MP0JJQoGpZc07KEZtmiO+UxjyACeI9jRHXy0eDdp2iayXnyJgrKSo/OJARwEEwEC AAYFAkC5w9IACgkQUVq9X6lcyuZl4AgAm8uRbaDUftlsjkO529AeEujE82DP/TFX hRywah+9NjvB5JR1JCoTonF7znJcqXlOmSZ860drE0We9kULY/AxsZ9SN33SYM4d unpZAxwuo1TQEkckY/EzPRmulH44ImVxgQnLBtVjygAghMAJ+qHZZiXA+UB0kq0x 3ubqzKBcVtrXzqPIE2AKIutvz6zfGvkzo+Hx4FHTxUk+VLZAGtkUo7mMoFLZJPuc V20cxvXJwiBYpfPI+jK/4FOeV99cfuYMbozdXk7opIpinHBR6M8RfQr46e0sykl2 9UDzoOd708jcXGTfcg+tWgvzGtGcJ9eTMNJHDOoSzSY2MY7Mc0m7kokBHAQTAQIA BgUCQMMOLQAKCRB+XEPmt2iGAny7B/oDhlzN55rVk9xeyTdhAyNxmfuRZA7ZH1J3 Ys/z+qneEqL77uBIDiGr7KnOTq4Ld7l5Q0pLIIfDdNm6bPOVz0Xc27zGfwJBTXQw 8rxiwrh2O8Ok9yVZ2PyJ50E8pE7mO5FAwgV/2HEHSGh4q3o1aH9l/PIsYyegBY0O DbypH8asLglKsklymRA/G+vBLnzKEJbhqPF1VTzjNracNOPAKkEO/lSMcmby8+oL wHc9gX4TjIA5HJdlOtWrIEUMLAztKGISARQXlD4H9MBk6UMrk3ExVxBsgUgzNjfi vJpHm2rU+hZ7GHTb5HC+wra7fjyEhtNOC3TafyIKTLFVd197t622iQEcBBMBAgAG BQJAxU4zAAoJEL5Kg/C+npPig1YIALiDlzAtiwpQfHFK2wRQmxSsCnrQI6Oi1Z/J LkWALKd+0Yz3hOujwKF3s0PN151oZx2NhZPwJYPSGAAsstPxifbwjb+KOfZatVSm LxSbmGzHjjqMzn9CItuTIs3ZI+ysMVJziAFkNevje0Bggbq1w//qgLxk2kGpF+LD Tu4i3VMQiO6A1rbq2vDDs8TDoPChaz5L/o+gKYwUxUTnvVqPbjwO03OsHZu+UPQR ObkNj8+vH0LJA8fT0htmkOXeDGT1eJDP0M3fWudH1cLicwmh8hZ2pacz+CjB3ckI URFvcJiwxpwByDxR0KR3S10mXaCQKfph9OjO9Res5w+LL1cW5f6JARwEEwECAAYF AkGeN2AACgkQsqstIGq2NOUEFgf+MV+B4pahVF0JM9ElrnxZPGVzfIYfA/RqOtyw ahRXZeq7Uqsz35mgXntE+9+UJ48SPNGCmRqCzVRuEfF9MdBHWXmUpYVmc5gVqkTK DhMci7MmdyCFuTbE3YIHOTkFdTZGF8cQVLATD4H6ENO1AXdOxWRd/IyRNAgIgx62 I0osvv2xRIPDfhJv19YvqNWVL4wPJVkI58O/4/eYPMK3cDhEjxng27vzkXMo24Ee 141EMZnJFHHwd/ieurvcw3rQiaqjKfRgzOEKjmWNtlc7pPK+bZyYtCd7u4EE2zi/ j/CV/rkR5Tg3Ag42QSqSqDMOr82rGeGe+Mmjf4a0WDqPoYCeRIicBBABAgAGBQJE U0TBAAoJEHZ7SKv/IGoQdrsD/0TcyXCxR6EUNQ1h/ZS7x2Ga2IU/QKp4mLj8OGkO qF+rpDG21Podu9dO0pRItk1YINod38Ijbz1gtDDvwCcx+WLABNT6IfNltVWjazOL VaTDqSoFqyaQdHteK5ZVz5UZj0XATMty9mk6uZkuE1xvM/Gg+u6U4tUv2NByaPuS StH9iEYEEBECAAYFAkRTPBgACgkQMisilx+KHEF09wCcCCVbk5pvvDBL9MLuyLw0 GPFDHxwAn1spdU6l+9Wbt+4j61deDkpVmnSiiQEcBBMBAgAGBQJEZbM6AAoJEPOk 5dbxGkFx+iEH/RCU9GEyJ3N8mPf+6ajI+e8LtmseOgKonvbOZMR1zEx30cHdulCV 6E0AW8oHUDC2bFTF5AQn0HeUl8XpQwVD3AqmcKGnPKfCJtrqqwqNBjUg7Wmjc1WO 4LgHbG5nY3OJyzAMU0y1uR8hbrsuZ12qtBuW9C7dOKMkB/ZmX2w3F7PQ9a/WSWTj tprSCFHvfeOFTbhyhV8hoyDq3AlACAoEmcStxTwVlfC7Gh2+ATkiDBUCA8niLwZJ 9WO2PV15xk/VxnmbR3tf79GpTwABUlBiYD27KqLejMgCgWXngL7dpRVyk2RUlMDl y40DyA0WFUR4N/ZC4Mb8TctIdrcF2k0tMrKInAQTAQIABgUCRu7AigAKCRDlFSgl MxzaXbidA/4qD+02PQbao38Q/ZRz0T77emKbCUv8cvufbGP0DAMX3FDDN0mA3Qv0 KH0WxIH0vItbbIyc9/6gF02O7wpWC9qFRvaaRl73ghMYAA3jyoZy16muBRvC5HFl 0GDfc1D+opROv9KiDA9xDKRCrJ1GgkXxVsds+J7n+QeN/ZduQBV+SYhGBBIRAgAG BQI/bSvNAAoJEBj1A4AkwngCSSEAoOe4zoTpjUABdjwneqEWACMqwmZ0AKCPalZ5 5dBL0Sq0peJfnDc9KnksUYhGBBIRAgAGBQI/bSvZAAoJECH5xbz3apv1fFcAoK4/ sizJv/rZ+W1NglHt9tm14hyMAKD/esdnQJtfwdF+5xJh1VUilzPP0ohGBBMRAgAG BQI/YhqdAAoJEMiGpCvVsvD7iw0AoJWnr7IQYBy6hCFX56yGIRUWmZ+RAKC3j8Ek R+m/9+awiCoiYeatigCw7ohcBBMRAgAcBQI9+trCAhsDBAsHAwIDFQIDAxYCAQIe AQIXgAAKCRBPLNPYJ5PPLeI1AJ0bnQFyT8fgHUPBe9kZ3BZWHMgo/wCfcZ09QeF8 A/OUMJ0pMFh53CQN0F6IXgQTEQIAHgUCPzYz/AIbAwYLCQgHAwIDFQIDAxYCAQIe AQIXgAAKCRBPLNPYJ5PPLbsDAJ0euaxaoZDwaaIFUtoZAQhb1V9S8wCgsLYKWmC6 hiawq1GcHx89kUDoFS+0IEhpcm9raSBTYXRvIDxocnNAanAuRnJlZUJTRC5vcmc+ iFwEExECABwFAj362qoCGwMECwcDAgMVAgMDFgIBAh4BAheAAAoJEE8s09gnk88t Ij0An1tD6abQ1aLuGYXR8m0rt9qkfjOgAJ4jp2WzHiHLAsVePbFE6bBuM8sXcIhG BBMRAgAGBQI/YhqdAAoJEMiGpCvVsvD7RfQAoIv5/Cc4sruIPLyqE8h0sQeeux5t AKDq7tRPoeqOInHw2F7ypBetJjAld4hGBBMRAgAGBQI/YeVwAAoJENjKMXFboFLD G+4AoOlXdJgw1opzDTdppiJojAKfzI+IAKCu3DEXIMqTt1pf1itaLuaDNMHr8ohG BBIRAgAGBQI/Z/jXAAoJEO48Tbv+O1nNptwAmwUs2/RwDX31LUkgHNrEHuBD2W8O AKCodomFtLRRcA2w3nx0NbSY6JHvbohGBBIRAgAGBQI/bSvNAAoJEBj1A4AkwngC CwgAoJS0hQn6ZwveW5/uiSGGuKuGIcuoAKC2jTOao6vSVkPHU71a35Tc3DuqlIhG BBIRAgAGBQI/bSvZAAoJECH5xbz3apv1pQoAnipPFhky+v2Fs8PlLhfZsVTuOIzs AJ9i2Thd/nJhPucYKpSZyF/KlZ0S94hGBBARAgAGBQJAtDMmAAoJEC+xeMfky635 ntMAn2U8DaTQSY6VHtlGDOfH6EqyTr/5AJ999r+MuuzeLl2IkKNDXiqfIq7+aYhG BBMRAgAGBQJAsuk8AAoJECuoJgLCzoCZUYIAoIW9WfiK9ja5C9mNOY5T3PTFP2UL AJ4lwuFE29VzS9ogVxMA4/St7Rt/BYkBHAQTAQIABgUCQLML+QAKCRDVWLwqFZdO uWxbCADMmWpxfqiqhg1SOQ+7dwUDHNoTDKjacS7uiXaS4+mw8Uh8y9i3dD6/C7xn mcofaQggr4EX/I5Td6gZ9+MvGAh4MrpzqA7SNp7TMd6cZR40O7NOid9XOywa3Oqf eQc46SwHn3EJvP0ka4U6w+tfwldJyA3ImhvlXP5R1EhX5xiWP37eof0ySr62cVJq 4EOEYQ3wV/Q0kiigPo1hmCcT3t9tCeOEVl3Mg5w84z3mQjTVZKPvjfnHcRTkgNYB 7jgzRmHhMiktSEc84yTxBIcjMbcvPdCaEbWD49XRmi7NlvKbc8T3gNfiR3EBvEBK 8RnlR6QqujNYD8Ik7OddeWcMc+ixiQEcBBMBAgAGBQJAsw5sAAoJELHMmwZvObak GXsIAOnueRfI7umULV3xy9kWgQL4LXl1mWn3/MGkk9w2JeK7lW9i1w6VOuAw6e81 nz/WFljaBMJVLLx1vzAXCUFyscIgIkklH562/92GdykRkY0flUdFHfsXgZP3PJLT apWrjxh7bTXd7cUmDN3ndgi9tWVUBSc9zW78z4Bci2zoWVIBw6DtcG/eVRjVjwDq slOUNKHQ5ntbGEcBeCmE7GDQBhRtKT0ywM4oVNTvn5fkqT7hCcxe+GI4yCr3+Res UM9xVi3M54Pl220jlSLAzFeCMueroikggwVL3lNmyJ+tf4Ii91DuVng8DtAAk/Ra gtiau1Yll3Qk22iWmKYh0pMxM72JARwEEwECAAYFAkCzMWcACgkQUpujxGMBGmIF SggAudyQkBlndxZRccTdN/nmzS74J2h1wWxIbNC/FvfV5wZHn4ZFYW9IVsjGqlQL IifCO9SRJTIt14kvOQG5vh+2wSL8oPH355FU2ZafBUkV/q6304QZz8YANuzwAx+h PZA7VTZ97ZKBH+BvrjyV8NGkCB/WtJrTvA+XFPMP1HC92m3Na2/q5f8tmuCShm8w FsVj9JdrMROQYFOoTpZIdksk9wADwydJnzqIug7FiJleexYKu7C8Jv3/khvS2h+S 3PLv1BYq4jL3I7ojntsanI51RCX2p8iT8vCLlpNTTR0Rk3GEVIZNGKftWmg9edgi 50KTlrwb5vf2OlrHBDGiqZPu04kBHAQTAQIABgUCQLNIRAAKCRBP8We2Rf9PxlH+ B/44M6S2DJ4kQdT2o1rk8MvkjC3toDBC2meqhoZmXT/s/9rumKUeC9KrWI9AzjXj UolX1m20hHw9OK+eWQpsa9Xj9HvX26DsVqb7fYsay+LN4opGEipJsFCAr9Iv+Bmq bRZPvtixF2T2TvOfbAxQQzY7eXPcTjLFKJ47o63eFvG8uuMZ/e2EKgoX6R7jbIMN ADcr6PB22Cw/t9xBCOWErtHu6wQXe+pH0fbHDsc0clUsUUDGk+yLNMi7oxoRz82m vi7yqVTb5fJlSGxi21Nu/a7m5JUnSvdmCSL4LRurI7UXW12xSdshsCpYwOD2uUZ8 x7Y1PpnEWyl5Npv4Btskj6jSiQEcBBMBAgAGBQJAs6F9AAoJEJrwWOLf+B/LrboH /1Y75spoeHIWtSC13BzFQjhwHRK/ufEYctQkP/2w7mmPcIVHxDucOlYqaWraZ8ia PmDq/uEWgYeOqfCvXVWi3/FU4+15EKKUCXEyBurMFSDFVuCnVmPW3Qfi6SsyaHuQ 9HTDWYUEcnfjSaxglN1XPQusnE+ADhLIHkNeY+Cj6fW4JFPMjmAqEOKtRCtiGPVF wHLxZNaDqK2U30aJib9p5nvV9q6K70hzT47quXdmhvDu5ZkOheus+X1zUXZ/KfvF TYK3sduzyIaeiQEDiikzIDq8L3N5tjA0wvOG1UgMj/IyJOUjyqp5uetpcJYcfD1X vdWOr4g1bFJY/RGfw9NpWFqJARwEEwECAAYFAkC0VYgACgkQIwOemd0aovTBPwf/ aYOZsy/AvzOKronA5lG+T3xnE13TYkq7KtJvExzrMqKFX358KsVtjOFPoDEZRqFC owvYID0/amulmIZIPtLKgezq3a8BMYfgvyYTef5H+NCqH5g+YvMJO4cw1Lsnj0e3 12ZKCjYs5aPosiMsmJQ1bz5fAABwCaPC4fdGk1rM3tHj1edQOdJo80wFUYd5y7ez vzQcXDUnspxTipYWu9vc+fDI+7+YsjKzRhm4WhZzEyudeYi8cAw0PBTkTMNUFI1Y 2xlSjYdRsKqfR7gUBxvz+xXoCAqXhdfkG5o53GRRFyo4H1a1Hlw6DaJ0zC0ogYwo nMS+TIIoZdVD0vVG0QyHeIkBHAQTAQIABgUCQLSlVAAKCRDuwxMYZsGvLv6FCACA XCmDrA+ksBjcEQ2Y2+324bQxURRFFNhktYHlaYglSAMB+5jg11pvmRB96pk6UqX3 4I6qmcF6s2X0bdpatuT4P6MHffKwCeHF/nWqRGxdW14jUCY4VRzyMaWInivS1r3m jiL62m2Ox3ptiG02x/3CnEHpVk9/Cs1kKyWq2qbassxcH8xvokK0Z33DiMHcgyBM CCjHQqRjn/xPnovEsacneiTYAs08a/3Ryj1W27wRLDpuRbfAec/6+qRuLxaPO0Ca KHRO8UlSSnJEL40eNieOzmiYiBwQBTTyCytb2PJDhWFmCidwbnpQUeefULZt5dTN CMAh37MKNvceO0cNsMXDiEYEExECAAYFAkCzUDsACgkQu0ObzBSy9+PZGQCfXHCr bK5d+bRanAtaL3vOcz5ltaAAoIVKWSJGJwYOe77vxu8XZHM5hAAxiQEcBBMBAgAG BQJAucPSAAoJEFFavV+pXMrmMDwIAJtluMCa0RFikdHXPExmcOtrdTX7UfVY97PE m9YPPXFll8Rbjjgt8I+QYynnOBRXJNxF3wy7kVBaYuvKA6zf8t3uvthvcJghk9ij wwHAXvQtjgSbp41MZA2SiMh0D96Lo4AwHi7lbo0zC95ZlOEiUS4JCAVXMqiJK1tr BRhYMnH4G9CfyX0yujuG4oqWXSmwlsVR+ZrtKZ/AQwrpaaJOHxGA4T1QDradQ+95 4IzNR/k+lpwZBT37RSwUd5Hz3u4z7cnpWyzoS76MpQYRopVnGqGWZqqneGB1sShn JEYqUcTtrosweSA4PRRc6JCdPYpyJfln9jYj107txYciHUn9PlCJARwEEwECAAYF AkDDDi4ACgkQflxD5rdohgKeCAf/azHwfzzBo92GxjtzBEdZtxK/skpljbYiTpKs kSpEJneAbjEi7rZz2knPF8KchfSaQI2QB7S1Jv56ShRaRgSr5IGNdQiG/SbBGjRT 3qZHbww7lv2r23g5I0ijQlIYous2WsbizCDqb5dOzEj/+nQLmquK2bBaLsfCNm0p dhnqghPxgROy+CUHwEr/o+ZwPOsuK5/Lbg9KX1dCkmWcVhfttXEclv/GFL8paoFr lXzfJTB6UtKtBluuUV//jK9mw327zjKOQ3r4AjXrfg2YHfVSL9fFb4O0pA5uJDXa Ec+lmyOgk2DFDGjps05ec312+jOcB2cw38uxZtYkk1rI2twbxokBHAQTAQIABgUC QMVOMwAKCRC+SoPwvp6T4skQB/9mCeyPVKWtafa4AxYOwWsFl+hk+T2JLyKDbkrj sfEh1IcCJdaZgasJEbfqevAHtExaZsYU22mgHycQ6Yl+jrwxyzCjOctqHwfb+/hh MwsTxUCMvCp8FJ9ndgDjYE9MSH5WHnh4R3pwEV6MIotemsVZXldjTMg3EzY93yaG 0aFHzxzteDj1VxaZ+qjfo9DFdkq4XUwVsgmoUYYJKGcPkQR9gi247Tzmsttp9Mvk g98f56Il89HTLdsSxtet6uiCMFksOrh+939XSi2GIvJVq2sj5oJJ7E+5yqCIUCuz V41ZfPiS5/4iEyh4YiI3gEujPXiDXDT79Oj/u+rPA95v2l4xiQEcBBMBAgAGBQJB njdgAAoJELKrLSBqtjTlap4H/AyB7J/KIhmZDpP+6/a3X2liYfhO5sHf86FORHJQ zQj7EXzTc2Q2C2pOqYTdSOwbODN2gSQJnKDPq7kTCgUuUv1DNIEK3qKotiQTpHsT WQzBOKL1Cq3fO+9bClKjbokipjSNhV2z0VnvYykg2EoZpjmNZPAmw0I4KrZNfqIB 9tSpz78DfjJHTXrRSELDEuh0yYOQjumkwVxuV3kdlxEkUrrjix6B/dN4cUJ/Ar5s 0Y/W6TXDYWxcrnlkY84gr6WicgbhV9MYdnpt+0lDMAb1wxSzccatSjulV8/mD/Jn ddg+ualamRz3BZwBJlTRO8f7c/9nQg5zE50z2sBJpYOxz/qInAQQAQIABgUCRFNE wQAKCRB2e0ir/yBqEPZnBACakBBOYfKTIyBL1g3VXqT4ae0Dis8wNMBAJVe2ahol J7NBNVFm35PA3X/cS1EQzNO21Tcg7M8NUM5/+PkFdl6aKS6BjIAgvQZx7iRkCrA3 AqVoAq6WwzC0puGxUkL7bFKYbcZRV1vwryBlwvZxfRIIfBx+jfCNR0F68mZ9Ww5h +4hGBBARAgAGBQJEUzwYAAoJEDIrIpcfihxBTI8AoK76Vc37Lw49zC4O0aIxeb1y KAWAAKDW4Uhs9ttQco2tEnyw97qb8JBxUokBHAQTAQIABgUCRGWzOwAKCRDzpOXW 8RpBcX6tB/9l0DUJEGSCObxy/IB3LM4YAJ4Z6MxLgn+obFusLpbZgpgrzELH1pdG QCUcrwwECjMm22YR+NRMd7KdpXj0uRZNXynCzLxAXELjGSEbe6CPFl5DB1bPg9OW 6Syb73gAMtPW+k/0Jsgk2NKpE2V9hi2vTL3j+e6Yvow7wERS7xo8lRHtgh2rgS8S gGT8/axdauAsM8hL5jHoKeElF2SH1QhLQM5zCTirVWJYUIlLGBgX3yBo1DCYmjex M13Hem8nbGwS7hj8ExbdZ9cRLMEfv6N6P0HrY5MGQwpsxYpPAFhR3JoVVhKB6TNo 2IqNUqV8qOHeXeaugOL9mZcCmxXdO8BotChIaXJva2kgU2F0byA8aHJzQHZsc2ku ZWUubm9kYS50dXMuYWMuanA+iFwEExECABwFAj362tYCGwMECwcDAgMVAgMDFgIB Ah4BAheAAAoJEE8s09gnk88tr0gAmgPTcwvJZaA/4SYnE+HVILxetQqQAKCxmpW4 bQSq9DTKA7nejDmcOqdovohGBBMRAgAGBQI/YhqdAAoJEMiGpCvVsvD7510An0Of xT7kWHpclD5MFE3KzjFkVZDgAKCBHQVV3WzjTAXxBtiNRfnz67YDLohGBBIRAgAG BQI/bSvNAAoJEBj1A4AkwngCwOUAn04M49o7Z35zn7lyHHeIlNFhfzYUAJ9Vphb2 8yW7BYrx3C5RDQ264MYjaIhGBBIRAgAGBQI/bSvZAAoJECH5xbz3apv1QxAAn0AO XJ9+nxcBPGnvNVVLwdEaFPPaAKDzo/Ua9U0PPNnZJ12o99EuWZvQC4hGBBARAgAG BQJAtDMmAAoJEC+xeMfky635B3gAniwJbk2KZpYfwy6UROun5HlE7fSRAJwIqTU3 RVy31GjmVwc2j0M4vWdKvohGBBMRAgAGBQJAsuk8AAoJECuoJgLCzoCZyUQAn0pU l1H/a+uKsHxS3LG4IPPCyPRUAKCPIXNBEvvKscEPE6z2+1n344+nZIkBHAQTAQIA BgUCQLML+QAKCRDVWLwqFZdOudGvCADiFLQEdZcvx89ZKS9uEcEQmeAFPkNUOo/n n4qqhe4pwjW2xH1VBtJmWFjW0U7Lz9kaNlTUVpDm4cM4ue+2aBLff4+gxeUci4Pc oK1tBHHXtTc5QwW/40Bv5LU83RglRT13yMIEQNuIVWmlUmCm4A2HXCyLC2M3EN46 wZU4krGLdkwfZUM2fRmfLBVk2zka+uxbUioqC7BgWKZB6IdAqSZirK8rbE36+QOW wuypuc0vfiwTqidDmikbg6933kXRy3R/mOSZZe7wD0zyX2xVQ3DV9Ndesi0M4ZMk XiFoFTy6qfjrM/gj95a+PPQRvrTPKtB0KbeLlGDKT+hTaGEspuGyiQEcBBMBAgAG BQJAsw5sAAoJELHMmwZvObakqwsIAMGLOCzxY6+1EJAZ32T8VNq6XSrHKyMuRcQC wIcIsbSgJ5LbVRn6wJc3At1/XlxYG70sl+X5v/MWf6wcsSu3wCo8di6JcMBTEsU8 04A4zv1UF3jCbrBPHC7A8Ckgyl9dnEUpx7Pe41V0EWLHIFu3xtGzEPFOJ+A77shP fYjr4MXbzH9ZecGBGpAeBlm72Cj3K3Hs4fFmXoxBmM1UjQ7CeFTT8WxnI+l5sq4J eg8YAAlHSsfPq6WYn33unlNcz3M11Cbd3E/UpcToI3YPezwQ/qBtrLqA6n+DiYMs J5UvfKWMazE98r/ih288X/Pm568Y7wkXHpxIamvSWRY5OKcLmkaJARwEEwECAAYF AkCzMWcACgkQUpujxGMBGmJdxgf/T0ns7jdxYv/zGkQ14wr/iVe1+iuKKWRPqHfI ozjd+QXeb2ctMaRVPzgETIkKels1A0v+C4lUgZmYWU6J+ENsZkKvJXSOajopeyU8 3CX7MLx3ooe/+6a8EHTqRkvkqU/UOanEdDy253iGMFDoE75yzDVj708gtE0uAfMU +wf90GUMkMr7PcEgAelRzjixJ96D8mQSp8MAQdHaBMzob1FA49Ec4+RJEHBNUWhK y67nQDvqDYJxTNfhhaDfyVSZ4g4hWgRFn77DV9a8n9NHJUNOehWnUSzHEpxZ1IoF WWfNeTaie6eIKG7ju10NW7ACqLr0479ixhRy3FH0Qcq2rmabnokBHAQTAQIABgUC QLNIRAAKCRBP8We2Rf9Pxt1NB/9BCNUIrVcd9suXvAlxf2cUY1Eph+jyUwEqJ9El Q8nuc/JJbFlhQKQJvBINCfIIszB7Hsz1W2AnTNOoDXIHbC50koupl9T51PE+tFnz GbKGcclcLntGcyTY3a2oYVO5k9G7PzMWNBmmwmlwHyvBM43A4Cg2mcRSwcd92VPT Y3m9+YlBfdHbr51RwPDGXKrTjX2LfWuIs78KvE4UHTv0r+Os6fCw0FkJzRjH83M/ j9lcVqp91A8Wny3GgDiSeUcbIu8JVxUUlWTuXXSw8nBh4O8n/w3139y40gCTh7zb +9EH+jUW2uINplHZ80iJ3QcBnLbrm60/tBdBWnw2GMnGoiJdiQEcBBMBAgAGBQJA s6F9AAoJEJrwWOLf+B/LfigH/2yjNyby5ozmQ4vjaAigOhPpy6m/ggVU234d7BqY EQMJMCzauMwMt+YNlFBHB2uBYUCFMrcsnxyFQp3H2l1SfczEH7y/4gMXnnwoSB0J N19FiYE6D2/szKvgEozxctwok/shPIIPgAbG+5Moji1khje9jPbIxRtIDqYBAFLr hTW+i85bOFJydu8llyJu3ZzKIWn8YJbxkWDNRJbjT7qDiwZDIC7IsDuJJafdOm03 4Iyk+HfPoRvbznF0VELxxsQCX20k5ui8QjxwxWT9NlizQYN0kv2B61Dnu3BEJKSH iiv+jGkoRKCEcDiLzK+vLXkvM5whJJKxk7egy2+uYhKCBriJARwEEwECAAYFAkC0 VYgACgkQIwOemd0aovQU4ggAi/aYjx536aLUmslKDBiz8ZHieQajQOW9ALCULno0 tRKF2ARYproj2CafTIQl0u9DO92Y7TXaZLVfc35ffenrKn1h5ngEwGyr7OrOjSA0 WT+3QfvXDILjQFy05JpTEYg0+57K/4xMXf/PoMOu9jGn7HxcbyblTBxtqagFma8Q HMziIw8KFWivrYeBKf/C/7NUqyNFPcrBtWeoANmj+xEu6WyEMPowr3Ml4ZZCnFFR zAvZUBzOh3jT3QooavgZjSYTfG6NkmQJbzE2extaPzAeME/SKuPzezXQXJXe3pBa 7ZuprW5ZygrONcYyKdIee3/CYG7ShL3MzyrAXbNvgNIhO4kBHAQTAQIABgUCQLSl VAAKCRDuwxMYZsGvLnmOB/9xI25MxPOAJNYlK3P9GZL6K19tOREKqWJnvM1ZaKba WfDGFjBcK+OGCI9g1p1LjZUKeeOgNSvTlzfvEb7sfXTdcYqpdRugGRIzLiOUs/SL 50mL85xVpmgLNDQQITm7Tkn3FAqHewpUCIESBuzt1P5qt81597+2EHckQcALosfn 0Fv6y38oy1+SNiYL4uHlNI+jrEkCtPNC0JBbicM37Xt33exZJJBTP7S82gFWsF8r Mm3/DLe91QoRMFCmUom9zNTmHZXHqDYuxpGO2gYl2QDy6wbEJr6l7JUdo2D2GO/i Ny9rZlmBpqyZJ+6rFkNsjxDDiJIwuxyQQy42Q9DM3RcZiEYEExECAAYFAkCzUDsA CgkQu0ObzBSy9+PRlwCfRs75GrQZHWuqIn5nzy5fuemC1QgAoKRl+O5oxaP4PJ2s O7I0932pEITGiQEcBBMBAgAGBQJAucPSAAoJEFFavV+pXMrmolAH/iOAn+w71bK2 ddFcBJibjl8dDfX6NrQwEfD0RX1Bgzsg5/DoDhofOmH2EFtp9j2F5dKDHOnoDzg7 /0ogIVoDSrguKWOnaPX5qMPQPSO8xw+1671CfzTu+LQ32t8HhapMMqvRYzyIm0T5 DcVvbc69oTVKwqwbjjTlHSCRVstFE/Al0ezrCB5SBQBJcuQkR2/2XLw4ZkiKOvM8 pJTrBVEf9gmUcr7u0pA/TLIE/KoNhWWBSM+c3A99Kn1MJbmLvabh6XOXaEe1dtKN usFwd788tExN+c3jbUmNNicTxIkyjl7uL9hC8eeiicml6MmTo+SicTHEwbxroOFr SwVutGQca7KJARwEEwECAAYFAkDDDi4ACgkQflxD5rdohgLoUAgAo958vIQBD0jv eMlEofBTmbwrPb8smIItiB7nF8uUGggEzuyssLpwHoOJg0E6jUbq7Ju9d+13yHW3 /WA+NljsBQM40mZ8JVy8iTHyBC148HjSVFwVrHGelV/+s13WpQFGZrLpVBJJ3bFY wYw6qBmYTk7RBlkyGTIFpWJRkVfDJDOTRBpgNkzjsLwGSLcfN/BGFbEh9JpmGkUk UDpsKJkkuukocTxZrYbXfuZd+6jX0YkvMnW661JGWwKyJhZWCWGGnoalk4L2EUWb ifXxUs0fnzzoChGLhU2hyw34tQ94EN5prxX5WCQxRd/Sk7WfByd2b8gXXZSzNQ5I MDrBEREgW4kBHAQTAQIABgUCQMVOMwAKCRC+SoPwvp6T4tqACAC9tUQReOQxxHES SCpD41/4JecheWvG6+tuz2SeyUyw+O9FZjTG+zBRm7HEUoB0cdKUM2u1nd3/pvcm 7m6PzkBZ7UMLaYr98gYnv+OdUWuToRl5VV+uyzf8ahgKIkkznDwU7GaZGkmTve5n EXdAN2C/Jo98vDGfCmJ1snF+n5NVcoutJFu4Xirmn5rEA9pxipbD7bGYorYkoyih Arf18mKSpUeRa+zFK0jruQD1PFXIyELNZTqG6Zy8BJI/ehHUcqCqQRXL/3gzKy2A 00llWcpu1S3gjEHlWI1ZfjD4Z7vKj0TBF0gKBL6kcGtyg37fLxtvC5cMcvTeRtSO N9Yneh9giQEcBBMBAgAGBQJBnjdgAAoJELKrLSBqtjTli0UH/2scf05wi94a63h2 TAp/No8SkIVXzdKwEQwYoRfMi7wl9Pq1JSkGdBzTTwmUrtJuFaFujwvad/wFVtvs PODr/zBJUebyvSTYG3rpdOUeMOsKk0B7zdi1/qhPe64Dd9elvizmVYCE0ouxQtw8 vaWvRQoRbOIqxm5wLhMuU8Y/fV7n92BeGyJZYbv1a5vvlVuP3F0uX7yczrG+t70g kViFlv2OceO+pRhubB7ra8GC861I9r36+fK/mgEo9sYj1wz0jLucszkLDZpovL/W TePcugnODKHPV+/sDvQOYn1tLHWJR6IA1cadG3IzPPJBhBywERwAWkpMq20q+2BD C6/s4h2InAQQAQIABgUCRFNEwQAKCRB2e0ir/yBqEHVBA/0SiIx5+hvL3Z/iMhkj 8s3Jxb1PFYZOyFfiSumI1JMhH0FVxkBXZCUMpO5kM9IKAjH42itU8viixfhdvDHy aRCub7eBfGamc3H1eQlE76i95gkQ/kr/sBdZYYgGFXvMPgVUKb7yg306lYZnltZG +gcE4wX08bT07e5/dChd2GjiL4hGBBARAgAGBQJEUzwYAAoJEDIrIpcfihxBaNoA n29RBXe2wYdb/yTVs9tuKNDSkxsaAJ9pXY7vA9j2p/LiM0PRp97Rvt/Y1okBHAQT AQIABgUCRGWzOwAKCRDzpOXW8RpBcXOvB/9YQzvRvKBt063OPSaaEwrGjsK2nYAA XEutSmGxr3/wAZUowP0e3n2qvgYLiWJ+ob0U6SLCjg62YOvvpnA5XB49h1SNcddv Bt0DJBhVACw9gF+ENE1wcfu1CGCMyvrOpqQ9a8eHykGzVJ07RbaV3d7MV4/82a2D K0oKQSb++z26M98vy5Fzzp4byFH0uhaETPyka1hPEyFhGQbp5xZ9CBsv2g6ZDQRJ QFOjehE9Ms6/GotJs2yshvq7gHpD6ut9ZbZNR+As71LH0uGzGgsfXpWTkYOgTlfH c6tG1WyCqmxtOQeQ2MGxikZmEvAssBYvodMuB2mbWxVmTNzUMOMmCwMtiJwEEwEC AAYFAkbuwIoACgkQ5RUoJTMc2l3t2gP/cAvSkW9MTY2csjN0oCGff+nQhpQhtIle ji2svXlMw8dPX7JIOlx1+EY/XODIwW2/IIxj+rUDWbnjDIodTSygJh2T/aFxJ0Xr DqTnOvgjYGeOcVDJyVWbR9l2yQeY2J8ODFdpL+ieyOJq87yv79CytwmrN0672FRC 9FcqSagwZbG0H0hpcm9raSBTYXRvIDxocnNAanAuTmV0QlNELm9yZz6IXgQTEQIA HgUCPzYzoAIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBPLNPYJ5PPLWaaAJ0W rVZP5wPxhU1LKsXnYHXhDZ97aQCeKyKMUmCd8LQkb2hSxH5xsKDBXLSIRgQTEQIA BgUCP2IanQAKCRDIhqQr1bLw+86WAKD1aCeCcPen/2J6zfVy0tiIr5sE+QCgkxxR IJi0YEOHA9qgv+O8+/mwKu2IRgQSEQIABgUCP2f41wAKCRDuPE27/jtZzakqAKCC wVukrER1lqCTUSgVcKWxmNGA0ACghHrSzJXghoD1NTz+jYdymIrkXtSIRgQSEQIA BgUCP20rzQAKCRAY9QOAJMJ4At/4AKDY0PXg6t57M+vvPnsF/P0IPK1yNgCfWyiX TJZY9Z6/j8Jw6wrMmnT9ydKIRgQSEQIABgUCP20r2QAKCRAh+cW892qb9Ul7AJoC ZPIj6N9qpR9HDx7BOb4x2t5AbQCg18YO+2kvXgbXbQ4PMZJ+l4fu9bOIRgQQEQIA BgUCQLQzJgAKCRAvsXjH5Mut+V6BAKCQ3vXMi4x4HXiGq3hv2vg578tApwCfeG0X dTe4Dz9O4jI2KD7aca6Aiz+IRgQTEQIABgUCQLLpPAAKCRArqCYCws6AmY5PAJ98 AE3lmvs6VAgmtxqjT+YQgzUh0gCePgr7VCP/UBsrZfbmih9m+hNVTImJARwEEwEC AAYFAkCzC/gACgkQ1Vi8KhWXTrkdDggAjQDibpvQTkZQuzd0wbInzC2S+VxR9o/r h+onWfPRjS59JUQ3GJYT0cvsIcvPNKT+rUYYmcNSW+dBYH/B3msLWzbgfpz893mM xMDYoaHCU6SItyL+w05w2QkZfEE7DzeRSUHIl6GvtnSEJK1DmXEJcfnGrWJpApne 7q9MWhTVgfpzA+9ucU+iyPvc1FWUkVElhL7vyH+nzLHZjXaLR2/1EA/hLJNTZoSH OYWNUWwu9JLksW5eTYhu9W1/yriuyLxXuJB8gEkSrLeswyBvYP7PhVdyjZZO913H i/8ptzD/AATCYL4HZrGMdhrsWDPborHGcmoaB3x16QxkY5E3neWYXYkBHAQTAQIA BgUCQLMOawAKCRCxzJsGbzm2pLrrB/9GZAKCVo1h89lrHFm/gzfqw9VLA0mVtjtE ISQppuiOZj56X/1okQH127vwuXmLkEmntsJxpEfbEZYYZc5Ew4c+xX9CXVyAZnLE aNen1peDwQ5r9R+OCiU1/hqRnXqCrPeXrhh4Gb7CGAmGgWqnnYYdwowfi/ova1ei Vx0DA4Ryv9SLlwPDy9CUuMiDWTawz/m18os/qfTutAKjFpaIk5FPnD5+W+GjLtS5 U5qt6q5vspu0hy4WNTkswE+Rosm2bzU9nFdYfRLpntECVJoZq39yGS6kLl8wpZqM Ss6eVnRHRCyJ+DKidvS5Fu4BPsySzRP9itd+0aDTRZW0B2VWRSI6iQEcBBMBAgAG BQJAszFnAAoJEFKbo8RjARpiU/QIAI9FIGB3KbWyekhkYvHguoDBACtqxvw8gKQL WRkygniEi1NcvSChqLslzACt7oJkBvHT4uk5SC07nS7tCRcu5IDC+ShlKThJ5xMA SgAY8i9Ssa957D9Hxkd+MA++CZFJN9hrgqO1IMBxBW9QQGP1KkhJmbC/Mn8syMKH L+ZjfR9UXLfZDztZUDgsUZFKPOaw6CPrt4jVO3PDrWjgh1MhUsikJJy+9igEhT4e kfQbvdsOqEnuMzyFX8T51D5B7l7T40pXAXotAeNJQ0xu1o7sSN5KrA80BcZs6e/0 dn6Lv3cOy7+fnrVqs7HnMQUm30hqj2VaTX9yPYyb2B5pQDODN16JARwEEwECAAYF AkCzSEQACgkQT/FntkX/T8Z4fwgAv6mDFWfUy8N6YpYLOpXre5oRTFH0PJzBj0CS NlamQqEO2Kwlcr6VmYL+834LgL6Z/5GSlXwoL7N8mdwCUUWQokMWzG0QWvyD+giS 3KJzbdGTuuQ/NhJdIm7wc7ODAy4uBsryepmJJuabKGqq2GoWAQg1+xI+lg4uFKU6 nfio1yUALW6J8Ix1dDpsMbjJYdIYvEMeDzV4t68HNyYJsR5lSwyah70w3LWpDmzE NvVXJ/yJQtwH1vr7q8ON8C6bhjmjek6mbtrI8N+7kiJ/dtCs4XeSbh53Byctd/Vs bOxknE224vX9R/6WnlH31GXDW/B7zjefPJnnszREmPuUptC6wIkBHAQTAQIABgUC QLOhfQAKCRCa8Fji3/gfy0vdB/0RaXdbxhsuQ1AtqP4LKphPnO5ee9+3WdqFhSee 0ep1sgLJp0ALp16ZbH4feCDmaJG0WfhFvG0yHiDHR4Ef/V0iLpN12G7j+V1cGHxp 724mZ7Ftk5FEIUaqfJ+imaEIxSlNWr43Cu+DC1L9CbewxKrNPOOBOJbVvi6AAGDo VtNQIthVEOsvdeW6s3Ydn0Q5r/bhY1m13OVRw1Gagc+Az0eatxbcQr73SqXhDzEZ m0OhPZZpe3DGIFHQIT1NLXrceogcNZ1wFh5w+uccTQ6xUKTlEANON6sOZDx7zyqz 3f5OvdIrmCt4m2pH7FDvED4IB6pHVdPSMGrsvDB1AsBDCQJciQEcBBMBAgAGBQJA tFWIAAoJECMDnpndGqL0Q1IH/2Tauvj5rlbFDCVW2zAyJMcaFAFNFerR7sjIuQ5U R2AI4rMo4JZecbunGpnjKfAt/toUNU/0s4NA1/+BBcaGohWdo1wI5iQyf3M3QN/E ubHAHcOHOetflQUa9fBxy7Fuk9VBoT3dwZmRnG2dDHzNnyqQa1Dy9MX7igYGJ632 vMIbXSLE6gefpppgtn9Pdn5x5G67Yd9DSchxQB9eHONL0qfNAXJVRkdHDaKQ14ny zDcOAFh91CooTntlg5JcJBsnQmWtAzDlBAiJKrngwih+8ZPAJ4YgEeHhJ/RMJdgQ 2XKfMVbV1hB2rKqhturqvEUhYQIHn2xw55+B4SiuM0r6YTiJARwEEwECAAYFAkC0 pVQACgkQ7sMTGGbBry4kJAf+LuC7B6ZuCqgB/h9crJ/9PBTDuVF9PjsMRtjV2ghr scmnSr6rm+DGaAQwCjWP0jynnB7mBKf4dsWUrim2ULCiYRxULHl3jCdGhhFj/zDq Oawkt2ZhE9xt49zB/M0I97HanyuRzqEN9gDBP45KUmWoUKZOPEEX04916rpj6s/T JGwwI8nFzeztoaslgBnTWQyDN6Om74QOk9/OKZV554U0oHQ+crAPZN7XTnji85c8 3GEPx5RJ/A1CSKXSvSEQdH6spc3/mzqA8/Nzd4T9ACRkYG4Pkp96CnvWgN7qgYO9 akSnXBDRiHMZM1Y+CYxXqOxtQtHHQwgMNOyuH48o/doTO4hGBBMRAgAGBQJAs1A7 AAoJELtDm8wUsvfjvZQAoJ3nZWkQCilJaQW7CDEjWQDMfLV4AKC2Rmw7Fe00Q8Oz AEWPQTx+C0yjcokBHAQTAQIABgUCQLnD0gAKCRBRWr1fqVzK5rgvB/4pdu+oxhGz oVpsadaLtOBhV4FiKSsCJ1f4ijSp4Xed1kNv3KvwaQdYXMwcgEzJmjVRJTe3MhRk NozyWZ+1UBmrejRpy5keZhRmsOG3/SccHqc7Iul17FoQmxtnVrv/3tLoDibwjC5J /WdlY6pHPGA0k3P52iuKNetIdCr9yoW/VhbiMFeIkNKtRiDOV612QKbfqOTipssM AtLzgFoEkUVoweVCYQB0CkcgKA2j4gi2XM1aC2alsRaWIkq8nx1xCAFDb8HQtRHG Pe8oDVtbenkb1QgzJB5x+7r+GQ3QwPskaMNswy4mg5r7crU99K9syhUmni0kaGo0 4HdvXC0n9Mg7iQEcBBMBAgAGBQJAww4tAAoJEH5cQ+a3aIYCV60H/jnedvWuhUXn ZmD7rb/1b7F+1sDCj4HrFnStswZVvsQKlyQXSCnATwZ2gyvA0CDWVw745Wc2Ljix v2L/FgmcRNpE7Bo5hFh/LpZlOme3B4hVBXvqT4izZ8hPCahQoPAzZQwytdlkSLUR lhDfsEE10DFxAFG2+pWb2PLLzfc1i/VaUVgQq7rWWlNMUpVBLtp3G63K3z8iP55e FVBwKzRZqMxxhGKM3gh3m3vsM87Z6bv6x+1lG9auH3786gDB0aAdyHNQ7hvlJLWI EAMUJ462G5wK6SZeBPiiyksvndV4AxpdhgADWDS/SGBPL2HNY0gmvnB/jZCzBNIT ZrCOabtyg2yJARwEEwECAAYFAkDFTjMACgkQvkqD8L6ek+K9xgf+KOpvJlO7Aug9 BpkB6CjfvjSpi3RoE536dOdv+8dDUFRsoChBXB7dTEawLgsG/aHqUUeE/QCQe1i7 reT1qrQfmFIA+wc8JieT49F41olWiIzJFKwqfESMh6jFNzCiJrW7dscZL3orCXMR AuRfZxKJQv0ULDwVTXnYUkkvLNqw5pqlU5IAx09x4uF0XM9wVhYEvNXvqFAjx4hR T6bIJIfZ0WbDml3ydL03/Num1QTNgsc7Pvw0nVD4tJFW0JnZtYHkNWs1ogNUpZJc F7ibdjRnGOQ6kNbkFwjL+fO8VcBhY+AUIAZte2jpqzxaibQ52U1JOcn53cpQxD+z 3l+7Wcxe0okBHAQTAQIABgUCQZ43YAAKCRCyqy0garY05U3iB/95YscoTJVjVyt/ 8RzMz+Z5FAV+93tNU03VHQ5kyM4xN91fIJkX9DRzxuEku6FKYMG2/IEmoFsOuoX4 7hWetKtyomcYe+9nG9oXrR5RyIZy1qgBpORUhXGOnT2Ly7VjXfDH4bONy/gyVyrR F3KMg0lfDEXZ4ZFWueuVq8J964nhEaCZGdhKLNfLWhMyWe789aiKTzg0/w5/rGSf jDDgRJzN7PgrtfjSk62adOuXyivL0sYPjCNzuuS8uASSq+jnWv6XwDQmDiADhXkI sozKCqrMJOmIJYpYc7k7QNfutAEPjKgmu94CM4Scv2Wi4xIfNfjWfpdFUIpgxBi3 ZXmqbonIiJwEEAECAAYFAkRTRMEACgkQdntIq/8gahCTdwP/QG+eji4dadzuXNCY P+FOgqgKYKh+AjH6UjNz8kAFAuBkkmJNMZKX5HzRh97SGjY4RoER88FdgZajIdal eZnSztEhGMAAts+HH4uE//6GeNntUs3zB/gUV5MnvJvbEahmaOrpVNYxCu6o5u4O bX+Yb1Dr80URHN3LVTXAGPAVD8SIRgQQEQIABgUCRFM8GAAKCRAyKyKXH4ocQYA1 AJ9vn/YU2/lJqsAcV46K2LTnCH8IOACgxtivEpivCi6usRzfo3vVWmeaZIuJARwE EwECAAYFAkRlszsACgkQ86Tl1vEaQXFKhAf/W5KkkF2D4lvFyZnu54XWFqXmjiga oxM4J+jrMxScUfroYIGDzorRVhaE0p1INlxUNGxGewFsTHXvGQCabjXsnKfyKjCT 5zVf03Nd4c92VRKPUpvKy4lsRHw+lb1bk8xjCmyXE1Y4XkBR9nOnNSHt8C3KFKUN dIs7irwbAq3g81fyI7/vx642Gzp75uJvGCoMGCUQ1AsmP7JxcKaSRINcYN/Bh8AP yY8rgxhQBztFRJIzxS7s4kLDIpcNKKLMCyyeGonHUj9Yi6yDkUuquTed8liNGCNh eLbf7xZB/rAfRt95Tv18cg1n3Uej9ZCB7fUMOV4Ts/J9iTtwdE6d5i47I4hGBBIR AgAGBQI/bSvNAAoJEBj1A4AkwngCrCgAnRCtW5Nf1V3YFee4Z+0ddwlVb4pTAKDA yh2aXycPLycD+qh3quEJRv9UAYhGBBIRAgAGBQI/bSvZAAoJECH5xbz3apv18q0A oI/DNEyYCGJZZM8BhqI21JKPJyoYAJsG/aM9lUP7pTEkPhlw66eEieM1t4hcBBMR AgAcBQI9+tr/AhsDBAsHAwIDFQIDAxYCAQIeAQIXgAAKCRBPLNPYJ5PPLahAAKCa gnmfg/q4QePsPpYXUMR7QNXTnQCfTUK8lpH1QNMrJ3tZs+roFUq1xm60HEhpcm9r aSBTYXRvIDxocnNATmV0QlNELm9yZz6IXgQTEQIAHgUCPzYztQIbAwYLCQgHAwID FQIDAxYCAQIeAQIXgAAKCRBPLNPYJ5PPLSUBAKCatyv+yZ0cGQiOijsVZB+7tJRV pACeIy/3CmDGzZom6+r4Bo9mp/Lb4teIRgQTEQIABgUCP2IanQAKCRDIhqQr1bLw +xpFAJ9N686zePqYaQWk/HepMSOWTxSWAgCgrl/e68yueI+F7R7PpODN3XHXcseI RgQSEQIABgUCP2f41wAKCRDuPE27/jtZzfFnAJ9M558PmQdiAbGb+/gfJOkBQMOq NACfcjQx0SRpxDSvO+xFeZy5e2XKp1qIRgQSEQIABgUCP20rzQAKCRAY9QOAJMJ4 AtHQAKC3pyZY/YdXPKweCSM39h2i44i0PQCdHrSV+1GVEpqhDdfXstI4LVZupISI RgQSEQIABgUCP20r2QAKCRAh+cW892qb9QG0AKDn1HKo6TSNlxjR0CsC0EPMaAjV fACdGZsPxuu4XxV1S91wGrgxwAifP1OIRgQQEQIABgUCQLQzJQAKCRAvsXjH5Mut +TkdAJ9AzcQqwyKbXPs4cQjC7k1dPhAy3QCfakldtifVuPB4rO4WZSJ2eD77AY+I RgQTEQIABgUCQLLpPAAKCRArqCYCws6Amb/qAKCN6OaVfOSaJr5Q4Dxkq4xF4FAg 0ACfT5fXPEN3ebjWLS0JUX/qDEqoK2WJARwEEwECAAYFAkCzC/cACgkQ1Vi8KhWX TrlJAgf9H1M03L1qeSfQCmBuFUxfG5DaQ/2pHSRN3dmH5ljWBdl8R4VgrvP0QUs4 w5d6bsmcjxkS57PifVD+t175RpWUTuI8t26V28RR9CpvO1Fw2xT4XaLQgSe4xbHm vfMvocRgg3TfgqGSiRHsQxYwPwPxMhj2lSXDSaTHsXl38cxRZ8AAVd1S7/9oJ6I2 toYIa6hTpGC+MFEA0SbLm6r9cAg34suh7mLhtzRn4XSwmLbpAiWcIYu5NnaYxDVe 8V1HK5jGMtC9nKfLt/w1FHppKRTu82CXvxk7Fn1LTXZRSNb0OdDlXKRllA3ANXNu kS7Sw2qtJhqDaDAAqp0inEfumRVN1IkBHAQTAQIABgUCQLMOaQAKCRCxzJsGbzm2 pEWbCADu+BulQN6y0fk5xHHxBLYPO8b5UfVe2o9BhNa4KkiBUFWa+Gkr1FBvdnS5 x235ftkvQiKGfWYYuTdevOCjCSjZy0iaoGgdc76VLpypqfPIvHfnnYDwCijZmzeo RzhPbTR4HXILRgbBJ1qOEn4zkt8p7fNyFZqYuYPGVzZr9m8moHGPdhod02nrp6u7 CaLBVpfcHcKLhNPt5f7OCmL/6DUkxAmgy8x68V02ZwVXhgMM5sy67pHRfBub6prw n/smkOCOfDxptxmLc+7kGA5Tc/jUfhiKedeMwhA0IRRqVleTH8wfg/pL8bipGbIC LrB7X+OE6RBLowJp3YjoAwDDi8u/iQEcBBMBAgAGBQJAszFnAAoJEFKbo8RjARpi h38H/RkYT+tk8NxlfpHQY01nbPc6AAUzEARge0j7Bjkg2ghiugTlLdEXERci5+xJ Vwsep7Z2QIDnIPVQBN6L2Vsxnm4J3+9oOYJhiZ+DnP2ZaA7Q704iuTLG1GmywnAC WSGrwk/t3wj6oDE7PTCfV4SU4Ctf1AfM/Ix3iyTQiR8WDQLgS5A38Mu+mwNEeUBp fuZeN1i5jssVVZGirNM93Ui2Yv73pDCx1izcXD+UqgBRHUzbbBk6i/hztoqjVKfH BzUIbwQ+iKbHEvg6WGoQqd/PQarpqEONE0HyLQkjmLEKaoQ+ZtmM6xGtbFQxRvrs hgMrZodqEwDRHJU72hNIcyYLE7aJARwEEwECAAYFAkCzSEMACgkQT/FntkX/T8Yh CwgAw4ZZ+jvaXUqi0sENdiPdiBmwZFYDSOgf6TQVZ+/fT7Vp7RenpwQlILAuPQDR fAagzc7ldgTLrN2SrjPc863IjE3XTAiTy4rC0gAEjEiO6aQl2kOhZKwLG6sPqju9 bKjOTrYmows3ody+zLKlYMstm0egL38hyZuxdx9so0a4lNVUIIqJ7GuBytX2WSWd zt0a6sRYkbxb65TXKLw5YdMHEoTAgsuAXAAy1xEommH6svRkd7rdq5E0WnX42BKJ UNevQw5d0qtZqqnfbtfzuYihNJ3k1U4/kizXVOltvQ7Bz+XBMkt6LkmGx3JaRrEC K9hUFUaj3Y/grpVmQJnE9l8O7okBHAQTAQIABgUCQLOhfQAKCRCa8Fji3/gfyyP0 CACQ30ZrNr5J+PURv21IyX3gh0drTSsEOIv1qtdqv8pSx9st/2HU7kCt05AAnJMV +T7IsWSy0QgAh9puyvWcKLXdm3iSzyxJB7UcFxEcFhxdMxJhvDtajLWJoBc8iDVy nt7R6SbsUULP+GCr1/oWzbwsUVcnAjY2lEzyU5n9Ka8Qkjhugf6wHebgrNXFYux2 0blt9sLbMDdJoxuF9l3+UDxXdf4gA7bqo4S6KDSKI6RcDMGLZLdKqHTsVQl67Iqt tlvKHL1LJNrQZV6Govn83uDyPl1JTzjNVEAVSKSwyPKvPAzhtjDLI2w0HNTOyTXM A7pFiaRAqZOyQyh7K2Vach0tiQEcBBMBAgAGBQJAtFWHAAoJECMDnpndGqL07XkH /1DB98vnqmMLaP8fGtbduIKcYEe9K9xM9c4Wp0TBvVTvD7xqKVi92IDHAHMa01xm g0bEHP4odCLvw9wxXCl9Cr7yyIfPInMVBasRffkUAYD9QPOQIktejVOzA7T3Sg53 lYo6+RXSrd2vPWV2MO8Wjb90AElCKXALXHcSfhILZFLhT1ISVhgrjfXvV2zUuLax 5yvmW0l8kbtMyPpvCtbWbjfH77USV50u6c3pLuMrfMztmt23f5Ax9Zx/Fuv7IK35 W3fXVoLIzxEJF4V2/Wop6SGOKYucg3r3/yb5vVG3VPfJmoaCayD2/7oG5YoX5IS0 TUkK4Q9e0IeE4qr4KaBzX8yJARwEEwECAAYFAkC0pVMACgkQ7sMTGGbBry6OeAf/ Q2lM49O8E7e3Pm1rFlFsZiEBAuvM21kIdgISNRdK1df/IAg4/URFJ1TYaTIuYVu3 sjFg9gDgMgfbdtN2HMgfbmtKf3fBfCceMAPok5mE2bfdernjQmKeRxNPR2hfDr0J lvC9ptZWcl5/skjNmBn0SJ727V1AYi4mG3zeNnxY5su/bZ8mVGKTUcPPxndtUuwm KVeMO204iWMzaueRuM3lE/Gna6a7sLOAG9qYsS95hvRqGMf03/BmJbA3mz24ZlGn RiKUyzNXO+R8eYMl+EHB3IxV8ewEBa/yG6x7xgl+e+AR4jdvDjdo58Gf/PEl7Jjt UaxE/h30gHp3V89CIIOhqIhGBBMRAgAGBQJAs1A7AAoJELtDm8wUsvfjMewAn2IH IGjUpsIw/LNVuVSEF9Oz2fRGAJ9OpytK1FQMMNFkDbhkwvN9rjFgG4kBHAQTAQIA BgUCQLnD0gAKCRBRWr1fqVzK5vLOB/4jocx9ubvvuBGbhjzpLNFr0lg630qETI8F bPwdNpfRcM9piNg8SEBQReNtcm82o33W+3pRC2WSLWnsZbc+UDfqZLqaMAFWe+mF h4HjQXDxy8xylYpWFXMEvhwN3cpvzbVm7wCx4bDD76BpmxhGr1jgkWnRNV9y75Gx oWbRH52/+jEdvCqK1IaDHlhDjPaWGe0NmUVjG2wx/H+/YtE+xnDsnOnUypYgPR/l PO/HKDm5elNYMYkbUgOZBnXhhCS3Me5GBn5qGaclIP5RMxemXeLTH+nxxAAgyXp4 z7f/47NVCosS63QIp+TPFlv8B+b2TSHI702ZQCh17pNqHqm5sILqiQEcBBMBAgAG BQJAww4tAAoJEH5cQ+a3aIYCRlwH/2FWPlSsnEnYqbjvMJ8GA05FQJEusciVq8W7 dv8LLL4HPmiwLtaI4Arh+GxL7TIL0YEzdAMys+Wnusd6A1qVj7IjZxzHim3G6RPu UoXUIu+kyBAUy7uGdKuyeIV3pN5xg5utSSnpDgPQhS+K3K2KUrdV2PLs0I4Y++mN 3YYmdf4rpqBhRyd0709Z4sL7WO+BmFrW41vDtv3R1whGjEg8Cn/0zdOIuqo6H4IA 4g6duwWE4Rzq4xyoQ14zhsP/MpnEvwvTDxxv6IkGGT1tAJCn3nYKsh0f59H4LiPK sMsLS3c/R2HuaFxAj+p2nRqT9pGGys4CI4mNUC2y69/pB2So4oaJARwEEwECAAYF AkDFTjMACgkQvkqD8L6ek+L2KAf/ej9glZQkHYb0CADh/Fkv226K97lUOaXfiWbD piveC/iwT1UjFPlL9JX1Zl+uxVSz6nZE1NDWaR8tU5aMFqedI32uVtT+zpYg35Tt XULIMsKpnqsgpsQ1w0QYNem0uWb9zf8pTDgOgQD2pQn6Y2UqQVRGVwgS2RH8190x yKKFyyFvBH7ol5KFM5ceJuv7KNH0MJ3AKMsLxVdnRopHQKQMVrEl3XDVWwXZo7Mv Dt/zOHdWWwUEuuL3uN0RgVCmTD+71FZo+g6m5SpXb+py+4QemA8TSQfeyBG82GIs G7yB99PEo7vEYmRiHnyurOrBm/PQiag2RpPwvip/Jk76WFaWhokBHAQTAQIABgUC QZ43YAAKCRCyqy0garY05acLB/91HDMx+v2nF6hthq7OO659cESMBPOiBxiy7ce7 XNjJ/wt7bbOqcn+odwWUYEsc5YZGrBdgC0MYovFraUHCVo1lV3opVVZoALDNL3wt XQOC0dXRoUj2aSrZkpp+WxT9rsDnGLv0KcmFM3UcpKWvBSwIvRpg9/NBzeEirnoh 9bQXHkfMmn/UysOfC5Jn7KzTIj5wWg/Y26uBZHeudG2xxHrIwe8xSpAX53VizIBP Ed50DARuy38OVQrQ6h+6mJsEDFhnSvbFVwEOt/ZjyhRZpkkNasXvBxtFWv9IyiIv /tcOSADUJCleryIzQWlBJUpq4e5HrCgM8buQTimB8Z4q6+SRiJwEEAECAAYFAkRT RMEACgkQdntIq/8gahCY1AP/UoUeDBJtjV2IgzJt+np4+0kHRxuTwalIgDvbLwgf Rj+GoOEWZfKFCXFtaF+ymXsGKlf+/KU2FmHcKDSNIw+/fj+Pzv2SjjKg4MGP5k0n xRRPbpV6Xr9N5EHKPbsP6X2B9cKTNnXRwVBHhBqEC23rutMWRTdZ9sRzoH47GdcY g5GIRgQQEQIABgUCRFM8EgAKCRAyKyKXH4ocQRkqAKDH/pID8abw30Q8w9km0bcs UaWFiQCgq/v7PFHkTJYnPdVsnCg/LA2X7OSIRgQQEQIABgUCRFM8GAAKCRAyKyKX H4ocQbQxAKCVqJFG5x33jGgZmt7gD0epoVOwaQCg04BLiEgE7BFxh+v7yvBsU6kO UL+JARwEEwECAAYFAkRlszgACgkQ86Tl1vEaQXGs5QgAr2dePAIXSrtMNtSIPVgN RjE4LgE2qLRplztMrJuChQJZj7ZFnA9iUVZMxWfsJ+MeT9yMEQ26wjTM2wh44Pko 1vlB2g0hr5ROKnfvQh+jCMtAmepzYPtjzWLCd/C0bmFdfKwQpRjo/7GnRpxz7Hks 2szKoTwKSUak+qS8af/Eb34RTpj26Wno35kkKUbMAhp1ilAJu+IQzysXzEv9WcDb fttLH/CsVKQEpiiJdVo4X/wTXuWYUthGKEGQLIgJ65EWSSgx1a5pDblpdMqgIrGr B+DZ27Nx9B4ak5zeHetKUhdlXebGMmJnEjpbhWOUXnjJfkfuXoQ5PDquUdhTdI3j eIkBHAQTAQIABgUCRGWzOwAKCRDzpOXW8RpBcbnxCACAmqHbxmlYZqRQZHEiLlt0 vnuvYiR+WtYMB/MV9GMSA1IcOn6y2HA72oSsk369Kvh/3q6A2bSDi9C68ZP/qfqi YZ8+uiBOwsRIWT2TsPVv6LhZzMDGclp02QAnthBsn257KrNDHRzt2RNYXnrzKDLS btr44U42GW8544S+e6US8REOeA77lLSTsBFc+9fOro9iqpU5szPStXcu3JNOEu6A 0qhVRXBp2sg9+gkdljkZRMoTkesf6snSXSBE+ycZ6s2vJmVRkTSW7p1RqAf+4kM3 3+GvIZ8dFkhfpmR8AXUYTuIlyFb+ZvKDj8tCe889pO9mgHYbR2yJtV5RWIVHjqpW iJwEEwECAAYFAkbuwIoACgkQ5RUoJTMc2l2ADQP/QiZWZo+DE0hHN/ijzaz1Vcba RKesye29Ivux7wWcEixPK9To3o3w1pYSVIGTs4FG3qjsajK4APjEGa+XNHuaQ0NA a0R6szyCGP6h0i+gINeNDv5ALu7+ujiCFhGmWbFIaIxjNwGQ7BqbWfhVkLk68lXM fzeJCyBVQakzPPTf77a0JEhpcm9raSBTYXRvIDxocnNAZWMuc3MudGl0ZWNoLmFj LmpwPohiBBMRAgAiBQJPNqMMAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK CRBPLNPYJ5PPLaTEAKCOn9syBppKFeIj/Wm45OdtBi6hNACgjOD9iX7MgHjYnImS 7L1z1/2Th4e0Gkhpcm9raSBTYXRvIDxocnNAaWVlZS5vcmc+iGIEExECACIFAk82 o8YCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEE8s09gnk88t+0gAoJPA zsRMCIHm7GYpCp9c4BYRtpecAJ95tBLrOAI0N5NTj4B00gWEF8+QArQZSGlyb2tp IFNhdG8gPGhyc0BhY20ub3JnPohiBBMRAgAiBQJPNqQhAhsDBgsJCAcDAgYVCAIJ CgsEFgIDAQIeAQIXgAAKCRBPLNPYJ5PPLdUiAKCdX01gIU0tNV04Uv9WgRpAMMdM jgCeNBgFo0v9alY91lJZ4bGZMXS7mPi5AQ0EOyYszRAEAPHU7Idc6uJTz7IhkQCr m5UV85J/5amMzCyv+b5k8IrG8xWBBN+AbL/n3Ve47q6knc3olz5cSr98lC1o0jZ8 /u5WJIc+MJcnJwNLmRiIYrRRJ/tnzCTu3Gr8WchodG0P2jbhescWQWLhO60tJtCO +H8O7vaMdAF0B4xwKAycrJcfAAQNA/466weykqJVlteAD9LRQ10cY+73GRRvOMQ8 c/T3pftx0W6Bhg/xOsCtI29CUhYzL3pBuALZZbjIIFzT0xVHmMsakFfXV32s0aOi tsm11YShhsOET6N3a29S+LU4t2mys5vcskDt0L73rotvtan5WHqI+pF+zj7si95Z z71IpjmuTYhGBBgRAgAGBQI7JizNAAoJEE8s09gnk88tMegAnjUEW1FavnXM+rVg Ln0edjW0+EBUAJ9r3AFbkHwm1E84aDQXsaLjWVwWEA== =ddbo -----END PGP PUBLIC KEY BLOCK-----
<peter@FreeBSD.org>
pub 1024D/7277717F 2003-12-14 Peter Wemm <peter@wemm.org> Key fingerprint = 622B 2282 E92B 3BAB 57D1 A417 1512 AE52 7277 717F uid Peter Wemm <peter@FreeBSD.ORG> sub 1024g/8B40D9D1 2003-12-14 pub 1024R/D89CE319 1995-04-02 Peter Wemm <peter@netplex.com.au> Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A uid Peter Wemm <peter@perth.dialix.oz.au> uid Peter Wemm <peter@haywire.dialix.com>
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =7AWH -----END PGP PUBLIC KEY BLOCK-----
<miwi@FreeBSD.org>
pub 1024D/B1E6FCE9 2009-01-31 Key fingerprint = C022 7D60 F598 8188 2635 0F6E 74B2 4884 B1E6 FCE9 uid Martin Wilke <miwi@FreeBSD.org> sub 4096g/096DA69D 2009-01-31
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =S3Qn -----END PGP PUBLIC KEY BLOCK-----
<ariff@FreeBSD.org>
pub 1024D/C5304CDA 2005-10-01 Key fingerprint = 5C7C 6BF4 8293 DE76 27D9 FD57 96BF 9D78 C530 4CDA uid Ariff Abdullah <skywizard@MyBSD.org.my> uid Ariff Abdullah <ariff@MyBSD.org.my> uid Ariff Abdullah <ariff@FreeBSD.org> sub 2048g/8958C1D3 2005-10-01
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEM+MioRBACP2lgLXXL1cIqZ8sdgUMaon8gBQWTn40tjTV3N6GtR+NUYbQI2 Fcg43aopA9VVoeVyBlCSAyaiLTzZkyg1XRDqsjz9BnRWotwTX2e26ndVgsUzmXs6 NjBcCYYNfVQ09BN3B05FRlPRpveMzCkZCFmWJCzjAYBMg/60fSia2In4twCg6Pr9 Bp/eR5Ny9z4WzpIsynAt6rMD/1pDoV+FbZ6iw80Zq7pdyspPdPCRIzXhYsoe5uTX kjWRWixctbphxgvMheQWZNPNhDyDo/YvuPa2qtrHCDqRYSgmAHPC+NWfyoJhCMjG WMjcW9wWZ0j2Oc2uCTvficrGKF8U9ol6E+x6tlc5Cw2jjrPkwJCd70W9SByrgIdv 51bNA/4nBw7S9grYcnKChYu9mGMsAixCXzMeIVc043Y2SD1NBg59ZNiaSkmRyD6E dCYRDhQeF2CePV3ZhlXDxOm6vD2l4H+9sQ1TRlEP/ARejwJrPPRO+plCf8pLDgj+ 78Kj2OlEwC+ziMdXyk8W91FhtCCDXQgDnf3ND/h4IWTzrVD0dbQjQXJpZmYgQWJk dWxsYWggPGFyaWZmQE15QlNELm9yZy5teT6IYAQTEQIAIAIbAwIeAQIXgAUCQ1EY kQYLCQgHAwIEFQIIAwQWAgMBAAoJEJa/nXjFMEza1FsAnjbSH6NqUl+VC42MGNYG 6xGCfJoxAJ93L2Zf9C/ug6afFr4Bh/HoJbFiOrQiQXJpZmYgQWJkdWxsYWggPGFy aWZmQEZyZWVCU0Qub3JnPohgBBMRAgAgAhsDAh4BAheABQJDURiFBgsJCAcDAgQV AggDBBYCAwEACgkQlr+deMUwTNqW7wCeLHdcpasWMJgoqfLIM8PTJ/UlZ28AoLF0 V2UMd0CdWCANmPNdZcME6jietCdBcmlmZiBBYmR1bGxhaCA8c2t5d2l6YXJkQE15 QlNELm9yZy5teT6IYAQTEQIAIAIbAwIeAQIXgAUCQ1EYnQYLCQgHAwIEFQIIAwQW AgMBAAoJEJa/nXjFMEzaMs0An0gHq10v/5mnLWBYqnwZ+SnZNCYbAKDaTpCa6ddQ 7jdr/lmi8XwK+blRqLkCDQRDPjIxEAgAudaX6QqmUT7UjXmxjlNr6wdDT0BDCu9H ZJuYt9Nf5V0Yd9ExfhRKh2YoYoW0790gka92R7uvrs7FJiu35KrYvOUjmwbouVf8 Cg2fQqDcw0Lj/CD0meEduZOS4moxv/5GcJc2vsQ1BDsRwX0DmLQYXIaqIsRSo4U4 KxWi/zZC5TF1Iwo7JyGY1Gc1SMZuWeZC/qx8bQxvkLx1q3qyZybjUtE2WkfqH0bI /XCpN5kxDciq/U1IP0H2pU/Md/OAvylKID6uR9yPh9kaOOhcvmOID9oWIMbE8a7x eAQ0QkEVpoexA+5DbUarPzjfqUprpZCydaE8s7Gzy/ocegAYqiGQKwADBQf/fxph 6IW/Be5YFg15+9wZ+1MlEszXw9pZnkLU4Ypwz6ksNjrbpHcEbBdK45kw17pOL+WW Yie5tA/b8ndzoga/qyaOa7lH3b4pA78GMhGd7gSzrziNkuE7Yc3WNqjpRVYmVgH+ 9K0rjJaK55hhKDdEGj1jMXNXAXtXra70DNWZt88HLs85goWm7vnnsiPBgOVquYEB /q5ExD/E46TkxF5/Kl02LyHTcyhWsUjksmoEi1O/wxXOAxi/GM3QRrkbF7voaC+d Og5pxQXsftoXsk5fBEDBD1iCqqs1m2IJIUwuMxVlcc+IvD/eYejrtNlkzh5NLash evj4a81s2LLPh5qd3YhJBBgRAgAJBQJDPjIxAhsMAAoJEJa/nXjFMEzaXHkAoLi5 OZgXddFLJYSXXnK3iwzYho2tAJ0Ze7tHvJd2md4VSth52CSBYDEemA== =2tPN -----END PGP PUBLIC KEY BLOCK-----
<tabthorpe@FreeBSD.org>
pub 2048R/A473C990 2010-05-28 Key fingerprint = D883 2D7C EB78 944A 69FC 36A6 D937 1097 A473 C990 uid Thomas Abthorpe (FreeBSD Committer) <tabthorpe@FreeBSD.org> uid Thomas Abthorpe <tabthorpe@abthorpe.org> uid Thomas Abthorpe <tabthorpe@goodking.ca> uid Thomas Abthorpe <tabthorpe@goodking.org> uid Thomas Abthorpe <thomas@goodking.ca> sub 2048R/8CA60EE0 2010-05-28
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 QzgBefclBFqxGuJeC7jwAK5OvvZU =ie5/ -----END PGP PUBLIC KEY BLOCK-----
<eadler@FreeBSD.org>
pub 4096R/8FC8196C 2011-02-11 Key fingerprint = 49C7 29DF E09C 0FC7 A1C4 6ECB A338 A6FC 8FC8 196C uid Eitan Adler <lists@eitanadler.com> sub 4096R/18763D51 2011-02-11 sub 4096R/DAB9CF9B 2011-02-11
-----BEGIN PGP PUBLIC KEY BLOCK----- mQINBE1ViJ4BEADS5XnDW3WofLKwdoHrUPDJWQSO+2LHIdnrogGmieI27YX4sg/A ZjELRljY/OOzEDIz7a+KbQ2ErffI/fpCpPy0ajvbd+9e6l9pDJzCPmTXuITVUgQ7 5voR5QNiOyUNd/h4ZnW0Gj1hbosHWH2ngnVTs5QT8WYvKyvzhp2P2Wq5pPupuCtf x1pr8YxypYjwP7n4VGQerhs+o5Fa7NH+x5V0XEw0NqUikk8wSMx8Zrikct0hLiH/ ci6RavOtFFc4EVXDY1T/8ZaTLKivqxqmN2ZrxqirxxY34V6x/eT/WBEweFQuLI/2 GIZ6OLuTaR72xlnGNRXTNS3LUGtcJ1sxpwxCNJZ309aME5phGy3b4qjdeeXSqtmx TdB4Tfzm+zFOdCAWWZ65w4tkefLSOpXMcMu378VZbr/aS52+Ulubwsz4fwjszGe7 8HGksm6UNdYl5vOoKpSrFaHa+Sp9NDbDHHOi1VeVQQ9bqBAKabcIe0dMuinMhm6f fLwTrb7QAdaz8FnBHdLkBykYWq+JO1CRF28sVsJdwAQd1hmPk/PssmAdUQCkVNBC 18kf9doGd6xBMLCwF4h0IIpckfv8aE72Rixp7x2zGqm6W6bEyF5N0E2h79iYfhaj K3TfDUtWvOgGzhrvMPyPiN0vlro574e02RsnSKmv7uhNI+uyGjHGHLfQXwARAQAB tCJFaXRhbiBBZGxlciA8bGlzdHNAZWl0YW5hZGxlci5jb20+iQI4BBMBAgAiBQJN VYieAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCjOKb8j8gZbNyrD/9O VSV99QPQjX0PzzZkbFLphRFN/oZN01V4+4Acr/KjEP8onWuEhL3/v6KiUxF9rmfE EFlFHIoP5/U1Zb+g71kW6M460ayH+1lhBmSa97m9245cgkMi4q5DkH0x5itLDLJj rmG7Lm2C1ccn+bzfu/V1J98dWoQBGQDdCbKDL4J/lmdd877d6Rf7OX4FUNbUYDSC KgFIbbjeNjm+VYrfT0DM7f8Bq0y60NnUqPRPKFZE2PF4PsryJuRyy/ogeVmV+uA6 +V+5JGRDC2naGKSZwSqMqovGPR2Ek48bchwgqxSXdMbHCOMvxcMHm2n4gWjh6nlp mqnlTn1aD7ClUCQW1vyJjY9WRLZ9sJCXpzKf8XxFrQDRaRwvXYo02PekSrtB5RkS 2WRoaaF6sVb1qOsPXRImCgJov4JbP1f9kO/NT+tXrh/KYbhyIlPT+5e8CkFmFMgQ Gl/d99nJy40Vucfo5hsTHNtVatSF7tyW+ocWJz1dEX2j4F7IbVkCbiT2uZ8FT9gy 2McWiTwzrf0tTHlMzF71W1ErpAm6cEQFM5SQZmvQDZAGsY1D1JYcWWQXVtxcin74 p/2fNuk1Z3iAzi3Lh8cY18uINJMSFDnb2L8yoXXHpfNpIwxpLIqC6LuZMF+3hfFB w/MWDAvEnLX7erpVQWHvrY0tf2+7CNFy/jrDtnfaKbkCDQRNVYieARAAnNmiKgJJ K8Geh7uJczg7V/AskCiKkgNzAXGxNQuJaPv49uD9NWefaDtciEV4QWXkoW5jZWFa PrkXJ/7y1nfYUAA6nN7NyG8UReZK99hLmUhjWrOyNeq+XYvCymf4ZM1yPRAJAp0v x28mwFKSuXMvW8oUHcOT3SZomjamuN4onNWMJjolV6pRoQ0xeBCcMAl0zdQ0RS1T mQ17yrSi6xvJYP1vywjhG2J2oHax8jcqQShijT9DEjjUoM4hgnv2HAjMhqM5vX9F sw5IBsDa3/tfqmbSVzTJCZd7mkVhLRtyn/alz356DfYPD9eSC3rHUZGGL7BFgC1m /t9e5tEN2fb1SPHcpndna9hVMEReRX6GbTUPuhFE2PzKIVm0nuFCKHeQN/S54x/e uDcCyXvVPmSwqTrg4yV0ZEnj3fKFCwv4nqO6uF8/vBceUzt5uJLmESXnE7fZr9JE 2hiY0DyOmYxapiTZPtVqGm5FGa72i5tGIWza0P9tSO9/UxIG5lLXMMa/masNaGAr ++ZT/l9+nH4ZMY+triOHCCZZDOE8fShREPuAnMtVQK+GZ8GPkY5zkkUmusdjb+6p DzQUq197bVxps/poNJ+IA6yvUQiM8y8ybI1W0LwfSOVBxGh5pqPQ1zvTckrfEfF+ Lw7tuG0YZDti7e0r4SW7FkfghKiQ9ySBVb8AEQEAAYkCHwQYAQIACQUCTVWIngIb DAAKCRCjOKb8j8gZbDTpD/45aUGMyOJYrEVPrlFomTlX3FHwDKvBqivTa/9ZBLo8 Byr0i+VTdNhKSNq/bd0q0YiNIkXv4FM56ghSOonEUD2MYcrQ822df1Y8AUbMpx1w UirMCTyvPjr7THEaTpFrk705lnWgFfyFTYrlk3m6a4s1T5TByABToXdPW4xsL3vt jDh+H1cb+qUrOo8FluAU18htBvFOnekY7a1oB6DoxTT1I6PKaXDQIAihvIknNUu/ 7xn61b2Wf69tHyHmkdLMC9cDPi1uiW3I/+9W3Nopa1tkV+IQz2R5TPsz3BYboAhy C5zS5rMzx6cXRtw8KdWoFkYArvRhHb7zJPDoPAzJuxvCCdRR1CQZySDqTg+fXvLN d+wgV/zPSJWtcAGeDhFJ1a/M+5lLlT08v21VhLDWDW2tBIdn3ZFJhjZDC1X8wvJB CVL8TWRsG700OJyxiGcX/yKBi/T0k9vAAM+1YQEQ57cO6SYm8BFaQc5ceNVuLsZD 2FwEOFpuDWgysFFjWA/Sj+be/ZiGwiIDVC9vG2/61yg6N2MavcmwFzwjZLMW2W/0 QdLasAu8jbnUaesl/ZN21iJVsLHaWe2u4jc/Kpt2Fu4KY5N8UxErse7y0PTLJ4IM hjQsMM+DzmNzCnqxqugiGGg81kr1W32wtb98f2+oVT2bp52sXFYvvmbB/W0C2wRt FLkCDQRNVY40ARAAswIWqBiZsAXRXU1T8yf4HIh0QBSlMkW9WQcrJJVtIL4EUUqs 6kjtEjZsf3oHXWvx0GVajztBJW3NYInzns6Qi/QRSMr0A6l3T7+gGhInDiZUwEN2 883BuwwFooeDij4Rr5qVJhsuCZ9uS8a4Lo0C2FRk4JZvyBZFA2lwx+bm/4dqn0YK PeWnkHiahufnQ0sy4Q0cFSzn4Pbj271hv5gtjbW3CXbzTBJS8NraK7PejaX0eche n8vxXjkqNDHAHM2xPFbIWk4iTkSb2XHf6leZ0IBHZw+SUO2d+fsolOazkUcjY8XZ fGOL8wsHKSPUo+kRdRFYtm3hPH2U0KyLKjpu7R/LEZh3LWh4n3yGdpBH3nfDDa/U g8+k9EtvZJN+yVyESkM8hyvQuW86NbEpYaPCWiuZ3lSwQjpyKaXWa5mJO2oCjqA1 HeKEvd7WZ8apahl5EFZ0WDIRHLBe6z8pETOHM48YWY/l/aTxmLdWYVNSJLGbsm4+ 6tYgGOhuz9QzGjrK+Jdq/Rts3eeJd1T9K0gCxdp/NlM8rttNPHHT7fig31oHMSy9 o94DeuFYw1LW54TJF5jFfSETgAfer5pggI7Dx6tPcCKapidYTJEFkDfW9tj8yNie v4JhMbZi8Fq6ybsspWWi8Lj7iMCXCPs6vVNQQbJ8Y6Bz1Va71TwrogHyl+UAEQEA AYkEPgQYAQIACQUCTVWONAIbAgIpCRCjOKb8j8gZbMFdIAQZAQIABgUCTVWONAAK CRAAaoRg2rnPm/pfD/9J9AAck3RrG7jGUY21fttzS3iAn4eZbEEv2A8TQTEgF+VD 6iSmZlHzEF8kdRhglhJO5nHN7Z6nZVeUAKR2fYIcmglRUdI17cooHfuVSVjp/MMG v1Q0kQiQCCjY0Q8W1xytHm2uIaxrtK121kLmlUK0I89PfM6cYET8bBUEN2JZBAau nV+g+8lXEfFcWiT3FYUmZfLkZjFKuFGRaWmqVqoUKVQelvLHU7wcZDTPdYwb71Ub jP+3yMph36ugXhZ0dGxOTEH4bSRkX2SEiKV4f5VQxe4JNdVT+tvGDJxOC1iC4Q3n yQYQox947r1/S95uAB6y2MfYKgJaUbfJkK1W6l47bF1ZLAKYWtY/VCBN0Fcx3PkU Ks5jC8rmbnwuanWbX98RzRFEDRk2h4q4ZWN7r0Lo8J5pDZyovqnFbQXLPigRx09Y YQ9h/UKQJBc0lsD1Q7NXn9gu3lnmNdta+UbTgPe8tb89vLHgpMJ4GaFrIhU1keib cJD3BY9bb+iM/WKucnuMqURBUf67ISfWN1NbNAz7X5jWlmjSMJlH779I94+0XM2Z M/j+HSjHWPl7ArT6mpGJ4YIZPo6Ap9KNbPPzNld7xd2hWAuQmETrB1Isvy5F1t8c GgzhvJZ/WjdTuaQpdfE7OsN5IQMjiJ+9fT81P2dX3/TVuTQiRKqdvPshOL2HQ6qE EAC/qFVKf9Of+wU0zeonMEbcsU6saqPNpBNRLhqBAEMonH08xvoF1T7INvg74ven PDtAfnfiOC3j7hRqfjDTauGk9BsYH4bxG/7HiBoz1xs9SJkNdhBKoDpgP6lyd8c5 DjfBj0Y9wTZVVM6Bhv/1ju2L66JyuBe1vxCqVGosz9/OJH8aY5VheIRWJ+iJm5qB G5A/sYflOEJAfZXiS17QuVFlG78j8QUDUX/uN79tMY9GulZnobNqtp5jgJqSc6fb /ToY8HvKMNJlfsKJSDrFtWeXjBMTtzGAJWuyxMV97VyXF1pxVSCkXcnQ03MAdBXD gYJV89XJIPdi7R7MZb0niI4QYWOSTmeyV3jo//mxPBuC0Ozr+Hw6dp8PbKSk12tW gSXqzsI33b/8qwqPX4njhrh3aJm4+BfIW60weTQUgaVJu86OnevEJpUsen0drXTb h8StsIH7vc4bOcSvNUCx+palS3vz/Q2K6lvEe64Nzdanbq3yC3bxoWSnuMYyoJEh k4e7ViPz9XVt+ZPVs2DlDnkSe4LA4sUfjzRdn1MIivqu4r8AAitxH8IL0Pjl2StF SfRbR6zwey5WZInnoDjYjPFYGAIygVllxOv3u81lHqK8tcxWMQrKTS7Pl2FVMlOc +sVQiiwYDqAYyG8DgM0FX7dOC0bTQOSHPJe4E5+xGU7v1g== =SP5X -----END PGP PUBLIC KEY BLOCK-----
<shaun@FreeBSD.org>
pub 1024D/6B387A9A 2001-03-19 Key fingerprint = B506 E6C7 74A1 CC11 9A23 5C13 9268 5D08 6B38 7A9A uid Shaun Amott <shaun@inerd.com> uid Shaun Amott <shaun@FreeBSD.org> sub 2048g/26FA8703 2001-03-19 sub 2048R/7FFF5151 2005-11-06 sub 2048R/27C54137 2005-11-06
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 NnNrFxKZ =zwEb -----END PGP PUBLIC KEY BLOCK-----
<brix@FreeBSD.org>
pub 1024D/54E278F8 2003-04-09 Key fingerprint = 7B63 EF32 7831 A704 220D 7E61 BFE4 387E 54E2 78F8 uid Henrik Brix Andersen <henrik@brixandersen.dk> uid Henrik Brix Andersen <brix@FreeBSD.org> uid Henrik Brix Andersen <hbn@terma.com> uid Henrik Brix Andersen <brix@osaa.dk> sub 1024g/3B13C209 2003-04-09
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =79B1 -----END PGP PUBLIC KEY BLOCK-----
<mandree@FreeBSD.org>
pub 1024D/052E7D95 2003-08-28 Key fingerprint = FDD0 0C43 6E33 07E1 0758 C6A8 BE61 8339 052E 7D95 uid Matthias Andree <mandree@freebsd.org> uid Matthias Andree <matthias.andree@gmx.de> sub 1536g/E65A83DA 2003-08-28
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =PvSJ -----END PGP PUBLIC KEY BLOCK-----
<will@FreeBSD.org>
pub 1024D/F81672C5 2000-05-22 Will Andrews (Key for official matters) <will@FreeBSD.org> Key fingerprint = 661F BBF7 9F5D 3D02 C862 5F6C 178E E274 F816 72C5 uid Will Andrews <will@physics.purdue.edu> uid Will Andrews <will@puck.firepipe.net> uid Will Andrews <will@c-60.org> uid Will Andrews <will@csociety.org> uid Will Andrews <will@csociety.ecn.purdue.edu> uid Will Andrews <will@telperion.openpackages.org> sub 1024g/55472804 2000-05-22
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =inzo -----END PGP PUBLIC KEY BLOCK-----
<dim@FreeBSD.org>
pub 1024D/2E2096A3 1997-11-17 Key fingerprint = 7AB4 62D2 CE35 FC6D 4239 4FCD B05E A30A 2E20 96A3 uid Dimitry Andric <dimitry@andric.com> uid Dimitry Andric <dim@xs4all.nl> uid Dimitry Andric <dimitry.andric@tomtom.com> uid [jpeg image of size 5132] uid Dimitry Andric <dim@nah6.com> uid Dimitry Andric <dim@FreeBSD.org> sub 4096g/6852A5C5 1997-11-17
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 BBARAgAzBQJDWOwGBYMB4TOAJhpodHRwOi8vd3d3LmNhY2VydC5vcmcvaW5kZXgu cGhwP2lkPTEwAAoJENK7DQFl0P1Y8XIAn3u4wVGHGp48vrlkD7LrAkgMa4i9AJ4k uTexj7XLEDuqfFKKSKhzDqqeYohGBBARAgAGBQJD/amIAAoJEOYLp9vIqq1APR4A oIPX7sBet1QQKNvCs0bLDFkjZvKTAJ4v5okd559cL7rO75QY/wuHRwpgTIhGBBAR AgAGBQJFyxVpAAoJEAcwX4a9TftQy4EAn0wt9VUlf8wXmumsp1C5i4NqISYyAJ0b VuDsgxkGlhnxL+FuStrueQDWAIhGBBARAgAGBQJF8/UvAAoJECmOj4RKTuYj1kkA oIkd3JjzUCNH7wInYbSqbqMqF7hCAKDKE8CZQVY9lI8pYxLIPH90O31Fm9HTX9Nd ARAAAQEAAAAAAAAAAAAAAAD/2P/gABBKRklGAAEBAQC0ALQAAP/+AC5IYW5kbWFk ZSBTb2Z0d2FyZSwgSW5jLiBJbWFnZSBBbGNoZW15IHYxLjE0Cv/bAIQAFQ8QExAN FRMRExgXFRkgNSMgHR0gQS8xJzVNRFFQTERLSVVge2hVW3RcSUtrkWx0f4OJi4lT Z5ehlYWge4eJhAEXGBggHCA/IyM/hFhLWISEhISEhISEhISEhISEhISEhISEhISE hISEhISEhISEhISEhISEhISEhISEhISEhISE/8AAEQgBIAC8AwEhAAIRAQMRAf/E AIMAAAIDAQEBAAAAAAAAAAAAAAIDAQQFAAYHAQEBAQEBAQAAAAAAAAAAAAABAAID BAUQAAICAQMDAwIFAwMDBQAAAAECAAMRBBIhMUFRBSJhE3EGIzKBkRQzUkJioRUk sTRywfDxEQEBAAIDAQEBAQEAAAAAAAAAAQIRAyExQRIyIlH/2gAMAwEAAhEDEQA/ APYzpJ06SQJzDcpHkSTFsGAfgyNI23UfcTlP7ezLvhrT3qTjcMwp2eELOFZQerHA gGxarhuwA4x+8Mm8PsV9Fzdc3lzLZsUWBM8kE/tLHxcn9Uc4EMAR0MWBp1hEwaCT IiESr6ku7ROf8eYwMG8fl5jabPyxzKei+PUTplt06SR3kyTI1KYtcfMq9LBON/p7 Me+KrOlw1m7cAFlhdXU6vtYFlbaceZ2njxVkaj1C59Y30wu2jDcnnH/0ytf6hZfa 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 p3ZoprcVEgZAeA== =PPl8 -----END PGP PUBLIC KEY BLOCK-----
<anholt@FreeBSD.org>
pub 1024D/6CF0EAF7 2003-09-08 Key fingerprint = 76FE 2475 820B B75F DCA4 0F3E 1D47 6F60 6CF0 EAF7 uid Eric Anholt <eta@lclark.edu> uid Eric Anholt <anholt@FreeBSD.org> sub 1024g/80B404C1 2003-09-08
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD9dFQARBACzmGtuaKFqQwoRV32TI4ANBPHPlXkKXJ1WYQQkahzP/VfzNOUH VbjIMQqrNPawOcrFyEFuI/FJLWXewhrcrM+of831BXWqnQ7ketGqKUO3xT18N1MG BVCx7F1wpPW42YkhFVAubZ5tyHLOVSc+iJZVGgZ5mUi57odqZ1l+rnqpjwCgnXx5 tas++vGBPk70vcIP+ZmswGMEAI0Lfr7Qy42P6hbYJZpk/NVAvXMZMUyK7fti2lR8 BCOQr8lSdFUZMAqOhlGSfr75Lp8YhR4R4qCSISPXIbtkpYpS5A4YOk22qljLfyrC vki3U3Qum1eO2L67jswb+hQ7pCeaddNm9Jmsg+CJOZl6nfDIJpC8yoXH76W8tXAm 1DgiA/96RKTseIR0z79ahlxX5HDr2A5bPM5CZBdPba4tSuFIwd28HVUdLhJmsGpC uVnQ5VnhBh5coNBhcb+ngZCOr9NvvyvwrxdYYGvuABeWS3v2UGx7XnJQmBQubWYq CEk3wScZWhEoFchvPEVfXtzNBjI6sF1FWMYkAhHaYiH4M7rBiLQgRXJpYyBBbmhv bHQgPGFuaG9sdEBGcmVlQlNELm9yZz6IWQQTEQIAGQUCP10VAAQLBwMCAxUCAwMW AgECHgECF4AACgkQHUdvYGzw6veNhgCgij4I47kRmhRkdzJeftLig2TG8/gAnRcb r7ah3d3nPKNLRN+nQDTp0uxctBxFcmljIEFuaG9sdCA8ZXRhQGxjbGFyay5lZHU+ iF4EExECAB4FAj/CqF0CGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQHUdvYGzw 6vfvYgCeIy1G5U6YPFK2QZNhB7SazQXwvjgAoJmxWRZr8zKOmcMiYFf1tj05UDhC uQENBD9dFQEQBACpBlENAalxZonZ7K2NU6xiH/qz+XI+ZU6WQh58iUlM0QPUU8ta Ot8uQUL5DT6G5myFDZufYomYrdzaLxuZbzpWzDOFGqb9aWLlHC16ydWbIRvPif0D ar9wFJX3b5DFkVICUYXTKTx/O/VqcpGHH7tLInuipYRapOBrUw1LU87qLwADBQP+ KbuF41ujgb7QfPX5x5Cdg9D9SZAQyxu5TbsSXmc4fuel10QFMdWyMEUW2rMLixYn cWw7AfziHCy3uWOOm1qxm8npYCIRp0jG3M/Jydc8iQTqL59v0/UBOxPQ1pYZxE/8 EOmbHRHe9BQt4pfouuLVKXGzxg3NW6nXXNQVEeOyqFaIRgQYEQIABgUCP10VAQAK CRAdR29gbPDq9y8MAJ0dP1d27SdsNNU4d8nFpwrXfXXa2wCfRvgv8i7ziyodkgwl B8LNmWvWUn8= =2V8B -----END PGP PUBLIC KEY BLOCK-----
<mva@FreeBSD.org>
pub 1024D/B267A647 2009-02-14 Key fingerprint = C7CC 1853 D8C5 E580 7795 B654 8BAF 3F12 B267 A647 uid Marcus von Appen <freebsd@sysfault.org> uid Marcus von Appen <mva@freebsd.org> sub 2048g/D34A3BAF 2009-02-14
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEmWjSoRBACy4CsdR35YB6pGzU1aa1mbTkLuF44VBjV8O9qji80zo/VJs3JL El0wIhM9pg6zObKkzOU5HJFU/6uazzzDnc+A8y3NJL3u+HoX/7c03e3yUZ6xl7PC ua8tO3IAQiB/cg/Ltb6iJa8FflfmCKGE0I2DXeR2vN9PpgQVkJW+/NSDbwCg2Nxm mfeO83a7C28G/MV70z5CTg0EAKdHCkACr+iB1WpOIKEmFkZRD0NXHEXYa6L2kPdY XPNJ893yu5YUmHMFNUdVxoIKaUKpIGPa+V4q6ojAilWJiaEB74W+teqNBzwhzyNv xfp/W6fNJtvC1DJkrxkag0penU9ZROkVEnZajIclFh5la3muxX07Qf2HjGZM3Cqb nz6PA/9gdPecNwo1N+9aX/CGrCw0DC1QVFc1HJqcL3pe2qQkMVDO7sfQkewtQOW9 H2ZrDWlVxIohQ9/+vbKV1uOcJr5+egSGNTCNNuimh9Kp4LYMc1vNouQe1D9fsCXW 2kcgO8FozH0O3uJ60gCak2K06iA+mGziNYLQH3IvjVswivxOyLQiTWFyY3VzIHZv biBBcHBlbiA8bXZhQGZyZWVic2Qub3JnPohgBBMRAgAgBQJJlo0qAhsDBgsJCAcD AgQVAggDBBYCAwECHgECF4AACgkQi68/ErJnpkfulACeI1WVnhrKTq/+O2Djbpuu Nyj/MYMAn0BMDpy4frZjlIMfhazixfk4cbjNtCdNYXJjdXMgdm9uIEFwcGVuIDxm cmVlYnNkQHN5c2ZhdWx0Lm9yZz6IYAQTEQIAIAUCSZwX8QIbAwYLCQgHAwIEFQII AwQWAgMBAh4BAheAAAoJEIuvPxKyZ6ZH48AAnRraNz0aFuSHUFaw8LXjROOTwld/ AKCvawhTgwYKX3YjLzu9Jcc1t3UNj7kCDQRJlo0qEAgA2acv4O4JFQCzgJXhCQqn KHFeEqOcgpKlvIGlgfP4/hVOCms2LK3qk10JpcbDbkBn0cBW7usxvA3mDiF2ZnrY wIwAROI7SNSY60PydR6DXc6I21VAd7hmmcpqkJFXaSMvKkQcq7sAJGlSYVpPuBqZ 1kCIu2vlPBdpT4W1hHxf7l4Q+h2ge4+C2beRv9V9vRVdlXeSqJT1o5EgE5CjZ6sV Eh+9/TQdkRAoGgQG4LZvDuhWfsSkDU6x/soFKOPCdTF/LytW8YZ6asN1EpVJihAe GseQdkwP8iK9Co90Ab27+5WVVrP+xkY+rULOngW2vIwJrWic6nk/a0/0MrPjFn3k IwADBQf/dMsSQncKSSn8Tg9KeeBLftirddz+Mos1j+1PYOc88vrMrHVodBfNtJlG zxAGwFyLtk/yA8/MuW219t57O3W49VYh+I8NenzlRmZr/ahn8t79UD7+SWmy8L5e 3XD2+w9WTj9Lx1V41wFKvxVLItNAik58Oi9MHa/wR1LMRIeGFAVHWAZcxYLLKfGR lYcMmMTY4906sjJ6Z+ZVYILnTR360JdeiZbFdaCFGf2yUoM+HeA2+975CaRagu+N /HZKW4JSsiu15fvaLTPwFG6YXKcHL2zI0Vc5UF5nd9GGZdX9Y4ffBi3aPXgIOJm5 eAf29A6Ne3/llt3RG3TduGacd1WghYhJBBgRAgAJBQJJlo0qAhsMAAoJEIuvPxKy Z6ZHPMYAn1s6Sdc/4Kkv8KQ0KaJNwmkQYkcSAKDLkzy/Ph4mOMm8jO6ZL+Orpo21 CQ== =HKIb -----END PGP PUBLIC KEY BLOCK-----
<araujo@FreeBSD.org>
pub 1024D/53E4CFA8 2007-04-27 Key fingerprint = 9D6A 2339 925C 4F61 ED88 ED8B A2FC 4977 53E4 CFA8 uid Marcelo Araujo (Ports Committer) <araujo@FreeBSD.org> sub 2048g/63CC012D 2007-04-27
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEYxSRMRBACUOhoJNgNPJtP5AcENhALcif0n7o785oCDaTGrMNPV75DdnR8o +mHl4POS1bZ7RYHdo7SHCbJqu0nLO4OCeAagamnK4lW+qaa0KaC6WxBiS2/K3qFe Y4mDMQRPxBNUWUh7A6VpXMBWk8n6ieyMGLiLQj7+d0fImSY3NdX547qZswCgnjln RlpLKFjRIRtNt9RKZQbm0JcD+gMXo+MoUHHKKnSKIQt3u7rnN3Mpnr4OGsa7J6KJ whm6GPX0zHzjKUhXCDOJwaYBpOJYNLTTNS3nKpq7GOkQDg7Q4I89/Q8S6AVwCvX1 N4Jdeebm0jJBrzVNdbezIYEBwL5k+2YN6FcaC1yKBTk3N7qF7/4dmfRNO14qLFaz E7T3A/94lP7YT9FHqmNr9RPuy9rmz1bZhU/7tEimLF2o2Y6ntxsbSY1StVHJj0ln cCNlMV4vrIP6Ce73W51Vw1iKNapQy2113lWVfc6dwLdhRxWDVMNPKW8ESxqrFSJ9 IVTzZvPQoqrXOsuVKTej0MC395UbdiLGWckmsJIYVrPaX+C7lrQ1TWFyY2VsbyBB cmF1am8gKFBvcnRzIENvbW1pdHRlcikgPGFyYXVqb0BGcmVlQlNELm9yZz6IYAQT EQIAIAUCRjFJEwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKL8SXdT5M+o kMEAn26jMz7Tux/fTt8Z6V59+qhhd62EAKCGEPvDrh8Ye46LyJJj2ZeA8sWNtrkC DQRGMUkmEAgAgSVxd8hyDpx7nndMLjTIfpla4/mOP6VSkmzF0Enj1ESzOeTVC765 gtnjjsFq5Vy5Gv3wdLwwDkcCij5FkBCgSi9EBcp5ooFpNfN9UtHT6/2Z9X7laLiS qQtS7xbqU1bxUQ4sK6AdjhOgzdDz8KOeWUjs6WO+/Touq/gouggxMbg/SWjywsfk SkgJ9SwH/o+QXvTEloyTwqwA7ptckvFKeBiyiA8RI/T2wqHUHmRE7YrI+HZz1b8q kPqALkZFoZVgYEVHjIuuuT5KttaQYvAdHgWjgTTjugeCfHj186yQbIG3TOD0ToLc KXFycft7oYFku55Elo0bRS2mxT6/SptmrwADBQf9Gws09t+AcOYUaLH3V8EKLg24 1r/aEfu7tPYMZ/xHmibOkxxxQgJEUAIqE4jZY6fMrwUj4F9p4Q8E3mN/wkpY2qHJ 4yUI71cv7NEOeXLvU3bdS5wwvlEK3obIJZfhzefmUncPQ+pEVdbtoGT2ehosqe4K nw+bBE9q1Q8elF4mr6mNTavSZBs2FTJ84S009pbMyqyZZZ61RL1H0XmZV4s03Ywf tJpc/uTSwgB5I9SiSi1clafGLRzWx4BzToIeHmE70Ycl1PGJQ5kmf2tmTPrVbKCX F/4+S3Sn85D9s3jk6LfxMfLiSzErBkkV/zZaXcNFTPfGZ21Dp6/0IyKF+HnNuYhJ BBgRAgAJBQJGMUkmAhsMAAoJEKL8SXdT5M+omBEAn3t4uIC5dceYeU8j15UnzECK pAWBAJwI/yul4wCtXeyIhg0vYCrExTl5Wg== =3ciY -----END PGP PUBLIC KEY BLOCK-----
<mat@FreeBSD.org>
pub 1024D/FE6D850F 2005-04-25 Key fingerprint = 2771 11F4 0A7E 73F9 ADDD A542 26A4 7C6A FE6D 850F uid Mathieu Arnold <mat@FreeBSD.org> uid Mathieu Arnold <mat@mat.cc> uid Mathieu Arnold <mat@cpan.org> uid Mathieu Arnold <m@absolight.fr> uid Mathieu Arnold <m@absolight.net> uid Mathieu Arnold <mat@club-internet.fr> uid Mathieu Arnold <marnold@april.org> uid Mathieu Arnold <paypal@mat.cc> sub 2048g/EAD18BD9 2005-04-25
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =vtoU -----END PGP PUBLIC KEY BLOCK-----
<asami@FreeBSD.org>
pub 1024R/1E08D889 1997-07-23 Satoshi Asami <asami@cs.berkeley.edu> Key fingerprint = EB 3C 68 9E FB 6C EB 3F DB 2E 0F 10 8F CE 79 CA uid Satoshi Asami <asami@FreeBSD.ORG>
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQCNAzPVyoQAAAEEAL7W+kipxB171Z4SVyyL9skaA7hG3eRsSOWk7lfvfUBLtPog f3OKwrApoc/jwLf4+Qpdzv5DLEt/6Hd/clskhJ+q1gMNHyZ5ABmUxrTRRNvJMTrb 3fPU3oZj7sL/MyiFaT1zF8EaMP/iS2ZtcFsbYOqGeA8E/58uk4NA0SoeCNiJAAUR tCVTYXRvc2hpIEFzYW1pIDxhc2FtaUBjcy5iZXJrZWxleS5lZHU+iQCVAwUQM/AT +EqGN2HYnOMZAQF11QP/eSXb2FuTb1yX5yoo1Im8YnIk1SEgCGbyEbOMMBznVNDy 5g2TAD0ofLxPxy5Vodjg8rf+lfMVtO5amUH6aNcORXRncE83T10JmeM6JEp0T6jw zOHKz8jRzygYLBayGsNIJ4BGxa4LeaGxJpO1ZEvRlNkPH/YEXK5oQmq9/DlrtYOJ AEUDBRAz42JT8ng6GBbVvu0BAU8nAYCsJ8PiJpRUGlrz6rxjX8hqM1v3vqFHLcG+ G52nVMBSy+RZBgzsYIPwI5EZtWAKb22JAJUDBRAz4QBWdbtuOHaj97EBAaQPA/46 +NLUp+Wubl90JoonoXocwAg88tvAUVSzsxPXj0lvypAiSI2AJKsmn+5PuQ+/IoQy lywRsxiQ5GD7C72SZ1yw2WI9DWFeAi+qa4b8n9fcLYrnHpyCY+zxEpu4pam8FJ7H JocEUZz5HRoKKOLHErzXDiuTkkm72b1glmCqAQvnB4kAlQMFEDPZ3gyDQNEqHgjY iQEBFfUEALu2C0uo+1Z7C5+xshWRYY5xNCzK20O6bANVJ+CO2fih96KhwsMof3lw fDso5HJSwgFd8WT/sR+Wwzz6BAE5UtgsQq5GcsdYQuGI1yIlCYUpDp5sgswNm+OA bX5a+r4F/ZJqrqT1J56Mer0VVsNfe5nIRsjd/rnFAFVfjcQtaQmjiQCVAwUQM9uV mcdm8Q+/vPRJAQELHgP9GqNiMpLQlZig17fDnCJ73P0e5t/hRLFehZDlmEI2TK7j Yeqbw078nZgyyuljZ7YsbstRIsWVCxobX5eH1kX+hIxuUqCAkCsWUY4abG89kHJr XGQn6X1CX7xbZ+b6b9jLK+bJKFcLSfyqR3M2eCyscSiZYkWKQ5l3FYvbUzkeb6K0 IVNhdG9zaGkgQXNhbWkgPGFzYW1pQEZyZWVCU0QuT1JHPg== =39SC -----END PGP PUBLIC KEY BLOCK-----
<gavin@FreeBSD.org>
pub 1024D/A093262B 2005-02-18 Key fingerprint = 313A A79F 697D 3A5C 216A EDF5 935D EF44 A093 262B uid Gavin Atkinson <gavin@16squared.co.uk> uid Gavin Atkinson (FreeBSD key) <gavin@FreeBSD.org> uid Gavin Atkinson (Work e-mail) <ga9@york.ac.uk> uid Gavin Atkinson <gavin.atkinson@ury.york.ac.uk> sub 2048g/58F40B3D 2005-02-18
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =w86g -----END PGP PUBLIC KEY BLOCK-----
<jsa@FreeBSD.org>
pub 2048R/21AA7B06 2010-07-14 Key fingerprint = 5B38 63B0 9CCA 12BE 3919 9412 CC9D FC84 21AA 7B06 uid Joseph S. Atkinson <jsa@FreeBSD.org> uid Joseph S. Atkinson <jsa.bsd@gmail.com> uid Joseph S. Atkinson <jsa@wickedmachine.net> sub 2048R/5601C3E3 2010-07-14
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 wmKGlCQF5zC50z2aIiJy6w== =99Ow -----END PGP PUBLIC KEY BLOCK-----
<jadawin@FreeBSD.org>
pub 1024D/C835D40E 2005-04-13 Key fingerprint = D090 8C96 3612 15C9 4E3E 7A4A E498 FC2B C835 D40E uid Philippe Audeoud <jadawin@tuxaco.net> uid Philippe Audeoud <philippe@tuxaco.net> uid Philippe Audeoud <philippe.audeoud@sitadelle.com> uid Philippe Audeoud <jadawin@freebsd.org> sub 2048g/EF8EA329 2005-04-13
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =Ed5M -----END PGP PUBLIC KEY BLOCK-----
<timur@FreeBSD.org>
pub 1024D/60BA1F47 2002-04-27 Key fingerprint = 84BF EAD1 607D 362F 210E 69B3 0BF0 6412 60BA 1F47 uid Timur I. Bakeyev (BaT) <timur@bat.ru> uid Timur I. Bakeyev <timur@gnu.org> uid Timur I. Bakeyev (BaT) <bat@cpan.org> uid Timur I. Bakeyev (BaT) <timur@FreeBSD.org> uid Timur I. Bakeyev (BaT) <timur@gnome.org> uid Timur I. Bakeyev <timur@gnome.org> sub 2048g/8A5B0042 2002-04-27
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBDzKgVMRBACCnaqx4HadaPu6wiCHEsqGN0ldtLmfgYzxBPDr/QDLxAxa5/DF cfJhxx3x/ZwxOVPVqNlmXY+ZbD8RujRJYNkgP4gsFumQIvhMiUcM0ViR+6MNIm18 F+gjYKjUuME5GUyRXFtuPzb6HQdgOzKhwSVMyiKoAFmjqhVLqGOYUbMxQwCg/dQ7 7SWczXhbKDhLL7s9FIMSbLUD/3iz0fHSftOIFPSRrVPA6bvpKNIfv/XPlXTlVvqe I2bsCFBhFDo6GA/jeOdhPRLiBpHQETXl3RsL9BQSuKNHitcnc0n4KSL8k1RjDcj/ cY2tqoW/WYA8W4vYWn3e9pjgsyHtOt1FbCjsm6bGdoKIZtJ4ezHyUu1u2cUNe7rd xtIGA/9M49n/nXPTZ1EHnme6XIqGcsBoJnQ4IUxCFWZWe2Ng5l/QJUHnjDHjXam3 XO0trwOxgyybt9rlpwbRhS5M4oUVx3TWS7AZiU+FxPaYNbbEoOE7KmXORJ06tIZ/ EHPr2Ktt4gNsn4z2qla9VEDNfC+c6EdkzS6FbldUie+UJV6Wm7QlVGltdXIgSS4g QmFrZXlldiAoQmFUKSA8dGltdXJAYmF0LnJ1PohaBBMRAgAaBQsHCgMEAxUDAgMW AgECF4ACGQEFAjzKgVQACgkQC/BkEmC6H0edkACg8MpADILdNHD635oFbCq9i/Nm YrMAn1kmJEQSo+pfb9oP/1G3YNZ6IOaOiEYEEhECAAYFAj42vX0ACgkQhdRQRWtp GwPyRwCfegowGN8yOL/wA6dJ4WmCOdbzMwUAn2PYx4bZKjOcr08Abawzk4J4R1Hv iEYEExECAAYFAj4asrgACgkQtN/ca3YJIodGTgCguz9TjADQ+fm+qmXUa3i6iWBb hz0An1ltnB0X+kq92F7Gf5Zv/BVkRQHgiEYEEhECAAYFAj48BK4ACgkQ7PDpCywX IIOsQwCfZ/4dnUM94rZwGS15W0pReflUm8UAnR9gX8nnu8tcXeUbPk4egPRW5iY8 iEYEExECAAYFAj9XV2sACgkQ99Q+k88Bfle5cwCgs1LBXAPXu/+IG13QY69ifLpy 2PAAnAwdijdGVaetTn9pIHNt6cqBalA7iJwEEwECAAYFAj9XV3cACgkQIkYMagPC +y0PIQP+Ktorj9CX5t6Fl+kV4gjfT3wWIFIEPWuByoB96uJRyY9tHwELgYPb+etX FdzBtE3KFUNS9+7yBWJeoQrd8sX8EjYBMxCtIqFWogx9A1fqrbgiKI3GtNOJ6AIS j18XgaiTmtmJ8Js7vAfPVaM69wQI4wi2f/Gk16DG5vZlReUYzXWIRgQTEQIABgUC P1dXJgAKCRBrasbbmnN0e4mWAKCA79XFhiNXVdUYg9HN+25KMsXZqACgtSQh3PjH wWcIclf91rD6uGpdd0iIRgQSEQIABgUCQLhXTwAKCRA27/mqpwtSBzIbAJ4sb24/ rbGSyctwdFPQmjxKEbrNJACeKhP6gJSL4KvEvCDtlS4hEQ0R0IqIRgQTEQIABgUC QVusZwAKCRAiylhMenujwNC6AKCkDYcLLeUZ2reDeqgOBEBf1GmemACePdwTXycL 08f68bsB19NOZmrubj2IRgQTEQIABgUCQVuvyQAKCRAhpkab0e+6pjWaAJ0ePfmN IZgNPm/5xTiOsZnHrwQxBgCghM61JdvNmLFlZFAF1HIPLQlQEr+IRgQQEQIABgUC QlgsvQAKCRCe11g/wU6ygpZ4AKC9AwM5iuGI2HwlZ8HwOX3DY287ugCdEDKabswb sku4CgquIVaHLoNOTMuJASIEEAECAAwFAkLtYjQFAwASdQAACgkQlxC4m8pXrXyE UggAob0tk0KxlIaayTnIPYQWwdqOiuzSezvDAAHnLLuOWop8PMsc8SXs/TeI/7US LkP84ftLgQBYVVRJ+NuibqS+hXQTawryx67SqyxDVLyQf3VGoab+xTxvXt9z5JYe dNuGjfRsx852BBj6biQidYkNjSpNQxJDpOs28gaL36oxHdt2F96MRg49ufWPXT9N E2pIYP1IO6LO/XHeGLoyg9CxdSrtokX3DQO2+RKKC3LADfNnmoAcrGEgIy6aTVmG tMNyWN/9scieBQmy+WJbYfSIXm6hirlk59rI66Rimg8Xl2Fje4y+ucO6LpIw0KTB IU/BHyrnFyt2/Ub2b1Az3Sk3lIkBIgQQAQIADAUCQkcQ2QUDABJ1AAAKCRCXELib yletfM2jCACXTZeu/NkIuSyTUi2MhgWQz8SeKPL/4zWqt+cKO48Cn0/eaX8ec7jH RKqovzJsiNiLtszs5wGfZ/z3olWHuhMkQ+w1TUSpFqxfOIJg9vzvhbdmRSh/9cPl 6jD9s4shxK57snEasdWhun79mzKN9NGBv/Pgg9MtnUn7gWFS6pbVi4hjDQQWAQeO ewQtgdlsq3m+Svp3KEIWsk33ywRqPNtBsojbWPVcIss/zbqoEJZ+cI0QL495odjn /dcBTYywvBAAN6gg7hmwz4CPA16Tn/9XIO8r7RDMtKl4IeR+LNz5IyGzvIxkIzyB zGktTCVLUrLVUWRyhsCm78Oe+KHkkt48iQEiBBABAgAMBQJCWM+eBQMAEnUAAAoJ EJcQuJvKV6180WgH/2CZ3kKKM9XFIYriPIuqEDghwzH/TJ8DB+eZVDQr4O9Pw/JT 2lD5AXMpRsuI8StNeZT7B7Rn2t6lA1g2TeST/XItU1r9WJM8PdKJwM1Q7gemECv/ QNGYqxKw8ETLK/A34juu7ZRLPoDgxZgQK5MjasFPFb7h+D/8yDahSB5NIFqlN1UZ fce46AXMflbTGqiQd/rnaw1/SstzlYtNhrFUv1lH0e/6MDQV7xvSrLD/RJYzt1Pj Mzx5xBCktVGJmkEcQ+G3nQmRbMGljyeX7Xy+qNGcaLpjaC15ENSJOs97i69lZ/pL pAXhN+IGpo1z8mY6hRTx8rW6VxoGaA/2whhfcUmJASIEEAECAAwFAkJp9GUFAwAS dQAACgkQlxC4m8pXrXzotQgAhfcwyaKF3RfHj1ksALEMUNIgLcXyLf+60j96nkXA 5sjXohsWE2by7VvjUTDP2FZHv9NdiSKDU60BUGwTGWmjUVy+rHM8o82NdjtaKK3T up4+HSg1hTiFsVBbjiNKUsgwnB4CuXy2+CXKPTKqwOQCiczda+t8UD6zhZKVv+yF CKWNyXGmCt8mSYwh744DbQJbFM4cXrnCFweFzy9AaVXIpizy2UGq9muIEluQyTCn 8L1oelm6Gde85nSkBa4aHJnZ0lyUFe5HDscNRvLIRsiZRHICuIlyKzjgwAOa0k+y ++4W/h661q3TziTpFo9ABxI3gd0RYMiZjF/13T2xNWiVRIkBIgQQAQIADAUCQnxp IgUDABJ1AAAKCRCXELibyletfNuXCAC1f9+6w5t44mL4c4uuUXvOKZHFj16Zalhi SI2gxImhSxzHfWUchg9K5FN9KcStTi0JSSH8JXrkZ3kYYDwWBhE9xcuhdzUO+AOv EEezKb6hKM2Ai7X+KOaRcfvaAwhrCYXTgk3Q/udumv5Q291d+8IqcRIJFhpOmu1c Y1u5TotfhdQ7bIsWaedYz2uj3vLAVCIcHD0YAsroY+xeWCjrLdDqzDbKxsw0mqog 1uW0eolQ5aLKaQAgtcLjtmTDcJf4wSaDwxg3WGvBTEB0i0I1zwwdEq3ZQ2xIeFHu Y3Zd/yF34D2ZasJ4UAlporLcggpZv/SGNrIAK6r7lbuoMQAGC1+1iQEiBBABAgAM BQJCjY6FBQMAEnUAAAoJEJcQuJvKV618zgEIAIP63Uv83jw8UpI6LM+rr6bwPq37 W0oywF0CL77xP2KpwGj0R7lVfZFcaBcSsyjNnp7OeLZhQWEopup2Gzh7gcmUlUK6 UtKztjWMrhMb9lS1R7pTsISCn89Ysl5HKquBhEXAhtOkIGIeWUAE1C1QPm08VPnk /GMlAdNsSs/MLD8039oPSXMBNIHc/K+Z9y49lMHCznETe0/zZ7ONma761PztwZhU XLz2XjLhs9LfzC9pGAWkAE4bnB9QY/3UYC7y/+9QlD1Cdop8df37X1gxjctQdJNF mx75XNPIY0uOBfmUaJ6uTddc2FKGTO//IoEuLxt3zoGNL8CHNpSaTDqN0yOJASIE EAECAAwFAkKfWqgFAwASdQAACgkQlxC4m8pXrXznLAf/VdlZ5aoRCPIF3suttNzD ZN+X7DJhrweNVjGFjPUcM1AXqH6dc8/PB4MDPSt+TpcjbVhi2M6lLkwqwFY9vRzr Txg2ttYfWlECfvo6pPYUy0fG0lMpmWGucTio1Ze3x8P9Mzb1hrFDj0Y0sf+1Qj+s Kfa4iDqR7hwuBXDX6NvQ8QxqLXynSx9cBn1xSKFdvo1l6g30bz+lmAq9ITYIc/a0 tNuUyNaR0EfMLFrD4IoT5u7mCwgykiLcMIOgKAnXHU1KzI+0eJ/94rC9+jbBXonk 9Kqm29MAkYN5HJi1YAfIAOqk5wkuJFUXk8k7+AiwJ7oq8d4YdAysd9bHcK+UjlAQ EokBIgQQAQIADAUCQrKEJgUDABJ1AAAKCRCXELibyletfOWAB/sF4ym7oOoZw6t9 KYq6AVQclYG5rRZCtzbX0rNx7cSHs9jVU+tZgQkC8Cy73BS/x0YH4X0ghKguAZBX 9xllDHUOYtt61tURxXIFxFF8tHwarRSVbdS/K0S9dFh8Kq5D5RZZp8W6zKElr3nE 9cgRm3bJoWoTzXZtEBluhfyanKLcQ52jlocrvflC8a64xy2JdIbanmOcukZG1A0+ IcraRbANGJhNAxUwuw6+sEgmxdFu6jCyykxl0+xF97l7urnH/3697v0QTh9VxENb GQS0gqTxo98DkqykT7KOwf6dT5Pjwa8XmJLltiUBHlx2QphxogK6ng2Ib5ztjzQX ZfDNtxP+iQEiBBABAgAMBQJCtSlnBQMAEnUAAAoJEJcQuJvKV618OrMH/0RuHwcc hYLPaxLOeyuVzsEg1VOwaB8y1SXRsjZCXtrMPO8sRXFmAvbDPC9/MeTa1Wr6mP4Q gBxBWiqN5O2pEpaiXF5mcudxbZVCtITYtJVc0oEpPexNcsZT1eAr2iLEI3Zwf1Tf ooQlksZmhuW2lGwx+zLdeHPkRLob3j55by89jCAUmwhbWwDzJtkA8EP4DenfLGjT pD+7c04fVTRxJu52oEZHDpf7oAOm2m3xr5lHfj7KUDELvsK7hVREpW3yy6Mr20dA aVtTDbI0BNfj89rCdtF5YSxs0DO8f/A9mIuF32EGzLoeU2LkNJxdGW0FGfgiLkdJ qlt0K8JKPS2RdKmJASIEEAECAAwFAkK3JIcFAwASdQAACgkQlxC4m8pXrXxhDAf+ JRBguqmRrxC5OMjaKlYM0/+VfclrsSRDH4mk1u+WmshkxapWzFV8qNjLG9CcFGVu cVwUpWNzPXPkboQDvrKJ5dUP+K6Jcu7f4E9KMAGJq4Drpi1ttMwUzSahG52mb5kW rpLsmGrKqiO3wUsyyXCGC0nBiDp7/gLh69hZVstLEyq37jF0w3zIKiObQIPiHMGU rHT3ACkChLGoFbaVyQpUd7DLBBwdH2ugqRp0nZ17vvN95gzgj1gzamav+ofVdpFM 2F8AGQK0SqwqC4UIhcToQIKmqLotWEOeKg6CHc63pFEq8fvyVubT2LX+6BoHTUqE 5Ch+XxYAjgJ/QSsnbSkOGokBIgQQAQIADAUCQsj0IQUDABJ1AAAKCRCXELibylet fCcxCADDI247XgstIOK6XzvADRDaHkj4ePk9sBZA4HXUb2WUIYsVS5Tng1qLcrUY SRKL7GF+1C7nH2/axKtOvarV/I9US5k0dLkgcDT6qooHaEimxQ3py2q9rOca3BGr KLjNW1h77rirEUt+ZVnHKDjTzxx+7lTVg1iXZJJhGDAa1LZ44kDeaMlxkSqapIhi MbVc/sH6xgaMN8kqKbyqAy0MEA4IuUONol1OeyjEGEVXXE9P7gtcOjvNGDlFvEi5 P9w7RGDVI6KsGYp/udkiXirCQFBhVXkvj5/bOtL4J94pGFCe6cVHwnrR0pX1JXLv vFY+Elqv4AN48dgOufttI4cylPC5iQEiBBABAgAMBQJCzD+pBQMAEnUAAAoJEJcQ uJvKV618pGAH/2GwExKNF+RGhwN3ZwwHfq0tAytzRE9wiLSZ81z3/hmHWHkSwFGO 80/HOJpmTO5ed+nbftZsQFbQeKkrpSh5MmhEr60wkuQaabg1wDNnC5E2A2j0mzJK t09BtTRT88Z1PrQ4kYNJr+PjffYf/M4nKJWhWqjNXL1zcqUtzfTW5IWbjpvSXrn+ T4TtnSuuYp0oYTqXkzuIdvmf6itGcAch923BrrriUTWa42QcN0sihXVYJKb4M1A3 apvivAfbEXfYMiLe4tiSHvgB8TgRMBf1zXXR6s7Ndz/3t3pVsKJljtwC7bBsNuVK KrGd+zUGWgKjgjz0kuGnBo7jUxpeYbNXSC+JASIEEAECAAwFAkLRh1oFAwASdQAA CgkQlxC4m8pXrXzAVwf8CtfxrZrpnFe2zOfbX8VYp9gEN8qw/9wiqpZHNDg8kGUi gnNXf9qcnYANJowI1ACbQc2FuaLVy7ZMo5TbqY7o/gjh3JdMOQ52kNXDnNV0AMuD +CGUybShCb4toOATMESW2D4USLj3JOD4mCRara6doAbNv/MVkk+KztpipuQSJYi+ Bw47P+UOqAii4aAYLDajVY/lHuuNPCjJNyK2DfgNPrxsp3Mh1R/SSlyXW/WkbHrT wq3kAHyCX+K6DZOeF89xo6GdwF3SnaQGWPY3HM4zoQHK1N2Obn7Aa1fXid1WeL0L UjKbR1fIwgVihiQmMPPoR4KzFpgLYzs9y+95A3aMcokBIgQQAQIADAUCQuy8BAUD ABJ1AAAKCRCXELibyletfH5DB/0VWr+m4wCxWyppcJ4xQSmuzbJCIf/DlmeDKTuU VoDEP5AQyXUQAqycW9ZMONnxnqtFIAXfUtxwsmbCasxn03BgPgQXkmv99QI4R9bG 780G5ZA3n0WnRDVNf2nm2A63EpRYOMHQlYzv2Yjr6UTjaVyeYP2fHycZOmZDY090 1w9/WR6F/d+8YmPCfciDkpvU1jp0cqIwl+NB3SHjitYusH0uENEwPmeRURv6W9cE Tw1Szji8XZIzpEa/NEBg6wNsv5ML9+X15+/8OczeaY2JCH5H7MZaeu1zTE62svEU 7GF0uUVwrv+wqku0s3kPdY5ViWI6MaAnDBqu3pYNLyqTukHwiEYEEBECAAYFAj9X VmAACgkQa2rG25pzdHvmMgCfWf+qd5DM4iIdhmp8JDZDgLOhtwAAniv18InDXQUF EBLeLV+cayvW2OmoiFcEExECABcFAjzKgVMFCwcKAwQDFQMCAxYCAQIXgAAKCRAL 8GQSYLofR94WAKC5q8jfxmxsyhnZwTmtyTZ2FOgQnwCfbGopQpkOjDTVChafwety Yvr7KwK0IFRpbXVyIEkuIEJha2V5ZXYgPHRpbXVyQGdudS5vcmc+iFcEExECABcF Aj4bPngFCwcKAwQDFQMCAxYCAQIXgAAKCRAL8GQSYLofRyIxAKCoNYZHTaDHSs79 uXnC/ncU5avLvwCg6ZdSGBsaMR3vfbkQ8TgikhQaS1KIRgQSEQIABgUCPja9ggAK CRCF1FBFa2kbA0OaAJ9sxdhm4B67VM8hyojrNx//sEBxOQCgjop2qQBHTwvIwSsA 5KC7Wuy7vhqIRgQSEQIABgUCPjwEsgAKCRDs8OkLLBcgg9woAJ9NQ/0aD31aVOhK BMrYxqsXFsXxHgCglAMN45m14w3tXTMKu8dWJCFHV5aIRgQTEQIABgUCP1dXbgAK CRD31D6TzwF+VwfPAJ9CNV8q+WP2K8jMojwOotnDmJOSgwCeI1nlUb/HlLALB8Wz GacyQGx3Gb+InAQTAQIABgUCP1dXegAKCRAiRgxqA8L7LSs7BACjTDJG0wDABcwb 0B7Cm0OgWovvMUvj0YGF7rbLqg7NjRbynlaAPy0zBsiPh9GUT9/c1S5ddppzRXWo IZoaiEr+qAUQrxgF6wT8EUfsoOWP8NB5yIIsmsLHVjGrdN13tqYkVmz4PttTqnlL Qi5kAEZC6rYEi0afP4qlpQQRQ45SqIhGBBMRAgAGBQI/V1cmAAoJEGtqxtuac3R7 kNcAnR3ofQZU4RyKzPZIUWQ2MWlrgdJBAJ4ip/P6Tth1j+OMe9adQ37cJr769YhG BBIRAgAGBQJAuFdSAAoJEDbv+aqnC1IHP4QAoOR3E7hCKvga5CncXMgmUJBApOp2 AKCNTiRhFlqeQK84kXyzlYazHZtzoIhGBBMRAgAGBQJBW6xtAAoJECLKWEx6e6PA gQoAn1DJHActISXIcxz4uOgq+5VSDk4tAKCEvDMLQaC+esVqlnalxoRt180ow4hG BBMRAgAGBQJBW6/MAAoJECGmRpvR77qmbgEAniYZLs65OXMwUhMtngCotG7sgEfs AKC+XoymkU57EX/SfiLt6kDO+4Rc/IhGBBARAgAGBQJCWCzBAAoJEJ7XWD/BTrKC jq4AniPcxMxogyNgCQKdYhQpAPGOSvC2AKCYyNvxz97vih2MxFl7cx/yTk+yN4kB IgQQAQIADAUCQu1iNAUDABJ1AAAKCRCXELibyletfLeMB/9raHxdvPtMAzXKgKUr PNJ2RdULowsfLoMu9hrMfUumoW2tBPvR2r0olltVF1Q1oPKZOc6nY+Lb6XxH5EBs hyedak/bwUeTvNYaA+yZ0aeF6MSsCgrm08VtoqndgBaIlkvJGTKrkJ0WD5ww2c4Y DaH7oN7f/R5XUSNVQFAD2EQkmGnLYnEmeA2TzUEr6Jb1HSeXYdva7kLGLcVdvwHm cNi+lMBFiDQDmBaAWpG+ldDFc314kxah54imtJcY3kN/jvV1tyaU5p6j2vnFNPXR mJAisJuVvLQJgyqAHpeq5xCo0X9uYgCju3v/8t7B0WpeL4kC2UeEy3TpUJRHtY9q fk/FiQEiBBABAgAMBQJCRxDZBQMAEnUAAAoJEJcQuJvKV618j3wH/0LubsehIcdZ qjZUamOWEjf6puWzjWctmgVVlxOfwNeyyrlf5x7GGNIse+uQqPZa1Tlk+LoUeB2C zJLCw4xjxVSgOmXIi0bNk9MKLhLwnM3B/j2UFZO1WftIJEV3u4Ps0jh0vrvIfoX6 5+78IroSBDBqYugtt0N5sTu9t16fbqbh9VlQvnioKpTV/Evde//ie6EsRuZE/2do c5RPsObi9jUJhz6bcFrPI7uJeNRLmX5WQ42C+nQO8NItZX8CgayRs0J3AFS3tSnm 5iBL9wMnRqKsNNxfM6yWwpSQ6PRh3GApbYY15N9HViUigfHFyOfg2n7NBsQB79aP HRGiuwmIabyJASIEEAECAAwFAkJYz54FAwASdQAACgkQlxC4m8pXrXwLIAf+McSJ ND6Sh6qrPw3A8rUQKpxN3ONycT6wuGFCz4npzyQKwzZ47bp98hZBSRT9iZMVIHRj QOURfj1FDZyBzVIXHUzkWkimk2u3cVari0X1KC4I8PtH7Sj9AYHEHOQwB1G2J1Au 2iz03XoADBUPjUUQ6pPpfsadeaGTo85Ufff96UPPALaCvVc6IlUJ/2zrQTJ6LtLX 1g9c61h/wGikHq/1LaZ7gX2ahTjX04xh6r5k72oaaT3mOkmZM3WurFTaRpJoAFBZ S15l1jnL18Aix4NsbITCNlvsajTiHuyvwh7zUz2ETZFkqAzu1h4KxBQ6D0BG7FI5 OGUTLDzkI8ex34iiJokBIgQQAQIADAUCQmn0ZQUDABJ1AAAKCRCXELibyletfMIB B/4tb2rWNxc0EGy2VLPjMtipGNRn4ewmMP6BdGYUNWeuFwbNZmpVeXmbSQiQ9U+f VbHZF40I6pCZ9lIiFTID5EnnsPN2pYihimwoPsyzPdGzgoWrN7U7K14HyNXhprdf H0uSx3zWmtc2tz0U8si+6Isefmxu9zVcRyi4MeJ21+BsUoEcjqtXu2RaRi6Ak/ci exneEE9BILLYBnt1HYtvJKr/BWExCsv4W2Lna+6HrPdq0GR/nkxs5fCXwRiOldyj tQXrCeE8ciUE4HS1CaqUf5k2IA1m0rFA26pY8aJOvzAUwJjkhI5ZpeRzw6i0n6lG lqbjN9HaKs3PyH0TLb2H3Sa0iQEiBBABAgAMBQJCfGkiBQMAEnUAAAoJEJcQuJvK V618y0AH/jI+KjrfOqFyC1oJG64qRnIUk2TwDCoVPHS+qqfzuntr/x+XQN09/CxK cMTnB5L/Rk387qHucfvSDkgBFnIeZCUCU58Rtd1u7TaUfL561xBzjtanqfeF3DbV QW8NYSDn1TYbAj89wZiL1q7OcSxHgda7xUWHokrfjb94mpDHijFtW4BM3rD6BWGO 4X9PMkruzKC74sPmJnngtAwOffRbdkNot2xlo3KMmhiAeOYQGGbVqYB3BxnjLru1 f7HharnVrsKCq3eDSokPODn//CXVVYx0GEAjiElwq9jgN2DL57cbcpWNEXMXB2gs DUEnmI7KGth5AUkEBP1Xd68yg3+PVQWJASIEEAECAAwFAkJ8aSIFAwASdQAACgkQ lxC4m8pXrXzblwgAtX/fusObeOJi+HOLrlF7zimRxY9emWpYYkiNoMSJoUscx31l HIYPSuRTfSnErU4tCUkh/CV65Gd5GGA8FgYRPcXLoXc1DvgDrxBHsym+oSjNgIu1 /ijmkXH72gMIawmF04JN0P7nbpr+UNvdXfvCKnESCRYaTprtXGNbuU6LX4XUO2yL FmnnWM9ro97ywFQiHBw9GALK6GPsXlgo6y3Q6sw2ysbMNJqqINbltHqJUOWiymkA ILXC47Zkw3CX+MEmg8MYN1hrwUxAdItCNc8MHRKt2UNsSHhR7mN2Xf8hd+A9mWrC eFAJaaKy3IIKWb/0hjayACuq+5W7qDEABgtftYkBIgQQAQIADAUCQo2OhQUDABJ1 AAAKCRCXELibyletfGDcB/wPuGNNVE3xSr4w/fngaIY+J3whKm38cAroMvXFkQev B3mjXruEa9TGGMQDJDoGrl/ZnGBGeIcfb3FxD2+i9qn7yL9erRUBhhBSX+TGrcE2 M6VsECq2FrgQU6HchWV2v1apmmQ1V+H0Y3JGukYFQXU/PZUWHepjOgualJJYwCA+ HU9ENQPpEjiPgZ0QaP0PdDO5ayAHe0+swSRJnRP0w70k2eVM+nfnh9xERHsZFH3c jSlJmhhSfx2hveeGG6O/rE2bgPYiDdBEg286X17Qki5au6IkZvYtG4dgcF0VRdUx toKtkGJ+icOBzRcxVU0AR/HR+KU9QpSoPR7lds0XDCd1iQEiBBABAgAMBQJCjY6F BQMAEnUAAAoJEJcQuJvKV618zgEIAIP63Uv83jw8UpI6LM+rr6bwPq37W0oywF0C L77xP2KpwGj0R7lVfZFcaBcSsyjNnp7OeLZhQWEopup2Gzh7gcmUlUK6UtKztjWM rhMb9lS1R7pTsISCn89Ysl5HKquBhEXAhtOkIGIeWUAE1C1QPm08VPnk/GMlAdNs Ss/MLD8039oPSXMBNIHc/K+Z9y49lMHCznETe0/zZ7ONma761PztwZhUXLz2XjLh s9LfzC9pGAWkAE4bnB9QY/3UYC7y/+9QlD1Cdop8df37X1gxjctQdJNFmx75XNPI Y0uOBfmUaJ6uTddc2FKGTO//IoEuLxt3zoGNL8CHNpSaTDqN0yOJASIEEAECAAwF AkKfWqgFAwASdQAACgkQlxC4m8pXrXw50Qf/ZAnqSLD21fNnyZ2YgoD8SIs4ssqy z+cA3PSb8tELIyRdU+Nid50K7VCscJ2xUlWzarrs/og9msglLtq9fWf3WgMs2IO+ FbRwDH8siokXzzeea0bM/CJ+QhuCGYwGMdhrhPEJBMBjU/STaz2ROy+2+SaKuG57 diLdFqEjp7x6GB+la3iZa1v6au85U1NdbvKb3KHHipimtUMI59XwVjoN1JMXdbyY oqVLSlnglQ31IJzLiP3JP5HDVmXfLVbWzZhaOh+fw36n59yyZ1MVyCdZy3UN+w4w /tjhjiXeP6vjXL+5C/BUKa4yMRdTgMl6l6/mmeNijseAD+/SOMSJPSD80IkBIgQQ AQIADAUCQp9aqAUDABJ1AAAKCRCXELibyletfOcsB/9V2VnlqhEI8gXey6203MNk 35fsMmGvB41WMYWM9RwzUBeofp1zz88HgwM9K35OlyNtWGLYzqUuTCrAVj29HOtP GDa21h9aUQJ++jqk9hTLR8bSUymZYa5xOKjVl7fHw/0zNvWGsUOPRjSx/7VCP6wp 9riIOpHuHC4FcNfo29DxDGotfKdLH1wGfXFIoV2+jWXqDfRvP6WYCr0hNghz9rS0 25TI1pHQR8wsWsPgihPm7uYLCDKSItwwg6AoCdcdTUrMj7R4n/3isL36NsFeieT0 qqbb0wCRg3kcmLVgB8gA6qTnCS4kVReTyTv4CLAnuirx3hh0DKx31sdwr5SOUBAS iQEiBBABAgAMBQJCsoQmBQMAEnUAAAoJEJcQuJvKV618bD8IAKny62FOW3YP0UJ4 jNGsKfefmR/jVd4Lg96XnuDHhApvpmQ35lvzEJTwVGk+tUPpqn0kA0e/j3eC21oe Tk4KXSPC82xXvZ/+eGXvoUm1u0eS01nkvLA3rDx8gMFvqmNvv2kKgI9Q2LPKSAR2 tgB9CVTijbRHgto+/QzU7O/W+Evf68kVpErGXLa7/ArtlS/C3gTWtb3josNLU9Qh DE0Lda31fF8s8szTd9XwsLqMDZyw84XWjR+cUhQyQRgdSO0dtOFjqmCivz+JxAn6 Yud3u9ySDArI61tcf1+h+H7BNaXY9mx/K+E3Byti/LNeIY1dPOsWnkx4Gp5kc6vs WhfdYYeJASIEEAECAAwFAkKyhCYFAwASdQAACgkQlxC4m8pXrXzlgAf7BeMpu6Dq GcOrfSmKugFUHJWBua0WQrc219Kzce3Eh7PY1VPrWYEJAvAsu9wUv8dGB+F9IISo LgGQV/cZZQx1DmLbetbVEcVyBcRRfLR8Gq0UlW3UvytEvXRYfCquQ+UWWafFusyh Ja95xPXIEZt2yaFqE812bRAZboX8mpyi3EOdo5aHK735QvGuuMctiXSG2p5jnLpG RtQNPiHK2kWwDRiYTQMVMLsOvrBIJsXRbuowsspMZdPsRfe5e7q5x/9+ve79EE4f VcRDWxkEtIKk8aPfA5KspE+yjsH+nU+T48GvF5iS5bYlAR5cdkKYcaICup4NiG+c 7Y80F2XwzbcT/okBIgQQAQIADAUCQrUpZwUDABJ1AAAKCRCXELibyletfDqzB/9E bh8HHIWCz2sSznsrlc7BINVTsGgfMtUl0bI2Ql7azDzvLEVxZgL2wzwvfzHk2tVq +pj+EIAcQVoqjeTtqRKWolxeZnLncW2VQrSE2LSVXNKBKT3sTXLGU9XgK9oixCN2 cH9U36KEJZLGZobltpRsMfsy3Xhz5ES6G94+eW8vPYwgFJsIW1sA8ybZAPBD+A3p 3yxo06Q/u3NOH1U0cSbudqBGRw6X+6ADptpt8a+ZR34+ylAxC77Cu4VURKVt8suj K9tHQGlbUw2yNATX4/PawnbReWEsbNAzvH/wPZiLhd9hBsy6HlNi5DScXRltBRn4 Ii5HSapbdCvCSj0tkXSpiQEiBBABAgAMBQJCtSlnBQMAEnUAAAoJEJcQuJvKV618 dzYH/iru/DPAUvViLWw5NbaP+Q/6HvD1qAfpsGat3063Cs3I1bJv6Dxkl9TIL1bH PdMu4i7Snzogl0KjxYs61JxagYJIqG3ceVCB9fw8INx4hc2AHFdmFi1uzI/12d1L uuXYMkECL/AgTtFNkMjgL4DqSec8IPVm53yPZ84aWmFKtZI5xgzjETMXxfd/PpeZ cE1if17MvhvBzoEB03oisInFyUI1zUz9nVBQx591qOctN8wn5ePYS2CW3FKPQT1l UBba1jp2UZo2R5PHybj5Moq4gZ7QXPKn8fHGXdF9OTXDSB9CPkUtKVq+mvJLuMXF At2DTh2i1yLkue2V/LHw4EjFb2WJASIEEAECAAwFAkK3JIcFAwASdQAACgkQlxC4 m8pXrXzz9Qf+IUc55Z5BBhcio42hyH2EkkJMwZ96PeqNg8cA/nqtWEBf5Y8w6yY7 RU0dbR6PJm8srpdZ9nQiMFZHU8/7FYI0Izm/1EmZQ9TOq4jAHINvrhUMyF58m9et 1zVDdpFLCwg+HO3Y8WQy1ZNcLfO5Wu5qa9z8jR85QZ13OyC/V38wBPS3YIQygr0X WZToanT+s523BxohTO2Q00Da/Cy0Rr+YTgHB6skThLQRkaX0LIt990PSm82RQ8tv aSsP1P9818ABzlzFSDpTgP/RgDzSmCggveU7rGhOtHH9MJEgWiwdwu/Q4qV8C0BM FWHHme6nyN5ws5kCVEpZMPkBubEwUaSkuokBIgQQAQIADAUCQsj0IQUDABJ1AAAK CRCXELibyletfCcxCADDI247XgstIOK6XzvADRDaHkj4ePk9sBZA4HXUb2WUIYsV S5Tng1qLcrUYSRKL7GF+1C7nH2/axKtOvarV/I9US5k0dLkgcDT6qooHaEimxQ3p y2q9rOca3BGrKLjNW1h77rirEUt+ZVnHKDjTzxx+7lTVg1iXZJJhGDAa1LZ44kDe aMlxkSqapIhiMbVc/sH6xgaMN8kqKbyqAy0MEA4IuUONol1OeyjEGEVXXE9P7gtc OjvNGDlFvEi5P9w7RGDVI6KsGYp/udkiXirCQFBhVXkvj5/bOtL4J94pGFCe6cVH wnrR0pX1JXLvvFY+Elqv4AN48dgOufttI4cylPC5iQEiBBABAgAMBQJCyPQhBQMA EnUAAAoJEJcQuJvKV618S/wH/jCOVe/Vco4vHAQoWshAPNfYEBKR23hEnJC2Njy+ qWlfio3g/9W4GymZIefYU5/t5QTLM5VB+jf6YweXh8YdH3nPHNEItpRynAz3MeqG +A36my4UkIthxZJ35uMsHt+Xd14SE0FxbWUI5FxE8f9H/VWvZEmgKmNH0VeE7U0u kXshVHQ1XDp4SoeZf/xIC+ZO33G43FhtYvi0i3pz9ZbVTCNxNa0y5uhDddkHHOaz 7o3FITPKvi/ZKwVSEA77fHDUcI8eCoqEJzpjcklf5NETFXyS6qMLGQmE7CNaeOS/ /89UXn8zrLHyJXycQk9/sCyTZkPm6AWquECe1XYp4eJP7XKJASIEEAECAAwFAkLM P6kFAwASdQAACgkQlxC4m8pXrXyN9Qf/SaUiREp76VFFad7yODdp3hoL6Ykp4Ecv loppwDGU5CFOrir06YVXadGeACk6VAIxxJsDM6seRYQbQVvLHy4DIydZSW8UNVG9 EFMmmsScyKj1zQ/a5XZRvZ+g8n7GZzkis/rU566fBGVm1UKN3Rka84H96D6gsaue hx7+NMqWRt5Bf67XAKBEEU5UOAF5NRsnUmvbSrX6WWDxm0LF4+rWvp64Ff89DIO2 79YulE2QnGv1Hb/5mPhoJjx+jMBn29WtvuzTF54O3Ue9TazmKyabCfjIzb6Lk/ub oyaEHpuJFXQdd3yT26AfpKj/8oKRtDzm+l8aBqXZqdBzdiSxFBl5hYkBIgQQAQIA DAUCQsw/qQUDABJ1AAAKCRCXELibyletfKRgB/9hsBMSjRfkRocDd2cMB36tLQMr c0RPcIi0mfNc9/4Zh1h5EsBRjvNPxziaZkzuXnfp237WbEBW0HipK6UoeTJoRK+t MJLkGmm4NcAzZwuRNgNo9JsySrdPQbU0U/PGdT60OJGDSa/j4332H/zOJyiVoVqo zVy9c3KlLc301uSFm46b0l65/k+E7Z0rrmKdKGE6l5M7iHb5n+orRnAHIfdtwa66 4lE1muNkHDdLIoV1WCSm+DNQN2qb4rwH2xF32DIi3uLYkh74AfE4ETAX9c110erO zXc/97d6VbCiZY7cAu2wbDblSiqxnfs1BloCo4I89JLhpwaO41MaXmGzV0gviQEi BBABAgAMBQJC0YdaBQMAEnUAAAoJEJcQuJvKV618Z1EIAMJhy3TMTZVcCeiBxZFF ybfoOQivK2bw3ANNn2ajWh7L/jVg/QV6Gr6mW6cyJvbcqQQzFSVDKZPJsolq2ZP1 BlDXmSfAfshkOVt1mOLZqhFDoLIXZPYg2CjhtmWCtX+Bn9bVRtTcwOnAE/IfJOkg JDurYylZenHj1Rx+ENI/cCi04gq43XRNS1OxDUX8WaOpUgGUgB2HIRSPdpSsp8Nx JUtvuAGyL1/bPFofwqauOcwMSS4d++DhvdaWqjxlIwZraH6AAtZohkr/5E6L3qVK uL209pI3ODRgkQJkIlxnzcdZz+X26I2qKzdUvs5kzHedaTBKUXCWtSnbIC2+LG3A i2mJASIEEAECAAwFAkLRh1oFAwASdQAACgkQlxC4m8pXrXzAVwf8CtfxrZrpnFe2 zOfbX8VYp9gEN8qw/9wiqpZHNDg8kGUignNXf9qcnYANJowI1ACbQc2FuaLVy7ZM o5TbqY7o/gjh3JdMOQ52kNXDnNV0AMuD+CGUybShCb4toOATMESW2D4USLj3JOD4 mCRara6doAbNv/MVkk+KztpipuQSJYi+Bw47P+UOqAii4aAYLDajVY/lHuuNPCjJ NyK2DfgNPrxsp3Mh1R/SSlyXW/WkbHrTwq3kAHyCX+K6DZOeF89xo6GdwF3SnaQG WPY3HM4zoQHK1N2Obn7Aa1fXid1WeL0LUjKbR1fIwgVihiQmMPPoR4KzFpgLYzs9 y+95A3aMcokBIgQQAQIADAUCQuy8BAUDABJ1AAAKCRCXELibyletfH5DB/0VWr+m 4wCxWyppcJ4xQSmuzbJCIf/DlmeDKTuUVoDEP5AQyXUQAqycW9ZMONnxnqtFIAXf UtxwsmbCasxn03BgPgQXkmv99QI4R9bG780G5ZA3n0WnRDVNf2nm2A63EpRYOMHQ lYzv2Yjr6UTjaVyeYP2fHycZOmZDY0901w9/WR6F/d+8YmPCfciDkpvU1jp0cqIw l+NB3SHjitYusH0uENEwPmeRURv6W9cETw1Szji8XZIzpEa/NEBg6wNsv5ML9+X1 5+/8OczeaY2JCH5H7MZaeu1zTE62svEU7GF0uUVwrv+wqku0s3kPdY5ViWI6MaAn DBqu3pYNLyqTukHwiQEiBBABAgAMBQJC7LwEBQMAEnUAAAoJEJcQuJvKV618t4gH /j964zrhCIQYFtps4tDJW20XBtmfyjium22h1ZQwsF1WlnhTUiWRaEpdDhxCHE8i U3ykQXZH9BzO7cWm/Eq2K20+xx9aWCYH02k+eFZVFED2vDEkfXUndvI3SEwYdQoa qfMkoUZPWir2quyRH82gtfEToPOJamNn6X/uXFTCPmG0/uL3s+fe1XDkB+wD+Evb 108ODifY6bN4kNpDPoy05InXWj6eU+5r1yg78yv0+O4lTqzbPqnD1zV7klIFa7it 1hmzKSHi6bTCUVGCgee6shKJVaXHAIpS+nWKx+W6UyzmL2zk63F1nRvif6Z9sFY/ IFh5I8zKyuw6M24CW6Pp4jKJASIEEAECAAwFAkLtYjQFAwASdQAACgkQlxC4m8pX rXyEUggAob0tk0KxlIaayTnIPYQWwdqOiuzSezvDAAHnLLuOWop8PMsc8SXs/TeI /7USLkP84ftLgQBYVVRJ+NuibqS+hXQTawryx67SqyxDVLyQf3VGoab+xTxvXt9z 5JYedNuGjfRsx852BBj6biQidYkNjSpNQxJDpOs28gaL36oxHdt2F96MRg49ufWP XT9NE2pIYP1IO6LO/XHeGLoyg9CxdSrtokX3DQO2+RKKC3LADfNnmoAcrGEgIy6a TVmGtMNyWN/9scieBQmy+WJbYfSIXm6hirlk59rI66Rimg8Xl2Fje4y+ucO6LpIw 0KTBIU/BHyrnFyt2/Ub2b1Az3Sk3lIhGBBARAgAGBQI/V1aYAAoJEGtqxtuac3R7 VLIAn2XO/Wp/VMaTKPzENzeoZF+szflfAKCcPlJy5cD4EqftpbtpgzGlLwCnQrQl VGltdXIgSS4gQmFrZXlldiAoQmFUKSA8YmF0QGNwYW4ub3JnPohXBBMRAgAXBQI+ Gz7KBQsHCgMEAxUDAgMWAgECF4AACgkQC/BkEmC6H0cB8gCcDzhfcY3z4ToxHgpR wjUuwPKgEeYAoIe79JpDq1CFwOr/xF88fF5p7AnYiEYEEhECAAYFAj42vYIACgkQ hdRQRWtpGwOYfQCfRGF5b7MBwB3mHt2iMI33+QTlpcMAoJ0N11O4oEkc/nJp4WlC N46YvznCiEYEEhECAAYFAj48BLIACgkQ7PDpCywXIIOHPACgh4AFMZ82/Mh1V1db O/ApG1pmC+cAninZ1bZD/sjsqBAsIL9ZcERMxX9XiEYEExECAAYFAj9XV24ACgkQ 99Q+k88Bfle/awCgnkDx3BVjkRePbyrUe1DSeWN4lFsAn2/ZiqfIx5WwCowrWdfU V4qIJH9TiJwEEwECAAYFAj9XV3oACgkQIkYMagPC+y1SRgQAhkZD9kyXO+sIhwgG 8mf9ktrbcxYiq8D8UJ5gI7sBAds/8rkIrGIkJAoz9SAf5tvl11nfZ4FjTfY63qWv 3aiOVnTl+hmSowkfyJfUtWyqT2eF+sfGQsmpTpLublo7rBlEBe+7sTsTRhBE0omi 3hCzg0IUx/RIps37TT/6HBT65dCIRgQTEQIABgUCP1dXJgAKCRBrasbbmnN0e1tI AKCmxrkdZWzBekJq/cFzBPgz8r/7ngCcCtmQQPvlwrpp5MHnEs+zI5TeEcGIRgQS EQIABgUCQLhXUgAKCRA27/mqpwtSBxjbAKDRysZih7AZOXVioOHHW8V384YS2wCe LhNCGpel7EC1gLQZKVM8SUbiPoiIRgQTEQIABgUCQVusbQAKCRAiylhMenujwME/ AJ9GGxP3oqPN9Lf8GaGeGNPZOZKJNACghDNLEfLguVzVJ5tkY+J1UND/nrOIRgQT EQIABgUCQVuvzAAKCRAhpkab0e+6pia7AJ9PMUUoMEOJnPPbjWYGvjzHo6V41gCf QgzJo11LPJN3FmqFnmT6f/FlN/CIRgQQEQIABgUCQlgswQAKCRCe11g/wU6ygnv3 AJ9lM9P4mGLm8dUjxcXhJx9HYf9AlQCdE5GUagE/sRwbo66GdHZ9Y+dI0uOJASIE EAECAAwFAkLtYjQFAwASdQAACgkQlxC4m8pXrXzEQAf/WuZGG/jtTR1GHjGjBTQi H8BTrmaq3BIjEG8oeenaQdXJbelg2qwH1dVoTLD3+F9yh3M6FzxUqWvPlu+6+7oI QCDZDB18mHKnZVIouXZD0GrxqOtV0N+mTTzmInMigAgDietB4ztmTX8aXxCzXuK6 rTwYbm/HRyr2euJpPLt/zIY44RlUMD5eEiSR+G4TKmfz4sU7aFsBGYyLKA4hdHS0 v/lK2Wei9irjQQlAVhlfVeVxNrsuCzp3xP98iRwvMyKgzFNa+O2J5wroJ7dbzRTj nmvdy5gFJ0VOj7BTzmUS0E4GQF56J6aBQExVDfVWEV37OWIJkOAd/bbnipGfZGOb 5IkBIgQQAQIADAUCQkcQ2QUDABJ1AAAKCRCXELibyletfBrYB/9YL/2mk+JEugdi HhJKBpXMRtYaoBmkg/ZTQ3+2AHfyGcfC/I7v+HUqtZWHyCWX31/MYU4UHQZzgVcm KMoVnGHxUJnVtGE+mCP7an0F0hSw9jY9bsUb5TDAwW/OOUwPT9N9V/smImTmLu7S aI65dv3NrrANZRVFv1lIRi2xTwu5TzoPUz6eagTpzyO0o32AaGam+ishHuLH4nia nWywVg4U7S6a8A1NKTM/ycam5As+tqF9kdSfME9PCrtDSdPdWtCqqcLHxzhGhBVX nYExnyk0k5TMqlcd+rlt1jZS6zgjkxmY5xFcD5vcSa+w19h9JecEIH/9FdvxLU9J WpGK0w8BiQEiBBABAgAMBQJCWM+eBQMAEnUAAAoJEJcQuJvKV618dWEIAIumv/q0 nGtILrAVoVxeF6rr29labesv6Q/D3Vp40DY8RpYp8yvJM5wS+l/7UMvMpHaf5JfK JycDqIe+nySvphNqQkaUDQuFm/JHe0SXToKdT0mpngqw1NfM4pi26qefADVOEm85 fMncdkMfSOgXixW/qWVcrCKiF5SHawDq5S8L9v3QbsvVvLrcWUldJu5ZYJG/Qaz7 gHY5L7HeTr4bnh2Qx11mhSkXi6T+wODhhXucQAhs/MF6pSuRSzC185lX6b7GLNRq 5dcXBQ5hpGkUnxXj2SR+jc0WWPx57Y/doF+BgIdc4ZeGrspqs1jPPVcEqxCkfNuy qjPggyaIiWF7oDiJASIEEAECAAwFAkJp9GUFAwASdQAACgkQlxC4m8pXrXxxQggA t8JbktxgC6tshG3jugsr7MTCHxEq9Z8ZZ22rVc7Ia8aINiSJOnDwp1G4Vl8albEK 7SqxTSa8bEsgA2SDobE24vZPCm7zJzHaLJp7Qs57XnmUownUGdr7Oyg9ywzU1nG+ oGx/19pxSQ4rI5g1Cbl/lfxUU+1fsZXbexDeNHhkE50pBwBZMI7xtuvP58pVghTl a1X5jIDH0u3+E557fU+KTGZ7GtIKvjhDRxd4H8M6uQFtmkiudkBugqmy45YVXPzh +xoRhJUKVieKgPnpTSmgfCpvVF0fIHXPQF6z4Ln5VR8CqFbfDj2nQipDW14gEZVX Etq9/FZHxsjG1R/3BnuLTokBIgQQAQIADAUCQnxpIgUDABJ1AAAKCRCXELibylet fBe1B/wLr1SsrExlkk+Z5sVrfwW5AUs0KWLxIdgPLPmmiYC3VmygK7tcXUTRz1mb +yORyfdbanfqbmmhgsE/bOf95OsuIeG2WV2AY2shsnCTltlOTcB3L0T7JXFrxOgn KqWFCxjSJe6n5waFXgHO7s8kgWbQ+2yhWdIomWZUclJDOiUQ2p6+STR2JnJmN4W0 DKSVvM5JCldlHSji4Wrh26rrLTnIfbuzUiQCP5LRwVXTrIz9Q8TM9SEvIpnzEL9z jPtdTjGaWKU12L692Ly/NKAdQWlbjMp8ZmHzlorqx8Tdm6KEudvA/GapZC7k4lii K4cGLyNysQJfL0Cezv2osWlK36mriQEiBBABAgAMBQJCjY6FBQMAEnUAAAoJEJcQ uJvKV618blkIAJDbVS/cW/4dOIpvCCF5a7IlG2uBSn03+0rLvgcE61Bk6VZgGFSp +TkD0G0gvipBGCSXjSHLMfStLpCvZxnhR0C5rwE1sS423uAv+1BXGR/+TcT4er41 sFuPqFHu3yDLNlbnnKYXkfhfhBuQKU9QKn0N7V7aHGlnDNL0xhGpaTqcVs+jvGJR iocGW7LABqgp7Ay/30o4S9HttsS0Xc9QgiiAXSMoX4SPu/v6/xJPDSsM+GL0H3p/ Cu+EIuMIQAkDS8pHWufMfu14APTvWTzGCR+67tkxN/DL7otej0UcGRSj5rpp5nBv CMa4CxqFNvsUBjE/VKcpF1l3vJ5n2XBty4mJASIEEAECAAwFAkKfWqgFAwASdQAA CgkQlxC4m8pXrXxhuAf/UgezCBP0jyarCikqrCBq/hyJIoyYpNi0eN2OnaT8TA2J 1fhfQ7s4Bga5IEnnaBCSp4w6pxlGmBIFj3LLHLfiX7B4Lh1EFpM4VsmHjHOBzVNE oa0zdmwsOhz6P7oRDdCxt9hPtiicAKYqdFhG171oXNtC6raeR0HuQ348YM9TD7BS W0UNJLsB+TtthNWCMJH7XNu12ryVdo+rpiCqbDNoCf6hrE3IecqWLHxknHj8aMFg S1744lTTk2hhe2kY4/9yQfcLoBQnVjQqfYtveJ4AdqOtrvupqf7MNIiahJ2I7ey2 6+q0WIH6CRnPOE5O0KP1z/UbcLP8rhRU2/kvMlopeYkBIgQQAQIADAUCQrKEJgUD ABJ1AAAKCRCXELibyletfJt5B/wPnQb8BeA6VoLTIRi7fJCScuZQMNOisbGNR+9z tc4y7HVLNEV/m41lfD0zEOyb/VKdpIoxN/YRfCJiRbqDKO8waNTdzGTc1+8+rYsC /wdh3fcHjo9AjJHUPej++wwPbev4m0/JG7510jFg2uhzrLAOSyuzJuedD12HoTyk O6FfEMw7UUutsZNPG66krftrUcLDk2bmEDSDnJQ4Kz6EmRnGfRc0cRY/qugMJ2wU DPbfdaqrDbcuDYktgsy88wTMCXNioWr+j5BuyCKUYpVxq5DB2bPAuRkQYIgpxI4h XzSvo/2X9FYIhcvvOLN1zvrzBNtbSUygJluXIif1MVk5iKZHiQEiBBABAgAMBQJC tSlnBQMAEnUAAAoJEJcQuJvKV6186sUIAI67K9iDMx1rMBGvpr1a2KMvs8B8lk0k vO+z8EHLDznCtN2ajfCfpvAYD/B4nu848kmB5tWvP5TfV3FDamM0Eake4QQotXL9 jVJn0XYf8m71zW0sn1LzYzpYW1u/lkIctQ/ESZCBLtkXSpeE8aQj08AIPLVTVROY qq6i2qgVvPgs5VA8p8NKMfffuVCKR9bOUODD8QyOjTZWNQ+9Nr97E7VX2k46l2Vr HgZtwBZk8jy7bb0sI/MGJgru5JiibUThUBNdruOwpJzq+7T7NSPxr//dNDTaWSTx wl1QclQYOuNTl94nWkzWlO4Dg+2mkGZTi8D8ExrYfVDB9IiLWDpx+0KJASIEEAEC AAwFAkK3JIcFAwASdQAACgkQlxC4m8pXrXy+WwgAuF92mI6tsfsOnl4S14fOMHbp BFYou4yGHWMi0GB/EP77mJu1XY5vKXWnbnltnEbyuboskqRghEpCf/NSH7yKL2X0 2O1+59SOOb4SI2W7DzkK5ysdHuT9WjTvyZPksGOxnwQkxtVgp0p5EBfXDEtUiv2h 7AVvOARKjuj2VFoiKXsTW/P/wD3i7BMu6eGBhJIyqBzCgUZPP3dDZgIAW+N6Cn+d PQwEOXMKndgkOpxDCKS9WVJQvDhFMjDA1uNXfsyQw8XwFDQA0pD7A4TW1Os0R53D egb5a6OviCLF2NagVt3cwVdKo8fZBB7IWPBB5PjpxjAjl/9HgORSU7Hjvx5r2okB IgQQAQIADAUCQsj0IQUDABJ1AAAKCRCXELibyletfMySB/9e9SK81Fk0f95Ve9Pq Et8NFBdz07YOsqPVec7FiCihgP9I6fAuq8Mg1dCgzhvyCNyb5NQvX3wi6lNZ4kgR yzuMmg9hYkbLTq+S5apLOnmdRlxhsMUU5+YbZ9v+rIffoXT4E/ZhYQMqLMkoIk9u asJK3mdD/HkHpQGXJDRC1FNclx5zMiU+w8oJqg67lpMv7VYVHaqHtj0xK3C0/ODA nDzDWOYms0OZJeJ4XdGUWL+fTmwtJFEov4Z7Uh0FSk4D1FIHCENH/4+ZdVzaP9Kq 0TRXNuo0hLPT/52mvWMf8fi6pODQcKE7N2T8aimCMsf4Y/QAA2/YbQi84UeajdMR oV2YiQEiBBABAgAMBQJCzD+pBQMAEnUAAAoJEJcQuJvKV618exsH/3S3PlLAy+2V PS1lTHuVOEk0YsLYc/CpQuEfKDQmLvPHL5QOOj44pXcugw8azToacifKcsZsQNcK q6mBzf5EonC0TLDWKia2bRBbGPqvlwFVwc3U3GjXpmrgBvOHVq79nhquQ8uTy7vi MFUKWYuwuMiE1cXgPDZm9CLiK4KHl8mX9gDyBb+LOyItQ4hLzRbz1BpN3J2l7fy+ xiCrUsGm0o8w/f2yMYTb9JQ3kWuRhUy6SAFdXGibQId2/58ez0tdfemL3k7MFLeY 4rdCJHnXIoiFj5XDzz4ImkveojcyR3NQa1VgH3IZ/u7BHLyhHSkLsw1ENBS1scIB xXtvSyEtiLiJASIEEAECAAwFAkLRh1oFAwASdQAACgkQlxC4m8pXrXzA3wgAhWjG Ejq0P0pXN9YZNSzBx1NYemQ8aDL4dCDbgK8CDfVBXkOW/2DrrgjcABamjzSyKsIP N7SJVIaqL414jw/YScXXMhNlJBtZG6KEE4g8ChO71vL8CE0s4WBGi3GgdIzDpQBU hN8Rl31DsUO8derRQkbV7APSiT+mWVN1DyLoh4SlW04noqpFk9kO4VU/2Yue4DXo uCD8A9MpJThIDwqisfCMl3BuUJA/lcRAW6rWGbcx5+18aV7RiX0PYqZQFfLOgmEI WEArTr9HcOFrTCHDcev002vQf99tk34g7wh4gD36Z6Z1EHW2jAhC9GFjU/o/HI7z nEMiitcDK2lS5n4fXokBIgQQAQIADAUCQuy8BAUDABJ1AAAKCRCXELibyletfJ3f CACy3oLduJ3ctEv06khfEUvZyfapzOClzHhvyYweSEgJcz7t9A83F9/fhk16ebmJ 1OX/o1ACZkHdUtBJ+H+Z4YHXioER1J0/oFB5VIxxv+Fnp+yJBCdlIyB0B5V2qN03 qry+L0AEuQdoJbP3y3CHnrzClmk2FoJx1HmO24azmiDcnXdA/rrz6KB20m0ZHyNT FBZ6FsT9CJ/tgfTEh7hlR7v4bDJZ9sUrbLv5TsQ2NTFM9dzhzGit8RlVDslEy7I+ IT3MrHeRzX7skqu7Gbbot/nG2gZRDQIL8pp+wMljRQV7aCw/KY6BfmGrhL0f2XtT U9k83bfn6kXVnhaVhJAyirDDiEYEEBECAAYFAj9XVp4ACgkQa2rG25pzdHtJPQCb BdDITfqiE78TK38CnBhxheMuokwAoI+iB1ZISJnGs/yEsBeiDpCMLGwrtCpUaW11 ciBJLiBCYWtleWV2IChCYVQpIDx0aW11ckBGcmVlQlNELm9yZz6IYAQTEQIAIAUC Rmv6OgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEAvwZBJguh9HwKgAoNgO 4jfdn99TldOw5nmbCDhoIlBQAKCjeCH4rtxwjfuohls4UDMGvvizMLQoVGltdXIg SS4gQmFrZXlldiAoQmFUKSA8dGltdXJAZ25vbWUub3JnPohgBBMRAgAgBQJGa/qg AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQC/BkEmC6H0ciXQCfaLDgVYoB AhALXpSaiCTIes6LtjwAnA0Z3Bz53BhIZVgRYmX4h8KrMUKrtCJUaW11ciBJLiBC YWtleWV2IDx0aW11ckBnbm9tZS5vcmc+iEYEEBECAAYFAkJYLMEACgkQntdYP8FO soKJ9wCgxl+jp2g5sORP6iPzlzfKPVarKZYAniAFJjD5EbtiBZ0NgDdF7If86iRo iEYEExECAAYFAkFbrG0ACgkQIspYTHp7o8AVLwCeO34Uy7VOGdRyi1GiYELYpXze C80An3UiZy9WsyF0Ipo3qmPJcu1/OAURiEYEExECAAYFAkFbr8wACgkQIaZGm9Hv uqa9gQCg1dOu8uYVsz16ssIRGdqg94FKdoEAoOvi1FUa777JSHmpn9DFewEU72G4 iF4EExECAB4FAkFE2EACGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQC/BkEmC6 H0euxQCfXzAjPx9rcpwiKCbQmYT46FAiFaQAoIU/wLHhk0P2tPsypbH7d4FHmuhx tCxUaW11ciBJLiBCYWtleWV2IChSSVBFIE5DQykgPHRpbXVyQHJpcGUubmV0Poht BDARAgAtBQJGa/3vJh0gSSdtIG5vdCB3b3JraW5nIGZvciBSSVBFIE5DQyBhbnlt b3JlAAoJEAvwZBJguh9HFhYAnRODziCK9941utLK2rDXA43JljXTAKCmccNmG3gp iAQ05TPn6EJpgILHyokBIgQQAQIADAUCQkcQ2QUDABJ1AAAKCRCXELibyletfAr/ B/4lF26+op/jSSheUuQhkc0JnqY1fed9bSgon5HpKuoFWwURHrf0F79lY69Z/Cqm suC249GoAmZFtrNdp+BzjpwzV+VMXE/2VGhGhE6HNlOGXUd9nAJ3Cb5VLJnWQ2U/ OvV1sm17v144U1KzWTg24YdRBBmWS1r/8VoJTBweevQK6UbRtt5w4cuIoeHlpBZI 6d18sxxfD1Y1/BS0d/v8dQYqqk0ZtFA/WGXNTa71LCSpjIwvOSP82p/W1U8NhnlA qDBYHLkHqvGkcS+WJUkKz7hCGDiAm7/wgQMyWEzODVBQu6V4kpSy+EuF5Rflo8aX CYbs9nkHydMuUglOcSRd0Jo5iQEiBBABAgAMBQJCWM+eBQMAEnUAAAoJEJcQuJvK V618BFEIAKQ4PJv4KBXRrNXG8NX2AhGl0PI/EzNg64zBhKH+dwHp5IVgX/f6oO1y /8ePRmSY2qI7D7eCiWjAnSkx7TQ9jyZxOKvo9VzTgfWT0oHod8suBMM/DAsDuvmf s0k+bWmi2Vf0A2frNCL1UWF8bGt7LFGRI62cq/hQC4OFAjvxpIkr1CHAqC1MKhfz f4dQ28OS5vbpUR8uFS4LlfPlRJCkKWHYJk8ju95HAXCXr2o6QuoOdtZxS7gA7+65 frLUs6SzW1Q0IyebzR0jniKlJhZFTF0usd1sbdOzofSnup/uIEktU70PSkrFDvGK uXhrUn+36+7jRNzefrcapzsRFf3B5Y6JASIEEAECAAwFAkJp9GUFAwASdQAACgkQ lxC4m8pXrXzzJgf+NhiK8dfBYwdQknv0aE48gI6kMapxK6uJPxfkGr+u91eD73Ol gUQvRrLHqSMasoXEbr4iORyho2XWngTfrXDeOZpOthAKY5fI871yiulIeevQI+dk XO6eHfaRaDSxbjIWdmcQoQEjJfCtfVLI/3x/AkUPilFRoPNdc9XsbtS43pxA+cgk lIiX+HhhCwnILMbkSNIhDO98RDeSeGMr6PXGzpM5bovYre1hiRBe4EfBK7fW3iuJ ymfGj+1Hidk+2kGYBk0Aj31DD/nwMVwTWHWXW/J2KuDkm82z5ZUsvU4FmKPczHkR MPd42u88c/5HazFSWUkFkQD+z7oyuFxs/ixHaYkBIgQQAQIADAUCQnxpIgUDABJ1 AAAKCRCXELibyletfISVB/0WzMcD1eH0KGqQMpAwUA3+wD7AR8w74HjlDBERsLs2 MYGB+3F2vHzUYdFj7wEb1zlFW18t4E5GJx+Owj/rG5cx+zl7TeSnxohwxgodKzPh gWeEFnuFwFOGPbBcCoqfSasmaRs7kiGAaBA/VToUdA9o46LSSsY3O8CW9c4ZVe3/ cuI9Qd7k1hJWdLOWpUhOi03zPB46+uAWYM+si8syZ01uVNWFcp7Rlcg8JgDZ5Qxq dLmyWxbdwqVjLpt2aVjIEmiRQMYTLY0Kn0dJHR8BKWrMqV5yCcBbPIF1z+yR/On9 WgfH1k6/9a/wbtcauHC+/tjWFB0iqGc8+JYv3ckpMZiCiQEiBBABAgAMBQJCjY6G BQMAEnUAAAoJEJcQuJvKV618hFYH/iDSc0+noWX1n8JEjjvDx8d4ojHJYF/mqw2l ryNJfkphluYy3joPlLLqLET+pAm5hxCtd+CGS64m04+eq7QbVsreTqlKMqrdLaC/ TcUq0Ys8XfxlXJ0Bn5Gb3FeI94SFBAx4BCFtpdQbZ8urMBGEoNAFMSiNgd+oW83e u5DM/hjxhKWUfa/b01NSK/1SNjx9RiIv+4/mpLuNVnfKtzdie3MO/uL/7KoZGCXy FjI7q8zxu9POackSVbaUdxfdX/wMmqm6Ua0ZX6Nz57PzGL7V3F1NZRS77dL32WQ3 OSpzJWdxVmzFGwmiPLl2QR1JZ1Pqtst3Ix6szMaGQPCRdWGec7uJASIEEAECAAwF AkKfWqgFAwASdQAACgkQlxC4m8pXrXzl5Qf+Mn0NUER6mVy8Cwnaug0G2gckzJXx frdfQ07Vz/V0EjROJLsyw1bKIflxiRnmv2tuYwZtFTAsTDIBnRg3dWkWq52lbXKT TeMP4cANUv/bEJ12xhZAiKPXRSowbfYl2XSErK3j9IYESavbb3NcMFMJYkzSZtjD vlDpQmOYcAcashlJerd0thYzyyZDlDXtOWYF+uVoIlprFArHQlkTHjT6j+GHnbFD uMQee+QaCgo8yPXKvQaknJ4pj21y9L/5P14Fgl1DrWUm8oEvhKcA2L81mINHFoJA eN3i6Jb8esWa2FBTZwGlGSEyw0iLS5CxjR7HVuxaQwAeKy7Blr2aCSjZnYkBIgQQ AQIADAUCQrKEJgUDABJ1AAAKCRCXELibyletfHgjB/9ryx6ouX2K++7BwzQSpdaz guyR47JWP/JBEKJk9EpGZRyJyM+/RlaGJjlN/5F5Yg+7Fuw/Y5+fOW1EyXyyOaSm u9JYxXhvJz+VezcbjigFNgGQKBXcmvXSva+1+b+U3qH5edCB38UAhBKzF1wvCuir D6nfpglaKtiYqhcesygXNaoVUWuFly60TBGHnK+SicyWvBgV+Oq7fhQ2CLqBBIg5 o7YwkqiwoWOCdTmVe69OrlE3xibNUh/q5ppFauRzgjOmkiXNFI6qxSJVmrWSxOCP uSDB73NX8MuWe0YpjveFoC9MuN9CupL/aAAuESlDI4UMpxRVjjzurpABtuSaGaTH iQEiBBABAgAMBQJCtSlnBQMAEnUAAAoJEJcQuJvKV618sxcH/jHYK4jLXBr4Syv8 8NSm8+0+bZNAtjxmHIJTj5djuAanP05gljB32q+uK1JJqOMxa8dTz17icx9sV3S+ F4CLfGUxZeAyWHYPPGKH1CgzG5V58PUQcezucP2G9QjPOeOJFOBYjMg/5mtnN9I2 dJAgggalAbwsmbSK5MwKwE5WTw39xbcyMupAP5pG8ZAa/PfH2K8jTMiwh7ssIEoJ pNiLsqi5aDw+IhZv0XmrtjZIIfkRk0T1ZNcRzLfar4m6aZZkleW4ZhwfMl6j+MSd nUgEh0sH9N4iB6UZdDTnFh+GU5JJ8yDHU174jhp4RtliTOs9i2OyPpqHX1Ed6DVK EU3ueWyJASIEEAECAAwFAkK3JIcFAwASdQAACgkQlxC4m8pXrXxIVwf+P/aMahox tmRhgJCWhqcsWGbYx0z5I4gzhq6+6nnuj/6riJrdApw3qGahHqx+qH9uhaUP+j41 82YAxGoY0CcsOVcEjLZxtLQSFCrgkW2opZZiYCrKE7Nqu+/qlhPmFUobrNSz7HTe G5wSRW79r/FrH3Qj0MsoQsKw1kaYHiwIs+GpJhhdvK3nuNlDwQhIPdH1fZWBzGBc b52BrggjpXN299fdGDEyDfbztvCfigTP9VPA26Nvkt0FECbZnDL+Szv1FBNUtuj0 iNW2jYnaw4I9l7EfA04YwWKJMrEQASO1Q8NMh1fG7CThLJ2HJF2SGYPq5ScgKd8S NpVPQ25led5cS4kBIgQQAQIADAUCQsj0IQUDABJ1AAAKCRCXELibyletfLecCACY t+1IQ/6YFhQsXjOeY+80CiFh5eCmv79sQV1UC1+S8PslgZqOQrKT+Ij/k3oERNrl CXFPql48pLJo2POFAzOONNOuNaxIjvXxWdoezeHSULEwOu5/ilTwpPGPcSbYqlPq 30rguRqFxWyHrRx6D5iBY65uGDenb+2qY8d6xKAUijD1YFCinfzKIyWmmUHClxxw BDASWGhc8L+1VQ4h5WC9jcMALaFJwqcFSf8hoUPdIR8E5qUJo1mptZtLptnTs0zj mw9dZUVY9Rx8fojmFDKxvaqvbYzqEHuTqSX4oCDeWCDtsO1TRSK2m2V7c/DAalrL 6uYQekkP/37S9TbEixQSiQEiBBABAgAMBQJCzD+pBQMAEnUAAAoJEJcQuJvKV618 0DsH/0hU3FFmYwoeitMF915zRpzqeZjCB70Egw5Nt9+lt4fCce+IFyiH2owlbpRl 2eQXEV8coSK4d5nggsnd0WoUViJyGBkjOuo4G8Fx47eRizg9oAOLj8+a5cfLInOc xojfv3URlNSlPosHLWgYKQe+6rMk4bCJJHsreKulu+MEAIo0BcystzN4551MH/kh wWCT3gRQvfXMpQpEUPc3g7cx1eZa5n2R3/eQHIdPyWLbqVzfLoHycatSC0hZUmtg 8uKuyEV9Gd9b0SS4umBd3y6j4lsB+Lyk7F6Nzx8+DGteFeWtt5Px/TnXco4/9R+W N7GOMr8U9j8NtURHkBKsWVvSVCKJASIEEAECAAwFAkLRh1oFAwASdQAACgkQlxC4 m8pXrXwSxwf/TyVtcaHWXqO9KLbLEPTLfXjAIqWBjzTrpX59Gpf2Kjrx74SonG+2 267M/Q7yyzbGnwhwEKLX+xwNe+KN0m0yM6b4MdOw8lUQg/Qo0SwVQDWqpb43x5fB hyRKXqkLLZx0OOinSKvK9WXc63qXEhbXFv0gl/rdfs8eQF3ZmU1RI+cjFVorupMN 3s+OCaciTR04vgJT4/6A9iLujIYLTCLk5I1RGK7l42JQUzv4F+n4IAEmjSfCOqm2 +gIPQQzlcgYNY72HtHECfJI72jrY/qLGvNJ8+GIyrtfSsY08/rG4FK/UH7ggJ1vk GsPZQoqOjcnbaq+RSdwSIU1uSowh1gqYV4kBIgQQAQIADAUCQuy8BAUDABJ1AAAK CRCXELibyletfEjFCADJpplFbznx839sgqYSa9HTkO43FLbji+xvk9UkBCNyBcuF zXZnNzrx36aHScIFonoUYu00Xnv9Xak3z9hySr/8q7ioJIwan0JVsEV2JHwKieE6 PQ8uHe/svlE20+sY+1xL4XvZbbQ0up6ynnxdFiNQ3h8h1CVKrlEeELijMezW3M27 5gdqdqozxwG5W3LDj7aG0wQH33QUkjoVRozQH20Mg+ubC0cu/PzOAXBk5uh+fbgQ IMNw/bNj5bXvwoptkSp7CHjYcXiG3OhdEB6UFRUO4KbC4+NNlgsXHFAHC9gSJ9a3 tFqC+GeQNkiBfqlD2yJQqaHTSRMi5Wz4E4C0nwONiQEiBBABAgAMBQJC7WI0BQMA EnUAAAoJEJcQuJvKV618lp8IAIAA5TEnRVObgOQfkP5R1uvmz0d094pQQt+7CU2Q //7w0R5AvIs1ePqM0IDzVQ0KfTU7VzJFYSWTQE0fZ8yhn+vtg8bsiFP0XPKAjUmc oWqsFx1/qRgrsi4n3cZU+Kfdwt+xqUhW4RX4McxVfPN6gcxHVa3qNr8v7pqjm/Dl VHHx+osTcZMQCpGT734qEuFhF8wbupeJCi410ULF0Xqf9WrQ6JOBjvTCsJRJ2c0I D4bMKjkUP7+G0BBH0HKiobtWQDm0tFy04wG3BWaIar0zEiTFVl/ChkTKILLJZVDf wDZBgkP2LQ5SxwkaZ4esJyYuWM/4fff+HFPN9OJhuXdcbjmIRgQQEQIABgUCP1dW pQAKCRBrasbbmnN0e8qNAKC8gC01p34Zu+S5sA+Lvalfk2z2bQCgwCUk83bD2MVX M8yIJkFMAEcLbF6IRgQQEQIABgUCQlgswQAKCRCe11g/wU6ygolCAKCV7DoJ3IWV +2rkU60rZ0F74SH4qACgzEUAFOwERR1ani43VVbRVt1FalyIRgQSEQIABgUCPja9 ggAKCRCF1FBFa2kbA3MxAJ9y+xuvY+HKTxHdMjjQVcZQoJ6f+gCeMBwdUM/iqcw4 kGoMtUYkwOKUkOGIRgQSEQIABgUCPjwEswAKCRDs8OkLLBcgg8c+AKCBfl9YEpyV Wct1a0clhZYaXGsA0ACfXQpZRGmyS2/XY33ycPhKBc+DOzKIRgQSEQIABgUCQLhX UgAKCRA27/mqpwtSB3OdAJoCdyMKzshLPDSEtQ5OfFcszAVwvQCg1uhrbo13Beso A1TVw0eD7Vmc9a6InAQTAQIABgUCP1dXegAKCRAiRgxqA8L7Lax5A/wLCoxU/LdE j0ASaGbZT6et8m4lBzi7lFVyuRNCTGLstcSWS6ebRcAKU5TneU43gAkhq2u4+yEc 9D43E23qlP4gLAipDYiDB95Z7TdayYBVWZkiSuNL/KoIW3EXOuKf4kUdKVZjD93G Cm93qaUe4J3XBQqxZ6+Rij8Qho1DCzTAkIhGBBMRAgAGBQI/V1cmAAoJEGtqxtua c3R7bo0An1P41fXK5SLyNo52THgS0uI72KvfAKCHtL4XF42674KiQE7oPyXrvXu8 fIhGBBMRAgAGBQI/V1duAAoJEPfUPpPPAX5XwboAoJiSEgMTJVeBtzUrCCUHXxbv SxrsAJ9FNZsm9w8us5spA/Z7AVB18Q03jIhGBBMRAgAGBQJBW6xtAAoJECLKWEx6 e6PA3WsAoIlcyrqT/mjSh0U4lPg4kdCn5BVJAJ43Cs2wPgtZ3TivzW60Hpb9GwI6 pIhGBBMRAgAGBQJBW6/MAAoJECGmRpvR77qmHJcAn2cIFvGeximMk8rn7wosqT4k lToPAKDskukcV3USoFqM0op1pflj4qd46IhXBBMRAgAXBQI+G0AoBQsHCgMEAxUD AgMWAgECF4AACgkQC/BkEmC6H0cSwwCeJKfu/H4R63MQTDDjC0vE/WSVBaoAoKv1 X5j1EhMKnenQt1sbqxL0GgSXuQINBDzKgZEQCADbERrRz38HJOplktZBQipl4KrL /pc0lQylol34RPGJ8rnzeWxnHw7dHVtqZRJ1MImATGubXGtK4+RToyPveXrY3f4U dvRz8GQew9bvaD6PFY28A3Dec2jCSnQPCA+0DVWmFg1dSOYd0nQIFuKUBDqcAbmn hI0/PKQRmjCP9G5eqUZcEEfmKm68JiqMwRRTYI+jMcTIeHeXBkrJTJH7myyCpByb aHo6M9IPeI8U9mJAoQdwPHjhcl1ZIj6/ub/o86yzAYH2+ozG+CmMR6+1GnuJl8Jq Q9ka0FHRFzoBga8Gwp6+bibZG/IOvUy8iqDul/7yZuZ+WstLmIUeKmEIBNTvAAMF CADZM1ZQfJKfIl4GGx1Kn4ZsBEz+GMUMfcO37gB2QPcOEowpr+rlAwUlwNVLyfeB JyoEPv9PJVLU0JSViuTljl6R+sabm1BLhsCggXiMzfS4HaA0NscuNdBlJ4t/jkAG 186u0fezEIxQmgdrzLeZhE2mDXflpHtv/rQBaiB3UvcPG4GSq65zjzoRf/QbKrwX eiIFtSTBZPpMPzlJkMmiTMA4jUdUKjpjXluRxn9l1ouan2WT/w6KcpcFRDXaPtn4 o1INmTWyGVZr0U94fFgX/+yNNgFb/q9ONJBFL7rYotvpVLGL+IGzHv5xLHWiym6x emtWpksVppW8BtYI8cnQOT2ViEYEGBECAAYFAjzKgZEACgkQC/BkEmC6H0eiKQCg 0I7kYcd8hY9Z7akRmB7QZbKLRukAn1figHfNRdbksZ1MgA42+z1QS/fv =r3u1 -----END PGP PUBLIC KEY BLOCK-----
<gjb@FreeBSD.org>
pub 2048R/A0B946A3 2010-08-03 [expires: 2017-04-25] Key fingerprint = 78B3 42BA 26C7 B2AC 681E A7BE 524F 0C37 A0B9 46A3 uid Glen Barber <gjb@FreeBSD.org> uid Glen Barber <glen.j.barber@gmail.com> uid Glen Barber <gjb@glenbarber.us> sub 2048R/6C0527E5 2010-08-03
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBExXeNsBCAC7wmKFOV+UjSn48hWaRAImN0uGgJRVAYPWcNogyw000o0vMKjk 5sNm5YUv2DutTVBQAHytkKGYX78ogpltIkvkr5K0eptVpl2iuWQNyGc4Nq418ZJa hgDLZOtMO4plEmbViLFuz97D6V7yNPSAX6adiCh3A0kc+GwCOhXtQrn/OWxZa4Uw FCGD6uqFXM6s+kkgtqFlWuFB4tAM5epxt++WLEyLCL/znRhZK+tTstZxqLudJnFB ooFOEffYvDB1pNWOarBmSKHncYNjHRqEcNFyMXJ9Fn39I50QDvoh9ps83V+NjuE/ FYzt3MmYA1j9H79tDYpJp7OEvGY5sJCZrMKjABEBAAG0HUdsZW4gQmFyYmVyIDxn amJARnJlZUJTRC5vcmc+iQFSBBMBAgA8AhsDBgsJCAcDAgQVAggDBBYCAwECHgEC F4ACGQEFCQyoT5oFAk+fMEUSGGhrcDovL3BncC5taXQuZWR1AAoJEFJPDDeguUaj NYUH+wS18HZnyFexvxYTP8wHvp68+LlPCSmouq6yqwHaB6qkv8vRS/9lrEGff8a9 Ya5BeaSJ2+YllCIC6f3lnSRHJ3mINEGuny1UHpSMUys8vGdAqC0JsoLgMGU9GUE1 1bYgweLBh5Z9xa7UESLUyGh8GEpcdkQzzXYFa/rmQyfwOt8yw7OjzRzTuHe91b5D iM3u/DhqIc6HfJs2cm4HEf5Hp6WFQH9vKH8MTeQYGAoxVZ6epzoRfTbbrDX8Dd/v hoxMYATTOOc7/kvITSqFxJ9cWuthHtQ6zwqR5dsMXl+XMPnDD3u8YP/xCgnhRJ3I NAjoUHP76YkFe33SRkqM4oKzY1m0JUdsZW4gQmFyYmVyIDxnbGVuLmouYmFyYmVy QGdtYWlsLmNvbT6JAVEEEwECADsCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheA BQkMqE+aBQJPnzBLEhhoa3A6Ly9wZ3AubWl0LmVkdQAKCRBSTww3oLlGo4mICACr 42CZKktecfngCYzx0N39KAn55jiZmUeoxs8OGsbi7j98Bd3IU7tQEz7Czqsmv5D1 aACctF2n4z5i41ekpfzlzkHeSPrR/Ul3e9CjTVyYf/RYYwootcL0tJiBJK/Hyd0u 5mHPC+jyFSBoMYccncsnaOVrZx69tuVKfgLR9wk+ysYwrzXHAq8nuXhKd3SHJ7IP Zp1EoXhyYLL06kIU0/z64UdNKmWwNo2qtQa755KPCFnEfv2wDUXbHU6W53AVlKif pSijWxY5eCuyy7VWMfNuT28zUxS4IiCE3JKKYcxCkXjsaRbaUSSabaZpF30i/kXD KVidRkqSLkL1RQE1VRYmtB9HbGVuIEJhcmJlciA8Z2piQGdsZW5iYXJiZXIudXM+ iQFPBBMBAgA5AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AFCQyoT5oFAk+fMEwS GGhrcDovL3BncC5taXQuZWR1AAoJEFJPDDeguUajNq0H/3FSIfM0aBB84iX4lOSn qzx9L6ubMWgOdYI0vTqDMnrWcbSYr706hVu9tGbKBncRkF5jIT4Qb5Z2QRCgVHMN xZ1/dtnm/sKaMPYEKnBo+gorY4ub4IxS5vpzi/HcR1APYyjxZ4a8k3NsDoImgVr4 laOwYA/LSvi0xWnqtP12DDwgUkx1Ay+x02CFMMyupLOJ7QT/NJOpToiTACaiiPdX xmVIQm0dbM2cWYM0IKaz4D+5P3H9nxEdRsMK3pSbg9UqHjd6J2vwbAy8IomMNYrh /Zi6fgx6MblYHe0DQ5LmTwcFc1FZZrZ1XHJGDBU5buvqaa5ZFFPcnrCKXAfRgEej 5gK0HkdsZW4gQmFyYmVyIDxnamIzNUBkcmV4ZWwuZWR1PokBSgQwAQIANAUCT58n 4S0dIE5vIGxvbmdlciBzZW5kaW5nIG1haWwgZnJvbSBkcmV4ZWwgYWNjb3VudC4A CgkQUk8MN6C5RqMyvAf+M+xe9XdwWWCEyJ3GBSMhmXnC+c2303IdafSoFsm7cB8l nzvSHhjPQ9zC6W7wyFgUs2c5fOh5TeLtqo2AOHkvcyGRgqMViW8hIPaJU9ekxfui uLwpGwArRJwayEeyMT74Ry5/tEsDLLchoBMU3627jzJEQudFM3dYtc7gsinZOefJ S0aXNOT9yjtNB1RsVHVNfwW1pEkxIKEFwWu/aqcMA3jBYCVhs02jZg0jYTbPqjUF NPv8JFVb0+cSGNnGpmYKHQk8c+t3I2LLIthcDFFwc+eiPsSf39HrdP+oX/sFK9yY s0m8QlLR0yoJ2zOehy8r4e3vGWGN0iDjfAYojhPZw7kBDQRMV3jbAQgAyksBRs9a IpEU+j37aGKMhntVy4zCIALaZYV+E75nbhY3yjxHKiOlwOt4y8n4AxIPGvm7qneH acnASuKtlkmn7KvKhaxqVVkbk2l04w4kaHqDV0pGsve8CLv2KLQHDwq9MEKvwPqv ep3DXyocpe75cmvXfLyaTbmPk46+qPcXGlfNXXpMJbjy7RH51glx3rZS5uycoijK oNsblHdLCPvaTgpwyw7bHEpkgpoIFLoUwCog3xyUDZeQKtJwzCPDeJLZ8hxosye4 y55KxcNIvEzAyV9dru444rbYVBm4W2lE15mGsaNZWzMcHohj9XRWepDCJwCC1i98 eImAPsnoW4O7BQARAQABiQEfBBgBAgAJBQJMV3jbAhsMAAoJEFJPDDeguUaja6QH /2iofGwiJ9v59fmONgldH1o8W4n2A/IKAMB6xjPsSnVi/foAgl0l99JDOzMtVWk5 Sa3tk5Hml4FDipAYYcfWG6IHlQ5CnRxdTYJ2mAU9eVjf60xmyhEgmvfC5hUPZDVv PeVouxzGCO0ZhnGnJnos0v3FXpJXL0bkroCyUWGDrwH708hXjWdwS0cNqCqsWaZf 4k43+qdPA3qrQ9kdKDZTlDENDp4ORfiXr0Ae0fGMnCVx01qQfgyYY+M+X6CcnZuj 2FtSaogz6k6ZDrkYC04XdywznP4eBWnokNSO/RGNAyIlsw3NwGu54NGzygaBQ+cs FP+168tqFBrd4DNIVjsbY1g= =KOGO -----END PGP PUBLIC KEY BLOCK-----
<snb@FreeBSD.org>
pub 2048R/DDADB9DC 2010-07-27 Key fingerprint = B678 6ECB 303D F580 A050 098F BDFF 4F3D DDAD B9DC uid S. Nicholas Barkas <snb@freebsd.org> sub 2048R/36E181FB 2010-07-27 sub 2048R/BDA4BED3 2010-07-29 sub 2048R/782A8737 2010-07-29
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 w7zsUcXBoDCfj8IfFwAxKholDgQBBt1pQcCbgIk= =zoiI -----END PGP PUBLIC KEY BLOCK-----
<barner@FreeBSD.org>
pub 1024D/EBADA82A 2000-11-10 Key fingerprint = 67D1 3562 9A2F 3177 E46A 35ED 0A49 FEFD EBAD A82A uid Simon Barner <barner@FreeBSD.org> uid Simon Barner <barner@in.tum.de> uid Simon Barner <barner@informatik.tu-muenchen.de> uid Simon Barner <barner@gmx.de> sub 2048g/F63052DE 2000-11-10
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 8o9/o+UAoI65F9bRERosGt0m0f0q1WwwdGcz =HMUk -----END PGP PUBLIC KEY BLOCK-----
<art@FreeBSD.org>
pub 2048R/9ED4C836 2011-03-28 Key fingerprint = 7400 D541 07ED 3DF3 3E97 F2D5 8BDF 101C 9ED4 C836 uid Artem Belevich <artemb@gmail.com> uid Artem Belevich <art@freebsd.org> sub 2048R/55B0E4EB 2011-03-28
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 yCBkjpo4Ly8FcmqW800W8yVAArhNUCID =IDLa -----END PGP PUBLIC KEY BLOCK-----
<tobez@FreeBSD.org>
pub 1024D/7A7BA3C0 2000-05-25 Anton Berezin <tobez@catpipe.net> Key fingerprint = CDD8 560C 174B D8E5 0323 83CE 22CA 584C 7A7B A3C0 uid Anton Berezin <tobez@tobez.org> uid Anton Berezin <tobez@FreeBSD.org> sub 1024g/ADC71E87 2000-05-25
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDks22ERBACsqOob/YoPnaI/xubQKn/CCUFsaEMqL14TZ+FSlCphq3uZ7Y0W Qg2eqaTp97lG2NTVNEzF7K0yr/C3ofEQmTINQTd7DmEj04DDlR+t8BMFe6Xz2sBI WlEPD54ZfJVqhEX5P6T0xe9hiqjXKwQHHl1skKniKeO07o3K/4bCDDMfKwCg5DY1 /2j/Gid0YmxsJCIlg9kzRGMD/1lkSkQ0KrPH3RVPMrkRWE3rvvMES/F7jYNfKDQj X5lJDKoIQyWh1JwAmW/O10V+24Vl6JEFNQ4QJ7ix9hlkI59YS4TERxCUGGDpl3jr Lae6FFxYc1D5H8LLpiTSApmZcLxUE8CFoZJLySHgjp8qzvA60wMOjkfkWMgw3BpE N8DVA/9UF+5ue4bLHsPn7Jv5NzOkzaTgC/9O3UZUj/jYOp/vkI+0wPnP0U5f304P iLpYl1tlCEpciWF88MS5k3+8zsk8trqorss/XQfFzhHVtvRtgVxj87V0Z01E2ZZr YlqrnzHKQZOAKM2X9FiRZOAkndkkpeB+7SSeXDP62I56B+690LQfQW50b24gQmVy ZXppbiA8dG9iZXpAdG9iZXoub3JnPohWBBMRAgAWBQI5LNthBAsKBAMDFQMCAxYC AQIXgAAKCRAiylhMenujwBepAKCCtVcVRS40E9SY4Su8GTOBVoH4UwCgu3gK3zMy /QhZnnhmTKaguG6XopqIRgQQEQIABgUCOSz5ngAKCRCBvdPEDh+beRnEAJ9xU+6P TJrLGk8PKtO+UY8Zt7MTxgCdHYzFsXZ81j9HY0Z4EaHkQBXv1JmITAQQEQIADAUC OS6PpwUDCWdTAAAKCRDXjLzlZqdLMXMaAJwOE+6Jh5PnfHc09x3JKN4/a0v63wCg 6GdysmObSBQXATzYBuhy/0eFCCC0IUFudG9uIEJlcmV6aW4gPHRvYmV6QEZyZWVC U0Qub3JnPohXBBMRAgAXBQI7JNTmBQsHCgMEAxUDAgMWAgECF4AACgkQIspYTHp7 o8CQ3wCeI+P8VsHzHpfmUMa5kCzjBeqj3zcAoKYmyZUSxhV9TBQPo2WQ7zF3zcoB tCFBbnRvbiBCZXJlemluIDx0b2JlekBjYXRwaXBlLm5ldD6IVwQTEQIAFwUCOyTV DwULBwoDBAMVAwIDFgIBAheAAAoJECLKWEx6e6PATIsAn3clXqExEiP/Q/IDQb7e /yolgMrRAKDPw+6ZxTOJFba2HWEto0PwQ/COE7kBDQQ5LNt+EAQAjHltp9g75EOw pEDSUvK/B0aRUsjoIyAokRuW9Tg8S0xIhtV8ogcklvcXjQbjiEsAiO13hX7zmdmb yH7xLiSjea/m/whmNr9K094BS1K5i7mmUqNEFOyPB7VkPbRs5gF0dCkHT5uVgqFJ HSbss3zPyGYEBi8uDokIfOt4o5CEMYsAAwUD/269N/UwZkO4+NYivNX0ZpcUouqV YDPQ8YLwSrkwWpG7UNvNHd1HS43OWwAOy585SkLpZkjlW58NqyXJuWVC0xJtdTrI MKTZ3IJNXMK2wdK+nBuTL4IvJwkf04pwFel80F2NtgUjR3ZgIlRNvFtvtCkNPg0j t7J8pPvL2vU5hz7HiEYEGBECAAYFAjks234ACgkQIspYTHp7o8Bj7wCfSZsld8vv iM02pWobJy/VvsBJKU8An2auT0HLmVLClDph/fQa+k1R2qsR =ISZ3 -----END PGP PUBLIC KEY BLOCK-----
<damien@FreeBSD.org>
pub 2048R/D129F093 2005-03-02 Key fingerprint = D3AB 28C3 1A4A E219 3145 54FE 220A 7486 D129 F093 uid Damien Bergamini <damien.bergamini@free.fr> uid Damien Bergamini <damien@FreeBSD.org> sub 2048R/9FBA73A4 2005-03-02
-----BEGIN PGP PUBLIC KEY BLOCK----- mQELBEIlmIgBCAC0YtqJTRZ/ri1bBd6NyFd3r4fWx/M5NeqIYOa7S1x/b3wjlAdD Q6/mPMkGYqtUiQx9kMhrmZJHz/nC6SFxw0nSxKOfsvOQZgyJbeKZ7NS3SReOzUD1 Xao0pt6yPH9eeLduI9R5AL+XMvWvPfWgh/kZbOoC25F3TrQQkp+lbmu//cxzn6Y5 OybyTKiF0heYOcBOrmtp5AU9LZWdsEH2rDXBnEIFLTL3qK/HuJariizqUnPjDb1y OfNldKLkcq3Cs8QNpSGrrbWMoLvCtIXAY1kYRywKfT0BgTH6JOoGz6n1dLQHKubZ WCsyqzO07M43O5vhSLDXS3L4St2srV1XblaVAAYptCVEYW1pZW4gQmVyZ2FtaW5p IDxkYW1pZW5ARnJlZUJTRC5vcmc+iQE0BBMBAgAeBQJCJZiIAhsDBgsJCAcDAgMV AgMDFgIBAh4BAheAAAoJECIKdIbRKfCTKlMIAJmIx4DZmHkbpSHxERQyN4kQizY/ x+7L2CuwuAtjabo1wlcE/XacMx01qN7FL931PGi9UEWxdp3FTu2MMH4e7DmY0F8A 7oEbFecE1bjDRKLkRBFo+R6yHvZ9YjGB7dFlsTwaM4FpTfrgg81j3MSIHdg5i8G6 OA5eBJSiL7IN3ftcxIoutYXfPnrOksba7ThEZ9631ft3athczyaISAtdQkIIO7J8 pBBTkE4wbh1AzPRDmeN8DDU9h/pH9W0uVTOCqhAXnSE9C5kZ3SBhvXBPeN9vtHa6 pyR6uqg2+N5FSJ5lENvCeRKC2W80m/an8n/1WCK6QuFTr02uVuGShksBTdy0K0Rh bWllbiBCZXJnYW1pbmkgPGRhbWllbi5iZXJnYW1pbmlAZnJlZS5mcj6JATQEEwEC AB4FAkIlo0sCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQIgp0htEp8JOVTQgA nah0cBkhmPhPVVKNGTQScbdPgu7TTLcAB4SVJHN4Je8ml/OeWrIaNXeQDD8wdfJZ svlddxvxB8r6ScJ3ZtLsSHQnGLejgiEsHEO+Fi/xmt1D+pn0l2dK+GMC4E8dPd5w ZGLg9nFDZolgLQP664eqzx3A+NSgh5A6IteAtrRDg+3uzlquhJNWqup01pymcery Cv0rnMaZJTjE2IsMyzc6hw9CQ9AC3YVfXT/xMlSe9cB3C1EDtmHkKQOpzarheQOT Xi4rqScHJTevKT4Pz50uYwoAC8B793ZRKJ5cYH0G3YuDB4lhPaOeAxOi4Ftt97De HTeeIqXmrDV2kOu3t7ifTrkBCwRCJZi8AQgAzF1fU7BHdNHHTFTmT9f/TWIoEhsv 4oKue/cyAmVGjeg4jEFn6001JWjojzxe8IZzdYwAgOwHGRbfxiirvd1nzxJlOBVg 8BfrplMcRAMh61IprrU310cd6tVDyxvFqENLM9fgCnAwWAEldZoOSBBgPmiV5+Cp xZJu959KpsoG6TuAn2PYUXdttjvdGgzU0lyji43GHZ58yJYtruFfikWoXJXlXvuh 9GjNqFk28vKi4b7HBR79zvtyQLT+xkRLcGMbQemLeCQmi/O4umDpkVovDn/FgaPB iEZmtRbHtCAODO1vW4YrYvMYGlB224hQcUuiOiEMn8P/oMkg8dXe52xFEQAGKYkB HwQYAQIACQUCQiWYvAIbDAAKCRAiCnSG0Snwk/baCACJ3Ed4SX2BTo+jqt5f0hZx OO4s1B3MAD7y8LzL85QySYdr/3e5i1IrgLTVOH1UQQ2Bvpk/Ly3M40FBUapHzuOa TpOfqk3nHwj+o7HuFQr3yzVl5o50fQPkXhwf2PMr0iQLuwHdFzmF/A5aNW9lunsT ICRXApvEEQU/eq2nSUrIINxSYbzuXHfkNWjcFX0DIv3V/ZKBxCnVQknc7YFXmqXC PEjAsMS6mj7fzkr2c+JDH+AK7Y1gexDyjoSqZb7HeTiy1c4x+UXDs4605XAwKpZK 757qxfG/ThAKmn2/xiy3bCYmHR9PQ0lBCCkXdNeRgdklUkawzZQdcqrO8ElYJERp =uQuq -----END PGP PUBLIC KEY BLOCK-----
<tdb@FreeBSD.org>
pub 1024D/5AE7D984 2000-10-07 Key fingerprint = 1453 086E 9376 1A50 ECF6 AE05 7DCE D659 5AE7 D984 uid Tim Bishop <tim@bishnet.net> uid Tim Bishop <T.D.Bishop@kent.ac.uk> uid Tim Bishop <tdb@i-scream.org> uid Tim Bishop <tdb@FreeBSD.org> sub 4096g/7F886031 2000-10-07
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 5ACdHjn4iuMiXZA8cDDPAi8VybndPak= =F66Y -----END PGP PUBLIC KEY BLOCK-----
<gblach@FreeBSD.org>
pub 2048R/D25B0682 2012-11-03 [expires: 2014-11-03] Key fingerprint = 225B 941C A886 05C6 1C87 9C03 DE72 593D D25B 0682 uid Grzegorz Blach <gblach@FreeBSD.org> sub 2048R/5DE28719 2012-11-03 [expires: 2014-11-03]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFCVjegBCACjZOtHgTAG3s3XOVJt1VVM3LZTKKx0K5Aip1c4TDetBTkNIPCb V9UiflZUGv9v6OEF0O5rRwS6WwTLxjhuA9io9mSBWuCfZywsRSShpZQbEMZq5/F+ OgHOMav3Gc+ITwvM/nFPtU2OHj1h3t4n6IBbuVfPh4Yb9TJsAWQlUchWAOBj7CG0 oqfR2PuDbYFtXNnGVrpZZuxxBI9onvY0n5w2gmtmO9+GFQ8Ob9K6EI/jwqPVGSQK Tch14aaeRF5Uh+Ua7UDXKyZFBJUuGEvtHcn7eDNFEs4SY4tW7he6VGiCwr3gU3pZ CdQwEUDwXkBm/JZ8JjsDOq8NVtTX3d0mViTRABEBAAG0I0dyemVnb3J6IEJsYWNo IDxnYmxhY2hARnJlZUJTRC5vcmc+iQE+BBMBAgAoBQJQlY3oAhsDBQkDwmcABgsJ CAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDeclk90lsGgt6gB/4vyw2faWL5MntH grGiwqdeCdm1x++zGjxrs30RLaHPmSVXYA/bQIBbnVs/kR2wRpCO9fxl9xQ5bBnZ vHwK9+hbGqli/eqWuvgwRYmkIAd/xLVN8Ffyj73RXRead6bmpOQ8e2Osabttyccc Un4V8OZptpIYLbdnVGsiB147GYnooPv5uJ6RD+Wz+iSORFzcFEA6VD0Ft6vxe1on +dBxpHO8Np1wID8JH3Gl6oGfpYcPsp1QVknMZ197+94QNHgN23xzDVuKkbjFb1Du N7SegRdm1wwhF0QlqIWPIQT8jXY7WX1NWV6ns8gOUXChJxGMPRsOxCuhQJp8crsS q32CqqDmuQENBFCVjegBCAC56QSMFVZjklZSA9mxNm6GZyBcUoAYISM2hg4QSN92 /8CY84TXiAB9x8+KoYeVukMu5B/2BhNW4bWA/3GwMk0tn1s2ZEVFz9ZbTBPmTA1Z x1wZOKdr4Y5feOO73ouBW1cyR4AgbYEsQtllfb3yQ2CukouEJNjesDT+zDAJnIS9 JG+1MGngMIxddKasNfBliiN0iNNbGEKpFvcNpTBnIpbQ55/yMMJ9CZmey/1HFKBO setIET7f1Z3f2tUoxku73QhwfwBlrw269S4Aeuvk80bZa1YZLoQiZ5B2WqFz4V4H uxk9WgqOQ/gJEFCOYkpLjSctCuFQnLefsV44gveB+LU7ABEBAAGJASUEGAECAA8F AlCVjegCGwwFCQPCZwAACgkQ3nJZPdJbBoLnwwf/Z8bFOlDaLWkCP4K8Uz6kHGno nvRPc6l76aJhqDPceEiDU1DumjTSokQNj2i9jKqhM/b2cPLIwWbYbkypLer9R00o AJcM1i2nkZXRLRMIFfQTZUmXMSZvZ5NG+MyiSAI9zpfw/psgUUad6mDUZafYVWez KnCFybbJ2TwcFzFcHxi4desKNnrh/NTIt7XyFVof9Wkz8Zt9cGGf/BxQPA9oPbvd b8wN9Yjegb4OunNmHc309cuVCktSlr7u4kdMUn0LuZmi4xZj2XY0+GuHErD49G1b x4+G59TE5S619vSAcdjtmvXDvV8no1Y9ENp/blCkeKcGBoWZKc6dHSw3RsMawA== =/8wY -----END PGP PUBLIC KEY BLOCK-----
<mbr@FreeBSD.org>
pub 1024D/D300551E 2001-12-20 Martin Blapp <mb@imp.ch> Key fingerprint = B434 53FC C87C FE7B 0A18 B84C 8686 EF22 D300 551E sub 1024g/998281C8 2001-12-20
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDwhwB0RBACelK3FYxd6cT5ukbiSdVLHPLfzgH3F34JfS6Q4FMXgEAPtx7iy U4Lc8A4Z2gCq1ZHBZTzKc61U+nzHe+eUWtAj0h3qDP4DOd7JCZbh4SW6dMIC7MAM /9J5br6e2fIIn3rzbROXSW7CJPox2D/zZcT1b727Wgy5NHUob3qej/zhwwCgrZ0o KBapUXgnKhesQzKlH2wWCJkD/3njAzJsFS7nDdTssMtd7ip9W97uNOFLuJ1/Sg5S 332BUby73hNzSXlS4rhtQB6NVBRLfGASuEYBJQIEz6aao/lDprIxTusCTrO/EGqa Dy5y4XE1ClIyZ0yVw05UJiTOZ7Mu/kUTBBzQ2i15lxjzXBt9pNifvtcKBhcDmdzQ zepQA/9Jio4IBFmjPDsl3kpvA8KqP7VXKFMMBVT9SztYVIeiFgbvff/YCqzkE5RD 0PWUFPF3o8rzsCovlpySfUNLUlfqxEZ+5+/5ky7AbJ6Vmyn7Tl+mBSZs4mTV7ktN 526ngUaW2j+aO2SdWao/di+sRutrgRjJqyvgGn1YGnrSoKbMJ7QYTWFydGluIEJs YXBwIDxtYkBpbXAuY2g+iFcEExECABcFAjwhwB0FCwcKAwQDFQMCAxYCAQIXgAAK CRCGhu8i0wBVHh3IAKCDMueq8RCcRO+3Lc+uQyXqDKCf3QCgpVWa7oS6lTiNxwSP enZ7+4g+TkK5AQ0EPCHAIhAEAI3iAhZEDBjyJvPS74CXq1ypWvXfQUCYADCc/Cuv 3xrr1p4ff3oYc+IIVdeOQktKWRP1dK7v1JLmqFsNQQIs+NtgHyO+azyX5vJGVRTg aCIuMMTnrDBC7VbAnWXtTHF5VKmmd891Y+nk68p5YVnRPc/fReXEY6dA9lqW0bN2 f2jLAAMGA/9rMbPpnRy+uvaAQChkHvOV1RnDAhN2R+U9u3d0uNnv7sWa/TJrcdig KNUsUvXqIXVkqEMrYHTbCVC4mLMd51MLARiIKOaHeynRZYkEmdi5X7EiBLS9dCUe 7+vMz4jV6MRIGyr8TBy3CEFIdAnpY6EIVd326PzYIgx8UZw3oEvjGIhGBBgRAgAG BQI8IcAiAAoJEIaG7yLTAFUetM4AoJg56qwlr8E1iEs0F33G6POGCWnCAJ4mW9E3 25TD51pcom8Plwy1BkuBSw== =oE+K -----END PGP PUBLIC KEY BLOCK-----
<wblock@FreeBSD.org>
pub 2048R/A1F360A3 2011-09-14 Key fingerprint = 3A44 4DEC B304 5191 8A41 C317 5117 4BB6 A1F3 60A3 uid Warren Block <wblock@FreeBSD.org> uid Warren Block <wblock@wonkity.com> sub 2048R/51F483F3 2011-09-14
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =Hoyp -----END PGP PUBLIC KEY BLOCK-----
<bvs@FreeBSD.org>
pub 1024D/B32017F7 2005-10-02 Vitaly Bogdanov <gad@gad.glazov.net> Key fingerprint = 402E B8E4 53CB 22FF BE62 AE35 A0BF B077 B320 17F7 uid Vitaly Bogdanov <bvs@freebsd.org> sub 1024g/0E88C62E 2005-10-02
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEM/sJgRBAD26RM3o9QC+V5JO6/zr3ffRnNb08Bc6YIvpTd8yUhc4AIa1Zbg QHoUNZ0pOLffeZ3i0wnqV3lMV1cPMtvSRWlvh+XSiSg8hYlnh7+oAwmqs0Zev1r7 w/In683ytXREuidcak8qWq4GAkET20sIICV7Ye56HJDlKrtOjUWDhVQJvwCg8jUp CDtJ8V6Cw6GgjxH1iaNR1X0EAMKCUJwZgIoh2Rpqfrbwv92AD7dmaJJLVfnUSMCE GvjcZ+O41PpvWi3PkxmgA3Zb0sJ3OSfgPi3Tnj3Nllyhqnf3WO1Yumzq3myBg+F/ qH9a8BXvVJlk/2cbYUC6uJeGMCC971X3hceu51J41k0ano7/ALIWeoUC1HhkAOaP f7IoBADkQCDuIvdJ7KebBMgXIHwAJnycVZsXXQPlOx0gty4+OVMY9PfpEm7T+1DM mWwuckntM9tSYuInbUPco70LBxuHHBNnhiUOTkijZ5GK/VF+WPnqOEopkjL7LD2q wSYqGaBPbl/noAoEb3Nx7h8D94kJUF7Gchs9fCH6UxHd+/Q8jbQhVml0YWx5IEJv Z2Rhbm92IDxidnNAZnJlZWJzZC5vcmc+iF4EExECAB4FAkM/sJgCGwMGCwkIBwMC AxUCAwMWAgECHgECF4AACgkQoL+wd7MgF/cbhwCghoShm9pCHbiUjXin1mR+0HaU XvAAniOPVmeKUuBBKCc3KLPIhfCCKt9viEYEEBECAAYFAkM/zzcACgkQhdRQRWtp GwOrjACfRJUhoojMI3sBMsjH9IuCwj8CikoAn3RlHMmCAx7JIiAMmg2gC1qjIUsU tCRWaXRhbHkgQm9nZGFub3YgPGdhZEBnYWQuZ2xhem92Lm5ldD6IXgQTEQIAHgUC Qz+yTQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRCgv7B3syAX91XMAKDJ89F+ 46BctXCALIn53c89waWDrQCgmCHSVr/rVUMU6fnyHtoNvYXtkFuIRgQQEQIABgUC Qz/PMwAKCRCF1FBFa2kbA/bwAJ4mwlXag5w3scB7heyAtqr7w6491QCghh/fVv3t EOFNlmwonrudaMSIYTm5AQ0EQz+wmRAEAKke9/e3jLaDx8i86+J0eTOAypCQy7WU QajhZDFqBHbBQTDRbcYG1dLYd/sC9oUwqgaLe+yEYw3JdfsiaiHsE2yZ/S4S2wTL 7MrUqOc1aVPu95c3Xcef13DKCMx36B4EbMwJa00bU5ut6/7tHly5Edb8nkn5vKP4 00TbjMa/3ZCHAAMFA/9OffxCzJmwUjCOxAg2GBberPxovtCtwAw7goKZzuga9+9Q dZBICMIc4l/I+zjDlphF/k9I5CQGOwoKTo+OCsZN7SSAB94NV9BEoA1MX9drWv0y CZJlD1bSrcPFVjWajXqC6NpAAiCdQapvV1sJK0F09v/RTHdPAZcRnpg/YS2jDohJ BBgRAgAJBQJDP7CZAhsMAAoJEKC/sHezIBf3nP8AoNBIM6JqCrnzQealKln3Tc+t HMPIAJ9td+R2zFqwuX+IMk135J0T/PXeaw== =bBFz -----END PGP PUBLIC KEY BLOCK-----
<novel@FreeBSD.org>
pub 2048R/08C2226A 2010-12-03 Key fingerprint = 8BA4 DF2A D14F 99B6 37E0 0070 C96D 5FFE 08C2 226A uid Roman Bogorodskiy <bogorodskiy@gmail.com> uid Roman Bogorodskiy <novel@FreeBSD.org> uid Roman Bogorodskiy <rbogorodskiy@apache.org> uid Roman Bogorodskiy <rbogorodskiy@griddynamics.com> sub 2048R/EC4ED237 2010-12-03
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBEz5PvIBCADEywRgDxobBqM8Ue21Jh2U7HgS4j5gzACCKF6H++QcS0ohTbw1 HQXsnVMNAwp3orG+ksukxKyxOFVnf2oWsoQ+ZKg9+jKg0oU2fnTgsqlVjTHrWHXR Gp51w+swR4cQQMdO/v696KGD6igT/PVXUCliPl/SaSy3CMxQnMJiNVcUCf3F9Y5D vuceManrZJ43fX6ztkHuhyoGxH/AWGNU2UkZO6TKYo7zJ1TNG437gDTyKy3O5gtF PTqJ5OknqJPitoqLXBksjCwq3iyDmqKkppSi8JO2Su27pgwmNfRWo8r4jnLVpEpH eCd7Fu/TimB2McIw0mJgN4tveZ+u/8RpAXQfABEBAAG0KVJvbWFuIEJvZ29yb2Rz a2l5IDxib2dvcm9kc2tpeUBnbWFpbC5jb20+iQE7BBMBAgAlAhsDBgsJCAcDAgYV CAIJCgsEFgIDAQIeAQIXgAUCTPlApAIZAQAKCRDJbV/+CMIiaj70CACwDlzGw16o /Ucu1vtK5IOyIhChX3hHSp0MgDYcw7hVpmSvOnjIxgZfXHRlRVU0fvI18HaeHjQT iQ5MtEBnrUoWKFzMDFp8+vJ/0bDtDRIjIRMDimIxVdhHddPsdtzVLDJjbjG0TG29 bNp8dU5eUyfmtxOeEckz198WrkKVc2l7Ynh2n2KacslK86nO/KQQcHSj59Builns d7GBdLGZauq8oqowM7n2NoMRWDkX2TqVQyL+a6diD29KahcvF9wXNoTw8vVox/gP gUdmclhktS8ybV8eSd8wT+4lT+s4Fnv1Df3yMeGhMHYkCyaUgdgW+4mE+olxsGZs PdrCevva6DsMtCVSb21hbiBCb2dvcm9kc2tpeSA8bm92ZWxARnJlZUJTRC5vcmc+ iQE4BBMBAgAiBQJM+T91AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDJ bV/+CMIiajt2CACNuGoZu99U0gubBgNhrmAg1VuZTGTpi0PtqQ4i1+K3nWdne/di lpgD6PKNj2IWH9CRQpQ9XnGw1HnSFgc1YjNXMNPCF7zwkjR5rWKH0OJ8zkK/bpGl KymWLaIxFEaCUZpyuDWJBLXu8u680RTU8+6SDY1iDB7Wu6OZ4OIrVCPEpgLgrsGq eqozWHyS4L8Lqa717lmRffv78fRxWh9AdetpL6EG2IMJ4SyCTOTveT1H/ylMZtiq Il169YHlNut56Dr+Hu1BlJ/1YqWPFbQEyhRfuJKxt2XFyQDC3CK/9eVDDZfiHJGl G2yCxfBsa4KOF5COX3augYjVG8fjO2LIYBkEtCtSb21hbiBCb2dvcm9kc2tpeSA8 cmJvZ29yb2Rza2l5QGFwYWNoZS5vcmc+iQE4BBMBAgAiBQJM+T+kAhsDBgsJCAcD AgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDJbV/+CMIiahpBCADDMiQVoIId4eKs+zn3 Et4u6x7uqXau07Oaa+Piyu80VY7+D8zZlccZb+fwJzIg/AyLnpjoJQWJbnbaktrM 4o6Mz6inO0p8jdH5IaFOJezl1sZcQNWDs59zGoIHdgTd9/r2KmbKxLphXsxrAfZ5 molQvKpbOTCit44i9Db5jrVbUwA+AEJm/YNDDB0e2kvQ44YDFRdG53erOIcJ513u gtWFj0FKVhYIQ7s+lZm5nELc0gEvI110hu0VOZDe5gFwZxqQikNjzj+7dmg9Un16 WYufSXxNV4ZrUKZfstGUBJh8WM0HJXZmdo45VCMcK9JanuFsM8r4KiI2YtsLrlnI jftbtDFSb21hbiBCb2dvcm9kc2tpeSA8cmJvZ29yb2Rza2l5QGdyaWRkeW5hbWlj cy5jb20+iQE4BBMBAgAiBQJM+T/EAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIX gAAKCRDJbV/+CMIialYSB/9nudV91Z1EpEZDCHNnndusvZznvd1OK5bKm0bBEUnj coYk5LgCJ7pxJF0vhGFA1Nwd/b8lH7e1E/G/WvAQT80oEnFwVPs1IVD5LNBcsQUT YoMuasJt/4w1LCmCN03DuoN2erPHl6TawPr0Jd4hdP8yTwPMlG0MSZCHYA4iwqub c2aKOoG0WEwazocyfgidsiU2H8kY7UtY22Gw0baOO2ZfBx5GKb4gT3LIt4HDBZLW OeCtvkwgf7OIhN9vaPpxIlHC/eiCxPiqacyChHlc2GrrbVka+siKBx9kcTtIdKAB ObqhAGSmOmcWblfmIyfog9o5Ay+/yKebOBwhNnM5zRhuuQENBEz5PvIBCAC/11gz Xp0sE8pczDkJ14UmZRwlx1HsQemL+D+x5B2hBvBZpgjBUEKb3jp09za7LgVpkwck Rs57kKWbtXmVJFlevT5Efu2nh+PhjcA2yaZeekLrMke3/AaeXg4GATCc5wyW22c1 v+Yyn8p5nblrmwX6Sdv3LegPGZjpVvx74lviVOEwqZ7AsO2OaN/Hnb5jjudLDQIp EMU82A+8tVMXrINe963ubG35S419TrijH92OiWHLk4QxtW6dGfZFtr/Rn5LibIa/ x/mS9/uaps2fOMIT2E2joC654nyRTgHRpaOGJoJALH+nc8CaeWnN5vXpaGjMIgHz 6OATngfCbRpyRTXDABEBAAGJAR8EGAECAAkFAkz5PvICGwwACgkQyW1f/gjCImr4 Pwf+KIIYsfBv2ZL87HoUJWI6InAljXNduzh5Z1LBwqRFQILEdKbRTxHRCQFbuQXz XuoG9Sm+SQJuWEapSgfVc5AjCLwkS6fe5POYKZi+bJVg+WG9phyA3ahkomevQeN9 RiMmoUHLyTT5pJcmkUemjKOR68L0sSQxZSa6E1jymn6eV8G4WQIrgxkbG0+n8jlL Gh45Z32XSPRcvLmP/R24m94y4hRcFf7+zi/8jsWsLhhQeKXLekTYkxl9KFnGTG1Q Awe4IQFbQ3JTtPucKIc5Nhc7psmvbLrRLIY47b+5Y9HaSepcm+7p4MNlsOE1Tj0G at3c73i8nATVo8CdE9D1rxmG3A== =Iduw -----END PGP PUBLIC KEY BLOCK-----
<garga@FreeBSD.org>
pub 4096R/9F625790 2012-11-28 [expires: 2017-11-27] Key fingerprint = E3DA 9B2A 6160 99CB 4B31 7641 F1F0 E7A1 9F62 5790 uid Renato Botelho (FreeBSD) <garga@FreeBSD.org> uid Renato Botelho (Personal) <rbgarga@gmail.com> uid Renato Botelho (FreeBSD) <garga.bsd@gmail.com> sub 4096R/473CC82A 2012-11-28 [expires: 2017-11-27]
-----BEGIN PGP PUBLIC KEY BLOCK----- Comment: GPGTools - http://gpgtools.org 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 =jV+3 -----END PGP PUBLIC KEY BLOCK-----
<alexbl@FreeBSD.org>
pub 1024D/12A95A7B 2006-09-13 Key fingerprint = D0C3 47F8 AE87 C829 0613 3586 24DF F52B 12A9 5A7B uid Alexander Botero-Lowry <alexbl@FreeBSD.org> sub 2048g/CA287923 2006-09-13
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEUHm3YRBAC/bBl9E1saFAVuS5wtnBQ7BbXPOr21SBExZ3t+f8k2PG2SsKYL xNMAn1drC9UdbUVcQDzlGcWQONYRKj4kWoYSYNDOElwa7Rv/f4z4NnIhOxxT6G+M qQTFWj6MjrCVPZh+b5Y3DTdmNxuJq+Yf9+DFsxc0i+xhMrbbjuokWRFdxwCgvb8Y fLNYJqjf9V5hhnvt3K2/L9sD/2frMKR7o1Ie3CgQbhZgYLkGlMmAlyrKLamdRzRl AmjJ35mkIQ9iu36BpsUmVL9WPjy2sdep0FyRLRgu5/q9qhJxy31GsVYv5y9m9+px X+00CN1a/5g1d6gxLUY30KsOL8OXSqwmq36iJHEsRxFfs9NJ/dBui1cFW0dDNmdg nE9xA/0aX+9BPSiu/hXFa5A2Q8fCB1wOcaru+QzgbY7nWnse2PQ7Nsv0xEMkaYdT AqA9I/UyssYeRygD7H8edd24xy39EBAVLLCD57Tjye2fCOyWBIGJU7Jtc4b/DJgm 6bP2bSscB44ybBmlWdza2sgui9D4beWQvEVZGgpsnqnCjJQDOLQrQWxleGFuZGVy IEJvdGVyby1Mb3dyeSA8YWxleGJsQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJFB5t2 AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQJN/1KxKpWntZ4wCfWY5pLq6V rCpsAiGcIniMBUoueTYAn0b5suADC5pawqBP/Xbv95e69gDWuQINBEUHm5sQCADC 7ynjQmBXd8q2Ei9ab6oO6Q4XbEu2eMLcm1C4b1cu8Riyb0bYI8fQ0JkYPWBDdgvG iVuDGHjLRCJm8LDV4VAhpkn6obPaDW2ZVf3urkAsCszSmv0jlEO+grOj48c7sLeR NpZX76FCKFtgHClQOSfR/9eoKFQh5jveWgSQ0gEW95gGQShy1cTi1XUdJdxilL6G GNBfSNgAFwQBkepgzjR853bVysoZEF0Z9MF/PZgmAXoPYTs54tA24LSETmBo5BjA yUTI6Dv4+jKXqmDphX6BjxeJkYxlKAyVBgNrKZahPoyOPd0FvMINn4MpOJdpq3sv PSXwbexIrroMJQz7nR9vAAQLB/95AIR3oGIOhDCAUwf18K0Uv+v2cKVhClHqyAGy zHjyoyEoSnhApWVXD2hNvqfxy37t5/5EzaU0mvC0GMpv0trBa9uBRk8GrXgILnzh dYjhbSPZStx3D/0lFBLHt9qYjFFQweKNun9coOV0TzdXigH5PFxiks90Qc/sfr6N v6hXA4MAe81zeEdQafBkreHDo9fL4i+GwxF9novXNZ0C+YNJ6+3wOIJwacCZ1bdy gWTM8pTa7vtvtA0Pk4CZpGKSICg/jDq9dZT+vaNGFnKvQOQv1RPNLs/QqfvUo4ZF khopn5yHXGJjLZp0Zds4MdqXLddUNHXW20Yki11eZ9NXK1KdiEkEGBECAAkFAkUH m5sCGwwACgkQJN/1KxKpWnuSYgCeOgBV4svD8sqNBVN467Le6aLzPxIAoKsNXerk njcpzY8FzVuY52JnLNP4 =CUqZ -----END PGP PUBLIC KEY BLOCK-----
<sbz@FreeBSD.org>
pub 1024D/2487E57E 2011-03-15 [expires: 2016-03-14] Key fingerprint = 05BA DC7E F628 DE3F B241 BFBB 7363 51F4 2487 E57E uid Sofian Brabez <sbrabez@gmail.com> uid Sofian Brabez <sbz@FreeBSD.org> uid Sofian Brabez <sbz@6dev.net>
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBE1/aRgRBAC9Nx9U/fn59g14PQ11t3prLTwrfzVYbEtPHWCNs0YDcB6G5M8f 8OpsPxousOkEy7xMYd8Xfzps9OSppH6Jwd/+GEiwaAT5G4tJ3X17aak/9fUUsir0 g+NohLUcflYszZlzLG01a8VH3AkDZgwkS/93IuQxPTmSX1ao56oHQvJ0rwCg2T3s +GgcLz5A+NJZ5jY4lv+R/OkD/2BPrDN6+B+e1znlnl8Nk0N0fmLjvYjgkJSA37E/ zAUh7mtpQroSo5vdy0/ODbbLL/JmcS52I9LOC/aakykSd7aS1Lw5vDvhG+bLWB/H eYWC35PtI08XnFDaKaycu0TnayrggEOpNJnMfOSviGMsvbnksas03RCFeAd63APg kXafBAC4x7c6iEsUmpVTn60mOTf4OVGGA8CN00HpyXfDgb2exuLfwAn34qNaNcd+ yVU1Hu3WPgQzQbTorqwi7zmjn80gmpYJjAW67zeeY9QLnuNdD93uJOIscjYltrl9 Ft5+lefMyTCb04Uc8lLAvoiZ+T7G/uyyRZnJ/5vzgr7xIeCPQLQhU29maWFuIEJy YWJleiA8c2JyYWJlekBnbWFpbC5jb20+iGsEExECACsCGwMGCwkIBwMCBhUIAgkK CwQWAgMBAh4BAheAAhkBBQJPcussBQkJZyyUAAoJEHNjUfQkh+V+oTEAniEEpQyD 8sYsmOPJA9Kj3rlGdHoqAJ40pp9l42h+6HsOfzWmNXEOfA0g4bQfU29maWFuIEJy YWJleiA8c2J6QEZyZWVCU0Qub3JnPohoBBMRAgAoAhsDBgsJCAcDAgYVCAIJCgsE FgIDAQIeAQIXgAUCT3LrLwUJCWcslAAKCRBzY1H0JIflfkaDAJ9HOCFfC7uBDucx DraxT8X+3GNcbwCg1tl7zbIuEJj+7x6TkNNqR/6la/G0HFNvZmlhbiBCcmFiZXog PHNiekA2ZGV2Lm5ldD6IaAQTEQIAKAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgEC F4AFAk9y6y8FCQlnLJQACgkQc2NR9CSH5X6FTACgkK8Gxmb4hqgmk/lvrHqylgei tbEAniRE2s/taMog7hd/8sgTn5w4yYyluQENBE1/aRgQBACNIAMTtiB/KjSfsFIb n2vc4284SvwPNhdO0RWj0n7shgf6Y7F13nY/CbOFUPz1AI1SgJdRxGJOcfwVS3Dh 3YisqgGpnY5bdc5TDo2XzqWF+JgkePKTfvTnP3P2sYzGC+oMlAQkzZaQl8rBRvXe vpxNZIW6EpGEsBYBnxd2Cl97mwADBgP+PcBxmCc4bosldea851AiCkHyMBR0f/0I ldbawynpYFOwZVytmrWvuWcp86lnsPEkmBuOjBbK5WgNJzIO2XdmtaNuN4Ll9dHr AEcLFDMSerNkPAvkzMzNsu6L5ZVrBtXQr6omN8DLcau+6uRXq3wZrQZ2o97/pByP nmxopGDMt16ITwQYEQIADwUCTX9pGAIbDAUJAeEzgAAKCRBzY1H0JIflfhBRAKCu puEkAZ1svXS/c8Ei8FS70bQIlgCg188vwbrylTHwyH6aIlwU2lIqVXA= =4ffD -----END PGP PUBLIC KEY BLOCK-----
<ebrandi@FreeBSD.org>
pub 3072R/FFD3035B 2012-11-26 [expires: 2017-11-25] Key fingerprint = 443B 5363 564F 06C3 EA54 9482 209E 9B54 FFD3 035B uid Edson Brandi <ebrandi@FreeBSD.org> uid Edson Brandi <ebrandi@fugspbr.org> uid Edson Brandi <ebrandi@ebrandi.eti.br> uid Edson Brandi <edson.brandi@gmail.com> uid Edson Brandi <ebrandi@primeirospassos.org> uid Edson Brandi <ebrandi@gmail.com> uid Edson Brandi <ebrandi@fug.com.br> uid Edson Brandi <contato@edsonbrandi.com> uid Edson Brandi (Born 1977-08-14 in S. S. DA GRAMA, SP - Brazil) sub 3072R/A34B8175 2012-11-26 [expires: 2013-11-26] sub 3072R/4EB0E0EA 2012-11-26 [expires: 2013-11-26] sub 3072R/89917E73 2012-11-26 [expires: 2013-11-26]
-----BEGIN PGP PUBLIC KEY BLOCK----- Comment: GPGTools - http://gpgtools.org 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 =aO2j -----END PGP PUBLIC KEY BLOCK-----
<harti@FreeBSD.org>
pub 1024D/5920099F 2003-01-29 Hartmut Brandt <brandt@fokus.fraunhofer.de> Key fingerprint = F60D 09A0 76B7 31EE 794B BB91 082F 291D 5920 099F uid Hartmut Brandt <harti@freebsd.org> sub 1024g/21D30205 2003-01-29
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.1 (FreeBSD) mQGiBD43wzYRBACpuUuayKjLpf+tMndpkOwxmpaPkLFxiA/dI1iWjY8I9ItDLZyM LqgYXemOOga6vbTvIUq7Bjzl3oR72kjNX3J1EljsMj7dxksoY5lflEMdxAyzdVoI +/cu+cWiP0Z9unKpYmTk8S13sUTtZc0+ixioaUvHzSJ0nxQMpIW7dqCDewCgmSVR 6i2aK4oImAa9+ZbCxg7fCxcD/2xgAAwJSmaiaV/0As3A6IO0eSkbkzFSkMF+ms7C OtrHr1zmdM7h8MaGg/jw0Z6eZalYD7AclLvXDW0rxCMFwh06SC2axUTk+aE+vcys fuSk/HJtnktHUxZDgb28jf4X6zfcdTKE5dt5a9w3XHHPgdTXjGn7+sQNR4CWDcvq 1qNQBACOqNxJdCC9tDLycRoupNSwzldMKVBZ2/JdQjfCIq6d8HPMNVLU8PGlDjoy RN4QkMZLbwV9Gaigk2DR6vvi8meARADt53x4OjS4W3O/Pc/Aj8rsUcF2mRU/wiJC 8VkQsnaci5GuaYAssgKroOTZQzxHkOjbk4FeQ70C+wxovRsTh7QrSGFydG11dCBC cmFuZHQgPGJyYW5kdEBmb2t1cy5mcmF1bmhvZmVyLmRlPohfBBMRAgAfAhsDBAsH AwIDFQIDAxYCAQIeAQIXgAIZAQUCPjlTfwAKCRAILykdWSAJnxpyAJ9eHCdgiEt/ +Z5Ms8Qe3ekWTYTy1gCfdVWLF2MrZNL/MYOgBhhex70gKzu0IkhhcnRtdXQgQnJh bmR0IDxoYXJ0aUBmcmVlYnNkLm9yZz6IXAQTEQIAHAUCPjlT2QIbAwQLBwMCAxUC AwMWAgECHgECF4AACgkQCC8pHVkgCZ+BBQCeMpgFMMm4siEtrzqdisrRaxJJvosA nA7UDwOVoHDZaAkFD0HNcUsTkO3KuQENBD43wzcQBADsEH8o/9tD01ScNfhoMbK4 N7GsIJNFwQf0+MQuplpXQx4eBpI9ST1ZoAUXeM1j4jk5PIAMJzt8w6BAGgcU4iUG Un0R/QMTTXVkfovdSe9FW7/QtUjRtTQz3QOfZTkekYauFIiW+lSmH3BDwRXhpKgM e19eQZYOPRfLCnLLwqdr9wADBQQA5tIdzlDS80CNZxxoFDKlvOghtrIzPG/wIwGV at2clZMLhXESxDxDkpwT7XP1GRLyN/Plh/4k2vwxni7nOJ8BIch7rRh3E48TJat1 iZ99SFc9iibED5hY/HrKlc/kphFnUuEr/kk82UCv9p4/d2V1+8v1N+Cy2jCGvrip IQ6v2fOIRgQYEQIABgUCPjfDNwAKCRAILykdWSAJn0J4AJwMsjovUA6jCJRMEzOS kIakJgqJvgCeNLKyNEkyJZh0wZUcEg1zYLRYp/w= =+h/9 -----END PGP PUBLIC KEY BLOCK-----
<obraun@FreeBSD.org>
pub 1024D/EF25B1BA 2001-05-06 Oliver Braun <obraun@unsane.org> Key fingerprint = 6A3B 042A 732E 17E4 B6E7 3EAF C0B1 6B7D EF25 B1BA uid Oliver Braun <obraun@obraun.net> uid Oliver Braun <obraun@freebsd.org> uid Oliver Braun <obraun@haskell.org> sub 1024g/09D28582 2001-05-06
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBDr1p9kRBADrTCmhk/+XY9Jc34z36wp8zy1rbxGBy80enJM+aFPHks/iYPxR WA1tB8BEdGPJliUMYcNGeo+ZX3As1+xxo7NJCc7Zd7Gfs1+fMOXPwKGt02mr+Nje +nF9XMfdGPP0IcK9lzkVeEdH2JP41pS2SmrMwsTE/eGv9pFEnnmRxeuFcwCg1RYc f8freOk8v68+J99mCUUAGl8EANePcxWbRYgH5KulTzE5nYIt9WBn247T7goE3yn1 R2VddSXXGhs0byRxXpNAcrysyGshIQY0nnZSB5AUt27tZJucoT1p/BtBFQ6hLCQe kaIRL0sdXrVJZn3/Q1G7vJWD6wwS35dro5PsYYPDI+qL1tISlWHZNQ2Y6jGdqhc4 Len0A/4nV78yB7cLvHksxwvbdtVVn8eVo1B2U+/b4cXhevHAl8AmNN+usmEodxxe 8FYWV8jY323xiYSMrCpYT9FuD3r2qORMOGWpg0zth6BkhdgH1z2i7koKkGIfc4mV 6oea3ep5uaU82r1sGe7/cVzMGUwzZq9xizwODfbmSW6E+vdAjLQgT2xpdmVyIEJy YXVuIDxvYnJhdW5AdW5zYW5lLm9yZz6IXwQTEQIAHwIbAwQLBwMCAxUCAwMWAgEC HgECF4ACGQEFAj4YDoEACgkQwLFrfe8lsbr7rgCg1K0Zl8CPgrQG7BEaZqzSiIM6 IZAAnjz5ifN2xHJSOJiLYloidZsikNFQtCBPbGl2ZXIgQnJhdW4gPG9icmF1bkBv YnJhdW4ubmV0PohcBBMRAgAcBQI9Y1sqAhsDBAsHAwIDFQIDAxYCAQIeAQIXgAAK CRDAsWt97yWxuv0CAJ9lUDzKKdaCp/8mJjlXLjlSZaaJTgCfXIqQr58p5MSFkVdL hLbK1P1l8FK0IU9saXZlciBCcmF1biA8b2JyYXVuQGZyZWVic2Qub3JnPohcBBMR AgAcBQI9Y1tFAhsDBAsHAwIDFQIDAxYCAQIeAQIXgAAKCRDAsWt97yWxukHLAJ9u oP9cIdBXldt7XfQ/5xK2fUsHPgCdFIR7cK0l0spO2xjzbzhoPPVShbq0IU9saXZl ciBCcmF1biA8b2JyYXVuQGhhc2tlbGwub3JnPoheBBMRAgAeBQJAViQBAhsDBgsJ CAcDAgMVAgMDFgIBAh4BAheAAAoJEMCxa33vJbG6MhIAoJ3dqHVStQdGzLPTGbtP Zq8wG0jmAKCzMo+si/LFBZAnOqYN3g2yVOOc6rkBDQQ69afaEAQAlaNzX3ql+XfL obAAIWW/TdY9Yh6r0fFFoK2Mdt6vungWhzSWb63DprREXyW1k6QbPQxL+pAfeCYZ oXQuNBmsUpO1Xn6ViEGRd53D07sNJfBrE/5w3hwL+c9lWSJlt0vHKzFtPAmqenBd fA0fs9afiew2sHhk/jz/FAwWcnF4aC8AAwUD/0upFaHEZsf8sVmSEew5tAtZ6i3x zaBjhaDv3sYobza57S8mXYhscK+nNHx3bP036wJ0z8ypqb5oCqGzWUkj9OpYZs0u Tbpla/MoCI9N1Ch8LfQkWPuvYjHF6LSY3wpZKaNWfeZPCmMT5XPqjuxDB1pCmnAU OizLyimZU2Y8tfQWiEYEGBECAAYFAjr1p9oACgkQwLFrfe8lsbqmfgCffgEhvau1 1EUoZmkdnzUg2rbKYnQAn1fVK9TjWnJWQ/YDOn9hmMZWYjib =wrrS -----END PGP PUBLIC KEY BLOCK-----
<makc@FreeBSD.org>
pub 1024D/ACB3CD12 2008-08-18 Key fingerprint = 4BAA 200E 720A 0BD1 7BB0 9DFD FBD9 08C2 ACB3 CD12 uid Max Brazhnikov <makc@FreeBSD.org> uid Max Brazhnikov <makc@issp.ac.ru> sub 1024g/5FAA4088 2008-08-18
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEipViERBACsCTYd7As236qQw4dG/xB8p3XbN7pFP/C4yjRJak2QZfsOQ4mR 7liBgXc0FevU6FQOW4XrcRbQeGFlRE5pb3idwhTKNc58TEifGM2s2ZGgRrR0aIF+ 9s5ZbVNp75FgSsN+9ksAOmz1nSj+M9Ikz464YvA3bHvKP8QQCpPpBgiuSwCg5IBV XSvep/e502PHqsiP8H1zGjMD/0xDwDdLfnN1R5tuNDfZEN09BSRlYYFPmMlP177i DBCF/2gF1bQ7KL42qBCr49ngVMAEAUlmZwBIN0XvfGe0KWDvc4G/CYqcOiWhbBEA pvtJZHE1C/kIRFS/IiM7BVmkdVnn1MzJrGSVPAF85e/iyc1K05C/qCuulqm1aLpf 8dOeBACDvyvk2uE7R11REnKa6FKvzS2X32YclSM2sApwl+LnFO9eT500Rxzy9ldP jKlKR/dO0DwUKxnUO6DOHAEZzvutx1f6ZJksXk/0OsSNkn7+TIt3pKb10udpcCag k/ik+o7v+2XB7BlydRBPwcaJE4fq+CWyAbgRfKROetwfTI3ItrQgTWF4IEJyYXpo bmlrb3YgPG1ha2NAaXNzcC5hYy5ydT6IYAQTEQIAIAUCSKlWIQIbIwYLCQgHAwIE FQIIAwQWAgMBAh4BAheAAAoJEPvZCMKss80S1+cAn0+WKUu5TxrXSF4N8WlRK0mU 1tcdAJ9Fcv54PisOdQiVUSIw25LqSqWyJbQhTWF4IEJyYXpobmlrb3YgPG1ha2NA RnJlZUJTRC5vcmc+iGAEExECACAFAkiyz/wCGyMGCwkIBwMCBBUCCAMEFgIDAQIe AQIXgAAKCRD72QjCrLPNEjtdAJ4tcsvvos2CoXmZsTJxuVF0RaEwigCdHgBapPWu MPyv9FLRzdWelOfZ3m+5AQ0ESKlWIRAEAOzibN5tPXiGKAHPwaQgnVQiaKv/7HUr FVfqycyXJC0/nmJ59UNpJ+0Y4GDwDRYqWqGyyd9diKAUomUwbIuQ71BUibmIZQS0 3v0jgcfnJAhgz7EFGewgQLHsYwzwTDtPNQCqxDEUwDLKla72ksuodqzx92Dj6SSP AfFN/6B2bvQbAAMGA/9XFhkt0SAqXV09CXs3QuHdzuJ0PLadaz31bWITmSLqW2FU /EwXt1615g/E/qIwa1PzjZT8JQDAEHKbT5XPXtTzvOAUp8JK2wW9P6JQ6YPT14Vy /9PiMvLThxNY3zWjWChWuEf8zohd922OSqlSE8vgOm0H7XUe480/FeP3RP1EKohJ BBgRAgAJBQJIqVYhAhsMAAoJEPvZCMKss80StqIAoKpjMeYK0fSi6GpfIaojuz59 eHHiAJ9ws2o67xPKbWgdqMxn4MfLK+ojbg== =m+ns -----END PGP PUBLIC KEY BLOCK-----
<jmb@FreeBSD.org>
pub 1024R/97E638DD 1996-06-05 Jonathan M. Bresler <jmb@Bresler.org> Key fingerprint = 31 57 41 56 06 C1 40 13 C5 1C E3 E5 DC 62 0E FB uid Jonathan M. Bresler <jmb@FreeBSD.ORG> uid Jonathan M. Bresler uid Jonathan M. Bresler <Jonathan.Bresler@USi.net> uid Jonathan M. Bresler <jmb@Frb.GOV>
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 pX25BMHqkEMHAxahVagzguPetlTIHxHGRSH3lg== =ttzj -----END PGP PUBLIC KEY BLOCK-----
<antoine@FreeBSD.org>
pub 1024D/50CC2671 2008-02-03 Key fingerprint = F3F7 72F0 9C4C 9E56 4BE9 44EA 1B80 31F3 50CC 2671 uid Antoine Brodin <antoine@FreeBSD.org> sub 2048g/6F4AFBE5 2008-02-03
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEelsqARBAC37tcs27BitWt9YeIYmpRNgtRH/ndAm8ecJK+7IuEqo1t9IglY Uy+lI1xW1H4LrIbmSKmwfg3Gj3lm+12avQ8mf0vVbl2RVxfOQZY2C127Qv6Mg/Ox Fwxb7UCWzYi+XAf5XVHyzKLaLq/S56serWDX+mGY83kLhVKXy7pL98bwewCgtr1D miY3vAu1NMoWPuZ/2kvLLh8D/i1Zisp0EE5B4QjRFbaSUzfk3tImTKLQtbj4F3S2 Zo4hh3IRYLGq2OMJ+gH5c5KXMhaxqiK8XCO1pHNdCyaL1PZDW9s0sxPiVv5DDxHU Lm1BXyTIJyuAC8KVnMWIfHVoqIX45m0Br6IFyiHU3CFBSsarkC8088HViilTYGd1 8InNA/4+wVDMqnht2/YeMqyYevKOGw69Dqe+1jeTNOg7h/1EOL2Sytg9EIfyTf71 IxJAhsKU1ibjAMubERoTN16rPgTx4yrDtRSdfbmnHxrreih6PKsbiaKy76cnYaxz sz4VontIIaH+Ye+VmVIQsBS/QIBBki0j9YAzNDcJqCdWKcoeb7QkQW50b2luZSBC cm9kaW4gPGFudG9pbmVARnJlZUJTRC5vcmc+iGAEExECACAFAkelsqACGwMGCwkI BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAbgDHzUMwmcdHwAKCrHa3q1ixEdvmpU1Ny 2SpQrmvslgCfef8t/hiaMLSuyZEsjR1x8cp6hiK5Ag0ER6WyoBAIAJScQspDgp5D P/K1ZdT86Ux7Nv2UhZilYF0LPkvZBdfTC80RpjrUvz1m8ZObbCsUO5Ag0j3+Wtms 6CVaQqfT2RoRyjcnNVJGadWqKmOWVkvZYzHQPl8SZNENYurFFhfy4MCxXf5drkH3 CV5QqY1onhuvsfl69UZ54e6X3+DjQ3KdtqyyqUez7Qe20ZdIcgC43HcEuqAbAOxm /K0zDNvHpjwgleNoFBd8GZfD/biD9EMnhiCBq5rS8Jqh73e9wLtkMfssQunA7ELx ZVuC7M5dBBMjRUp0dswAKAgdcaLA0D1NGUNSno35Rzur7sluufivfjLwn+qRLRBM FPR+ggIO/Y8AAwUIAIBR74TtznV04mci4vHDds4HX0RI/hxawivtanEAGZvV54hS XUnVqpIVgTqKCtmS3gqoQMQBf1+25Rq7UJlVNl4/AoLcl9ZfR140hTSd888OwcB2 MAHd9CgUXjTHcFQj8tXFhPiWY7SfFwheLDFJUgCqB/ilgPf1XGOYuZfvBxkyXd8p TC2sx4iFSUBbY4S6UZN8uokpRZDbTHUPgLHAoOg1lzrzUvZuknEzbcBDgQoVwLWD 9UCZxl1wxly6oZkq+uggXg7zxWuE5CMdWtz9/FA3CRtRBTqZnHrMM9hlHGgxTYan bBTs793WWsKf8rhTRqNDqQdN07YxsmTi3129OSeISQQYEQIACQUCR6WyoAIbDAAK CRAbgDHzUMwmcYHKAJ0c3chle4XcJ5c7+0odRWmOZ8m0IwCgndOwp3kjZUZFbAu0 AxHti2KSFZc= =HznU -----END PGP PUBLIC KEY BLOCK-----
<db@FreeBSD.org>
pub 2048R/8E9CAA7B 2012-05-16 Key fingerprint = 8B08 E022 705D 0083 64C4 5E60 5148 0C74 8E9C AA7B uid Diane Bruce <db@db.net> uid Diane Bruce <db@FreeBSD.org> sub 2048R/932E5985 2012-05-16
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =cCnT -----END PGP PUBLIC KEY BLOCK-----
<brueffer@FreeBSD.org>
pub 1024D/A0ED982D 2002-10-14 Christian Brueffer <chris@unixpages.org> Key fingerprint = A5C8 2099 19FF AACA F41B B29B 6C76 178C A0ED 982D uid Christian Brueffer <brueffer@hitnet.rwth-aachen.de> uid Christian Brueffer <brueffer@FreeBSD.org> sub 4096g/1DCC100F 2002-10-14
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 B7mWxE+O/VwCRKNHOACfYuq+wytbP9pFJkZQwX1rW0lWgvuIRgQTEQIABgUCPxVe hQAKCRDwI/gLJoQdW+9AAJ9VvvZW5R7ppcZfYrJ1SZChveCnvQCfR2sWHPSbzGrp sii0DbkB3x4GE6GIRgQTEQIABgUCPxWL9AAKCRBTtrgdwTzuB+GUAJ4yxAtvBEqG tDKsySqR2Ywv7xcRzwCfRQBmGdzar/OeLVHUziwduAoeShWIRgQTEQIABgUCPxPz IQAKCRBL7yYkIt9Ah2GWAJ4kpQG83TGrnIR0p6Web4T1QZjBsACgiBqEfjSGxngU cTRrQxx/bs8TX6iIRgQTEQIABgUCPxPzKAAKCRCVZB9rJT5Y45ftAJ9fNjIStddg GjgMs3jcGo6oak8QjQCgq4Q7ivzJ2HJUawLk0hOM1p8BT3eIRgQTEQIABgUCPxXW bwAKCRBBufToW3E98CEaAKCAodx0EjodNg5VE5AF3oPAVPlZSgCgrIh3fheMXgTy 32bqzny8BV5yjhSJAdcEEwECAMEFAj8V9CqGFIAAAAAAGgBjc2lnbmF0dXJlLW5v dGVzQHBlbmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250YWN0 L3BncC9zaWduaW5ncy9ub3Rlcy5BNUM4MjA5OTE5RkZBQUNBRjQxQkIyOUI2Qzc2 MTc4Q0EwRUQ5ODJELmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29u dGFjdC9wZ3AvcG9saWN5L3YxLjEvAAoJEBmiaAmIOP2URR0IANjcbSgJNDnmGxUg lEcaoUk6QEeo9iNa11OJP4+Uv1XXEEbHiyWpvALvzQ6v7Vwhofo2KGLVCTEhZHz7 MVIl+0c/zbCd7v99iOPySRRN3DhJvqPnD22Kc2KTM7WknZSW2WOKd1fU29vENFr7 7Z59UPqiB55zbXIobObbJOwu3x/vRNC/5bE4t2H7zLNRxmeNKt3S/ch6odJdCM/B lYy0Df2REc2s2EVLcOYsL+RXwWQp33BFt4/YqmGJQUus2nxz6GraY4J925p2S4Y7 3RcTDcWZTAeexwpxHSw4VmJ5Vupa9Jll/vAdurLUVCDd4Dd1pGJAnsHsLqD5/zdX YIxNST2JAQEEExECAMEFAj8V9DuGFIAAAAAAGgBjc2lnbmF0dXJlLW5vdGVzQHBl bmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250YWN0L3BncC9z aWduaW5ncy9ub3Rlcy5BNUM4MjA5OTE5RkZBQUNBRjQxQkIyOUI2Qzc2MTc4Q0Ew RUQ5ODJELmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29udGFjdC9w Z3AvcG9saWN5L3YxLjEvAAoJEKseS2BGdWse/3oAn297V8QlgeWSsvqfNYPKpqWp OGRhAKCIuuT96Pn38WtlGOBa7zZrECTNvohGBBMRAgAGBQI/E7DoAAoJEOfJ26/j Vu/ApXcAn0Czyiw503iLkF53c2qHJ2HUelW7AKDDiDT1zAGHdsdcaH9svMxWOa0l dIhGBBMRAgAGBQI/Ft47AAoJEDu/z3e9iwUNnssAoK6lcUf4GkqjwYYqH08P1J+r HaJHAJ9c9pAx86VmCaV6wQ26cKLBKUNdgohGBBARAgAGBQI/EaO3AAoJENAZ9e+Q J6uIx6UAn11HUO9dUXyAcUXqx8lyaEa20cW7AJ9kMTvSqDHkvci2MhcUkGzjpUv6 xYhGBBIRAgAGBQI/ERsxAAoJEPS0sMx5fr+r/m0AmwT/dtstpPJs7wEOejhbgGqm vc/PAJ9Ynh+eN+noydvRINXMXigzuuoX1YhGBBMRAgAGBQI/F9G0AAoJEJEfSuaG oRjmlD0Anj1mLd5E3VlkwvE2/tjgs6fQ7Zy4AJ0Z7vIFQjFnMIGJwhFqYsLbKsy4 +ohGBBMRAgAGBQI/GE0WAAoJEBp0fkUw4LnYvPgAoIUWj1ZA98QOQqcjUoC2XYom fJl+AJ9O71OiZXEgbccf2oQeY0B9mD00IIhGBBMRAgAGBQI/GX6nAAoJEGZmcXrb g1Z57xIAoNUVFg9YL70dNJk6t9ktEEjzb2QrAJoCbcLt/dEXOcWXWbY6hDrpkKro oohGBBMRAgAGBQI/GX7LAAoJEA2WS2ZXDm3qO3MAniLwLC8Yy9QYRDWNfPNgkOhO L9lVAJ9AL3wmTAeNsmupBo6rUaw+gFw4sohGBBMRAgAGBQI/GX74AAoJEE4CrK4d 1rOArlMAn31ZFiAi9SPYMbK4MUgJjmVvF0znAKCPp7dwDl1Xi4hTigwPlgC+aqvF o4hGBBMRAgAGBQI/GNSkAAoJEM6KedeYAW3H84gAnAu3PMqTcX+JptdB37ZOmijC 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 azal4I/N1CX9sOu/2R/ABgCeMyo5M0vG06uLFkVKidTP0t838QOIRgQTEQIABgUC PxVehQAKCRDwI/gLJoQdWzvhAJ90ieEwIPKGXlPEmCnLlaCfGAhpCgCg9H/SGzS4 V+jAaEqmSIvltHTf/c+IRgQTEQIABgUCPxWL+QAKCRBTtrgdwTzuByH/AJ9S0n5U egb5DNIUMt05ImWfQ+uWEQCfTRu3SC9Yn/YGW18W65mSeoGEkqmIRgQTEQIABgUC PxPzIgAKCRBL7yYkIt9Ah08pAJwMs9tctTxNv/QGhPmlonaQ6ugxcACfcTmKFWST 9tpWQGJYMdPIymVW3+SIRgQTEQIABgUCPxPzKQAKCRCVZB9rJT5Y4xYwAJsEa4Zi Ib+DJ3f1K3KX7ofvADBQ7ACgkAR1nIokfD6rFzMhfWGCIfmgXU2IRgQTEQIABgUC PxXWdAAKCRBBufToW3E98CnFAKCH+yj3Fo+mwbSpXoHJmDk9pd+BfQCfXgANpSPQ qib0Wtteoo2PPtgiMi2JAdcEEwECAMEFAj8V9DCGFIAAAAAAGgBjc2lnbmF0dXJl LW5vdGVzQHBlbmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250 YWN0L3BncC9zaWduaW5ncy9ub3Rlcy5BNUM4MjA5OTE5RkZBQUNBRjQxQkIyOUI2 Qzc2MTc4Q0EwRUQ5ODJELmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIv Y29udGFjdC9wZ3AvcG9saWN5L3YxLjEvAAoJEBmiaAmIOP2UEw0H/RVZqajm10VQ cFpumvPC/qvWRIxZdQASPdMGKAASqPnrNQmfqHo/3rnU3BoquWWlZikwn22BGkuR aytvAI+AAyrrkA3R5HgwlIgtCQpTzljJPVEOA261BDlXLvttZipW6DvjZ8+s7QWW fKZYwbRCm5mcri1JQAmxtjZkK3E1K7yfDL7onLrHDx6H1d0njgN1j5K/82m3e6eF YOoi0Qpq17yH1HggGXx04rGgn9yaBOTmP0fJPsfnzWo4+GIfmQjfG0rrJhdakRgW a1JO4aI+goaxu6KSTFhpOnd2Rw34bkQICL6jZC6G4MtVSao0IsVtNiP1YcBbv2Bs 0ueQduyvaJiJAQEEExECAMEFAj8V9D2GFIAAAAAAGgBjc2lnbmF0dXJlLW5vdGVz QHBlbmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250YWN0L3Bn cC9zaWduaW5ncy9ub3Rlcy5BNUM4MjA5OTE5RkZBQUNBRjQxQkIyOUI2Qzc2MTc4 Q0EwRUQ5ODJELmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29udGFj dC9wZ3AvcG9saWN5L3YxLjEvAAoJEKseS2BGdWseZeQAoIz9KlFMtajFGHN2dxGK sG6mO3oCAJ0X8Z4DETXm/K8ILQ1Z/pP4RodIP4hGBBMRAgAGBQI/E7DrAAoJEOfJ 26/jVu/Aw+4AoO4wBXNHbVE/rPsMbKPufe7Ec31YAJ4/1ioDRk5fR5TEb+vvXSW8 nofiqohGBBMRAgAGBQI/Ft48AAoJEDu/z3e9iwUNDfQAn2WxsohG5n9Aq43Ct95k koqBFturAJ9+96R3ERPGKh9swWnJ9rBlkUFGZ4hGBBARAgAGBQI/EaO6AAoJENAZ 9e+QJ6uI8fYAn2tnCEZv5HogN3Abkr0XrmYL+7KPAJ9H4zrNiI2xha68apWA5qlV LqyHPohGBBIRAgAGBQI/ERszAAoJEPS0sMx5fr+r7kYAnRw1oK6hqhlDWUHxmPRW VbnYP5NxAJ9GDLHgyWasYFj4rFsBHleIAmu+yYhGBBMRAgAGBQI/GE0WAAoJEBp0 fkUw4LnYihIAoMSxOoAUqwrOSZZfAT1PN5tnh7X6AJ4pe0/QNg+zIB9/mvZAJbvg bSHfsIhGBBMRAgAGBQI/GX6qAAoJEGZmcXrbg1Z5GsoAoNPTcGZB/zlLarfBlJdN cyTkaTN+AKDAj9c7kZqVwQRvfgO19viKFqOuEIhGBBMRAgAGBQI/GX7NAAoJEA2W S2ZXDm3qNhcAn16xPNxTE4U9eqCCT26dCf7VqAyzAJ9RT4KTUEUGKseS8f13FzTo T1ueoIhGBBMRAgAGBQI/GX76AAoJEE4CrK4d1rOA1O0An1WBdZaCJRIthN1/ymMm Q6HnRPotAJ955kGEkWDp8s5SL6NDI0zBBkGvVohGBBMRAgAGBQI/GNSpAAoJEM6K edeYAW3H1z4AnjSEKHleKRyOb/kG37ko+eIB9FD2AJ9GQ/q0P754ZtxqaFUiqHAJ NHkKI4hGBBMRAgAGBQI/GvN9AAoJECyYPlrSilXWwDYAoKUwfgKjZAsl0coktJZv 14OHy3tRAJ9VAy9BEUSWIFSaKPsC8WCrs4eXjohGBBMRAgAGBQI/HE8FAAoJEHFe 1qB+e4rJ2f8AnjihYtaFRbsEwGtuE9C+5wjKZYkEAKCGJ8lgK5447GtFvs9sc0Kk OcJyxIhGBBARAgAGBQI/FbTZAAoJECole3fGNyjSTqQAnjzG6RQUZB2fHuOOv97X PEUxf6VyAKCAu1JdTxOl7uvOSgzX/l5hhZ9SHYhGBBIRAgAGBQI/HGcoAAoJEMgP dFmtwp7NENYAn1wYpBppW2AV2J+LS+4UqyzwUgx+AJ4rmKBgfE8OkM1QHOiYqpy0 MTkL0YhGBBARAgAGBQI/HanwAAoJEIsCZlm2jV9/1N4AoI19E9A4I1vz5at3XRlR EbRDIA+dAKC8ih/vVhLc8dZ49H56mvqPO4ZIjYhGBBMRAgAGBQI/HasHAAoJEN56 r26UwJx/dQsAnAisenAR0GJXx2M1KEZqOEVN81+IAKDi4FQbYnuBNYkp3mmut5CX SSpeKYhGBBARAgAGBQI/HagwAAoJECjdsP0Zyba6/0AAn0j5wJOnIcQfDKStVSoi QcKv3qxEAJ47GNt06E1oPDpBFSyHaX0EicKupIiOBBMRAgBOBQI/FzFmRxpodHRw Oi8vd3d3Lm1hdGhlbWF0aWsudW5pLWJpZWxlZmVsZC5kZS9+bW11dHovc2lnbi1w b2xpY3ktMjAwMy0wNy5odG1sAAoJEN6Fg/i9v+g48LIAoJ9sjzxj49V+IkmTST5q N1rn2aueAKDSswvpJjjC4WCe0fCZk8NvnCOLP4hGBBMRAgAGBQI/HsRyAAoJEPhZ kLAkiutzRcgAni/Tdya62QESUwbPY192zUnpZCUZAJ4p0eMJaTtAFgfUz6k1s9nx B9hHEohGBBARAgAGBQI/HoSRAAoJEG8ji8JP2loMP8UAnRgUejZZNVhjDeuOy3cH M8UQ2fNgAKCbpsSxJs6JFR+yS/N9jx8xcWKvyIhGBBMRAgAGBQI/HuFWAAoJEJSb JewHRHJS5fIAoIvtsVi2+q1/HNomoog68sSbV3/8AJ9lafbGsCje3wLB59bdpLx6 bfvcCYhGBBIRAgAGBQI/Hw1dAAoJEOdNKbgr4W0B8hkAoILgUU+r59s3zs7CL83+ W27m+AxgAJ9gnOZb4OFx0xRKGXWI26XyL6cQFIhGBBIRAgAGBQI/I5jUAAoJEBig zI1XBqS0N0wAnA1VvaIzKG9Sx1YRKvtT6Y7kGhjTAKDbqwjDwn0D3Fzf7NYSs2LV icJVAIhGBBMRAgAGBQI/JXRuAAoJEPK1Kl0KX7aHFCgAn09gsKJwPCNoEwVSnGy5 UDc/sVfSAJ9cc/IJ1M0xWIddrgpzP2O5+V+4W4hGBBMRAgAGBQI/JuGsAAoJEIkh tdzNFaiDmcQAnRQnqsobCou74MLykzwtmFlZUZbhAJ0dmMVtHYC74K2zt+lJvz49 /G1YfIhGBBMRAgAGBQI/JuG3AAoJEAcXdOAA2M0WDRAAoILMsRMzn0aCdR/d7TVe 39qvyzLMAKCpgKEyrjeLLn85zYQt/mEHlJBF+oiNBBMRAgBNBQI/J8ifRhpodHRw Oi8vd3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9jcnlwdG8va2V5c2lnbmluZy9rZXlz aWduaW5nLnZlcjEuMC50eHQACgkQpHnNxFq0YGrGIQCgpqtvf2JAIBFJj2ZEAjar xQHUk8sAnR1PKOzaTtbULulLAfboR5j38Jg+iQFjBBMBAgBNBQI/J8iqRhpodHRw Oi8vd3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9jcnlwdG8va2V5c2lnbmluZy9rZXlz aWduaW5nLnZlcjEuMC50eHQACgkQ+Xz54zpLf11CkQf+L6ndlBkMOsXAHSRpruI8 FEip58dRE3PEWCR5Cs3Zj/TrV9mF0pCnbU+5wlfCBz2Ieuj2ddNwI+9kWicCF4Xs 9avqRAasSO5sUSgpq405nKmNu7KdJEQG33expmPz/AX+agHOwTKpniohjlEa67Qd TG2ewcKvmLEQW0LjY0Rq2gRJ4cGFYkSmynOBp6agg6bITiwXPNQZKQ5VafjOQVUR tXtQTjInZ8gJGVdkrGD46D5a8yznX/KQU4ZEgRmDb6vl9POybhOihDvszahBfwzs c5QBZPHEXCdeCNA3rdCYbaqkxohS+y5PjcYchfO12YOaOB0Gg8SWOnow/M0FFmFc FYiNBBMRAgBNBQI/J8i1RhpodHRwOi8vd3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9j cnlwdG8va2V5c2lnbmluZy9rZXlzaWduaW5nLnZlcjEuMC50eHQACgkQeQV2j3WE 9dg9VACfcYe3EhS4Nh/EaOlsxtBPfa8k5jUAniNbDyUG3T3TZv9p6fCzIMIoG569 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 YXR1cmUtbm90ZXNAcGVuZ3Vpbi5kZSJodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJi L2NvbnRhY3QvcGdwL3NpZ25pbmdzL25vdGVzLkE1QzgyMDk5MTlGRkFBQ0FGNDFC QjI5QjZDNzYxNzhDQTBFRDk4MkQuYXNjIjMaaHR0cDovL3d3dy5wZW5ndWluLmRl L35iYi9jb250YWN0L3BncC9wb2xpY3kvdjEuMS8ACgkQGaJoCYg4/ZT6JAgAvfif YdKHBnC3Ezv483f2fsdF/jbUNa+1iz77iFI1dRa+SRWKRVbglKeznpT8GYbw6+82 gxWZ7Xotbn3s5yGLXNYP0vBhek1YG0zYig498ROlIc8OPwNgCEVUHj962FFfQSwF 2CQ+2e7h5PRll2PRpZNQCzm+c5Xj9p/tslSBWQ23/1p1U7eI3bvfMLVRx9tC/nyP sQo/V/yhIYPi4Ys1anBCl0Gin9g+eg4ghhWl7ksOZqG/Oc6c6viQsgVME4eKVHpl jdOj9WCpWIYar2Jsf16ITOMlYnGB4a3SJ1kxfXVR4lhZCaZ7PhVAaEH/GZC1ElPz jbKLNdvCTfe3GMNTBokBAQQTEQIAwQUCPxX0PYYUgAAAAAAaAGNzaWduYXR1cmUt bm90ZXNAcGVuZ3Vpbi5kZSJodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJiL2NvbnRh Y3QvcGdwL3NpZ25pbmdzL25vdGVzLkE1QzgyMDk5MTlGRkFBQ0FGNDFCQjI5QjZD NzYxNzhDQTBFRDk4MkQuYXNjIjMaaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9j b250YWN0L3BncC9wb2xpY3kvdjEuMS8ACgkQqx5LYEZ1ax7SjwCgmoUN3NUQ0fQw bmHqkVnBCc/jL8YAmweyJNMQNKsDC0frsHFyejRnNGumiEYEExECAAYFAj8TsOsA CgkQ58nbr+NW78AkMACfWs9ycteAylXk2RTrD5RHIYXgrVQAn0VpM3W6vemovNt5 zQWuHwUHKMELiEYEExECAAYFAj8W3jwACgkQO7/Pd72LBQ2EJgCgqRYVlay6OEUR eBS4I1Rj2wKtZrcAnidL9ET5crzLbhC9Gx6/tHWhhPPriEYEEBECAAYFAj8Ro7oA CgkQ0Bn175Anq4jOzACeLP5omUoyFcsNXRdWv/IYPBW3jLIAn1Vg4cqudANdKnKB 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 otqKGK6X6iceCg== =yns3 -----END PGP PUBLIC KEY BLOCK-----
<markus@FreeBSD.org>
pub 1024D/78F8A8D4 2002-10-21 Key fingerprint = 3F9B EBE8 F290 E5CC 1447 8760 D48D 1072 78F8 A8D4 uid Markus Brueffer <markus@brueffer.de> uid Markus Brueffer <buff@hitnet.rwth-aachen.de> uid Markus Brueffer <mbrueffer@mi.rwth-aachen.de> uid Markus Brueffer <markus@FreeBSD.org> sub 4096g/B7E5C7B6 2002-10-21
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD20hPARBADzumxDOkMdttpWKphTxFC/j0+MJRW5UmFjd43c301LEMFSJMkv 06EukQSOVWGyGL70v/4NWx25BiLhLDIb4feE5SZccQTnjxXYCjkQ4LfcolqTAzga L3GLNF356vKLQPlv6J5ah3vdZHa8Djh8q0s6CHAPi2rhEVbO2x7IcRW6MwCg/0+E KmRtdsifDJ00iBEMpJAApccD/As/bzVXI4FZwjwIMdep9+He7rwL/xGK+ZmRUEoN iiIxfd2oOkwDXZuFqTGftONd9Apao+FefTbcpEfv7sBVzHCJBn2bTr5mTjDwuA8v hGQ/7+QyKIFPmsL5KZYPkBcRA195UBSdwEPdERGH+aWvDTVJieyetAiD78WTd5ez T0V1BADwVnc1ABRMz6e8HK+78G/4vMHKPPEC7YbSmOo25FKR7XimUIlvGfj+CNO5 w6QSDJaIRo9yOCPEacMe91NeZskPlEEXN/KIOlV11vTZ/pVDMETnzdarNo2B7J2K 4HQzTYBzfFHdCrKP0tExSCy0iN2lWzSI57S9o8YxgnwrmuJPN7QtTWFya3VzIEJy dWVmZmVyIDxicnVlZmZlckBwaG9lbml4LXN5c3RlbXMuZGU+iEkEMBECAAkFAkTZ 3xQCHSAACgkQ1I0Qcnj4qNRBCwCglhvWAuZ+9bWZ64EXP9wHLiQYT1sAoPGL96ae YBK0wnq1TWjE9GPTYFXAiFUEEBECABUICwkIBwMCAQoFGwMAAAAFAkTZzskACgkQ 1I0Qcnj4qNTguQCdHFTLRplJE7g607rCVSxDCefYw8QAoIMaWQv0Iflm5aAR0F47 3WrjQplWiEYEExECAAYFAj20imoACgkQbHYXjKDtmC1WawCfUZkir7Dy7wP3hiNA X8yo78CpuFYAoMJtyYVOf8fayYICxujAO3zU2pjViEwEEBECAAwFAj53axIFAwHi hQAACgkQT4OMtyagqBYphwCdFiRae7gCvrB/jFA8ceyXaEP44doAnj41sLHZFGWI ZUmQmNTiNfZXYoQQiEwEEBECAAwFAj53IYwFAwHihQAACgkQdROiNhMQLPXCqgCf SgcJhp/6tnpjypjXWH9t6uKHg+MAoMYnXWc7iXVFvi99BonJW15V63uptCxNYXJr dXMgQnJ1ZWZmZXIgPGJ1ZmZAaGl0bmV0LnJ3dGgtYWFjaGVuLmRlPohPBBARAgAP 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 =rJ5H -----END PGP PUBLIC KEY BLOCK-----
<sbruno@FreeBSD.org>
pub 2048R/08E81687 2012-10-15 Key fingerprint = B9F9 138F 349C D3B2 2AA4 1398 1909 45DC 08E8 1687 uid Sean Bruno (clusteradm and developer key) <sbruno@freebsd.org> sub 2048R/BCC23981 2012-10-15
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFB8Jw0BCACYRC4xwboUcSZTAMO941WSdPDQoqefN9m6mbel9JwskGlCGnfO +H+AIZUW0eKzG8tywaXhcqoMrW6Ie9wOce7qF0+W3DnFsWk6XRf2guHAu5aqiD5h Q/0pMrgQZ+yiBsvqKZr5A0IDscm6v0Hu3brzyoLdKqLGHr1vSIZNv8d2irqjDtoZ 6y3EdDJXpMpUsagHdTl55uWZkkwLRQY83KLwemjU4qF2lxozHmjhD3dKTs8+NhQe K+0vJDaPyjhARDrTl1HBwlbqqy5tmh8QeNkgltW3tnSzC3d9xqU1cDcnTkgGJtkH G99/5/4WG/wLcAORjm/t7igvq/2shWnmhzGNABEBAAG0PlNlYW4gQnJ1bm8gKGNs dXN0ZXJhZG0gYW5kIGRldmVsb3BlciBrZXkpIDxzYnJ1bm9AZnJlZWJzZC5vcmc+ iQE4BBMBAgAiBQJQfCcNAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAZ CUXcCOgWh2jwB/9WEMzPw/xIcn47xg3uyawWiY8XZWvhrUUNdACzLw9xpNhSIYf1 rfbYdW9IW1wWVXyiGOunhLf7eylhdatQkjNPHH3rCATQVwfQbk/ONMP3OVy9hEhW SF1r1aWQZsdSEwvQNF4jlQ9un45YcgS8AqfnbRUgOhMfyaCk2f26sfZlsqcZnFto /aBx53hHT82+2KckvWBySOO58EKMVHV2MtuCQGUVikKKnNdWn617tyMhjcNd/UFL eZ9le0RQVGKjhCGP/o7TKDyHd68CVeUb4SKVQmIo5AnvNbGB7ZlmgsO5+xsq7PEg 4mzP65ivXhqhvAYek8zWELWQUlqjBbDr9MP3uQENBFB8Jw0BCAD8kd0hCt9bhAAF fS0vY7mt5n/r0AlP2mQ4H+/fj3AxY1v/zF8qyzDA1JKzgUUQSAA10J8F/AJFtlXi c/T4kVEIBMxW6OLv2mhaEHXM4Sxgoro91xk9VXZptsCX6qcqlrTaAKAhs2QlfepO dxeG1LI0Jr6gunzV7+geVEY4apDPcVzkA+hZruM2BQ31MsSSOaJG4CxfY4OE1Hzw d+/pYrqzBoog2/2G2N7mcLuGtfjp5cN4K7/X14b2fqyn/HUvQA6VbuCW5zWgO5Yi viEv6alhU1StaF30qLr0zh25U6P0PIho5L9nefO1NXTiuuZAiJEmjlXD5MRvM9gO e+PWRdkbABEBAAGJAR8EGAECAAkFAlB8Jw0CGwwACgkQGQlF3AjoFof9rQf/UKgT 03FSToSRn2VeIBost9JIuiYiOiTnT+7kyRxNkhAYS9vSWmicTXvHGxl7TzSyB4qN 3TzltJOXvjiWeZ4kymt/1EiIIh3gz4QHjtB/2sJSTDTLacx13ZlM+Mk89sAnzMIe z11ENGFXFGcBQ4kTxJqenZwy1TZ2xQQoU30Yx9tHq/Nhlva+HUzL5y+MNsZefyN0 BK4THdSDa1R1d5NikagUIknxt/ildP0GA2sUDLc91+dIbvqRMHXfteTRMGgu3EUy U+n4GrVj3+u3Ex1I3KJJplKYhKa5zQ5uNIbqL2ntOldwO9HiaI8Xxb16Xqv7kvlH IPDYZOY+KgLZ7L/TOg== =egdB -----END PGP PUBLIC KEY BLOCK-----
<oleg@FreeBSD.org>
pub 1024D/78CE105F 2004-02-06 Key fingerprint = 98CC 3E66 26DE 50A8 DBC4 EB27 AF22 DCEF 78CE 105F uid Oleg Bulyzhin <oleg@FreeBSD.org> uid Oleg Bulyzhin <oleg@rinet.ru> sub 1024g/F747C159 2004-02-06
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEAjnDYRBACecNDd39vZ9wnodFlATK+xvhlyX4M3FBEV34t9eVZtJz4916yb nLZmHwY6awt+nm6FGciSPucfu7stBCqvPURWEThJgAyXbxEVNyXmXrZ2F5OyNMyM EcbuqLZTjYxxN5mxUYswtiNDmdWn+Ivmw46wTOl5Pu+B7W2KVl8mwwbAjwCgl9hA puTWWN0zFklDJIuLx9eVxnsEAI+QaACe8H2l3XFpNkp6n680ZlW7FBZDDOYjCS4z nhFg7Bca74t6vnn5Q4miLnDDyOPkZqMBD2nLUkcK/kMfe5uqDUWf/i6sFDwv7d6I 9Ag4tUWLkhxAqaqomesfI2yS4o+QGTJgQdGU3IUrOnMJD7Ascwj7304lYuqYcaqT KQHSA/9eTg26Ihn9uBpGit+slgkmTHmKgAbg7IaSHSEYRbpmnc0Je794zeWns/oI vAyGNxEFpPQMVrSXHnFmK9AOcLcfssE24a3zw7So33asH2Ha9yYBrfKGrTCPZAsa uUGrKbGmXQ0oXDjjqV4anvC2QI5pEJvMbHJ+Xyq5xQN73ttJxrQdT2xlZyBCdWx5 emhpbiA8b2xlZ0ByaW5ldC5ydT6IXgQTEQIAHgUCQCOcNgIbAwYLCQgHAwIDFQID AxYCAQIeAQIXgAAKCRCvItzveM4QXzXVAJ9RD4kKNcvV8UmuBM66osVfZ/7yIwCg htVf/ZfKdcob1zQsBNNpmzkpduKIRgQTEQIABgUCQCOgsQAKCRD9LjUgMMgeateB AKC0iX0NNspa5EnBYGE/eEe+LxRs6ACfUqA0s50e2goJznaIcLTgZXtDECGIRgQT EQIABgUCQDIZWwAKCRCF1FBFa2kbA7N9AKCbDyp3g6vRN7dQKBb35s7gLp8yIwCd EH/ivmrxZSaHlrOMJjt6rnmuFqa0IE9sZWcgQnVseXpoaW4gPG9sZWdARnJlZUJT RC5vcmc+iGAEExECACAFAkOMPS0CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK CRCvItzveM4QX+tfAKCLk3zeTyzbbN6TqYpnqocno4H9kACePQaaDytLX+zk4plw sywqPLv67SG5AQ0EQCOcNxAEAIUR6Uj/bLAu0/FSGDSCXfjuThVT1lh1rCLQkbBw TxNiwHPHHSQRa654aoYbQdi9x6M7fzE6Uzmdj1Gs/UBYZhhsrlkL+Ls/xuhe3Kh3 E6lho11qPhjYXmFHk42VhtVlOcikZ/Azgqgycfql81H3bKWv6jA0el9SnX4yk5qf tgZTAAMFA/9T7/ty76bNeP3/LcY9ZL9KYWB8v8pJ9jEt/RfBXB0GTuV/H+bzTjSc PwhT8Fam9Fo+r02tUJfqA+XlOJf6IXPlLPRfvzHhiBJSBPuMvB6vYs5zrlUzkgNE VFHBr+TxpUWBq4ZtI9K8YUbPD+s86irYn9fHlnj9qnYsod3ySvU0xYhJBBgRAgAJ BQJAI5w3AhsMAAoJEK8i3O94zhBfFzAAnAg+W9rkVVdYu33hNqpX8E1t2kShAJwK V8DuSaXJtEgVE7Wp5CeArqtwUg== =/2pb -----END PGP PUBLIC KEY BLOCK-----
<bushman@FreeBSD.org>
pub 1024D/F694C6E4 2007-03-11 [expires: 2008-03-10] Key fingerprint = 4278 4392 BF6B 2864 C48E 0FA9 7216 C73C F694 C6E4 uid Michael Bushkov <bushman@rsu.ru> uid Michael Bushkov <bushman@freebsd.org> sub 2048g/5A783997 2007-03-11 [expires: 2008-03-10]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEXzleYRBADIqilbqBfzstvMByOY3QlvQD9QIGQLwZbziOMByQPwgzgBFk6x OA7NOfSKONPTsLtIOSc+CbuyEfw5jJiXsQ3Ox71Zp2JTra/bTim/WwJKC5Kc+egl CD6KO7GMTCBb102m2x97G+rNjGS8n7Uf7ITgoj9QtxBjpAC3K1ZcPoAcjwCgobcT q5MUrCqPHrnlZ87BnbT/3m0D/15hcV+qndPCShIqFTYbTSG18X7lBNTONZXmCm04 5dRcJrz4qLvsCYkBrmOCrKbYViQCQWiT7/G3Jzc+WtGFirYibU1TxBprZuP99gX0 Hea3gvgodlje7eq3Dz7Hx9uFgN8pfw2wWlEgdkuYk72s3lSJN6+TGWzXuWnRYYJ1 H8XtBACpByr9qcCaJ9yNAwDbDZhj03zSeZoIQz6d/3tDv7SkzDlVyxErJCO7CiHg JlxN0+paX0gW06xkLmwSESerJVbxEIoejdkdxebqPEIQN+9Se6Q2tkefMWd93IwL MP8sXgUBE6PEmFZTwI1/Av+vR7aI1pPk+yIrKTV2KyC7yCULMrQlTWljaGFlbCBC dXNoa292IDxidXNobWFuQGZyZWVic2Qub3JnPohmBBMRAgAmBQJF85XmAhsDBQkB 4TOABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQchbHPPaUxuSKCQCdEAIOx9JT lAxIOwL6ApsukCI1bgcAnjkybnn6t4WWYy7IvmwMMJJ17oe0tCBNaWNoYWVsIEJ1 c2hrb3YgPGJ1c2htYW5AcnN1LnJ1PohmBBMRAgAmBQJF85xpAhsDBQkB4TOABgsJ CAcDAgQVAggDBBYCAwECHgECF4AACgkQchbHPPaUxuS8xgCgjJ4lLhI3wDP8Rnhv Iy9UW5BuBEYAoI22XNE3OHvBdsmUyUvVji8yKt4auQINBEXzlgAQCADnAWwYquUZ mbrZ9/UO4abD7Nm0vipplm/O078SMdonir+HKWZStjuvIHhpPDGI0wCpg/v24B3w QVGiQhXWRL1cbvjDmiQG7GFdG6u4c1+2S6Evx+fp5DCjUMaoygd/KwF5tmxE5M2R 7SOYueuuxcDiYi4qJs9lroNxnwG2/VkrcPxlek1QbRVjs+TuRnzTaUzXbU7kli6y PUhBucf6nB0cPHG6VVn8N0Kki+HBaQjYOxtBCO2B5E0uRq0Y25l9Vt9s/0TfYnYb E0/sLj0XSBu8WWmXtW7QrtLPN0Tb6XrTeIaWW7HLy1ACVlzniu5oeumVKiW5nsW4 uJ/6kF5Fuu2PAAMFCADNuQ0Irmhub799B7h+FJVtNu1IxptmvJnD/RoWXhAtVo79 c176MEqS/8tghzdq/zXhr4DPMiTDWf1p4ynKFFkpQaWkHO28cvu3rc0tdpkI2d+s zKT6fFNn3kqQ7Eq5xgijSK8+aTWoUhqFvxkhLIcColuPK2TmQ+uIxjtu62lU52eZ DDePyHFGVWqtkZ99k1vGxZRf+vVXaKTBkGY3Pek04knpP5ROGA+JjL/Ew5o4SWfn FeD9aJ+xtZ9VqTUyl+U4XwIYlRcWzbqsbGp0D0jgry5Xhiggngd7xtNSB9/44HuU C5EQWVi35HKNdXMq4wsOMG68DCTE3XOABa5yPY7TiE8EGBECAA8FAkXzlgACGwwF CQHhM4AACgkQchbHPPaUxuQTrQCcCfrtwSXFegD9D0DpYWa6iIy9glIAniDIOvRb 4L8/nn1Nbu+PBNHamCHi =zD+p -----END PGP PUBLIC KEY BLOCK-----
<jchandra@FreeBSD.org>
pub 1024D/3316E465 2010-05-19 Key fingerprint = 320B DB08 4FE3 BCFD 60AF E4DB F486 015F 3316 E465 uid Jayachandran C. <jchandra@freebsd.org> sub 2048g/1F7755F9 2010-05-19
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEv0XOgRBAC9mFTzSKBVumlXJwWdkt7HvSRKo64Zs7BO/tYzt4dWVIzWwUC/ Z/Ns/X3Plb+sXp7mcvs+oLKiHw3qrRT5wPbef3V9hFfZiKdOfmeOv5fx1sIXejBC Cqq5ocAoq0bqf1S9i7vnuqfyH+9SRPOv0O6EnKCU+7sVMFXAuxDhm1+u/wCgwRj3 tNFbsptDZ/K5SMLM44ldK98EAKpSRVSMHrI/nxXvrNcPhedsC9MXyMOYE/q1la5k b+qNrD9QCJRwbz1LvoJGeOzEmtmZ3afT048Uks+RE03w+BhqJnuFgpAKqA39Fop0 MBvDuZ7Wy3iigebX35PAQ3h4FhwDTzsu9aEg2Iv/WksDqluQJcMkt8sn5NffhZho z726A/0dPVvHy0dart8LHKfou07u8y5/950UVITjGlQJ3RGvwQV7aPEjgpJQlQqR BMr3TOOJ3YGHY6xkaJk1fijb8MpSlihIr+Lyvhu8xVb3GCrPCh4Bff8fO35+wpBO 62p09dL4mJcD1mELJhMAMPpqXAXD2Ho76/RQ1yZlmH/xyAPTg7QmSmF5YWNoYW5k cmFuIEMuIDxqY2hhbmRyYUBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCS/Rc6AIbAwYL CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEPSGAV8zFuRlnKEAoKcsMnIQFgek8hHO 6a5pFO2DBto9AJ9GLTOc3OBdX1oFFQh/rsRYKPkMIbkCDQRL9FzoEAgAk8FWde22 yzxXI/qWRo+o6Ptm9Hae4reggr0boqeQCnV4ksLd01s7tJoaGlogi9OTLrq+OV4E CvkcKKHSltijMsITEwF0BwfrR1C1I59yUYABtGkw6f3bBApHNcDhl6dpcHymP8CM PiBrx5s63ja/CAKFaScUCUe7A5vYK91BwAJJ/IK9UONU9TUyimRRv2C86rQWV15N R8WE55iMdmFsu/Rkv5P3IPNzaIjcvY19iJOuxfeDTiKDp9j1QWwUOShrAHXa/Cra JvcNo4Iu3VeLKpaFW5zBvIbfQCa8LfRwfLPSEM+tCk9nH5zXSvwf6dDWvN66oo1j p2eAjrUEFnfqOwADBQf/VGVl9qx/d8NMjhMdaV6qvq8DfHy4I/BXQFERgKkFfrAd n1oGEJCT1fHtJNN79nCbyZ2dlfKqr6+Xcdy7RKInGHs9DwK4KfVU5dA5L3f81wZs OoMNuk64kjTAN867PzWdv7o+2seSa/9phsWEpCD+9qtRLiOcIZ8xeoecBS3iS3mp aT1HZuMLFMm8XEJSA4l8QfupBigr7Gq8z0ChwfMCZsVlVx3MtrTmuVlPnbJ4g0ku 28MACNiHkbfW5A7XhJ8re+Rc83so8ak26mO0FQeh5qsiVj4z/pmFGrYmeH94CLr+ bC+1nwkbAFxjZrRuFzct1y+oe3MSU0UUKTXUikovr4hJBBgRAgAJBQJL9FzoAhsM AAoJEPSGAV8zFuRlI3kAoI9Pl1nGD/sEvV9aGkLfAK7v9A9JAKC8ReU1wrQlM3z9 oA5JjxumuE274w== =kEVt -----END PGP PUBLIC KEY BLOCK-----
<jcamou@FreeBSD.org>
pub 1024D/C2161947 2005-03-01 Key fingerprint = 274C B265 48EC 42AE A2CA 47D9 7D98 588A C216 1947 uid Jesus R. Camou <jcamou@FreeBSD.org> sub 2048g/F8D2A8DF 2005-03-01
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEIkZzcRBACrskMO6BYlK30ghgpDYTou1UEgp0Y4QdghWeEP5kppuDy7kf87 CoKVvE/u+pVd7aFoTMa7ikqxKH4Kh7wnDEbFnzeZGtsf0Fzw5oHgoaQQlZHGRtr1 49UuyFnRWVKyI8IXS25Ie5p6ZlbAVFINOdJuP81gku8SffsoifnKIiWrTwCgzhTU uS1rg+TpKkiRnkXXtpVF9k0D/3/OADlTo77GAWMXl6HBTaB3BXB53Q4PozvGDter lWGKbx6uYvLq3ZPX1XBUapzJ3eoEfCsA++FeSzK+tue/ulbLiXmFhXSQWtXoRo5D I75uOoXlrc45uLc9XkOpeZ5dF4a1iJOGHe/hD4mmyrWIM+E6cy1lL4EetM35ZiEM lHqDBACehJoEdCAVMOcfQLs33/iTBRBE7Z6fN9DCH3kTvoYcgpZsFAX2WQFz085/ zHJ3NVFSH8LCi/6ck5ZeXCasAS3L99Q/io4WwmlqDj/b4PBdfoefInLJkroijcQ5 B2I2cH2Ss5kkwqj9PovanMWNY6Irv2szIViIeThB+l6hiuzaK7QjSmVzdXMgUi4g Q2Ftb3UgPGpjYW1vdUBGcmVlQlNELm9yZz6IXgQTEQIAHgUCQiRnNwIbAwYLCQgH AwIDFQIDAxYCAQIeAQIXgAAKCRB9mFiKwhYZR31UAJ91fYdpk0PNNr14jtURyeeS upTEEACdH7tOg9LmYNxAi0iKWVInoA/TNmW5Ag0EQiRnPBAIAIKVE+F4De4BWuab 6LREy3VmvNQgHSF8lHJm4TWKYGEkNhG+sIRFdJExqKG+N+El9QY4QGgezdogQIYk RBSg7nWzVrs7DiHJqC4PB/f23bzJl24Cg05jtxvZBz7t4lNXwY9G4kTmDb815FXd 1p8gwa1KCNsTlKVRJxbaku9gHsO2JZigLMzzF1Zt1vGtaSHX5SyjhOdMOFtjuLed NAgl9vgAoMpXLf2Saom38Lgv/jnWz9OfST0P+OA/JmqN5DqeRTlyVZdQ8i8bduYX xmtbBPOGHWxwUDxiXMULkdjkLLrY1UaizR6/ULI6+cPrPLZFdnr+5GK6ZoTXyJ2n EUUxpGMAAwUH/iPguYUdGVnwKiwqojHq9DzDb09qvPg+UIEjwZA9mPExfMPLo/1b 2NLgOF7pqeluXfiN84i58sipi4/ntlsNSzCYKCH2t2Wmfjdfpa3N4JaVptLR650x Lzj3egnWJKpHVSO+v1U7BSYBnaVPGfOMQVlSO5ra41SiVyZq6laX30PXXIFP6Ocx VWECVLmTR+L1g/5Nvq/L6NPv3ziuSLbSpvkLhTxLosaQwYFwPE7mLKgERUKDNc1u EXqyf8No4LKyO9V6VLckMgG4qbjQZhm9ozCmEYoKFZLafsq8czdNIKi4JV/8aUjU CsR5Dc8XAdwzPq6DBcikn1UBnvotbHtAFNiISQQYEQIACQUCQiRnPAIbDAAKCRB9 mFiKwhYZRw2hAJ4mmNxtlCe9yUHRCzxsUxl36gQYtwCfQZ3f8K4dxPU2ClJ46fTf FqQS584= =KYGd -----END PGP PUBLIC KEY BLOCK-----
<acm@FreeBSD.org>
pub 1024D/9B21BC19 2006-07-18 Key fingerprint = 4156 2EAC A11C 9651 713B 3FC1 195F D4A8 9B21 BC19 uid Jose Alonso Cardenas Marquez <acm@FreeBSD.org> sub 2048g/ADA16C52 2006-07-18
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBES8etwRBADeB8shuQ3GGp/AozsOggqLnSmFwCS8nGN+rnE+4LHuRzkL4Kh0 pgzalpPre7DohKjX2uzq9lTjjmsrTKZLM+yaNZ9fFMHC1uHxZnV9/c7tC97oQQXl FjMmemGZGA3VMhh5jEtjT5EJIvPBB4SBVhVhBJ24ananUD9KmUHTyP8GrwCgxMJ6 +NrGKVeu5QYVLo9oVo26J+0EALkWeeHI8PE3f0jOqS+Voym3jQPLw7pvx+HoySw1 X0c0YRa9uJVH2e8aFMMsCzT/sP492IksJvtRNpzDSJJyYM3zukzH+l7J2vwDvKgD YknZJE0pAS0GRAVbZQ9u6bez2+CUrGZW7Bvablo7r3nBHyhI2SpeM6naXlS4AJ6I 9dbaBACm82l0Uwip/WoJM0r/lB6eXMz9tFeRgfnPY3+G0Y9pFpdxTX0q5M73L6u2 PeXbWI2XPyPqw0wqda5YNlcRylXJmzLFGQzR6opqIbOEzRE+IinyQwQlcAv3qzBU p7qCplhjblcyAhWTlM5XsrAWxXHyNFrSCCPDgW296+8b6b94s7QuSm9zZSBBbG9u c28gQ2FyZGVuYXMgTWFycXVleiA8YWNtQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJE vHrcAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQGV/UqJshvBm6wgCgqtDd lyjakeTr7YVdNmpaI/UxpG8An0jtgTDD2M+CioUqGN1SNTkA/6cWuQINBES8euQQ CACt+RPVEUX/qDk3Qh6E1Zrm410mAJLfgG70tz02ApDXhW6aZccW97rH3pec+RDW fZVaSW4xHjUQMu1JaXK0dD++UWifuhYF+GUfi2NQflcy600VjM4v1HMZulTE5/0n NfPU4s2Vu0w1JcuXryjy5O8+ur10wQ4HFnL+qSDmXY2UKKTHA7vVrBTmysELDuj5 N6T9+xxuR7EJG3lwTREgPnr5nRlyZBxgAd6k/AJ8i2X1YiGix2KI2fk/HYdgl3FL xnLXrLE43mAwQjcmkMruNkebjfAAnp6vKvSOLZ3mqoPNhP6SPGTPxoskcHqHhvXh L3Y7/Qqga4sg+P8tZ4YTx4SHAAMFB/92KAG0TePM8+gtp64oOp9RuUELjT35f5RZ 0ZJZ1JromyMjOc6FRh1a9HiVzY2Vq99S/r8S5QoNH6vppxGjSL3Vs6vJg79eT5Jc ODdEZhoSzqmc/TwTHfOeHiFJJk8kAtX33CIHBUDM0p3OaJDj3weYi0TUWcxcvlFg p4RIYHCkmJj1/sI+0U8Jw35nSK4uNwW8MCl9a2hwHCtfnvQBfotybc4+YuwFesT2 SDRit/mXxYkmi/a5GPB0To/e/QSBuk7MMNtLv0oF8LCrfaN76XOmahxjaSYidA4H LUFNqtRL9J5/T4VSZsrSl+Gb6HQIaMoGPbXmFk3i6FzNP7VDViZ2iEkEGBECAAkF AkS8euQCGwwACgkQGV/UqJshvBlwLQCgqDaWuJOgfV0r5li2gRPUMI5XCscAoIG2 pLZLUWFiL2unIMhkFZSQbZZj =I2hD -----END PGP PUBLIC KEY BLOCK-----
<gahr@FreeBSD.org>
pub 1024D/9571F78E 2006-05-17 Key fingerprint = 1203 92B5 3919 AF84 9B97 28D6 C0C2 6A98 9571 F78E uid Pietro Cerutti <gahr@gahr.ch> uid Pietro Cerutti (The FreeBSD Project) <gahr@FreeBSD.org> sub 2048g/F24227D5 2006-05-17 [expires: 2011-05-16]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 R8Dblj7cX+WKPwwhnrNq0Q== =UXRy -----END PGP PUBLIC KEY BLOCK-----
<dchagin@FreeBSD.org>
pub 1024D/738EFCED 2009-02-27 Key fingerprint = 3F3F 8B87 CE09 9E10 3606 6ACA D2DD 936F 738E FCED uid Dmitry Chagin <dchagin@freebsd.org> uid Dmitry Chagin (dchagin key) <chagin.dmitry@gmail.com> sub 2048g/6A3FDFF9 2009-02-27
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEmoPBkRBACM2PQ+WGI38Z5NtkF50MuYyv0u4qSaWtx5Tquch2sgBDjxjebI XQYuyzM9piV4ZSZHFyjvFCHjLhPg7Ae6xaeaOwPsGQ2Q+bSC92PoTC3bDdHW1hPV 6s8KxrFcelHLwhmF56WIALoI6E6IF60KztuISLm0VDG0Wy3lP8QAeoWbgwCg0fY1 iOETR0ZP09ophWg8CPUxyvcD/3NFr6GEVUuFX4ENQkX2GTrvEB1IBS3v9JvEMlUX bShFXWGHB+3ynBvw/EiuOgIB6Jzay3prP9rdGW4NSV7ZMa3Yw6OdhVpQ0ticn4zU FiqLL6x8SKXKSm9BvjFuWADe3Lnu/ekY1lYTM4iWPNdA2LjRUHwpDIHcHWgcCzkn CfY+A/0eKkj+/VTddCspDaXuTmgGlkz90LsA0cLv6gRO3IV+0t80TgohtsCdR2X/ Yf7fi8GsaMdhgJZNm9dMz/zD7ZkQ+OyQN7NkB1zkwg2RwOnbbjTa+HECtsr2Znb6 B85MamlnHN0WHNgexaC6c7ezEFq+RMBKRVJJGwehZXpT185T57Q1RG1pdHJ5IENo YWdpbiAoZGNoYWdpbiBrZXkpIDxjaGFnaW4uZG1pdHJ5QGdtYWlsLmNvbT6IYAQT EQIAIAUCSag8GQIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENLdk29zjvzt eLcAn3hUOTepQzeJqPuTFl2Z2dM10HHKAJ9DJRmSIAwHBGPzlAFFzKKFW+OoV7Qj RG1pdHJ5IENoYWdpbiA8ZGNoYWdpbkBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCSam5 zAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENLdk29zjvztRJYAn0cIluug IS7YO6a+Bf0FByX3jlndAJ9k3HAxpt9i9R0wFkFmbMX0He86bLkCDQRJqDwZEAgA jMe9QT4KYOHsLQsF5vHBq/+W+Lniy6OqEB1GSK9P/vqVIqVa7v7NXX/B5R8UiQMz fSNcYH/BTN1lb8Pe7pAIBpqPhKBi7NAW1Ddy9399co1c37ncf6HEa2P0tpJbTrG0 Eww9nUiFbhjWUHSY0MT57mHQHdCSlqNFl2jaV91CQaNybt9z8JLO301vQXP4LLND a/FQ3TdBEIXFLs/H8QKLBe5TBgd2lXy9qpZsii7xpfNXKG1qqIa8sfUoJO5Ng2GB K6tJUFh/J548BLt/c/p1KJo8ovJB70DiOaznRc+Tu8rR03ehdfrJ5FpDoxC6UAa8 7FpXWxjM6L3N/T01NcaXUwADBQf7BpNvsT/QzV74wnGXoi9aUE84ojkIAm9X4Q78 dfdCvSFWUACcvsB/d7XLcCXOZ1NJ1E8Tdjjmr24MRQRUY8MhDt47ngsTyDhDW5l9 EQ/ByjX3wlRBNP5qEDVkLudfRE6LlEye2NSNpXYs1Naw6U/deUggNZMwriVCuRI6 TPc/bKeq7+378EBaKc8ckuRdv8LWsIdaKQ6rQZh1CB6LpSsL9OjcRpKvK8yYas6I kWUr07xvvlVyRVLcrNyQwp2QnfK8fXeH2I/Qg9QwcV+cXyKzH4vka9zrR1A9SAHJ iOyMXJBy+GzoYLf/y7/u/LOVAm09P4tQ/7V/DY7nxiOabSioTIhJBBgRAgAJBQJJ qDwZAhsMAAoJENLdk29zjvztGEAAoNFpe2XX37q3yAaNfiZgEABrxsgZAJ9yH0YJ QrmO4sxq5l7AD6K+KNahRQ== =ER/k -----END PGP PUBLIC KEY BLOCK-----
<perky@FreeBSD.org>
pub 1024D/CFDB4BA4 1999-04-23 Hye-Shik Chang <perky@FreeBSD.org> Key fingerprint = 09D9 57D6 58BA 44DD CAEC 71CD 0D65 2C59 CFDB 4BA4 uid Hye-Shik Chang <hyeshik@gmail.com> sub 1024g/A94A8ED1 1999-04-23
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGhBDcgZmQRBACk2gJB6utE2SYUGkhm/qHI6OoQB1B1cZxxjsUBmQZG8jHKj0Qd D5AZZv/x7C/2eyhUl2Jpp5Q2t4DIlivhrTYYM2VQ6YV6xXfjKrUjBmRc4i6IpYq/ t03ncDTyS3Bn56WcY1t+hAOlfQ/kTLEn0MLHPHvI1FDVV4VqG0MzvsV5+wCg5so4 M6YC+F5Tstp0tqOGCbe++A8D91y8JQitroVJ6bXmgCLHHEZqZLBrzs4MIPEHZld+ qaZlcbvPvmJqBjXVs0cojROEG8ZZgkooTZIZS42gKxN7sM7mVrQp/u7d9ZiIs7EJ wlYDHL1pbNJBZ6jk3aqrWtbVClzo3R/vjm1jo4kmQn3c2EmRY7n5vVTPvmLuSXvp KusD/2lMBEiTygcjg8MiJN0acy1s06def6LIxNMMivVjlIFxpq0YU2omzVFljbgy gAAcZgA/VhoGaSCKsoA9M/51tnIE7tcCQYsHmhoHsERliw7NPr4frmRPuaA3gx6h qVbwjUk0/gFTPuxRmnJyUl9rjn4sCze0eoMTraCTb81ru+/FtCJIeWUtU2hpayBD aGFuZyA8cGVya3lARnJlZUJTRC5vcmc+iF4EExECAB4FAkD9H94CGwMGCwkIBwMC AxUCAwMWAgECHgECF4AACgkQDWUsWc/bS6QRXwCfWQyDrnHKErxj3jZWfMgTTSUR +HYAnA1S6EfWVR+xI4d5V7K1o4U+JYh/iFwEExECABwFAj0XTZwCGwMECwcDAgMV AgMDFgIBAh4BAheAAAoJEA1lLFnP20uk4r4An3KSrVlQU+03cu7asDiAUu/0YA2R AKC/LEXgIKDd1tlWvJBi9WHOJWeyq4hGBBMRAgAGBQJA/PiDAAoJEMZRom5Q4jOk Nc4AoOpk2HLqrrw/RX/go6dgg4BwX0GCAJ9lXnFvF3MZt15axDDqkW+vBwsgtYhG BBMRAgAGBQJA/HFKAAoJEMnox5XjtG7/usYAoJRmWL6X567c4ypgCUI+pcivVwAE AJ99/qwsMdZoLfvsCeUYOrvFI7+Vo4hGBBMRAgAGBQJA+ph8AAoJEN1CmnbjJqwA XucAn2jHHc+u6KC+1eNErXNPBaAMEZjmAJ95rB5dvzS/p76Rn/85ggOfo7gEQIhG BBMRAgAGBQJA+mR5AAoJEBi5Be0l5MBmFq0An1SsywvJPu1aIWMbV1hgbvoKra7n AJ9DN8Czg9Xvl8zfxda//syHfiLeiohGBBMRAgAGBQJA+j2iAAoJEHu55xgSdy2P cqMAnijMYmWiJrkWM5PZrLFfM23V306WAJ0TsSRl3bsFuNbmuptu/1ALTUMkL4hG BBERAgAGBQJApQYOAAoJEEsqSJfTnaDjuNUAn38B71Jd+bTa7e4uTNgt+ygpoT0E AKC5FiPN1e/5TTQpicpxm/+ifqzFl4hGBBARAgAGBQJA+8H7AAoJEE7mpWgbFYrN qq0AniWfE7RcLFWX9YgrZLVWxLvxpOrSAKDTgNvLoVKeUf5rzHs5f0XN6NLUhYhG BBARAgAGBQJA+8mAAAoJEKeszx6Ol9rhrbsAnRi+1LRKX/vPwT4Rn4SMc2pEbBel AJ9ZxYTXsdEL57O8EBSac4287806vYhGBBMRAgAGBQJA+otFAAoJEAG0czTg1J6Z YzoAn238Nt4AbFVJ84l1Oce6W8zl6wmiAJ9HXnuPJo/m77lHAbNP87sDor9kgYhG BBIRAgAGBQJA/SO1AAoJEDJYHX6m75tjC0gAn3u72LSZiSPnz/Tg4Yc8xxaibjCu AJ4sWlrx6IVRVRkchxjmg2R809M5oIhGBBARAgAGBQJA+rmNAAoJEFRMMhzhlJHP MlQAn31bJlo3z8eq3dWQr+Yr2kU39HL8AJ452Y3ec6wnz/i96vWsGhbprIJSTohJ BDARAgAJBQJA/BMLAh0AAAoJEFRMMhzhlJHPs4YAnRSB6EvlonTWNksKakaY0FUB rvUSAKC4WPXWmntGmJTTovnlrSpUuhmP8rQiSHllLVNoaWsgQ2hhbmcgPGh5ZXNo aWtAZ21haWwuY29tPoheBBMRAgAeBQJA77SDAhsDBgsJCAcDAgMVAgMDFgIBAh4B AheAAAoJEA1lLFnP20ukzCMAn0Zzt6A68IUmA+pKZYeLSM3x8BvPAJ9Xay3AvXHq xkCunjqOBq0EFtRqGIhGBBMRAgAGBQJA+ph7AAoJEN1CmnbjJqwAEswAoLi6L+2X oyIPqW6tddaBGsRfrFoiAJ9uXR+C9lQ+E9cKuDZFIsvixRJFa4hGBBMRAgAGBQJA +otDAAoJEAG0czTg1J6ZFfUAn1m31LtNatUVft+HATP3Suk3BpQUAJ9c1zgpT0iL 1M9lEfopTLuYqFIen4hGBBMRAgAGBQJA+mR0AAoJEBi5Be0l5MBm+NYAn11iZAAH L/NiaBxDdqJcfdL7uKy9AJwJ2MTxC5rTVB06OONBYE30/47ENohGBBMRAgAGBQJA +j2eAAoJEHu55xgSdy2PbggAnirZz0+jJsmx4iU3imFWNNFktY8lAJwIMSvQdKfk +92fXCU+DBJQkQA7VohGBBARAgAGBQJA+8mDAAoJEKeszx6Ol9rh4LkAoJmF/Dq8 WWPmabYwhn8hADnCuOPhAJ0dc0+pjPCXwHgKIMqYknfL3ojxv4hGBBARAgAGBQJA +8H2AAoJEE7mpWgbFYrNwv0AnjWWP5WrOka30jnmD2f4ZfuUWbC7AKDHUbhm5JkS fP8qudaVwot45xIuNYhGBBMRAgAGBQJA/HFRAAoJEMnox5XjtG7/DLwAn2VkM+5z WmykJRGbT+Zh6+OHmxjpAJ9DGPrpTXyiIP5EEd2w7+EXiGKpJohGBBMRAgAGBQJA /Ph/AAoJEMZRom5Q4jOk7+EAoLv8vwveEEdPYNQJ+5BzZa+gBvT2AJ9AS+lvI+fV /JQ2hVaP6DradoicaohGBBIRAgAGBQJA/SOzAAoJEDJYHX6m75tjle8An2npGKEv 5zx+plAXJalZH0l6kADhAJ9bHoslJAfKMD6Rk52+MG/hwgnPVYhGBBARAgAGBQJA +rmLAAoJEFRMMhzhlJHP/tUAn1ruy6bmP4IUFFc7HQg1fIo9qlvzAKCcvCq3RPF2 v+hGi1uuu8w+Bfxcb4hJBDARAgAJBQJA/BMKAh0AAAoJEFRMMhzhlJHP0Z8An2tb hT67xHXlxeH73zslpXATFqUzAKCX99jd1jD26cqMOMYMfyg2JieeHbQgSHllLVNo aWsgQ2hhbmcgPHBlcmt5QGZhbGxpbi5sdj6IVwQwEQIAFwUCQO+5MhAdIFVudXNl ZCBhbnltb3JlAAoJEA1lLFnP20uk6LEAn14XT6cU9KyAGwropJxoWR95DPRYAJ9k TOe2ot/MwOLI4pD7A36FcqfQXohXBBMRAgAXBQI3IGZlBQsHCgMEAxUDAgMWAgEC F4AACgkQDWUsWc/bS6SxfQCggiWV05oDrtdjts6FdOn2H692y9IAoNeCpx91wOkw Vp5c894CrLroVT7giEYEEBECAAYFAkD7yYMACgkQp6zPHo6X2uHldQCdEJw4dYnn SuIcb/S9aHR7GZ0YLQ4AnAmLOBuiU8NKBkzlDuGukCg1oE2juQENBDcgZmgQBADW 3laHi0adLD3j4Obyjqt2ssI1XGXrFNSW5n+t27iioOw60wy8OzBxOhr2P2P9cvQL AmJ75IVJ6aUF72E4bOfF03xr3b8vCHIoejy23h7Zu7KUW/5PDAYEbFnafjrSN23q LpMkv4nZ0JZqJ/VEr5hQeo1BDHMqBpAx7LfNkBggXwADBQQAmUdEgo8xNr7EGhtW cUyldHyy+PZMqxDny4F+A/lecZTIjv7S2JM2zGwmC8V/vrFIGihMKEFhyf95FDUK ID2IviKFmkHRLnI5SCJg1CnNaC/epuLSMYOppaWcI1F6COVeQEpNcnO3qGQNho2t ls4HklbPC7T5cQjw3RPIqNgzwZSITgQYEQIABgUCNyBmaAASCRANZSxZz9tLpAdl R1BHAAEBjhUAn0OG9og9prEffO/nwJCrCRjIPn+gAJ9r01feaU5vSZZ7bCLYtkoJ b7AAzA== =dqQP -----END PGP PUBLIC KEY BLOCK-----
<jon@FreeBSD.org>
pub 1024D/2539468B 1999-10-11 Jonathan Chen <jon@spock.org> Key fingerprint = EE31 CDA1 A105 C8C9 5365 3DB5 C2FC 86AA 2539 468B uid Jonathan Chen <jon@freebsd.org> uid Jonathan Chen <chenj@rpi.edu> uid Jonathan Chen <spock@acm.rpi.edu> uid Jonathan Chen <jon@cs.rpi.edu> sub 3072g/B81EF1DB 1999-10-11
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 =cJgh -----END PGP PUBLIC KEY BLOCK-----
<jonathan@FreeBSD.org>
pub 1024D/E3BBCA48 2006-06-17 Key fingerprint = D7C6 9096 874F 707E 48F8 FAB7 22A6 6E53 E3BB CA48 uid Jonathan Anderson <jonathan@FreeBSD.org> uid Jonathan Anderson <jonathan.anderson@ieee.org> uid Jonathan Anderson <anderson@engr.mun.ca> uid Jonathan Anderson <jonathan.anderson@mun.ca> sub 2048g/A703650D 2006-06-17
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBESUcI4RBACIrp/6emcURG5g8edmVyp6d/PcuRDcy3i+YJSXqLPp/3qfM2J5 kVMCQvgFSXX75K5HvZU6mMMtHYGCComtn67O1MbUSyVUZlNW2PwUr77Nc34MgcYF fzU7siy8Pc8LqIy3JUtHwi+qmt/+UsQBTCO+2heK5xMj6zklm7qRfOo0rwCg65HO lViBItJSZuZnIqz5chlFbhcD+wdg1tyXl+HW/d9E6LxMigAct7fFMHd5aA5EWWr1 plTfSSxOETAsX1afsEBfrr6d8jLVri1tfDvRHe/30YxRv6rTZ64GLIXD2WEoN3yg NvRVRkOeFPtN8K1gHEKRrcp9ZJfGG80F6d/RMk++AAbg/pI5ne6AxEiR1cAHmwGF HlfzA/4/bmU3m2n2SEbBRAOugrYcSRF0OvPsju2K34pooAnePs/S/zJdILIism3W 1Hjjp46R6kEtvY1ykulseQzRk+IpF9Esc2tJA3VSHL0Z2uI/1fg2mCGc0nk+t4MB oqJshJLlR0S7LerduZ/Rc1zErb4nfhG88GzH2Z6fawZtantmjLQuSm9uYXRoYW4g QW5kZXJzb24gPGpvbmF0aGFuLmFuZGVyc29uQGllZWUub3JnPohgBBMRAgAgBQJF Im7qAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQIqZuU+O7ykiR8wCglscB c4qLHc61O+WbG1AVlgMrvXAAn0R2OaVyHU33lcxpP9AZHsOYmhcFiGAEExECACAF AkSUcI4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAipm5T47vKSCC6AKCG fne/4SQaTeR2HtTM8lJGMQZCDACfffBWKNxqzE9C1pp21dlJPyhOLwu0KEpvbmF0 aGFuIEFuZGVyc29uIDxhbmRlcnNvbkBlbmdyLm11bi5jYT6IYAQTEQIAIAUCRSJu zAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECKmblPju8pIj08AniQCG2Zu dFFzMubFUI5RK/s/KmYQAKCzEY9efR+f1sJKSo9/I1QZuNNQ0rQsSm9uYXRoYW4g QW5kZXJzb24gPGpvbmF0aGFuLmFuZGVyc29uQG11bi5jYT6IYAQTEQIAIAUCSBtj iwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECKmblPju8pIAtQAoIifNHQi kGm5CIgOxMgMAc4zZWaQAKCG2cl5XbQkANEp/5LB0AJkVyP5KrQoSm9uYXRoYW4g QW5kZXJzb24gPGpvbmF0aGFuQEZyZWVCU0Qub3JnPohiBBMRAgAiBQJMrKDcAhsD BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRAipm5T47vKSJPMAJsHHtHqP65y av3mDwxrHqnGYCNw6QCfSSK/rPic0fGdI+kwKphP+t804+S5Ag0ERJRwlxAIAKGW DtckTk++NzYHbfCmCa0mCtUg4BQ0752ZRUZS73V/dP4LYBmOS7ubppIWC8XJ8vCA YKesQYBde3Ly3TrZfzdlDLBlua2YzmLQgwZvTzfalzcUrbHzFWy+mGqXBBfnclV6 tYwMDmsVxsukpIVsZzWpEMBBrrd3Zsr9SZG8rjyfiiuv5kvrdPpGv/w9INCcqvMV CTi7whrJn8MBwD/rNVuZqa8kW1dN65xKN98Jn5RA5JCX7kY04gIyUL6x0dHnJZ/c dfRSMgHPTROiajnzHrd9Olm4e05Dijd5vAffF9rxNtlJNTPDaN57RhhdTK1ZE6mr zWocL33kLML77+3rVZcAAwUH/0sXk1iRq1cs6D99VsEpK5Yu12U8OTUk8cPZF+8C HsT0c5xCbaPENBebs8gtgS1/oURvO/lgNmthPFEdyD60l0u+wt2BSmua9s+tFsUH uWgTSx0k6Z3rw9wZV/YUxe5PLEJ1JJGi3YY7qCG0BqFbbHcpkrtj6X4+H0Y01MzO 1BdklQ548jHb6wZn6BW+dZikz/vE7urxhx73CpRWerLtq0EpFzsdRc9DzChqmxwX WZFpSAZT4fbEipdmK6dtNPJoTeHpB4zxTX1Cj1HHCKRw13dFlr+CMBnQnhJOOaM0 kh22yyLrR4rikuEqnhfB79Gw6dxlJltTUKNuPHk4D14Uh5CISQQYEQIACQUCRJRw lwIbDAAKCRAipm5T47vKSCIMAJ9i5XNgXRnS+qoCDrSgrvf78e6zugCgh+4Wscpb rOIHnGJFBTAXFZR7KjQ= =PbEt -----END PGP PUBLIC KEY BLOCK-----
<loader@FreeBSD.org>
pub 4096R/6BD4DDE6 2012-10-26 Key fingerprint = A33E 88AB D358 DA49 59A6 B263 A9A2 599C 6BD4 DDE6 uid loader <loader@FreeBSD.org> uid loader <loader@FreeBSDMall.com> sub 4096R/1036D26C 2012-10-26
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 DPodrx7PwaXno88xFjmqosI94Et7mQ== =qJuU -----END PGP PUBLIC KEY BLOCK-----
<luoqi@FreeBSD.org>
pub 1024D/2926F3BE 2002-02-22 Luoqi Chen <luoqi@FreeBSD.org> Key fingerprint = B470 A815 5917 D9F4 37F3 CE2A 4D75 3BD1 2926 F3BE uid Luoqi Chen <luoqi@bricore.com> uid Luoqi Chen <lchen@onetta.com> sub 1024g/5446EB72 2002-02-22
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDx2qBMRBADYSjvWKVcUxUb1aR1VjHTlFo6zc6PHMK8W3CRin7lY3NgsYsmZ n0IvGQIDEHhTpOEWLS0S6A/bseaGUir52X6spZ8i5hfd7Ps9RmeS0oHx0XDS9JTJ HXFE5RjExHbLnw4DbsaqR4Fl1V7NJU2U/nkiJILJd/PGPZsdstKYv5QvnwCgmwr7 QZlkTV/m61MmbMAEpEFWaecD/Rp5Qb9S5NGVplNeNqub4fC+Ydarkorr8qBJN9Va xu1Qgj3sOAoxmuOnZ99YAgXhs9Bqe4QsrQfs1cMUVzZsl3FIffh92HkrLmdJlsjX 8lrRT694cIP7+ELNGKJ/zaXI3j2cnQPVqUO1icVfijqatqDg8bgQS8C8CGQX6e6h ADKGA/9cIY450gMvrtbR3/bqH+IgvBCUog5RXv0y8c80sJnzeqawx2BuziFvv6mZ Kv0PJ2vnWok0NHcyuBHkkEt+ujYlMQXHZ6wRykYxIUzM8tl+9129tSNEK+GdcCOZ rfbwm8scs+VmzrHXP+saOPcHPBr0e/KPPixNN1I5HB3yI0ILSLQeTHVvcWkgQ2hl biA8bHVvcWlAYnJpY29yZS5jb20+iFcEExECABcFAjx2qnEFCwcKAwQDFQMCAxYC AQIXgAAKCRBNdTvRKSbzvmmrAJ9FVK0lT4Qym+qzj0EA6TP3V42cwACfQl+ClPzJ zngykscMJW07MBXkQ9i0HUx1b3FpIENoZW4gPGxjaGVuQG9uZXR0YS5jb20+iFcE ExECABcFAjx2qpkFCwcKAwQDFQMCAxYCAQIXgAAKCRBNdTvRKSbzvkEwAKCRteUw 2X3XbPsVDCBZarrkf113YgCeIHmhkDHbauw4UlUO1tYNVObn5dO0Hkx1b3FpIENo ZW4gPGx1b3FpQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI8dq6XBQsHCgMEAxUDAgMW AgECF4AACgkQTXU70Skm876CUQCggJuwNIJy6f05Ka17RYn+j8hEQhwAnicDXnsy 5SEYN6amlHdqN/HwXCsbuQENBDx2qBUQBACifA9hUBBYNqCcXTs8Jk1MCcToMFob vRt/SK2EcwjZ9aF9sIX3tJFrOHEe/bIcDMX19e480T4+BBs9MyHdnKgPR6vP8ZEe FvT8+44Wd6psLB1LwsE8UpJ3CbLjkgafTpJIlh4NP5iM2p+2ugUIRM2ZaAG7MOMK Ec47KOEb6yI9ywADBgP9F+p+zQ1Z/qVekBooIKU4xKBryGb/XIPJi/Pgapgr3oE9 kKH4iObbvMBSV3kd4a0+FSEXSZyRnMD1AG+dWhAHgb9rbjtICp3hZOKCMfdZxFVg QStZO8vP5EhQYYtIXiNmOvkkBPqb+to5RgFFez8oIdPlMUq2Hf9MBIY6XDoNJl+I RgQYEQIABgUCPHaoFQAKCRBNdTvRKSbzvh9GAJ9K3KifYIBOHlsmRLF75mgKQk/c 0wCeIOeVykZkImOxs0pEQMR/4g47Wjs= =RNuY -----END PGP PUBLIC KEY BLOCK-----
<ache@FreeBSD.org>
pub 1024D/964474DD 2006-12-26 Key fingerprint = 0F63 1B61 D76D AA23 1591 EA09 560E 582B 9644 74DD uid Andrey Chernov <ache@freebsd.org> uid [jpeg image of size 4092] sub 2048g/08331894 2006-12-26
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.16 (FreeBSD) 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 =+4em -----END PGP PUBLIC KEY BLOCK-----
<melifaro@FreeBSD.org>
pub 1024D/2675AB69 2008-02-17 Key fingerprint = 00D2 E063 2FB0 2990 C602 50FD C1C2 7889 2675 AB69 uid Alexander V. Chernikov <melifaro@yandex-team.ru> uid Alexander V. Chernikov <melifaro@ipfw.ru> uid Alexander V. Chernikov <melifaro@freebsd.org> sub 4096g/BC64F40C 2008-02-17
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEe4fOYRBADWmfOzx8cXvVytbw87eVlU84SXo3tZYeffxQkJ4JzGoA4Tq79w 2nTLPSnd42W8gTZ/dxEzhbij3RW5mcvc9r6N5YsOw3eKC30NQMM05nV5/yX1owj4 +eZ1YUZdJKUshhWax9dL23BDLEPRWfKsBWS2osqjIPy6WhDgTlDBz9rJGwCgqK5g Z7sULpLNE0nnJPQEWL8zt7MEAIIYKjPXf3BvrDtsOHWpOK4hZgf2X9oCfoFymVdp cQ6oCWsigmKyGuy3JyyA22UDRfZer3TqNCwd/ynHYXMmYl2IZ4TtV23wGGQDGyxw cu1SRhTcPRftCMI2r/6E1vHSqSSdmWwBv6gdN2kVSqx+REchIhuyWWWhMr2A64DI S6rxA/wMn97Q+ayj0S2t9u7NbUXQPcB1hiv5qMXWMFco3NokOsUdvK31v8m5fO4P Zzzz2JceN+6ae901C2Nrc25ZhujjtLs7XviqUB/GPLymfGUaCpRlm0XReKJPYQKo V4jAXxjzrevEWTtNwaC73V0x/w+CKWVhyfUCUcf6HdGkil4CPrQpQWxleGFuZGVy IFYuIENoZXJuaWtvdiA8bWVsaWZhcm9AaXBmdy5ydT6IYAQTEQIAIAUCSeHOPQIb AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEMHCeIkmdatpMIgAmwQewwBOZf6E EvGSx78VopWKwtyFAJ0Q0gEIyhtgVjHlGgdOhhaN7D7a7bQtQWxleGFuZGVyIFYu IENoZXJuaWtvdiA8bWVsaWZhcm9AZnJlZWJzZC5vcmc+iGIEExECACIFAk6LOVIC GwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEMHCeIkmdatpwXgAn2Sf2rEX g3wYOqke+DBqtgY7TAxPAJ9Qo6HmdRlACa5S3WR3xFFdx5SIYLQwQWxleGFuZGVy IFYuIENoZXJuaWtvdiA8bWVsaWZhcm9AeWFuZGV4LXRlYW0ucnU+iGIEExECACIF Ak6LOc0CGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEMHCeIkmdatpU64A oIl4yXypO/ve5VmpqWodSg2KpI81AJ4l9hRomH4gu1ku36RcejuWkYoSVLkEDQRH uH1AEBAAxMbUjr0N//HxCwCrCp/zy/yyF+tjYCoVxlFjeui8Uxc3QpDmsxDBgLed YggRT9VEFBHEF9T9edsK+2Rjs96saGcyolKnfeQSxz9ua6Vst39vAdjBzqmVXWJW DEgU9kAMmLsONi5nO5SaB0GpnhNttG5NM9J4lgZ5HUNnyCMEGUCOXa4R8R7sykS9 K2IfJZLsXWmvXXHD53B1uYROPTn+HrDixwdoYFDltedGKez+GPdP28PeBWeIJhQQ f1oxmlgNU8L++BaiGmY/QXBVRm/Z3NOuWi99NupN32LgZNCGdiZLvltgYaQcnYRh 08Br2Imu5vK9XpoDHs8a1AO5OBJVoysdu1ESnyzuvmrRewbG14+8kPi/4EKo8lnP bYGUVwh3R8QrSSzki8v+AZagh7Shf9m37QZtIzsycqqiE/S4o1kCyOk4q8vooRMU 852oXyHyF0BDPd21gfz6b2bKyi7eDT8apzrrZ+Z7yY+4TCg0D9m/LloT9cEag15T XxkuPqOF6gq7vMqm3GDa+X4wXgrVhNwbKHT3hAo/eSoQTdB5PeWELZ5ykV6Ik/6U ccG3GZjPMSbQU217PlmTVKmv2yrwHXxAZECQAlhZUIEkyVBHQBYuSH/37r8DM4im btIL6A++CoJZpf71YjEiPDiQc/ono9CPtMGsbPl3uekhYxdwM9MAAwYQAJRqYdYc Xb2IhEEbcdnE1FKzO/e3d+O1ze+diefS7/Lxd9zAPdmHY9W3duzFgQv50F69kKUr JzZF77o8X1dlpD/ip2Moimh0rb40PrP/AasCiww4hgXKfsDInqSMKDK4KaZZCKFf 4N6yGD2KAqqGnJfNNzIrdxpH0BjeXXZm+Fzmr5M/eWMDGOJZmYnKCSF7dStdwVZH Ld7RUvpQ3cR+lQUI6hYTMhXPqR7mEDAHq7IYzbA1HBp1c1P4vywD/myTi4wevomE 1/GprPYlocXaytWiRjJvGjLw8lg0E6utQRLhoPKIIp9CsNBw8IQRZ+qINtyO6pk5 oxnuq+yan2ixb10hBx1yQg6PLmgUaWqPihjZ+i1qtpLoMV4BGxzWn11+o8Mh0skH rmKP7DEbX6Ctee36gr6ULZATsje4OyC98T9wzNmLDYOV9Zusukd5Kxb4f6MuDO8D B8ky12ZLA9s7+RmT1Vx51pXOj2YnTT7RE2+QWu/gUfm8gWsq8tSwowzuE84QcwfX 2/W3oN4QIVUqWULzC+vUV0TnLO8K5fqgn8AkX2ta5pIYF0t8+KN/nb8mgV81w6cV ii1Uhv1yRMyro7D+eURm07yvpWyeLfILnm4U/PoFx4JK++UehPB+QACs0bKZ9AOh kTjflPiKorAw13Mv/BinmgRPnSJZzqUEW3ILiEkEGBECAAkFAke4fUACGwwACgkQ wcJ4iSZ1q2ldngCgh5mTawBEKWXNJXXVFGfo3CiWc8AAn2wCkHDEhZjrsq+OqQ7b j2THTkZc =2RPV -----END PGP PUBLIC KEY BLOCK-----
<seanc@FreeBSD.org>
pub 1024D/EE278A28 2004-02-08 Sean Chittenden <sean@chittenden.org> Key fingerprint = E41F F441 7E91 6CBA 1844 65CF B939 3C78 EE27 8A28 sub 2048g/55321853 2004-02-08
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEAlrEIRBACQ1ZZIej0e8esRdDxmuSv96bv1NTDBaEx7P649JM8a3afUvnQl JkA/ryZsKAnw1OeIK907Cs5HdaG1lD9ttpQolG5ZN23K01CuHUvq6yY+evwDV31D rKwYfALKfdhtAaymxM7RRsNNV8OkXLg0SEtBit4lbdY79vqiVC3PeWYvIwCgyOlb 7dw3f2mNtm280LybDSjn5KcD/2gWssJVtQgssnCi0Jto8csULw4OKyJHvXX06Qkf lnXKcCJTBMgXZf0cZpYhuyqMUZfsVJaF0lMJ85J8zD+Of3G/KwuCqW7jqpom0zw9 mgsmhZ1rZCbf4cG1orpGSSfmsi5IFoe+mWEJgHwIKlLYd/XDfT1q81swa2AlcjbE Pod+A/0cNSOWz4rj1ZjcxYsxg0sZES5eFEHfIJ+5g3yMbNPcvbQhlSClgDD1Z46p 6bEZA4+vL2kJH+29E1Q0M6H4OB2rY/Co5TypocuazZR1kwkJY+bQtFqPrcCm67Er GYl3qcbtV8Wgn153k6DnMUc7by2iTrJiRjWw4LNVhRZn3/dj8LQlU2VhbiBDaGl0 dGVuZGVuIDxzZWFuQGNoaXR0ZW5kZW4ub3JnPoheBBMRAgAeBQJAJaxCAhsDBgsJ CAcDAgMVAgMDFgIBAh4BAheAAAoJELk5PHjuJ4ooG+EAoJP+RzGsCHKYGaLhok0/ B0hBnIKtAJ0YTlDINuquFtqFTeZgwTUg4jeHFbkCDQRAJaxTEAgAqKA+B8+oo31g N7Q6uw1rR5F6M2fFBwPrYU9w6bM7qX6e/oy3epL8BgtzdlHyzcux/hLGDHGP6mku lwH5wGSjqfbk3guI1ogl+e0EjblIeUEAA1R/k2o8xt/HINhXiCjQhY6AJL9cljGz NQY/ecR9d4HEvjc+Ticgyt4h6WSGMTpjjY+Y0bWrxsXi5ZAsCNYEuRgdaRM52aXR gGkSqMBOKSKAPGc35Jh4nzvPSKjXmkXutCnPNcO+qPoro5j2Dx53ZkfB7Raj6CiY C8VQ8PDEpjELTq8fuOqqrl911RDYAOECWEqyim78qROuhgq5750w1CJj3K8o2FDE Qap5jNPiUwADBQf/bk9Es1QDyDTPLC7Look1OS50vhotrHce7P+uab++khm03ajq XmNuTYifQY0kgzzEBaELw4+isBf1NV1vvPK9P6k6FCx+1mcNYzItRLBo15MtcXlB IqkD3v/BnhVgT0PqJT6jO8glKCmhEq+GurXqydIfEzWCbz0+snVK769Q9rJHHUf8 icDKfUI1m7javdnXVrpA1kKZM8Omis+BfO17XDBLYZuVW5rAJDzG42YM8H1mrqBa GL806X/3i55d2RfgrljiZvXBpdOZRnM21w6hxNuj3OaVxqrQn9hOgzBcVdSZWc9b vxpmZ2j1vx7i4xNq5dzcBqxMKDcAcwomLWgjHohJBBgRAgAJBQJAJaxTAhsMAAoJ ELk5PHjuJ4oob8sAoI0szWtufl86pHsG0AwxjsykDS38AJ0SAW5Nr1N1HlZlrtlG 0ev24JoBxQ== =yGes -----END PGP PUBLIC KEY BLOCK-----
<cjh@FreeBSD.org>
pub 1024D/E60260F5 2002-10-14 CHOI Junho (Work) <cjh@wdb.co.kr> Key fingerprint = 1369 7374 A45F F41A F3C0 07E3 4A01 C020 E602 60F5 uid CHOI Junho (Personal) <cjh@kr.FreeBSD.org> uid CHOI Junho (FreeBSD) <cjh@FreeBSD.org> sub 1024g/04A4FDD8 2002-10-14
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.0 (FreeBSD) mQGiBD2qLwkRBADbZ6Rsv7guMTzGT9lj4eIE29vj0ZZNWFepFEqEmWK0jMLAATX0 koXkP/qWsuGBhVHcSyZtVG+MYTwAzo5nBszx12CNL/GkEokQ/9FXi+cA3W5TJZTE ssMq0PPwqCB7+s/4DBmc3uI22TCOI7J26XkftuwkdihCMG/gk+cgKkzZ7wCggaBp 02a96DwV/78wUZy9C8B6uMMD/j5jAO2HOubn5CRZrOpko3za+qVsk6yTCmq12z+t r9veYORoVohxVTIY+xpeHQVlOe5URTiKO0Uvu34Tl34x0BbSLBWrGU8UTMA4+hpl QTUK1GI1DheFPGGGxbt9w40nslRVw2Or7GA/XHexCDwx5KZpJNtO8c/MqdlzAae5 CuYQA/9bb5T8xhamrsOFTmdLY3wPM2efnp5d3luwA2Fe3SdC5Rkoa2fDye5w7fy1 9YX638Nw0YU6P/xmygdBjqxKs28/6evo79KAWONL0dl20pEYoj3yVz58C3YGLEFe p9ggrBf41MjnnMg+D7NdBOHtISfOrU3TtB/1DiGE3+QpMwuOHrQqQ0hPSSBKdW5o byAoUGVyc29uYWwpIDxjamhAa3IuRnJlZUJTRC5vcmc+iFkEExECABkFAj2qLwkE CwcDAgMVAgMDFgIBAh4BAheAAAoJEEoBwCDmAmD1SyYAn3JBBPs/6lAQ55HLjew2 suN8XP8RAJ9OBFQhUphqmQ/shjrwbNRBsgDbc7QmQ0hPSSBKdW5obyAoRnJlZUJT RCkgPGNqaEBGcmVlQlNELm9yZz6IXAQTEQIAHAUCPa7Z7gIbAwQLBwMCAxUCAwMW AgECHgECF4AACgkQSgHAIOYCYPW9MgCeOYgOUTCIsagnCymketJwQoGBEpsAnik+ bL1lPnomVghlMMUgU8wxB9sQtCFDSE9JIEp1bmhvIChXb3JrKSA8Y2poQHdkYi5j by5rcj6IXAQTEQIAHAUCPa7aJwIbAwQLBwMCAxUCAwMWAgECHgECF4AACgkQSgHA IOYCYPVI0gCbBZEg/a9K4BAY5HQ7wFOp6u/G+nYAnRgb4zUmf2M57dxEx2hm93pI aKP/uQENBD2qLxAQBADMGxA9f5QYLFnR/XZ+Hqa/YCeqFMZ3hC4KnjWBDDXfI0Cv HMLBIW5027NPIDeN95998T5YJPDm1TY5Cort72CTDS3eIfoG0iGwIzzLfXrZB7Zc 1BukNV5NMFeKPO7pX6k4R0aQr0SQUmcdYD7t6V/M4xswVOwcECk/W9BuGA/9NwAD BwQAy8LmYyssQdjImAASQABcpdOua5orv0ojYMu+edGmjd0WqhXToUHcDfQgL6YA kO/4g37ysvGwlpj8U7cZwabMO/zwnryyOEeGEA+5aCsji4VRZHOkdflcuBOXj0nR 9yHmPFfwWTxLtV9ajLCP4vXqKPrKciS8SbuLYzvx+lnUiCqIRgQYEQIABgUCPaov EAAKCRBKAcAg5gJg9eZZAJ90E4gu6VACob81uH3MxWmgjpG2iwCfeNTe1Wz7EO3K z54TjDmC4biJg2M= =g8A3 -----END PGP PUBLIC KEY BLOCK-----
<cjc@FreeBSD.org>
pub 1024D/FE886AD3 2002-01-25 Crist J. Clark <cjclark@jhu.edu> Key fingerprint = F04E CCD7 3834 72C2 707F 0A8F 259F 8F4B FE88 6AD3 uid Crist J. Clark <cjclark@alum.mit.edu> uid Crist J. Clark <cjc@freebsd.org> sub 1024g/9B6BAB99 2002-01-25
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDxRQfMRBACvHk6znTM5boH4k+2+anGxRuPxPPIJgo6Ny385v60FtJjwLwDh 9LwvZZjpjXi7MM/0FRfUE4bqzrdBtUm6XXGC8v/FTH72TemXR54yr2zuCTcX3jML e7wjrO0SO1cttASSeb8OsVQEqiMT4VRm94AYdQvS8bNxbqlog9PYmhh6lwCgwDYl Br/IhYSKQTugPEb8nSyP3e0D/izp3mt4NXcULIp0PZFpvnGZAMLq8moZ3cYa+8nM kRCWd/1/94lCd1YM8f3lQsaEvRuWaw7rT1ENknSb5TZnEMsTvV03CM4DMzH63Zde wgl8Xne5lF/WyiSsjUeSkmvCExFA83fz/Cv8/fk6K2O2Ajo0b33Rb7WLH/gb4U4s 9ZkEA/48XB6/s0vGFVnELRSXbc6wCHbnhG0/58ewSbJ2XjyIFFFmeqIF2bpLhuRT YTBz3styfrjeAqsi9t4gtcEK3vyvF83ql5b23u5/V/+O/ZLwk3kceYmjM0mbETil FajrLZjaWXpTRQauL/tsqxItBI4BNuTvnh9bizQY8V7xzAgMwLQlQ3Jpc3QgSi4g Q2xhcmsgPGNqY2xhcmtAYWx1bS5taXQuZWR1PohXBBMRAgAXBQI8UUHzBQsHCgME AxUDAgMWAgECF4AACgkQJZ+PS/6IatMaGgCgqdklRK39OoUma5sl44pEl7R3GhAA n1680hBnTGdIR4wxFY39uX9zK708tCBDcmlzdCBKLiBDbGFyayA8Y2pjQGZyZWVi c2Qub3JnPohXBBMRAgAXBQI8UUKgBQsHCgMEAxUDAgMWAgECF4AACgkQJZ+PS/6I atPX0wCghHE+X/oyrMbMrCsdwubBf1WudnAAn2WHoVNZpzgMck2MhFdwa/1rAJI1 tCBDcmlzdCBKLiBDbGFyayA8Y2pjbGFya0BqaHUuZWR1PohXBBMRAgAXBQI8UULc BQsHCgMEAxUDAgMWAgECF4AACgkQJZ+PS/6IatOKKACgsnfy7ZCxEWmdnY+c9KLm x0V1Zy0An34Ky4kzHxDYDTIoO6XRS48+/aljuQENBDxRQfoQBADouiAUldDORJkG K7fN81SWvocuySMOL/dEv6UQnBgR4lmjmaLog3QMbGIsJqiPRLDDS3PMkYf1dgDy 6hPmMkWF/xd13Vpk4S5sIjrqTBGoE9f0SPbcDPIjRj+htXFcI+qvhvdceYi24Zvs xGX90jb+fimZdrJNtobfEqJaYOkrDwADBQQAsCwtAczuP/aM624+UYBrNMCmHpRS ZAOAnp7Hz83GafkWynaNRDYan2KsBrZJmbZ3MJ6kyUj6k37Keh1c7pR5DsY202on 9haB3lTZv+j2QooPyj9Ityd985eqiRwAMBuOrpaCpot7zYlwiG/Lx/0P00RZ+Jdz hyidSKrsudGAp0OIRgQYEQIABgUCPFFB+gAKCRAln49L/ohq06htAKC7SFr0uQmS 9fjEOFsF9oPMMxgFwQCgjvMA6reNmNAm0i6ycFh3QVYEUic= =C4zW -----END PGP PUBLIC KEY BLOCK-----
<marcus@FreeBSD.org>
pub 1024D/FE14CF87 2002-03-04 Joe Marcus Clarke (FreeBSD committer address) <marcus@FreeBSD.org> Key fingerprint = CC89 6407 73CC 0286 28E4 AFB9 6F68 8F8A FE14 CF87 uid Joe Marcus Clarke <marcus@marcuscom.com> sub 1024g/B9ACE4D2 2002-03-04
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDyDmj4RBADa/Icz5Xl+cJUGNxC/tWgXWqcA9VA8GN+PeqKhXS0BnVHntdsQ xbpFUUKK4ld0Zex/Rec1jgC/ikExJHHIee8ZVcHqP+tsWexi83/ZvEdzI95diBp2 Is5fYp8P8hdIBNQSOoc1jVYrTJUaZgJK2uBzbkh/WbipwsQbueRzXqPORwCgsPNr StLzqOpjrA7FdUz/JVQf5+8D/1SiKAOFiW4TxY+fS09lqiLs3mbXjvw23iQwLxje 4vBd4+b9iAUWOsSretSKv6OE9ZlD4FYea8HmMgEkuKfXGc8GvTq4J1uHZ0gcVbrB GmxAUBPPaAENYEJfJf7dcysKVAl14ZQVIvzAGJAZHGuegD7uekGKnOEA61R3ze4a M2zNA/96I77l0qiMc6J7gXmiD5uxC7FsSCFj5sqTYMgBqzIYEZjU/tTUbth84xcR i4X0WNkaILqq1mOcBfmzQMvzG1n1CydmJU6iF1ewle6cIui9TQYg5CESrJF7xid4 vVXRz+xi6hc1+0bSaoJa3sfpNrSSr0lKGdWHZozWdQjOvTMCXbQoSm9lIE1hcmN1 cyBDbGFya2UgPG1hcmN1c0BtYXJjdXNjb20uY29tPohXBBMRAgAXBQI8g5o+BQsH CgMEAxUDAgMWAgECF4AACgkQb2iPiv4Uz4c6rgCgg7XXmcYqcIlJdDl0aGU8r0Dl kfYAn3W4oHUReFhATFkj2d+7zu+Rsu2MtEJKb2UgTWFyY3VzIENsYXJrZSAoRnJl ZUJTRCBjb21taXR0ZXIgYWRkcmVzcykgPG1hcmN1c0BGcmVlQlNELm9yZz6IVwQT EQIAFwUCPK4tTQULBwoDBAMVAwIDFgIBAheAAAoJEG9oj4r+FM+H7U0AoICIVoBe 9B8bo1lrvHh+UF7GY/WaAJ9C2mCThFrmqxCr2bCtR12UoPCPqrkBDQQ8g5pAEAQA qk1J4LBDLeWs6ZOkPDYYcKCSAu0qlzEf5YP/TcSeZcjJyXILgesFXcayoy1v7ILP QSXj4p5uzRyn0fuGqiTvajjxMZz1aSkvgGyS+gc+PDmi4SJ2N/tX2isrul8MK+NG eUsLuZaM1JKhgKpq9yuu3D3ELG7ESga7xsOs1V/sSd8AAwUD/20XByIlsUUC/65K G/DQ1WfX2gNuy5If9tSPQ6h1Lno5Hv3ow3ktybIoQSxbcBo28nA/Gzg5NFGVkkqf OkH2xtS6V0K/WjzsrloBHCPFiKp2yHpXfKubxl8yefQPTMj8hLwlBKrNiN1fz5/6 29TIkEwDwrUwHxQreE7FAzPMqHORiEYEGBECAAYFAjyDmkAACgkQb2iPiv4Uz4cn uQCfX1zNrahRTWz/HRpF7ms8qZqzdOIAn1uuu6Jst43pDzanBHUOBzUP6ymA =Bu/6 -----END PGP PUBLIC KEY BLOCK-----
<nik@FreeBSD.org>
pub 1024D/2C37E375 2000-11-09 Nik Clayton <nik@freebsd.org> Key fingerprint = 15B8 3FFC DDB4 34B0 AA5F 94B7 93A8 0764 2C37 E375 uid Nik Clayton <nik@slashdot.org> uid Nik Clayton <nik@crf-consulting.co.uk> uid Nik Clayton <nik@ngo.org.uk> uid Nik Clayton <nik@bsdi.com> sub 1024g/769E298A 2000-11-09
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 PbUkrewAn0exWATudMNC4IQf18YvII1t4Cn8 =9wNg -----END PGP PUBLIC KEY BLOCK-----
<benjsc@FreeBSD.org>
pub 1024D/4842B5B4 2002-04-10 Key fingerprint = F00D C83D 5F7E 5561 DF91 B74D E602 CAA3 4842 B5B4 uid Benjamin Simon Close <Benjamin.Close@clearchain.com> uid Benjamin Simon Close <benjsc@FreeBSD.org> uid Benjamin Simon Close <benjsc@clearchain.com> sub 2048g/3FA8A57E 2002-04-10
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =/2rY -----END PGP PUBLIC KEY BLOCK-----
<tijl@FreeBSD.org>
pub 2048D/20A0B62B 2010-07-13 Key fingerprint = 39AA F580 6B44 5161 9F86 ED49 7E80 92D8 20A0 B62B uid Tijl Coosemans <tijl@coosemans.org> uid Tijl Coosemans <tijl@freebsd.org> sub 2048g/7D71BA74 2010-07-13
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =JjyN -----END PGP PUBLIC KEY BLOCK-----
<rakuco@FreeBSD.org>
pub 4096R/18DCEED6 2011-10-03 Key fingerprint = 6911 54FE BA6E 6106 5789 7099 8DD0 7D21 18DC EED6 uid Raphael Kubo da Costa (Personal key) <rakuco@FreeBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 CnnWxLMKpuIcZBJTJj4DevmqihGS =FjO0 -----END PGP PUBLIC KEY BLOCK-----
<brucec@FreeBSD.org>
pub 2048R/6AF6F99E 2010-01-29 Key fingerprint = 9A3C AE57 2706 B0E3 4B8A 8374 5787 A72B 6AF6 F99E uid Bruce Cran <brucec@FreeBSD.org> uid Bruce Cran <bruce@cran.org.uk> sub 2048R/1D665CEE 2010-01-29
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =XNzi -----END PGP PUBLIC KEY BLOCK-----
<culot@FreeBSD.org>
pub 1024D/34876C5B 2006-08-26 Key fingerprint = 50EE CE94 E43E BA85 CB67 262B B739 1A26 3487 6C5B uid Frederic Culot <culot@FreeBSD.org> uid Frederic Culot <frederic@culot.org> sub 2048g/F1EF901F 2006-08-26
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBETwuAsRBACaptn8vJ5o5RZkWQUvr3EpBW91+hZtYLM+oBpk6+BayiPAW02f aAP6XTrl3GE6hK5+lZWMdxeu733Ukq72cLwbSNefpXi1A9/7IU+bsUWKgSRL/O4z HQziOHx+UgFr+uWdKbIssFmIPSJbsI0IOZV1p1mLVDCz97QG8JvyJA7AEwCg7XLC 0Rsiev0R71ErTCHmuZXoVt0D/ilNo5WJyA8mQ7wmfQsRUnV+GXXOYk2OdhrfqPnh B4WVqBd/duf7Hn8TzGF+ee90N7PjlOXa7VH8wQcKKSNUDGWcV++xJQ/ZxeB7g2Ya R+JeQy64fVu2+Zi8IehUt96k85mVZtb09J9C+t4+isRsZUb+A/tlcMLlYxcPSaai vGA+A/sH2RRyDJFTMGfqmpRSpm716mgWE1Oyk8rjqpRLOjlrgmORHNSSIawSpAHs PQrC5ouBWFRe6pCBLpd+xcvaqmnkVBYrVZFmI2ElTYWwviF8aQ7HHP7TVek4EZoE xjQ2YDxKlFN287s9yc8HXIiPcwLO6yPhDa1ZLEoebGLDp+nHI7QjRnJlZGVyaWMg Q3Vsb3QgPGZyZWRlcmljQGN1bG90Lm9yZz6IYAQTEQIAIAUCRPC4CwIbAwYLCQgH AwIEFQIIAwQWAgMBAh4BAheAAAoJELc5GiY0h2xbJ9wAoKf/6b8O9hlrKE6kFfr1 h4FuwX/XAJ49WDVUxcf+jFYluXwHmzRW8biSarQiRnJlZGVyaWMgQ3Vsb3QgPGN1 bG90QEZyZWVCU0Qub3JnPohiBBMRAgAiBQJMuXzFAhsDBgsJCAcDAgYVCAIJCgsE FgIDAQIeAQIXgAAKCRC3ORomNIdsW/A0AKDVBYK/Y91Wz31ws7Rxy7/LpvL6DgCg 4jNUurzgT1i0vFuBfPLQx5LEZSe5Ag0ERPC4GBAIAJFsfHsMTmxdNfKtzMpGOJF0 dLMLwwjPyKkVPtZZ5LZclo+7jjyg7dAYvY05o2ppQ1TH0LjTV333qWItSbv88Dkq f/pn8tS0/for45dVnuJbTAkkc+khPHCJ08iZsl/X1IYBj3bteb1z2jZr6M2JEQyN qUbbuop3zDoOVMx++lsR5+Q1/+BVuJGw5SuLVhTdNOjiwta3x+eSH4Jzqfb918SB uiaQyPcdMGBDd1VyVkJZU2dIFp7olJbi6T+leY1+TUdvXvzmBqB/0XtQfOfc3hQb Te5HP9IhiAQkhe9fdsOZpcAJuWS1HvKZT/Ck8UqKTWU3epzTlEN5LiTuisRiUGMA AwYH/3eopRoq31zWXlfWI5bETU/DDna48gzpz/P8cc0ge/7YO/sGyB3jtF3D1htI rS1dp7I1P8+H42vwAje18uxg1IKZeQ/ffFl29BTqWM71rALuPyXR80JjT6gggTRl Bj/YEVUyxD+PXG2qRBNtYOCDLUtKbFzpaGV/ViONkSfzKTNIdjyDlTp8UGWRXteI 903NQSogGxVew/0wrlyXURoBKWZu34Y6awcvQSmDGLzWqEpVbyVofAjjtE06iIXF u9vd3RPua/WkTjZELE2Xs6hkxGoWfsmpnsKuMS4zZDr0olIbBtMiQGp8nbOQrJPe 5ax09EyO4fJYj4KqY7vfHdMMjByISQQYEQIACQUCRPC4GAIbDAAKCRC3ORomNIds Wy+LAJ9s/SE8+ysRtHJq4zYNkOyzXpt6VACgjcPRoqpDhE0y8V+QniOWN6eJ0Ls= =h8ph -----END PGP PUBLIC KEY BLOCK-----
<aaron@FreeBSD.org>
pub 1024D/8811D2A4 2006-06-21 [expires: 2011-06-20] Key fingerprint = 8DE0 3CBB 3692 992F 53EF ACC7 BE56 0A4D 8811 D2A4 uid Aaron Dalton <aaron@freebsd.org> sub 2048g/304EE8E5 2006-06-21 [expires: 2011-06-20]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBESZZ5YRBADZ18WQp9eda97kmLEVNkYUkTbWn90/9ViXP5lWhWDvdIwXXa+S byVbZI75QkYrvhhyDQPwK2pwF3v/nGaBhQvO666uWWyqBAC+FTjc6GQ/tVTe67Pp dBVlY3X2QadAIWOYHFWNhG58jAXDnuz9po/w/h5t/6wayVElamu/jPBwBwCg48VZ 4q1oQ7M474YPBsyLfmkLEu8EAJwdgos/BxJ0a39PFtI768+6SS4e+B7qt5UDd30l 87rvKoW3gXuf4Vn00Y8m+aK+mUjsWeQfDCF6Kj7/ecGNSkfvwmsEDnRMujyapX6J wuJ6DzKgrc3zEBXVK5g+JBrSZDGetkdl8jndG0lmxIqxqnx1R+uxiWNs9NAdeP1P F7vCBADAPoKaAEW0LlsOE0zIylP5e+LTBd6MQeZ8zISlNqMHDX9F174Fo4CFH/pI nW588yf/ChScuONLPIPbMBkvoC34yLEGluvjZov0cjySqzcTN/TkZ7iH1NrkYe71 /z0Pe6jWY8p4KjK6C6dKok8b1ZI/btmJyuv6bkTzM5kQlxg43bQgQWFyb24gRGFs dG9uIDxhYXJvbkBmcmVlYnNkLm9yZz6IZgQTEQIAJgUCRJlnlgIbIwUJCWYBgAYL CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEL5WCk2IEdKkTFIAoJwahC11/B2TXIk8 9PioqX0c5nU5AJ0YGkpXIzDzF6QskMWWQq64fMuE6rkCDQREmWehEAgAzFoPIPXW +sMFJs/DzCYMzHglYmNzHr8wCfvNq3hiiHUfk9EtcUaMnVI6TMkoEEF4mXMpf7oc uCjU0+CZMf2GV+bLkxs2rNePyjzTuoig1vsl9RFA+1tMfLrUsUKwoPjLZUbHHApl S1x4k+TaLanT+tSQar//WNuA5JrmxRXSyYXu/2y5VSi+niaNKupNYXfqr53SuW2J xh90I90hzgBzQypWNNDEIN1c/lkgIvWm7RbbBliX9Y23iUeFkzmLbOUcpLSy3zj3 9I3eCshQdFv5UT54N8rMAg6hGC5jfeqy4mVpMLWst3Y/Od+DBv/F9xnaquGW7LYp Pz+H4fJzdC79hwADBQf/XyMpsvO4z1N+8DaVybwMedLd4ExSkIAsAI3MTS1mtNu9 mFm9GQULWvUH1YXBFnVVidibc7zdTwVEAPFhc/uZ5unxqzbUAj5whkCBUF53ZpVv nsskZZ3aUEh4hEM6S1t1kc7+HptpMgaSxEcjy+ylybMEzBQ14Mh38sEavfoeDvfb aP1AtLQh/+ehQZHeA6px3PvdDeevM6zLoAY6yEKtd5QaSrvhIuP91HKeQjPgM8yy IZTWM050axPzKZOCf2VsB78QUNVGcfFrbScleBvaVbdOh/ZgxGOgD7LOhhgivV1m dLQ+3W66/GuUVDHap5hdzPuoUgFTodlzilfqjpaekohPBBgRAgAPBQJEmWehAhsM BQkJZgGAAAoJEL5WCk2IEdKkNGoAoMBfaOMRp7+OtWsx8pkGGlFszVCDAKC0rEFY lBcUW4xcel1cl7I40JK+lQ== =bsX2 -----END PGP PUBLIC KEY BLOCK-----
<bapt@FreeBSD.org>
pub 1024D/49A4E84C 2008-11-19 Key fingerprint = A14B A5FC B860 86DE 73E2 B24C F244 ED31 49A4 E84C uid Baptiste Daroussin <bapt@etoilebsd.net> uid Baptiste Daroussin <baptiste.daroussin@gmail.com> uid Baptiste Daroussin <bapt@FreeBSD.org> sub 2048g/54AB46B4 2008-11-19
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEkkLyARBACYi5Qr3qvyrpp0rgqK4cAwteOZbhB3Jt2uxuzrKnKeTw3y4DrG lD+7wAwKmLapXFobxCmndhXNnWw1Viy+hiBN5id8c6TmLF+I4lbxL1Nmzl++ifVr OdOTqXH/L6kbKF80bY3zhgzR6EtH/0UjL6aXNWyLv/2l88+vx+Qrc5NhJwCgwzkS RbUjFKhyAxh7APNTUqV/ZfUD/3nnu/ti17KqQhiRgm6qup2ZPOOpOtlJ8J4dDFtd crmhH/ViE5ze8hPVTymufvLj3dWJXB3gA4CJbMmD9qQMaNJ1q7tEIe1MVNUEVop3 4BEl0oRJyeUlT9QuVqM2GzsBeIiTikZMMpRlZOuuYwm5sbx3nrDHaiBKAkthZF0z l9dlA/9QdSfmViz/x7B9Oa7WfkvmAH4/nMIxaBsliNAtK6peaPFo9M03wgfh0eo0 3JjLAVFbembVkYkA9HqqMFx7Z1W0i1WJAr5SC7gX6Pf3pQPmKIKJKJykXzIRmL6M boUYksuTrtZIDiz/luiEg3wVUONLe6iX18v4RzvS03F3T4HAULQxQmFwdGlzdGUg RGFyb3Vzc2luIDxiYXB0aXN0ZS5kYXJvdXNzaW5AZ21haWwuY29tPohgBBMRAgAg BQJJJC8gAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ8kTtMUmk6EwjzQCg u6livnP3Mpb8zzzAvfNloYFVW6AAnRwemMVD3FRe1Rn+Ci3lfgySMDmltCVCYXB0 aXN0ZSBEYXJvdXNzaW4gPGJhcHRARnJlZUJTRC5vcmc+iGIEExECACIFAkxO2FcC GwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEPJE7TFJpOhMb0YAnjOkFOYw 8gjML7yPL7w3WNukE/XzAJ94L1XFYK7seJA4zHkMI1nTG3SZjLQnQmFwdGlzdGUg RGFyb3Vzc2luIDxiYXB0QGV0b2lsZWJzZC5uZXQ+iGIEExECACIFAkxO2G4CGwMG CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEPJE7TFJpOhMSlsAnj1fB+Mtca/J umANnc/GL7iWGjStAKCkEJmZyABghRDR8HxMzJEgfGYZ97kCDQRJJC8gEAgA3nSj 7ISAocQ76ew5bSc+aW/cLqnAvWnEFOtwneahbOOrwpLRt1CtCC7bFsWnkqsFJT6N UFcc1dJl0D0+JMql1+uvyiBK4kLGhw/kayWqGhWVYAwul375lLxyj+Er3zGAMdLv vbGtg4+8vt6jpF1CvKLQzGQ3UJDlCKz3XST/tRUUFoq/5lD58wqJBOyjKgv+nU5g nmVJbmsNtRH8gArX1b1Mld4pnfYdMcRVpbna7Ct78GJDbvsRZnR+YlMMc7De0zd1 /oeYo7TBc8isPRxFvdd6d6GIuDPuiK6EXZphrwzQSqG3/hp9SHgC6of9yVzP3wFi mrVRyyUQKVHYX21u0wADBQgAvbwssU0S6THyBaPr6S+tbTKS8is81SZ87kiUmu1J /qyKHXkl/aiC39DBX+a2nr9hUbtUsdYlEmWf4LMACm4jt0mPKrL2EbAUSRCVqJ0M c9TliU7X+ULExN7DNa7B93ux4TaGr04CjEuQxfdg3Ob1YDeJ6bzKIK8f64eB51as 31mUaWC5Jwsj8O1XgP/yNvKi0vnJb4bBava0h2U75oU9GzeWr644KRnh2FGKwpnX HSqFq3opG/PR4PbSYkf2R2Eeo7Ox46iCWRrNjjgHXK/GjH8skjXoWWmD9S0h73b9 KNDXRPD49G0P4yvNV6p08laVUl3G6A63aA1/cBqVGFsyg4hJBBgRAgAJBQJJJC8g AhsMAAoJEPJE7TFJpOhMLooAoI1+f30zI1xxIXjy08NLxCQv+9nbAKChzUNzc5OI D2+VxC1zkCRqhNa+rg== =NqtT -----END PGP PUBLIC KEY BLOCK-----
<ceri@FreeBSD.org>
pub 1024D/34B7245F 2002-03-08 Key fingerprint = 9C88 EB05 A908 1058 A4AE 9959 A1C7 DCC1 34B7 245F uid Ceri Davies <ceri@submonkey.net> uid Ceri Davies <ceri@FreeBSD.org> uid Ceri Davies <ceri@opensolaris.org> sub 1024g/0C482CBC 2002-03-08
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 kY8idgc= =eKfA -----END PGP PUBLIC KEY BLOCK-----
<brd@FreeBSD.org>
pub 1024D/ED0A754D 2005-05-14 [expires: 2014-02-21] Key fingerprint = 5DFD D1A6 BEEE A6D4 B3F5 4236 D362 3291 ED0A 754D uid Brad Davis <so14k@so14k.com> uid Brad Davis <brd@FreeBSD.org> sub 2048g/1F29D404 2005-05-14 [expires: 2014-02-21]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =HfL5 -----END PGP PUBLIC KEY BLOCK-----
<pjd@FreeBSD.org>
pub 1024D/B1293F34 2004-02-02 Pawel Jakub Dawidek <Pawel@Dawidek.net> Key fingerprint = A3A3 5B4D 9CF9 2312 0783 1B1D 168A EF5D B129 3F34 uid Pawel Jakub Dawidek <pjd@FreeBSD.org> uid Pawel Jakub Dawidek <pjd@FreeBSD.pl> sub 2048g/3EEC50A7 2004-02-02 [expires: 2006-02-01]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEAeUYARBAD2RoYfLkSt38R06MpFesDgXVvgSb7q2GGTiMLZE7iJ8iKQU7Rx DkpW7EkpJ/YGPXro0KumkIGoPCsMF1eLENUhGhyMosN5Yb9Y7DXsOv3QcCKIfBlM P3Y+Y7By0GvSYPvYK9GZI2ZvSXyTraxB1eO/7c+aqS7wdwx3bCsVKnyzBwCg+nXQ izSD3wmwDYxffxN4dawiD2sD/00L95dq5XhM9nISjWJOjGsPJqyzoZZH2pemOgcq SeNimi0yWOWeZh/bxbjUYI5RXdBXGdwQxW6DKFU9o9NFe4se1jZcbPjuRtkbBXqz Mkh4kv2pvZ+rHu41kqzOZ0z+rbZld2U28R76xtx3RI4OXvJ8z01RHzAEwJ1G6s3D wI6iBADy+KSjJmfgP1rAcNPuwW7T7L2H9fLNTp3mmWZZDj6n4fykcwM9Jtz/K4QE i3GHNB2AnmR8yiPE2m87ObsKV7d8UK4WP0OLfbr7d7TZ0jDscBhlyfYgKYDFHaJH 8O+L7df2oQU31wYEvYOP/mSTPO7F5TJZm3/Pygp/JkKnPDCnY7QlUGF3ZWwgSmFr dWIgRGF3aWRlayA8cGpkQEZyZWVCU0Qub3JnPohkBBMRAgAkBQJAHlGAAhsDBQkD wmcABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEBaK712xKT80dOwAoNjy2Xrebr+p AQroKNQnIzaR2QysAKCXRA9XldUcwxSOzRJNhDktAKQbZbQkUGF3ZWwgSmFrdWIg RGF3aWRlayA8cGpkQEZyZWVCU0QucGw+iGQEExECACQFAkAeUbQCGwMFCQPCZwAG CwkIBwMCAxUCAwMWAgECHgECF4AACgkQForvXbEpPzQudACbB3QlE/GfSY+umOHI y+3UjdMKuGMAn2JC4vrcEPwg8XMF5iEIaEZ0tNmVtCdQYXdlbCBKYWt1YiBEYXdp ZGVrIDxQYXdlbEBEYXdpZGVrLm5ldD6IZAQTEQIAJAUCQB5R1AIbAwUJA8JnAAYL CQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAWiu9dsSk/NByVAJ91gG7VGmIK1H1LyHnW ZPI8T7WRBwCeP644asOCGfje3+NjA0F9OHoL2z+5Ag0EQB5RhhAIALfZ2Kq/Yd1j X4+kdVgCQqHP9tEHjYLwGICL3Y1i+whLqUx/X+MZmt4vNZLaoaqRXhMD8A5c9tN4 06ODB6afzS0feQE/s3j0bKRviTvUedg+CLvt9anqf092gRt1MnKAAWsw+WNqfCNI xsONpWWS5LL11PLyEOhxqsEvcx2IpswjG398MINFwHo7dUielCDpAPgu8tCVLpWb GqUBiWdqzq9jxvIS7obYUmr0VBqElP16LrcvoUs8W+AGvkfTZW3iX6yPhfpnycKy OnStwtO28Ud2BlRrp1YLJWv8oZcYDP5p0GyhbmCbj6qG+BrA8XbIgASFZHK65CWr ++Zc5tztIBMAAwUIAJVrsEErdqxbj7qdJXVebkQZLe/hr5fFOGdOwMmvNbsI2nHj 0B/L8Gfw1v2N6K5ST68mSH5gPpDDkLqDfqY6OcN2LBhVvOdEGJv7kp8x0XK/vsbj jARiO6l7ZrtH4E78oiHzYK1yGFNMi6c5zpO6BXRUAVmKptL/BRu0UPRMfScyIbnP gT0dcOiTazJ5U9Ol+Mjk4S/YLqe/05JQvmzKzSht6E8BbgiZxwsrWB+CLpLwglbg f4NX+BAjApvoesbhkLOY03bSgP6CsRbL7izgVmfAHbOJk5eIYjSEIOcqIMyg3cp0 kZI7omon6uhjl36Ad1uEwjkW7jPgCz9a62bLr3eITwQYEQIADwUCQB5RhgIbDAUJ A8JnAAAKCRAWiu9dsSk/NOa+AKC/grZ0DrDsO9LtCEQKwTcP7EQYBQCgsk9ZmVug 9caBiftOC/+/0ej5qqg= =/cMH -----END PGP PUBLIC KEY BLOCK-----
<bsd@FreeBSD.org>
pub 1024D/723BDEE9 2002-01-23 Brian S. Dean <bsd@FreeBSD.org> Key fingerprint = EF49 7ABE 47ED 91B3 FC3D 7EA5 4D90 2FF7 723B DEE9 sub 1024g/4B02F876 2002-01-23
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDxOCiIRBACyyyoMk5OyGdOkR0a4fj8zPJ2AOielQ1BYv7JlIWdNeMHdQ0gj liTgXwDimeBnElw7sNrmdfocfwKbmX33exFPa3AkJgLflBcuH9+xE3ozgzMl6t76 QL90PPIc24Er670NnhF7Smvubus4IdckvM24kuUTINmiuFzVwuwWdXdwvwCght6R HPpuFeiMZHRJAiHmu9AkKrkEAJRLmRGgdqTQ6RRIQobqGS+1grl6AsXHzKfvjx8I //12yrFiUcXE+167I529OW2i4ilmVjBmnwwe3750ZKBIp8OUBkMkfMuTSyCCFD22 CX4N7D68d8eCJiCqv0jMZGnoWoMulmWzdyplcg/FhdLzUfpXLWX7/9gzy9k8hKBT Ou2UBACRLG7zwgKcYx4yjHhsCxuqGOeKtcfF49ghCp1s+wPsnXy8b6ZAY3wFeHC5 LFyUsQFarizV0aeqJoOXEB296xZYPpgW6C+rajd1WVi7zhPxsfYedldX8HtGDMKm FRN88P75OGjMdFOYrpXTqUAJnoTUN4UynLV6WbfM7Cne0syg9rQfQnJpYW4gUy4g RGVhbiA8YnNkQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI8TgoiBQsHCgMEAxUDAgMW AgECF4AACgkQTZAv93I73un4TwCfWqT0UeeEn9qstLTycDZF6oiKUusAn2dZRiNX 06KUv2qJk2g88nUsBXgDuQENBDxOCiQQBADXY+I+CYMmiant5TBMzh5JfqhW2FXa aZDgi5XTVAStL6AaygeLIaVSSUUuOxiD4JB7vxHYB7pyVg71/lg5moud8NP2HNKW YR2mZjCQ9bHRQRqqPBTMrSHJpq10cZ6grxvVmte/oC4cI35wL8HEe2WwChZgk0tS YrA5PRt/UGWLLwAECwP/SxokqxcRa3lZqkpdwLgLWpyx1KNBg7wIJYLmALI0UxpS ezweD7OukikqZ1BYlaaWZ7N++r4sNDR9WTIv0ySNovxJnnlyo6FzD9RD7ijQbAvp nhpikigC+GvdnvmreMXYztc9WvFeJT/S8LGDkDHcm0ECmBDo3EA8W0+sOQsZxk2I RgQYEQIABgUCPE4KJAAKCRBNkC/3cjve6eroAKCCMN4s5AqvTy38BWmspFvSu90I IwCfTGutfs+PGUY9JJoabnnfJhfIgNA= =MFJO -----END PGP PUBLIC KEY BLOCK-----
<carl@FreeBSD.org>
pub 4096R/FB3B5D38 2013-01-15 Key fingerprint = F0E5 3849 C6C3 668B 68A3 BCC7 6031 E963 FB3B 5D38 uid Carl Delsey <carl@FreeBSD.org> sub 4096R/256F29D3 2013-01-15
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =jP+Z -----END PGP PUBLIC KEY BLOCK-----
<vd@FreeBSD.org>
pub 1024D/F6C1A420 2004-12-08 Key fingerprint = B1D5 04C6 26CC 0D20 9525 14B8 170E 923F F6C1 A420 uid Vasil Dimov <vd@FreeBSD.org> uid Vasil Dimov <vd@datamax.bg> sub 4096g/A0148C94 2004-12-08
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 XmPkHj0KHckscg/fYw== =Yp1b -----END PGP PUBLIC KEY BLOCK-----
<rdivacky@FreeBSD.org>
pub 1024D/3DC2044C 2006-11-15 Key fingerprint = 6B61 25CA 49BC AAC5 21A9 FA7A 2D51 23E8 3DC2 044C uid Roman Divacky <rdivacky@freebsd.org> sub 2048g/39BDCE16 2006-11-15
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEVa4hkRBADRcg44myl39Jv+OO9DMl2XjrS9JwguZSVjCHY2Tj4urjsEjcwf 3ykYpJbXkK0KHHP5VTfoIp0MwoQdS4Xx5uHMHg/re5gws7KU4DXFmc9gWd1+eVXK PEMfWVG94qS7pG9e5aS7znglPNVUUBMKVI0VgD4fsML/92RFJl7iLFY7uwCghVfP 952asGrNrV9T9+GBOxKUjvMD/3be37yXGBcS2f3Py6gHbv4vC0CFtfXUM6Zclz6Z 8FGv0sYDaTW94FPkXqmcUaIjH5KMyig8Y93UquZ04stFgYkxwku1drHZb4hnuqmv NR4qvycMye1dMC9824+FpZkhP6ItjMcbE1PxRhQVU7dyO0dFyUlEEiMrTPhzLiJj aR6pA/9nW7NSJIaSnDrJ8Uq4NEIjyTidU5JCZLJJxTbSbEe5FrOSINENppVbmUzj CMXqyP4sHXtEA53Dl38dDjWz08A/c4dK+lwxtjDQ0NrLpXHrnqWc7tNW3XtayCiH KjYTUbj2kHV4Kva73zJBAlN0N+D58TfQQDisnaw/cGebU+5/ULQkUm9tYW4gRGl2 YWNreSA8cmRpdmFja3lAZnJlZWJzZC5vcmc+iGAEExECACAFAkVa4hkCGwMGCwkI BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAtUSPoPcIETDXXAJ4t7ojZLL46SN/zLVTT 4qylgoqfNACfSvpuziRIUKGLO/YdkYe1hiJqknG5Ag0ERVriIxAIAInh7G4TY8ky NObKXToSjpvxNhY4JQMsJ43dCHTkT6CwAes96mhAscYF3KfBcIFhv3Oj6LhyMe8l J9A8wcAPnYzOzjiZLrITF0IlVM1L9VT49tkvidOUMykKvluYKMmntH8fCi5pBKc8 Y7FQ5Kc3MZ/2dge5k95mpuWmuAjAVJXKd2ONAPSRwnxplJo1kA7Bvp632TRbDEjx mwtg48FI4Blwu19i8rpwzRf0iCp78UF2ypoyrRqzudLXcMT4yS2yU4z4mbU91qbc PNCkaMP9/HyoHnIA38bs0tMUUawKCeQZgCkTV1R+V/J5uoRIMsSBGfX81RADvEB6 HtYPrUFCYs8ABA0H/0PBej8RqZJmWU7qlpoEX4gEG8FpcsNG2RGNjuSu6l19xk1E RF5tYg2N3hnqioWri1t3BJn1qpHgSL+mJJRqf00c2U5XUKuxAvTWjARyqa2G+WiF hPc1pmE9Ty2n9XkmT7G3jidTNHXbqsjEK0OCZdLJHOkTuStUjn8Mz2PpvlZoj0Mo VYEE3Paet8mFH+Y/EjHKTe30RymAOQOlc3gKEP/2qkp0Zqkb0FqklLCUQvvjn37k /oIcF/lvmIieN/on565dggchLRWCX7dMI6QDtEnd72jwpGo30oVUC3NlKoEggcFA jiVbPR/F4UhBtjcB6GCiLHvREKjL17gCVwMv4mKISQQYEQIACQUCRVriIwIbDAAK CRAtUSPoPcIETGfTAJ4tppNp16pURW2x6Yi3GwY12/Rb9gCdGiT6lz3e0Ffo3EDl 3I1WppEoQQw= =5OWm -----END PGP PUBLIC KEY BLOCK-----
<danfe@FreeBSD.org>
pub 1024D/3C060B44 2004-08-23 Alexey Dokuchaev <danfe@FreeBSD.org> Key fingerprint = D970 08A4 922C 8D63 0C19 8D27 F421 76EE 3C06 0B44 sub 1024g/70BAE967 2004-08-23
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEEpzAURBACu7RDb0dP0oorBa7j0Do1auzG1N2wQgTMIHoo7DhspaGjvN0RJ /dozO04jqyWopb/cA7iWMqn/7gX9ckHrKa1ugQRb8P7AhIZNmfc0B5AOCqeGo8gi o9y/XBhFRS3Osxxe0j2bIoL3pk0EBjHaa477yiZyWNjq5j8rPf/h7DudtwCgx14M iEwmKZ4hWMzeaKYcOFTIn1UEAJtUMrBbxMxchDnIuAn3Oz3ESpGpxSDVcTHUxoIl 3A+mizXetzWX8lmEP8GM2oM1/dRCiF+l2v5tcnBO52PT1cFst28W6Ytyf1PamIFC GNL2CZUz/ZVRBPEZb7CfXJYupYd1AiYNCoSyh9bOv4Fin3Uhm+Ds1n6x3yulCFyo PJ9pA/wOMpGwCNSpNLcfz3gG5dh7PR2rhh0D0w7jZbO/l8D/81inThfBRb7B4KIP v1Cl/ynm+M4XS7Fy3xjfPHbUvHY/DNr9rqI0qsGU9qTubuBO+I647tjLFem8gaue yESeoU4okXMPblPXh8r93JIfbmi/rMcuddblJ5kw6U/IYYGGS7QkQWxleGV5IERv a3VjaGFldiA8ZGFuZmVARnJlZUJTRC5vcmc+iF4EExECAB4FAkEpzAUCGwMGCwkI BwMCAxUCAwMWAgECHgECF4AACgkQ9CF27jwGC0QXdwCgwTxjqqG9DppWUVvfQklR 7O7d/QoAnj9qF7prbDCAq43MQJIJ1AP6x/4UuQENBEEpzAYQBACsVmYX94l7jndx byPUZl5SlKLJFSTIymPGLebcdNg8rF86aq/9d8nRrkrqUWtpQtWeAZw2GZn0n/vz kRbmaqMaHkmdg9g9xT2qstOL0rZhCyvLWVeNYUjgkNWi7Be3yjb11RLPOanpug5z Rfu6I/7qjOcVEoa3cjlahdK//xleWwADBQP9EWsXY1iKSQ1k1B3N3+EEWbzuOzaH upo7fLwamIVuX7K95YIqOawMlhERBD8MUxfrzJkOIbVI/81g802Iq1D2Xv46hvCP J8oszCeFjqixsOkg3HmdUyvTHnODBHsQMoy/37r5voAElx/LXc4Dm9DSR0rSTpXh mUdHtM0Y6XYEcoCISQQYEQIACQUCQSnMBgIbDAAKCRD0IXbuPAYLRD9GAJ91NEgg OHfLL9Taov5GEDVjEaD8MACfeTqtFRD4Piuxg64CGOdNBCJ5+p4= =abIH -----END PGP PUBLIC KEY BLOCK-----
<dd@FreeBSD.org>
pub 1024D/69FAE582 2001-09-04 Key fingerprint = B340 8338 7DA3 4D61 7632 098E 0730 055B 69FA E582 uid Dima Dorfman <dima@trit.org> uid Dima Dorfman <dima@unixfreak.org> uid Dima Dorfman <dd@freebsd.org> sub 2048g/65AF3B89 2003-08-19 [expires: 2005-08-18] sub 2048g/8DB0CF2C 2005-05-29 [expires: 2007-05-29]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =hGAK -----END PGP PUBLIC KEY BLOCK-----
<bdrewery@FreeBSD.org>
pub 4096R/3C9B0CF9 2012-04-06 [expires: 2017-04-05] Key fingerprint = 36FE BE99 2F52 80DF 4811 362A 6E78 2AC0 3C9B 0CF9 uid Bryan Drewery <bryan@shatow.net> uid Bryan Drewery <bdrewery@gmail.com> uid Bryan Drewery <bryan@xzibition.com> uid Bryan Drewery <bdrewery@FreeBSD.org> sub 4096R/9E2CE2D3 2012-04-06 [expires: 2017-04-05]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 SmNk9K30XXHue6DK2khQiL6a0j4UlQ== =BeOM -----END PGP PUBLIC KEY BLOCK-----
<olivierd@FreeBSD.org>
pub 2048R/22431859 2012-05-28 [expires: 2017-05-27] Key fingerprint = C057 112A 4A27 B5F2 CD8F 6C9A FC5A 0167 2243 1859 uid Olivier Duchateau <duchateau.olivier@gmail.com> sub 2048R/63A85BDF 2012-05-28 [expires: 2017-05-27]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBE/DXkcBCADjybF75g/rvQ3dC+D7Obg8QQu8Ab4yHE4cL+wvuEh1vGxRYOYr 4HPpN9Qyyai8Vlj3LnFMw5kt3OTF6Z3OS5IUWJgSplFxZfOIj5ESzs9qvy8qOU1F cE0dAOX6Q69ZPD78zngWNFv5XkrxOP2sA241/YLpXO73sYnT0ydtSZhKd0QI58Bm xlarUGJa4d4JTYMaeuTQ1vo54aB9NL0KMZK6GfRvnX8CuNlwGaJy9Jt4oSJ0JopK Yn0bpCaRGd5T2uZJ2hx1d3jtWNzhFMBl2JaG1jXXLd29q8WvaSRlP0/j/+R8ppk/ 2DAQe6gT0XEjP+np5BsYF9HoCYJ+vFtvZqgRABEBAAG0L09saXZpZXIgRHVjaGF0 ZWF1IDxkdWNoYXRlYXUub2xpdmllckBnbWFpbC5jb20+iQE+BBMBAgAoBQJPw15H AhsjBQkJZgGABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRD8WgFnIkMYWT6u B/4slussVLNLn7CbB7VMmo6ppCxx4BM1Mhk4stoUl5/3ENCMIG5anIMwfyG+NFK5 Jr640U0yZcW7jX+Mg+IrGn2eWKfrPf/kyzbeMPeyDFF833EDNnliAALgni6+ZhXl Pct74exlzQoKkLkkDd131Cd7HUlA8XrUroibH2QyTR6upA61VMSdUXBHHdp4xD4P opu0Cz1kGoe99St19oFLvZPl28DUZeSLd1lAw1o3vl7RYAmI/OBz+/6lSpvHG9Zc aco/QNRQO38lTg9sMh5kmhIOMRBgZcGR7TFlgKcLJJbmCp+kb/jIYizKnkN8SHSt ab3E8ug7yaCXyvQFPHoLH1jnuQENBE/DXkcBCAC11rT2hrSvpEj9OVRwucUmKnqa LYcqeLNUIqy8Z76TpSSXVLXt5DH2kI7IizaQmBfkH9S6iFlJLkbOAHZ6XcjaIcBX VLMpBz5Mi8HUvTO+6vMFs9x/8R4+fryDNCn5wa63ktwvUZky1JFdbfZVhoV2M0AZ KZnvV5o8pZrzYv05TOf8H0+sYD7bNKSNa7g8dBfdBt/wVLcF7Q5aTeal/xyWhf8d kIZdwK4jbsYBL53cwLNNameDXAdMthKjCMndgofv6dYaHDMDh+nEwye8I7IHINxg t20j/eTRQB3b3gs/UWDgUHtLjEaWgLNpQx7mQQhZTcCwtZtWZOXsh6M0K40bABEB AAGJASUEGAECAA8FAk/DXkcCGwwFCQlmAYAACgkQ/FoBZyJDGFkJVAf/Rk/Vvs9X duEst9LL46h2PS078Bbk2eGH+/kigVF6tPHSWKggmB0RVzoiG0GXxv51Jta2PHZM Twuw7oNqsu5UZjTC1UQ77ZY42W25dkaMgDalPYNU+kd55//YIzuj9l9po+Xr2o8j aAWKh/nIjeAze8AMxRxHud7HWE1pE8mDG7VS5Hreu/Wxu9IA7h2UalXD3psLoVuJ EoZEgaQlTEJIAkcHLi51qojn1DDQ2L3JS+w4YfnPfnPtzQWu2GX3TGMAaLKqmNIF 01Xi8q/GmlFbmBPrgIqZQS6SUb/CKLYKWyelw7dxmSkhNoXed9uqHHvHI2zMG76t PKHyAijtO5HocA== =kXkO -----END PGP PUBLIC KEY BLOCK-----
<bruno@FreeBSD.org>
pub 1024D/7F463187 2000-12-29 Key fingerprint = 7B79 E1D6 F5A1 6614 792F D906 899B 4D28 7F46 3187 uid Ducrot Bruno (Poup Master) <ducrot@poupinou.org> sub 1024g/40282874 2000-12-29
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBDpMfbARBADvuMgOIlEdTWlb4XvAu1YEfCijox47muRNbkA0yb0drMwYnV05 tZ5cOK1uVELQ+gtGK7lDS5rQ68LPpXFMVva98skkVimzgfmQiqDOXiYW4BVE1qmO THpb5dIpHoXqTDILTLVomf6d8Z2re+IJUNvbrBFM616wndIQqux/O5LHDwCg1Hky KrYDoOT1lcDgSGH6RcqSoAkEAI+D4y6JpBctutEGWNcgijLv36g09LYNeC/gD2aq 0bS/4c44eoPkMCBBn8MM9AIsK5sfne2GuglHcUM2U82s5UbZcQl8vzcyG9AVGQGl aoO/duxFKPQC70/xEa26Bwjv78cVWm6hLHoMZRXvsprr3pQpuZHmzPWwwxipqXkY gYApA/wMrLwdewzd4yEMB5O6y9WSd+FUA/y1MS1+9epdbzPnpUszR2QKlA+XblfD 8KdxxUjIjt6WOXEhQ0GCWfRauB0MAZHTMkA/NVnmR+pI6FSJ9LJ4s6+BoFRbKdDp JY6yJUZzqRgxgo7tIcpRsRuXP4zu8KYlCPL0Al3gSW2DlKYxirQwRHVjcm90IEJy dW5vIChQb3VwIE1hc3RlcikgPGR1Y3JvdEBwb3VwaW5vdS5vcmc+iFYEExECABYF AjpMfbAECwoDBAMVAwIDFgIBAheAAAoJEImbTSh/RjGHWXsAn0/3nHkOH2WxLdWl ANdjJDzkMLywAJwN6CBCDKSbN7OzfNHTx3XAEVUUmbkBDQQ6TH21EAQAiEIQKsg7 Pi2k3L9fFnDDAcFgh2oL/MpHgN4kKYx2aoTr02O3rBmK3ADCIBqj3dlWMavIOuzu 1DvmvsloIcDwsMsc846bjQq0R20VaiNz4NJqZfhS2/xYPzJo9sPTncJOGQowjv+J GqlkmvLVSLSzYPh7OZjdw3SxS3zFPEQg0ccAAwcD/iZIddUIenySJdgs8WIe26X5 r34/0TlyxiwtlzefYpVHHYD8CzVhYPD+iWUpDv/10HC7c58JTxNUGyN2UGcaDNRc g/VJqRahYxz9LokB+vRPmCyoP8bhLkrp0fHZFnFpH4IY4WQecLBfYJZZF/K7TLLz O5tine3BIL/LpM0nhVWJiEYEGBECAAYFAjpMfbUACgkQiZtNKH9GMYe/7ACfTNKi dschnmutxCWw5fcsyqP9oYcAn0Cf7InoUX5AUFaj4dFZ4IN+9L/m =LTGr -----END PGP PUBLIC KEY BLOCK-----
<ale@FreeBSD.org>
pub 1024D/CE5F554D 1999-06-27 Alex Dupre <sysadmin@alexdupre.com> Key fingerprint = DE23 02EA 5927 D5A9 D793 2BA2 8115 E9D8 CE5F 554D uid Alex Dupre <ale@FreeBSD.org> uid [jpeg image of size 5544] uid Alex Dupre <ICQ:5431856> sub 2048g/FD5E2D21 1999-06-27
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBDd2Z60RBADHdQ8600NP2/sBbuIW87WqWXZyzDX0Q6AA/czBlV2PKiEhCgTJ wZCWJMs/iR0GgfS3LKYd/eWW48LYj2V/0YjafV/A2B6+1QsVGltXunvtYxC4GnCS tzPqsI624jgtwZ5sb8oowOv5ykEVw6lxneRuluymOq3YFxhRfjJ3koNYUwCg/9ou KUPZ3hPNklVoLPAnN+dF3gsEAIxacljfmb3KQ2bnngkhvASu7g0Ipjql2k1AiBwC 1oWnsMIYX5qNBLA+6FtAGFYqrT8hV5qROJyNPVeVKj3p+wt23Co/t/w0gaLccu2J lI6QBFerCNFcqNMgzEAbQ8ARxSrLW/THpOJ8i32z0AKEtx/1LdYlcFB+l+8FLuKg EgXMA/9RmwjhPmZ/V5xUXW6mrkSfRDtxRsEegaixqUI6SmskgGgsQybjSc0fxWtl MCKZ4sIqtykPAlf5fGeX+FjYyR6iFnjfJwRFxilLGokqaDEZeE9myB2Mue9YnFoS GB12c6U8HRf4R86uk4tWwzMO70Gyt3bSp2GTXeMiuy7dibKIRrQjQWxleCBEdXBy ZSA8c3lzYWRtaW5AYWxleGR1cHJlLmNvbT6IWwQQEQIAGwIZAQIeAQUCP+1QiAYL CQgHAwIDFQIDAxYCAQAKCRCBFenYzl9VTRTeAKD1MQaPbJTcdkjGCc9UWX/+BfrF WgCgr07J+hRd6NOpwuceEBOJiyUXtYyISgQQEQIACgUCOdIfVQMFAXgACgkQaJiC LMjyUvsYTACffZ3C/DrsfrhU194Kyad5hj/jIjsAoJK0hql1FpySpNsboLyEnHM7 63b9iEYEEBECAAYFAj0+wBYACgkQzN3ZssLok5SIwACfR/1J2H+j0Mbtn7qUGRUc QvlomPQAoOC/koTFa2Bm5THjlBfSsk3q03deiEoEEBECAAoFAj2hfjQDBQF4AAoJ EKuTOEU6hQh2UHoAoK7PchQCfxOc63B2ZBMyMldeQRSyAJ9k9sbDyykjjFHvFLz9 ntJKhK8+HYhGBBARAgAGBQI9oYFgAAoJEKmYWQA1rBephm4AoPkodLvw0WC9ZVku M78wklL7g4gNAJ9tj7M2vz0p/OVrZbwFCL8T//xrJYhGBBARAgAGBQI9oTGOAAoJ EBEucGQpBWq5rzQAn0eQ9lGtm59BT+Qo/5bwSEvNW6bhAJ4quX9bKP+3wDz+d2Ea /Ieq7PG4LohGBBARAgAGBQI9oogEAAoJEOHp7vh9u29BFVoAni2SREp6+ruUO4ZY vnyp7X+9rRGLAKCCMPtYqrfl52ahVtpur0zRv0s4ZYhGBBARAgAGBQI9ox/uAAoJ EJPzaUMH27/PGpAAnjutHjHxcVsTFtKnoi7jwOhhmR2GAKC4OLDkwcGgt0gCBE+k 9d6Xa9lPMYhGBBARAgAGBQI9owbBAAoJEDQEO2gJfT9V0bIAnRINee3pwDzKigGF kf2IwH6d+Su3AJ9U8Xe4PabdhuamjxIfKo86utT7f4hGBBMRAgAGBQI9qZI8AAoJ EKDr0i7FpXGj904AoJ2soZyUwjiS6a56kcqD4c4I9YZbAJ9IqMPAbhl4FQoJ01nJ lHsh+/dts4hGBBARAgAGBQI9qaH2AAoJEGJ3j/Re/FWCNw4AoPQ53owxWbWi/cQE NJ+G2rf7o3l3AJ0WtU6+W9CqVTbdacQViMRlHvM4uYhGBBMRAgAGBQI9qV5sAAoJ EMqTo2QBwKB66goAnROzJ8axgpIADNk94ZIf8xP5XTX9AKCCTxnmt0XJsjoZD1qY L2vibQBx5ohGBBMRAgAGBQI9qe4UAAoJEFeqDLyJce6Rz4wAn2grcZUcXrX9LwJE Ee8MfVu5tVGVAJwLr/yzfosZJjR4wr54crXDJXcje4hGBBMRAgAGBQI9rboSAAoJ EG0hDjaqcofL+H4An1ptz5qMc7AV5Vvc6EsXcgh7IghvAJ4xSftp1serlfL4Db7y +byfSiKSb4hGBBMRAgAGBQI9snvFAAoJEF+WLsuuYRIXJCAAn3c5v7n3R8JbeXB1 wWOPw/FgKK+YAKCn6/JAH6sdvOjk5L37GL4yU2XfEohGBBMRAgAGBQI97g9qAAoJ ELeAlgoS+UxGpXYAn2ZslcTauBi3teQwaYm4eDS2R/wvAJ0Wnik+nIQ/1g64kKNB qcV6jF2HVYhGBBARAgAGBQI98IXPAAoJEPgxT+wsuUSVSXwAnin8UZGwOp4jPX1Y TgR2SCGpdY9kAKCDzavGwkIO4K55XOorf9AYgQevA4hGBBARAgAGBQI94MTTAAoJ EPJCAIGCve9067gAniBPlLk5hPyCu07/VUqyr1p0Bv/cAJ44pGuWMDYa4zQVaYET a9OoeDxWwYhGBBMRAgAGBQI94c/QAAoJEDSlil2NzYH4SqMAnRq/1EZzJ8WavHrN mwcKB7oGkz5rAJ0Y0sQ2SZhSti18ySsiEDVMRBpWVohbBBARAgAbBgsJCAcDAgMV AgMDFgIBAh4BBQI/7VDwAhkBAAoJEIEV6djOX1VNGVsAoK25N6W5QR36bIlLLWUW +804OwylAJwI7jUfJFIBynGVECAjOxs+wJdqn4hGBBARAgAGBQI94qTkAAoJEFi1 akDcxXWWdPEAoNBPTsEzXYrY2VRigz+GJGoeb6PRAJ47kv2VhtXa35UkkcoXeNAl KKpNIIhGBBMRAgAGBQI/yNdcAAoJEOMfb+3S0Z1k3QYAmgLlP2DsKqu8W9SZZewC j6y5Q4TnAJ4z8BKu3WW4+FgSgzUbfxeRm1R704hGBBMRAgAGBQI/yN8NAAoJEHqF Mmo3kYje/MgAoInyoeCKWiupv1nPAc7WNyPRUTlyAKDAKk0re0Tv9NV25axIsRcA lXSH2YhGBBMRAgAGBQI/yiw0AAoJEG6MV3sbsXFonjwAoJX1N3984XUOQvjtvzgm yEMsPpZ3AJ4xb5W6wV5Jx2Zs6b6l8Gfa5bhGGIhGBBARAgAGBQI/ylqIAAoJEL6M vx5iDEDttdkAoIHhltNYjyqdRqIDe3BiMh6ifJnWAJwK7CsN2cILS03dnOhUI56A BmcbfYhGBBARAgAGBQI/yocAAAoJEJFrGm4xw2cfaZYAoJljeDokelUmoqJ5nSAr LlM4BcnQAKCkMKAOBSltS8WsH84J36hmPdC5XIhZBBARAgAZAhkBAh4BBAsHAwID FQIDAxYCAQUCN3ZnsQAKCRCBFenYzl9VTQiOAJ9HfMp2sdOYktGhv2fL5QD+8IBA ogCg/2bYytgwqGBDoUK4vQmvNf3OF7OISwQQEQIACwUCN3ZnrQQLAwIBAAoJEIEV 6djOX1VNZkAAoLemkl7kpuOmYOxx8UXH4M7qohPAAKDs6fvPTjg55xwWuODRBTZm Q64u1rQcQWxleCBEdXByZSA8YWxlQEZyZWVCU0Qub3JnPoheBBMRAgAeBQI/7U77 AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEIEV6djOX1VNK0oAoPp14QWuw+em oL7+q0L9RCAtw+15AJ45PiXh1GNC7HPj7xEzLdU0FqNM6IhGBBMRAgAGBQJABqTY AAoJEGiYgizI8lL75sUAmwSDPuHjpFlqPDLmZ9CYh3Hb82lqAKC3BLlS9vSv8Dzu hQVIUSh0Um5WsNHU+9T5ARAAAQEAAAAAAAAAAAAAAAD/2P/gABBKRklGAAEBAQCQ AJAAAP/bAEMABQMEBAQDBQQEBAUFBQYHDAgHBwcHDwsLCQwRDxISEQ8RERMWHBcT FBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv/bAEMBBQUFBwYHDggIDh4UERQeHh4e Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHv/A ABEIAJAAeAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJ Cgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgj QrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFla Y2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQAD AQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncA AQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYn KCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeI iYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri 4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AOJFx4keL/hHrOVYLJmS2eNd qGJVbK5IAyo78n1Oal8U+GtMdhDout2etXkUgjuIixxIwQMxXbwcYbIzngnnBrmr qO0gLXl8s9sl1GGE7XJ3HoPl5yWwMcc9Saz5bLUdPvRqMAnhtY5VXz7iMxg4B2qx K4dyCQD1xnNedC7OmrHkkrGddqNP8QajaPF5UUu2VU27cKRnjPbk1Y8OXMMOv3mo XSpKpOY2mG4hhjkVX8RTzvrFtesx3RxGMyKXbcuTt5ct1yR6cdKwLq/dZWAZV7cd MVvGnzb9UVKUqbsz06+1+zu52mTZHO/LSqBlvw9f8aqQXLI6lJo0jCgAMACBnpx9 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 =CMdE -----END PGP PUBLIC KEY BLOCK-----
<peadar@FreeBSD.org>
pub 1024D/D80B4B3F 2004-03-01 Peter Edwards <peadar@FreeBSD.org> Key fingerprint = 7A8A 9756 903E BEF2 4D9E 3C94 EE52 52F7 D80B 4B3F uid Peter Edwards <pmedwards@eircom.net>
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEBDlWwRBACjdnvu/rCOVEjpYmlmQmmmYZ0hbUdustNozm8dtKpg2w+zED3z 9kHcoXEY2i1jxmJrHd4PPcvMutJB5AuYU4NiBmdMgBgfZvW7yaD+tHfvgozNyEKa 3Gcddamy/ENCFKoSTEuCDxH77zf6DXh/B/Ekjav0sZnGHPqFhUdKzwh21wCg57uM Z3aL0+sIhiNYEJK93yjXt0sD/2F6+T7dj7wjdCPsb3mh5YSTjGeSXjnXHfeFQmmA /dPyOkWOAuTo2uR3AeVRrJ6rslKLqyl773HX+eM5b52gIsFZ+CzSEiHSrHEqOR/o 3jzzGWhZb3Q/dbeWsPrtw32XUOdiijH5h2PyfKQ6reu+lpH8oKTbvOoycguHnsiN 8zt/BACCRoxdjw3f5L4RMfbdxN8/9GLcDzjv27s4Jn17snXuOyNzWxky+hNW5InM wG92m9/a4XtZX6viK4sY8kfFLvAx95vaRiPJOPdUIx6Hk34HHsXdQ6XbUaadlBuG Mxr+aT2o01qzxi+dS8+SWXjCBwT5mRVdOZq7RFYd73I+FrzltLQkUGV0ZXIgRWR3 YXJkcyA8cG1lZHdhcmRzQGVpcmNvbS5uZXQ+iF4EExECAB4FAkBEXVYCGwMGCwkI BwMCAxUCAwMWAgECHgECF4AACgkQ7lJS99gLSz9lewCgtKJX8EySD4x42LoZ8imS gYzQ2AMAnjAlfeFF6q4Lqiv6ikUW7uSGu2WitCJQZXRlciBFZHdhcmRzIDxwZWFk YXJARnJlZUJTRC5vcmc+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgECF4AF AkBEXiQCGQEACgkQ7lJS99gLSz/1ugCgwj+RyWcUk2WtWZlox7rmTG9ymDsAoJ+r ckrEYUJfPdH0GKonpipJQwL6 =73v6 -----END PGP PUBLIC KEY BLOCK-----
<deischen@FreeBSD.org>
pub 4096R/7D15560B 2012-11-17 Key fingerprint = 0039 2133 69CA 14D3 236A E331 361A 68B2 7D15 560B uid Daniel Eischen <deischen@FreeBSD.org> sub 4096R/A51F81F7 2012-11-17
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 bwlGxw== =J3ZL -----END PGP PUBLIC KEY BLOCK-----
<josef@FreeBSD.org>
pub 2048R/A79DB53C 2004-01-04 Josef El-Rayes <josef@FreeBSD.org> Key fingerprint = 58EB F5B7 2AB9 37FE 33C8 716B 59C5 22D9 A79D B53C uid Josef El-Rayes <josef@daemon.li>
-----BEGIN PGP PUBLIC KEY BLOCK----- mQELBD/4Zd0BCADEH+EDDjEX2ztufB5dele5Bt4XBg3cYncvlTsVEDLR89xtwmFs 3no9Hs0ImTQwplsDgbixBL3DXWi46dwVK0MGYIUycJxLfsgFdlWngcXYkpWF3O8g v4YhytcVi9uSBy8oNB7huiY8IXh4XPgiOKztgCVJZbIgi8ahoif04eHTT9YGOL5x Qu+n7D74zAcgzK0XO+O+WXB8EoO/saJxzcCIeEGzfCjq4VyL6JB+1c9CgWlrpI7K LOpFqrN2qHygIMxCicp/163AdxD9I1hUtlF/sZYY9BpkbweLLqxKf4qtDYAMZLuS xFGfIG8f0imfFeTXt85FgYGxqLMlmdjFefIpAAYptCBKb3NlZiBFbC1SYXllcyA8 am9zZWZAZGFlbW9uLmxpPokBOgQTAQIAJAUCP/hl3QIbAwUJAeEzgAYLCQgHAwID FQIDAxYCAQIeAQIXgAAKCRBZxSLZp521PM0PB/91jWBC7yI2obxE+VGsItduiPhC 0x+Z33suGP8f7ewGBlztKC8y5N9jCGCfG9auwkJ9Xo27zCpMIkba4CfbRqyLxWoh ZluHQg5uge7AGefmsdfDsfZq5mPNtUkB8uVn3tXGwVVsxknw8PGtw25wbDCOXTCi t6L70v1gJfK8UxFhu0VCdOxbRAuQoIkE+bSO6g8bJrt6JFzhVpuHdgxwJbziWYSp nEJUN4Eou4UfCteVQrkh2O7ArHMmAEb89s5xbfNrQ4NdVBXHfsrzEDhWOqgiQ/4m o2DAs8iy2aCbWRaKG6G57g+uwhbqEN3gkeDfjhcpBMLqQy8drqx+erNGVYnKtCJK b3NlZiBFbC1SYXllcyA8am9zZWZARnJlZUJTRC5vcmc+iQE6BBMBAgAkBQJABsPr AhsDBQkB4TOABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEFnFItmnnbU8miAIALbu Y15l3+9kNlv4Arv26aYrRcIYEUcCLIGZnD93NPnyEza4WwsUbCvYgNpKb/wojAA3 xUdzHtRUfDp++eQU72S7DcRkkTt5vrnwKnH9kMsr2/hCIaO3ESiOVoPeJy91fHEF I9K1qP5noJQjfjr1w4ib86spyVb5LH3QPEnyvDX/UTBYiYu8UUYonitLZ3iHk1Ku x9SQoPszvkxdM1+d25pbG1uSV8JQRym6TsPQp3RwpbCy5hnwMbDLaWl6fbRwtAxZ i6A0cppdbgi+DDrOFoFKuU25YKKOKl76Vy+cpjYPBPRH3mOTYd/i2xliEP56dTJU 4QqDJPpnJdmvXiCFt5k= =UfKm -----END PGP PUBLIC KEY BLOCK-----
<lme@FreeBSD.org>
pub 1024D/C0F769F8 2004-08-27 Key fingerprint = 17FC 08E1 5E09 BD21 489E 2050 29CE 75DA C0F7 69F8 uid Lars Engels <lars.engels@0x20.net> sub 1024g/8AD5BF9D 2004-08-27
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEEvjRYRBAC1jMkUf5HrEQcNSLSK4NogjNTuwxE9d4PjgOiJ04L/haKeUAaB x21REw659FNCOW/HDuCzNH4POFQYoe2dyS3lV4xk+YsoJ50NuoCro/tiigBztKB6 u/Ukq8bReroNwjP1Q2TnCHWxzDIq2HJ2FQtbXXlWKe7ZBu/LFwAsHLenLwCgzkp1 i0gxqzxWrzIApMiKWB+HORED/3Jjom3MOEZfr27aYvY18700uXui6GAkcxTj2/6X s1MVpQt8F/BAgKYkw8Q3qOgoaJPHpnBQXMIB5TXCkXxZYwvUFlLHMOghpZE6/eHn 3+UdvqsxHGa59Ym7HYzS1IExBVNfof4MVsunQtnGaHyQDMrKt2zF2MmTgASzITWW GyOjA/0Qc0K+hUBPsiaVpNcCZs6vPxeU1qSZamyZlVIjfQgRkTGN94bJD7l4qzaK hpmOLF8eD6+pA936HVhLfmPsNFkpFgw10oQQVYIVx/Thj5tOX2o7VbXUdQEkdTTO t75c2UqZIdPKet/btF+NPnnT3P8u0UdVvpvMeq7thLuJLkDDo7QiTGFycyBFbmdl bHMgPGxhcnMuZW5nZWxzQDB4MjAubmV0PoheBBMRAgAeBQJBL40WAhsDBgsJCAcD AgMVAgMDFgIBAh4BAheAAAoJECnOddrA92n4OuIAn08LIWiZX5vZ5GvClSsa30Wp 2LG5AJ98fEToSwavm0tAuDHU1kPoDhPSqohGBBMRAgAGBQJBL48NAAoJEI90JpT7 YBR5I/kAnA3vnk2qg91m3nocHy6nS2tShMUzAJ9RQ1orEGxFGukfgtY9iTTG4Tpg /4hzBBARAgAzBQJCVYkTBYMB4TOAJhpodHRwOi8vd3d3LmNhY2VydC5vcmcvaW5k ZXgucGhwP2lkPTEwAAoJENK7DQFl0P1Yg9UAn0/WHYshCUKP551shW3EtjUFvSF/ AJ9EhPPzNRdgS5cs8Hifvd29McguHohGBBARAgAGBQJD/deEAAoJEAwB9WIgsQYJ 9lYAn3MTmAp+MZn64phFp346NFhy1tRwAJ4xd16I6dRhDMSiNVPQPybwAZTfirkB DQRBL40XEAQAobWOOZBUJm+Twj/sGj0bUdlZ5H1Qos5uWEEjamcElcmN4dG6Dyjl X+X4dmcAQADm2JH5aajdWKKDjDNaTRbdV9XCe/iogYD9UhbPEQuHovTuDaOQrRsF nSCcXH1GABWF+Cp2JA4FVS1gmHykr+u9DZP7CsOosI6PWmOYwySidHsAAwUD/jVL iRLUj2qR3ejYTa61ATT5wb6UtuIohpvBNFj4t3V+LWATXmuOP1mYhy3SmoxUcmFj uULJ2GHHb+wNnP8YpGdxRVFkBV2grnpKqPdCkcm1ON707w2d3aDCEl9KGzhEvg68 c4CF0hVkLGIs0qeZfsOwxE4jdYpPl8YuuRZV2ah3iEkEGBECAAkFAkEvjRcCGwwA CgkQKc512sD3afjgrgCguloybHuwhKsmOnnD6HSp1G/s4mkAn2VeB3Euh8fg6W/9 gcKK4GHoPC8/ =T+Zj -----END PGP PUBLIC KEY BLOCK-----
<ue@FreeBSD.org>
pub 1024R/E74FA871 1994-07-19 Udo Erdelhoff <uer@de.uu.net> Key fingerprint = 8C B1 80 CA 2C 52 73 81 FB A7 B4 03 C5 32 C8 67 uid Udo Erdelhoff <ue@nathan.ruhr.de> uid Udo Erdelhoff <ue@freebsd.org> uid Udo Erdelhoff <uerdelho@eu.uu.net> uid Udo Erdelhoff <uerdelho@uu.net>
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQCNAi4rWsAAAAEEAM1u8Y60omElX7Wtrh75P8K0L2Gp6omV6iDuwl9kXYhN94jF DE1F4xpkRDWvQxsWbYeIk2F3VYGuN12BhbRNcNqoyniQt2XMmbdEmp6ltumH5WbG jR5Xg0LkJ5AJmxvjJXXA9q+/eTfmyTfPjnCL70cTMWHdUl+EBUPoh1XnT6hxAAUR tCFVZG8gRXJkZWxob2ZmIDx1ZUBuYXRoYW4ucnVoci5kZT6JAJUDBRA0K3Q0Q+iH VedPqHEBAe9vBAC+el5mJpqPkC/+om/SSE7mxyuUqHAx1tNUymL8gTuV3mFB0goM xkxhUOMMYe9z2zyi+RXrECfLT2OqqUA60EZpl6Mgymj8SVZSv4ZwXdU8cgynYNfX T1pC57mN9mxL10vTTJEix7QsrVz0W479/IkBrhW9nTidQtORW1Si5T5IA7QeVWRv IEVyZGVsaG9mZiA8dWVAZnJlZWJzZC5vcmc+iQCVAwUTOwzFWUPoh1XnT6hxAQGl eQP/bLMp1qSdkt2/BKchpx+lhOemCmT3LHQ1sNzelb7dBwnsvE3Z9lOycH2pm1ro j6x3vmcDAqZ1yh2eFEVNK5abfhuI3QH+9QdgvMcSIQgF3VIMer7JXxNtFFX8JRKm +YfLfDifcK+B2HRkpMt9ETY8b3/cYz+gbdKNe4nVde5KPT20IlVkbyBFcmRlbGhv ZmYgPHVlcmRlbGhvQGV1LnV1Lm5ldD6JAJUDBRM7DMX9Q+iHVedPqHEBAYHUA/4l j98KC7y8cjapO4Hi0r/eO7gUwDujvrBMYbWuhmNCO6xlPfwRNm76tnNiTFdqVLat XSrQwEUys9Mq9xe2F2RuqSfYWjmHKX3/gNW3gRJbnBqO1QN6CDqo39a7LgllqFf4 yFj9V6i1c0WSBiOeWy75DHpsfXHupMxZWPPRWh0TnbQfVWRvIEVyZGVsaG9mZiA8 dWVyZGVsaG9AdXUubmV0PokAlQMFEzsMxhFD6IdV50+ocQEBzqsD/0nX9rV5cAcd jFTayQvoAjb/nIN+TJVHumuC/Glp9fKHlfTjMnsUawma+iQESjUB8XgyeJ0WvR8M vQGEMowYr1YTtFiYfFOvrzXZmhB6NfhFV3s34ZLDeBnncUqkas79Pi9G9AP2Y/Mc c//i2owj58xTfocYNT5IxVVYjB72Py+3tB1VZG8gRXJkZWxob2ZmIDx1ZXJAZGUu dXUubmV0PokAlQMFEzsMxiND6IdV50+ocQEBBJsD/1SVP70fNa3ShAn18+yEXOIL TlFYCUmGaBIeAsd7r8tXFYbf5STAOEOiqBB9Y7V1tV4IriACru+9wo5wBQoCLBT1 RNj4NhwVvkGReTDsA+Zz/vUULrbklVKO724DktO0+WRbn/w99trttuUTGvTHRER3 BjuOfJ/QoLlnLAsDBMov =TCJD -----END PGP PUBLIC KEY BLOCK-----
<ru@FreeBSD.org>
pub 1024D/996E145E 2004-06-02 Ruslan Ermilov (FreeBSD) <ru@FreeBSD.org> Key fingerprint = 274E D201 71ED 11F6 9CCB 0194 A917 E9CC 996E 145E uid Ruslan Ermilov (FreeBSD Ukraine) <ru@FreeBSD.org.ua> uid Ruslan Ermilov (IPNet) <ru@ip.net.ua> sub 1024g/557E3390 2004-06-02 [expires: 2007-06-02]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 xfUIyIEOONF8sN1I =tea/ -----END PGP PUBLIC KEY BLOCK-----
<le@FreeBSD.org>
pub 1024D/F10D06CB 2000-11-23 Lukas Ertl <le@FreeBSD.org> Key fingerprint = 20CD C5B3 3A1D 974E 065A B524 5588 79A9 F10D 06CB uid Lukas Ertl <a9404849@unet.univie.ac.at> uid Lukas Ertl <l.ertl@univie.ac.at> uid Lukas Ertl <le@univie.ac.at> sub 1024g/5960CE8E 2000-11-23
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.5 (FreeBSD) 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 Fv2s0kptGIN2izILm1myaA== =qAVp -----END PGP PUBLIC KEY BLOCK-----
<bf@FreeBSD.org>
pub 2048R/9806EBC1 2010-06-08 [expires: 2012-06-07] Key fingerprint = 2075 ADD3 7634 A4F9 5357 D934 08E7 06D9 9806 EBC1 uid b. f. <bf@freebsd.org> sub 2048R/1CD0AD79 2010-06-08 [expires: 2012-06-07]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBEwNjXUBCACWeNjUFZ8rzqxrEIdL3wVrvkWVwaf5HW0YwoIMq7ba3hRcPWuv yr3frrdvqJv9rHJYA8f6uE5dCkb7OSI3YXHC5QN/H9xB1bvRuSUyD1MwmuihUX/A 7yk7HzUE3sXy1U3QIMJWgpvnN242OZtH2XlanuSoDdBL4Qh2Fw7ywQaZvzNlZKUa hPF0Ty7wci/5xuKB7T72Qk4vAYYqxUxYJR/5ox8vM/xiAh5XxPbOuAF0p/wQiiRi NjF/f6tluQu6Q6VFwHXGcZvJK39nNNpadsDCegdRCUUFJsHm8dSjlIyi5CTyUsXf btdlagPTlhiBtOYgtcfRZoPBLFjVafjqqL57ABEBAAG0FmIuIGYuIDxiZkBmcmVl YnNkLm9yZz6JAT4EEwECACgFAkwNjXUCGwMFCQPCZwAGCwkIBwMCBhUIAgkKCwQW AgMBAh4BAheAAAoJEAjnBtmYBuvBVG4H/Rc/AqfFfQi+qph0HKggVJyzEKvhVWhR 8RZ+8zS4t72b4kIJT8FUOiHMpq/+qC+Lt5MFPCtxmOETDgpD9GM1EkgJ1rSDrN8m kbXuQ9Z95KztU0tGsv87JT0xSpxeMnYaQ1NWx5bkKG5AOf6ZZaUVas0XH8/9QCFH gqy7Xe2eGsLO52ZH/4AI8cFc0FPF17hSWTIAwIyuxcRLas+KdV1j74xaBu6parX3 2FoquEFRAPoEcuey2aSWoo4OCBCoGYqh4mhWbEuLOac0NP3oLDFjEDJhE7UT+0gx W5LLwPr0FARkAbRZp84vt9rD5MrhNcZy0X3PBpykium4OrEIp5l9OM65AQ0ETA2N dQEIAK1D1POvE2tRnTeNRW6lw/bu9zx8d4PS2R7GepQkbUWQxpgcwSEoB1JGN8jw 0iKD8KRoFLwQx+TizzRShRsOeYj7beK6rY5H1C0DbrQX6T7eMumOVV2RklVFqYiZ HcJh8LGjJN/tKt4k7OnDs40lHOFHxvKW+PiKogfiWDKpc/wns9mAhcXrbT0SZ4Be qbQOsZMfUbvOZUek4+lOZuaCb0M3QU47bsFrJonPn7VEHw7mkhTNL9a6KKc4ZqQw 52ECVq4dKjNIkvaQZyosA7tRCr+CBYUumE6fssk72SdT0RD/tgHgKfgWZ9mxB3R0 l7CCm8v4c24tZQuuGQG26WWeD8sAEQEAAYkBJQQYAQIADwUCTA2NdQIbDAUJA8Jn AAAKCRAI5wbZmAbrwabXB/9ggUz/04tDZdX4pDsfDoBKtnJ9r1yNWrniBBNlcVLZ G+3BwF5EfZAA/q3lSJmC4BVzaDUwrrL/zbPb0WhE5cGG/byLiByXsEDVSId4Kv/Z bLaPyox8RIYUL/wCjt/57FIORwGVhUr8oDDRLeSoIsazXWhvWfx9qCdzcZTabSkN 74Q0WxQuOagvpl4Kcf3eQEQuB+BvxDQx9JvEXUZanurRP018uTdXficJ5MS+SwXq gJUSSPybwVjK/ll1G33185jnSQSFNwGq1udet7vkDjQKNmkcev1SJY1g0S9iFKRz e6dmnydHGtQ0508cCusMPNCQ4HRhQHEW7w5yu1J4t3UY =bgLz -----END PGP PUBLIC KEY BLOCK-----
<madpilot@FreeBSD.org>
pub 2048R/56CBD293 2012-04-12 Key fingerprint = F317 2057 E17E 4E3A 3DA5 9E1D 1AE6 860E 56CB D293 uid Guido Falsi <madpilot@FreeBSD.org> uid Guido Falsi <mad@madpilot.net> sub 2048R/1F9772C5 2012-04-12
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =pMfj -----END PGP PUBLIC KEY BLOCK-----
<rafan@FreeBSD.org>
pub 1024D/86FD8C68 2004-06-04 Key fingerprint = DC9E 5B4D 2DDA D5C7 B6F8 6E69 D78E 1091 86FD 8C68 uid Rong-En Fan <rafan@infor.org> uid Rong-En Fan <rafan@csie.org> uid Rong-En Fan <rafan@FreeBSD.org> sub 2048g/42A8637E 2009-01-25 [expires: 2012-07-08]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 D/Fet8nCx6Ef1M1J4Q== =1iVI -----END PGP PUBLIC KEY BLOCK-----
<stefanf@FreeBSD.org>
pub 1024D/8BEFD15F 2004-03-14 Stefan Farfeleder <stefan@fafoe.narf.at> Key fingerprint = 4220 FE60 A4A1 A490 5213 27A6 319F 8B28 8BEF D15F uid Stefan Farfeleder <stefanf@complang.tuwien.ac.at> uid Stefan Farfeleder <stefanf@FreeBSD.org> uid Stefan Farfeleder <stefanf@ten15.org> sub 2048g/418753E9 2004-03-14 [expires: 2007-03-14]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEBUhZkRBACOyBTXaf9n0gkvq52yhACaPjUpAY4c+Z+xDM5jZZNpcaEyuU5N ipJdvlKIIkfB+Jka5TxiUBskSo6cegPW7k3G9/as+39SeOexEw5aH1WROcrqD1Wq iBTJ/Ey8eVleGTP/3vpbUoT3gcNZuus00J75OmJV06xyTA9M0tSy1/aIxwCgrbCJ Xr3wLOPYiGXf5WbWfy08DmUEAI2xYIycYgZ7ogcqFcu6gShO/uTcXkZL0xOIC8el rAC/HciJagmvYPjQimQeKhqyX+uvnhguiS+XZYx9yqegOG1dSOVWw6FJTYgzKeT7 6tHmaplB4JQLkUSBn8p2fsyXAaIA4M+2c9fYf59El5+OyfOhGfAEJNJv1oGLYWic Bbt0A/98H+rPmPwtv4ntIvCq5xkvjENzmG6WerNF5dXHsoG6Lnhe++4jUquHseEI +u4ou+v1it5vBTnPI2Wz02WP1Oyz7JC0cPAbrTGz+eaaNV+M1wD7yqj1poW74buk 4hJ+myIqC1dRrliAyrr75xHl3pr212+8Cty8RTiNF9xgICtH3bQoU3RlZmFuIEZh cmZlbGVkZXIgPHN0ZWZhbkBmYWZvZS5uYXJmLmF0PohnBBMRAgAnAhsDBQkFo5qA BgsJCAcDAgMVAgMDFgIBAh4BAheABQJAmCd/AhkBAAoJEDGfiyiL79FfqEoAn0cP NQJYvSLWsU4gD/cffKUtLEKiAJ47lf0I7dFdAJSqqxSCOrw7iuWhTrQxU3RlZmFu IEZhcmZlbGVkZXIgPHN0ZWZhbmZAY29tcGxhbmcudHV3aWVuLmFjLmF0PohkBBMR AgAkBQJAVIenAhsDBQkFo5qABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEDGfiyiL 79FfeOMAnR6XllE6b+BKnoRjBOC06PXfoK0jAJ4yDtL0vkYkW9LRmoFkWpxJYilU ALQnU3RlZmFuIEZhcmZlbGVkZXIgPHN0ZWZhbmZARnJlZUJTRC5vcmc+iGUEExEC ACUFAkCYJIMCGwMFCQWjmoAHCwkIBwMCAQMVAgMDFgIBAh4BAheAAAoJEDGfiyiL 79FfwykAoIes15zWxNJ7iQr1n4rP+x1LidM5AKCDakRpNHAdMiaJJRNrHt9I1kOu FbQlU3RlZmFuIEZhcmZlbGVkZXIgPHN0ZWZhbmZAdGVuMTUub3JnPohlBBMRAgAl BQJAmC7cAhsDBQkFo5qABwsJCAcDAgEDFQIDAxYCAQIeAQIXgAAKCRAxn4soi+/R X//IAKCmPHdkW+JyvXq8Ph/4AcoSYGltQgCeOyA+WXLvjD8s36h1ITQXleLr0Ju5 Ag0EQFSFrBAIANrcNEggDb7bS/TkhZg5CEw0HP0bFOogCowNgGZ/9EzZA1SvABYb vun0RyK0Ceh51Vr0Lb01i6cIDTH/cBVMqXX75YPusncMzsEuMdBCzMqKRPCpimUD jFmMIBrkbtu8OTwaL+Xy1j7/SyfYv8fV6q6ibGWgN4pcyDmItTWYRNnR1G4EdIvl a2CgQr7AgzWPGeeZLrUqUuLjYKwZ5JUqch3ooU4e+eFkYjovMyiC5E23UxZWyDZQ DA1aOizxH7519R5l1YDsrqjZdVz3Ks7iCPYZ+T2QMGM7oUDjbt0xAhQCt15yj2K7 f0m6KtmHWzwgf5Dagcph00anBMldDQ1RqscAAwUIAMReNMLnk1jhYUYoitYNDJTO Pp1X5bk66+b5yHW2Ul9DDboe9tp37AoSJf1hEI7eyB1qkKO3bt9nePKOuAe64ft9 jMYEm70IS3tmo3hHyTbLuOpxF3f7ZHmai2gXPdDmIczDqkE1PneX9gJQadQTqvky 4PVHKVUGTBScI0S830ZBbIsvoYimjGCPMuz4UT0vKR3XLay4RjwCYC6waqRuJoBq rfm/vmx6/GNfb/jwZgN3QYPgTptx65eAdEAy2C3Y7RbMrbx9qqvx5TxaS2yVFy6X 6gIrSmFSFE8rplPDActw1V4YMyuwnyVvGe93pYwYfxzM/BxN09V9QBQUhIa7TMiI TwQYEQIADwUCQFSFrAIbDAUJBaOagAAKCRAxn4soi+/RXy2fAJ99u5jBvCIXuEPa rLB9utH3lU/ymgCcD/fpfY9v7wyOrivOy6Wz3ZWjdnQ= =9khA -----END PGP PUBLIC KEY BLOCK-----
<farrokhi@FreeBSD.org>
pub 1024D/7C810476 2005-12-22 Key fingerprint = AABD 388F A207 58B4 2EE3 5DFD 4FC1 32C3 7C81 0476 uid Babak Farrokhi <farrokhi@FreeBSD.org> uid Babak Farrokhi <babak@farrokhi.net> sub 2048g/2A5F93C7 2005-12-22
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEOquWMRBADPeAMeFy9OMbD3PxFjNmPIuY9CMb/fP9G3KNugVwLoHj29pXHS QDo9OGHmA6udL6ZjZt/cWsU6CBwrVmr7nnqIXwOFGsvv4sT4cQJd51ypMFcvrYvi UmdfnNZWeggviCMYdZErMqVdH7QKZyZ/7xB1IBV/66Bu768nQlSpTmqTYwCgwpUr 8V37ACzVXUZ/1CPqtadIe50D/1rlR4GTzMnmJGBbqY4c2nNtaUA2HEzI11QsHvFp jTEcHI/RdhLv8dcFFAD0PmLC+5W7OydXvQXBfWzVXmrEPzFprwOc79wfCB+JzOt9 JzyClVDYvhYd0f2kxrXOR3ddLaBCMU9A/NxvDL05TCE8b3rSuV2VRT6E6A45/88t aKKvA/9ewMdS3zicyyK33FTYTecGJc6Kt1ke/spq6jo6k3+L94Z7eZrZrhXGMRYg Ibbm3VuxoPeIqyY8SujHwNNzP7PqGp8MVefjzktldMyvbJex8oIyB0NMrHTJ2JTp ScJAetOE/mXYhMSACgWbebu6uBEigmaz1D4WNU/ITf8xuX784rQjQmFiYWsgRmFy cm9raGkgPGJhYmFrQGZhcnJva2hpLm5ldD6IYAQTEQIAIAUCQ6q5YwIbAwYLCQgH AwIEFQIIAwQWAgMBAh4BAheAAAoJEE/BMsN8gQR2iM4AoKXtRmdbGhmrJ3cW6lcd gP4IUfUkAJ9mqLQk3ztstsPzzovhwV4sIH2VgbQlQmFiYWsgRmFycm9raGkgPGZh cnJva2hpQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJFUO2LAhsDBgsJCAcDAgQVAggD BBYCAwECHgECF4AACgkQT8Eyw3yBBHZd/gCgmHXJVgY+AwvJvL2v2qG6+P2EsP4A nimm5LNueFg2PbDsRb+Iz53zw8d6uQINBEOquXEQCADPKrfxmpqJEbVpJV1PfcLJ KpvF/0s1NEhvrXVnm0GhId8R96n22E9oD7QYTw/+TkdCksw0dcAIvFH2y++HNQoE NVgoyVW32Rw076Va8nizA2icB6hEJwKiI400qKjZknj2pnILPHORq+Zl43sHaXnB imchl5U9gZI4EXCRC0u87oLd0IHuFMUGYEfhsxninLpmFNPjS55zEhPDIBTuFFiN NFZ8aLxq6APGd1lbLJhYnQIYZJreaI3lXc0VYqjkaB5WBeYXKNNF3y39yNY3SXFt /dwIP60IoaIAjARFLqvUNYOsHpjsVAItxxMdTpAlX28VYWsr3quGL97Xhd4NfDvb AAMFB/9ep1jcpFocEOurMYZkIrPE0CdgdeWzlhHhW2F38cZTj46WxoAY21QOfjRx tCcGDrKNNwoHO3TIsuPrEI1OtJ4y8b7Pj2zuv/kUAEMUjl5dutg2kIDz5cs5zxI6 4HhUx17vQGTOK3l1I2JxoNrMKPcDKxegHqYqpzb6vEr3gsKT7GSeMBREq0rvfZfQ ZmZTLfdy0AiQ6KsVt1YV9wUE7Kq5OmhjVZNovhZtxO/tzppQLNX/62wdf1OmFZIn xWrYFHeH/N+QGBmMRf0NMb0oOn4nEMem9QhSRcW9UcyU1K7Usa3m3WG7qrmcq+ri 9RVM7/8wJCKNJD1ej35rMQYVrolIiEkEGBECAAkFAkOquXECGwwACgkQT8Eyw3yB BHZy+ACgqz3KenkNoTQKFv4nrGUHnAqMm5sAn2Z+BhMOzEhuimOTVLXVzKuipov0 =vL0B -----END PGP PUBLIC KEY BLOCK-----
<jedgar@FreeBSD.org>
pub 1024D/FE817A50 2000-12-20 Chris D. Faulhaber <jedgar@FreeBSD.org> Key fingerprint = A47D A838 9216 F921 A456 54FF 39B6 86E0 FE81 7A50 uid Chris D. Faulhaber <jedgar@fxp.org> sub 2048g/93452698 2000-12-20
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 6r7mPk8= =R6MH -----END PGP PUBLIC KEY BLOCK-----
<green@FreeBSD.org>
pub 1024D/41C13DE3 2000-01-11 Brian Fundakowski Feldman <green@FreeBSD.org> Key fingerprint = 6A32 733A 1BF6 E07B 5B8D AE14 CC9D DCA2 41C1 3DE3 sub 1024g/A98B9FCC 2000-01-11 [expires: 2001-01-10] pub 1024D/773905D6 2000-09-02 Brian Fundakowski Feldman <green@FreeBSD.org> Key fingerprint = FE23 7481 91EA 5E58 45EA 6A01 B552 B043 7739 05D6 sub 2048g/D2009B98 2000-09-02
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 uPPUsA== =oR1w -----END PGP PUBLIC KEY BLOCK-----
<lioux@FreeBSD.org>
pub 1024D/75A63712 2006-02-23 [expires: 2007-02-23] Key fingerprint = 42F2 2F74 8EF9 5296 898F C981 E9CF 463B 75A6 3712 uid Mario Sergio Fujikawa Ferreira (lioux) <lioux@FreeBSD.org> uid Mario Sergio Fujikawa Ferreira <lioux@uol.com.br> sub 4096g/BB7D80F2 2006-02-23 [expires: 2007-02-23]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEP9+FkRBACKcQPLBb7vcUuQTM+Zqfwsd44vzULREV7qHVvTqJWDsFyQd4hz /rX86mmHiS/fOh68SonP6QdXO2i+d+LshgLTVPBlW92TXsFYP09FUWWx2dm0P249 P7xoIcQ7slhHnSVuPDObzm5T7yDXL02OeO6qonN62IjjxB8xzFo+W6SsAwCg2BtA gvPq1hyeXVXlbItG/9Hbul8D/0yjvmED7dj7eQpm6LvjswjkMoRdg6cgR+/N9LdP GIdjGHkfFnW8hRg7QAPzmstkhtY1I3zEjVVCcYjJrIibaqBAUAx0v5HszLKKRnrI ZZm4IXKFpkVC2sV475FpFTPXIiHmyzq1lbpgAQXX71yFNJ7hsEuYx1z2Ihblz/B+ KHJ8A/9UNVEPc4s2YgjntQSDWRY+Vcr6M4bN/+ogCJ7XYN5lcHjB+gUD8kAWupEH 1hDV3WFahpG1i0MusOZM+dggTXSshd76z0JlOJjbywEv2Z2nb+1b1GU4EY+2RlTi nP9rO7EqtPhHjNkpXfsSHFOC3qfcsDhphXOJeOFwwhMhkxmkHbQxTWFyaW8gU2Vy Z2lvIEZ1amlrYXdhIEZlcnJlaXJhIDxsaW91eEB1b2wuY29tLmJyPohmBBMRAgAm BQJD/fhZAhsDBQkB4TOABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ6c9GO3Wm NxJtqwCfZrWhCzRFNX2TkVEW1zMS0mw5aLwAnRUNKvayClkvdqHMLksYTFtUu4RT tDpNYXJpbyBTZXJnaW8gRnVqaWthd2EgRmVycmVpcmEgKGxpb3V4KSA8bGlvdXhA RnJlZUJTRC5vcmc+iGYEExECACYFAkP9+lYCGwMFCQHhM4AGCwkIBwMCBBUCCAME FgIDAQIeAQIXgAAKCRDpz0Y7daY3EiNhAKCLZTyIxlE0tU91Cy6YxRKCu1Kv5ACg rbLcuizHmkAx/du+XaG+aveC4Ui5BA0EQ/35pBAQAL9uIr9y2BwxMeHbj6LLmoPC DmQnzXWWWIZPtEyWlUv6ANLvtNX8M0ZWzfy4Z4EXof6/m3Z8KsAEZf22AObR+CA1 mgRRmDxVfWDU3fYYIVwMTQ/IqjWz5TPfldXySqxtW/Zm16ODYv3c+tnu/KX/M/WQ 1l9pLfIB9G3NlnHwHTWBdIQhomXLzurW0yuq4LXobA/nQmOWmrQwjXNk1zzO+p5t v18thaXoF9pGObS86oCCfwaUMg4RD6PtizVUSA+frFmcR0/kpNGAWw4gIqHY++9c Ri+Tjvbii0ZhBZNb3l2spqhg7zMAqzQ/wR0kJt09FegN6vClMLDBJW5Rveb7u4XT e01JY5E9h2Nt/RaJQ2RgaoD0bNLx32Zda0GOzidFAK+0QzOGvfMKimaye3YkWRXg GFZFHH4k0FIcRd461ta4aN0VMKbpRbYxZP8oxmN3VrJdrf91Qqton2Ljrqk4ndQA xb6zbtJeobx6MiYlDf4GB4Wgm4g2L/BYH+ObV5QqnTnwMIjP6Y3BvP941d7eX6VM cpJq3ueDK+FHbF+KEozHycvlZrj+el5SuWXtNdOVma/DUQjHJ1DHMmciVqZwArnm Ygg7f0G7dMxBi4n4OdHHSkJXwth4ojbZf+zDDQnHmt7J04/EArgEvBKxOGEh8EcR evS6bR8NvH7lfXjl+7AbAAMFD/9DHsJNi6bx5sciwo7xvwx9NZY2MTHBxaWV3iWj 9OIoiklZt8Ca8a4ukDc5d2t/DrGr/rtKsUyQ7utEhfdKr17TYZH9mW9ZzOKp5sjO aWOcmFCGMjemejPedAlH8sBD4I4zg+Ph/tMRgAjyw/ZkhXlUbVJ4ooibU1uix5Wy AcxXSyrCOCLbVfpcCphiXCRlFsVuyiTkjM1D3STr6M6YSq5vTpbWkUvHs9c1pgqh 51SoGR8tcyUM3JUvY5fTos1sRlIS6XexXEvmBe51jcuV+4I9cI2cXWVpWU09zBTE mF0WSgs2pXZftMpbLwaTSjzGA4VNQQ5jocsfWUP58HgBCyO4x8G+N1A9PWYtKUoB WVcjjl2ak8G0mbTGb03QaIDAy2CVkeKYVws6ZTQBZtfKiO8Vz2UQcklRNTPTxYHo 69kIY47+6WW44huXc81ACGx2GXXDZtqxasysRtzAzl6U/FKy2lHE7Buyjh7VKYI1 7IncPhl/XyEBWTESAppWvd3WiCdT0zq6wpwxrdpLprWblqxLRttK2Emwe2KhvDk4 3jdj/KOlMi2OUa600mbRfjX78MbNHisLUEG1ceMXaQY3quaerb3Q1N8Rptn8sT1U RMqbVlP4fxFwJg9F8nyLYzBcVm1H9WGFoojCqQ3htuvI8kca6I/UQxHG7V9Meqbm uFqP7YhPBBgRAgAPBQJD/fmkAhsMBQkB4TOAAAoJEOnPRjt1pjcSt1UAn19TWL7b atBvRWIroNaSp6+y2jWHAJwMSHg8w1dVEw3XxYR1fhEhE1hBWA== =lXvC -----END PGP PUBLIC KEY BLOCK-----
<mdf@FreeBSD.org>
pub 2048R/A783DAA2 2012-11-22 [expires: 2016-11-22] Key fingerprint = 773F E069 BE98 CE96 4AC6 B8AB 1A1B 255E A783 DAA2 uid Matthew D Fleming <mdf356@gmail.com> uid Matthew D Fleming <mdf@FreeBSD.org> sub 2048R/4015B7AA 2012-11-22 [expires: 2016-11-22]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 156vpSWN4W+DpFUoSSRJYJNqlyOf13a1rQ== =BME2 -----END PGP PUBLIC KEY BLOCK-----
<fanf@FreeBSD.org>
pub 1024D/84C71B6E 2002-05-03 Tony Finch <dot@dotat.at> Key fingerprint = 199C F25B 2679 6D04 63C5 2159 FFC0 F14C 84C7 1B6E uid Tony Finch <fanf@FreeBSD.org> uid Tony Finch <fanf@apache.org> uid Tony Finch <fanf2@cam.ac.uk> sub 2048g/FD101E8B 2002-05-03
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.7 (FreeBSD) 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 KnkOqXNQ7FzYXOIPK74= =7TEa -----END PGP PUBLIC KEY BLOCK-----
<blackend@FreeBSD.org>
pub 1024D/4F8E74E8 2004-12-25 Marc Fonvieille <blackend@FreeBSD.org> Key fingerprint = 55D3 4883 4A04 828A A139 A5CF CD0F 51C0 4F8E 74E8 uid Marc Fonvieille <marc@blackend.org> uid Marc Fonvieille <marc@freebsd-fr.org> sub 1024g/37AD4E7D 2004-12-25
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEHNnEURBADK+anixdFH+aSxIGLw1soiwMXSiVPD56dmoA/VAFqrE3XVo/y6 bPqpSNwvvhL8Um2v9G/7EDMorqekYErS3sgUOtrA05NSJlOUJk/97ZFzAlGZ4/u3 CwtpFBdiATaCvAdMocWhxVkyIFvo6AqVNz6RkTldJUuwVzGelXWk9IfI1wCg586A r7CU9HIsVJD7/vIbIIsKDncEAKYh6XKEBHWI1pF3Ony+rPhlXCV9W3yraiBb/YXS XaPr2Wy3XC86ufHZs8ewug40DqcSfRobj7qV5II1CMoVrwhUuJ9Y087ETjt7xC9d xI4jrkVZlaRt0m/LUKLLfz6L9KaLWRkBfFhOjJH6TAv779q0n/KfaiU48Xuue6ff KNDtA/96/oTg9+NWjm47zCdQeyZGzEE27btvzbrLZuG6TcP7gAV0F6udGbImgw1f mKrQZn4ZtVKCKS8IzTn/UM/P26Pn9JOzDKd2voPE9Ee8D0L8ywg3mxmBdm+TY9vs r2OEV89Nc2sJZm5CeiqEvfACI8KwbExqWy5TW7Qz+zLi3zk+ErQjTWFyYyBGb252 aWVpbGxlIDxtYXJjQGJsYWNrZW5kLm9yZz6IXgQTEQIAHgIbAwYLCQgHAwIDFQID AxYCAQIeAQIXgAUCQhzb7QAKCRDND1HAT4506BdRAKCaBqu+lvdAp3fhgIJxL0XY YG6vhgCeIyaLMYFzQfii5s20wePEhG3rfMq0JU1hcmMgRm9udmllaWxsZSA8bWFy Y0BmcmVlYnNkLWZyLm9yZz6IXgQTEQIAHgUCQc2dRAIbAwYLCQgHAwIDFQIDAxYC AQIeAQIXgAAKCRDND1HAT4506PmiAKDanV0mSeUSRJuDmfA13o4ELsQ38gCfaEgn LyzKfRawEhJdqsGPWW/fnte0Jk1hcmMgRm9udmllaWxsZSA8YmxhY2tlbmRARnJl ZUJTRC5vcmc+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAkIc2/AC GQEACgkQzQ9RwE+OdOisEwCfY8xxYIhN0w9CSUbsN1/EoYp0D+gAoLedf7wiwvmQ O0XpcJaXgtlO4x6fuQENBEHNnEgQBADPHKv6eOKxk2HPrm180rVAM6/d3LQkBEGL Ma4QuSXXbTDXpzfrt6YOLi+ILe/hu5DNnGbQyvkBB1lLdmqW03lat1ape9wytNoA kHOX2C4kom2WA3FvtAoxojmylEn8S0koH7RUuhhTM29rVBap0W+UpwpnxmtbGXEO NciLWy5CzwADBQP8CSp5Hh4+7uXIRpp+RQ8PKJ2vQVnf7c+QTPDN5MLXEv1UK9gK vtb4sms2yr2IuBMP1FSAFN6DpedjoZSKimxqCyMNbyy0io2pMrNDCpqCadKOyLWN gJhJTxE+3kYeZqzZExvf8q+faQqXp91bbS4XZ4JzgAkT3B0mvQ1OHlVlAauISQQY EQIACQUCQc2cSAIbDAAKCRDND1HAT4506PAVAKCWlLnQdfJsRZtt0Q880glcLzc8 SwCg47K+qs1q5klc1cCIaCj+/TtsLCk= =rg/z -----END PGP PUBLIC KEY BLOCK-----
<petef@FreeBSD.org>
pub 1024D/74B91CFD 2001-01-30 Pete Fritchman <petef@FreeBSD.org> Key fingerprint = 9A9F 8A13 DB0D 7777 8D8E 1CB2 C5C9 A08F 74B9 1CFD uid Pete Fritchman <petef@databits.net> uid Pete Fritchman <petef@csh.rit.edu> sub 1024g/0C02AF0C 2001-01-30
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 oIDNzwMAwpXoLZkEkk/dMUDTsFCy =ZbG1 -----END PGP PUBLIC KEY BLOCK-----
<decke@FreeBSD.org>
pub 1024D/CF5840D4 2008-01-07 [expires: 2015-05-05] Key fingerprint = 47F6 BDF1 DF9E 81E2 2C54 8A06 E796 7A5A CF58 40D4 uid Bernhard Fröhlich <decke@FreeBSD.org> uid Bernhard Fröhlich <decke@bluelife.at> sub 2048g/4E51CE79 2008-01-07
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEeCHjoRBACSaB/CWwMs6NSHptLM0nqOigdiEMILpAOtekIVkzQ/0zB+G/fw J/vtVPoRZu0NlINwCSfnnOSpx0yZuX7CDJVVcGxWf2wt2Ly+1U/j5CnP1QV6dLhz iCbrvfV0GwXGvmJVhxX5lbVB3adzODgPa5S1v/Cj2Dbmqx6KFyMRsaepUwCg/dSE ZQdHiAOL7zh21WTtNbXvXqMEAIdk1WvclSjR8tv5HRQYOzlXZo2+EIeJklxNuBe9 BuGNax1Su2R+Feq/qH0xSTayZmkKV1U7ECFq6PFYUpbn2aroSMmJTQKifsBk5M+J 8Yrxg/tulUTiwi3FlrKkVyf3JNCmtDZbZGgCHAXUgIJbnHNzW2nRYk3LeeBJ4T74 3VTZA/0Z8Gti+9zYP4RvCnbufsBO8dS7H3qMaaDa+Jnj2KYnLbQXhUH0hSRPePZd ylPSYMYhbvZxLF+kVoxRPKn4o5o524ECkO4tJuQwZV72xCRemyMalhyObfPUv3Pv 2c9DTpeP6fiO+lK4jPSqjFUQ+wdJz/qxXYdvCnfperQftmGvILQmQmVybmhhcmQg RnLDtmhsaWNoIDxkZWNrZUBibHVlbGlmZS5hdD6IZAQTEQIAJAIbAwYLCQgHAwID FQIDAxYCAQIeAQIXgAUCS+MdjgUJDccA1AAKCRDnlnpaz1hA1JVIAKCMAnvJIfw1 +r+G0Ke38mRrnhzJRACgnnSswoyJD0lvmZR8VIGvBOQ72AK0JkJlcm5oYXJkIEZy w7ZobGljaCA8ZGVja2VARnJlZUJTRC5vcmc+iGgEExECACgFAkvjHfsCGwMFCQ3H ANQGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOeWelrPWEDUO+cAn3ccQBd/ abvhD/0pllCsWvT/ULv8AKDx/E1tUCqUkenPB1JcIv5sQ6e/DLkCDQRHgh5eEAgA mjk/OYgnOp2A6FTh7AlWOVlrpo+DPQ4bxGXUYtudxptm3hUtaV64zWzL1EF5Ky7u YNuJw3CGHX6tDV0KZ6kYGphkcjkv9i/T3U1YaqTklgmbzkSgIcuCzHP+6z91SnjY VL+HG4egz3GPBn+vWORt78JxgLjLlLQoLQhAliQK4v0+J11kXMT5mZc6IUpilJNw qLbsMKPUxYV8bco3NTMfmkcdJah9ymGQOiRHsTt9VCuvXClnpDF7TpxRd/BICfdZ JyNQYTvVV0d/g24zumsyxgcI0qup+NKic/M3G/+4Bo+f57FRRndARktAUqc2NSGK mTlqsOuJZ0RPDmwGTIcPAwADBQf/dZUT6idKhsd0kpaHpX0V/LES8kFdh3mNiU3s IEOeF9jslZEg3Bl2/AmOIVKWheu8396CjqKr+vjmXlEKABj3YF2ARFj9yg/epZdq OGyVjWkw4JhigVmtbc/BhNX1uMy/SlBpZUIyubvtp21f8YOdLQcV2in+x/Vfovhj kp2ms7fX0PnfwSy3Q27B5bvlU/jPxsog8dJ9Mf0tfoEWs0DBrPkDjBbvwu0VM2Qq JOasZHOS2qAAnE77X0dkA1c1eQeXtgoLbqMrWdp6tS532KiTQN85GRMJbECocMUE pfez5pVX7oYxsotEqIfBHqqgx4Zv//oA0fE9dIAc+RawKq64C4hJBBgRAgAJBQJH gh5eAhsMAAoJEOeWelrPWEDUtV4AnA6B3aXqQMK3LGBF5RYuPqIf2BeZAKCo6fV+ qu2NvCjYzT8RrLvqANb1wQ== =ucJ/ -----END PGP PUBLIC KEY BLOCK-----
<billf@FreeBSD.org>
pub 1024D/7F868268 2000-12-07 Bill Fumerola (FreeBSD Developer) <billf@FreeBSD.org> Key fingerprint = 5B2D 908E 4C2B F253 DAEB FC01 8436 B70B 7F86 8268 uid Bill Fumerola (Security Yahoo) <fumerola@yahoo-inc.com> sub 1024g/43980DA9 2000-12-07
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGhBDov9skRBADzrOg1JwL+kHv1dTePFR2lNrErbMe+WVeP1sdGuKcYTP15VQyJ WV/6ZoUGsihAmFGcGyJuhcUJbvlvqRf4ZlwD80a1y33SNxxsqe8n5dm4Wy9FElL5 bjs4L0kGJlSL8KnYYUTQKEDBcTch3+GTjgS4NQBZWy4h0W6EWqgxr7CZYwCgpeB3 tnDcY3ELA5EP6Bx8wZN97zUEAJo972g6HplZyuyjqqTjdztXNgD+DlsyNpNkEfqs AnZcr4aqEeyMNtGl8gPIc9JwPPSlX5OfmjCm3zWtEjwrHway6YPggXqX8efuY3lo LxVfjRt6NLI0TuV0FhojgHuJYB9RsXQFZxbYH8A/j6jQHbiN3wTyYHtaAJJ/iELg 82oWA/dTeR0kjvjgrfB1MiFCH4AL77bZWuxSv1CvV09DlYtSxfLpyBm4OHvDZmOv V6zT9COM2+f2/EMI15cNllYXB3WnwfYit9tZtEFBl1+OshqYBbcNkser1pBd5jP7 fDAkpDYGx5OgpqAS8hz4XLPZdS/HXSegodYKinU0p0Rzza6KtDdCaWxsIEZ1bWVy b2xhIChTZWN1cml0eSBZYWhvbykgPGZ1bWVyb2xhQHlhaG9vLWluYy5jb20+iFcE ExECABcFAjov9skFCwcKAwQDFQMCAxYCAQIXgAAKCRCENrcLf4aCaPIbAJ41RzBA OuxYwZFUSbMbU5PHENe6ngCfcnVzDC5+lkssh628m3GTG0EjINS0NUJpbGwgRnVt ZXJvbGEgKEZyZWVCU0QgRGV2ZWxvcGVyKSA8YmlsbGZARnJlZUJTRC5vcmc+iFcE ExECABcFAjvw0YEFCwcKAwQDFQMCAxYCAQIXgAAKCRCENrcLf4aCaMcVAJ9brBw2 LPC2RcZpsm5S//dETM/qFwCgiuPpVVwBP7ibzn5xQVNAdB12xOa5AQ0EOi/2yxAE AL/FYZQw0b7NrD04j6dxrp7wBjgd19ux4zQocXgXPlzpBZxQ4A4/icGOLnIU+vDu ltbpf7aMTd/mJokJwx9pE82pOgxk6i42c5qKkwkmjhO2/4FFk8HXco2DJ9roRi0n eBJztXskUY4cVavKdXNeJY2JUeBYvmrnREWG1W2/0ZMzAAMFA/4ytkv46phPokQe s7yy67bEeHiydjvf3uM+v1z3xWoLw5ZU+8hLdFkESpZ7u+qA1mj3i7LNBZhfA5Bt Cgl10v9DWX9cda2HlMjyyI9p3dfPlOcAh69PMwexJ1VYPtizK4ZkC8dNk0rTVPOf SYftSsFGdDbUAq3ZokhjLkVRFY1LxYhGBBgRAgAGBQI6L/bLAAoJEIQ2twt/hoJo ewUAnRRikiShfD9wCuyMazVJ9+FZLWiiAJ0YFgos24sNEFq5rA4I8UZU0LZ5Iw== =y5FR -----END PGP PUBLIC KEY BLOCK-----
<avg@FreeBSD.org>
pub 2048R/A651FE2F 2009-02-16 Key fingerprint = F234 4D58 DEFF 5E3A 4E0F 13BC 74A5 2D27 A651 FE2F uid Andriy Gapon (FreeBSD) <avg@FreeBSD.org> uid Andriy Gapon (FreeBSD) <avg@freebsd.org> uid Andriy Gapon (FreeBSD) <avg@icyb.net.ua> sub 4096R/F9A4D312 2009-02-16
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 wg== =/KPo -----END PGP PUBLIC KEY BLOCK-----
<beat@FreeBSD.org>
pub 1024D/774249DB 2009-01-28 [expires: 2014-01-27] Key fingerprint = C410 3187 5B29 DD02 745F 0890 40C5 BCF7 7742 49DB uid Beat Gaetzi <beat@FreeBSD.org> sub 2048g/173CFFCA 2009-01-28 [expires: 2014-01-27]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEmAbU8RBACOi7LAumjK/zBMpQDMrR55L9xJh1vTYpiKayLth9ZPlsg57pa8 4p93pSTs7XKcHIO8zqr+LpFFxtafUVoFwzDhwwhO8mX97oakPK/LG2ItUYYZ5302 RX0UclTrMNt2UM+0nrTI/uoh/azn5S+gJNYYTEJy96QzOtY0eGj/dDvOWwCgg3hb fN0crXO6FKY+fshrgQUdKX8D/1PWjcXge7sM3tlR9z0ETZe35qEljmTXpT4sPky6 KmUF4ymBqhWCTn10WQjuOjhEXhF3rHQ/omgOr/dBQFZefBtcYKHUBq3lvmd0cuFB xVJRQErw5U8r343EeaZOFY+ale9iNTfwkl8AyrkaazUH/j3qu4ZnGdf+Wum1P/SF 8ijyA/9XcujJJuXMT717d5yY1Vx1Dn+aYLV4y3OiniJBQFP9CU2lX+Iw1sfuTGml zx8+RPTlL+S3+nz2XkiYwHVi6wlthhGIOgE5DfG1r9FG5PZJtBr3pQau9BilT1TU 3rXZp2z/tkNEQTagSB4ObCAQ5bTOuxli41TPFuHxmn4Q1YrmkLQeQmVhdCBHYWV0 emkgPGJlYXRARnJlZUJTRC5vcmc+iGYEExECACYFAkmAbU8CGyMFCQlmAYAGCwkI BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBAxbz3d0JJ20jPAJwOdzYWw9hZSEFtUf40 lGSurerRAwCfWN8iMDBntKPMBt3j5QQWWSkPxx25Ag0ESYBtTxAIAK2WncBXO3CK VTcGY5jvbqKWsJ+JUJqZylaV3FW6YzAMKKw380m2khT823qgC5XBja+nm0IQn2ec 34D3XKl8gjf4WWJog6y/DAnxvwdtsS+Wwq0/ownCF1pvFiIt1tAw54i5fmqpwZj1 UPQE2IRc54y9yFdGNSuV0He9ZdJGxXKx2GW71rHlgWCfxXmD+GtwzFs76jn04bwk lj3YM/AVr+6C3OGrUv0lIzD26kPxpbZHPSx2a6imBk5HQKVsuYqqeI5ZMOnkbwPn GuEu7tVn0Y0lwVyBqYf1qe4u2e/38Kg7e/X7Vk/OTSh0FMJ5ZsakKUjedvJ5DA91 gUJBmGkopmMAAwUH/jQX8T1IlDgmZN2T8FUc3hnQjcYdOPRJv2Qx2DeXK4OI4DCX KWxVGXeGVd+EpKgYCSmBYx5UA6MKN17nmoQei2MuVigxE07cCx6BjASTmHxex3r9 EGl8luGmEkzhTajYfu+13dvMMQVYuyQTwB6dMioaw7j6lE5GBG06NvRfzik3mI5n ms487lKYcqAJ+iFk1a8Lbtof3xoHi9gYl3pWQ/rXirY8sp02e2FgC6iFvE/4+hD+ DCdkkCZOJMIl23JVm4VLWC8Ak1Z5PnOXPzXwS1hEX1KjRyrW/Z1EwNcCK8zSNQH+ bknf8dxan+46/iwig5ejA9N0lyy6gooFXeiYCQqITwQYEQIADwUCSYBtTwIbDAUJ CWYBgAAKCRBAxbz3d0JJ28NNAJ9II48hjLq4PRAYpsDHXGH+2wSr1wCdF1Kq1fEU WlCtH7Ew40yBxy/bVJ0= =h59X -----END PGP PUBLIC KEY BLOCK-----
<danger@FreeBSD.org>
pub 1024D/DA913352 2007-08-30 [expires: 2008-08-29] Key fingerprint = 7372 3F15 F839 AFF5 4052 CAC7 1ADA C204 DA91 3352 uid Daniel Gerzo <gerzo@rulez.sk> uid Daniel Gerzo <danger@rulez.sk> uid Daniel Gerzo (The FreeBSD Project) <danger@FreeBSD.org> uid Daniel Gerzo (Micronet, a.s.) <gerzo@micronet.sk> sub 2048g/C5D57BDC 2007-08-30 [expires: 2008-08-29]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =z5Yc -----END PGP PUBLIC KEY BLOCK-----
<sjg@FreeBSD.org>
pub 1024D/B6CC76BF 2002-06-12 Key fingerprint = F3BA D6CB E1F8 02EA 705F BCAD 6125 F840 B6CC 76BF uid Simon J. Gerraty <sjg@crufty.net> uid Simon J. Gerraty <sjg@juniper.net> uid Simon J. Gerraty <sjg@NetBSD.org> uid Simon J. Gerraty <sjg@FreeBSD.org> sub 1024g/D94B72B9 2002-06-12
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 U4BS88b/Bo4u =onBO -----END PGP PUBLIC KEY BLOCK-----
<gibbs@FreeBSD.org>
pub 2048R/45A4FC2F 2012-02-10 Key fingerprint = B98A C3AB 412B 094B D6FE E713 FA5A 1E30 45A4 FC2F uid Justin T. Gibbs <gibbs@FreeBSD.org> uid Justin T. Gibbs <gibbs@FreeBSDFoundation.org> uid Justin T. Gibbs <gibbs@scsiguy.com> sub 2048R/AF6927F8 2012-02-10
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 p74XqpZ/mgqZi+JmS/oDsRIZVbUjIyFB66IX =nVkv -----END PGP PUBLIC KEY BLOCK-----
<pfg@FreeBSD.org>
pub 2048D/422BDFE4 2011-12-06 Key fingerprint = A12B 7C6B 54C0 921B C64F 7B35 58DF 6813 422B DFE4 uid Pedro Giffuni (FreeBSD key signature) <pfg@FreeBSD.org> sub 2048g/43A91DE0 2011-12-06
-----BEGIN PGP PUBLIC KEY BLOCK----- mQMuBE7db1cRCACtLqHlWpOFR3RqqXWBlItnk4Gm6NqT94ZbMoY+GSkLVbOxa2tL +ScfosjZ11Fl5UGaM2fQSVG4LgggZEDlMZrCTCRRepNX0sWcbb3QGGShERESzkjj wOm2PW5ta9hPCdACvNjRPzvueZjWJdmlhQNO0BzaHznwqhoqk6LqmEEtFNu7WFCy PzECfCkgRqJU3Z/EJaLd9kMZ6d2CqCz3sYF+P3/NyXrugK20PKQr/Lb1uL2R9FOl S6019GD/xfwMkNVn0CzvMXFTp4V/ecGB26Y0gt9JJBS+32JaY+aG7ULDGVs3zv1R 1Fi1ohEyqVsuxjM8+NTaIQ/28rNSzI7EoBczAQDIh2oMj891s/47H8i69e8XR4xj fxJ3VZDgAYCss8qGBQgAguxmf5x4EVfCDjucL1cHgFMv3x4Jdv0RwrqOdOztGvEJ XyKJi8H5uIuLO543Q0Rj0GKqzYA4f43J13BCdXHoh6b/Tp1i8Q5nrk7gFQRy1fF0 O3kbpl9nt1XH1+GVQdBEs3lHAFYNcJIsYW8KAm1FpfjGRdelVYprmM6ErEIwnDR/ twDp6JNxBl0lyDjCYVbax4n0Bheit42CDSGn8MDraZBenRp2M6TxC64jQEYV8tW2 J+W2gAyZJeDXUq5Yp5X59ZzvF7aXr1DZ1b3J3l9ySPkxMWoxdbp5Sxkko04SdE0F Db+DmyIbUlN6Q1hKBnDDJ0yIJXFJ+w7Lqa/lEKh/eQf9F+4Ugh0MQOqLv2nDPF91 4y9vDFB5Po1Vt9PwZSEC10oTYEZ1udjwhlu7cz3KvdZHoo9c8xXma/IDx+cTzWbF hMUlTH6txcx+4KEPqf2MCPJHhGNPNrnN4pRgGbDy/iGrJzOXSgh+sIltgM142W/J n7saCWgidxfsR6EIrVD3pFIYgKS7FT0dadSrHsqRuION8pbqJwwXMwu7o192tdHM ZGk3JyjUWFOnuug5O1MHd6hTQUkf/ZZukW/h+ROgMmghVobIGZ0ne1tlUD0hLLRq FnJb3EIlS0fNb740X40OA57V90hQtJvcrjL26lRMbS2MeRDnCwZcI/3YJ/p47xFv RLQ3UGVkcm8gR2lmZnVuaSAoRnJlZUJTRCBrZXkgc2lnbmF0dXJlKSA8cGZnQEZy ZWVCU0Qub3JnPoh6BBMRCAAiBQJO3W9XAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIe AQIXgAAKCRBY32gTQivf5NcqAQCdccZvB3SGbyf6fljXVIwOQx8/3SLs9gHT3KQd YCu8ggEAootBvhSjxTJUyhwveMJSQKstb6VfUynyaDDAz8EF5Nu5Ag0ETt1vVxAI ALpKZlQRfMMr7zbN64GtgGL0ouSDoGeuQbRLcrePZ0RaNmBkvz7TbGk5AdLjE6vY ybMKjKCXNvjvvdOCghyl9M9xIG/rjttgiOEGMzfLXqgjZZXVUvXAk/2x5c6jg6IF vHmGrXfk1Oqw3u1IV9KbveGQ1HVJxYsi8jt/7uRnneYmTvzE16Puj23xM9fvDoMS MHAMudWiKt7qjwBy3Eq4KZbO8DwzIUno+ECKb+De9P2Dy6ikFGCcweGADLTVLE47 ySVKtBdiLzieefJbd8Qhe28kF/glJuFVKnTYceYpVGgs+Ul7WxQIgRCdFfo2P/Jn BtN9NFBPAw0WNPNDjg/cPrsAAwUH/R+lrO8j/OupArfnuvZc90cbCXYEeqMu6jME X2AcUSGo934F9qPPQxWnX4qJD1cztGGrTFOKWxt+aGN2+qe6Q/fIvaNYTb+Duh1l oTNtGmVYPX/HGF/XTm0Vd3BgcpXXEv0XNs2gQwNgCyQCwEMmYUt/DUuW6qzkZs9l ZA2Sjm0eBTPat2DBORp0KUvqe//STk93ZNcLDnj1EnVqa0piJk9zcDivEy6zx4gP tGFPdY0qWCDZjiFk+wB6/XzEDu+jFMERxPCB2FFateKjxswRlBGL34xThCv1SBEZ XoD+w6FJ9bx/jPy/muMe7ku+SDm8smRBipOm5V90y04a8AHxF3uIYQQYEQgACQUC Tt1vVwIbDAAKCRBY32gTQivf5Lq0AQC7xOYsjWskIoge0aL6RwWAXhYwFOejC4Js h5BxxBSeRgD6AqolGR9yRNeSdg0ee9GfNWC1UZKNOIiQ3NDvwOjvb9c= =fr2c -----END PGP PUBLIC KEY BLOCK-----
<pgollucci@FreeBSD.org>
pub 1024D/DB9B8C1C 2008-04-15 Key fingerprint = B90B FBC3 A3A1 C71A 8E70 3F8C 75B8 8FFB DB9B 8C1C uid Philip M. Gollucci (FreeBSD Foundation) <pgollucci@freebsd.org> uid Philip M. Gollucci (Riderway Inc.) <pgollucci@riderway.com> uid Philip M. Gollucci <pgollucci@p6m7g8.com> uid Philip M. Gollucci (ASF) <pgollucci@apache.org> sub 2048g/73943732 2008-04-15
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEgER9QRBADEnqKDo2SQwM99dEQW6sEoFafQm592R98bDFZC1CqmBhZaj9nG ksxyX82s/PaOoosKZR3hsMcDOJgYkHfTKIMU6aDVMrONfsgLF4V6meTaBHW5uSOI cJBsW/TSTsOq21yrp6995jSTsHZxV0CpFDZWGCowefxvbRoAz/89pUBxYwCglOYk btty+eanC+la8LUuLn1na1kEAI9wXI6wRbc4Qv4dppmNwiBsu0aDW2bOe6TNU5nj MMU5dMQkQ+FkHBFNyF3Fy5Uvm5zhGhlPKRTW9nOmLzZQBf9kj1G2giq5MN3fs4jg k15/93Jm3TnyV8LZxP4cBU42HhuL3b6rzFFNVgDLw4PJuSqjt/JTNhNtCwYW+nqS g08zBAC0FuxTJzna5X8Y2o5o+J2yU0kIB+y+fmGeaN5zg4VsM64Nexhc2X3HJbXd 31hPqySdBl6DQP/I9U00S/C2Qb6MVwTDYR2DBltoeqoHOJKGLvqB5N01DAVg8kAK 31PpMdFhkfZwM2ZsHfoGbnEB2fMd4Fb/+DwbjrckwdG1w8P2t7Q7UGhpbGlwIE0u IEdvbGx1Y2NpIChSaWRlcndheSBJbmMuKSA8cGdvbGx1Y2NpQHJpZGVyd2F5LmNv bT6IYAQTEQIAIAUCSARRtAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEHW4 j/vbm4wcSz8Anj92jZBlcifpDwdiUvTZdGO28CjQAKCT4jeiJcLCbhnXaXonBCzw DRw5s7QpUGhpbGlwIE0uIEdvbGx1Y2NpIDxwZ29sbHVjY2lAcDZtN2c4LmNvbT6I YAQTEQIAIAUCSARH1AIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEHW4j/vb m4wcM20An10tzTX41D6qcEjOBqMzwyydrYoyAJ0Qs9fj/ct7iDCphvNwCcjNGMlx ZrQvUGhpbGlwIE0uIEdvbGx1Y2NpIChBU0YpIDxwZ29sbHVjY2lAYXBhY2hlLm9y Zz6IYAQTEQIAIAUCSARRmwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEHW4 j/vbm4wchSkAn2DyHStIDMIXwKH8LAgut1wpf4sgAJwNKynACF0+sok5YupxxZkm QFJsNbQ/UGhpbGlwIE0uIEdvbGx1Y2NpIChGcmVlQlNEIEZvdW5kYXRpb24pIDxw Z29sbHVjY2lAZnJlZWJzZC5vcmc+iGAEExECACAFAkiGRaMCGwMGCwkIBwMCBBUC CAMEFgIDAQIeAQIXgAAKCRB1uI/725uMHK3IAJ9n6VjOWpymuzHE7xN/xlJu2j5l uACeIqegqdXAaqRS4+olfTDN/nvoYWe5Ag0ESARH1BAIAJGalt0PcCClgFjAWdKr 2+wNm8CrgW8cm62p1KZ9rxTHqpDEQopa8Y2G86pKDmhjJQmPmepcZx2ZhnBc0UVj qBA9bEDnVJU/ysuxjYrjswYNP+5ZemUsk5IZgnZOLQod6ewWtcdZ7EPJYOfKNAvo 1TMNFZqA6CLKUgjPpokRdolseRkyuS5q5XM4InraptSvv6G6SXRiDBwChbwfbJG/ 82ClmnuInhDzmc4gg5flrU6RprLu/PPx8SSIRkVHNZdPL3cF5pocETruqdkcb8yD aC4kIIqsn1XeBYLXS5lYbZBexR0i4i0xkjXnErrGu2lgGm65RwF+hvRsDC7RIC0c 9hMAAwUH/0UY8w+pGeGMgZJHiLSoaK6pTXv1/ega4na1vGglnBeGXB2Cj6jKgv3j 6a9XLRtaw5owhTLAX0uWt1XOw8ojm+vgVBvXJO7ljUI99/Zov5IQRZfy4TN8dOY4 1TNgGiwaUU/rh+MIQy5hFCQPGRjIUKIkOGEBKOaZEkTV6Hr9rFCokpcTILF73JB+ hI2EHwnXzpFKmzB1zwbNvtv4QiyozROvc558n13WP8OdmdGNv0jNcytqEIaB+PZM wMcLMjikPHKUxfHcdmwCezpIBKG2T/5xgzTCMxQ0UbfIYLnsOfJrCm+akw2VbQ+R TdP5dVLKITdFUk3nydirHpN5JYkH31WISQQYEQIACQUCSARH1AIbDAAKCRB1uI/7 25uMHPq4AKCSdNolzpw8MfWfj4LU2ZVlbflHHQCfWUK39VTu4mNu5nPmuM6gmewD rNE= =SgIy -----END PGP PUBLIC KEY BLOCK-----
<daichi@FreeBSD.org>
pub 1024D/09EBADD6 2002-09-25 Daichi GOTO <daichi@freebsd.org> Key fingerprint = 620A 9A34 57FB 5E93 0828 28C7 C360 C6ED 09EB ADD6 sub 1024g/F0B1F1CA 2002-09-25
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.0 (FreeBSD) mQGiBD2RGpURBACZe4DKSXi6jCkn4eZHJr7nGPISQr4YUq3rDqcOSUlFPBZlVd8S pYnfkNNW8HTxl0+qd5kIXiQxuvWxCrTNzoS0gPO3IQcICkAqbIICK0A1KFFx4Zen +muTp/e7bDhStcMEelXc+/3mLReBJf/d6e4For6P/rqVmMAcm5A2GO4quwCgmrSD fLt9NGJ+mtiXFxloHe57l/sD/3nanV7H4zk9gPJZA9b8UKpbZZmsyljTuYOAULL1 oh3CZDYvKZZ3E1v9exVDadSGvbps1bL1okku27nNd9BnlnSxZ+sQbfJtvEoBMUwH HJnAhTU5sW0UJv6K7goZ283npX8fFjyDWJ4+XJ1Qq1e+VMF5QeZVRFiIJ6NztM7F 6b1NA/0dwFApYGf2r8YV5uJPeSsWH94Mx4PTtIXp+WOovQ434wzuBUMiHxeeuv4z LP9Vjf40s0GoC0TLz8wB2awUrO8aWwgg9SUf5yO+jKZ9BchBgnqjju81zAG5sbUc ogMUrENjqIJgFCkHcnbxo2IHOygwjezvZeM/svcxJ1bW/gZlwLQgRGFpY2hpIEdP VE8gPGRhaWNoaUBmcmVlYnNkLm9yZz6IWQQTEQIAGQUCPZEalQQLBwMCAxUCAwMW AgECHgECF4AACgkQw2DG7QnrrdZetACfY5hq9W8pDo/vGEaCZWQtpTpW+EUAn0jx G2nWbw6EDoGxa62mmqy9rFyMuQENBD2RGpYQBADjmTUn3Gk/tkVzIgVm8wdfuMPb n08JkuNLUDYjxWRfRmVZHpT3L+e7rUwKFrcmMRM+kMSsnWKhmhwpkI4Tqgi5/lmg kN8R+kr6gm40lEAc8tNPNzbE4ueKSAwW8QKqC2iHAqe0l4SjvDEns5M3mARPEtfn tdEsQGeyGYlxsG+MhwADBQQA0HSyz2a2mMvyn7IfG7f7t3zuL5tXoFARYQ2FYMWn VSkydfzYuBc6kX3oskR1QMv4EDgX0hIUglvTIb918Qj+4tx5CKsUKnZFflGYfY2C qwVwR9SPPdX7rhytqkalH8HyuLm2XuRaf/pzo23tAivSXNFhfQhvybFtLdPBJ6yK 3XaIRgQYEQIABgUCPZEalgAKCRDDYMbtCeut1qqBAKCDnLRYCpUm4eyVG+Ycsn6B giZvyQCeKeQZPCnz6RKllxb8E/E17bdhN24= =T2MZ -----END PGP PUBLIC KEY BLOCK-----
<mnag@FreeBSD.org>
pub 1024D/CDCC273F 2005-09-15 [expires: 2010-09-14] Key fingerprint = 57F9 DEC1 5BBF 06DE 44A5 9A4A 8BEE 5F3A CDCC 273F uid Marcus Alves Grando <marcus@sbh.eng.br> uid Marcus Alves Grando <marcus@corp.grupos.com.br> uid Marcus Alves Grando <mnag@FreeBSD.org> sub 2048g/698AC00C 2005-09-15 [expires: 2010-09-14]
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.2 (FreeBSD) mQGiBEMpwEsRBADcnD1kRdYoPvpKLjT1w1T5p1fT/LAimANGHXVoZxusjNdJjleF 7SNfN6V+sjm8bdUjZb3VJr3oA21sdwIKXzamhtbaDRAAvKdYIRecTaLId8SqI3dO mZtLVo0A7XNkjVMtyLn8lPKpdiHPOc05/x8sVLNZ2LR/xFJnbdT5bomy2wCgmIOF EaoJmSuh5trZRiKIAeIodfMD/3zaTMjI7eLziJG2IWdxceN40vUX555gCpeFEQtD DfVV++32c7BN0j9o8VFl3W1vsQ3Elhm9GRlb5hZbRo53Z1YTJEzogXTGBVipJGID cDo/bCmRuMSarsT+M6R1NF6uToSBeVZyCtA/DDbJHNvYD5VeOJKsdaQ7hYtctoJ6 ms7hBADD8AeV5gLZOjOIFTAkX1ibEksxz/P8aUFjnj0QmPe98/RI02e/iYVVdPgz HgrTA+gF0X7nIicn+KhBgOT0MTx6bf9DFzmk1KaFBA6vnQ9alw1WtRHGsIm0OgD/ Jn5tRQFriUS5PWQP8FKXcUfmqOd0WtLebPicX66nOba+NKdU+LQvTWFyY3VzIEFs dmVzIEdyYW5kbyA8bWFyY3VzQGNvcnAuZ3J1cG9zLmNvbS5icj6IZgQTEQIAJgUC QynBHgIbAwUJCWYBgAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIvuXzrNzCc/ UUwAmwVe85K4Ljml9AgBKbNn5juVRkr7AJ96PWlTFr/IdKq+1m3Zw7Hyt93cf7Qm TWFyY3VzIEFsdmVzIEdyYW5kbyA8bW5hZ0BGcmVlQlNELm9yZz6IZgQTEQIAJgUC QynASwIbAwUJCWYBgAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIvuXzrNzCc/ 6koAnjbYaFve7vZz3DW2qTBnYXp/n5IAAJ9+2EStzCP3tnKb/hjOxotstQufCrQn TWFyY3VzIEFsdmVzIEdyYW5kbyA8bWFyY3VzQHNiaC5lbmcuYnI+iGYEExECACYF AkMpzVMCGwMFCQlmAYAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCL7l86zcwn P+oFAJ4tcY+w4DVH+x7euh4K6ECBqM73PACbB2QBuJrDOtTxoYdmiH3XdHCytT+5 Ag0EQynAUhAIAKD52CU2Xp69qfo/j/1aLgiMhgLpx56ySAb9SzZySUHadyptFpJR i3glUnoUh9dfU1jr8Y0f1oChCmm9TOZnQJWR7LOrO+av3gxnRtVMkvVr8eAPG3o6 C3VZop7FPxR05Jmy0EtIxweEgNGmCX/p58T9LAM50E9FacmwYAIn77O5zXcJVnBI m9Ih05Hy4nGIoyF4iBA/NZQL10glMnwc6p82AiMj1FI6i6iDdPYBeiHKUXkyZ+Q7 Df+HkelT3zot4DPKBeGBSFyQENOjHCp4wl27DsfiJXViy2NRz5lzrSFgvc0ZIUus Ia5d9nG+OE67JKU4qT5xgJL5+eOe1lXsHgcAAwUIAJKuSmq6lvF4NWN8HWDimXBE Ol8jNHf+miaLgMxOhAOeD4TQHpqgEhnf02koUbGDbli/AS1oC6WGhKSekgYKZCkf zmvRNEkCJCOMG3bOcKEokHiujcyQHWf8k4WmBQe0hGalrE+oaLti5H2/jAqUqYFi tHWRUeJDgfwOXRalI3YJJyjfBzE6ckE1kFWoEeXDuZdER9kusWWVrX38mdniwoKj 7e+GtfYo+riB4Nb/TSuQjw45DKVaqYNi13P2P1EmHwmrSjnL3Yrck3x/vDrCKa0c 2+BAMAaLVnOGdaYT1xsaMBGcgSkybQoOmvMm5hdtxURqi7k/TbaNhV/etSzfB/CI TwQYEQIADwUCQynAUgIbDAUJCWYBgAAKCRCL7l86zcwnPw4iAJ9rVaOA1zKrzwRX CLE2Xxf/FkN6JQCfZU7PjkJvE9jqgsBVfMhi6S6kNZ8= =rDV2 -----END PGP PUBLIC KEY BLOCK-----
<grehan@FreeBSD.org>
pub 1024D/EA45EA7D 2004-07-13 Peter Grehan <grehan@freebsd.org> Key fingerprint = 84AD 73DC 370E 15CA 7556 43C8 F5C8 4450 EA45 EA7D sub 2048g/0E122D70 2004-07-13
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEDzjb8RBADNg1Ak3kReZLn5N6aGm/0ofeBsZDK31HgXFoQnXpZWuPf4Dcuz EztxDMfAhCdQPuFm+u2av7YiOc4Xmxmety18CwBP4E0w2Wf2RKdI7CdeVshn5epo kTMTn8pDu3ZDzui6Uvnjuc6y51VzL4zJwNNZAF5Vs1gXr+V7aDbvb1/6PwCgtX5K XQHfTdms5d6yhYwyQ4SrJ6sD/izS3iZBHe/nDdTBnSIA4sIdcZUn+sRfX7/GPs3H 9JgYbI/+fatLEUShiKaNTCCibNRXx1OqFk0w+vs1pRz/ziE+G7uV7tglS3h8LMnO Q/6y8WwTMiv2seCKyiuvGxG2NMT7OAdrSNe8xPIlNRBdxvANFlgnfPsypXRfjJ5g 1mqxBACaho98/zNgFpClOwAxw1Il0TX1c2EGB0e10FJ77rDNiPCWSnsPu5LB8mhL FfeGdx+zVVj5G4tMVIdJgZ5T4IpELPY1rpqf75F4mBrWTnmd7g9X1S//U8j7pNet JDVlymYg9DJvtKnfOHXqViwV8g2X0EwKsOpjo3IBZ0Oepw3wfbQhUGV0ZXIgR3Jl aGFuIDxncmVoYW5AZnJlZWJzZC5vcmc+iFsEExECABsFAkDzjb8GCwkIBwMCAxUC AwMWAgECHgECF4AACgkQ9chEUOpF6n19yACeNpRdDKA7qDA1vKGyjJIEdeAhqT4A nRC1CUpFTve3psN3cPWymDzSiHl5uQINBEDzjcsQCACkCgzuJRaPnoWmOZCk58ya +2Tbxd3qHtDDwMnY8NKi15FA0Cs40PUffHtWrxW1qcmm7QRmhHpR49tR1f7xT7CR OX5QKPa2axjv1mk9MKC4BtMe851UIMZ8vWbm/Obo9UdNYqEQEXT5TY6PbkiC8tDH 5i00MBg6mkYtK9xU1OjJUp1YHuqalWgMEW1nUFM1CV1Fbk/SqLzyNcC0biTRMUkZ aZ1MgF6oxBIj/InO0f7gVoL3Jb5BC9bOUo3NkHCUQDBPwfLXR3lfrQLo7fLckYaN j85Ap6NXJr88vINfU+xn/MeVwTGYw9ejh4sujp3d57wP9Ym3PaR2SkoPdZO323oH AAQLB/wMC99y55a2jnP9IOsI+UIgWFWDmVqDhdgdp7asKjW2aUhX1k4CGPw7AdTL dtBdxqxFNp72fZPZ53ZIn0z2bogyYOOT4aWbTFiqKyU6CScCpeunKs+/qz0pw0f5 /TdHgDCBrlMLihNiC0Tvtf/BzTLR3pqDshts8x82qKSjhxExazbBxJ23A4El53I8 zZLQLD+vqJaFylhze8DNC3J/V4NgD1Vdporrz9L+QZuJXDGUyp6Gj4uteAu0W/My 4+5zrs9Ym/TSmC4y3PLoqAeJv5I3E+6YqMo4c7XcLuJWO8jzg6aRlQmc/WgvVANW juieqW0bcYqNu2F/GeUcgvD3dWt7iEYEGBECAAYFAkDzjcsACgkQ9chEUOpF6n2l QACglTS9Ryv4oLwvXTNK2j2RLiH1VZEAn1YaLCp5rtafXPpdMdCOuJXo7MjC =UNPF -----END PGP PUBLIC KEY BLOCK-----
<jamie@FreeBSD.org>
pub 1024D/8832CB7F 2009-01-29 Key fingerprint = 34F8 1E62 C7A5 7CB9 A91F 7864 8C5A F85E 8832 CB7F uid James Gritton <jamie@FreeBSD.org> sub 2048g/94E3594D 2009-01-29
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEmCOzURBACOSQ8S2bwRYqXrfV9/pT8BmnGl7GYrkbDtJqL0IaTV1Bmdw7ed qcDjMT55c2LEQlO7w2EG5z7JfaBnP+jV3X/gtH37gcqClcJRxJ2uhT7fShzmRR/U 5iTbAt0BwDF/W5LFmxajhZvw8NJKeMk8j0kUwdTzSKalN+iAhXEhqx/uWwCgz2qg 9utCYdwfeSmRwebBIQhPq4MD/2bWpo3/Vw3PZzNsja1l/s8jQjxkMoXJ8LlYFoYW vc5lMBeR0nb1lZrnBvQGkEJVSPLXLvTBYireyqai8pt+Uk7D1oRevpsD/rIsSZBV MVSa8jUqPF0HC0vWrDd98HDq/RJ3SD4HHhiWJ2wA8YrftyeHzZ0kiJYzggQ3UPM6 +x52A/0U2kBqBq+HqA7YWTEo4pn2W3adZCT8mwmsDdEnC/uTvA0BHBN1HfgCxwee TSqOwssFioHCVu+N/lxKjqy9ftHI4ljSuYOPpC3q+LwFdVjbCQ6ynILNKp89QiK6 B5TphmOTQJ4ytVxr/tcvzDOCxbtyG6t7eCJBlfEgGjZLQu7uYrQhSmFtZXMgR3Jp dHRvbiA8amFtaWVARnJlZUJTRC5vcmc+iGAEExECACAFAkmCOzUCGwMGCwkIBwMC BBUCCAMEFgIDAQIeAQIXgAAKCRCMWvheiDLLfwhyAKCP4JGKCayDfY1f7sBXhYSa 6Zr5KwCfSy1evNxNmp5TwB7RBpEZpL2R2C+5Ag0ESYI7NRAIANiluE6e3GNLyLTc cc/SQ5NdW4/B89yDQkZi/f7mUAMiS73iKoe555EVI/JIFsHUduHeYMB/ERDHNSUj RmWVkb4r8eVSlMVvoU8sBYGqihoYtFXYT7rj8vvq6ufkF9RtBJLTLzikEg07jfQk EzKr1eFOl0v76UGnmqrYiTXOAJoXQIH4+Kt3pWd8jz0Lsc3Kd4+eMW2A+eXSpShb yuQhvtIkSdOLDa9PV03Y/GweSCbTKa5+oTmCoKvXJYjDHwkuj7n2dog8vo64Oy1h z8mPPFyDXr1OitDdA78Vvpu8afz3Uev9DMaKd6WIEtVUprLOXyuSixn0x0rvImes t6lHX3MAAwUIANKigPUT7boxzc93BdWUOKrZEnjN7zVnIqUMizVgi0K9nLM+lSpm exPfoEZqCIBmAmDRYO50Y5Lwb2R6V0qHFBmIvZZ9Ih4YosXuu6oFhKHjamRK6JXI hh5mMrOZnfDRn5YGEr3ZCEOGzdW0pY1t8THd6mtXmK7iIKKy+3u/WHf0tCJDRXk6 7ETBWwqFTE3XpZz09aHRV2470GKESSbs1Q4Cobc8ZIifNzr8kfnWPm/EH2UCNpnZ K2UvAxi6SRYVWIY11SRS/am+DRGweKfm9+NZpHEk2yJknHd95Q3IVw+fX+2yKVQe L+X9H5BR1y6XxKbxqrlWF5I2FDJo4BzOA1eISQQYEQIACQUCSYI7NQIbDAAKCRCM WvheiDLLf1rdAJ976PPYVcvK8Q/zKQrMv7pff09z2QCgut3uY8LEhlK39qZCF9Cl 2+bu5gU= =Uux7 -----END PGP PUBLIC KEY BLOCK-----
<bar@FreeBSD.org>
pub 2048R/3DF5F750 2012-11-13 Key fingerprint = D367 F6C8 2A5F 2921 70D2 B446 27DD 6FD6 3DF5 F750 uid Barbara Guida <bar@FreeBSD.org> uid Barbara Guida <barbara.freebsd@gmail.com> sub 2048R/1DF7506C 2012-11-13
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 AA+Qvw== =8co3 -----END PGP PUBLIC KEY BLOCK-----
<jmg@FreeBSD.org>
pub 1024D/6D3FA396 2011-03-03 [expires: 2016-03-01] Key fingerprint = 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 uid John-Mark Gurney <jmg@FreeBSD.org> uid John-Mark Gurney <jmg@funkthat.com> sub 4096g/0A4C095E 2011-03-03 [expires: 2016-03-01]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =HmsJ -----END PGP PUBLIC KEY BLOCK-----
<mjg@FreeBSD.org>
pub 2048R/21489259 2012-06-03 Key fingerprint = 3A9F 25FF ABF6 BB23 5C70 C61B 96D3 5178 2148 9259 uid Mateusz Guzik <mjg@freebsd.org> sub 2048R/EA19FE8D 2012-06-03
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBE/LxOsBCAClEi5g5IYj8O/1uc7Li2lpx/0fPAZ6/LwOMjvzRHDHEc/yCo9N /zTYToL+dQBgIxYj07PVyPp584CuxvesS4VYU+VXXJxxdtMq9gEi+siVCt0cwpWm bVGTZgLcqZqUT/sJfPqyREmU+hUcR+ELHGjD2zEiOJZg2dB+EoqE9NLFcoUGasRq WKpfqdm50ipVbTU3SdK2mh5CnqC4xp5LXgBYa0tZkQFNh9mSf1PXouj7Zn89Ghzk TaS+ZbyBWgftvZRxqUaxtK34N1zdMKcWzcLsOAaWLyepBkvDzh2tZ55PYml7f+Zf 7s0e1n5Sr5T9GysJAazd4Sny/6Gcu+Bm4ToLABEBAAG0H01hdGV1c3ogR3V6aWsg PG1qZ0BmcmVlYnNkLm9yZz6JATgEEwECACIFAk/LxOsCGwMGCwkIBwMCBhUIAgkK CwQWAgMBAh4BAheAAAoJEJbTUXghSJJZBlAH/0i5SyqIB9CBKrtUGrvytgCRc3Ji 4bPlXc9uLRs88AFj0Y9G79vioIgg3Rnm0B7fOtlcBsFTV/kZqUEcO3iR8MJDR7oZ rAEyEG/fn++afroh1iqgEyOIaO7msQvNqb0NB/HJIj1EknWqVAYBZ4WiRcli7R5A P/JT0ArgTLuKu17MkOhn0sBiZdrep3fN7z2OgY+BNgbydb7O/T6B8hjah+TX7rAB R+EmggzXVwQbDQBTah+BjeER3jSd11zP7e4mO7CEkg5b8dXnWaF+n2aj05iM/axK Pms+tZwO47/OKI17ZjeAjxAWrZcWuavWY2BDNzmCYpuq+x3x8D75VUMBnX65AQ0E T8vE6wEIANUeU+eTvPlGr2ODloNKL+KWTHDpcpdKyljCvKA/7pI0FX8Ojp7dCtvz UyXRhL0EuzG8ywUhxpf+KkuOlxD23Q6+FiKDL3oTtwAmYaaslo69zgLEX0ohN51K 6QOPQlGFdAxHbp7DVb5peJyC43G2+5JWdwNq13Ha3nGWvWn1Qql3A9xik7/oFRit NATwdp2oecyFBkfhkQrGbecOmaa/hEW8eUg6pgfz8A+Tk9KjaKqJGc5vplANvddo 3ngU/PfIoUb40onLz6ytzUdYyHXiEkcx+Dgu6Pb6t17osFHjb5FlcnYnrKen64hU IAAH9ckP5HqsOE5wIM9M+X5JczNtY78AEQEAAYkBHgQYAQIACQUCT8vE6wIbDAAK CRCW01F4IUiSWRr7B/dr9JsKVhfaXzF0L7cnzYWV5QqJCkvCuklEqd+yOdKPfJig ZJVtjFVlRO8u4l/Z+F433Pw+gvBkR8vVTw2Ni62vyIspR1CTG0X06Vp+5qHzVOZd LWkQWlbVDgWedAY6i5ABscW2VM9wenrDJu0DuSMHTdsCp8Z3L+rvBjRLmA4WzyQd O/IUyrZmyJP87S9RgEe4L7JhDcWNDglJEEgX+Qgd7FJOUBASlRr5aUZ0iYM00mth d/EdBbJp+tCbCOfxFhXp6ULDkS9ExN/NwVDL/GBXu5ckU1shOVoDwPO2Ib0lfXkA r7vGsL7VXiKw7ITHQKDJ/dc8ab83QPdl3W3QeSc= =gTKh -----END PGP PUBLIC KEY BLOCK-----
<jhale@FreeBSD.org>
pub 3072D/8F2E5907 2012-09-07 Key fingerprint = 009C 54BF 32D0 F373 8126 C8A1 D8DD 2CA4 8F2E 5907 uid Jason E. Hale <jhale@FreeBSD.org> uid Jason E. Hale <bsdkaffee@gmail.com> sub 4096g/7081A001 2012-09-07
-----BEGIN PGP PUBLIC KEY BLOCK----- mQSuBFBJ7kMRDACdF9DTaE8bAAGh3Q/Dd5Ckst0s8Qs7cJrb0qWGRUqV8vmvJr3J b5v+Bgb4wSN2UM+Gl9EJ485e2zJ5TkzrUgo3rFu1quPLnPehHDI97fYtA3CxbNCm j9tyvqmMKbkKwHkTvyIV+Rk8HBbWQcF3fSaVDqqi/XodkpXUrn2zom6Cy2/yC2+J H4+ebR9QjQYoXxYl3MlM8p/W8QBU/65TZPCFAdvI9bWL2f8qHdU9TdIOvboGiWbh gsDIYqEmI+2GzOrPvnuTPoKLuaJv+6MVdnnnqKGo/xMVml3Kj5QgDzjvs4+xVVAx D+7mCXs9LBYwujO/Wraq7ljr2+5ZER1EiW/jQgNc7jeg4rVQk35eF1Jiar/ztwhg Sll1xbynuY41si+1O/dMxtP/Wa7ouvcinpzAVdT1JfAr1P/nm4ASicGCKlLkhROb OdNaxvckoFB2W5PLccsRPOmCMveck3HrbCYh7Wj4GMPcnai4pvwG7Wd0xHjtQ4yj rXqvB7mf+DL6sZMBAIroA/8lcVGnVc1avUWb2sJ0Yy8r8xZfGYb6b74XnhHNC/45 iQx3kLh9oUp8I6VygyYM0G2dbDOaN75omszFgFhxzzD6nRXZweTRd7j4Z5BRclsK MVzZLI5ZRC3wOmcwxlELbANE6kaME8RU4g8ywXUHeR3hD6nJ02SQIJpUojFxezz8 7cTwK3s2O+8f9d9UqMUXq+xpBBg26pDLrr+eITHxiY4Tecbnc+76W5rgfvaJaCM9 yl6sMESUztG3qqibJ2iYy4tB2UmLWBMCu1tvSkA3B+jj2MLLMRs2OZunsbmozI9p OdPqkPScQuAlYHpDgVp/eMmd+vO7lLuWc1feSJ8HHL5l27i/kSnstDe/NVF8QHsL dKShZsITn94h80HG5rmgaGyTnw+t+K4dN6rb1+Xsm9Vx6i3E+57HTcQi37o/R2Vv jgHp6wtvv09mubWdvHk01+tZRV9md0+EPjDsmBA5DSDp9Ccr2D4k1B4ovezEqltT R8ctjkhPtZ1cv6UD81volzTE3N432Uz6Q1RvpROn2MzitirogG1LBYjhnfdhRfML /Ag1LAu8EiEhDpt1GANT7NuQ/0zl7VwhEDFbEW7F8g9qgG3YnrXdbg41PrELJ6xu VIrtz8tr8M5GbhbaZhRx88X/4XQFW7EiA4dmOlymwi5oxe1cgwzz/Z7khhNU7XAI poByqiUzEO5viWP2nYL07ewu9nJ1EVcsdffH2FNooSMfAcH+ZmdMoK+kMOfb/G9E DNYX3+RmrHfSnVbYJD45qIuYm8P8OgOcGTE6cgmSlRn6ki93e+to44ThwTSMWM/z NmleNL2CwsX/whKGqZAaO3yRyAnTHIDOEfgf66wXMudvA0otEybHFxZnyj/KreQw 3SUWQkHBBxuaO1lVaPSE4qt+RIGsJM2ZzWZaDWkMN+qnJPJbr0tUjCVF1g+NUqCa 5gPmvJHDrLdmTBtlJbXfL255TnaGGwkN8zhYoqEyRa5MDz1tlYkD+cnbVU6xyXRC nk7GZBR46j0uNl2W+rX9xoHFwNncGRrjKcr5z8+3R/e8CBYrvCwLebYhehegfo/u MrQjSmFzb24gRS4gSGFsZSA8YnNka2FmZmVlQGdtYWlsLmNvbT6IegQTEQgAIgUC UEnuQwIbIwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ2N0spI8uWQf5/QD+ JvzZL8okil73+M92RWXntxmwzZqylmCu8Id/St350ekA/2L4pbH+x1CDqWWHzL8v qN6nyTkvwzgJQmANRIHKISb8tCFKYXNvbiBFLiBIYWxlIDxqaGFsZUBGcmVlQlNE Lm9yZz6IegQTEQgAIgUCUE51KQIbIwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AA CgkQ2N0spI8uWQcMagD+J4u9BeA16uYSEFwc+eyklyH6qjJtnSoo/7NKefYULBwA /A6wPS6lXIgwV/ErxBPLooDOUBDpd9FGVAlo/Bru4DrnuQQNBFBJ7kMQEACBiPvP Klj+EbBXY7U0FYVLwONECLJ71B6dolunqQ08rGniXFaOO7B4a1ho5AJzfpCOWPq4 20rmo59H+5HaGUuT8JJfk1V8zfxaMV6ze+qOacRt+0uAfMiBvtanAbnIojcdnhWK pxWZkV1VNma0xBkxNuZDy0D8rQ8c/wPlD2Lv/b7QXvk1rlSSNzw5JuwVk6TAGD66 o+QG9wCkV/jfZUgRpiKSuiYrgGxQZAsAcW5xDlfHA9rPPfmcCRzKwxq+63AIbwcE LFJQPYO19JNzDBJ8RskTVnQfhL28U2Dx8jiDB/Qsy3m4fC+L29hLx8+YVQBsq1YX uDaqtfKEnYO/495ydsCMH9qv6LxdrXuRXNglov1TCLXiDt0s6rCdCAkpTEDta7gv RH8Ncycwo3YFOniQwwvV18n1dJlzue8o7OeGaw9YwA2JZlecJ5YPKOPpmmxaIrZy m4aR7NUKVSOa2eg5jPc9rMRCnduZAu/nVRtOlEPQWHIsebq5o4UBDi3Nd4bCcRGy 3Fv+rWl8hC6oK31X/s545TTIJbsLbVSYA58rCMwGkwa6UjJJybOzhD/AgiRU4S4g aQT0Yt0c3cBZyjJteCOG4BG5TJexi/59mOcC4dhQuD3du3sfpI0g+PFoZXQYJ3+g xwAqLjHCnTe971RB6+Kud2UJc6uzSqBeH+z36wADBQ/+LXh7HQiC0GaB1p9SrbiL X4d9vjQgjmbI1Zz76C8Cfd+Vk6LGiU00VKTdNKs1QnKfcOaJqly+xEsxj9prE2zr jmU9RzYKSBDXKMdmfBFbvF30QSRlmiFuOwSNUHNOG31c5J4c0zluJFbZzSw5zFGy cKiRBZ7DlZuSnNviGqyl/AUkVVLQLnHbBUAEvlCXcvaFhwfTzT5sUgSWcUL0O1Kt 89w2pmTjRSIKBsANb48WyujoeD0NjkBXVXDN1n7+1EjKh0v/DzhQgz6kuhY8PK8j NKzolth2cDeOlGlR/xupyNZW1KpLmYOB37tACJtFWcRG0NKMqzTfzAVAl1Hll1Vp qA0Ccou16KmCvUqwLWtEsmTswPCS0V3QKt2K0RccfpLQFNjKE5Qj1oguqhheFcB6 TjU2XPEShGelPtB18FCcE9i/DYsNfRAfaN2DevPLGeZBUqV2Vbz94+4oJRSZCO94 nUCAvp8l65euazPVsU/Xa74r9R3jmZa98XnoxlNWVgQ8mT+XcXfEqKow7kuO46vO 6QKPR4qi33oKV0qt4v4hztypHNTzkhSbSSM9lhy68kNho6o42EqcTsJFpaKMW9SF PT0DcXLNQFhXJYH9nSdaW3VE+/2xygCEzNz4NROfaXU67wopqIb2GIx1NmZpgaA5 be4BWQaHtyiLjJj6PIDWjLWIYQQYEQgACQUCUEnuQwIbDAAKCRDY3Sykjy5ZBwCX AP9elLKCOSeYFcEqwlvEZd3GASS4tAJPf7hPU04NEX4ntAD/QVdcx3kXm7z2IxLS qpi7F0myf/uBWfkmV1doJFiQMf4= =b+Om -----END PGP PUBLIC KEY BLOCK-----
<dannyboy@FreeBSD.org>
pub 1024D/84D0D7E7 2001-01-15 Daniel Harris <dannyboy@worksforfood.com> Key fingerprint = 3C61 B8A1 3F09 D194 3259 7173 6C63 DA04 84D0 D7E7 uid Daniel Harris <dannyboy@freebsd.org> uid Daniel Harris <dh@askdh.com> uid Daniel Harris <dh@wordassault.com> sub 1024g/9DF0231A 2001-01-15
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.7 (FreeBSD) mQGiBDpjbB4RBADW+4fkXvVjAZ0A1X4wgXJQ4Eyes1LH7sTexP/Zm7sg1D/R9zV5 w2kBwOhICRX/hxVL76YZv2MTNL/d3pV3ZW2yV3Z6H7Pq7s4oVn2q35owUwLQZfSI SBTnBiVN7NqMZ/kzCCdWBwg/4G2FVNFwc7RyuOFQL3ly1PBtgbANbpCyfwCg3QXB K6AtFaEP2MA+SWWHQD2dNxcEAI11cbOHbYU8asIxbqYYyPOMgPsaLlPiTh6JQOO0 2OiGxoQlmZvkhlWf8B9ahCeYoKgA1zPqdHA2C9YMvOV2LvN+/Qi0n3hpqkfM7lLC QMJgm1KxIzccWY9Iz09GRlIFm2JPaCVLsKh1QPW50c3yO9TMSa6lXwiRgvxPz76C JHniBACa25NHH3x8zx5KA0FgMM15Wc481777CFVsKazNay00G0HogSICZ5lHffdi 1O5u+qQHchVKL0Lbe1zhdbVHdSAbEqnKTqseVMQ6I1TVu4gO89B72aY1RxAnAYjh PAb5W/RhZBSR5NDVZyANnqaGE7U7KMqn4/E0lC7w1TzoIZvDMrQkRGFuaWVsIEhh cnJpcyA8ZGFubnlib3lAZnJlZWJzZC5vcmc+iFcEExECABcFAjpjbB4FCwcKAwQD FQMCAxYCAQIXgAAKCRBsY9oEhNDX55peAJ9NKai2qEcFLxzC14qDz80zBGwP0ACf YhsW5qhTw/Rck1Id2W1alUEXMre0KURhbmllbCBIYXJyaXMgPGRhbm55Ym95QHdv cmtzZm9yZm9vZC5jb20+iFoEExECABoFCwcKAwQDFQMCAxYCAQIXgAIZAQUCOmOL hgAKCRBsY9oEhNDX5wXyAKC6VLe3svRc+FgmmjPS/EWvi83sDACeOpmPRbViajOw 4MUhKA7hxnRlBeG0HERhbmllbCBIYXJyaXMgPGRoQGFza2RoLmNvbT6IXAQTEQIA HAUCPSJfQAIbAwQLBwMCAxUCAwMWAgECHgECF4AACgkQbGPaBITQ1+dSxQCgsBwM uDviakYEKswiv6zMHfYBBCEAnjMyu+oxjKOWOo+of2qmtQH2LNg9tCJEYW5pZWwg SGFycmlzIDxkaEB3b3JkYXNzYXVsdC5jb20+iFwEExECABwFAj0iX2ACGwMECwcD AgMVAgMDFgIBAh4BAheAAAoJEGxj2gSE0Nfn6bIAoJlPaQlqk4wbNGoscjigAp0R B9ooAJ41JxSh9w2S16mFTGNKvVpjXw15BbQyRGFuaWVsIEhhcnJpcyA8ZGFubnli b3lAZGFubnlib3kud29ya3Nmb3Jmb29kLmNvbT6ISQQwEQIACQUCPSJiFAIdIAAK CRBsY9oEhNDX558OAJ9iOqCDUX4cdNMSZ1KBQg1gfTn1yACfZNL6BY+mYC+XV83L 7DXacstXHlSIVwQTEQIAFwUCOmOLtgULBwoDBAMVAwIDFgIBAheAAAoJEGxj2gSE 0NfnaM4An1YVu3iDtrG314UIuZoTw3zd9ucxAJ4yg3vWB6ceg06KuyaGTJSdZ1Oa p7kBDQQ6Y2wkEAQA0RSR8vkmX33oyYl+LwlOmemSKbSQFZNImw5TDcRYX83fa1Z1 4oIgJSk1h5l2jx/+29chVR1nTNqPYlRQEDMxVby9rMq2RAnjorM6oDdtIQIBNJ63 vmUcUiORGnKhC0waajpmZibcxoUFk1KcLyfxOT0JTOLgsJfqdqUENIc6NqsAAwUE ALaLYnBOoIr5Wm/KC7wRtS4gHeeOeskZyyoa3+AeBorDl0VvpgYwlNdAaP4xJrx+ CH6UYnxrMgCXG1l4dupkGXOCRPlAcM2ouEyDIGHRTVqHy40khZnWzN7xfZhKNcVd FxeHqOG61ZrhcMboxZrdJC7hK+sYrbngeKRiDs4VRoOuiEYEGBECAAYFAjpjbCQA CgkQbGPaBITQ1+foeACgme+2LKdFkytbn/JUhBqPYVAD8KQAnjP+IDVQ3PDEKRkv AFGJ6i5SrWJ6 =j+GD -----END PGP PUBLIC KEY BLOCK-----
<dhartmei@FreeBSD.org>
pub 1024R/6A3A7409 1994-08-15 Daniel Hartmeier <dhartmei@freebsd.org> Key fingerprint = 13 7E 9A F3 36 82 09 FE FD 57 B8 5C 2B 81 7E 1F
-----BEGIN PGP PUBLIC KEY BLOCK----- mQCNAi5P5owAAAEEAMIKNuDnLGiTOzk3kGMmz1ii9FbYEM6fKdf0jSi0YSTxSWAn 7EZbBehJ3yTAYuCaGSEGXEWismycc98LnH2Fb0uI2EsJ0CVLJqxsOL3DK8XE0YOk HjSKUpmJkh/BKrMAmUnqhbD6YIBiKnZh3ABt9+a7A+SakJQxvtQ9cYxqOnQJAAUR tFVEYW5pZWwgSGFydG1laWVyIChMYW5nYWNrZXJzdHJhc3NlIDE2LCA2MzMwIENo YW0sIFN3aXR6ZXJsYW5kKSA8ZGFuaWVsQGJlbnplZHJpbmUuY3g+iQCVAwUQQGso RdQ9cYxqOnQJAQFBSwP+IIm2bFprpayabQ/VgXp10OD3sgIEtH8c99sU91LyotNT ySif8DS+ujliDk5wVnaOlzqrV4sga8d2ybM81hdW0nxI9dNxLIp+ti90OecZMF6M 4PlsdkYGnqZDzXlFg4o70GSAWKjL9RTG5JvNnYWS453mCjYc3O4dm+1zzADfgcy0 J0RhbmllbCBIYXJ0bWVpZXIgPGRoYXJ0bWVpQG9wZW5ic2Qub3JnPokAlQIFE0Br JFTUPXGMajp0CQEBkqMD/0D1K1hTJc8u5K3gpsk9LrnOVYpP3zHbSe94oLO5tHv/ b/Y1626xqcMKYfAIk435asuPnGRkMjgpsxPUKksfWMlUqW4aIiX7di6aMuWkgSBI BXguu1Dk/qRImOZkNzWc3V+/CQ+PIauy2rZubfW2+oVkW1iEmmO7I/nPqDxDBNBI tCdEYW5pZWwgSGFydG1laWVyIDxkaGFydG1laUBmcmVlYnNkLm9yZz6JAJUDBRBA cX8u1D1xjGo6dAkBATkoA/9aDk7yNvh6urP9EWcPv5mjJt0yYIIjGpV7VH2P+mTa dK14ah24HSaTjh4psJg/uFw4egAs2XxDKXrf1SHCaaVajC3VQGvKq6V2Ytmgw6qe Rtt+NtrXVJn5EUnMY3+G8YCXugulym6bUWaC1x6PC0Y2IEzRkM3H5Et78gd2zujB o7QqRGFuaWVsIEhhcnRtZWllciA8ZGhhcnRtZWlAanVuaXNwaGVyZS5uZXQ+iQCV AgUTQGsk+NQ9cYxqOnQJAQEV6QP/ZFHefmwjiex7zEU9uhzjEdZhDlM0szKULUoo TB4x3yiXiYlzK2aqppXbV+vl+t2VLhd3McH+SKSiKwoBVWrdqsXguruIjUYGMAJI aE+Zh3OGUs8sZhtQqn3nE4+VngpyXwPwXPrDhQiwwJRxj+01lupNwS0Z6cAPmD4A W1L0aSc= =HsTV -----END PGP PUBLIC KEY BLOCK-----
<ohauer@FreeBSD.org>
pub 2048R/5D008F1A 2010-07-26 Key fingerprint = E9EE C9A5 EB4C BD29 74D7 9178 E56E 06B3 5D00 8F1A uid olli hauer <ohauer@FreeBSD.org> uid olli hauer <ohauer@gmx.de> sub 2048R/5E25776E 2010-07-26
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =cHUi -----END PGP PUBLIC KEY BLOCK-----
<ehaupt@FreeBSD.org>
pub 3072D/329A273C 2012-11-17 [expires: 2013-11-17] Key fingerprint = 920C A49A 5A23 F9E3 4EB0 4387 AB90 5C56 329A 273C uid Emanuel Haupt <ehaupt@FreeBSD.org> sub 3072g/70183B96 2012-11-17 [expires: 2013-11-17]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =MqAu -----END PGP PUBLIC KEY BLOCK-----
<jhay@FreeBSD.org>
pub 2048R/A9275B93 2000-05-10 John Hay <jhay@icomtek.csir.co.za> Key fingerprint = E7 95 F4 B9 D4 A7 49 6A 83 B9 77 49 28 9E 37 70 uid John Hay <jhay@mikom.csir.co.za> uid Thawte Freemail Member <jhay@mikom.csir.co.za> uid John Hay <jhay@csir.co.za> uid John Hay <jhay@FreeBSD.ORG>
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 =l5Xu -----END PGP PUBLIC KEY BLOCK-----
<sheldonh@FreeBSD.org>
pub 1024D/74A06ACD 2002-06-20 Sheldon Hearn <sheldonh@starjuice.net> Key fingerprint = 01A3 EF91 9C5A 3633 4E01 8085 A462 57F1 74A0 6ACD sub 1536g/C42F8AC8 2002-06-20
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBD0R0hQRBACPEDZc2XKdvIq9F4ofeq/EUB8ISFQ6kaVPcb5ingy5ND+0MUbz K9U+q6Ik8d67KfHHvqGn7XTOXxGu2WS6rIa4ElFHtG/9lpgYtOFRZJxM8nv5+zCn elu18skUNup1y3uIwvhNUY3OPSzVkHC+tUPWfW/8DqdJzud/l8sDFDRtBwCgtixB FHJ2jRXInApVzwLcjpgVJq8D/ixzt0O/Zg2p62/qyAHac7M1sEc2QarCAGwRbuNw jHRtglxQw/GT2NACWqy7lVHKd37ciCrXg9QrTjotJtMcoJbCitYvbQo2RHfEeIyN yw7rffTQ4CpB51KxNhUWHcUfe6Jhx2hgHzehJg7hYnbtSv5hJcn2DXMSHHyHwBri hpldBACI7iJxl2MtFUHBo3XW27WYDzTNTh2LUaMcIaowMW/+vIDds6EI71dCAjuU Ai8DcNacMtE0xRdtNzDMS8vgYWBVLkHv2ENVdLfpxhM72iu4tmPKGF5AXK191dvJ qPge41Z2/57191Xt+keYtuSQDtXwZfSu1uLOHBa0BBvmppBOtrQmU2hlbGRvbiBI ZWFybiA8c2hlbGRvbmhAc3Rhcmp1aWNlLm5ldD6IVwQTEQIAFwUCPRHSFAULBwoD BAMVAwIDFgIBAheAAAoJEKRiV/F0oGrNMRsAnAlWdC5LkmEF3hZjNAIA8gMxkfnZ AJ4k6LXdmHMSSPbd48MbDYq67yzOG7kBjQQ9EdIrEAYAib54xuFqjHpvLxXmqFRl qAgAD5XpavuJisxGjfm7aTVWIpR/OOVFYkW59YInHM7dDHL0Y7tQETeEKf9pj6kF TMyWFoBjtdazqSmq2YXOvI00N27IKT9eqxJ/qR8QgIqBMNkraP9QKi60ASDIRUtl OZSfokSbAKkZMTyS086CgWw0bCPXRCvQLHDjga3KCbht0AjrZFkGmi6r4+rXFnT6 D3JrNSQ0Hj2qFEixHtZvXTsqgsEkOEtoe5taMFSygM0jAAMFBf97Ip2a/kPkXNt0 p+2xmWIFEDim7J9Cwl5viTb1t8fOKx69hFDQ2BwPNDZd1HvlrYTpuJ23uTrDOZsw IT/wVc/IQ9nn4+mkxOmq9iTHCBS99OXz4IsODT3W1sgzUfl+mdqJP8xfEnsyqy6G ivOoR3QdZg7rxvOU98HhDQ1iJX3rCtLNFGisrovDF33oHMEE4oHvSMXeg65JXWiU EpEpioINjrA3P+TL+fMv1tb4+wSUPqTWX34Gx4UfDKnMedxl6j2IRgQYEQIABgUC PRHSKwAKCRCkYlfxdKBqzVtaAJ42mqzwmJCpk8fdsfkHUt5uGTN8sgCfdmDni1OD NWQi1mhQOXZX9oGgyso= =PTeT -----END PGP PUBLIC KEY BLOCK-----
<mikeh@FreeBSD.org>
pub 1024D/CDECBF99 2001-02-02 Michael Heffner <mheffner@novacoxmail.com> Key fingerprint = AFAB CCEB 68C7 573F 5110 9285 1689 1942 CDEC BF99 uid Michael Heffner <mheffner@vt.edu> uid Michael Heffner <mikeh@FreeBSD.org> uid Michael Heffner <spock@techfour.net> uid Michael Heffner (ACM sysadmin) <mheffner@acm.vt.edu> sub 1024g/3FE83FB5 2001-02-02
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDp6LpYRBACHINF1K2lJiWCFAgY36X+NFDvgbRe9U7BKy2Q8ZPouMOi/GIwW iocDyVwRnK8tC3D1BM3THs3cFW0aPsSOTGngZE8rTs8lm53UWi1UApTUztjH3odp OynMb/Dj3k8SOWkq5mYYzl+38jsz067tRDlij4s4I3EjwcBQJOhnUUWV0wCgpDBc wAx9TBVCSY9H5YLtCrJbnOED/iwQH58xpFLxQO1FDYlUCZgZaASm0luft13HuCrM Zj2oDgJZOcuP2AshoJXnKavDjwBIvgf/p6cPZ9CS0sF8WI+v/LHN/EUQQoXXNzD5 ZujgMh1w35nMvl7fSJRDaie9HggnUx+ODtWimmROpiicDXb849asCrUUEcpU0V3G wYaxA/96OWzf/TCr6CZABFBCLq2VwX3Run3ttBiXOVI69gEDj95mfeDUxPQH4JNt /hI1B61Ab3/yDWmjzrW7Kb2i9URK4OKw/95YjoC2g0t/CFrmFi82UwMsmUp4mIqJ eUrQ202IY2zCqCEtHcTbUdXrP1eFkGmi77s+KzzzknO63+efXbQhTWljaGFlbCBI ZWZmbmVyIDxtaGVmZm5lckB2dC5lZHU+iFcEExECABcFAjp6LpYFCwcKAwQDFQMC AxYCAQIXgAAKCRAWiRlCzey/mTswAJ9uujS3rA/mJcR8TH33q6SRhZSeFgCePzaT lOAkDv2LVm0F+V5CBex2gkqIRgQQEQIABgUCOs49wgAKCRDCpSwr0i8VsUrfAKDi Cffo5C6Ei5xHtWRA0DpHChOoOgCgqwDeqC4zLU/lB/jKYdGX37VPMQO0I01pY2hh ZWwgSGVmZm5lciA8bWlrZWhARnJlZUJTRC5vcmc+iFcEExECABcFAjp/gWcFCwcK AwQDFQMCAxYCAQIXgAAKCRAWiRlCzey/mRbDAJ9BS5FWb+Dj4IHlRYsr6IHCXxet LQCgmpN9GwBWNxzBlbAQEw1O8anp5xiIRgQQEQIABgUCOs491gAKCRDCpSwr0i8V sfQXAKDW4IsDEKGr1rYpO4IIZPMl2hVLJQCcCRUr0Mfce6AXKUYBfjAlZmddN0u0 JE1pY2hhZWwgSGVmZm5lciA8c3BvY2tAdGVjaGZvdXIubmV0PohXBBMRAgAXBQI6 f4GRBQsHCgMEAxUDAgMWAgECF4AACgkQFokZQs3sv5mRMwCffitElKCHTC+tF8hQ R9Tdb87+PH4An3jlIX+TAD/u6CjyAZ9fR8nEXeVUtDRNaWNoYWVsIEhlZmZuZXIg KEFDTSBzeXNhZG1pbikgPG1oZWZmbmVyQGFjbS52dC5lZHU+iFcEExECABcFAjrF NgQFCwcKAwQDFQMCAxYCAQIXgAAKCRAWiRlCzey/mTbAAJsEIOjmXPBxqyrpS0QF lrJtDENffQCgmWgC/5AezMfJwtu+s001BNw7oRmIRgQQEQIABgUCOs493QAKCRDC pSwr0i8VsWB7AKCZe9euDml2vgJAaaPt34ptUl4UHACg4SZK21iSMmLW+cI6L8iw gGvDcPe0Kk1pY2hhZWwgSGVmZm5lciA8bWhlZmZuZXJAbm92YWNveG1haWwuY29t PohXBBMRAgAXBQI7RpsRBQsHCgMEAxUDAgMWAgECF4AACgkQFokZQs3sv5m0ogCf RV9e/JXy1ixgKCVoqzaIQ3j2MBQAoJwtV25V4gpucQxysqRrWTB65Ja+uQENBDp6 LqIQBACFcO+vvM6/ItdzUhX3vIihiKENou4FchXwc/u7uchsLs589+PwaYWXqtPH E9YSjXYo9y87Sl6ciOagBL6rJZ8oNKc/ylRmx42iSTdAdEKCgK355kmXiWgaAm/W CT5YIETaY+D9TrBDD+c+ofB8vhekxAlr30FAnX6VmUJFi5xfrwADBwP+LiUdpsML kdJj0Y8PmbB3Gxle3X9w+6hBkoP8Z0q5dzG3Y3mGYpgLd4Ytf1KEKUm68BDJgcvf 41B2Y6Ptp7mSRAufbymIRihNKH78fleaziWsux2CYJGZvsJzuYrlzgwuTzcLQKL6 MfRXZHPyt+1SwQeV6pIE0DBZLHg9a0Ak5sqIRgQYEQIABgUCOnouogAKCRAWiRlC zey/mfYtAKCVze8DK+0HP1fTQyDajO7o9RTIVACeIwhXBEbRN8cH0BsG/8Qn5sZo 2Q8= =/joR -----END PGP PUBLIC KEY BLOCK-----
<mheinen@FreeBSD.org>
pub 1024D/116C5C85 2002-06-17 Martin Heinen <mheinen@freebsd.org> Key fingerprint = C898 3FCD EEA0 17ED BEA9 564D E5A6 AFF2 116C 5C85 uid Martin Heinen <martin@sumuk.de> sub 1024g/EA67506B 2002-06-17
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD0NjbIRBACZTF4rK66+y43uXsV8CHSefx5lRHaLPFMNga+sUBRIFcwu9WbS KSP/r60Gf/mNK4EUX3/+3gVljrgpAbQL9X9MV/SO50aZM8JMrUkUwjuzzzFKplT7 bdB2zWhexWemFsE0F1G5NpxkqMg/E0aiZb5P9MVJyGLlF1hCwhWsNG0OewCgzQ/b yAEMk03PPk3DOaM4d/Vdf38D/j4O+TJPSjMf58wRGkrT+BmLCvFvg1OsUOMgyQPC Y07yO6WmSiZV5ynqb4bS5m3jfQmG1I2wK+dIf8SHyaVgqZiUpfqrsFV2qwfZXcod C8a8b/kmEbdMk1j+jZ8qxSScrKCHKqdEs1UihCt/F1kVVd8gqYbWouICxF4GoU4Z ANmHA/4xVNIInKVghFk9lMaK9lDgQs02laaTWLWzcSfe28ADds3Jdur0Ox06tgeU zdktWQvRYpIjqiQCCFLN18l6Lc5qyTg6fnx2yWpWJMb/xumUz7A79X0TBN8WG71n zfJLHtn7fCjsi5009s7Ahu//Q7pGN8FvkrZHZ3xNw+3pAaoawrQfTWFydGluIEhl aW5lbiA8bWFydGluQHN1bXVrLmRlPohZBBMRAgAZBQI9DY2yBAsHAwIDFQIDAxYC AQIeAQIXgAAKCRDlpq/yEWxchZjRAJ4s0v1VXJmkm7kj3kMM0Z8xMNoJaACgkcMu T1ID/2v+A1X7+suOzrWMr5aIRgQTEQIABgUCPZGohAAKCRCteU9X9uLnUzW3AJ9T 0Hzs6ZZq3HAYuSVkLReaZEhyGQCfb7goCt5RLbxx+3AMyyX5uh1boQmIRgQTEQIA BgUCPZGlrAAKCRD5Ay7lt7i0eYdWAKDEeKMbkRTSZKsKelQwiD+T3me3tQCfVMLi 9mkjolOAXpAOVX3Igy5QHUS0I01hcnRpbiBIZWluZW4gPG1oZWluZW5AZnJlZWJz ZC5vcmc+iFwEExECABwFAj/Q6/UCGwMECwcDAgMVAgMDFgIBAh4BAheAAAoJEOWm r/IRbFyFjSMAniK+uu6ts+tLchT7+npgPJ0wmyCXAKCmCmXrSUTnPG5DwiVD66h6 aL2GHbkBDQQ9DY20EAQAh4G77oKy6pQB1+dhbbLsfb3UeRWv7i/w21Y1tSriZ5gm HhofJRuczvrhI9V23wRVOKs417TGJzytDIfp/huycYMigAQXikmFBJSqIC2ktJEi 0DGhhne4XBdJENiHV8rb3/mk+Ffes/88DmoU45fpAwY1YN1jH8WO5mEq2aKCjHcA AwUD/jBsaAoUeNO00hwuZuWYNM4nvX57nptObVzP54/TfKs4GmdWzcfI2JB+5eFp rjtNCK+tosTQd73VzMWKk0fwiIew+GsB+g/ibK/WJW0lS6fktW2nPG2mGRblLtf4 8W4ZmtZUqFTBSbmZOcsxQ/LahRosX82NbQyFPwuFMEBqYho5iEYEGBECAAYFAj0N jbQACgkQ5aav8hFsXIU0ogCeLnzxBftyPv5iS52Ear+q/mPZL7oAniB0B6mFArQV gtLJNL6KejWqSh3V =Z84i -----END PGP PUBLIC KEY BLOCK-----
<niels@FreeBSD.org>
pub 1024D/5FE39B80 2004-12-06 Niels Heinen <niels.heinen@ubizen.com> Key fingerprint = 75D8 4100 CF5B 3280 543F 930C 613E 71AA 5FE3 9B80 uid Niels Heinen <niels@defaced.be> uid Niels Heinen <niels@heinen.ws> uid Niels Heinen <niels@FreeBSD.org> sub 2048g/057F4DA7 2004-12-06
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 9RkYrA9581ilMd2RCkU= =x4MH -----END PGP PUBLIC KEY BLOCK-----
<jh@FreeBSD.org>
pub 1024D/53CCB781 2009-10-01 [expires: 2014-09-30] Key fingerprint = 3AED A2B6 B63D D771 1AFD 25FA DFDF 5B89 53CC B781 uid Jaakko Heinonen (FreeBSD) <jh@FreeBSD.org> sub 4096g/BB97397E 2009-10-01 [expires: 2014-09-30]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 T5KpyVoV09QzVQ== =YKVk -----END PGP PUBLIC KEY BLOCK-----
<jgh@FreeBSD.org>
pub 2048R/4150D3DC 2011-12-18 [expires: 2021-12-15] Key fingerprint = 8E0D C457 9A0F C91C 23F3 0454 2059 9A63 4150 D3DC uid Jason Helfman <jgh@FreeBSD.org> sub 2048R/695B1B92 2011-12-18 [expires: 2021-12-15]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBE7uUe0BCAC2rJ274YwwpqkG1SvbLlcdJPQqctt3ELAv/3Jhw7LJ1RjMbZs2 3QNs4oz/Qb0Ge2kj6/NhJ/VpBqDcv0av9mwbZvN4NR+eA78Nj8tKgRYB67Daf8EA NtmJJ1sfzMhEceRWjiDK71XBSGSzaUqGG3x2oJBpoWuaRAUEDl7TvjZAOUTw1/1v dXZvO5+cFIlBAhbsuiKSQ5IiWzlv9toqO6biicQak8e27pM8XCfj5Vx/xs3OtSbf lX6QZCIVW5lBgRihDjfR695w1fBe5nM+9GwifIhIBXA2sjAvsb1j+4te9PIpNo5q u/vn/y5Bh0S201zg8gbdAic/XJ+OpN5CptJdABEBAAG0H0phc29uIEhlbGZtYW4g PGpnaEBGcmVlQlNELm9yZz6JAT4EEwECACgFAk7uUe0CGwMFCRLMAwAGCwkIBwMC BhUIAgkKCwQWAgMBAh4BAheAAAoJECBZmmNBUNPcKtEIALSkfF5Sem7A9X6f2jN3 u0/sshrmMzM2irUiFvgbXp4F5vbZk58Nb3O35ds3rSZ9AZ1kbrAWvXnbaMH1pyzo bnx7HNkibErZ4UmIG8i8b9Vrtllho2iIVaHJlBEAaq3OlCXzkvKeQbR1n83V4jB1 d+zeMRTzO1ItnxlqZajxDpiHAgopP7covZU456YvnrmI6Xf3ZP0t7gJCotOdYcTO EY97pEJQKT8CuA/j/rkSDW8GfUBb+T65L/h2zysQn8pMQfrLO2+wUwYUc0QyGZSs 9mdnmZs4XQmmQQUIwyzftzEMjM9KJKmJ6qhZ+Apm8UZ8snKy9jH8AWS2O+SaGrgP Ryq5AQ0ETu5R7QEIAKpA5Or5loBPXoTa2UWpSI22MHqHlKz8wHDjyWe2yyK13hjs VSi31Dx0KZ0K0PMD19OUXzsAb54UQSZZtbKjXdJeiJpzyzh9eVEBy11tl6AC0H4o 2qWLZFUOMbxaGDvfKWf6xkzIdjiPk+mBUx6AEsDUHX0alACmBgiulMzof9btGgQc oYcR63kscoNz2tx7M1pJ6Za50Eaal6DZCYkmp4yHv2xCkZ1cnTH94mN5YwmlWotS ysMUy+05qTrL5ZXn+Az1Bewo62n1pkOHWIgiogcTUpibAflZsgI9iFEQbJns3U+C kyQh9xiXs6I2CHTFTngG6S2a1NcFGplSxEBVuG8AEQEAAYkBJQQYAQIADwUCTu5R 7QIbDAUJEswDAAAKCRAgWZpjQVDT3POnB/0XZUzuA8ytqhnzkxY25Kr/Oc8wczM3 XYs4DpL1TnghePjkjdEKhbC+1qDyg1kSQmf7L/uGV7n1pLFLBLwv72lYnaAMmbOk Xidc1LhB4YMrxc6tyFfER+ypw26FqfuvNk3QAGdqWvFQqq8dSyvA8KKDaP3ehKha /pmEJOC80jqIp5Ofa7J2QMPJ/kfegsjAMbQEqgcBmt8Rb7xM7NrFkPDcWRoB75Ca xoRV2eiDxMmNoTPDnjGyycndaaOgoAhXwpoAnmxIVVHs26qOxOyoq9ZYhVgx9o/S dAHXDxMry5RLmXQj4uDPTrUvGpxcEbOzVPBWrmoqDJe5Ll0rwaQ/DXZG =hr4n -----END PGP PUBLIC KEY BLOCK-----
<ghelmer@FreeBSD.org>
pub 2048R/8F1CEBC4 2012-05-22 Key fingerprint = 483E 9E6C C644 2520 C9FE 4E87 9989 CCAF 8F1C EBC4 uid Guy Helmer <guy.helmer@palisadesystems.com> uid Guy Helmer <guy.helmer@gmail.com> uid Guy Helmer <ghelmer@freebsd.org> sub 2048R/2073E3F8 2012-05-22 pub 1024R/35F4ED2D 1997-01-26 Guy G. Helmer <ghelmer@freebsd.org> Key fingerprint = A2 59 4B 92 02 5B 9E B1 B9 4E 2E 03 29 D5 DC 3A uid Guy G. Helmer <ghelmer@cs.iastate.edu> uid Guy G. Helmer <ghelmer@palisadesys.com>
-----BEGIN PGP PUBLIC KEY BLOCK----- Comment: GPGTools - http://gpgtools.org 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 LHJVsBw1wu7qPsG6jx0IC/eMXZKIPSk/c+s= =p7q+ -----END PGP PUBLIC KEY BLOCK-----
<mux@FreeBSD.org>
pub 1024D/881D4806 2003-01-09 Maxime Henrion <mux@FreeBSD.org> Key fingerprint = 81F1 BE2D 12F1 184A 77E4 ACD0 5563 7614 881D 4806 sub 2048g/D0B510C0 2003-01-09
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.1 (FreeBSD) mQGiBD4dlrYRBADhXves+DDbhv8dD1LyC7e+RIASp8rEN0mJDVarhEy45KxRZcD2 hE9dLXZU/5hcdK7yfatneg5xGFiedFJ+u/HcsMkxeb60+RUcF6Ec5L8PJmCwIQl3 3xP7UmC203YufvyidQSayOk4LDyg5WVGEXiN5KuShJC+feAwvtAao5eHnwCg5CmE y6rO8Bh/K2MQxP8CXCoLG80EAINd8twMsRIIqAxtVWeG0yudtgYdvhpbGrNKoq2b cxmfunLAQmHim1jL5run1St3ZACyuP4brckPiBAOxVoRcIMOGPk04Lw3blKQ7u02 6aOKKlGvW2pF5/Wh6v/q7gzAucn1HJYcGK7Xc8IvfdIZJl/tTeCo0/smxND4EWhU C94zA/0bvNhgntEwLF8x6UJnZXfQ8/LGl/NkSTyTMA1QqRrrik1oN4mYOAHE05Y4 Oija6MSgD8YDRcrxxr8Dwh4pqS/+FlEsV5y4A4OoYbPW5L6FAbEpKO86jbE3FK20 lX9Li5+woBWaTuLRcU2Tk69WLeOTdOrs+f50S1xWB4DJKBjmu7QgTWF4aW1lIEhl bnJpb24gPG11eEBGcmVlQlNELm9yZz6IWQQTEQIAGQUCPh2WtgQLBwMCAxUCAwMW AgECHgECF4AACgkQVWN2FIgdSAaZtQCcDxSj1KNFQXWXPl+U27Sl2/IbKEgAoNDq Yn86zUh4NPJZJb3P174CFRK0uQINBD4dlxYQCADaMWMhYNWemjrdioJoZU3vYkup IcQg422OZoxWYcUz6zKVHZuPdXSAFO+Edrt8QwvYrjhSiOSF9NNnFgNGMBGmqOg9 Kfk5rIKnENNQP8H8CZtzlDjJXVoMAeTfaeV9+ztHwWKk6XagjLApl9Fx42Quu4Po JdvJNHhq5Bf299jecRsWmSo7DtpNnzGC2HFWRkGdkkNmpK7hFe9m3YsFuP3nCFps RXCFMx9t2Bneh1eM+NqogjON+vyZzOUB32WY+x9Kz6Xf29auU1PSNYz+1LC7JAYk f4CrFA6wexQHKe/nXwlik3/JeFSPAsp/VsmvaHOenZTOfmtBT4ruOwqn8DGzAAMF B/4tHAo7/sAMgvkz0qHAxV1DjOjB5AQSs4phksYWYN1uaJq2//oD/jjifmmkhAq0 JLEeKDquvuNot9dtJ/75DF/XNa0Upt4Hq509Wm4o5NBN/CxRzMn6oU+K86S6RF1x JidNNI+CsTfdkNnCn0x6OjRsG0j+CUbwRrs4CJ/7ZWkuMCclLBKoI+rAwd5YM4eI noSrSZ4/2Uct7CyVm2aGIh5ofR75L7k92qZ/D5hN0wwKrL42bO8gJqPGPgsCtr9m OcT2DtOxkS9ir2QRyD7SelKM4pmSbxvk8S/IzrNS7dvKiO0xQXsvf+sG9rZOJ2vF i3in0uB9SeXAzsqNCqtEkSbeiEYEGBECAAYFAj4dlxYACgkQVWN2FIgdSAadQACg z3dGbsy32PBhRn/t1lXp1120VrAAn04hxsFX0HEKt6sqAcpIuzdTVrEM =8gWX -----END PGP PUBLIC KEY BLOCK-----
<wen@FreeBSD.org>
pub 2048R/A03F07DA 2012-12-10 Key fingerprint = 0258 F2C7 C123 E627 9E14 B4BA 270F 30AA A03F 07DA uid Wen Heping (wen) <wen@FreeBSD.org> sub 2048R/CFC8D6A9 2012-12-10
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFDFsuEBCACSJ//UOaDvnQbfeQIiQsRcg1fc2GlcyKnJxTv8H4N0NVw4c579 D/zEPhRIQTcwrEL677xdeNWtxvYkQeePdrvu4OhXW6IfrZp5H8tedMNqh34MxykE J3EC7HmH8J85ondMFSsg8OtBolpDB7KLMJBuIbQ0GDXniijcp9muVVbiRCZ7vhqC 1J8BJKZDGALD7GLttTfkK56xvp2H69aodYBeNsJcUxAj09gYW5rBLId8NgyPwQhR vR7C+VQgz1vlVT/YTvzMX6ZigbaH2nCJTgC1/LK1HJT9hkJIeUNskZwcAOoBA2L1 DXhgTdkxFKVOb8F0d6wvYSdeVfAWZc8xzWVdABEBAAG0IldlbiBIZXBpbmcgKHdl bikgPHdlbkBGcmVlQlNELm9yZz6JATgEEwECACIFAlDFsuECGwMGCwkIBwMCBhUI AgkKCwQWAgMBAh4BAheAAAoJECcPMKqgPwfafzkH+wWio4GRrgvK8K5DoIkGgmk4 bVdXd6g9T+sVGw7F5HTkCbiW83BAmTb49a8uDI4qRSDIEPLOSBbbSlzYcBqHZ9gf 1/G2JaL6UzlMhdoUZUS3biIoGKFDGXrKBmFoSvMN3MKNnAajAP1rTyzk2bC5EhNV CsGL+KOC/JXBfHZ/wxXTgk++Wvm8bcZDXmYMptWsRaHMZKbkdakX9dmPtHmv1g7N 3AIPSLrrjYDdWfejK8KvPKQuHnq0A9tLS4NOnSY8Ls1Wg3WfE1qvYZ2oEziVrMEu GIAxDQfFAN31GR81lDFW9FybAPqeuakD/cUuuyJ+15hUYb4fcmk7RHbxQrTcfHm5 AQ0EUMWy4QEIANmhcffZZcinDeNMTFba+m4hSV28diXeGyoXfeRWkdk3+fOGywNl +/HfYrXXSoDcfkmooUljMvGCj+vupP4obXeOY4MrcnzUYnUWjpfY6mQXejXGgAQy x2lcNF6W/g8jl80nnz+hfTEncg0xzNwFDE9ZzR7+G5x6uub0Xl30Rsc+3z6eabFS AQ5fFw1lEvt6Y8CGXCx86CPB6SQIJ0FddoHPL2LElSiuenaS7AKnnau9XqxwouD6 MdFqDQJ601lZBhEWmIlWRBj9YAEwwgnvK6/OFCHcIRjFl6beQVFO2xyk35SZOq4I HL7GPs0+bg5D+f7a3ugzqt876LlMVuUQmEkAEQEAAYkBHwQYAQIACQUCUMWy4QIb DAAKCRAnDzCqoD8H2v+UB/9mpvePA5lZrFne+s/PyTZu0rI7+Mj67Yj3DywxVf3j pqzjeRlZgVoZ0HbVry+2wUk1IN2eWMJy1PECTAyK5tybdtl8ckNvGhrMi9ilF6gk WIn9wXRiduuCZ0hj+STtlsdGBCThz9JqMVr093uqHqe+kB6TSu6/uVMZ3LhyMEeQ oUkoDMlG3wMMKpD/mzLeJTTycXSZ9VzDmQMOOZAC7UypLri9ykjRAVc8J5c+1RA+ +dsNw0DTEtGxHsObfdTlrCP0vohTxOdGjWuXHKYTttrM5koc7M2eM4WSEXkpIKb7 g7S0ogl+qD7RokD6CChkH7fnFesT2ksU8KvE/0a+/8Un =7kGj -----END PGP PUBLIC KEY BLOCK-----
<dhn@FreeBSD.org>
pub 4096R/F7CDCAA1 2012-08-26 Key fingerprint = 0587 E730 68A6 2646 A991 505D CD9B 3A87 F7CD CAA1 uid Dennis 'dhn' Herrmann (Everybody wants to go to heaven, but nobody wants to die) <dhn@FreeBSD.org> sub 4096R/0A6D554F 2012-08-26
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 0JTFuwbvNUiIKGhuHbBvP3I= =EizD -----END PGP PUBLIC KEY BLOCK-----
<jhibbits@FreeBSD.org>
pub 2048R/37BE2DB9 2011-12-01 Key fingerprint = 8A12 7064 4F3D 339A 191D AD52 30C7 858E 37BE 2DB9 uid Justin Hibbits <chmeeedalf@gmail.com> uid Justin Hibbits <jhibbits@freebsd.org> uid Justin Hibbits <jrh29@alumni.cwru.edu> sub 2048R/A8DA156F 2011-12-01
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 XLo7QbjbR21i/BQSm+3OeFiS0o/BNee3bw== =bC0X -----END PGP PUBLIC KEY BLOCK-----
<pho@FreeBSD.org>
pub 1024D/CF244E81 2008-11-17 Key fingerprint = BE9B 32D8 89F1 F285 00E4 E4C5 EF3F B4B5 CF24 4E81 uid Peter Holm <pho@FreeBSD.org> sub 2048g/E20A409F 2008-11-17
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEkh8ugRBAC6djNybj/k+sW8z4TZeC9M1PuSSuJlmCxF/h35rN1bJMHiaVaz umG5AjNwYtKilXO+bpj3OUQDz86j/vMpETy44lOaxr5f65lkP/tXATjVpSkxuimp vUHi6wRaCHLbyMGHRfuOX1E1yrYm6E3UvjrNnl8bhOJ9paUkk3El+gKm/wCgtIS4 07Fb+Mft+7a9Ti8cUKP4rSEEALh/nGAsKInUmw3ybZ4c68yVjOUOhbDgAjU8zwb7 vVzVpCythAEailx0l5UDzVSD8oszLiSDFLf93rfS7AyWx2/C/6kayLH7nYnmHmI6 Evv/uZ/o4Tw8l2BmqEMwMIBRi37et9tTJNEKMAAUaah81KRcE9CPp91f3oKutOAq BkG6A/9e2II1FvJRLzeGRB4FuNm4yqnRvA+LCPE24qEWGoVu55KvSsrb/kQEUxHh 46K6d1UCWYIlAPhV/CGstv2CfW4zDXOBlDg8kdQz9VFlzyz8sSs6ZP6b7kUzrSRp tq6mgiLKaTFYtm/BaUgYXpSI2uTlgujhC2v40pzeKN65Ph2H8bQcUGV0ZXIgSG9s bSA8cGhvQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJJIfLoAhsDBgsJCAcDAgQVAggD BBYCAwECHgECF4AACgkQ7z+0tc8kToFTVgCfU8q5hy5tJ9ZEs9ScXPuIZ/vA4XkA njuLqq+giT5SvrrckuA8I1iFgsezuQINBEkh8ugQCADzK4XaJN07zeKtivb4sass fejhXyMJ5kwNqK+DRqMcHkbh6PCKpoOo7xjnk7e1MdTp2UeGifzTUEXz9iPdLFoW 0O2iCppIgUEVfeShzOqEtiP0qpdDmc9RHbA17R8V8jaNWxmJtbI3Oid/7ubVPBfv KkPlsyut4A0yXBSxhqpLnaDpDVfMuUFbdMK+aYLABZMQaj6SJOf8bsHrBL6/j05T A0ZJkwPrV+ATbCXLUCAQ8q9rza292OFdLq5/iOQQa8mXhR+egd+NP1GLDEze/kx7 5gNQJLnfS5GUBJMSIzLIC5Nn+WPzdmK5tMT/NLhzRbtqmWoAfQcW/kcEAUlNbGJP AAMFCADe1t3CP+Utgy0QAmqkipgKwvs32CsRgye2ocxtrN8GRaunFSutyESBNCHP VH/jh2rTZ6KjVvgBcruaT8B83YtYgOnFpe+4FZr7iwlSVL1CcEwWRDD+oujebAUL MaLTcToWbggvbUbOtu+VNKooDYFbFoZvUs9I/49RRdcLfC7dxOfl0+51WTUTB4g+ d/rxtExYkvh19QEWsj6lyR6icwRhtrn2S+0oZ0JQ/mjCoqdrGNiiGPXzKrUnpSK1 b1hrtZ3E5BoWJuXu4Y4hHHzoxGW3ggVeTp/+X2K0DfKu0itGJML98oe1hXbbDaht O+s3+Nrro2j0Hx3JiQB1wB9merWsiEkEGBECAAkFAkkh8ugCGwwACgkQ7z+0tc8k ToElPACgjLamE6WKd9zLyyoyZcV2H55qlZAAnitC7OHmghbHiw+LuQZ5Je7M6sik =KODn -----END PGP PUBLIC KEY BLOCK-----
<mich@FreeBSD.org>
pub 1024D/0F55F6BE 2001-08-07 Michael L. Hostbaek <mich@freebsdcluster.org> Key fingerprint = 4D62 9396 B19F 38D3 5C99 1663 7B0A 5212 0F55 F6BE uid Michael L. Hostbaek <mich@freebsdcluster.dk> uid Michael L. Hostbaek <mich@icommerce-france.com> uid Micahel L. Hostbaek <mich@freebsd.dk> uid Michael L. Hostbaek <mich@the-lab.org> uid Michael L. Hostbaek <mich@freebsd.org> sub 1024g/8BE4E30F 2001-08-07
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 nQO5zgCfXsb8wtA8I0ngWwOQxrnRRE7+Smw= =j3Mm -----END PGP PUBLIC KEY BLOCK-----
<sunpoet@FreeBSD.org>
pub 4096R/CC57E36B 2010-09-21 Key fingerprint = 8AD8 68F2 7D2B 0A10 7E9B 8CC0 DC44 247E CC57 E36B uid Po-Chuan Hsieh (FreeBSD) <sunpoet@FreeBSD.org> uid Po-Chuan Hsieh (sunpoet) <sunpoet@sunpoet.net> sub 4096R/ADE9E203 2010-09-21
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 KQ== =zTaI -----END PGP PUBLIC KEY BLOCK-----
<lwhsu@FreeBSD.org>
pub 1024D/2897B228 2005-01-16 Key fingerprint = B6F7 170A 6DC6 5D1A BD4B D86A 416B 0E39 2897 B228 uid Li-wen Hsu <lwhsu@lwhsu.org> uid Li-wen Hsu <lwhsu@lwhsu.ckefgisc.org> uid Li-wen Hsu <lwhsu@lwhsu.csie.net> uid Li-wen Hsu <lwhsu@ckefgisc.org> uid Li-wen Hsu <lwhsu@csie.nctu.edu.tw> uid Li-wen Hsu <lwhsu@ccca.nctu.edu.tw> uid Li-wen Hsu <lwhsu@iis.sinica.edu.tw> uid Li-wen Hsu <lwhsu@cs.nctu.edu.tw> uid Li-Wen Hsu <lwhsu@FreeBSD.org> sub 2048g/16F82238 2005-01-16
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 MTZHdxZQQYQ= =uV7d -----END PGP PUBLIC KEY BLOCK-----
<foxfair@FreeBSD.org>
pub 1024D/4E9BCA59 2003-09-01 Foxfair Hu <foxfair@FreeBSD.org> Key fingerprint = 280C A846 CA1B CAC9 DDCF F4CB D553 4BD5 4E9B CA59 uid Foxfair Hu <foxfair@drago.fomokka.net> uid Howard Hu <howardhu@yahoo-inc.com> sub 1024g/3356D8C1 2003-09-01
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD9TDBwRBACs0PcLGuginQVidy1QScHuKS9G7gd8smYI2FcSsk/AkBhqIkWv hieu+iXlpxyZYCDDPKPhieDLkTHc9hYOGG7oTJhBMXUrUqBIk+sqeeUAl/eh0grX wUU2khj8EkYC1f6p9AKu25zoyXHxjnKulMhrZRIItg7jVJLaFQn2A9KCkwCgyVeF jCegTvZWikBuoXmDI/K3OuUD/19Za3DHV+H0dmfAG7JdVwTW7mJ3nCWJFvlpTSSU 9Di4VCVj8kUGmo/kRgpZ6gwlCaPmwh/wWiT/vHVQqdd+EH/k/ITs+zWrPOnWCxLY zV0BEKtW4kdaP5H9ttNh3Wj1GRpyxh/FrMP7zJfdgze2WoRY57j+H9Kuw2s/42RU zYDAA/9wIriNXAj6pFB+J2sCqYXIMNDNDQh6lYFNFgTS/WPYJoA8PWY62oFc0V6n ES8GOXjyEya428vedVy/G9kj7cB/IiTTy8Hj7JjhUk/rSIPXMMtNyvM6vQ++f1IV 1qSzR9sijpmpk/M2RusUQwBP131PnCzSCmAZB8gvcNSlbA9gnrQmRm94ZmFpciBI dSA8Zm94ZmFpckBkcmFnby5mb21va2thLm5ldD6IXgQTEQIAHgIbAwYLCQgHAwID FQIDAxYCAQIeAQIXgAUCQh1SIQAKCRDVU0vVTpvKWcmhAJ996hkp7RKzCsO1R4wh 81QBqxZ87QCdH2JXwcclPFAF/XKpS5kbQbKdW8a0IEZveGZhaXIgSHUgPGZveGZh aXJARnJlZUJTRC5vcmc+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgECF4AF AkIdUuwCGQEACgkQ1VNL1U6bylmL+gCgle9BEVLP/FKDTEsz6pYH/hdVMzgAn2kg KyplWAdJKjQ4AHlKOzi1DKj0tCJIb3dhcmQgSHUgPGhvd2FyZGh1QHlhaG9vLWlu Yy5jb20+iF4EExECAB4CGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAkIdUiUACgkQ 1VNL1U6bylmacACglEvdvs5wMSB3EEP4qp46uKdXlt8Anivwqzf9dhjw07omH35k Ll7D5wGouQENBD9TDB8QBAD+sEewy1REDPQWycqdZVWzxmiS1X+TzSAgfcc7/QKv AZEsGADvhHcvaACTBuYRVr8DyzUxFUxeNByWSkLe7N5Hmaqauw681zsI+2osfXbW Jkp3JUybeFSIN5pacLNP5+DEAOzzphCF8ALv9H/MB8J9dRhZwDkY7SKt/cSNh4Cz xwADBQP/aD4exhzoF1iXR4879xEAAsRy3CCaoiPNeE4Aj9mWmjqEMzWYOjDeZ2zF W8Jrn2i+tOVGFpg2FKwtuqU8JRs/lqbedYUlM3UQl2pqGSV2tAziuLKKkzPnKWo6 79hIhrjQCEPk1MqipoL6l8qZb8vbBpoCee5NF772jR85ai0ZdGmISQQYEQIACQIb DAUCP3rhagAKCRDVU0vVTpvKWU/OAKCE4tEk79yRFtmSNNa+ddafxcuyagCeI9MA byQOCAi708pPSIquH3oiM8o= =P50z -----END PGP PUBLIC KEY BLOCK-----
<chinsan@FreeBSD.org>
pub 1024D/350EECFA 2006-10-04 Key fingerprint = 1C4D 0C9E 0E68 DB74 0688 CE43 D2A5 3F82 350E ECFA uid Chin-San Huang (lab) <chinsan@chinsan2.twbbs.org> uid Chin-San Huang (FreeBSD committer) <chinsan@FreeBSD.org> uid Chin-San Huang (Gmail) <chinsan.tw@gmail.com> sub 2048g/35F75A30 2006-10-04
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEUjcNoRBACNcrOsDaRrFQMnMjnNViPfgBakMnwy28P/tfZvg+vx/5iRt73p 5RrBE3dJZyAIOg+3st7sgtVuqeymh8JmoRlVFqLKEpCM1NNqq6TNHhlLBAuIYtTL hqN2knPM1m/IZp1Y4a5Z1OVnM6/fqItkxql4SX+GJ5815Lvh+1lokr8eMwCg9w2Q HgsgytJkYiFGJpkw1YOfwFUD/2oALyshDDCQIshX2xHPk+zLTMQva7uqDy8AUJLO o0DfaofDhkGjZnLpuFrc16eyfaYZw+mO149WTMpWrzCi+SmCXje6MSywINHneql+ X6OzJCazYCGUfkSbwtAH89gIRKJiQKQfi4xhDrn8Iu+x3YtOKKxnrEVGX2S8fKka 6YJ9A/99q0NX+543o6/kjfOz6Q44xzoyalBXT36THsFm239AaOejufu+HeyTZs02 rvrF7IGgga1eUeQwx9gvRNFX65CkUc3AOTVfK2Tn36QJcGfm6r3ZYFWKjAMJ3haf aElE7Bs2zGergI0KNOid8rjC6osA3NVYSGI4mKIuQcBoxUNf6bQ4Q2hpbi1TYW4g SHVhbmcgKEZyZWVCU0QgY29tbWl0dGVyKSA8Y2hpbnNhbkBGcmVlQlNELm9yZz6I YAQTEQIAIAUCRSNw2gIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENKlP4I1 Duz6zsMAn1oP0sY1yRMo8jr7iCCdGtw2FuISAJ9crrnri2tcPS3281HX/4xk66dq c7QtQ2hpbi1TYW4gSHVhbmcgKEdtYWlsKSA8Y2hpbnNhbi50d0BnbWFpbC5jb20+ iGAEExECACAFAkUjdFgCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDSpT+C NQ7s+pzxAJ98bMcpWM9Vd/YvB2tx2tK3zH89GQCgqOGeoJQvB+MWFM1oVbP5jmJS wDu0MUNoaW4tU2FuIEh1YW5nIChsYWIpIDxjaGluc2FuQGNoaW5zYW4yLnR3YmJz Lm9yZz6IYAQTEQIAIAUCRSN1FwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJ ENKlP4I1Duz6QX0AnRiAfY8Ngh14cBzYH193/LSIuebEAJ9wY9Gz9WQbwb7QlJEX cOmrejGiTbkCDQRFI3FNEAgAsPAXITBR7gx+9AyYwzvtIUjzo+viSfVHusyZccu8 82qzPKYF3J1QewFczrL6GbPCNqw2c/IZ0Sn8leGgVw5cwP+eUNtcbuQIa8Hpgl0Y Ns5WZlr94NXTdU8+mO8WXugzsumUnScnKFhrzEQQKYbbAIavBAzVAoj8Bu2UDaCB fCc4S6OwHgUTuLHDRA0b8YXe4Zc/VbblSIZFosga3vishPOCuj0YWjLjdkXHFZ+Y We4oDxnMT/yPBcp1/7wqEhTid1dgJvu9R2N9IFSxHTxoHiEsEFa9z619/imVPXGF rmcoJb5vG/NSH6cMHr5KP60H4ze0pwMKJ3had+YJSIJGBwADBQgAm9eGbCZ3RUin Kh/AJSsVfzW0snA4V1sv3ovSOekROs9YoUkalx8Ywt4fZkGHFWvYXLVb1KnmW3+O juhfrjsgmaizQhSMHT47C21XJSvAWuXXZrF6PaIiPAo6q56wjfSS62ycj7z1UlSS SDEusPgFG3LfYBuM2wjRYYXZ2plAcxhGt2oM5Mf4Tjom1Y1GHp4m9VOIa+0D0HZI +oNYlOteR6I2tWg90bXJcAd6VlSwYi25b/KRkzYyHlU84o11UJnBnG8HgaN6E92w QAQTtIUd6PxLWYBG0ni4vtD2ZwyGKAH26QJIUC4bLYdfoZ7V7/MbwI4JEliGjZCl INqt4mrYsohJBBgRAgAJBQJFI3FNAhsMAAoJENKlP4I1Duz6TJkAoNRkeWHFV+q1 WHzk4XJLFtL8cNyBAJ4u3Mfd7xo3Bx8pAs1vSTWooWb7Pg== =IROz -----END PGP PUBLIC KEY BLOCK-----
<davide@FreeBSD.org>
pub 2048R/4CB47484 2012-01-17 Key fingerprint = B5C9 77F5 1E67 D110 8D19 7587 EB95 EA82 4CB4 7484 uid Davide Italiano <davide@FreeBSD.org> sub 2048R/91F7443D 2012-01-17
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBE8WAbIBCADhylJPj/E3+cPj2CH/96OKzQ1sjdiyzgQVeLinmztCCk+McsEf qOwyc5iZfZC0MPJUr7y/3E71HKPC+rTMkOQBHsCL4UWcbJB+3AsA5Ii5WsZKFfQn 85q8kT9m99MFn8oqZWuzMFkU8zAOEB56+em0xrAI67SyrCPHVS1oWd4Rj45YSUKr em7JmyrYEcTRg7rMkPYJyuiWkDR3nAaJw2lScobg+JaHN757QZTtspS6x277Nx8c CU7pYauCI/CNdEPUcLAMBH561396IajWvTKirtL7jYZWw0FYpamof2sBCq672Uzb XJXufe4Urg4vKoR9giG7Y1kI49XCLmplwnWVABEBAAG0JERhdmlkZSBJdGFsaWFu byA8ZGF2aWRlQEZyZWVCU0Qub3JnPokBOAQTAQIAIgUCTxYBsgIbAwYLCQgHAwIG FQgCCQoLBBYCAwECHgECF4AACgkQ65Xqgky0dITCvwf/feerE+d+AGvbecD7lQyk d/LJs2bshZz+CnsCsbF/mArpbPMJTlgYCMZmEKKSR//nEo0cFyi0B6RR5QzQsouL uadHPuwxpuw/7ECdS9QhqEU2O7uoWdgh6kJSR37cbRmmmu0zNp0pMYv2TKrHabQz 432iuF8I8puOc9++sYLrlFBXfs80TTU7S2+qAfTRqgqAz5IdWZM7F4w+CbbJGfqj ePWoXCB7+6MhYby+5JXkpCEpdyGMRL8WZElpB2W91k3zBmkE5bZG2r3Z99hMc/dN +nJxI94zYN13HtD+Yoaej2/RJh9zmTWF/pUT58tb63EOLlrOfiiw6NJ6x8PVM9v7 JrkBDQRPFgGyAQgAvKmBYKFSJur0CiXeY6m3CW0JTS8mK1FYjKp+QckbnRomG2Vf olXjcjlTLkLcq46vff2uI8MDNviE5rGYWSJxwYjAbY3QJR36pbdI+ulYEJqnFNii jFWv9wvbddNc/L34Pa9o5P/NUf733r+V4gvyqb/Rh5dWQGH8IJCgnZZZYK8YnRiq UFnisiZ6gsIXk9rbxd4JHOiOxUop8xSxdeRHEkxe2FQvN8S+HzxrH8lucoIvH1Fp red8KUSjOLD1O9LFFSabJ6lA8ytAJ01KP+4svBk/J6bEMwmNXITVtmW+dyTSmS7z ynOMre7AG6s8OpdWX2lAKyLL4yosGLiOFjDW9QARAQABiQEfBBgBAgAJBQJPFgGy AhsMAAoJEOuV6oJMtHSEJhQIAI6NAWdB4IRBoDfEuo3myxdTn+hKtUDk8jgsmfV9 6yphv3BDwvQDIoAPjxMewp0UrIH0yEyIduPdZ6Gs9VcDfqWxyP1kGxt0GbKJmHzK glmLF5VZbuGKsZDhv0JtWbi17NOt7uiXY9sW9efqaDxgvNSXrXHtDPNzePuo2wLg LZcw5VlCg+JftFb7OA72Brcir1zj6EyMgtdo5P2Z2iW/MgWiaKb98hi8tnycIDiu tyawSXvl7k/AfQ5hHjwz4zKf+2bQ9cf8ou7wsJ6pOT35AKP9/CeIOslj6cqXE3dL MjKE+ZKsBG1d7NkQSQk9MEDk6PdAtigwAgwdYpPhX8Sl2es= =pP7Y -----END PGP PUBLIC KEY BLOCK-----
<jkh@FreeBSD.org>
pub 1024R/8E542D5D 1996-04-04 Jordan K. Hubbard <jkh@FreeBSD.org> Key fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPog/AwUQND7kZgis sbaj1yqUEQIhvACeJ58983s/0jjThuj6WeTP6hLZNHgAn0o2KINvhw+Oc8uQk5m2 aTiVgVQxiQEVAwUQNcJNdAyPjrKngh89AQHA7wgAg3QnT0BcF/zp0VRMUZwAysRC o4Xkgv4oaisCPO5jERGEp8NlXuMD6wJCrGRZ9xVwTbSRXJVirNkiSKj1rnNc/pPA DbjsmQ+3nhLU+YwNgc2VEhiVpeU2iOL7ircc/YN8epdFPbzn2timb98b+/qlaSiz m+g8pxnY4USn1b4CnzyirD7mvHhV61k0mrUSmaKzgg2Ppeo2qPzn4w44hgT5/jjm iEMzoH8zFrN3pwcUYYhH5rNWNnqUIMwuPOEHn4Wp+sMti4yOqQxNHnP0Mv6mxS8+ UKRhtDXU0Ra0SaIhaNRw0k0YLEbO/lteTRc+7cAPBs+QUTa6xbVxIzsBAWLC7IkA lQMFEDF8ldoff6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1 w9sbfo4PV+/HU8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfa T/LMztfPA6PQcsyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJ O1Bnj/paiD8DBRA0FhC0XatM0mFMec0RAgaSAJ4kHkYXQO/74W5m/7ZvQa3CPR8E /QCgpHafK/S6PWQsSOChmVjwrZDVP8qJAJUDBRAxe+Q9a1pnjYGyp3kBAV7XA/oC SL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddBuJNiW/gz nPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJutrewH6P R2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4hGBBARAgAGBQI1f/BdAAoJ ELwCvAMsr1lwqUEAnjOz1VWwJeI2QZMNEHO8RLURWHSYAKDqG+S3NzCeiKM3RRzc FubwdsfYLIhGBBARAgAGBQI5ZAxAAAoJEMN1Z4b84RmYUt4AoOtidEj2yIZubvvT kB+moQ1+ZscyAJ9dhz4GLNev7zNNfdAKi8JqoqfMlokAlQMFEDF75Qb1FVv7jlQt XQEBdn0D/0X2Auka6RU2R46NqrFB0kZNL5rGH8BuTRz+cqEATLGkCXknJDeJ9iTo EeE++VOL0utmhcYDyyT95Th5FNlXO8YQLgb7Gxq+UT/HOS7zznlBMs+mQK6dSlB6 7XDNoitRQTpmOHTmKYVsljJA4GBMWm6pawKuxSmX7aavwgYjEbmsiEYEEBECAAYF AjmtSQAACgkQLKRaTx+AVKjiTQCg9FfHlNeMts2GcXWplPQya7GEQtMAn0nrzupn fRNx6+Gi0Km+WSlUQkMF =ZyVN -----END PGP PUBLIC KEY BLOCK-----
<versus@FreeBSD.org>
pub 1024D/A01C218A 2008-10-28 Key fingerprint = A805 21DC 859F E941 D2EA 9986 2264 8E5D A01C 218A uid Konrad Jankowski <versus@freebsd.org> sub 2048g/56AE1959 2008-10-28
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEkHYgARBACdbmFESh/3csPP37dJBDTkAfWcUck6myVTVYu3dFgwDPA0iCs9 HolmEV9qZA6m/ljZYG6b9ycHe2M7Xq3Mopdvw7Sa3ab7b2PRLu1WbKUIS/HlOXNH p3Dg3/Zhf1raBKMg4F0x0pbQm9+friN44SlnLlQK5M2224X786/VTlVv/wCg3YFE CufrZUsIPZndUVGh+/seBbMD/2fhNQhreWxF9QFCMohC/pGSfg1sddpWMqh6R0bF aSXfJwYivDLcTp4JYPpZilScBFgSxsfLKboRBElj+k7cj2e8nK4xzfoX+xsGrRDm t8uPqISnw8bvRGS3bZNuTt3NqHpXeiL1aEEEEMk7tKuGwlwf/KmA4BYq+eWDM7Hz EWPLA/kBJn5jAO99l/h1yGzYiWwy4a5iQd2sZg+M60bC3s9xP8ZvCPhm4qGuis9/ dxzKxz7hPQ2CamU9DlpnoCeZQ8mttyqnipsnMVniI3A79xSjCP2dNkVWvimc5uWw e9ME6DAa2ldmN7fkj/b6ahvCiBZLVc2jv/fcmHcP8IzvhHLhT7QlS29ucmFkIEph bmtvd3NraSA8dmVyc3VzQGZyZWVic2Qub3JnPohgBBMRAgAgBQJJB2IAAhsDBgsJ CAcDAgQVAggDBBYCAwECHgECF4AACgkQImSOXaAcIYr8cwCgzjJgksYSmXwES8lI vri3HicZZUIAoKfdyp1VxyUvbm39iwIMsUBpMCTduQINBEkHYgAQCACT3lbgvRwF lzEkL7JnyMaHkw5Lh77Sl2cRu1+fouQeGxRw5CZFwcIUkZWJDgBLxFHJiAtjw5xz UnVDm1RWBLXdNn4/KvWOUx2ElPweL58q+j/45qfwISg7JyJckRAvACQ2bLT+2jlc iDInZiV9OAnwT3OhBb0a6dvMsbDcIk25QlcS/axVdCYp/ELN4jlgL3Vk0NoQfalo rtj/vALu5soRJgq5keyroDlCc2fDp3iISCBngx1xoFBaYaJHo7XSbXnCes3NhAEd DkY0QCBWQGyqW/ULGrIdgyGtszpxSlecPmaRlxpmTjAQT0mX+rGE8vBkgH/pDgqt icql1p3f9ofnAAMFB/9NCp6oARpDfPTG6upM+oUPwginu23w2ux7uecZuouL640w Yj4vssTGDhuP3QRQsDrlhXdHdkUvSuguXpG8EGf4GjflV/AvvXJDmOO3LB4TCQmw I+Umsc/4BCP6r/YowSyYmQENJ8VIf+Ps+WfoeGS6UzbEpZbAFfBMpNSQbzwDSa+6 kh+eAHOZiPUjtoao+eyrvqEK+rpydN3G2D3UOJVsbYbG/3R0zD1sBnNBaqAub4zr vMBB0Fuml/pBzhFl+2VrS420Bfy6d83uPriNmlXlTyrX/kSxYVMkVm+lfqrjhSO9 dj2t5lqpUSCRLO3Wbs/97zIi6Vn2fphH5iA1qI/fiEkEGBECAAkFAkkHYgACGwwA CgkQImSOXaAcIYoobwCeK8Jy/4hOkaFBHbi/WJ/SHaJGyNkAn35fpqrdHuOO2L6C Tuizqar0AwZZ =xCbj -----END PGP PUBLIC KEY BLOCK-----
<weongyo@FreeBSD.org>
pub 1024D/22354D7A 2007-12-28 Key fingerprint = 138E 7115 A86F AA40 B509 5883 B387 DCE9 2235 4D7A uid Weongyo Jeong <weongyo.jeong@gmail.com> uid Weongyo Jeong <weongyo@freebsd.org> sub 2048g/9AE6DAEE 2007-12-28
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEd0e+0RBACwYdXNeIplh+WEQ9ywP1wJyTpGe2rVvkOLlJNpTJpVX7JT508G KuYI2B+Rn/V+1+AicL9tsUAnWX/tDma3bYw0Ls68LvD/571k2GYG3CMTy5FSrrtp 3v3N75jHDsfulUzHL3LHsa/CA5qzuL819KIaUfTKY0A107vcI3m0v4emEwCg2BaW OyiO9pic/WnPi4tuFjLpeEcEAIzLSKzAiZZ7U8ESKAtonwYqdu0BIRFpp0kedXqD M9cTts8VjqjdMOm55xvI7h9EGjH+crFZBlZD0NWXD00NrrQdHifulSrv5l3Wtgn8 xilqUhiYUcPQu2DHSuVlShvNZO6/rYA8R45axAfQv8rFo8NV0oElH+bvGq1mwRKY ciJ0A/9lN68t6G3LKmaSfWz13IUJT0E2qy27NnSb4RuKE2TuqyIMFzXh5+jjnp3U zRDX6KrYLju5Ire9GGJEMsGs28B5r3HXUPADqVIS8i6dW/npZlyizU7MfoRDFiRe btMpnYx7d4qnpKMpEm1J15JF84YrNGvkE55z7+g5zG0ua9KZgLQjV2Vvbmd5byBK ZW9uZyA8d2Vvbmd5b0BmcmVlYnNkLm9yZz6IYAQTEQIAIAUCR3R77QIbAwYLCQgH AwIEFQIIAwQWAgMBAh4BAheAAAoJELOH3OkiNU16VAEAoKnaR60kp0PF+O70GH7y v4k26FJqAKCycX2eM5PzjVzbAKHq0yMRj7tkbbQnV2Vvbmd5byBKZW9uZyA8d2Vv bmd5by5qZW9uZ0BnbWFpbC5jb20+iGAEExECACAFAkd0fKQCGwMGCwkIBwMCBBUC CAMEFgIDAQIeAQIXgAAKCRCzh9zpIjVNenkDAKCGZSCJTG2dSCbEH3kLTpYdAnfM gwCfay7fmNNMrN31IhC2jddWylvSDlW5Ag0ER3R8ARAIALZoci+sXDkhF0ahtePy ZszOeKUg8MHIac5RID5CfjGsTsbfAv7eM7TBocAJOKBxhD/suqsdomMBMwoMKYdv R4tKCosDopYGwNFNtryXrOQctNKxIf31kc8UnqGfgRAwjABorBRJCQdBZEBm+93k lDl0azEWPFuwzZ+dA12dw0jF1/n7TAIkvaA7joFfNvZ8a2WAfJvoal0/nUqmJCmB ntaWEdZP5rOEUvVBn117W8D5B8YHp//TM7T3eT4M4Lp7wUQIiwT7fGgRWCIfIrGd GZSEykjB/keyIip2Hh//0Ft0Ot8D+4wYz9YhH/RRmfBDMBhW898B1rEewhc0wmjH txMAAwUH/iB1/HLYV9ckHT6i/UDl8lEsw5CMxftnEI6wY2i9MWqTSTiuoNE+PQAA kicGwxrxxtvLccdFE4WOOQsh9oyzbOeWWBrtxzloRBzaxC9dx+tQaOzzJAUjaEaV wneSg2x62naLiztaQ9U66g81BwSyT8NF7uYjsCyvPsrHwDELNcPdDXQ2q0GKj0I5 tSgqMOPwohYRRS3hYfoPnYZOshdwYErtMCola0hZn7LXJopRByQyT/x2N6WW0zGY YxJemF80JqLrf9RtZVSsTeqT7Sd0+kcgPq3wcoqDXKTEQ+K4yjcE7c3hqhowQU72 2S6S4JjYQhKvdJykZRuvynQGeuT8H8KISQQYEQIACQUCR3R8AQIbDAAKCRCzh9zp IjVNepJjAKCIgdGxVdwuToMZ7z1n2mJEulHr8wCfdimx3iKjNLlAE154wBx3v9Rr trI= =5yOU -----END PGP PUBLIC KEY BLOCK-----
<peterj@FreeBSD.org>
pub 1024D/F00FB887 2005-10-20 Key fingerprint = 0BF7 7A72 5894 EBE6 4F4D 7EEE FE8A 47BF F00F B887 uid Peter Jeremy <peterjeremy@acm.org> uid [jpeg image of size 4413] uid Peter Jeremy <peter.jeremy@auug.org.au> uid Peter Jeremy <peterjeremy@optusnet.com.au> uid Peter Jeremy (preferred) <peter@rulingia.com> uid Peter Jeremy <peterj@freebsd.org> sub 2048g/7E0B423B 2005-10-20
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 alR4ImRv95f8vGskvAowF8gSo6OO3nSVzskQ+28EvsccjlzCBJRap0hKfhYpYjqW 04BGUpfRjSiFnoV4s1re2WSA9sxI6q5fUtedoDUeMgJjw1ce4P3BTKD4vK+3R07u KqgDVR/yQkFIGkmPI57rvvUdpvEE37sW618waLq/QbB49l4gZNRPsyjYp0ATzzyN sHtaIyn5bMxeO3Bedt4ABWE5CAwwqiApEEsdiEYEEBECAAYFAkkMMS0ACgkQiFFx NDJwjFn29ACePE6zsHWHmmLEoAgPvbQqPSgMM+YAn3Odlx3tjiMOJX7W7bEllFEw Utl/iK0EMBECAG0FAkqcT3dmHSBQbGVhc2UgdXNlIDxwZXRlcmplcmVteUBhY20u b3JnPiBmb3IgcGVyc29uYWwgZW1haWwgb3IgPHBldGVyLmplcmVteUBhbGNhdGVs LWx1Y2VudC5jb20uYXU+IGZvciB3b3JrAAoJEP6KR7/wD7iHagIAn1hh98Z31wKC JkgB1lXeQv9k/PoxAKCk6j4ssVx9h2qbxr+/yTT+ur2cy4hGBBARAgAGBQJM8oyF AAoJELAqLmmWsZb+LcIAoMP2i+Ol4aGV+dpAIrqXs088HzeHAJ4m5rcScpIHEQGc pnuJLNtU2tydaLQxUGV0ZXIgSmVyZW15ICh3b3JrKSA8cGV0ZXIuamVyZW15QGFs Y2F0ZWwuY29tLmF1PohgBBMRAgAgBQJDWZiqAhsDBgsJCAcDAgQVAggDBBYCAwEC HgECF4AACgkQ/opHv/APuIexaACaA17l0FFzNDNqrN4EhKRUts6+2cwAniRCROUY 2XrnxJPAyPUA71XzrLGjiEYEExECAAYFAkNl9A4ACgkQwGHVEMpEkfKcrACdF9po DMhNcdyBt6ITVn2RqGV69joAn2WvSiHnogn5liUuJInNONJGgFRtiEYEExECAAYF AkOBUEcACgkQwfTYLJoEmpcUQwCgvQNEkbaQiFd4ALubsIZPCTWmifcAniDB/tDE ChnDJ+7hN+w4mYVRb6aIiEYEEBECAAYFAkOQvp0ACgkQrMXkZyWlwwlFPQCgmYA/ aikl49BBmUk8qMO0JdZxuVgAn1oRBXiGTbgslc6RX+8fSyABbB16iEYEEBECAAYF AkcwnRsACgkQM4TrQ4qfROO/fgCaAnQJm/G1KcGSAQLcdq7QS8mFTWEAn0FCB6WX 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 fWARQ/RV6PEDVEXxKXEmCc9LNWVCyZX8Vj/1wr5hMyk7l1mzHayOMCi84+QJWOm7 Xd8Mkdwyx7U3EatEEiCpdwCRjH5Hjik/8qmJr5vDfK6oNKpM3jM/CRa6b3A6142o nEfCX1zp/IHwinkbZgF1bZSaLVBRjitjFzh3ePyzaEKPC3V6h8kQQLNgiGsEEBEC ACsFAkqczaYFgwHihQAeGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJ ENK7DQFl0P1Y3zQAoI5epoCAkaAh6aLBAB47QceOjbXwAKCVi5YnBZ4O6DH8KKC1 +6EU2eYfEohrBBARAgArBQJKnXvlBYMB4oUAHhpodHRwOi8vd3d3LmNhY2VydC5v cmcvY3BzLnBocAAKCRDSuw0BZdD9WACuAJ9GsK860vupip75Ajjob8SDJCCRTgCf eFgvqcHGPQ8y7cODB2Jx/8VPyDiIRgQQEQIABgUCSp9+TAAKCRCsxeRnJaXDCeDW AKCCbfFgGxtFoXOj8kMyjhkHK5btyACg246reMMbBnoDgk9BB34tsbW5f2qIawQQ EQIAKwUCTJFp1QWDAeKFAB4aaHR0cDovL3d3dy5jYWNlcnQub3JnL2Nwcy5waHAA CgkQ0rsNAWXQ/ViRdgCdFBAmYbQl+4qYWgFK7042y2Ao9NkAn0ewLirs4hsWwMr+ cmfp0Frb4SkxiEYEEBECAAYFAkzyjUEACgkQsCouaZaxlv5O9gCgtG1Be6pSS3RP hR5ZhKKJbrLG5eMAoKNjPsGk87+pG/4FvujkiP8Ss5wiiGsEEBECACsFAk95IwQF gwHihQAeGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl0P1Y /owAnA0Gd2gPpUF7XOvg15OOp88a/bo8AJ4vU2Zr356FeXMds5ZBqXhCammmuIhr BBARAgArBQJPpakIBYMB4oUAHhpodHRwOi8vd3d3LmNhY2VydC5vcmcvY3BzLnBo cAAKCRDSuw0BZdD9WJsZAJ96updcDFblykJOzfXUDW+CeMxf/ACggTkWMeB9hAp2 YfvSM23qDcbKiU6IRgQQEQIABgUCT6naDAAKCRDB9NgsmgSal7LGAJ4vBK4+PH21 vkCszMDhaa1f39r3qgCeP51jh9E32UIpTSPDZYFpNDspl/S0J1BldGVyIEplcmVt eSA8cGV0ZXIuamVyZW15QGF1dWcub3JnLmF1PohgBBMRAgAgBQJFBSrIAhsDBgsJ CAcDAgQVAggDBBYCAwECHgECF4AACgkQ/opHv/APuIdkpACfQ50cJutvgTCnr7CA Yx1gw44prGIAoK6wGb6mjGBXOYmsIR6p38HBz+FziGsEEBECACsFAkiaIGwFgwHi hQAeGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl0P1YhysA mwZqib3uCp43HPvaHUSjqWbN+e9CAJ4yCQ/QwadfG08bgCqdcwbC5pVqhYhGBBAR AgAGBQJJC/M6AAoJEMP7QGiimoSiA00An3BVe3msJxmFn4aMyGVtl2BXGHTBAKC+ 4jV8J9fmADfbUs+HPgII1syRHohGBBARAgAGBQJJC/3DAAoJEEZ4JV2j2FYyZ88A njvP58a0TJVZ69Dq/xmqLs7X/T6ZAKDnIaZ6TjFLIPw6L7sAOHfpB5UdiIhGBBAR AgAGBQJJDDEtAAoJEIhRcTQycIxZ9vQAnjxOs7B1h5pixKAID720Kj0oDDPmAJ9z nZcd7Y4jDiV+1u2xJZRRMFLZf4hGBBMRAgAGBQJJN7jyAAoJEPuR4KjGs65+6FoA oLYl0v2UXi8gIxqcWIYJE3IfETmVAJ9XMGyepBw+dff5zjEMViw4u6G+EYhGBBMR AgAGBQJJN7lDAAoJEMgJI0WV9VXMQhcAoKPuxTX9sNGTC1qQtnpallx59fpFAJoD lumuIDljGPc7ggrY6cR1y9+x04hGBBARAgAGBQJJRaIdAAoJEPoty7DSbyJZSUYA nA3TJtn/3KesMPIqXDAoqhFbCX0LAJ9crXWaiUCNsoZtbidcDbKuXmEE5okBHAQS AQgABgUCSgqKAgAKCRDwEqbimMZmVW6AB/40256hzYHd3uAS0fkG09U3R43m+sxG 8cz2H4XYCk7CG3nKF+uYqF4xI2QehGbF5Vm+1HJCMmUhuQ8ppT+SituCIcKibDy8 k2CxqI7S+PTXxObtyl/iwCi9mTkJ67qppB7wln1RanWr5mXokDAtltr3o+8SqH6z I8C5cSNFyw5Iq9FbFqXuHqYqhx6zj01q7GTMrMCAD0jFH1fhzj907+fmfuJABgeD Cre5Hpqpj1GDxTnQZvSRut1NzInNDEoXDPeVczGBzAipMDxLNa8zN1daDojq6Cf4 CGAmXdtIHE+dFSEdJLHbQzivW2pRT7k3QuIlqBQCJwuwk/U0zqGuAqo6iGsEEBEC ACsFAkqczaYFgwHihQAeGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJ ENK7DQFl0P1Yn/UAnj4Z7fTo/nySGH2cy9DD5sxDuk7+AKCFBoBa6yrEgVCWFFCm 0zS2pchLcohrBBARAgArBQJKnXvlBYMB4oUAHhpodHRwOi8vd3d3LmNhY2VydC5v cmcvY3BzLnBocAAKCRDSuw0BZdD9WBfyAKCXbjv/26Qk99Q5EAoY8R9oP1p2ZQCe P01StOEyjoZ5qK+vD+tv+/fXyVuIRgQQEQIABgUCSp9+TAAKCRCsxeRnJaXDCckU AKCw1q5KSpkRtqKNtHcyhGz1nTpmIgCfSJkK9BmtAak/HMYROtfRGThF6KOIawQQ EQIAKwUCTJFp1QWDAeKFAB4aaHR0cDovL3d3dy5jYWNlcnQub3JnL2Nwcy5waHAA CgkQ0rsNAWXQ/Vg6UQCfY26wrCNe9Zf9GHqGwL4IpOTjD0AAn2h4a3e8O5xl0ye9 8R7osOBFOBcyiEYEEBECAAYFAkzyjUEACgkQsCouaZaxlv4ULACgopUJKHl/JimO E5zxBGXkc2pwyRkAnA8t2YL0xlg6+GQjaXG82ltQYlhyiGsEEBECACsFAk95IwQF gwHihQAeGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl0P1Y j4oAn1ttsaeatBhm+X4L7cvCaSjRCTkfAJ4+zf4G2OKnVxFEfAucgf83XSRAUYhr BBARAgArBQJPpakIBYMB4oUAHhpodHRwOi8vd3d3LmNhY2VydC5vcmcvY3BzLnBo cAAKCRDSuw0BZdD9WGSPAKCcY/pL1sBSUAFUBDyNGEkpGbtXswCcDobs4zUP3fuI uxgT9iVVXD74f8GIRgQQEQIABgUCT6naDAAKCRDB9NgsmgSal6dAAKC6K5Vd8THM O1sbd6ik+2QnTtaS3wCfVjFNQCpVk+5ecZGF01G8rtKyomW0KlBldGVyIEplcmVt eSA8cGV0ZXJqZXJlbXlAb3B0dXNuZXQuY29tLmF1PohgBBMRAgAgBQJKnDGPAhsD BgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ/opHv/APuIfo/wCeM50hDiUl5T/1 RPlTjp92l6VG5k0AnRiSX/bxc2BC6nSjlKyHRIkP5u4uiGsEEBECACsFAkqczaYF gwHihQAeGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl0P1Y VrEAoJOh7JCQKCdH1+eoCxXMHFWnhpJVAJ9OoKAReUtvkjiCkeWYCavDXYFGLIhG BBARAgAGBQJKnDc1AAoJEEZ4JV2j2FYyi5UAnjK4vkXn1pxyQeZWC17UriIVuyCM AJkBjesPsONHpNuHPvmMh7ptHsPweYhGBBARAgAGBQJKnDf1AAoJEMP7QGiimoSi IzYAn2YKS8vCezGDVSUz/+ChZQCOWoL3AJ0R4kZTxstj9j3zb2cUo1RvOW7iDokB IAQQAQgACgUCSpxIeQMFAXgACgkQ8BKm4pjGZlXDXAf+MhZXRtXmOAoH/wNCfb7w NtiYKhxRmU3rOUjwFA8sJq/aG/DSV+pt99FnYExzhzvj7nog0nyKcULQaGm6Jjpc y+bSAz0lwYeAdOoJO1iMA8hoqn3YuL21kDNb5ISp131or0amHbzaBjYImSQtX4uc y8ZpJsWdIB8NLmSM/gbN17+IpkfHo/xVaVi7TZNccZikG0UibjthWAwcLFvUvXDn dSKfA8WJaCQkoseYCiLGdNP35zyo/b1DUrWKzxdqpc+KpJgfyHSvK8XoikymhP0J oMiQCKNgAou4xTTAHacsrwq3UakkY1rVMqo6MkqFVq30P0cAMoUsOGxyN2Fyuoj2 L4hrBBARAgArBQJKnXvlBYMB4oUAHhpodHRwOi8vd3d3LmNhY2VydC5vcmcvY3Bz LnBocAAKCRDSuw0BZdD9WIUOAJ0YzbOAhY3GULXALD/P2xfUj1T8FACfbsUZM46B VBjcRBErQWW57DimVzCIRgQQEQgABgUCSp3G7wAKCRD7keCoxrOufh0sAKCYG1aG R5GsrmQs3ov8EJx7kKldLACgkvUUcDpxC2nkbisx/BL3CJZD8taIRgQQEQgABgUC Sp3HiAAKCRDICSNFlfVVzAg3AKCGpTil5ysY8yQX5mBcnDN8sMTmggCfRnDSHJtm PQdP+H4Knn4UyHZWO36IRgQQEQIABgUCSp9+TAAKCRCsxeRnJaXDCcOrAKCEHQaE eF+q1++EZhLtMfuOTDrqiQCeMU6hVjaKQ7+w/CQlBaBiHu74A3CIawQQEQIAKwUC TJFp1QWDAeKFAB4aaHR0cDovL3d3dy5jYWNlcnQub3JnL2Nwcy5waHAACgkQ0rsN AWXQ/VjEtQCdEik7LW7U11QqjwMlCHZ4gitKQncAoIKBj64Q2JEOq5xIzz0fOZ1I QULLiEYEEBECAAYFAkzyjUEACgkQsCouaZaxlv541wCfdBJyK3DWU3p++fIl5WBY K/HGHWYAoLiBflPpAD4bZL8H3CPmIrFMpjdFiGsEEBECACsFAk95IwQFgwHihQAe Gmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl0P1YReAAnRHg RQCOPnA8fUYGmyAtTpNkvPcTAJ9epsUIZ8FYT1ut7bE/6cg9w8def4hrBBARAgAr BQJPpakIBYMB4oUAHhpodHRwOi8vd3d3LmNhY2VydC5vcmcvY3BzLnBocAAKCRDS uw0BZdD9WHuuAJ4qlhpJ08KiZEqmw/MdyDPLs3z+8ACeJcwg1jkq+A+aX73YZRj9 sXIVhdyIRgQQEQIABgUCT6naDAAKCRDB9NgsmgSal9tJAJ9y2S27QaTTe2/h9iWt O3QXwDELCQCfdc+vN0AOk0aBDF7y5wsc0focNp20NVBldGVyIEplcmVteSAod29y aykgPHBldGVyLmplcmVteUBhbGNhdGVsLWx1Y2VudC5jb20+iFwEMBECABwFAlBS j9YVHSBMZWZ0IEFsY2F0ZWwtTHVjZW50AAoJEP6KR7/wD7iHYzkAn2X34aejAFcj h4qBIPalMJiPbuR/AJ45kTNqJlcnLsJX/Ze++TVJKiqUxIhiBBMRAgAiBQJK2+F+ AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRD+ike/8A+4h2zyAJ9+kmc1 DlDcp+pPhRxVBYf9irNs1ACgr37onmXaSG6VvpCgoyl1Vcs+g/CIawQQEQIAKwUC TJFp1QWDAeKFAB4aaHR0cDovL3d3dy5jYWNlcnQub3JnL2Nwcy5waHAACgkQ0rsN AWXQ/VhS4wCgnN6/qCP3XmG99YGOXkxY0NmX0HcAoJxmFaL/7FVBKXDJR4NH5bNr QFsRiEYEEBECAAYFAkzyjUEACgkQsCouaZaxlv6pOgCfV/GKmjBHbSfMd4GiALtj /AjVOdYAoLdmTundGF5jqc9D3ZOcUqZOj9bxiGoEEBECACsFAk95IwQFgwHihQAe Gmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl0P1YDcAAoJa5 1y+Y8Yojc1hHJNNbNMQb37rqAJj/C4tdOVYHeH2CUw1s0vHJl0/LiGsEEBECACsF Ak+lqQgFgwHihQAeGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7 DQFl0P1YXWcAnR3lG4flcIm04txyvBvA1//gLSP2AJ9xzDup/1+1w+bLo3yAItsA VAQiu4hGBBARAgAGBQJPqdoMAAoJEMH02CyaBJqXRBsAn0vQBbsNkWu4eRXQ6x2l E+rE3qFVAKDmosT5D7vYi7rCpdW+s3OU24dhMYhGBBARAgAGBQJPqeKuAAoJEEZ4 JV2j2FYyJYEAoKcP0+UMyRAdSykta7PMw6xo60NcAJ9RtnDlcSQYDVkNktXJ4ChH rV/nVLQtUGV0ZXIgSmVyZW15IChwcmVmZXJyZWQpIDxwZXRlckBydWxpbmdpYS5j b20+iGIEExECACIFAk+lpyUCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJ EP6KR7/wD7iH1fQAn24DSFrYnuqfiMLHOnCpdqfR1F5HAJ97H8+c7F8V12adIDPa SWcKfg1uq4hrBBARAgArBQJPpakIBYMB4oUAHhpodHRwOi8vd3d3LmNhY2VydC5v cmcvY3BzLnBocAAKCRDSuw0BZdD9WC+uAJ9rvw6TfHj+GqzRoHVpn+dBmcaJMwCf YMGJgF8NTv49Ss5ZplHFn48HX5yIRgQQEQIABgUCT6naDAAKCRDB9NgsmgSalwyi AJ98CsCtOXyFdkeL18H1CUzrh5PSogCfYAVsBOQYF3VQk5Er7UYWgALZRuyIRgQQ EQgABgUCT6nYXQAKCRDD+0BoopqEosnRAJ9X+Sc1+civn1sjVlVOLh4PxsyiHACf bidPZxpiHEMo3D1G0jpyI6lZQOqIRgQQEQIABgUCT6nitwAKCRBGeCVdo9hWMo9l AKDCHa7Twl9JSqm1SBInG7JQ6FIefgCgwksUikoD/r29nuCDjIxaeMboT76JARwE EAEIAAYFAk+81uoACgkQ8BKm4pjGZlWEjgf/bBhssu2uKd+N3FLjOwATRhX+bdyC 5wNE1RsIBe6aqxCCQdaX+E/dNidIsxULPauK8QYsbztXwzRrlkwACoHEET2TvF4t 1HZNaZTMXm+bd4bzFR/ISoLHdwZ6QyFykq/XP23ia3XYWZNubtTX6MgYIkwFcA78 DSWrKeIBTbNiK+hGFZ2o9alJQ480nKL2JJuXaFI/hxqgJ3z/RhVP2iAGlAazglNn 2AHH1696qGgtsDqeOSmUNmp6FVgvC/n4+jFKywtelm8NEXD0YT0YBNSPDmFLzOLs bySrfY3+W37QCmhP4beuLBpBOfcG8vJxvU6XIlET5DPCm6vqh0O7Cnn447QhUGV0 ZXIgSmVyZW15IDxwZXRlcmpAZnJlZWJzZC5vcmc+iGIEExECACIFAlBS1aYCGwMG CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEP6KR7/wD7iHJMMAoIAPlNKMwSPQ /uclko5VhEYxO4b9AJ45wwJWrsR8IjdNQU11Y5DzoTMN+bkCDQRDWAcuEAgA8xJE ei8MIQ2FkABrH4UU2MeU6kayPwGtLSj2XQq1IuF/yzIjKMWAofFPuKVUW8EpktNy HDvRkOzV3YYA9ACav2YPCohzmsDXq3BL2051/49lOE2V7YyBj03L2S3yoCCAHJKw 2TlVoMRsgWs/9zcCzyOWe/YRovivEZ4cR/Zaag2laYOCacmDkbKHhfy5s1WDMP9z B+qD8nmWcWvOYYx/D/Swnb7ytCYwX9pEc54MFqFzi0lbe7Xy8ksVLpeKR9jZRDh5 SaT0yqD0Tk+fYyR9Qf9sg5CCbiSa5mN5iuXIHXDZUj04m67MiJ4mNn/kkWEDTZhC KMo9GtRH8K81QsvP2wADBggA0+MMIEGxbIKZkc11KZp5ihUcCF+fGQiD8BEJV3VK wkraaTbR5xCIBZpFjoZ64veRh1ugxiXI0kBs04HFKqNs7P2TftEv8pI14guLwtBL M24aBjLYq176eNP5Mv2DGpvAXUCz0usG11PEgdVQJ9Pe1d60CnJhU1TOJlZJwLN+ lmhM+gcZLdObOkVR/iUnkzw5ro9TrbAVHVgCnBaXrO/YMDv02IjNQcD/gH6DVrpc 9P5ZO0A+HxxbZU5yxUyjq3ghLjllPVCkaOzSpgtOsQE6rBtEr5CWsTPKAUuLyYH2 JzbeYeFdYlldV+Xz3T9s8dy704b5+xr4HLTGUQujzJaujYhJBBgRAgAJBQJDWAcu AhsMAAoJEP6KR7/wD7iHmlQAoKbE6ewYf35ymi8HkejDppTMe3agAJwO9owZfOKd fl2shbeC4ccb6tc+jg== =5gZR -----END PGP PUBLIC KEY BLOCK-----
<jinmei@FreeBSD.org>
pub 1024D/ABA82228 2002-08-15 Key fingerprint = BB70 3050 EE39 BE00 48BB A5F3 5892 F203 ABA8 2228 uid JINMEI Tatuya <jinmei@FreeBSD.org> uid JINMEI Tatuya <jinmei@jinmei.org> uid JINMEI Tatuya (the KAME project) <jinmei@isl.rdc.toshiba.co.jp> sub 1024g/8B43CF66 2002-08-15
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD1b+Q4RBACetpZD+bWytVmQ3Itmu0ZBfSDF6FVyUQuKS3OZmvsZHxxqq1+u erHNhmyte/aCI/YrEUzHPT5LU+9LMpRQD0AwSs3Ot2vUzokSiTu8ZqhoWBcsosKK eKM73V7NiTgBGuJ3UxVmKNXzUZhRjGHuekB/ZCCv1pDg9B3HPL8ty+2M6wCgu02T +vMZW0VeByn79Lpmm2nu/F0D/3NN4e8ZtLTbUJxJb/hHhLzOr8XahZCqsNF2bj0C 0u2SzkelDa5iVDWwiOkg7xI154REAALOG1FnLyO4bRPkcQ/EO5tbzXoVn0I6MPWA EiwBfVRXzP10MDHhqH0NvT8pyA4ex/BflaeFem9HItRjfojdqEUYVAACceAdLQLG MknWA/4hfAAp+dPcU8iHmd7AemuGoOhu5AAKbp2S4vwozJEFiv67wD/+WFXVggUx wbQ3X7oNiOLeg9OASDV5qtbGPATHikYagWVjndqmvxO1FiL6BnQBnzAVzOEN3L2K Ex566bUw/2R/dr/zhOc3BKxCV50T2Xe4u/cEiYkUbLj6+Y8V2bQhSklOTUVJIFRh dHV5YSA8amlubWVpQGppbm1laS5vcmc+iGAEExECACAFAkYDPqYCGyMGCwkIBwMC BBUCCAMEFgIDAQIeAQIXgAAKCRBYkvIDq6giKEOZAJ0Z/iUCa6UrrsVmKiP4a9qB 0jFUCgCgn/3mQxdtXTA6SOlFFsisaxsIXIW0P0pJTk1FSSBUYXR1eWEgKHRoZSBL QU1FIHByb2plY3QpIDxqaW5tZWlAaXNsLnJkYy50b3NoaWJhLmNvLmpwPohZBBMR AgAZBQI9W/kOBAsHAwIDFQIDAxYCAQIeAQIXgAAKCRBYkvIDq6giKBtcAJ9DRqXt h8WEpjgr+sD9OuaYqmV8nACfSdo2Ml+Qfz2Rad9OtZodmELCCi20IkpJTk1FSSBU YXR1eWEgPGppbm1laUBGcmVlQlNELm9yZz6IYAQTEQIAIAUCRhkdkgIbIwYLCQgH AwIEFQIIAwQWAgMBAh4BAheAAAoJEFiS8gOrqCIo11cAoIJT7N2GMSNXAujnuIvc HnBtgk5zAJ4qDo/En3ic8E7h7zc4lT/WQQDhRrkBDQQ9W/kQEAQA1Q07/j0kScL1 WF9EeXVEyLpTxHZ7owTI+KrRcQ6Vc6KABu1cwhE78ANVfn/CkWVXHyDEnWEIvaz2 QYwz47sqOxdOg/AmHFVd8xouengw32KNjViVBMsW/l8VzyAVvvGGNuQ+f7zDZ/P9 v9WwwRcrgL9g+uAnrJJo/wttIBqhSk8AAwUEAIqcIez2zlkwGayFeLqgwuw4PCbd kGtXs0l2mQljv8GWuTRJ5D8aD0nlM9MNaSLB7xq6igMriP/NyfIVv0aLJwRH8ilx RBYosGvm+nEmUtakhU/77uXcLtipoUGi+y1reFRVSoypJil6lqDTjKtWQlWA7xOG QzGMdgoBC1d55jXXiEYEGBECAAYFAj1b+RAACgkQWJLyA6uoIigNBwCgsUFgZMfR sEybYW4cWwBNhNTqE9wAnRf9BFkzpn3ZyD+NBkjx2INcitoD =ISn8 -----END PGP PUBLIC KEY BLOCK-----
<ahze@FreeBSD.org>
pub 1024D/3C046FD6 2004-10-29 Michael Johnson (FreeBSD key) <ahze@FreeBSD.org> Key fingerprint = 363C 6ABA ED24 C23B 5F0C 3AB4 9F8B AA7D 3C04 6FD6 uid Michael Johnson (pgp key) <ahze@ahze.net> sub 2048g/FA334AE3 2004-10-29
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEGCy1ARBAD/K2SbL6XiTJ3Rn/weuN/L78ROUltIoRGOkZE4971fLcAbtIsf nANWDrpDqbhLgEbZLeCn/EIWOPqrYyKpCGu/IoZ6kx7UPtUH4eooJBarrrQPJVV1 mfW5ktDry3AoiaUH+jL47AxFCb/bh7Rc11vrhLKdnc74wI+nu2cyk2llkwCgwX78 nlN2qTrbXxOEAPpJjMontfsEAL+4sS9DOay7NkZq2B2p9AZnSsXQg6/r8Epqznqj yPQBm489UcIZy2FiBwaUR7w0fMh5xNX0FE3xFiTd4VUTgUJUSqpYtdfI7IHvJXml P/VK14CtgRY2B24wpDPMae32hGBFUwSE9Frb5NiKlxMC4+fR71wZS7MtxTnwJ1v/ MoVaA/9FyoKCAw3Dqnf5W89dj5W5x35jLKSLobEhhUB2S2LPiwBa5A79euMvgtk0 gKeh6IslXKOmCO148ws7HSaErBIBVBDpfOsqcQJTcd5lvEbslp+z2oCKeQK3pgQ5 aEHp8IJ3YgQEHz+YityOF0jCMGNJTFAz18U4RzVxSe55iyT/17QpTWljaGFlbCBK b2huc29uIChwZ3Aga2V5KSA8YWh6ZUBhaHplLm5ldD6IWwQTEQIAGwUCQYLLUAYL CQgHAwIDFQIDAxYCAQIeAQIXgAAKCRCfi6p9PARv1oW2AKC0xjNgjhL1EHPtFOXH kGz24lF4QQCfQxkoJBq0CkLQrYvdA3MLP+IJ6ba0ME1pY2hhZWwgSm9obnNvbiAo RnJlZUJTRCBrZXkpIDxhaHplQEZyZWVCU0Qub3JnPoheBBMRAgAeBQJBgtexAhsD BgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEJ+Lqn08BG/W4JwAoJaU6MbisTlg4EMF jfE+wNptwO4kAJ46A0W6SiLWbK09gu7YlgfLgdYAmbkCDQRBgstcEAgAvD4PzCsh muLtNkPVKSlk2eZbqlIuyapbuIo6rHk8fo7fkfqVOOrnGOrAT5/sflmnG3H0BLvF 4pkk7tyRtg3hz8qGACCA4SRf48TxRERpIUoW5R2cVBsMBTnpspRaFu8OdBL0dwXs LmH797gxDXCGXzSU5xKBSQN4LfoEuLr1qQmPbuPW+Rdi3hrdk1eGsJ03rU5RExzQ ck+J7a5VWsyghNCSj1Rzuw+0OVGBijJW51FD9QU+Eqb3seL7E19mWC3FMU34RFwn 5lbxolY43iPV0jc0MFcV4POHUSZ8ot9xbQpcAClTyXZh21QEIFzYjJe9ZeVWKOqH UZS1naB4k98G6wADBggAnRlPolzcjJvqvv5Hfv7oDeDARNxqeKTj+fPXIHR0Gh34 8HMfmxsFzS6nsrrVc43Q6Iaso5hbdP4UvE0/HzhPALzCTeZGpZF54pffg9Pqb84U p+D59I+b88RDBvvfwF0OBg6du08Rdkv9JfG3R+QZembK+IhUa5yxhtfbQmI6Y01r phtx4FAKZw4Xp2eb7IBoZWktfcOE99UJcl9hUmBHJXRznQoCHz5OwAKA6a/0b7j7 B3bPxj+tLlQksdmRbEJKVBa3LQm09PkxfZj8iahvQbp23p5VSJDKzNDrgmsqaCpV CFNgMvYLvtxC2xA0uNtaRpdZRLS/11NUj3oJIULv8IhGBBgRAgAGBQJBgstcAAoJ EJ+Lqn08BG/WFK0AnjdWWBxG7slwI8u1W+7uRsuh6NXMAJ9r+6Br6mlEtsoWrMel IlhG1mVq6A== =I7wA -----END PGP PUBLIC KEY BLOCK-----
<markj@FreeBSD.org>
pub 2048R/80A62628 2012-12-19 Key fingerprint = AFEF AD33 1C4E FFE5 141E 0157 05A4 DA8B 80A6 2628 uid Mark Johnston <markj@freebsd.org> sub 2048R/47C7D3C2 2012-12-19
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFDRQycBCADMNjnbsXUOlvy35VnAJWE3zHAPqmXKqUTh0t0LWEtaD8KaNMHY egadQNWYwJAjzAI07+3grk8xcJLVjbbB+rC45tNPAxjAf9Jd5WZkZO7vKX0tIDLc Kteqp/5UB8SZ+XuhrtzLkObbEccwt66CF8vsUps5hWm1d+Nfxd798sjGmB8uzRJm gO2RrVtrOW7OQG+aFjBwlQvaiYavQ08z/xE2b83Y4Jp7c1FlqneFmK4xWSMO1qEE Qre8+iizDnPkGVabSLGJxE/EjTpHVBSawkXBgs9AOBoUR95fRr2Qc7GtP0NCHiNP FecGq5vCdIVyejUVzWmviYP7y0roG3yE+AppABEBAAG0IU1hcmsgSm9obnN0b24g PG1hcmtqQGZyZWVic2Qub3JnPokBOAQTAQIAIgUCUNFDJwIbAwYLCQgHAwIGFQgC CQoLBBYCAwECHgECF4AACgkQBaTai4CmJihAPwgAn9yH8EQiyS2x2qy5Zecl80Yz sLHSjc0uCBCNyzaLgGnMkqQDljyJzgY8DOL2vCWgSO0uJvb52Zl3nwxNoeMpwA3f rcaurFUUTCNmq4YfAHxjkbi5vQI0uJP7StFcFRPcnBOF/ddi+KUdc++xhqvcKBF9 uHVLK+6MMp4I9ofXNdrenfqXaODDTIaSO3SnL690OFSAAkueDN5hjJRuuEprbZFP qyfzwHAot/Owy6Db7LA9MrE4GQFDszA+wvXrreMDdPIVV8dXXZvuS2oEVV9XoTUY +VkcOdO+UlD1DWyEP1cZYhyzhwJo8G7ZZJO7JpLB6M6c5bdAyMtHW/aAinh+J7kB DQRQ0UMnAQgAxnBvgp1D8Ek07hhV89yhPkucEuxi5Gz8doYedzB6uOUGFdUK8y9B gwo8dSjIY3i4rVpJlarJNvd1XE2Pu3YlwvW1Gyo4pa1M5Q/QeQ8thW4k8F4r+RGN 6qqk085diUKWSwyhjAULOYSWBEbRaPp9L3FNr3uYncrAFhKN3n/o3+18DG2tS++/ DavKZdNgFKnoLEZeTSOAdvwkTjcWV6lRVcI8vsbi1bl5dA7qCbhfRmJJEaMqhCG8 bEIJ6r5JtmDNwOzCnl2wS0UsmsMV2lj5BGiRmyw3xdxDGYTICm0j+YUce9lb2V6H PWcHCil+Jcg1pJ5oKai4uR1Oo97slmoiXQARAQABiQEfBBgBAgAJBQJQ0UMnAhsM AAoJEAWk2ouApiYoo+QH/RLaL2ouB/bxkED60YgdaiOHX+3ZUeXwh5SHapS2cFXU ySUcYmFe3fbsXoyeOi4E1AG2k2PyVk/cA/HDNr8eiqgFO91dQ6RnY+VnbN+DGRGl 9oW7kqY/7kV0ExXpPGSmxdobpeCVkSO3WzY9XKC5VUosc/jCm3+6NqZaCnIIMUNA qUD25P9stIBvEv+QrkRn+9vnSHbyvnQvaHWMLrItMgyjrZdd4LevLQaCo3bc5+eI 4ZhBjHErzC4PmeKgy0ancqWMNfgdZ3fzk8Tcwfy20S+b+TicU0xlQnx8bkPlksCJ h7pRVYuHo9VkueYsh5UoyrMJhYe7DQ4lGbv2fj9KHZ4= =b1OB -----END PGP PUBLIC KEY BLOCK-----
<trevor@FreeBSD.org>
pub 1024D/3A3EA137 2000-04-20 Trevor Johnson <trevor@jpj.net> Key fingerprint = 7ED1 5A92 76C1 FFCB E5E3 A998 F037 5A0B 3A3E A137 sub 1024g/46C24F1E 2000-04-20
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDj+agARBAC1AfvgGQEVdLwS0dirwaN+pDDWWiaSWBNRNo4T4KKG2vyhhnUi f2PcjPx8rYLvbokJFltoTWos3lS8hD8PZGBDlImOPzffdm/GYEmr1mE8fQvzjdKD iOTqQi5IYYhLZIMmUpBTK7XN2zrM8VrkgCpb5TYtBrQUPheWs/SZ31EvLwCglUPA T54Joolfvk0Y8I6dSGYctpUD/3teZiYwem99CE3b1tsqavQ1MUfjwSPZQq8wjVe8 GZUtwaeExugAxNjXIJeXiaCij7S6JSTS0ytyxZ5/O1QFmBhuD/7zjNFD8yB8nu8x slma7mVhMuhqkwU06hTkp6MNNJ7kRItoVETtLqR5mW+0UUSZyePQFIH9U7TKPG3W vYMIA/9btsMQD/7QA9p/m5OP4sfdVdNCZ32tJ534bMjDYyf/P8k7QzvDWU8f7lbk 3vX5pSmHplws0PwSZITmRarMdEH9ucP+24m06MQ7YmDYyLlUCestT2gAxnB5/X1h fJnmdCLi/Vt19WrVM79ebddbCqCaoz0xv+1qOQmPue/vKXIH87QfVHJldm9yIEpv aG5zb24gPHRyZXZvckBqcGoubmV0PohWBBMRAgAWBQI4/moABAsKBAMDFQMCAxYC AQIXgAAKCRDwN1oLOj6hN4YuAJwOTOURcLpgAx4HT43jNxDYCsT7DACdFdGCwsi4 w5ZiCeoizmoBMFvYTa65AQ0EOP5qIhAEAMAerdyvcs7DOxpsli24gkKJxCwHSq9U 23k283XpZHOp/0eS6WEJMHMyQ7BRrx3X6mkSgBEnHdO6MetBQjOHdjSb8ycotrJa H9eMkZ/Iky6dbiWpPLI4ytS4Q8Z4oEGjUTm7pJiE/pgmaCX/kv0WMs/35En+42sY VoVU9bDI+X+3AAMFA/435RbM6ywO/kL8D3lhwINGEIqmxWpJDlXPPJf2pLiWZZVK MLGkHOTe2kUdd+E6WcoRZdGblOKxLACrlKpJa91aw1ftQT6rt0k8GDCGLT/33FWx 2IRSf5sHmz8IOm6L8TcZU31hdWqpDLmiIj+IjUCx8+eAUjZcVRoj6BYnWc1Z64hG BBgRAgAGBQI4/moiAAoJEPA3Wgs6PqE3PKYAnikfYo//UA7/jrDuTXzqPmi/Un5f AKCFsfcXDbLGfWaAqe2YzeDR2Z55/A== =N4HT -----END PGP PUBLIC KEY BLOCK-----
<tj@FreeBSD.org>
pub 2048R/81E22216 2012-05-27 [expires: 2017-05-26] Key fingerprint = 8EF8 36C8 44A6 9576 6ADB EB0E 4252 33DC 81E2 2216 uid Tom Judge <tom@tomjudge.com> uid Tom Judge <tjudge@sourcefire.com> uid Tom Judge <tj@freebsd.org> sub 2048R/2CA4AA0D 2012-05-27 [expires: 2017-05-26]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 Zm0FKdW5eJP4ewW8 =jKVY -----END PGP PUBLIC KEY BLOCK-----
<kan@FreeBSD.org>
pub 1024D/C9BE5D96 2002-07-01 Key fingerprint = 7474 A847 DBF5 50A5 FC3E F223 43AC F58C C9BE 5D96 uid Alexander Kabaev <kabaev@gmail.com> uid Alexander Kabaev (FreeBSD committer account ID) <kan@FreeBSD.ORG> sub 1024g/534D9E06 2002-07-01
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD0fyVQRBAC6DXZDVJoFc4CPKODmJmep0t5dD+ObG0hYiMfo4ygDAvsftJPv ZR69EUbKCqVOXPy5InOR1o1xwERvNVXxBGOFwAdoU4eJt/f3ttR6YSLWDG3iHWRQ Fze9mtZ3bCBcdv8V0pXint/w41y9nBmG03F+Ag2toD5mHYqV+9vqH3XTmwCg7Rq9 K/Pk7Z5lAR/XWyJv6Bk8op0D/j6Jef2ate9+NwBAti+9GgIocBGx36X/SpZonGOV xtX5E2MranZGCVnbdW1hXfKLaiRrooSxbGpMnFbjqY+peHZ905pd+3v++L0sGSUA gLbGL+5GFDO/WGay0vTUBs7Bl+1cbsdeQ67+08WuIRfcbDjA9fYxI9LLTb4J+IrD Ni36A/9WBGxkXNJCTrtAqhCoHRgfo1CHNk+U3KiIlwFfvi1WRkqEgFNQ6aLNsPcT DkIoPLj2hqKf0Pfrr1MWGcQF1uYxtW8diFH9FzlZpkwXvHPOBsJSWtH8qcZ7atFC EIwvZzurMbYWaTGNYMEL3kj9aRjKb2OnsKABZ25H1cioFReMx7QnQWxleGFuZGVy IEthYmFldiA8a2FuQGthbi5kbnNhbGlhcy5uZXQ+iEkEMBECAAkFAlCtcHYCHSAA CgkQQ6z1jMm+XZYzSwCgx20s6h6+tB6nj7gs0mHRmXEd9rkAn3PbiVCY7AvRcQKd jzMg1fh609+NiF4EExECAB4FAkLcBooCGyMGCwkIBwMCAxUCAwMWAgECHgECF4AA CgkQQ6z1jMm+XZYJIACePCBQpk+mw0WvLAkE7I5DkeCv4w0An3MKAuq3Acnzxw5J 1U5XsB0nooiStEFBbGV4YW5kZXIgS2FiYWV2IChGcmVlQlNEIGNvbW1pdHRlciBh Y2NvdW50IElEKSA8a2FuQEZyZWVCU0QuT1JHPohZBBMRAgAZBQI9H8lUBAsHAwID FQIDAxYCAQIeAQIXgAAKCRBDrPWMyb5dltYPAKDD2YYKr7ZDEbVKAdyHOyF5dl+h 3wCdFWg9dC8w6dD7nUKvg9b8cq91byy0I0FsZXhhbmRlciBLYWJhZXYgPGthYmFl dkBnbWFpbC5jb20+iF4EExECAB4FAkLcBkICGyMGCwkIBwMCAxUCAwMWAgECHgEC F4AACgkQQ6z1jMm+XZadUgCggxcqTFp+zV2YOM+cDlVtreVZDo0An1kXV2vUaxap 0fQTq2QMfGyMbsG8uQENBD0fyVQQBADOlRurkQxMzKcXE8Wfb9dimYC9gyNso19f yKAJGxD1lgvJeVyf2OR4k/d6ctQAcNuv3qT0al9rE5DQMiI3fC6xLA/xJekqDCu6 LLjdwLYXJtjSq6HyY2qUS4+sdPJSpVadaMKE1jLVEYCtXi/Q1gTfwPDQp0GzSS7i gyouzi3QuwADBQP/d8b4C53pgkrcHQ/xOv4UW5KQrJg5DZMMxZ6gF3IGFGF99kHi d+zBtrzzlq6PmFpDf69LRaISk0qnjDAsrRt/ypnsRnQ6YOmTSSOKK6y7runPTwaP /gSFeDFk+9ZNxjebpcoN6SHFxi3V/4ITVJfXQJIU/BT05A6LeZGYykTdrCOIRgQY EQIABgUCPR/JVAAKCRBDrPWMyb5dlpHKAJ4x+Ltw0UyNi82weZpghm6b02OVvQCb BB6jh/RjnfLoZ/Cq2dke6K5Heok= =4r9K -----END PGP PUBLIC KEY BLOCK-----
<bjk@FreeBSD.org>
pub 4096R/8302FE9F 2011-08-20 [expires: 2013-07-21] Key fingerprint = 9FD9 F966 D914 5101 BE59 FE13 2D29 EEED 8302 FE9F uid Benjamin Kaduk <bjk@FreeBSD.org> sub 4096R/28698ABE 2011-08-20 [expires: 2013-08-19]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 umeN61KbYXYUxVazdIg= =hh9s -----END PGP PUBLIC KEY BLOCK-----
<phk@FreeBSD.org>
pub 1024R/0358FCBD 1995-08-01 Poul-Henning Kamp <phk@FreeBSD.org> Key fingerprint = A3 F3 88 28 2F 9B 99 A2 49 F4 E2 FA 5A 78 8B 3E
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 =GwRf -----END PGP PUBLIC KEY BLOCK-----
<pluknet@FreeBSD.org>
pub 2048R/10607419 2010-10-04 Key fingerprint = 020B EC25 7E1F 8BC5 C42C 513B 3F4E 97BA 1060 7419 uid Sergey Kandaurov (freebsd) <pluknet@freebsd.org> uid Sergey Kandaurov <pluknet@gmail.com> sub 2048R/5711F73B 2010-10-04
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 ZHTrB5rRodo5ARlH/LF9IQ== =RXWt -----END PGP PUBLIC KEY BLOCK-----
<cokane@FreeBSD.org>
pub 1024D/C5DAB797 2007-07-22 Key fingerprint = FC09 F326 4318 E714 DE45 6CB0 70C4 B141 C5DA B797 uid Coleman Kane (Personal PGP Key) <cokane@cokane.org> uid Coleman Kane (Personal PGP Key) <cokane@FreeBSD.org> sub 2048g/5C680129 2007-07-22
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEaj6Z4RBADnHGSN+HpgYx4kwj2c//kuW91OOYhYlstDCeVTlNc/7YpbgF3T KQKBWHu7uqygI7IeboCuCltP7D+PcXTVdBlh6X4aiwV0XSBCAF4ZngCb56OsSBYd MPjygHV3TH2TKe4PGqH+MZ3umogB3TZVMLpz4S0WyxXjUxLm5tYn7rOCCwCghTRd 00JiGg0u59cT1/GiD2KYE40D/03DKCm4IvMRFsxc3IGhXQc3rQJVhBBAxnnzBA+s R3i0xKzGqBslEUG+AxUMFjohjQgTWjFRa1PTFgHih95Z1lR0/oO5teyDfxjeAPA5 2hUoB3PF5NUFeMWXPCoSyb48uswJ5CCeX/IA5lVO891+jQh1LHIFQDa/rB6zeYzQ HaSXBAC3RheXdRaEFGt2JkNqAZxEQVtiWe5tebdm2oh1RaIfMQ+U1p4X9EBQQjGq 6JeeUsO56HXECEgCyk46fgo2xNwIXqYi42sQlIGn8JDBwOLyjD4iJpz2uxC2NO9J GKUOMdsdydUpfdkF7tWu1rGXXmzGcUUkHXgKsF3jf739FyGAubQzQ29sZW1hbiBL YW5lIChQZXJzb25hbCBQR1AgS2V5KSA8Y29rYW5lQGNva2FuZS5vcmc+iGMEExEC ACMCGyMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCRqPskwIZAQAKCRBwxLFBxdq3 l7aXAJ9829PUx9ST75k3L6/nfkejftuUFwCeN5vqGr5uZlkCQr+Bx45HbcyFQp+0 NENvbGVtYW4gS2FuZSAoUGVyc29uYWwgUEdQIEtleSkgPGNva2FuZUBGcmVlQlNE Lm9yZz6IYAQTEQIAIAUCRqPstQIbIwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJ EHDEsUHF2reXPTgAn2uPDHMfAoaLp+Eg2FfIuMlVNgfEAJ9xBcFz8kLTrAbKnthL S0yBqAUrv7kCDQRGo+meEAgA22OriKy6l+mvGIqbwk67Yz2zcVtHx8Jq8uuyt4Ue JfuK9H8rDOz783oF3++ywf07xqtl70rH+KHSNfVyXUetVXfBUZfo5bTwxokQWE54 eJukJyZeDYXpaJ8ro083lkHsqE9vtTSwJfU4rqRpu67nC80WSkke0t/35sHKqwJI WXlHniGD3dJt+ZTy6hxzcx3WjlNDNUEq6iSl28XNzWdvpKIrah/ksO5O2akmaZcB SXtHthWdX58hOCHBhS1QQSKvThL3VlFtsi7EhW4/rNekDomypLxHGErprjMGV3GF 509kI2vn7NoA1G4sxrESZK9sNIC+KmdWO0MQ4NYhB0NAnwADBQf/XFiDa83fYJUN LBqGGgeOPE+pyBS6gVrw6Kz62nFFgfW9hHtYgItzS4XrDHCc8TCSG4zOBqBY4Qvh HgJ1Fa8rppbMUMI32egtfY0/cu8NVWtHlYp9aQp5tM/0zPu5RaRpQxafs9e5j4gf fd6mY3ro3vJjZ6UczORKFBHxLDg/F6UCeOZsv8Ii72YDqzZEFdBUMJH7ArHFKndd ZxkN7+iGXZorHnTJj8mXSDYmvyaI+Gfn/dea9RDp9h75257cHhnbaDd4ZvlUK7JQ 8HFb6jM0LsadfDuSSMLUYFozqeG1MVCJgn/Rv0i4FMlI0QK/6r7njvvfR6p4mLl5 n9r0NOG11YhJBBgRAgAJBQJGo+meAhsMAAoJEHDEsUHF2reXJO0AnitUss1PV58K ++igcU+jU/EAsjbNAJkBlxLkkDzmxfWATLWri1+qzA5WDA== =L430 -----END PGP PUBLIC KEY BLOCK-----
<kato@FreeBSD.org>
pub 4096R/3CF9ACE7 2012-10-02 Key fingerprint = 5B72 AEF9 B2F9 069D 54FE CF60 444F 91C8 3CF9 ACE7 uid KATO Takenori <kato@FreeBSD.org> uid KATO Takenori <kato@nendai.nagoya-u.ac.jp> sub 4096R/1C593356 2012-10-02
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =jQtb -----END PGP PUBLIC KEY BLOCK-----
<joe@FreeBSD.org>
pub 1024D/E6B15016 2000-10-19 Josef Karthauser <joe@FreeBSD.org> Key fingerprint = 7266 8EAF 82C2 D439 5642 AC26 5D52 1C8C E6B1 5016 uid Josef Karthauser <joe@tao.org.uk> uid Josef Karthauser <joe@uk.FreeBSD.org> uid [revoked] Josef Karthauser <josef@bsdi.com> uid [revoked] Josef Karthauser <joe@pavilion.net> sub 2048g/1178B692 2000-10-19
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 p5J1gj4xWykgTuA= =U6zf -----END PGP PUBLIC KEY BLOCK-----
<vkashyap@FreeBSD.org>
pub 1024R/04FCCDD3 2004-02-19 Vinod Kashyap (gnupg key) <vkashyap@freebsd.org> Key fingerprint = 9B83 0B55 604F E491 B7D2 759D DF92 DAA0 04FC CDD3
-----BEGIN PGP PUBLIC KEY BLOCK----- mIsEQDQwdAEEANxnThVC8GNO9VXTjWFhJh7XgMLHf9jDd0B1804WUqc3c76r8y/k AXZ8e3kNH1rpa+VJ0rYQnurQg5BeFQny8TzU6PC9QSdqNKSCvhai6B+w3t15sKJK nGZ7DwyoyuShMFNMVF250KS7dEZnYy8yrtopCIWJAWzuzuQQtmUYk4B5AAYptDBW aW5vZCBLYXNoeWFwIChnbnVwZyBrZXkpIDx2a2FzaHlhcEBmcmVlYnNkLm9yZz6I tAQTAQIAHgUCQDQwdAIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRDfktqgBPzN 031cA/9ZuwCRbYhTHWzOhQuT8dm7Bby0wEq+KzkULXd/ExgxCu/54t9M7csD378X /Fg2erLP2J8cYIcVXmdtIJO8AwZRw5GgmVP+h1sEY+KT8jiJNlX2hB/9qCmng3FY ItLBY2t7XVmTPMw8BLANE7PJ1LKT/OoUHEk0OjK53KKGNU2oUA== =VzLE -----END PGP PUBLIC KEY BLOCK-----
<kris@FreeBSD.org>
pub 1024D/68E840A5 2000-01-14 Kris Kennaway <kris@citusc.usc.edu> Key fingerprint = E65D 0E7D 7E16 B212 1BD6 39EE 5ABC B405 68E8 40A5 uid Kris Kennaway <kris@FreeBSD.org> uid Kris Kennaway <kris@obsecurity.org> sub 2048g/03A41C45 2000-01-14 [expires: 2006-01-14]
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 =nTL1 -----END PGP PUBLIC KEY BLOCK-----
<keramida@FreeBSD.org>
pub 1024D/318603B6 2001-09-21 Key fingerprint = C1EB 0653 DB8B A557 3829 00F9 D60F 941A 3186 03B6 uid Giorgos Keramidas <keramida@FreeBSD.org> uid Giorgos Keramidas <keramida@ceid.upatras.gr> uid Giorgos Keramidas <keramida@hellug.gr> uid Giorgos Keramidas <keramida@linux.gr> uid Giorgos Keramidas <gkeramidas@gmail.com> sub 1024g/50FDBAD1 2001-09-21
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 IgCfSGrV0biCeEg2LYvkY8r+qISrp8eIRgQSEQgABgUCShJ0sgAKCRBKChvI5PT/ 5qKNAJ9v7FrYn9H4JSkDSkodD5e58m8o7QCfYIYTc7ZtJezQVDfs5trMaZJ9hSG0 KEdpb3Jnb3MgS2VyYW1pZGFzIDxna2VyYW1pZGFzQGdtYWlsLmNvbT6IYgQTEQgA IgUCTCrZPAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ1g+UGjGGA7aY hgCgodxcHXJakfN/aTje5ptVDfnp9r4AoI8VuOfyfOa3oNG7l5b02xyBlB5atCJH aW9yZ29zIEtlcmFtaWRhcyA8Y2hhcm9uQGxhYnMuZ3I+iHgEMBEIADgFAkwq31Yx HSBJIG5vIGxvbmdlciBoYXZlIGNvbnRyb2wgb2YgdGhpcyBlbWFpbCBhZGRyZXNz LgAKCRDWD5QaMYYDtsu7AKCQ4dJNvHzvIY2N3TZ9hQgkdHCTcQCglV+YmYD5tfhK fxz6xA5tWYKsazuIRgQQEQIABgUCO6yjtAAKCRBh4yFaDntT0WGcAJwMjYa2mHPt EJnBP6+q5ibZKotr+QCdGcFV/PUvU+x6GFu51qYyjeWIucGIRgQQEQIABgUCR+T5 GwAKCRDuYs+nBbNfMveNAJ9ky78WZ1m2J6k8kAaR0WH8xyHp/ACfaElBolLsm9Gj YVJil7G6Hq3yyuOIRgQQEQIABgUCR+T5kgAKCRAq3iExvmZmv6UpAJwM2zEmjcqD p8aXCCDJ/1/2oT7IjQCfaMLk0j5ORVhqctDvAY+wwZEvzOKIRgQQEQIABgUCR+T5 kgAKCRAq3iExvmZmv/OpAKCYm2oSekQXnZqajQU1RfZKM7CsrQCgieh8jdbNAjRP o1UyuApv0ZPoZtWIRgQQEQIABgUCR+Uv+gAKCRAEoQQzidLT0DkXAKCcjUk/vXuz jTaCl+qbcWFUMhnsFQCdFXUhl/DaE/12iREGM7Gez8ksk8CIRgQQEQIABgUCR+WJ hgAKCRAEiI4tF8pLCg+bAJ9hlq2p/iT9cF49pLIFr0BdsRgrFQCfSpunlpTurbIY f7QjOY/2VavPdFKIRgQQEQIABgUCR+WmiAAKCRCZZAgVZDELDQUBAJsEwvc/iP8R dmQsKJVdAd7HmsCebgCdFILI2RcyU+cyaqSJnQtGpTrWs0mIRgQQEQIABgUCR+Wm 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 rkbWaRVzAJ4oA62xKNbHfUJWJOrlny+YSCPRpg== =PK2k -----END PGP PUBLIC KEY BLOCK-----
<fjoe@FreeBSD.org>
pub 1024D/6B87E212 2009-02-17 Key fingerprint = 124D EC6C 6365 D41A 497A 9C3E FCF3 8708 6B87 E212 uid Max Khon <fjoe@FreeBSD.org> uid Max Khon <fjoe@samodelkin.net> sub 2048g/CB71491D 2009-02-17
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEmbEFERBACe5xJF2u+R6020qrAb42ZcqdTUFDepqVWI/qrxXoEpC+fxAD4x 9s8zilNIZkG6NVpEr7swAWG3+XMSqM5vdtGDj09JFsGEuREB05JTzIBtqGGKWuEn Mhg/3K1ZxPPwAokm0Sr3kiGk0Q0O+dTesc1kq6xjuDYC1CrLKwVewp8GqwCg2irJ MsYAfODJFAXdK37hG9T5TB0D/2CqorXSukQ2L4U7aFOYlWtDnY61c+gLC9JKJSD1 TfNTjlJqfu7/1LqVglFZ54Pp6mXYSheq1N853jBFFKAfByiTvD8BFbUsCue/aJHc W+STjM8J9fY+oyi/OMZdgdseQ9fn4Y87sK9As/JsE/z4V+kn0V7+x2mqTJwqsSNe 1JyPBACeQ+yEVchDkoyK+lPgjHYQIqrPbu4SrRalR/WkAwPE95b3j8RHNsX9PL6T J3yDxXTOxQgfoCVhS0KPgLoLKTfRf3CvSZYduFkWJgeCtoKaYn9nBzcnlnCjrGvh 1bplgiOX/4x07aHEYgVRan1Wed2pPjpT7WWy6NDC0VP2HmvpN7QeTWF4IEtob24g PGZqb2VAc2Ftb2RlbGtpbi5uZXQ+iGAEExECACAFAkmbEFECGwMGCwkIBwMCBBUC CAMEFgIDAQIeAQIXgAAKCRD884cIa4fiEr9CAKCYt+Yc1AiBqAkz1fwDxLC6Kim4 LQCfXGLJOc7rvsR7lNT8ftexwa36dq+0G01heCBLaG9uIDxmam9lQEZyZWVCU0Qu b3JnPohgBBMRAgAgBQJJmxB0AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ /POHCGuH4hLIcgCfZ8MJjAT+wFB5DfbtNELP72xoTqoAoNXtUquEkBo3pkt2M089 xPqKnBDvuQINBEmbEFEQCAD49pzUGeoNT6HqnHx56l/+eqMljCm9OMUpt3CeNU5j UisWVb4yv83VP8cliLDYw5pWCm4TTSbsG+OdYrwm2l+lIVIUeST0XMxK4VeoNTJF DavUs2r6XS0Lspr60Ynnp8z8bA5/O/C82DB9AGo4dpew6ybQoXRyY3O1JAWBucuh Y/ti5hGtKT/n82XHYtD/Z8BcHN6DVEsU+tn6FWeKu1yZqen98ZN/KOO0GhBAgTn0 AyxVYC7sbsul8OHBgNKhUvukIBIHCjZWPYTqJwrwKwlrGLENiUd0sgcugRP7sEEI iGdqT3/uy+IcaKP8iHPWUD3lrqV9d74JXjFu7GZoMId3AAMFB/9MT4CxcJGMBBs6 +icdnFwHIGAxBkUXFCSgQsVr4OyhHx8Ac+WDIIeHLF83kd1PKG+ecAxhxwF+MlgG kU/Qk9pVwBJBM/Gs+hrwOQODsf5+sp3CcudICSzAXtzm1A01CQVfqQYCscZDQvW6 ikJZspLLJkbHG+p103C6xsmcOM3qFJN3erQpwRfhqwvKSwH7/pjxijEc6tvTzj3X nW/rAUZIHlB4PzSlLZ4plFLgYMBt73ewlt6lKXmMrnhFwJtcA+2bIQd3dAWo3Eba feGK5hqHATowvVgLjx+ihE4TdpA7kXyfZ+nP2bGFaCR8JnWVtKZkTqaWrU9xRPpB 3YwQNOtBiEkEGBECAAkFAkmbEFECGwwACgkQ/POHCGuH4hLFaQCfbr9tE8O9EUjf Mre0CBDDd2Ck2sIAnigLJE2wP8hPmK9bSvzEcd1qKpnT =3qdH -----END PGP PUBLIC KEY BLOCK-----
<manolis@FreeBSD.org>
pub 1024D/6E0FB494 2006-08-22 Key fingerprint = F820 5AAF 7112 2CDD 23D8 3BDF 67F3 311A 6E0F B494 uid Manolis Kiagias <manolis@FreeBSD.org> uid Manolis Kiagias <sonicy@otenet.gr> uid Manolis Kiagias (A.K.A. sonic, sonicy, sonic2000gr) <sonic@diktia.dyndns.org> sub 2048g/EB94B411 2006-08-22
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =3/vj -----END PGP PUBLIC KEY BLOCK-----
<jkim@FreeBSD.org>
pub 2048R/D932A1CE 2012-11-19 Key fingerprint = 2202 B5FB 78B7 A303 4919 B7C7 25E9 69B1 D932 A1CE uid Jung-uk Kim <jkim@FreeBSD.org> sub 2048R/41858FC6 2012-11-19
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFCqm1kBCADdoV45Z2rQ1wOqE1kuEJah67+nsKRI13YlHvg1ILW72ny/Ku+p +CT7E0ZpIxYUwc1P6KmheCXq234wRjmSZ7/krDHdFezT2ZUiwRZlWnnDjEIpzxok m92W18Qi7o8CMTou3iTKtTVq/c2R5TcrcC8y/TACXPFABhpHNngmIbIrQGUsHifE YuJwiETr8s76HhdJwtZIWPGSjFW+Yl817e9X0Pa4A1/Y3bsA/KNmZW+CIkv/zy5k g8wpGomR+JrLdt+5MUziZA8gqCJycZa640RUGAF3QtdMHd2t1/ERQx/wje0LXBdD p+0fG5b9IUH/UBtT4OJr3WjNJr7Lufz2KElPABEBAAG0Hkp1bmctdWsgS2ltIDxq a2ltQEZyZWVCU0Qub3JnPokBOAQTAQIAIgUCUKqbWQIbAwYLCQgHAwIGFQgCCQoL BBYCAwECHgECF4AACgkQJelpsdkyoc6sbwf/YC84nBelpcachGrIhPV4DLcvCA4e T5e1G5WN6WWehpio7yMoM3G4TbTvrDpzrlFIIYxVKEyNRxfRLKeKIDjb4S/vzVbY nH8kuwYSlaVSmHOzu9fwfgiceElKMukVbQRTOBa3e8JLxoRG3A1TCo6AZXMY+PnN 8UIWHbrwjyqOprXlZMC7BLyE5cu7oEHWpiwkXIuy3FJzfs06yzPSxH6DNGJSFZVk oHReo8fUBMs1Imn6w1DrDunepan88WAhRTQjM0kM0MrWI8oEnhtoYwWSm9FMpwK/ mdcdxTMuak4+GqKgZiOj02vMzqRYYEijCrUx4dKsU6SGJ6SMNJd01ETu/YhGBBMR AgAGBQJQqpyZAAoJEJpWstW/ap1TgYcAoM4MdE4GFn11n3b0nrEA+LzYQgDlAJ9j 0YnyI/0Il/zsgOuXLvt8+MeJSrkBDQRQqptZAQgApPIqqTzBVG6NukFvKzak0CrC 4zrsRfUGskoYXQTqdeM+ajRdZ/zMebcFdut/RDwJhPMJ4UV8HfGGwhae0Yy/qWs2 9NoNsmhicj+jrrSZLYsnjrnDqCjJ6wLHOEKhcPd9e/J3QdUlfI3tll+i1eqvr2xW kd+ct6IownrdvEhBzQsEQBgJYKy+pQ0KqAoJ9x5bnRN8dXzdq8o1FoVEN6zXNeGt n7TT9xMDMyJeItlvOOQyDr30Ne0vBBlPKJX7oiqEri/N4CeIDhUS6fd6qk9/ENwI jEThKJB1xJFzXWKpeZ9XsxPVSJn7KpBiiWYhh3Bphs+oitaTntpo3GYWfyzf+QAR AQABiQEfBBgBAgAJBQJQqptZAhsMAAoJECXpabHZMqHO6KkH/R1KWRN+t6zZRJ7h Xkf39iZ7DgentWwnSjKTUryPsUrr2IliFo/z2vef3dlV+RxoTIvK38Tj6hcN8KtS YSdCDuQrmGg6x6JzoO0RnFhZz753JqMVCeWnLKcUZXd2j3fanOAE/vvvYFFS5aq2 KYb99fj3Cf6q9TkRIKpjD4/P1XBcOrmrJLbsWAqNhESCFlTgXdTF0hdsRsoelebw watpgAdCNH6aPbx7DjAyVI6HxNODbWrwFGOxRRJvmP5dyGOD+LuFNJtmjJKwrZK7 ODRzrEZSW7T0Ghor/LWs8r7UDP9HWibxLF5K6Vsgh78ncA9PHxDsXGIMbgkynyfm ONweM/o= =cRAI -----END PGP PUBLIC KEY BLOCK-----
<zack@FreeBSD.org>
pub 1024D/1A725562 2010-11-05 Zack Kirsch <zack@freebsd.org> Key fingerprint = A8CC AA5E FB47 A386 E757 A2B8 BDD2 0684 1A72 5562 sub 1024g/6BFE2C06 2010-11-05
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEzUTbERBACySFcOGxN2msGiMvx9yhyQuklGdDgYKAzm/TNlImVQF6q3qhcb CJ6FaE99kFG5EmQXT8uCRSzb3/dIvNrhjTxrmT63kjs67mKnyHky3wP0NHCNSmZs b5Ky3h/SPOpb06S4zmhI7MGEm/xwBkQqc2YqfYTzRW83VNS9e/sTNzzwBwCguOPz Hr++4PFj0nr8I6r5HKMrfzcD/i5B4dhi25M/KlQsM2dh3r/z8KZ/79gmHKBJMrHg zI3sczQvXNo7jgaJwqgSInlfSoKKFyBw6Oqr0kP31E0K6ZKdrbpH982BSx5qtGe2 xnDJNHrSOtgFqg3EW9DaYImdUmUOeW31evMwhjCYGSZF6iNVh6sahfZNFwmEgUXU +zBJA/0YeIPcQNdOapJ8H/ATRH7SLyMME+GIOx+85VCD2VBOq+WCSN8U7gJ/FFTn 0NCVAVtPt/IAOMCZTob2as0C4w3Ho3YZTnl0jl1taYCRQnENQoVoT7cCqN4auypU 0H2EvGPGUie+iZ4r+G2LLdrqPMiR5UTRcZuPk9O3VWXPpeJuoLQeWmFjayBLaXJz Y2ggPHphY2tAZnJlZWJzZC5vcmc+iF4EExECAB4FAkzUTbECGwMGCwkIBwMCAxUC AwMWAgECHgECF4AACgkQvdIGhBpyVWKvcwCfXGP1APXbQMWyacrwv4vfCjdTUpYA njYDgW1ok7AiabZjdT6APpGeqDKyuQENBEzUTbIQBACYKMjEfC82aby7YMRmNqCR IDU43ipbpRsUSz+TdHe61OYBL3eOFM5N4gp7tTmLisoW7AzFdiDgM9CUv9V/+ucO cM+Kmloqe65XWyCQchCISe5+8mMqFG617aDvQihHjho473IxlersxGS76WG7RDUn EP7gQeU/MzBcKi5Wk1ocOwADBQP/ZAgj3Oub0ntbBealsqEydjhysMMCOjOWJ75h lmBfH++UXiN3rFdzHzGlwLhTLY6I992YZM5fYPw/ta3w5Y2Cm8c3QqG+RcoyK+dH c9ce80Ddq1DV4F7RWNhjl3ej9kOneb0XhPdZ3FVDlc0P/88+5nL4bRLMuzp7g5rI ONhG5W+ISQQYEQIACQUCTNRNsgIbDAAKCRC90gaEGnJVYhriAJ0Y6dyrFOU4sLuR +KLw5h/8RgCNPwCfVayO/zLdURlB+BOpbmyxn6WnCLg= =sdsn -----END PGP PUBLIC KEY BLOCK-----
<jceel@FreeBSD.org>
pub 2048R/2AAEA67D 2011-09-27 Key fingerprint = 40D6 097A 174F 511B 80EB F3A3 0946 4193 2AAE A67D uid Jakub Klama <jceel@FreeBSD.org> sub 2048R/5291BC4D 2011-09-27
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBE6BwQkBCACllA3LvksIethpx05Q3MwzG/bAcPBlclrl/tRlPtPGYqYlSfRc iVWKzOHq7k9+vVkaMmGwCyjj7/AE4vw2MPWCKODX2awW7xG7mcHWUZBYBcK4b+Wp 2kpUrxyeZwSmzdqj3p4t9vSyY9njTNkRaJ3B1ozlEx+8vq3SgFHZFglHjuyyDi0R S8jMIXrHJb3mhnTABRh90vIj0eHHsuq75YwnWdBNyFU8t50zT/mshUCGlX7UWqEX WhsXXlqNqcFRW/AGpqwj8lHcLC7SyrNB8wu37L+duIqcmnTeT6aOjHc57Zle8Jdj EtUVtRoJ4txRnHLQM3B4sZ7ybP3sCTMnPzV/ABEBAAG0H0pha3ViIEtsYW1hIDxq Y2VlbEBGcmVlQlNELm9yZz6JATgEEwECACIFAk6BwQkCGwMGCwkIBwMCBhUIAgkK CwQWAgMBAh4BAheAAAoJEAlGQZMqrqZ9C9wH+gJzw7uvpz5VwJRN3buK4n46v8qU YFQrWwGzVO0R5QMrFcN6x7FzZupLFx3BOih1ak3UPVyJ3fcMCORAHU1QkCnwCBnm IUNRGPwC2WvD0hiBcBXpe6BRbshyeWkvqaclnSvcOWUZP58gmJnLZjCs5ke+se/T gZgSTTuN7mMFCG7MA4EXcvtIX8VWXWVyXufXFdBQnQkuLtboetYE692063YUIslK URw53loB9jonBkZ2lWPkN6Q0HF/34HrP/Bw4ZZnYZ/gzfFhoQdrRxCBaK7R2TrJ2 kF2FSUtsCHJWgLq0cYygf4pCz7oYTt9x5IuubH4SDAjV65JgMic2RKkehE25AQ0E ToHBCQEIAMopCcGmuQPYBVgEcl1bEtwG87mJJzpTNBlOaE7JCUK7KSI+9qE5o5Tu jqFF39mu3Gr1kecsmtNNfCNW+ja9MtTatcnsMWMhZ5uNFUG3y2+Kotp1DEWTAZcM 9TnX9IrnyLQvyLVJT5LI4qEcsAYHrLyJMrCu7c53M+RVigvimniKvW0yBZECxqYv nq/b0BSJovmtdXnO3wHLgz3dDcMnOAgGNsMpBztoRjiC5ssSCEfnCMLXVjmOa6Ji kRL740TTNK1HK00Wk0pfi5NEiTq+XTyFg0ekeMZIIIRQZHkFFA/ThJoEvvOb9pv5 vkxifCjz0NFTecttnpVDSPWq77KYM7UAEQEAAYkBHwQYAQIACQUCToHBCQIbDAAK CRAJRkGTKq6mfXU6B/93a1Us9ESZfzwjg5kd2Rf9GtzJkEUlEKKJWkG7eK/6p3pr Qlrv2S4coikPCbasdxi4INbQbtDP44Hr6LNCRXB4VCeDbOA0W5H4hO4y1kWXbdTN X1pTXBPgj5kFe9lFQK9arHDgJsJaqKtDETlTmH/iI9xc51ZM5aeB4i963KixnPFy KFHjjAynTZSIMd8JXYul+kWpSSP5dckvW4G97PPoqbz4lsDUsgjf5Lg1lhThjlDz Jwm8yXz0fqORkB+wlEj1fsF5itmP+sG0YipncjFXGf/0ToggRucsSlDWBV7l9wBo HeAGT9bpY64DAhB5SLQBDphtBChiit4TJqkWVs/4 =Rt4u -----END PGP PUBLIC KEY BLOCK-----
<andreas@FreeBSD.org>
pub 1024D/6C6F6CBA 2001-01-06 Andreas Klemm <andreas.klemm@eu.didata.com> Key fingerprint = F028 D51A 0D42 DD67 4109 19A3 777A 3E94 6C6F 6CBA uid Andreas Klemm <andreas@klemm.gtn.com> uid Andreas Klemm <andreas@FreeBSD.org> uid Andreas Klemm <andreas@apsfilter.org> sub 2048g/FE23F866 2001-01-06
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 7A== =E/l3 -----END PGP PUBLIC KEY BLOCK-----
<jkois@FreeBSD.org>
pub 1024D/DD61C2D8 2004-06-27 Johann Kois <J.Kois@web.de> Key fingerprint = 8B70 03DB 3C45 E71D 0ED4 4825 FEB0 EBEF DD61 C2D8 uid Johann Kois <jkois@freebsd.org> sub 1024g/568307CB 2004-06-27
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEDetekRBAD7mBgP351FCNnqp360OUy+ZKCr2IxUU/Tyffqyrrgiol16kTEO bpImo5cgZcw+y3wTSgGxwbb+UmUcJhLDO0olDNOCOYdBzzKfTyZwLzgVaC/XZ2dE LQa+3FnIp0btyU9vermk7GqWJqvVUTnMSjinqWS0MfgrcuEXjXTQ1b3b6wCgutKz BhEasg38JthFvIownezYwHcEALNJsxEnsfEMm+DQXPUvWTiScu2QR2v0BVVzfg1w DMaEnSjw44NF+cyyKXfqx3hYkboRw66GMvcbfl7AYh7ThfDjof5MHfBbe6aeJwd+ pyVS9BRiXMDbwnuPm31K1zsyCr6XeQquM204Jb1fdMiFEi22A2VxQxAY4cjenvgx 2UIFBACBHtPfsK8QyAXlNtTQqvMEQe01pXm3u90pL8DBoWsWR9vDIlnJLaMgi2jG xBNQp9UP9ZxS+BiAoEkUficsoPvoMkzQBSnfcDJfnyCXranBuuhsF4mzvEO8uLJw 4NwT+7jij0udeWe3Ymd4ppWHEADhx7PLdYdq4Kczuu0XcGqHarQbSm9oYW5uIEtv aXMgPEouS29pc0B3ZWIuZGU+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgEC F4AFAkGV02gCGQEACgkQ/rDr791hwtgJbwCfeBGfFaR0IIUhvfVy7GYFQUjHuYQA nR0Vl/9xS9SbGpk9nqDCHooXgrCPtB9Kb2hhbm4gS29pcyA8amtvaXNAZnJlZWJz ZC5vcmc+iF4EExECAB4FAkGTw+cCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ /rDr791hwtg4zgCeNkjhClKqeDjTWvoSuh805WDuXnUAoKFid8813Hg7HATB4UwD 3KvmHBIFuQENBEDetekQBADtrxEvnshp47wNGP33Vwas4RtDVp40lC51yVFj9Ior zXhq9SD20gz8qPCwG3a4Srhbh3rgjPvzzqcjSE/axk5+LwJ2KHySlpfwu4wTtddf o6JzlJYWtQE+bcp65vnd6L5DGJsm1KmRTOZOL6wWxTXft4lgxfg1MEbzOKcL5YnU BwADBQP9FCPfDZYwAsZya5h3aAd9yg6dvDsObs1D1MMIiygr54/cmGUiPcI6zaga hTfDiDGanlBk1idFVKh0A6ZEza55NA45lJ02W9amWvrjG+PB8wTX4IWRAmDN4ql4 QuahtHsciUVzw4BtHhPtM1+DpT+C6aPwclpmxX2Az8tHDjHKdq+ISQQYEQIACQUC QN616QIbDAAKCRD+sOvv3WHC2ICsAJ0fvZ0rq70bwTIWfgYq3N3fSZfR6wCfdrgZ /8nwcdMpTA2LAo1YbndxFW8= =VCND -----END PGP PUBLIC KEY BLOCK-----
<sergei@FreeBSD.org>
pub 1024D/3BA53401 2003-10-10 Sergei Kolobov <sergei@FreeBSD.org> Key fingerprint = A2F4 5F34 0586 CC9C 493A 347C 14EC 6E69 3BA5 3401 uid Sergei Kolobov <sergei@kolobov.com> sub 2048g/F8243671 2003-10-10
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD+GP80RBACjmIRFKqJ337zOjW51eExucWRny0pu5fuGaxuJmGSbKaJRAORU 1jx9i/Cxcw7iwrnbR5xeyjWLDb7FIAemPltBItt0tE9H4pQXgP8d8VL3eehguMda o0yfP7WUm3U9uriJEJ8141Yql5IR0e8isQa+YsYbkd2RmDdCMDdC3W0Q9wCgsquv jc1gvAh7ypvhk8VLhflAeZcD/jQclE6S2zLZ1DSP2Q5mmuMS2ouRV6Z+fbWKF9XF TSxdLevWcXmPqvsXFT75cz8pcBIw4c/wVd8OsPU2fd+1LZCFdms1PqLjhUfXgVbP Q1Pl8zCAyriSnR2+BDwUMGzEgidkTjmjlbwhGzPsSJ8rv4i18xYs/JbmkeAV/ZBA e6jrA/wMU3ho5aIJ69KxZb3bmPVHYrqL8Q3n51uYausLxdHDMxVvjL06VAGWbF/h TdiFJ1ngMKfcfzI5/awpKwb9FPbERuNvmT10MDKumFW3xSAJMRzxh7O61u8N7dmc xLdirICQMRN2jPo3v8T2ANsdydVTn89nqdpg4Bo9Rsz/Fdnrm7QjU2VyZ2VpIEtv bG9ib3YgPHNlcmdlaUBrb2xvYm92LmNvbT6IXgQTEQIAHgUCP4Y/zQIbAwYLCQgH AwIDFQIDAxYCAQIeAQIXgAAKCRAU7G5pO6U0ASlRAJ4mnVHx0rA5dhw0scFGOddP cH/w9wCdG6HPWlDpXFB5nkpQalMnGzLAkka0I1NlcmdlaSBLb2xvYm92IDxzZXJn ZWlARnJlZUJTRC5vcmc+iF4EExECAB4FAj+VJGgCGwMGCwkIBwMCAxUCAwMWAgEC HgECF4AACgkQFOxuaTulNAHJ7wCfbcMzZiTmwuTD7wLTxvzC35OQE1YAn3et7KAt aLZuVXYIDROr33RIlfcUuQINBD+GQA4QCACIrLJbs3SkUJpuvYC1N/iykFYGHKPM L+XCCK3A4HL6f+GyCpvajz62cjUfuXv/pkLjcYANnqKKPJu6Bj2rFmOG785R/RPD o2dl+zlZ0fggQAv8zZqIP2KyQRSVa44Pxc/G1V5odcg/QOcKU+FZrkRXoz8SqfDU OEfarQP687+DU+Th0Nwn5M20+0ml7yw0/y9DtggWXzlWyIdYfhU+8HckvzgXnUFA tPdfDUzUxEjvVBUwZ5iHtUlId6sHiiTCS/fbnRzwJA1Pu1E52B2AfsLxFrwV5cRC ASfi7IGhZazGCctqZi4hbWQCB/+ipEVGct+bD9BpW9yS/JiMAxcwE0ubAAMFB/9F k6mZUzBbxQkSbXP4w1VSxf2m/lIV9v9M0LCMwjmcsJzsdLUG/i3Zo+hAjT+GznMU DVzPHq55LiNs2MKC8WKHXgXFCB2uoZvlGu88I2JjucoeibtC7zbKmVOntuY55zTk uiGkGRawIIKC6oqVFV0EGXxrcJ6v3/0vgBQSva08reETZaUFe3ivt0rU0NSbhVJ0 1WiPXk9wFY0ccemUVmdcX4hhC0yyBB0px4qbEBY3+mtHpFVh/r24GXvWXkbLowGd nmKeigX/tlRyYgPHLM2goUHUYe0erbKp2fyeQhockLOWY0DBFcFRK2kSx9HYdtcI N45tvtkBza2O8C7uCtwgiEkEGBECAAkFAj+GQA4CGwwACgkQFOxuaTulNAGwbwCe P3RXUuqmNGYCM0IXPlop9XLZIcQAn1B9zRfHFJm7tgMI0A6Avybs7V8i =EDjf -----END PGP PUBLIC KEY BLOCK-----
<maxim@FreeBSD.org>
pub 1024D/2C172083 2002-05-21 Maxim Konovalov <maxim@FreeBSD.org> Key fingerprint = 6550 6C02 EFC2 50F1 B7A3 D694 ECF0 E90B 2C17 2083 uid Maxim Konovalov <maxim@macomnet.ru> sub 1024g/F305DDCA 2002-05-21
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =WWB9 -----END PGP PUBLIC KEY BLOCK-----
<taras@FreeBSD.org>
pub 1024D/8ACCC68B 2010-03-30 Key fingerprint = 5128 2A8B 9BC1 A664 21E0 1E61 D838 54D3 8ACC C68B uid Taras Korenko <taras@freebsd.org> uid Taras Korenko <ds@ukrhub.net> uid Taras Korenko <tarasishche@gmail.com> sub 2048g/8D7CC0FA 2010-03-30 [expires: 2015-03-29]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 EsKTn7/B =meSB -----END PGP PUBLIC KEY BLOCK-----
<jkoshy@FreeBSD.org>
pub 1024D/D93798B6 2001-12-21 Joseph Koshy (FreeBSD) <jkoshy@freebsd.org> Key fingerprint = 0DE3 62F3 EF24 939F 62AA 2E3D ABB8 6ED3 D937 98B6 sub 1024g/43FD68E9 2001-12-21
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDwi3FcRBADkiWSSJSOX38CIPgbUnnDQ8S79eZ0zQYnYn5aeRMi7w0B4SnQP 1DcFZ/EHNtQWJTCaQBWQZZWvL1ZjdK284YrpSKs7gfoV5BufcFqKatewWZUfsUad FEKTXLXlZa55151UtFy9erkA22VWHmqkauDFYl4DiOtaUWCX1Gg8xCvB3wCg0sbC /VtANEu2XbxUp5pGmReNn50EAM4vLWfZk3T2woHN0VBOwEk0BM216zfJQGLFUFqT nLKezO/QqoCCcVpH7rwV0V6NI1w6YOSx14CU+s83iyyO0KlRypoptWKBoA+cjs/y 3Iy05K147YfWUhgkKcyw/Qwx8wCDaetG+qZCX4nY0EByezFe504uDkcxk5BrqBX8 E6kzA/9vSG+J4aejKRw9z7Ku5cLV9ygXCksu325uY2t+J6b+48cT8eFMOpgUHyNV m5ypOL31KYRPkOzK+iiDoTPODh4Zg8YZLsgWdTrC0ZQW2nWPNd3Zv+tLAmiwVjIV x4XqtFXh4nhI2eM/PXhdN37R48OKB0DmrvdH819/2+9upNvO/bQrSm9zZXBoIEtv c2h5IChGcmVlQlNEKSA8amtvc2h5QGZyZWVic2Qub3JnPohXBBMRAgAXBQI8IuKv BQsHCgMEAxUDAgMWAgECF4AACgkQq7hu09k3mLaWwQCbBEeFWt8z4HlnAys0FYB8 /U63eqkAnjKz2Lxj14N8QYtbtFThZRB5fq5cuQENBDwi3GIQBAC79Y5tcPi18bZd REXZmDOnLc0gHD9y6PHgR92BUCWQuafcxfQqqY2ESF/JQ0dFfBEkCAmYU2YkPZA5 A7skmv9zHun/bXAP02hrvMU1Gt0ZHIzDV0EaO+uxY8eSKg4JuxZzpgzWCIxI/6uh ZhOuEF/uql7IDKMQcOfsvVrF8cZfNwAECwP/UvxNG/RUOlOHdRo3hY3H5l7zmaCi AwUU6Z+LxDn+fwERX7wL5rasafi1r7/9VvGADfelpxKR0kZM1eKYPtri1zS6Zm5a CC+QVyyoTcb+x0mWForq6FxLDf7+l/O0TuEG7VOH4RgLaT2N33yoScEvxdB/Qo4w KnT39F7lYjbzBvGIRgQYEQIABgUCPCLcYgAKCRCruG7T2TeYth30AKCzp2KXBqsa N6wOyM+tHQ4DKNMasgCglJCipoxpnnvCsGiZJv9AgNQFDGM= =a9D2 -----END PGP PUBLIC KEY BLOCK-----
<wkoszek@FreeBSD.org>
pub 1024D/C9F25145 2006-02-15 Key fingerprint = 6E56 C571 9D33 D23E 9A61 8E50 623C AD62 C9F2 5145 uid Wojciech A. Koszek <dunstan@FreeBSD.czest.pl> uid Wojciech A. Koszek <wkoszek@FreeBSD.org> sub 4096g/3BBD20A5 2006-02-15
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEPzlGcRBADVxGiWQYCSd/HJfQi958sIFwxgfaFLyKaD4u8yhdG6s7SOz6mR 0jTdoMfg90n8CUvDIXeHj8Hhot2gLLmOK8BHXdR5/PBkvoOEAiqWjmFSsxUKyKTU ntYgpIwNtitVVdunp/kBk/w36Ue5veNL2GtqbVRMgp//ebV3GBZtAr/QowCg+w6K 5vebaggZg2H4EcdAJ8N+5wcEAK4PGjLtf6KWwFh81TihtD91EAVIMjsZO6vzofK0 QpMdHDI0QZgvraCpsoLppYpj3dp5XL6mxRCCpFpWhhRP8aocR2ujvXYJY49qGi/5 EowE0UuIrdv52ubCHlUWcyYdrnIa/QAh9JpHJIGdIVlysjRujygctUH1HK6zZYSa 8R0DA/4o0up4kfwkdm7FGbFy5arNR/Zbe51dsgkA4aPPn3MymIBR1Tb4z+M0uHya VKyER9ISP7gafpjpZ9y4D5lDWwL0m5oLfgm4PqMJ6/44D4chDRlnkM8w/l6VqSq8 XVmU9iKH0J+O3/jX0tE2Mbk2gL0pZKeBPcnkBHLSkLUHWNrETrQoV29qY2llY2gg QS4gS29zemVrIDx3a29zemVrQEZyZWVCU0Qub3JnPoheBBMRAgAeBQJD85RnAhsD BgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEGI8rWLJ8lFF8hAAoJemHjhjIrhB/WY+ pFmKwfqNWN4YAKDzV97FKMrQsq2ECzvWSV6hF7QMkLQtV29qY2llY2ggQS4gS29z emVrIDxkdW5zdGFuQEZyZWVCU0QuY3plc3QucGw+iF4EExECAB4FAkPzlaYCGwMG CwkIBwMCAxUCAwMWAgECHgECF4AACgkQYjytYsnyUUXbMwCgqqKc+pI+XY398xJS phO65/Z5dQAAnRVA0RLAJHRzSN9aHy9RyCucN5oJuQQNBEPzlJEQEAD7Lq9Bd3jR e4C1u6kZCnKsbkNl5Ogor3cwoowydWrwrP9KBis6s7e4Zsek4ylR1QzV77G1ar5/ 9ecjDM+Vok/R0sGkufRUfD7XBI1mG1KJwnxZYm8aRYCERTRoXDThoJwUoHzwVn9y Xi3gyvS8GRLCWlAXYwJrYHn5ccCKfrOSdQG10ZWEj45zDUGFw+PSRtAOfCze5cAl txiDbiOER1/ryQaKutMPT3A0zDbTuG30/m9F7XDXsF/S+7kWzyfO0156xKORcJSD pYMILFsadN4WzSJSJFvUTVSJ4b7ljomKEJCjZF+cbPDNoiNUobLedTAkMPpPigF0 KjVGX/yaUEaMR1GvDQ+UF7zf8ncyrdcOUtacvc7M3hL9Q5noO/CbHvqRW0g3Gvys kHkQJNL215gd8wxCrTv0OWfDWhOOIHjiCFTA1JGukVh49wt1bYAzn0uz+QOGfcIt JllvKP5vrvjtL9LpXsWgoKO96Ijr2t72ofuG+q702u0/E9G8oTNSzyi7t+KThxEB 5VpoJItTE7A8nmuqubArIzHKyVvThsQE/xMeTE5zruN/PmsdV5zWHuJU6MArtYUa tNr5KXzK6UDsmdHG4bUjShjUh3wrAHLIodR0gRISM8Nnyf1l5XBh+iiCoqQmscZ2 +4la+9Z5j6FrRDf16CDx1n7bx6vTkMYG6wADBQ//SJf5I+N2pAKpV8u60B1LI85i 84JOGvCenEeLqnK7td1IRAkKkv0anyqMSpxTFdxect8tUPKttvTSkn8x44Seexx3 1bfwgYoCnUUwxNegu3kv+gLfCJwsIbXjXyHqEapPHNmbTPmlZKWa26TO1Cx3W5QA UahlUkhFhMhbfnsxu4hJsMD/i6SPCGEhbp0jfHvXQc0VdUGJla8TOJXzfdPtwozn skDrrmugYtt3x2Dzf3eYr+p3EScE18uMBvcSvbN1w2ZOz9jIaO/mQ6dGpFGejo9n D+8KAb3ke/ZQ0ov4gnWXsKQLdQsVUuPt14cLsXfK1jhlaydtEmP8h24pR2CVUkow 2N2E7KzXsE0ZPc6na1r9WkI85Hd1y5qZ0zxOVijraFYu436LXewqgPSXvwlc0jMe Uw2DgMEHK+AvMpNVwVGs8IYwVfy1EYLRguP/DR9NsmzVONEfkQxVSzUoGlk//m0b bSqpA99Mbye+clfEjh0H8kgx9xOYmKTyygZRCC9sKD8W4WstZQ+33UxssaVu9qrf m7qDl9+GYT+s8JDhzUazNvKi+xbiy7wJtIE0dShMJKN2/m2iP+PH6RE3GMfWaxjB Pp0qn5VxJ3Ev/VFervSP6SnMuE3BqJ+aU/bSVx9mZMMLsrHuG+qA5vCC5vOtnHJQ zJ7o8u8XzbuX+v2pq9SISQQYEQIACQUCQ/OUkQIbDAAKCRBiPK1iyfJRRZQ0AKC4 7SDQifU3JEpy7s5MsTtZQ+DuUQCeInUZzNAQW4xzNapS3xMV2mJ+6tY= =sg8v -----END PGP PUBLIC KEY BLOCK-----
<ak@FreeBSD.org>
pub 2048R/0D1D29A0 2012-03-01 [expires: 2024-02-27] Key fingerprint = 7774 4FCF 6AC9 126B BD0E DBF3 5EBF 4968 0D1D 29A0 uid Alex Kozlov <ak@freebsd.org> sub 2048R/2DD82C65 2012-03-01 [expires: 2024-02-27]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBE9PQzABCADlsyzEaEjFoIM3Z0ob7pYdIDXZD9T1p1+4o3AMTlS1Bq4WWJb9 Y5er+hcpISDHVmn4FAnIJfstZa4x5jBpbs7D3NzF07yj+jrxJ85A1FEGrViS0YPI I2kannA53W9q+bSkj7PztFVnj3JR7HQR2yTCxWE0M9BTuXpmwJCMOD+GUJkB9/2M jCRmuZhB+0QD26BC20VDiLQcXN7Y3iQOkc/k4QUt0/bN8cTXghNnJEbWT7uFdPZv XPKmGfmNnfnI7cuK+Wc16OTe+24fn7y3CTnHm3tEai23ZbeT7qCkfsFG/5e5BRhQ XJNeMXbQ/Um3kHPD7LBkO8mPab/qsOXrkeO3ABEBAAG0HEFsZXggS296bG92IDxh a0BmcmVlYnNkLm9yZz6JAT4EEwECACgFAk9PQzACGwMFCRaOagAGCwkIBwMCBhUI AgkKCwQWAgMBAh4BAheAAAoJEF6/SWgNHSmgIzgIANNwch8RoaAW2rnpWVDGyLjP 476zCfJVIA3DDEhM5dhAIlEyqe7jYh4kwWw7+Dk8yZQMEnZZ1Dst3qasiD+CviQc pQgKOy2kERvPkYyLES8GiS6RD178RSRzZIpnhaE9Fl/rdjfSOOdtNlNFdmUK4WLz GCxaJx+betmXKzImIIhkgGhisvhTg+P9saDRiVV5CwQNPJnlJXUUraaxXoNMosVx BZX24aQQByaRxY2CyA0IVGhnwhgd5dCh/TI37/h/CW9RBTahvxhQcgaC2pCgPvl/ Pu6EdT2w5vAmWv4dF+QRBoEqZpdhUoOe70W4xh6oV3MhA+BwWMoPuZsYCLjfPbu5 AQ0ET09DMAEIAOkzC6DXsskYWl4NRlFnakaf/My802Jkw42cNuCIrClkl2R/sJZD wMLq0JDPcffNJJD8CP3ivo0huh6m17Jw/Gg92iijmfoL1YPPx2ZO3HOv+li0JMy7 yYOUYRNccUP3RqBpja1upldDLXharu9CN0H7VzIJxSwmQkqcRWvcw/PkM9brJ071 ghyp99p26pT2II65O6pQOnBN2MSeWP4QY/EiqLn2ldOm+aeH1VfoiAKyiObrgJ8h tEJrFfkdKYa4+mEQze47lVJAywTeojLKumswHctp+UiF/+Msk6Sutnkj0i/a23h/ pqYekr6fod0QkwJxdopfBHGLUyh7aHUwIi0AEQEAAYkBJAQYAQIADwUCT09DMAIb DAUJFo5qAAAKCRBev0loDR0poDDXB/ddOa8+TBg5aU0oVPQ+bDA60b7sRb0rmrn+ hB1mXpdMtI0kHnJxUUI6Rx3tlfD2XE9P89oFyDxiOKjLFLAs6Rj9fCzp3EijARzu 7EUl9+Guo9p4jAOiQ0e52XN+Qz+eYa3SLDj/A3Ql2hbp7jWKa8xtM32oyC5nAL1Z YRx+p9eVNT1UwwQkpiYG8VviSZZQBVoiG9h1mLzkzDj6EmEOaI78L/MjTJV4Gvcy tn0QaaYzTPIYUVbm269WNbuRaNbVdw3u0yhgV4OKaWjTpx6Ngv7EMJ8+SK74udGk nejHYo4sCxROs2Je3yo1hYgrVxj/8tNWj8Phl6nWoSssGpbdIOs= =iXGb -----END PGP PUBLIC KEY BLOCK-----
<skreuzer@FreeBSD.org>
pub 1024D/E0D6F907 2009-03-16 [expires: 2013-04-25] Key fingerprint = 8D8F 14D6 ED9F 6BD0 7756 7A46 66BA B4B6 E0D6 F907 uid Steven Kreuzer <skreuzer@exit2shell.com> uid Steven Kreuzer <skreuzer@freebsd.org>
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 97ttC8vSig== =hOc2 -----END PGP PUBLIC KEY BLOCK-----
<gabor@FreeBSD.org>
pub 1024D/2373A6B1 2006-12-05 Key fingerprint = A42A 10D6 834B BEC0 26F0 29B1 902D D04F 2373 A6B1 uid Gabor Kovesdan <gabor@FreeBSD.org> sub 2048g/92B0A104 2006-12-05
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEV1zhcRBAC4T9pbx3J+/0qY5k3IVGMGpI31SZHwtO0ijDBA3V0mIOUpty/E 2AnAQ/7GZEvWtMd3pE5xwoicgSQbPcnsHG9kqG43vvr2DdByY9lavqoXPOXKeQnr U/Z5eYvOgT5Da6USxXI5obFdNsCwwKYt7Sbvfj6L+FVWSS8HW54f9xuqLwCgwCRv TxVBZJ4xERWsk3nJH4B/GKkD/20ddbTHSTBuBpulmoOUNBcrnIEYPRCDvF/e07yz sp3KJeMegdPEwBoy6bF9R8HkVgSEx/jdMSZNeMeAOpAKDlTUyTNJRgzVwqu+SgOj GT8IzhLNFaZ7wiKoA0yRhGb77C3IPzjSbcOI9A3vn9DkStWfDtjTIOxh7FxF9+H5 c5z9A/9++LOF8L9VPHUNi4h/L/jE6CWSZgeTUIMkSwALrochNi9xIr+kS5pPxUPZ MHVdG0+gK3wNLD6KGpBnHB65wWbb85fukY9y4YgEv0+TjpPwkbwlAbKtt7cf7RA1 mYtYStbOedPBAE8Y89cAcmQ4a4ViJFWfSTLJorAAy73pVns7ibQiR2Fib3IgS292 ZXNkYW4gPGdhYm9yQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJFdc4XAhsDBgsJCAcD AgQVAggDBBYCAwECHgECF4AACgkQkC3QTyNzprFGOACfYLDfWSz4Ke3HN+suyrD4 iwnZpycAni9084/VZ5iAadc6I1o81cGFX9GtuQINBEV1ziAQCADQBlmiWzgTaAem j1rFzVhEe3bSRg4qmcyiUyIbVWj8Ecc71c33fSHdgjHnAqKGjxKIkf7qoSziLWL7 b2dxUiI/M7OUTi2Tdy3nJa/GJ+PK3CK4oM/oSMGOSUz7d3ZaKwZX4d/GmpCZ6U6w XFPymLOQtlDRTyz31QPCQXnI2CD2yswSdrHID/LuBDx+24vA2NyGy7WdUmSSchnE aw0fYTiHbjqI4xsTS6wkRJ4QRcHg8vyXc9Xd0/TKtaFBURWfHDC9RWNjisrhc6q1 89o0QHBW+UqcYdWPUgTO38hr7k8U8LNJT0a7axsgwiwLr1oSS8z/RjdiFwuArM5M PQgkvMYLAAMFCACIMIO2gjtPL64mLy6If2TPBTqb+g+HaWWk4lxsUN3A7A5y9TXk w3Hx2jcig6P95jIKyiTJkV5ZqcUuwtEWK/nK6M4o8x7QQwLAfH6x/wfsb9Gays+K wT448Xhi05cOnIuKyFXXzaNRgGe/G+fxpxqEjmgP5y2NjB+KG/h4/Am25h9Ylm+P EYq8QMxwYS+3TpfCMmgnqTymegNZpbQ32nJYKnxn9j58sLqgp7BjekgAYi79z+Zx 0HoeGPiehGLdymoj5aaiTCZfTB5CRMyn+dbvXUpl8hdAEG72q5D7JH8yicOANHUd NdMIcDxTJcHnDQeXdSrVWGTQmt4iuwfweKlmiEkEGBECAAkFAkV1ziACGwwACgkQ kC3QTyNzprFoGQCfZdGMd7cQFoCW1DBGMnNJ9AO5WmQAoIM4BtfriXvx3Tov88ES DHOhFMi+ =jLzS -----END PGP PUBLIC KEY BLOCK-----
<anchie@FreeBSD.org>
pub 2048R/510D23BB 2010-04-18 Key fingerprint = 0A9B 0ABB 0E1C B5A4 3408 398F 778A C3B4 510D 23BB uid Ana Kukec <anchie@FreeBSD.org> sub 2048R/699E4DDA 2010-04-18
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBEvLStoBCACxnU/0ujcU5D0Ph4eGJhRfFSxoH/CBIH1AnaQyrsmzMCfdFav+ IS9qdAHeNN1GugOKwvbP1TQQWQjGNiPMaUzWVE55PrLfQhTq3q2t6Q/9MUIXEKkX p3bruBe7eruQb4sN9Q113lLTZBTs8GsWI+iAqaeuT2eKhYuJlqI37Zp/36k87cTE sQg37HtSfkjLOCEbxH9q6JGCi0rwa4DqlPfwoPEyyMuTcwcRm4QhNKUvJ9jRFze9 YYMXQIgBMX5L0j94mnq52HkXstv2rK0xURKANtXcqb0ciQUoXTRN0K0cYHPbNHWS PqZMhpTYd9d+SKYHuOGUJbsLhtaGzBLK9SQ3ABEBAAG0HkFuYSBLdWtlYyA8YW5j aGllQEZyZWVCU0Qub3JnPokBOAQTAQIAIgUCS8tK2gIbAwYLCQgHAwIGFQgCCQoL BBYCAwECHgECF4AACgkQd4rDtFENI7ub6gf9HsBwaT7CmPenZPPJk+/GXDiNWPW+ Q7c6rAEA3072j+h/RDTnhKip9R6/4SankmrQSA0NCO1EiTzsgV/3cS0k4v0XKBrT 10B1WrxI5Tx0osEYNP4GhPWkEO/6jCTF+8EsKyPujOvw9ps/OBgdYhD+gwv94SX5 IymGWrBeyncmJDefcvA1UoL5XjhgGtv6qhmzPmN0+PamJlPd0X2W0fb/w9/od+5+ o7olzxiy0kVaYXBizKVQ482x/oN3kXwzMmxkhN4zmoJpOzvjBOw4Ar5WiYldgL8x ZggWcR0NLVejeyi5VBPxsPh3vfvfvvjhxfHuS/bLGyBa/tO0bKxTpbD9frkBDQRL y0raAQgAsOEgWecCnr55Ny/V3LI+apr6wq5Rt37E+szExLEzGPQCeSE2BKWDNHGv KWYuTow6dZtCySg7GXW0fEV+QEvWvDa3y/zGjZOSVwcm7pk3Vm3Pnuv9a52wG6gm +a0M/68T121UK37+u5u25OHZaMaGl2poaeD/D+jzzvYvEDk6C84FNDmLXZjMtiuS NmLsc+kZodFbsrUjdFZXykFKP4a4D8Gq4nPLvDjRB5ZNKFjy1HQxpOJAkZpK0wgz t1AymA+9oom984jiPlV3DSrxrJoAndQeHoKDz2dhdZ9E1CC0Al5aAhVn94nfdwee GEL8N1KTtQLBmP4QXFtOAupBiqq0IQARAQABiQEfBBgBAgAJBQJLy0raAhsMAAoJ EHeKw7RRDSO7B1gH/3I75IrWb9AAEQRYIoGJW4/vPB2CQ0juG2XX657wzgDzL8uD E8Lb4zQJa1RtSj8Ma/Qx+cL7BNWypZAUIrXrhZiVdAjvnQ87CyW2bjZ1w4zsv1Qm mbKT6TmfMuGQLUjnoOwdRh77TfyLirKsXx1535UY6gH3YFAiZaf5H4yosC49tizF l5WNOv4DmHSJ5npLItAORSrBDeJWk2wLjp7N+7Hy9lbyMegAwYMQSrQTwNRGok0K ufjKvZwbUTmo/MYaLncTWpWl/ZFL21s90vBM36q0RiPDVCkZvqrdwyqb56Fr4KUH yl7TOEgJibW2V19o1SPGrF7QFfC3nE7S407UmRc= =+R9q -----END PGP PUBLIC KEY BLOCK-----
<rik@FreeBSD.org>
pub 1024D/C8550F4C 2005-12-16 [expires: 2008-12-15] Key fingerprint = 25BB 789A 6E07 E654 8E59 0FA9 42B1 937C C855 0F4C uid Roman Kurakin <rik@FreeBSD.org> sub 2048g/D15F2AB6 2005-12-16 [expires: 2008-12-15]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEOikikRBADU4oWe1rkbd6R8HeOR5I/Uw6gGk0zrBPNkyT9PAtNKFYgAOotZ fJbo1czDlN5cstvqBOUKbmeOwqkMi3/DT1N0VjGq6eocBCvBhHZ/PIyIonV18JGI /wYYQ2k0jAOpehd7QYYB6w06gi+siJ9UY6iEhVxrO8rF5Er7RYXICubDEwCgszsF U/rIMr+yw52uGDe4d1wyICkEAKI7uw05tkwQutLzjx1ZOCu1o8zLepZ1QMRDn8io EyMRY/pCvge7k1kjmm/6eZ3M39fPrvwcpfsRF/dlgEeQI9Pn0HDJWG7eU/zg0wrQ VkvELJ6qtJvlQRKMh51EfLkR00Fy0HsBWfc4U82GvBLU5fPL1FujMeVLJtZ0W3q+ nHjUA/4z0JVp6vNCkPOr+BiJhdJsiAYkGUdqHR/mZcChcRD9jJVRO1JDQQSvP3o1 GvFqqRU5VsvYXKVKlVoWQiKGu0Hf/ZIOnY8ek49nTsUTm1MDPIFqMl182uxr3s40 DhBmKzhufDBkgtNdpC2SU0h5mwkF09Xo1goVMn5DTbQfRfNfF7QfUm9tYW4gS3Vy YWtpbiA8cmlrQEZyZWVCU0Qub3JnPohmBBMRAgAmBQJDopIpAhsDBQkFo5qABgsJ CAcDAgQVAggDBBYCAwECHgECF4AACgkQQrGTfMhVD0yS6gCfQyXa2JPiyfy0EFzQ HGwWrDPjzjsAn0IJZGfMUiTegcmtpu0lNv6nMUiEiEYEEBECAAYFAkOjJ6YACgkQ TclL2LcfYF1uNACgxXMrlmzdzmMwriLK+T4OKcffa/sAoOCL19v4pPw4R4KI3o7O MOacY9bIiEYEEBECAAYFAkOjvw0ACgkQryLc73jOEF8XvQCfWcxEwIwZ4eZld/Qf eB1hsxJeDxUAnA/ftOsZtbG4o299udw71y57GHMPiEYEEBECAAYFAkOj44IACgkQ hdRQRWtpGwOERQCdH2AVEiuQohXgOX2PdCIZYiufCEEAoJgGONTdR1U3cp1X4Hhc cuAX+Z1IiEYEEBECAAYFAkOj7gcACgkQXeTX/hlJ3IB1CgCfbgMdPkgLWLQ0HHKx rR1nB3hzAiIAnjOwE3TRytoNLPAAuECgudqkqpnRuQINBEOiklMQCACBiZ5wcv8t jUjCX2iZ7D5qQiWuJYPhMpBS4hV4mZXhM+pSjFctc9PFw+WHlaRFXn7zGYP404AS tvqmnZBInBdal+L7r9OhPj7vrQcYDHJTMDflHK/YhfBwMj8/r2jkV4Ja4ji9nazr Gbq1wJpP1jrsBuFU0Qy4HRZwSyKrFNGqAEsiZPxgMAY16fi3IuVbE78HlUq+0I6Z C90z5MbGFGSsZRbWJSxSCOqQ7YxqoaCqxxNeF6fIYQdL4hatuH287dqmru6ST6j0 ApQF+mnmlwKnrLSzXw0Hbvfj8ZrGyAc9cLz2oCwVwvLsP+ohiNBDHc+FFXcBxIcy kZi1+6AxjhXfAAMFB/9abRCZ9AoTa+Hd6ajC77l/Ul4jlj+R+DKQ466kj+WYOdeO XQtF3e1g89cEX1S3lnjIZGS3uGZ9YehtxMwBXlOCIyyLhNxlRWS4YJeC2E1q1kZm +xs6IC47g1E5yVpm3qcUp6HKwO0SGLQiN3ECSZfBtNEcEScAFGq802lLLKnMRBfV DpwXP4jop+90NSKP4RKzgYdXXz3SAq3heKeuBOHl3biaTmvh/FSoZtcGSqWLPR85 d+5GZVJRzrwGqrGN/3zRvd1PbTpeJ/pbT/saFtsVCmlPoUOpKeyDHGlPotQo67gu 1cwcr8h0D+oYPMLlspZFuMXvLPxaNB8oRLyxVzUhiE8EGBECAA8FAkOiklMCGwwF CQWjmoAACgkQQrGTfMhVD0wzaQCglkceiB8ksT3+rwFRApwaWTO8ey0An3w0Diff 8juSFfJ2ZBIPyPzTGgMu =0i68 -----END PGP PUBLIC KEY BLOCK-----
<rushani@FreeBSD.org>
pub 1024D/439ADC57 2002-03-22 Hideyuki KURASHINA <rushani@bl.mmtr.or.jp> Key fingerprint = A052 6F98 6146 6FE3 91E2 DA6B F2FA 2088 439A DC57 uid Hideyuki KURASHINA <rushani@FreeBSD.org> uid Hideyuki KURASHINA <rushani@jp.FreeBSD.org> sub 1024g/64764D16 2002-03-22
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.1 (FreeBSD) mQGiBDybt48RBAC/KCE5CLVZsYvpmgrbum7JHgIgnX39EPMQmL9Y3LmYy6Iwh+OF iIjIqW6cDeCcxHoJBwbSUerC5ueriwZCh46gSnLVjnmBLlGFXyxYbSfFGetMVVSR 6OpiQuITp4ZhVw/UoCGloNsIFKg6l4JMwqZmsrZPdl+zUU79RV9Zb4XhFwCgsRIo 1mf9I3rNZ8f1Jv69nUR/lJkEAJB6fY1rtUNUwq+JXOnFGD0KnC8isQNyOeQ7Y1il HQ9mGVKuUC3Zh0FzvdsU7Ks2ss9ynxfbFXnyyAOqXwTzU9pMuW5oLOUmjqwEfAhV 4S0xcnPcfGGJ671NNeqa8X4LQv6ECWai6O4CbA4aluRqhHNxT9dgEai8RN434LQE tGxcA/4mIlvVoM2c2DRjD4+/Oj+i80ZMpOgE1RkuQmXoZ/DwLD3EHbIBX4cNffOd FzxYrKCrXD50MehIw/IhFfHN/GdEN7NT87M3j/ydSYFluoiLv8FXO00mr8cDi3wF q+LGbniEhVcW6wpUz9zVFmdLAp3HQi1uRAHqYmdSs6gqjl/+pLQqSGlkZXl1a2kg S1VSQVNISU5BIDxydXNoYW5pQGJsLm1tdHIub3IuanA+iF8EExECAB8CGwMECwcD AgMVAgMDFgIBAh4BAheAAhkBBQI+L/K/AAoJEPL6IIhDmtxXgj8An1YuXcp0iurB ZYHiaYMzAb+lYhALAJsEAKTyeqO0plIvHBV49L5CErZo87QoSGlkZXl1a2kgS1VS QVNISU5BIDxydXNoYW5pQEZyZWVCU0Qub3JnPohcBBMRAgAcBQI+OM7uAhsDBAsH AwIDFQIDAxYCAQIeAQIXgAAKCRDy+iCIQ5rcVwyNAJ9Y5N6lIMXVy4sYCdgQvqDR xkUN0gCgrsbQwfTOBcy8Mw/UmGOE4/fwrNa0K0hpZGV5dWtpIEtVUkFTSElOQSA8 cnVzaGFuaUBqcC5GcmVlQlNELm9yZz6IXAQTEQIAHAUCPjjO/wIbAwQLBwMCAxUC AwMWAgECHgECF4AACgkQ8vogiEOa3FerLwCfRPWW7lC/pAVdD2Jo+8rcWTKQ1xEA oIQ/on62k7YBO+buO+K472a/cW2MuQENBDybt6UQBAD/ZGmvwhzt9YWhF9q7mLOT iEMzL2AzBryLzzUphejgDlJN/TIoDtaJfMyNkO16FbUq/WLQbKYFKfDunqx+eVSi PsneeYw9nAdlcXVgHRjoL3vj5O7PIg4qqps2mnLKEOXLAH2PNTYY6+8T0NQicdht YIraowzLoKRdINuDQrCpEwADBgP9H4CwbNJtQAHwS9ATmfL6F2Bg9LWe1godSWkM N+nBxKvMqrajJWfxV09f9gzn0qmMZT9u2DwcADzRQLC3jkzgOD1f8UiAuCuDEE1a vg1iCuyiI6m+MMWCkOCj/69wIu1ilmWqkn8SeoEwN+hwqHa20ue7vBhXreQanJim sq38ZdCIRgQYEQIABgUCPJu3pQAKCRDy+iCIQ5rcVzT/AKCgYOyEMpIxXYVI5gYM CwQ3hkJ28gCePnTu3Ke6lPoQsMAo3TzKkUO9Wj0= =cXJQ -----END PGP PUBLIC KEY BLOCK-----
<kuriyama@FreeBSD.org>
pub 1024D/FE3B59CD 1998-11-23 Jun Kuriyama <kuriyama@imgsrc.co.jp> Key fingerprint = 5219 55CE AC84 C296 3A3B B076 EE3C 4DBB FE3B 59CD uid Jun Kuriyama <kuriyama@FreeBSD.org> uid Jun Kuriyama <kuriyama@jp.FreeBSD.org> sub 2048g/1CF20D27 1998-11-23
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDZZXiQRBACWc1PcCjIpTl6aCyOMVfz4jlRSKblwib2s07TBwbgR1zMhbPie O2K4ZJqTcG4EnbMLEyYMbYwvNdOfUIjMW3VI1PJhRwWthTcbUjubzTu8Zxw+sKME ansth0xZW7Ax29UWQcTPxs4SRsCPFO8t+aWwZOm6z0fb5l1vMmKNJuw1+wCg3ZZB qK93hQPaOObwglnAIrgNpScD/j0VCEeC8fTMk+ZIo+z0+bUGPGU5cq+4XVXABYLn wMfR6Wr5Ys/3VCx4Oyzzgp/HBzcE5HxJukJ2ur3m9IE+uFfY4+HEFiwL++Ke4TWU 7rn4rKjJYhGJ6iqGFwuxwmHdjcBh/38X0kmrCxyPYpt6xO+sJBP+QOABw3PFlMkF PUY5A/9RGU4mm6K7cteNdbHDI8yFNorQs8W8fRb8yP8bw1T8qB5+/rQ5jxAfA5sr FCuZsKNFdph9z/I3eFYVW4P8+9gmI2FAAAocWheSyKttAFHx63JRyBqXq9xmHKST kuaoQVXeFycSULAPkV67j0/zDL2mis6bRpPopINGgjkia16u6LQjSnVuIEt1cml5 YW1hIDxrdXJpeWFtYUBGcmVlQlNELm9yZz6IVwQTEQIAFwUCOmRRlgULBwoDBAMV AwIDFgIBAheAAAoJEO48Tbv+O1nN4+YAoKeQztEcbPBbbX7DZAHOsGZLrZ2NAJ9a WEoFGMT3keQDjtjUI9c8IMh/l7QmSnVuIEt1cml5YW1hIDxrdXJpeWFtYUBqcC5G cmVlQlNELm9yZz6IVwQTEQIAFwUCPE3sswULBwoDBAMVAwIDFgIBAheAAAoJEO48 Tbv+O1nNMp4An22RFzdv9zdNLlcY9GLPFyUrniqiAJ9F9Rhic6qBaXynksNw51Do +cLWkbQkSnVuIEt1cml5YW1hIDxrdXJpeWFtYUBpbWdzcmMuY28uanA+iFcEExEC ABcFAjxN7RoFCwcKAwQDFQMCAxYCAQIXgAAKCRDuPE27/jtZzYFdAJ9BFckSo4/r SMe9UqbRMPK+8FUumwCfYH1pt4t6jFlulLk+9wYA9wISL3e5Ag0ENllesBAIAMSU hrKdEdKzQXHzkoE4Nzl3hb6dtDmjgYr+3X95wBkUvtrk2CeYG3RC1PNwd1sEFEWp IiSzOaQDzxZmtBGpMkQ1It+CW4sC5Cs2TQ59VHLFw7HWSYMNj+RchWuWkhwipnX5 8wu6To12Mu2MnyLszX2QIUxrQme7UpKkJgCct60C1DZLoQuZmfEZEyXmSfJsizeq eeJuusZwOWDH0ixuFVK/5A2RwaWFMftdhh/Vw0EkxdQnMJ+7zJ/hbY64VR7uz8oI 5smfjVe0yqXMACREUzXmqn+Dc6Pz6ESVTv2XwIy0UxqxiYk1J98Cf3ffi5+e/q1d rej2PzArpfzaygu88uMAAwUIAI/IiiQJupz9BaCws/K6j4Qs5iWRiSB7vaZfgCr9 c6vx+mIXX1Pblity5TOn9qXMv7vUM/dgmWSBbkkrvfD++H4ybJjpcOZN+peeGd0G /UfiQFMarsj9MozAmhzI5L00JqLOf4u/XBv0rh5HOX6t+M9MfZYL3C7bn/LxmDif prT8jxoA2SC+lPGSzI+M+ay/mz8kDmGD7fCS+uAFo5T1kjU+ed2dhXnl16gRR8NO 6yAdURIC+xs6P+7L8uOiZfuk0gzn5RC6CYrEKiGZf9VqTRA2vcirPNEZR44jYXS3 nL7x9pIsHyCyxEvojut7iGWO6qbaW/c+MRjcA8jgp9OuFROIRgQYEQIABgUCNlle sAAKCRDuPE27/jtZzZksAKDbznARmDIIxZjHfAry2UJFBPQbvgCgl/ERQfF++Uvw hLaVfesP/NCIt5Y= =AoU9 -----END PGP PUBLIC KEY BLOCK-----
<rene@FreeBSD.org>
pub 4096R/0A3789B7 2012-11-18 Key fingerprint = 101A 716B 162B 00E5 5BED EA05 ADBB F861 0A37 89B7 uid René Ladan <rene@freebsd.org> sub 4096R/B67184C6 2012-11-18
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 HQ/SHnxO1mCp/Oz6KhHd/Yhg+jM6 =RTPm -----END PGP PUBLIC KEY BLOCK-----
<jlaffaye@FreeBSD.org>
pub 2048R/6AEBE420 2011-06-06 Key fingerprint = 031A B449 B383 5C3B B618 E2F4 BAD0 0F0E 6AEB E420 uid Julien Laffaye <jlaffaye@FreeBSD.org> sub 2048R/538B8D5B 2011-06-06
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBE3sxXABCADDNxQCO8nHrTUJMV3tTT4Q1m9Cx0ZVeo1f/qUF3IMO346VYbQ7 4ghzG7cwW2Ey8uGJmMl25p6CLIMG8eFPJHvtwCFa2CB8abab/WsfELNUOuMFyW8c HrnZp7B3I5YnlcIhm8RlP4labHTcU8mkjd9tlabmvWcXIIMKZO6IxSk43h8Btnol AUW8eyHi9so5ohwnGT/0OYskYlPKpBUAIXIOmaXmg08bdix/EjWtWRaHVWxdMIQl ZMseByIlSTGCSdEooZOFELfaPWOWFFQ0wTi/fiepDWB9WG8VvZH+1wcxotlCOVnZ jcpYeK2scPg4BabHtd/r2UxDsxMClZkg8LG/ABEBAAG0JUp1bGllbiBMYWZmYXll IDxqbGFmZmF5ZUBGcmVlQlNELm9yZz6JATgEEwECACIFAk3sxXACGwMGCwkIBwMC BhUIAgkKCwQWAgMBAh4BAheAAAoJELrQDw5q6+QgIl4IAMEHNmSxHv8XxeGDNWwJ iw6RirQOcm4WPpWGtvChlvZ8uTuZgPlqdSBQEGu7bSWTTK6zplOVmK4DYpUL2Hl3 /2/SursUjkKO2QUkny7m/fT9qlJP+PAbXiqVa2naI55QvOuXNNx4zSusP8q7abbR bCtYHDeFE/DPNLI8GD/0Hmd8NWrPvHIwhGsK2ZzTuoGUV8q7zqgjlu7JB2JwH9dI tdMrVM2OgFLt3Mrb5F1C5J26nut/UVSkHPC1eW7mg8HnvCUK41HA1tKhkbXD8uMP 7D3zgsuU35GHA5p9ARlETIauiVNsDzNgxWwU57BJ5hvGsmycF4M5i2/IOx/V5p2g yr25AQ0ETezFcAEIAMI/+5rGOIwZwC8qGny1upk8z/XxCReW3liTVOe+f1CaPOIh nLTpyD7+Mxts64IDO2tYQWZTw98yayGP8xCRKjBkgjOIgX/SInoAc5YAUMWMOtl4 3kGqR+RboQWKKq83VPNGRnwTXu3RMlonyt5T2RV86lgIbDSabaAUnLjWDpgP7POI /IrpKLSJp21TXHMGobpxeLcXqPApRdKgJL9bP3+jLqbKJmLzhgwzjxpIosAWqRkb PJdZejCfdC8mU1DpKCDUQRLVD0Sbh69jsSiepSh6BIn+lDpfRH1nLoGAhomG6kwC pG4hCXAB6V2EvF0EBQmDMmORlDJFejDpHEbXxlEAEQEAAYkBHgQYAQIACQUCTezF cAIbDAAKCRC60A8OauvkIN0qB/iBrnK5dmFQ4aGQesa+2myOCMgiszggnbzXDFA/ eky/jkIQiAr2xUAwQZz3iPrwzSpopCcPXKHnN7gsfRBUZ7ns2JmJWmyU4gxadbFl kMvB+i24Cav9/ucE8r0wyJKcquI3PiS4qpUzDEdNG/k+B9/Z4oqKRCcxrjSrwnuy iNFiIUl3AQvTgHQBpZGl9DA9zdAM+iPbm7zFwQBCpFeysEOv4bCAfHFuRGJ4xKyq tM+aBqAYzEWQTj+WBz+zYBHOY8VOn42fwBRWeR8+Ml0BxebrNh/uJZOjJp/IBZbc 39ZjPt8SvaBUTAfKGXPZ9O2NSNEExRAKFQ01NDQfN8xxH/Y= =QYhu -----END PGP PUBLIC KEY BLOCK-----
<clement@FreeBSD.org>
pub 1024D/0723BA1D 2003-12-13 Clement Laforet (FreeBSD committer address) <clement@FreeBSD.org> Key fingerprint = 3638 4B14 8463 A67B DC7E 641C B118 5F8F 0723 BA1D uid Clement Laforet <sheepkiller@cultdeadsheep.org> uid Clement Laforet <clement.laforet@cotds.org> sub 2048g/23D57658 2003-12-13
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD/bH3wRBADoVem06r8ivhxQhCOEH06GAg5J6iqqlKIo5BmOiQ8IHo8JzA9z TwFNbhUCMWzUusH56nNHKOTuFV7wHiR8nvK0y2yU5qTK3MHbfSeMVy4rFAKgyZae Wf1lxRHU+W/EksFaC31ljkF01TGHVMtpKPzDSttgrrMtgstT7QKWTKcggwCg8bVn g7MH9udGaSNY5hO3l9wIcusEAMD+erpSZgVfwojT/pliCwnvKRwNByhIWqz2y3Ly M2+VR/IjFlpOvT4Ytrn2VC4V1duahdowNQh5x0vUPagRRYKx67OEbIcisKsGQTnT m4FSRUfULKZ3M016uSsYNbuopctjrxHE1YJfskHmLnIHjnXhJjfmouQqOX8nQSh0 ryjCBADTi6z4ZvH3CF/C1egPsmYzJ14H2t51JUSHwEWWaj3LkILEGvHsywCIT7Xd R34B0hPIn/ihsJF4XBEiqJlZmFhfFUmSR3/No4TYKOtMAzfo6GtMv8q19U/LQaVY 1wYY0rWCqfzwcH9vSLlpHL9afqNBnVK3XiBGMCmXZw+4klu+f7QvQ2xlbWVudCBM YWZvcmV0IDxzaGVlcGtpbGxlckBjdWx0ZGVhZHNoZWVwLm9yZz6IXgQTEQIAHgIb AwIeAQIXgAUCP9sirQYLCQgHAwIDFQIDAxYCAQAKCRCxGF+PByO6HcPlAJ9gLehC AhRMepAZrGdPsPFoMB283gCbB6y04aeQlXaa9+xAm6C0ciAiXj+0K0NsZW1lbnQg TGFmb3JldCA8Y2xlbWVudC5sYWZvcmV0QGNvdGRzLm9yZz6IXgQTEQIAHgIbAwIe AQIXgAUCP9siqgYLCQgHAwIDFQIDAxYCAQAKCRCxGF+PByO6HT+eAKCBj8MXtxmq l0PuLGLnR04gnauqPACg8Rtgb2XwCrgcZFcjS1Fl7/SmTE20QUNsZW1lbnQgTGFm b3JldCAoRnJlZUJTRCBjb21taXR0ZXIgYWRkcmVzcykgPGNsZW1lbnRARnJlZUJT RC5vcmc+iF4EExECAB4FAj/gQ+4CGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ sRhfjwcjuh2wLwCfZ0Sqh6DY5U2ZDj+JrdqX1qzEaGMAn30UALtH14r1jMPPq6xn UuMfFjyLuQINBD/bH4QQCACbO8LantesOQKcxZS6WPSLhIoZerdMJ/b4DCd22GGu IM4eoWiYPX73cTMbN9cTEObaA0hvXEdn8vWl9/RBV6aL/fYhAqTVGWhXu6MBJiAv 0zFeliJl2+7MqzZjjr8GSFkhM3tXEzFr+7r7/Bqnp8hdzMFUS2dLcL+ZTXJuq9s+ xUNnwt0+Qy13VQU9whTZNZy3PHHa3XRc5IbZ5FnqMM3D7twlt0sS6j253b3CXw31 qEREoLutw25X8pbQeYJW8st0xIEY9z0MikBOJvKPAUani5+eWjuJC0FlXYM4qSnz zhBpDbQBuhQu5JgPPiXlBq+ta/prm6FyJjcK+EyJsMGnAAMFB/9DIGugG/5F+4XC dTvFluD8zbP6zwqWRuHX9JmA+oso6ruDHiZ+Ckdz0xBfD8yoyENIRnLmBxx11uZN upAlM2itsvAwHMm6zKGLwlN+74vhoCTzvDFtnyTSgC8as4kk4XCax2QMAueFpW+2 8/SSLqIK2UWT8/5SkP0QaN5qSFgRwhGxYgyVP8pflrjL32u+fEwo8EjNnOUHX4WY uzdzq1t+0K2AnZH5TiUCPy9iLP8o3rBm89Qdh45wzqN9DOGePoc0v4opQK9+3TRa vYAx6izrRajiGgUHLcYeL2nQxyi3LBkKvbp4Bw/dpxGTdmPhtyU8jYqdP5SQbrFJ 4DwXqs4biEkEGBECAAkFAj/bH4QCGwwACgkQsRhfjwcjuh3mfgCguHMdGD3Orm8e pAU+aCOCPVkkx7AAn2yhe79FYbHDx5Dx2LAfRRRyfxjR =lVoL -----END PGP PUBLIC KEY BLOCK-----
<mlaier@FreeBSD.org>
pub 1024D/3EB6046D 2004-02-09 Key fingerprint = 917E 7F25 E90F 77A4 F746 2E8D 5F2C 84A1 3EB6 046D uid Max Laier <max@love2party.net> uid Max Laier <max.laier@ira.uka.de> uid Max Laier <mlaier@freebsd.org> uid Max Laier <max.laier@tm.uka.de> sub 4096g/EDD08B9B 2005-06-28
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEAnrX4RBADpu3Q03zK8ehNRHgNzTPCEVK/sWWr3hR39/hfFmdYcovwyMTis OhW87G6uOA5C84cewrEP866l3xmkS43dkgYhcaLxPYFB94OWzSk95AEgFACohnw3 l7WgcmHyZbdfCbqtuew4RY6Vqf/UzMVzOlvrAOsla5c4ImpaFmxBAFANIwCggiRI o0P2iw3gBY2y1aG+mTWKidcD/3O4LPoZItTzx3vWq2wQ5mwoF0n01wIhQk66UtJj LvZV53LzEEuS6JL6LKkl/AlxKaUoS9OUf9D7nyJu/dDYHDKCj+m1UBo3AkKUcutn FLgGFwHU4Apcy3CCblMm8j0w62EFnXjIjUoPBqgDUUrePvVfIgJbkFjl8e0LcnTT m+KaA/98+/pHRh9EvGKpHWIUc2qHNF1BfFFmq2wzmzu9MCk67IstOWq4GiRChyCL V9SYGJ5upRRPMvxAQD3DAclfuyMKk2a43rXM4DRbePPeqH7ZGi/yyzPOGvqLgLDF VboM4bNJPa+Z0PX0QU6o70fyWPXQk+23suxDUgYvFrPEufATO7QeTWF4IExhaWVy IDxtYXhAbG92ZTJwYXJ0eS5uZXQ+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgEC HgECF4AFAkYBsV0CGQEACgkQXyyEoT62BG3+aACfbtsTiMA94ttjwscgLB9cr0qQ PtAAn1j+sAozCf68cpUFjNc1YQyR47pRiEYEEhECAAYFAkES18UACgkQTVOzajVB ZGAPoACgv7gaBQqC40XWmJI5CqvsjBKupPsAnRWFhc/QkldYxGG7Zchg697ohuaU iEYEExECAAYFAkK+7JUACgkQbHYXjKDtmC2aqQCePdVXxOSZ/jEYuKnJe3HD2fl/ JXgAoOUsrK0IldUrazH9GBcxY4hl3CmbiEYEEBECAAYFAkO4ZKQACgkQ8nRzewv2 yFNmigCeJyZdNoRip/NXG7tNwXNQGq9npT0Anie+9MkjaCOWOWMO4XFyXBm0O8Ls iQEcBBABAgAGBQJEALTWAAoJEILS9urEu56fkYQH/A+t3UGC/te9e7Ubr/iZ6hkL tF/JANBV2YSBrM4O8wh9l0tjd+qGlq2+2VoW38fb6RmZVcAH+sXKm0BiP+v/EmDL oxp2DlR9V8QRcuLIITsAVSCIEhuzpMG8EiPSDQvc+Rx0ptYdCYaUvvp+aLYhc8BA cKoSDEygmtcOGo1tvAjXKoPnRqo4YFlfhguQB4UVfcf3jPUcGFRrYjGUu0NC33p8 N5fcCo0VxPnA/jdh87rYq4EWZYBThu6Gx9Mb7Jfzl+Ab8OJs0t/2nNFZlR76V/Ha 6NPM8iZ8qisVIRcUr5R9btXbjXxfFeNjDDv6R+0OTnuHOLvtEauJ2xAM8yaxvUiI cwQQEQIAMwUCQdbJMwWDAeEzgCYaaHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4 LnBocD9pZD0xMAAKCRDSuw0BZdD9WLjLAJ9zn1Xwr4/J4WAlJmRVg1FVaW/qgwCg oAb8wcvCIk37Vc4ibHoaLDlnx02IRgQQEQIABgUCRHSMSgAKCRDYNLsu7fxYhyQn AJ0dZKh3s95ck9EmRxwQhGHNZzE8CgCgolKTUWyAmMGfwQR4CTC+xKPwzKqIRgQQ EQIABgUCRHSVJwAKCRCrGD+pQphAQSKDAJ47Qtr4yLOnAoNrO0CIq2hADRoYuACc DMkwU7/tb4/wbhP8qPCayIEe6dWIRgQQEQIABgUCRHSgswAKCRA5vzeqwUN7dxVs AKCaTRCe6EZjB44i5pVDPNIjg99AiwCggpSqIFnz/lls5BcaSmqBeRYcj9SIRgQQ EQIABgUCRHSjDAAKCRCvZCSxPb07IB2BAJ4h74XSn/a5MJbif3mxZEi2arTRqwCf UwQZc1DwKjaCzupo4Y7Oe9oiX4aIRgQQEQIABgUCRHStHAAKCRDieO2QMatLNiS/ AJwP6dD8FKsbHNapegEppE6kK+Pu3wCfWyN0ZQa06MLQn/xJunzze2w9RaGIRgQT EQIABgUCRHSdvAAKCRAy22ifJoR+hI5qAKCO/nr4gFed8oqYUVG3Eg6GCXVh+gCf XZd9Z4DCd71FaJQ5bYvLRjodWg+IRgQTEQIABgUCRHSlxQAKCRAqTbBO7XfqQzOM AKCEWs7qjrLYe+FSsgKKTsqtlZUgCwCbBYtG4KsMNqlbs8nPHezcRYWrEiWInAQT AQIABgUCRHSrOwAKCRAitKPqdki4FQ5gBACAqUEeFuLKCYHCRMkwWrCcMw2KRDLo Pt3fJwDc//lUQsNZe0KpXCJv9K86+bgYNEByAPdGbxGC3ARED9dAg2WC6tF7UfGY w+AsA4oj/s/O7HeTTzlGGab/nIpzeZI671KXf9bZoohjjGm+V2gWtcVcpfnrqrLc 7pfQoH01jJ7LrIhGBBARAgAGBQJEdMpmAAoJEM1qd61qq03bnisAoN/orlD1u0wK dcptumJjoUnjOCwvAKCP2/K9c8xNqgQXBqgNDVKLLslgzYhGBBARAgAGBQJEdNZN AAoJEAM3EQzGj6jtffwAnRfgHkJYCVA6DHvRx8JBJNokZY2hAJwP20A0C+vIEoN3 fsuKPNhQyI3Eg4hGBBMRAgAGBQJEdK00AAoJEKHrLLXDSN7Ik1kAnRC2aJGdtUWh CfaHDvCXBJ6TAV94AJ0ay9Myhjmunw7+fPolmNIpCV90TYhGBBMRAgAGBQJEdXbJ AAoJEOWLS9iqGXOkxJQAniacHefxA0jAqU2PAeEL+g7mlLTqAKD3Cr3QGtEnTirj 1h3RD2TCOIbIKIhGBBARAgAGBQJEdJUeAAoJEKsYP6lCmEBBj2gAoKdscfFF1obc Oxy/645pZ7d77/XrAJ9syfxjyzPJGfgD+YV8ycOI/mGO6ohGBBARAgAGBQJEdKdG AAoJEMuu3ahKVag6yegAoOhVuTF2b/FTzFC/hXn7+6J4ecauAKCZc7xvSMvRYrE7 PZDWW4kzl4hAa4hGBBARAgAGBQJEdWzHAAoJEJsk77nPF6IOP/IAn09PBdGa3z9u AhVt52wO/8XOLSlIAKCJR+ZJDoOA3Mb4Wgoe0PQZ+QIHDohGBBARAgAGBQJEdu+e AAoJEHvDNTBle/A9ekYAn2Pj+m0YOFwVX9mExNGCIPgy5RRAAJ9MK5Lkktxgk1pW 0E+uYLcd4T9UnohGBBARAgAGBQJEecXNAAoJEGII2gDlIth8IaoAmgK7bk2lh6i0 hqIt3ICN2+NCmEk+AJ9J9TiJU4WXnna8ua/FyvquDpElQIhGBBARAgAGBQJEedT6 AAoJEP4Sv5MWA2EcPaUAnRYYL2HqMzaolazxkoLqo7ONNbp1AKCaxl4zHvXEJTMQ rryGG70jR+GtSYhGBBARAgAGBQJEeqbfAAoJEBS/1KonENpIoA4An3phAsRH8Z5k cgVAt8YOGQ4Bs5X3AJ4qsndyIqer1Q5BafiL/HdqWUWXEIhGBBARAgAGBQJEeqbi AAoJEBS/1KonENpI/nUAn0V+hM29bICBnCj/pn5PwzIDQ3UJAJ9+sJMC9YcQ7h37 Zh5lmTtEbnvuMYhGBBARAgAGBQJEfAIDAAoJEKVSUOZXTbpfYQQAnAvQZ9mqODTy w4QbR7FwoP24luyfAJ9FsJGTayFl/uhmoPGSPT7+Z5cXgYhGBBARAgAGBQJEhE+L AAoJEEdQmW/OAoFhAwEAoImXPk9xrkY0Eu7Qx+8RhH8Z2r/wAJ9735kIvFdemDKK lI9LppKXu+Tkn4hGBBMRAgAGBQJEdXbJAAoJEOWLS9iqGXOkjSgAn3Kvup48ST3E g5gtAELFhWoYHAexAJsF7O8sTSEGDpavTQmP6w+X75seJ4hLBBMRAgAMBQJEeetZ BYMB4BQHAAoJECJ2djMwHcD7z/MAlRb+6OEt7kiit8QC7VBcs2U5jvQAmQFfsHH0 V5CTC4D+WSsqzvB8AafJiQJIBBABAgAyBQJFVLZnKxpodHRwOi8vd3d3LnBhZXBz LmN4L2dwZy9zaWduaW5nLXBvbGljeS5hc2MACgkQJknmKMXTTQVkpw//fMOY/ado SF4u0a7yBqLmHlJZnKqv3kH+ZwbRtHF+Avn4/GWXr/6NatRx5JZ8nljD1xUJWhcS 9hy3BprkvE2mANbIDCVO87ilZhBfTQCJn2SblWbBGBrNnRuVwGZ9EmP41Xb+ysjV UFead61upEXtovGE2apova4es3JqLdNXYcarjMizycpcxxPXNcaZxL9zu1mWYYaM weIl3Li9q0hCP/hdo7WxgX57ImY3cvbmHFtcaCOlx9OmgCZyFP/NtBfOMJw8cP35 B1n9ebgfwtuz5AbMirG2FdKu1wb2jaBxq3SMZ4LTkoUelu119cNgL8v0lG/ckwW8 dHBAKrwqZcYoJ23oRRTdtyrGyHHxSt/bew4Qsip/K3b5BpF9frFTqCTCuDWBWn1W wwy4Grd0PrtRprf2UeBctP2xdqACbSYsvuQQHlCv6KdprzHLVM1/o99/Mn6eBspu J581P5R9nWknEKSZwKIg2q0lkRX6Cg30LnbLJqKjaeyNEmbLXut81dA77L0PGRYX gr9oK2+eGIXNYz0NjXkMw10QxCLACG6MUZbQc1iIIX6pnpIjNNzoEzWhGk80eQGP fWRnOuD27U/RL6KyccjreJbQc0pCVz4Ug+ghQpkFh8rxuHrkD+W3FL2CHQufByJs yWU6mDzkqYFnQB+mcnllzERymco7N/GvYquIawQQEQIAKwUCRrSXCwWDAeKFAB4a aHR0cDovL3d3dy5jYWNlcnQub3JnL2Nwcy5waHAACgkQ0rsNAWXQ/VjrXQCfcfo0 Erz7IlfnYn7HIzAxF31nbQYAnR3HJjerhgDSzfzjWpgUCuS4Arn6tCBNYXggTGFp ZXIgPG1heC5sYWllckBpcmEudWthLmRlPohgBBMRAgAgBQJGAa7JAhsDBgsJCAcD AgQVAggDBBYCAwECHgECF4AACgkQXyyEoT62BG1kHACfYM3aVAFcAbb0vNL4So/P 27k6CbAAn3D+8gt3GoTL7Q+B0LJ/TkI5HM+9iGsEEBECACsFAka0lwsFgwHihQAe Gmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl0P1Y0tQAn0zy sIJERZoTKY/rLw3e1C7oo39SAJ4i2BoH4lHdpW1oDnv1e7hlqXFTC7QeTWF4IExh aWVyIDxtbGFpZXJAZnJlZWJzZC5vcmc+iF4EExECAB4FAkAop8sCGwMGCwkIBwMC AxUCAwMWAgECHgECF4AACgkQXyyEoT62BG2wxQCeIRPC2d5IdKNyy5CHsdTZ4R4F RvoAnRWWKFoNd0I4Ing7oOetUH6wD/BHiEYEEhECAAYFAkES174ACgkQTVOzajVB ZGAnVwCeM6pxzqKkDmkUP2+CtJZVw+fpxOEAoORU3tdMV6Z/sggWVvt+T+9xGRMS iEYEExECAAYFAkK+7JMACgkQbHYXjKDtmC3MEQCg3/t3MX0hBoMDyum+kiGYgHSQ Z/wAoLhnkPNS7wQkr4uTTE0xcmPsKU3wiEYEEBECAAYFAkO4ZJ4ACgkQ8nRzewv2 yFMr4gCeK1fA3Yhvln5VCaCoYLyqUZ+eNAsAnA4ZSB1wLhy1+KmGveraS0nxkFYI iQEcBBABAgAGBQJEALTRAAoJEILS9urEu56f0hUH/A3zAQrzrLPPMWnNN/neJmss h6eyLEx9eABX1EOrrwapqu3+g4MvvLDFL4t6IgKxSx1wdOueJhPNESLpVAZH6e+3 VIE0iyvrCT/nWS1IzLHiv+zF9JgoPhjOVXbyo0Do9Eix2gYSybIdTGkP28a4zQf2 0nkJr60hwcRO9ZbdECSg7Lex+0iNrEZGzWKxMp1AUMG5k00/+7i/zteJ3Am6gEbP mttW4lwOjHxPHBmjKOvdABrTHeqtwbCA/NGl2PJ2MrRTI8NINvPIVpVOLvPGwyUp 7IQ9Yb6iTP3NBuGSfU40+rdQUTdGsWJYTUzLN2oY7JSDyBNNFSMfe3tahIkn4U6I cwQQEQIAMwUCQdbJMwWDAeEzgCYaaHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4 LnBocD9pZD0xMAAKCRDSuw0BZdD9WIaiAJwMr18Qw9ovub4LbTQp/UKQd6lQTACf U6b4ZL3Ep3RmIVOH8Q704RUXlfWIRgQQEQIABgUCRHSMQAAKCRDYNLsu7fxYh/Zh AJ93yDd8YEhcLn2cHY28l2SrWw9I4wCfdobz6wJxvP/p8+yPhZr2F7NDJ/WIRgQQ EQIABgUCRHSVHgAKCRCrGD+pQphAQY9oAKCnbHHxRdaG3Dscv+uOaWe3e+/16wCf bMn8Y8szyRn4A/mFfMnDiP5hjuqIRgQQEQIABgUCRHSgsAAKCRA5vzeqwUN7d9VF AKCeiTDoLZ9owe8IlDKUW1W4fCNj9QCgl+CM244j+7y85/MG10JFwmz4g0SIRgQQ EQIABgUCRHSjCgAKCRCvZCSxPb07IEQhAJ9Tug2UAZApuYyLwrjx3JQ58xQkbQCg n9Qm1svpN4DPbEB7qGnk2ugVl3eIRgQQEQIABgUCRHStGgAKCRDieO2QMatLNsns AJ9JjtQresPmW6OwfTnJxucYX0dmfACgu4ZH+pcWYdriAMt4IPJXexxXm7yIRgQT EQIABgUCRHSdugAKCRAy22ifJoR+hAf/AKDQhZzsIQ+cQSC1Xn0HCxJWhz5aPgCd HhfJQsQIMF1Oujrr6LtBezm61g+IRgQTEQIABgUCRHSlvgAKCRAqTbBO7XfqQy/V AJ0TdStk1PeDZbPvZeJxyHgDRv6XDgCePGqa1MwyzEc9JNJxMbtMhOSrWx2InAQT AQIABgUCRHSrMgAKCRAitKPqdki4FZRvBADsdB04GwtGs0nbsiMIp3SG0u3IYnr3 98i94hFd8wUnvUe4u975gPLqaCSRJkbPb779M9hzlF3BfzFaZWxS2ot0fVdhJwcA RDkI5Jpvo40/4pE57oe5b8dnAJLOBnndYLVPo41RAGk4f6bp6IFlprZ54YPRs6IN cBppqDcBaqHb/YhGBBARAgAGBQJEdMpdAAoJEM1qd61qq03b1hgAoIxTgdmUjPu2 3BlDr3ZQee7jrNs0AKDRQkQBTLswRXA7N+9k5j2QJh9mDohGBBARAgAGBQJEdNZK AAoJEAM3EQzGj6jth44AnRVEkCik7krnfQP/JsDGcbIUSVhlAJ41FRQkeVJ2GthJ LZOwKkCTVuEhFohGBBMRAgAGBQJEdK0wAAoJEKHrLLXDSN7IR7oAn0w/CnOKOa4b +GC37OZ3hM2UG0L1AJ9lGwKBuFdjpIptrxkXqt/54M1GLIhGBBMRAgAGBQJEdXbJ AAoJEOWLS9iqGXOkjSgAn3Kvup48ST3Eg5gtAELFhWoYHAexAJsF7O8sTSEGDpav TQmP6w+X75seJ4hGBBARAgAGBQJEdKdBAAoJEMuu3ahKVag6mLcAoLjxXvtS4p/j RZrUuJgtpUXNTc02AJ9Y4e7DMhiUj+7w1C69pMSX4kbuTYhGBBARAgAGBQJEdWzE AAoJEJsk77nPF6IOy8UAoK1xUj5X6dzg+Ln1bYNhW3KHLKfuAKCAYZ+h7k+4WUh1 iP6CutcydStAYYhGBBARAgAGBQJEdu+bAAoJEHvDNTBle/A9G3EAnAtAByfabr6H 8Ah/jFjYBguLBAwUAKCAV7fnhHshZpnj/oQLDds+zQFenIhGBBARAgAGBQJEecXE AAoJEGII2gDlIth8HUkAoIH5taCNbcyJxtpsHM25cfyucyKZAJ9liCQYp80BwO4z nOgCVHspkJoVZIhGBBARAgAGBQJEedT2AAoJEP4Sv5MWA2EcTSgAn1ZzLhn7ENjq 8GLh+U4ZYZ1a8Qq7AKDT+LJnt/rMwM9F2GsgAnkQuIyeJIhGBBARAgAGBQJEeqbf AAoJEBS/1KonENpIoA4An3phAsRH8Z5kcgVAt8YOGQ4Bs5X3AJ4qsndyIqer1Q5B afiL/HdqWUWXEIhGBBARAgAGBQJEfAH/AAoJEKVSUOZXTbpfeg0An1Po8Xqi85hk +veH0+oru+VQUlZJAJsFKAgGAp4gxrFT9wx/0eXpBfYtXYhGBBARAgAGBQJEhE+G AAoJEEdQmW/OAoFhwiUAoJ7hb15pudkdCiWc1nibsWfIMeoHAJ97prq8n0NuIbKJ oHCyhC3h4dMsWYhMBBMRAgAMBQJEeetZBYMB4BQHAAoJECJ2djMwHcD7lqIAnjAP jyE5E5UnMBI/EaKR9kJLiCPPAJ9chDiiQs1etWET832850wSsDTDTokCSAQQAQIA MgUCRVS2XSsaaHR0cDovL3d3dy5wYWVwcy5jeC9ncGcvc2lnbmluZy1wb2xpY3ku YXNjAAoJECZJ5ijF000FIYkQAL4x6yQu/FZfI/aaCy7O1gr2B03i2yvV2GaaOaHY gAmt40f3DzX9AYk/ISLWVB9zt9wEdt7S1Cm/DUlX3lfVfi5I9eEM9l3DDsRjxXz8 slgbIR5Rkfx9wDHaQ0FUPE/m1BLFArzyr16ek77TDxzQdo2jfWQfzfgfUGsIEUSz VmqpJTExPfsxPW53I+vUhtQfrglnCtFr85A/CtYeq17qtKIZsUGgrWGqasJB3Dg5 u+tDJPbfbwq+ipu6DKJctt+E74mKvLskZAqq3aWtYWSax+xPBxAaLYLeEs3o3H/8 qxsBch9/C3TeN5CJKOtcMw41nq6cofTCBCEucsR25pjRGexmmmtX9boBBqFC8JXx MyFWvW7t3lt2iKLEt/4FiQ68spB+VsLZeSTBt3xXg3yqRaMfSoJ0AzHegK6O7iz7 eFwWIgAX/129cUfJ/KAnvShtNrFZg+T0p/0w9nMh3dtOj/YEn6Kzi3J5+4ATlN57 ln29VH80238RjudDiHbDRNEaBQnBYKnJp0nqyK9yhbx0VeeP0dFqoQk0JmPojCm0 xixLQEzBoO+vDBOBZfBtqIfeV6QwTDdEu/XcAM1ka0eJxIxnyIs5hbkoWjpbH4Yo Rmj2AIEwwNOUFCov2c0m4Sakl3qO9IJrggQPCURwbxWU95lkVEnsMWXDXInUS92V g7XMiGsEEBECACsFAka0lwsFgwHihQAeGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9j cHMucGhwAAoJENK7DQFl0P1YrskAnjIDlGZV152iILDR4rWOffMh9UE4AJ9acnJu H0f+7Twsx+0kZLVarN6+eLQfTWF4IExhaWVyIDxtYXgubGFpZXJAdG0udWthLmRl PohgBBMRAgAgBQJGAcSkAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQXyyE oT62BG0dBgCfccJy3a+19YjynymN8l0Qym/hcaQAn0Va5OryzscQKFRaiSlgEnyl C0XdiGsEEBECACsFAka0lwsFgwHihQAeGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9j cHMucGhwAAoJENK7DQFl0P1YBrAAoIkmja1bQynop5qJ8K9p8rbCnj8UAJ0SqUf/ 01aCH6xDxGqPTgwY3QusGbkEDQRCwU/HEBAAhl9u9dVzrISpDQv3tT9nQlQw6AW6 4uW6ZXMprO9Abp6j452hpC/t/LSbGonB322QpHxpYeFr6NQcKbk0I0XAN39tq1E1 nDqNBaB3FpqFgsOlpSNqULSn1y/t7XXu/hDd/J/s7FXKr2vko5stZDTHEW+9oR9s 8vEVWjU8DAHltY7vIsHUEZwebotIbGObfUEkiNLoG/aP+1Fo6Gm7HyPO66oUtEmP vnrFcfGO5djvc0/3jxKNvpjdRO8fFE/B1996M+DFmevQbxXTupQ9QCY2Bc3sT4Ej w7hBB1Byo6AbkcfLn2A+Kua1zSn8jdQ+BEInCpYoOqfyNjY2RmLGX3iSIiDeldUB saa6E0sJhmR4PfQ1A9q31fLTIgw3Lnk5cWjIFIbxV1775B9JLNUKk70mGN0afPlT 0HUd6irME2yiASJk/pYC+O3aGYxQYfDCxIgPYgOVMyYCXnfp6OcvhkACiF1+0S/z XxZmEP9WVR8zVKPC0tXxcw6k5nmcwe9pgNABrUdWvo8KifN1NNkZB9+ZxAs+1wln DZvh08X6o6TjWOh8123R1G5gfPEH94huiQKZN70lpALI33vF/M9W3C/jzIZBMXLJ +bSIbj3oSSM9tNWni8mKBMUDuTGKKqaUdSXC73YP/BoJ34KqRsmhRMhBBBvvGfwK 2sBO2EoBSFXMzGcAAwUP/i8dNzyBAZrqCQLU0/LL4uztlpIenZT7suFjBmX4ntZl 9QQndVBeMF+YbyrdO/0tkpeu3lz0exJt4g3Zao7K8hCqxUTPS7+QExTMusAiQpQv te20zvJ2DbN63YXW3EGgBPlAmPQjtU0duzxa1dq4WHQy0dbBgBVWipMGBKpYj4mZ itIMLBZYDVOQbb/0NNtYc9OJXZtpffw/txiPbkdbYIkm1UQ5uh2uUI/N7bswhxef inn2ZHtMh7U+8EPXiA3V/Ved5gGjWDddt4AAYFDasKrHeb133kn94hBfPd/eyHJ2 tPMvgS2XBdhg5/rKpbL09YeuZGoW1QSj9a/1dE+5s15lhqCB2a4xA3Kyr7XWwt/e ZFBK55Sk115Z+Dt6Q0ZipXoZ7reKIdeZElM4IRR2GyZLK5W3TmcWLDllboluD5nX 0FI/LLazZJzTEWfMb8F5WvzyceQSsjc3Ngdt+alWYyIgGqXhhVlnUlCN+9R2/+Kh e9/ftBkqaaKph/O2+KImxJVgU1SNAEfsddDkV93sUFTpQ731l+j/1Oj+yopuR10k Ny1npFXVkfpUEn4r8dItKVPm6AtI7UMwR15DBdNSDA/v1n12M/koGOLovF9IZPTK 88hphpkHpVreSixBSv/KHF0mUeSEqFgtGNKbZUM+5KyO0I5jYMKpW90dtdHs5QD0 iEkEGBECAAkFAkLBT8cCGwwACgkQXyyEoT62BG0ivwCdGnHCqBuQeSM/FBOB0h/f 01jfP2YAn3DLpgqbfVb0MZfxffpFg3K6fWkX =jGQA -----END PGP PUBLIC KEY BLOCK-----
<erwin@FreeBSD.org>
pub 1024D/15256990 1998-07-03 Key fingerprint = FB58 9797 299A F18E 2D3E 73D6 AB2F 5A5B 1525 6990 uid Erwin Lansing <erwin@lansing.dk> uid Erwin Lansing <erwin@FreeBSD.org> uid Erwin Lansing <erwin@droso.dk> uid Erwin Lansing <erwin@droso.org> uid Erwin Lansing <erwin@aauug.dk> sub 2048g/7C64013D 1998-07-03
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.17 (FreeBSD) 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 Ae/NaLI= =l+7U -----END PGP PUBLIC KEY BLOCK-----
<martymac@FreeBSD.org>
pub 1024D/10B87391 2006-01-13 Key fingerprint = D59D 984D 8988 7BB9 DA37 BA77 757E D5F0 10B8 7391 uid Ganael LAPLANCHE <ganael.laplanche@martymac.org> uid Ganael LAPLANCHE <martymac@martymac.com> uid Ganael LAPLANCHE <ganael.laplanche@martymac.com> uid Ganael LAPLANCHE <martymac@martymac.org> uid Ganael LAPLANCHE <martymac@pasteur.fr> uid Ganael LAPLANCHE <ganael.laplanche@pasteur.fr> uid Ganael LAPLANCHE <martymac@FreeBSD.org> sub 2048g/D65069D5 2006-01-13
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEPHZKURBAD/4O6BhuBlZH0ptJMLl3p/A+Ts0gBinSPtBL0tA82TBSm2uFRd 8ehlKBMwyNQg1coTJWW8omEwAb+o4E8vwS4OOzzSCesNMgnXganMEE/STapgbXvi fh5Equ1GEeYyFvj9jaUGVoy1OxQzRAmVWtsV3RiV+mHDrBSJjLkS1CdaiwCg/RDB GxVmtywOwdmahcaHZb+dMD8D/1j417FsO9vnsenyS3fjLRNJJuIBevyX4WFqn9Bu fpt9M2l1C7YXvu4TMGkobUvmMsyEoPmQKAm66ickDUEnrwsLGzRWJBN/yoN4CSoS vqS04f59qObOfJa+a64Lg6Y5EGzzqnQvQK1A8Fdw1uSXAcauzucEMyld4sOsIEXi sLuFA/905RotLj6DVEl70+z3in4J64G9lLWdwOVmlANi8zUpIVUYobTJOMTdT7zI xNhYcjYqIc3WIAJycCJPMk9hk9SCra9ETNcU6GkusmyFdNr5YmRSRnz0etlTW6rF P7Dgj9b/jKMPh4NHJ8+cO77EPCsN8tz60LuMLXRboHAdrAi5j7QwR2FuYWVsIExB UExBTkNIRSA8Z2FuYWVsLmxhcGxhbmNoZUBtYXJ0eW1hYy5vcmc+iGUEExECACUC GyMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheABQJMmnBZAhkBAAoJEHV+1fAQuHOR SloAoNpk638zaargeIyuzTKfV3OEt8bDAJ4oXhCjGOmIhDbIjILHQLDG9ozsV7Qo R2FuYWVsIExBUExBTkNIRSA8bWFydHltYWNAbWFydHltYWMuY29tPohiBBMRAgAi BQJMmm9xAhsjBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRB1ftXwELhzkZ/q AKDyek8AbHNoIEFU4aKj9ZAxCyy57ACgtCnaOXA8TRY4ehdyAKHwwYROoJW0MEdh bmFlbCBMQVBMQU5DSEUgPGdhbmFlbC5sYXBsYW5jaGVAbWFydHltYWMuY29tPohi BBMRAgAiBQJMmm9OAhsjBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRB1ftXw ELhzkRNMAJ9gKkxH4i/zQvgtw32ilPgyVvlnqQCfRDI6ESnizQdNyXWwnTbzXnD2 Afy0KEdhbmFlbCBMQVBMQU5DSEUgPG1hcnR5bWFjQG1hcnR5bWFjLm9yZz6IYgQT EQIAIgUCTJpvXwIbIwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQdX7V8BC4 c5HzwgCg1hCgLsdxVIT6kx9/ejMcfITITJAAoO6xYuVfkCBk0lprOgAWeeWXsP5O tCZHYW5hZWwgTEFQTEFOQ0hFIDxtYXJ0eW1hY0BwYXN0ZXVyLmZyPohiBBMRAgAi BQJMmnSxAhsjBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRB1ftXwELhzkS7s AKDpM9SQcvBVkmHQBrb0B0ZaRMIU2ACg6NTKumOvbvDgF49sRaVXHl3WLZO0Lkdh bmFlbCBMQVBMQU5DSEUgPGdhbmFlbC5sYXBsYW5jaGVAcGFzdGV1ci5mcj6IYgQT EQIAIgUCTJxEgwIbIwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQdX7V8BC4 c5FD5QCgyc4QAoRqHFkyCcPIn2Onyh7OcLAAoIahqNOxLn6qTNKHTEc8uhKauHvW tCdHYW5hZWwgTEFQTEFOQ0hFIDxtYXJ0eW1hY0BGcmVlQlNELm9yZz6IYgQTEQIA IgUCTJ02PQIbIwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQdX7V8BC4c5Ga NwCg5LZThwqJ5ArvQVRDlgJDAub1jWEAoKUE1GjKMNd3y9H4AFAqr/kukqhTuQIN BEPHZMIQCACJjfWn16Cg7jpvy/SsGAulMEcLI6Glkzp+g0/JyYvNfvvaRGX1hJNw 6pr1u0yU2FJuZo5b+avZu7P7UnCu2ZWRk8y0WVNHG5lie/jPy0rQBF/DhP6FVqk/ TdcDECa1Ncp9EE9vCuZGvEgzjvzgxhQ06/d6Rtzxy3C1P79c0j661raPeWzX62M0 Cj0a0ljdvvm25hv41VT1GAyX/punhrhnBiZwm6UGVu9SQNsOD15pWqMKD26lpwP9 qA9XHnsOknL3yXl542T9BWffZh2I8OUE0XL1LSSsoPC6a7wV/Vx7cgTDLU3Pv55l ERY0p8uadTOCIu36tPkmkuJfoWJF4OQfAAMFB/9YTQ1dN+c2yl8C80VJO07wdNln VKQNcCKtuIJXRygcqC4gj8EI4qMofuJ4JTSWdApJjp9AgxFWol6AyYnW6oQU9A3D GVfeCc4MpduCFpdnex4U82UdwPB8905kAmuH13OIV3vIEqknpqaygDrJ95E1rYUQ lHzlQTHk+JxdqeDvvQfmrLRhPzgQtlukl4wjy+Kbp7Cr3X247c+5y1iAFCJ+o+VO dSlNlckHSWbV8yKvJMy7iF/HfvxJmMR1koU+SvCuOcL6A/CvS0JdLo6gIJJwRHFb +4iZBR9UUuU4AQBH4HIeSCFREczk8BTIPR/97OQI7FmGUSFTafxLHrww2p/3iEYE GBECAAYFAkPHZMIACgkQdX7V8BC4c5HIQQCdGivImEAN/fic1R59mKWpF2NRNJwA nRUyAyZp4AGCki3wKPxtkeS0295b =DB+6 -----END PGP PUBLIC KEY BLOCK-----
<glarkin@FreeBSD.org>
pub 1024D/1C940290 2003-10-09 Key fingerprint = 8A4A 80AA F26C 8C2C D01B 94C6 D2C4 68B8 1C94 0290 uid Greg Larkin (The FreeBSD Project) <glarkin@FreeBSD.org> uid Gregory C. Larkin (SourceHosting.Net, LLC) <glarkin@sourcehosting.net> uid [jpeg image of size 6695] sub 2048g/47674316 2003-10-09
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD+FkxMRBADL3ErUi1Ma8ItiZAyif8+XF+sjNQkEzw49rLGShJhVGWqRXbPT zGtTkyDmvhWXx0Wo0ogcEZPuKG8gJyTvrDktLVeDus33zNzemuBVZWYyvdOAA+6e 3kDIodoFC/ZjrdD3fFO+CyisIKfAee3xqX++izsbxw5BRZ0ra0gFlcVcnwCgzkdF I6KcvzNUso6rxD7yaKXAY+MD/2OpMpMIbUDCUh+oTyV2WZsEhhZqlg1L5omSnzM7 D8weSSedaLXyfxcrNhvuhJ7pX2sTccIWwmaDZ0cvw9jK54hZuBs+GdpglWIxyKIN j+V9rQdZbpFk2/36LpxB/FDC2r9ZrQYXSEghl8gVKcFYfPgayvhZK0qSbux8LPzV mDMhBACn+e4vBMZykbTGaCT3GvFX0uj/zu/gm0WrgLjg0K/aDPuF3CF63FMX7O36 ui9WAW561UPEq8r0rpZCCWlUXuAsI1vaVrGn9Qp65LmBaVC102LlKGd1rULw2wOo LUF1zuHv4E+kftv5caYD0uY18ZA47VKGA2iRElDvPT3gs1KJdrRGR3JlZ29yeSBD LiBMYXJraW4gKFNvdXJjZUhvc3RpbmcuTmV0LCBMTEMpIDxnbGFya2luQHNvdXJj ZWhvc3RpbmcubmV0PohaBBMRAgAbBQI/hZMTBgsJCAcDAgMVAgMDFgIBAh4BAheA AAoJENLEaLgclAKQhNcAn3vHb2b2ar/sCchPl+lR5KPI4WaIAJjp9HHUeEUIJ759 BxRYO1W08nv/iEYEEhECAAYFAkg/sKoACgkQJqR8av5thQ8htwCdFGhhoo6q6UOc tmLIunGOgQHpK0wAn39DnvAi22Xj8ed96mjRNmyZNAk1iEYEEBECAAYFAkg/TK4A CgkQAklOUvzaV4dcAACffajzObxNZVd/VC3rCd81XsK38VwAn0XTT5jNSbZRIi28 5WjLpnGZ9tcy0dl62XgBEAABAQAAAAAAAAAAAAAAAP/Y/+AAEEpGSUYAAQIAAGQA ZAAA/+wAEUR1Y2t5AAEABAAAAEkAAP/uAA5BZG9iZQBkwAAAAAH/2wCEAAQCAgID AgQDAwQFAwMDBQYEBAQEBgcFBQYFBQcJBwgHBwgHCQkKCwsLCgkMDAwMDAwPDw8P DxEREREREREREREBBAQEBwYHDQkJDRMODQ4TFBEREREUERERERERERERERERERER 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 =VNnr -----END PGP PUBLIC KEY BLOCK-----
<laszlof@FreeBSD.org>
pub 4096R/012360EC 2006-11-06 [expires: 2011-11-05] Key fingerprint = 3D93 21DB B5CC 1339 E4B4 1BC4 AD50 C17C 0123 60EC uid Frank J. Laszlo <laszlof@FreeBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK----- mQINBEVPgQYBEACvR8zsof8gLi7pF4331BIVluP61Z4ICzkg2lWLB0Gj1feCbBcA neds8gqHJ7vxArQeYTBV6Gefk4mvCecxo2LGFEcsDuns2X1hf1pXz4AKvtYoVL0e ytW5s3bRdxX+gekv3KxVQjv4tJU2surbW0Hv17Z4m4ZbRfn17dzvpMwtiZmP3kMX N0qAeBs4MZxmWhfYHapc8du75XfpvvD2W4I9VBJXd6DLKNksjq0/Ih3Ygh4kEVxH 6xQT+lL+6yVWTl8XQpJs3u0OPpY/dVjI98DaZucW/Lkh/+uxZm5ndExi4bFJ40rY KfqCsbGAYPOj4HKDkcgNZu+MbC6nIuIuh/eK8ZIpSlSdkzJ2r46wOBHLUJlJoxH/ P4Ly5cXu5lUX2Mf8/HahPSY++5xIoSI1mpqruJyQZxhF4J56X1Bn0BnMmFt+uXF7 O8bjQi4XQJBurcSkAuBnTQlohuAXDfIqeGqqMN6iDGTGCOL9R5WZ6nasyDL+qPA5 WK/ooxINQWPWbTikYb3PZK7v8ABBj6TYAAGxAYrly7boIVKxYUFbotH4Y8dmXUEr p8Hj+tFZCk6AKBn/lCLsM/vTs0ylaSHJOhQc49fj/PETGSQLVjd8iH0l87MfLd9i iLnd0m/Y+ecCobgQDGnDQiFqvsJF6VI+/bisOJiE/HdOyo9j9K3jJ1l4gQARAQAB tCVGcmFuayBKLiBMYXN6bG8gPGxhc3psb2ZARnJlZUJTRC5vcmc+iQI8BBMBAgAm BQJFT4EGAhsDBQkJZgGABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQrVDBfAEj YOwJtw/+Pe7qOPCqTUyi+w9k0829sinZIkLxpqJPSzzYaHQ1QGIOg4wO5yCER49n Sp7V/S1cNKXTIR+YU2Pf2dj/s7Ot6bRXl9dDnUgMjkvNEEIO6a9gazZSfD6+5ECL DFEcJ6n4En02dCjsZQ3uR9DITAZcd/Y3Gczaplwd9LHpUoh/nG1Dj02+6fB0E1wQ ebm518PDvbCaQvggYIPc8DvS5DO3GSRLQ64a2bILYOP1UXPGn4X/0yoayieyO6lD HFA1gVCROtgG1II0ylDWH+Klp4nAyRcqoYfF5kHWsvQS9N27gf90F0XEALjxCCEu Osy4rtDvg1mU1AK0eflyZImJBFfEOXZrEM2TYo+H5X1KLEMlCzgz/5MoOQ3F896u K1Rb95LuF2BJOJsnYbHTEURwloif0U5VIbuH6s37bVjkXDbHcQo1UGwQM/v6tPaG YirZCgh+NpKChuO43XvQTG7CL21qqten+DOh6MBPtBK9TeZIeuGPiUkS1WcCwRbp QwmK2wZeVaZKReqLJO0QXq06dgd4iaiN7W8p6HZe3LYbnR5d8SWyPp2RQxESOOF7 3atOTQXB5hn+pXuHpH1qKK6RkiD62pMd2RgRJlCdKZXM5UKjpAV7w/k15qiZuZg+ N0Jkod50e8O7CLTZdXTTYpifOkjdnycBY24X1Ra0IqkTC69zPrs= =xm1s -----END PGP PUBLIC KEY BLOCK-----
<lawrance@FreeBSD.org>
pub 1024D/32708C59 2003-08-14 Key fingerprint = 1056 2A02 5247 64D4 538D 6975 8851 7134 3270 8C59 uid Sam Lawrance <lawrance@FreeBSD.org> uid Sam Lawrance <boris@brooknet.com.au> sub 2048g/0F9CCF92 2003-08-14
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD87mDQRBADpSK4q7J5JpjHMPdlp4ieo4jJR9V63tvptpBOAk/nuhWnY3fpu Z7pcxOy5I5hZDIu2kn2zkBv4CTsn9yxdWgJaSKU9nQMYpfFdCnajo0HTwV72+7eK u86VDWZeWuuUIiHVNBUILClbOadmRFDxuCCjyE+V97o4CiUu350M28YdBwCg6LE8 dpO9NELy9LJxyhPBE51iS4cD/2CdsCXzmKaFTa+w5fCOSBzNv516qY1GEkNvmDrD e3dgeyxaembidWjjU2vqOZmWFP64jgayvyFZChGMlRab78GKXH7DIGGrXWp9v7B9 JjCqDyuX3NGaxCDFUNJYR6nt7Q93sAT85oAV9EPeFFEx7Ksd4C1iKlGlohGwleb5 TCngBADX+A5DR9eI9E8loh9NmT4HVzvjk9kvk/vq9i0MqxgcEBodgRPibVKWTWOj MR0T+3qOzLGiVjIL2FzVF1na27hGJmXupxU4dWoKVGR85JYNOoFBNuR2HZsim+iy sX0gK6ejsxVhhx6Q+CQgCQ80TzuY/dD2qFuOGkda0P9Ro62yt7QkU2FtIExhd3Jh bmNlIDxib3Jpc0Bicm9va25ldC5jb20uYXU+iFsEExECABsFAj87mDQGCwkIBwMC AxUCAwMWAgECHgECF4AACgkQiFFxNDJwjFmBaQCcDJfb0SfPgEimiFVhsQOJccxJ F1UAoKJrgMOoY10RAqM822JzOnn9mGXutCNTYW0gTGF3cmFuY2UgPGxhd3JhbmNl QEZyZWVCU0Qub3JnPoheBBMRAgAeBQJCWzEGAhsjBgsJCAcDAgMVAgMDFgIBAh4B AheAAAoJEIhRcTQycIxZWoEAoNefUsJBBCoZSmfVIPEh4g1oDmOFAJ9H6Q4/hfh4 hFTLxU7p2bLgbdjGHbkCDQQ/O5hBEAgA5LFaiwqsnyrdVB+Y7S511ZPmQOi8UwfQ 04PIWyt9a1MwGSYdUpzGAieMLe4KG6olMlLH0X/qxkVjbukwPyybeN7RNUZE1DD7 KGbVOWpyQHhAB4EPfzRJFYQEmT1x7tk0nVbF7emuK9iG+Z3et6Io58QjOgyEMLYU UjwzCE2NYjJmMLEy1e+icfEkOs30s8XPrus/GNffVlsxmHEzxtsicw+AVnlrjLtG xZ5DsNRqJM14L9X5qR3O0dq3BnKGZPOctIF6bRv0AC9lX9kQ1saFqv8iEHoHZ2vD 2eIplYu/bviD+lI+w6zrq/KgNHQ1n9ngzs/N14lN9C57dHTS7U9nJwADBQgAhWSk YnYr5vUskZgVmf0joVgYNBqXIBKo3qXx0DYxGOT18EbKhtSYCar4Uhjob9fUhQop nEd00GQVZwDTL3/STCXUUSaHRJhK9yCwgvQ+/q58yW1JvMrCA6uaca89y9DnfWxv 0lFbOdLJJQNrgLCyNweLhZcEjOSTQO6EZB5OX+z4Dgfxd/5DKWr19JKw54Qtus3s 9zZhVoQoXzWiDlYdtuGUjnVQvycegOxwjFN/TP9IQpQS8HFMfEu5GLTbRAQ3zirS W4FtGaeI7cUqap6ot2BRd1prAXyThXHxYAARaYib/xvCLRDTfXCHgJXbqEiJ72Yy FgGYqFTRrTTgxiXo9IhGBBgRAgAGBQI/O5hBAAoJEIhRcTQycIxZLQgAniGrL6cw +rQG5xLeJ6hrbllYV+8cAKCmIpsp54t97HWvJTKN9GhbpQhojQ== =iBxM -----END PGP PUBLIC KEY BLOCK-----
<njl@FreeBSD.org>
pub 1024D/60E5AC11 2007-02-07 Key fingerprint = 18E2 7E5A FD6A 199B B08B E9FB 73C8 DB67 60E5 AC11 uid Nate Lawson <nate@root.org> sub 2048g/CDBC7E1B 2007-02-07
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEXKYeQRBACVxgl1l+IwFK3aZ96X+BHzeUuGfAAWSqzZuJq0rVXhUU0KnGy6 r2HLJKwGlSQ0tP7rsYy34fDZy5BB1JajHNUIhb5SJFZH3VltQuZ3mnaLWJajm4Q2 c3TRBVVFcm4y0x/QiCcz3JvCUWHaPUUWlpbrkt57O5NTVlneOtruZtYPwwCg+3Ft WjNU4ppXEbbsLHsIri5gPCUD/2e7RFkq1KaaqA0wfwictFgxuOZX00Do1kIFfoE6 0jKSxU3P8E01H68vZs8vGuVOLVE1pXoWoJa68zVOWkLCTE1z2U5YJumZL1mDRRHt VfqlsaHNBLIRd9qAZsj3F5aSFu1/hCOiUkgLWQa9e/BAv76L+mCIJ+g5bU0YTEhx XoFwA/9dF3JFdQCkrzbhS9/BSjEIXDCl7e9Yt4/6jTg14fr9Pb5hyUYYxu6i5v59 TgSdxSFUd3MaZmH3Kewg++9oqewNEYdOu/gmx7GiSKr3k0FlX+aK7UsVDjEr55Gi XH5pqUce7y8bmx03a/pa0Lq5WLvPnfUaplWeoCmmAXeYmRFYqbQbTmF0ZSBMYXdz b24gPG5hdGVAcm9vdC5vcmc+iGAEExECACAFAkXKYeQCGwMGCwkIBwMCBBUCCAME FgIDAQIeAQIXgAAKCRBzyNtnYOWsEUGfAKC9mTqJd/PjHdTG0YZkBr0Y0PLmCwCb Bl/VHprr5SrFDBdZy+vB5GIEhme5Ag0ERcph7BAIAJKt5PBfx/CEqBDS+JkDyYLG RA3johtfG5HPVPOX1iFJgDLx/5ZKIsK3oxJLkkZQDBjzJgU+GcffBwafaTObEbid D2rtwtqfM2EgoSntvJhrP09Qfx1/MOZs4MVJbGEec9egMgFRzUSKZ2xiYNqKOWL4 dL0TOyeLg7HQne1fuOOFEJZJtCxHAm75z6Q8deYHr7bQQ6NZuYc2qsOLjBX+M6Ig d+r5p3vhkeg0uUzkRR9bAmtaDT3BFfxfMG0b4iTBpDW5UQ2Cp0NG+SAEaXVCYNcA kKHZGTTI9e6a8AimsP1wOKs1TsE7WSLsk0Y1U6E7OuHLdmGwZygipfkUXR5v/hMA AwUH/jLrMCAzZaCh6m6mrJ2HYCASRSfGKAbmfqPymEICfZ3Y+FeCCFopeatMZPyE R6gEzHyu1hlSHV6yTfxRDV+gO6Pl9snsucJtD//ZnfNZenKsFoGJM8qu758jBA5m FY5bTlkySmFJYHGAtpMap85j32iA3B24VmgIZ+rE/YVQUbbkaFrKN7Crvm+PgH1u xbLrkjypklyo3iZZQo75W7SobSvyqnG3LRXkXsS1U1m3QWcLqIjKZTrrhbV3IIRK +A0rSRKXpDt5lOYIqbJ+PwwGexlgzb31vJa0+N8qjdvbbMZIOA7mDVauEYsETkU0 Wtl5Rc1M8Qx2IISH+K3AGXHqn3iISQQYEQIACQUCRcph7AIbDAAKCRBzyNtnYOWs EcVTAKDj9JrwUwygZFNG+oWsOA3/ikA7qQCfQkYnj9q6E0Z21p/ZTDptic+qSEI= =yO1b -----END PGP PUBLIC KEY BLOCK-----
<jlh@FreeBSD.org>
pub 2048D/8BF6CF92 2012-04-18 Key fingerprint = 66C9 B361 16CA BFF6 5C07 DA0A 28DE 3702 8BF6 CF92 uid Jeremie Le Hen <jeremie@le-hen.org> uid Jeremie Le Hen <jeremie@lehen.org> uid Jeremie Le Hen <ttz@chchile.org> uid Jeremie Le Hen <jlh@FreeBSD.org> sub 2048g/045479A3 2012-04-18
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =kKtL -----END PGP PUBLIC KEY BLOCK-----
<leeym@FreeBSD.org>
pub 1024D/93FA8BD6 2007-05-21 Key fingerprint = DEC4 6E7F 69C0 4AC3 21ED EE65 6C0E 9257 93FA 8BD6 uid Yen-Ming Lee <leeym@leeym.com> sub 2048g/899A3931 2007-05-21
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEZQ5iYRBADg09p5ljHhIDwhH8i265BFEL1AyW3EPEOb0CyFErp3K4H7+IpG FeaHUrB2i4MYs2r9gAMHadBMTXZJv7ECq2AUQfm3vTKeBjVVz/N7jsEDcmH6bObY XvfRlp9618IBRCDdcbD3Qs0Bv4tM+e0oNYBTsOWAO+bfpHYPk5wORxq6ewCg8DWN J/THLd42Fd4HTfxTC4tTa6UEAMPz7iASUbyJr7//O/Uu+05MBKX8wuNdrH2XPUWq MwLcgEpKSFl0xjpJUMpr3eWGvAg0Vz1UzxDUvZUwbj/5nXh2olNoMH2LQY0QwXGG TPudevBeJ6W+UaEGCAH4Yy25hxxr9h8XI5KRlPCOjQ8i6H+EZbLRTLgOrvBWvD8B Ob8dBACGxoySAQP+leHIe9nrKyZ00tkNI6WPEPAG+14yiCgWLJnWKi7maIHzjG+1 1Fz5+nyMUtHofmLvNyDA/V1e2LFXDjH3v/PcTCQON8EnHAoYmqSRAZMBMmDpU1Af f/vbiOg1zwhwAhdO8y6GZHcJGJjJ8lJYs151ehSS2Oa+NRCfH7QeWWVuLU1pbmcg TGVlIDxsZWV5bUBsZWV5bS5jb20+iGAEExECACAFAkZQ5iYCGwMGCwkIBwMCBBUC CAMEFgIDAQIeAQIXgAAKCRBsDpJXk/qL1q9tAJ0fy0MkFt+hNcvb0OMqTRJvjYlB KACgluazpF5ATo+dNtJifOd8kMBxB+C5Ag0ERlDmLBAIAKOlmONAuOtrVXvRw2gr wYNA4bjQrv44PLCMGuicddC1S6+Ngp+F2bjq43iyDk06i4eXBop0uqzkGA56pCVW 51mSLThl5q/1dixiLDOSy/9Scuei57KuP5MOk5GpFBU/OZv0R+1ZaK+718+jI8/E NGOt/rZ3ZaTR94rAn9yQzVp4prVw4F7r6Vrp9mVu2qgoYKpwpfuR4nw1kq80Z1R8 TxtUrGFYSY7nRTPI6FI6fo6BVPMAw01Xh3oKfDfrecaNtNNgM/DvkrBvZsVHu3NO M2yAVL6LP/Sjv0uF1pK/WjP27hzvO3yha2KYS3oBu4zysyVbi7QuFvm5FmF0mKik JosAAwYH/RWHzWWtpgXdbMUrPxFTmFhXCVVuyiHG0h3bMZigKtAMcjjYRMenhiRm e5Z5si4VzzpaaZaVY6T7hmzM3cran4VH6dFdZy6qhBFzlJphpLwnJti/FMrF2CdY 1kthUC0fxeEDPBkYvV1izBrPQ915XYXuXdJjbk/ATqeIKsqEHWSmTCLcLLtWn9Nt X8DWU+GHMbaMAbtEfL+i8vg0WIOeSE4tlQwIkvSzfXh6Rysr7NtOuYzADD6ORRkg Q9K802n7IYXqWhZTWKijXpf+n+NzWdXC/1UZambcfo1gcS1fotmrO3Fmq3+FgJ/A YPmudGbHwUlAXVfJ47Atxggoe0znf5CISQQYEQIACQUCRlDmLAIbDAAKCRBsDpJX k/qL1tpnAJ9MKjKh4P+ePXeQ+yIwfPza+MnFcwCgvVONrkQ6Byi+tZ1ilTlKR+8+ xnc= =XiOT -----END PGP PUBLIC KEY BLOCK-----
<sam@FreeBSD.org>
pub 1024D/BD147743 2005-03-28 Key fingerprint = F618 F2FC 176B D201 D91C 67C6 2E33 A957 BD14 7743 uid Samuel J. Leffler <sam@freebsd.org> sub 2048g/8BA91D05 2005-03-28
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEJHnP8RBACRTtM4Fb2oRITEwfTLIKSa5Mk0m1A7Pitd1qkjtAyFCi5V6uF/ 2FXPP3Ux3M8xzrvkQNnWkYvGh5MSgkkJ0nszUvh63m5Lp1Yr/EMQr03v1HfqGKF2 SALv7eVJ3XHEEGsYq6KOcJ+2n3FkL6bwGXkXSya85a+EwQ+/aBhpEOEKwwCgl4N4 oTMEgh2Z06ZkMJrqbf4/P38EAIAN93nvAN14v41zw25b4USFzqH/JFTG3utAVxiB NgTEkD+OkktxJFoTrZxfxoU6Od4tl+yIyhKJgj/QlH5pA/mpMeaXh+TQ0/EQAzml d/sw7vXV3WJ+zXIZeh51yuHBY817e7izcnfmY33UrOdf4DtcplmUrfQd1eVMSo45 K2b3A/9a0tg7NhdfkL06b97oyKb0L8F92Q1sO6J5sgsEjNrUVrFnNU0DIDgbi/0t oBpnqIDa09hhBJ1XYcxU4KMxBLpuIeuk2cDCUCVeeEDmx98GIss3hKO8YWzB40y6 7vtdh5lveaNV4+CA2xL/cDXscl+poRQA5tR0efR16jckEaEcVrQjU2FtdWVsIEou IExlZmZsZXIgPHNhbUBmcmVlYnNkLm9yZz6IXgQTEQIAHgUCQkec/wIbAwYLCQgH AwIDFQIDAxYCAQIeAQIXgAAKCRAuM6lXvRR3Q7whAJ9e9jjfVscKVirvWN5IM2j0 60Q50QCglAppekJH6jWStTwoq1EroBFPKUy5Ag0EQkedCBAIAKmxNvJW/W+PrE+T JjKw6dbqUqAUNIGWnr6xgL7KYBpx5eo0XH3RCVzvRSfboA1+nXauTn/FhOtWMw0J dkHrMQhxKSDhWOxeftKuiRiVLPXxF7PX0JMOadxOuqNSt1VWcuTxxBB2wva2Rb48 JscdFbT2u7+PHNarDgUnEobobdvbzh4F1ACaesUq4s2y8jH+YJTaBqJJuZLjLwti C2zv7skf40I5ldud4/7ARGuumpjTrqZFQeQwPKX975X+jw5SBUJXA1ckKcgTp0s5 Yk+O5+yUkt6yzDO+CAYEaZ/xfpOhwmqSIXtdo+ilm2q3y5l+nyEVidYncRWRWYyO iaXOJdcAAwUH/0Ixl92WezOXBqMrKVaA+abCN6t6n9zxSnwfVo92Vlfqj8Huz3Hk 55e1in3P01xXdNKnapYNkCg70WbtNQtCh0nJdGGDEWVqJsjiqDDMYa7QLahV7HPB RyOtoAXnTWPpyk0d5WEXPLJ3vPjxqv5wKTmav3JcvVahSVWi2wmWAgfQJXYRvCU3 EEQ5KqtCBrQNdBsSRnzgDsMY2kAh02VuGTbkVlQz/rI7HAYEOL8SoR489O/MTE+b 5HtUT70rk57/3jR3QtiH/3Q7OqnPh/ATjO+pnPuhfqHiQWLWRDigJNheH/B+1Hmn sHiSWrUmlaI0bzyIVW4Xft3nu/wH3QVSSWOISQQYEQIACQUCQkedCAIbDAAKCRAu M6lXvRR3Q1SUAJ45iX7Ka9rb5pwAmY+fyfpuO4qgJwCfW4VAl3+NLCCP4A0Y8wlb UtEtg3M= =kR9a -----END PGP PUBLIC KEY BLOCK-----
<jylefort@FreeBSD.org>
pub 1024D/A3B8006A 2002-09-07 Key fingerprint = CC99 D1B0 8E44 293D 32F7 D92E CB30 FB51 A3B8 006A uid Jean-Yves Lefort <jylefort@FreeBSD.org> uid Jean-Yves Lefort <jylefort@brutele.be> sub 4096g/C9271AFC 2002-09-07
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 3bMQAJ4soo0qCyPCVz4Y0Ly5jvYWToXt0w== =kszM -----END PGP PUBLIC KEY BLOCK-----
<netchild@FreeBSD.org>
pub 1024D/72077137 2002-01-31 Key fingerprint = AA3A 8F69 B214 6BBD 5E73 C9A0 C604 3C56 7207 7137 uid Alexander Leidinger <netchild@FreeBSD.org> uid [jpeg image of size 19667] sub 2048g/8C9828D3 2002-01-31
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBDxZg2YRBADEFCcKKsa/VS6z7aq+04C4rJ925MPEdQnGo4EVKtRv38AnqUaW M6w2CJuDQ4iS+FL+nWaSwRnfGufftkEx0mSum1FMXQQ6+buC11LkgUYcF2f0wlak HGr6Vo48RGz76Vi7u5tcoEaLb6uYjJfOOAzYX1aOv/T+qeGVc+JJG4LhNwCggBHB 1DpYSy35o1I7EyVufjruQJkEAKp11sHwuPcc6Q4q5hSKG3VM5TJKHwRkdoRxgfjT UJGecH9GA4Td7vh11dMyS22RnFNS5hcCdCdoe9PkDEvwp+w30pi8uNOFmpCF9TlA FRgwFC9pq6VveHd1PHWSRgiTFxeTXgJ0Y/zCZSitURCtlqMXMg9qnUe1tTAF99yp zmQZA/sFaFGTLzCbPrUY+2q13b5PSQsv2D5FHFGuH3FL/rIyPexKmm9Fcs+LAQM7 rx94ipa0OpwapUwCFPg6zNqQ+67JM4KCzRsoSQPsVtCNNcEODQRMXqx6DK1tYUvf ymCAmXUqqqVXARyDh954uBqTfRSASsqPsVAxtwmVA7rceEcIfrQqQWxleGFuZGVy IExlaWRpbmdlciA8bmV0Y2hpbGRARnJlZUJTRC5vcmc+iF8EExECABcFAjxZg2YF CwcKAwQDFQMCAxYCAQIXgAASCRDGBDxWcgdxNwdlR1BHAAEBQuIAnRn2yTAmJACp PB9Nc1WjeQpipeDAAJ900VXCYeRbwhfldpGMbiGlkj4Ly4hGBBARAgAGBQI8WYOm AAoJEHninGCwBj/nkIMAoLd0ACBW+D47AAGAHLvbnoVOUcysAJ48WGg7PqFVvxq5 66+s+xtIsYOK1YhGBBARAgAGBQI8WsZXAAoJEPSMqBtpqFhziTsAn1jBAxq4biI6 ZMO9tPDjXdgGWCu9AKDW3KmsBTCEZomtitZtbKTPiun6M4hGBBMRAgAGBQI/jTT0 AAoJEGx2F4yg7ZgtPz0AoMP+vntzMwK6UNZiXNqnicGBn1fRAJ9gslYqStRTXgv0 GytGmbrqAvKUt4hGBBMRAgAGBQJCNujQAAoJELNT4Gpva4J6gesAnjrWpLWWUFF/ Yt4GUP7Dd2dCqTNyAJ9St58kCHv3XQPIOWScicMrGTebBYhGBBMRAgAGBQJCOoAp AAoJEOMv2scF+1/ZKEcAoKssBpCFMaSAq5VWLCO4ggxb6WodAKCv2hiiV3dHswxe I/l25PCDATjTSIhGBBARAgAGBQJDpJAeAAoJEIXUUEVraRsDpIcAnR2iRPpS1w3i SCqV5/5+jJx5SyjtAJ46/73g9swXtLEIUgl7z+RGg1/IQ4kBIgQQAQIADAUCQ7Gf MwUDABJ1AAAKCRCXELibyletfH57CACMkpmNhmUxfx9Bp9ifKhvZ12ZOvv0wYlBD 3XJsXEq4aHJ+Bq2GmQLyEFX8ryV0HwSl1UfDEVsJ7IRjds66Wmo218eZp33tHMbq 02QvrroY6nbaPHXpydhAaHmY0iZcFtUJXRa9VqiAUwTVlKbUkAL0r87RBTxhIzDq xaNZC+MTxUJphyDQYnJ8OvOuHeeMRhLrwQZJEevtb8JR5CzyrjoIn351ff86hz7R PsThwMXTMqT9T2w98GhuP5UYRp1bFNCbAlWJwgNiLKd+6AXdyQIOouCzY5tnD1wf vPB1v+wTi6KnU6E2VsQ8yggFcPaPovO3uKkRRAkATgN/meGtDBYhiEYEEBECAAYF AkY8hosACgkQ524iJyD+6d0B/QCePfnQ95VTfwRpSMHu0GxbWi5ZUlgAnjwAONqq L+iionCmk3WCHjeFvv9WiGsEEBECACsFAkY/XkwFgwHihQAeGmh0dHA6Ly93d3cu Y2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl0P1Y5VYAnAjxx4bU+zNPpIRO4QiD gpYZ69ruAJ4gdxhkupzsuLeXEdoZjngqbtDf3YhGBBARAgAGBQJGSaS/AAoJEI2O PuD3c7zgVlEAn1nKfTF8E16RhQM1cqV3YU1odL9zAJ96gPRqe2GHv8yEQLtJfTsz NkXcndH/AABM6f8AAEzkARAAAQEAAAAAAAAAAAAAAAD/2P/gABBKRklGAAEBAQBI AEgAAP/bAEMAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/bAEMBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/A ABEIALkAjAMBIgACEQEDEQH/xAAfAAAABwEBAQEBAAAAAAAAAAAEBQYHCAkKAwEL AgD/xABLEAACAQMDAwMCAwUDCAUMAwABAgMEBREGEiEHEzEAIkEIUQkUMhUjQmFx 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 dXwnxzx0crfv30hhYSiFRJUGE/v5JXXClwxj+M8LHsCKHZvYWKlyWVdNFIiKEQ5b ZCdxLLuyFkIjGWIQq7KC+AG5fgkAZkMMSmNgjGRG8MQ7yOo2kAHnau1do9oCkYb3 elAtNskO+Z1KOI22oiHeZfB3KWUv/dhNwIBLPuO0hgkxj3dgf6QbmWU9NDF693/m uPMvjg6eviuaoKVsv/ZefAmNFSSONVONkjNglS8wVFjBbcVLRpuk2BHO4jGz3N6O IYGdg4p4o1kAO6Q722lmYEqYwzODIBtPbCEvH7VQn0Gp4og8TZnITvlyB20fgDB9 gZ8BgwwACEYFQA3pR0NO0siGQOwQllD/AKfcvbjXb7VbJ3MXdjjCgRl1YlHc7ssS Ne9pHnkuLY3T6ktrlUUEP1Qn/wDDv2Oer7fDDfUzo2fXf069fNK29DLV6p6V9QbL RhE93dqdL3GPhS0Q3yVO1tqNE8m6MuzIkatkK/DJ0/S2f6f7Wi0y0tXXan1XJWns hJDNTXaehPd4BZkFMkfOAMY8Aj1uQFuhrIJlkiSSjdpo5GkfajJIm+VQrAI2935I BUEluZFwuFjrnfeo30sXLXegdJ6h0L0v0dpnqV1YQ6w1FbZL7W181X1J1W9msllt FMRBFLFZxS1TSSEy1BqIEp4XRXPqm/WmOUtHpoGbYz1JGSmWkIzQjCMWUp5GRCok pNkQBR1//BrU49N57rpZMU8m3QuSEIMItmXFFueWePFCO2V7sk4Rq7VrxbRd7tWU Vpip4/zP5SRYgzwthC7bU920EIS3KqTkecZPqLvUu108EMtbWqyyVgkYRSNg/AGG IBzxufg8v/CPFd/0n/WlrbqtrKq0Zq7Xtl1XHFOTT6itOm7tp6J6WKoSEftCmqqe OjRO88MQqfaiySRo7BpFyxv1g/Ujr263+o0VorUt0tdfU3Q0SXSlpZjWiNN8bw06 1EKmn4wTIY9y4UKPh8zlHL/V/wBK4J45wImTMxzRhii44y+7kjkhDKBFSmDIl3Hk v03DW6X+gPMcKTx5ZenBjyYJZcuVltMJPFlniZSbkMMlbSzg8OR1dpNslXUYjEOG JKuPby3tbhvOSQRyCQCT6pX+rvQd3NwpNT0tLLPZamJInq4w0kUM/JCTMFIiZlGE LDBGOc8enovq3iw3tqXUzdeam/0lRDFW6unutZUWU1JC5kpaL8tJQ3Ggj3fvZAks EkRba7cL6f8Avdvg1j0j1PQv+Vu6y2qppcrFJS1UtVTU5q1ulNSfl9rwiURpmGRG aoZ+yhjR2Q95cPk2o02rx5TLjlkjHLGUXHHZlvc45Rm71WxyO+XW0Eug+ezh9QaL VabLicOXZky4TC5Ms90GgyXhxoDcZsSWNesqieHg/ss+nVuH4m71M1JJUGydBup1 xSZQ5/Z7Gq0xQPUmPekc2YKyemVKhJYQ86yBRIkZH0hKigTvSZQodxkjQlAIomRp JJZn27WkdEEMccUeQ8oAAC59fP3/ALM+bD0Q+uOTUnU6KtslN1v6b3zpH047I3rU atud2tGoqeK77GElFSV0WmnpaCV0lR7jUUyTRIhMifQtNBM8jRAbJFE3caMntwLC UWGIuw3M7OacsF2L7/e4C86Zi8wwa2eT+nnDIQkYpmNJEMkSEWJVx/J95S23IeYe PM31J5XrfLtZgNZp8uA1Glx6jTOWE4Rz6dnOMMsGZcoqSjdDZaF14bOote6paTDJ uV13kEO28gBE3rIyyltpbbtYBCCcuGBLU207QrxA9oKPcQsay7aqR3YknfKrRhIj xt7kxbhsFz6yiCsuGbb+py53SAZ4YjBI5O7AYke1cljgJ2opmIYIp5YKxZQoXKls MW4DFEb+7J/9oQDuyZVbYu6TcgeO+CFG1V4PjpXpKK2d/r56/nni6uv34a+ptTMI w4wojMYjJ29yNAQkSoEcLz2pGI59uHPJHona1RREKBAParfv1aRySoJww/hBygBA IKnPp1pKNd4YAhTs/eFcARsezM4BwuAkryHyu6LJc4A9EElDCSvdGCF9qqGfahZm UMy8Fvdk555GfTcClLip3vjuKu+Wo+/bV3ZyvDloWD3Vnb18vXzX8+54Z6204hbY Tuk/Q8kgy2ws2HkZio/zlFQiNQsYYIp3jB9H9EjGp7bMilTLLJk4PZIdIixxjDu0 ZVfb7t5O9YiACt4jSSVmDOu2fEjOu6Ry8ZQiPaB+7SOQo4JCqc7mYgg+pI5CaKmk YMZFrJq6eRlVGVamoqo4pTIu8otIJFSNQinYsSlOAZzJ97qRRX80FX883fAtdJ4l J1+67/s/Hse3fI8c+DOnpSn5aPgFp5Gwg9747ky5kJAUGPe7vt4bCIQFUejWGl7n bDqFDNHUO28MV2MrLGmc4fcTmVj8OQQwjHoCJ0VYqsYnUB1pnxl5MplnBVAC4kPa GxDhAzo4IC+jyGJVkYyzQl12oCHzFBvCuYz+8ZZJVk9m8459qKCxyneSpBY8+/pI tKj7tDQUvCoNjMot8nJ+v2Ff/k9jrrwNo4FdWZ+cllwDtAJG3t8MzZ8ByxTc3ARQ y5U9tggcJIgJcRogU+5FZI2WEHtgZKJKS+wsEMih2BUbSmnUGmMYZHeWWWeNSi9q JD2yqlRvZyYYRJMzhAz7uFAHpaW2m7NPNL7pZJahJO2duXghiAWL3JkQxvIJDyol dwCEVUAVzcfTcRO4xVpFtHu3hvi6pUpmqi3/ALX/ANttHt2L2/PzyrrXS3CzXGiq nr0o6qlqIpp6KsrLfWdgiZJDSVdBUQ1lJOCG7c9JPFPGCjxSCQq3rIV9V30z1Fl6 x60sN+oz2rXrfU9ztDy29NS/+Tr9qKuu1JW7a2GoqIbotprIaear7dSKunCuXedp R62NxQyiA9yQb1V5MDLAHD7QVVQo3FMLgr7VJUbgCKRPxGNMy2nqfYdR/k56ekvG i6MSV0iRiK4XG1T1CVCRdsko8NJNQrhyXaNo3VnjZXNH/wAQMBPyqGrhCTLR5d04 Hp/y5sSVyOYbZfb2Sf8AqN4y41//AAV12HB9Uug1EISxeY4WO9QnHJp/82MYXTKM 4Syb4xbkxg/gSujrSPSLTWjrtWX61xVNwvjUs1VVz11qqrYKSCOmmgp4YaeOmt9E IqiWpeQrHTygJSsXCSFHapzqrZYZes1fd77UikQ3WMVJQulIiJUk08jyCMtBlZOx PIhCldrSBtisk7PqZ67XGwVstq0bfr/NqT81Uftq36dp6GsjjpZKRqWmp60yqakL TyyJL26aWB5ZDLG2/dgUx60vnWmtuBu12td9qbDfJHqakXak/KVkoppMyrDTz7Km BWdMjE0izBWQIQu31m/kkpzw7JRx6Vnjk7tRnx/cyGQ9MQmR5IYrHI3ZUaSL49Se dZdBHGxMeXVRxZ45cn9Linlx4pwMcCTsJEYwlthJiJEjLduXa2PdQtF2GoslHcWt tQ9VNArCpa7S3OA08iqq9qFpTCNwO4P22KodyrkAqmdE6Ygp5Iu1BGIaipjj7GS0 YR8h0CshVlKn9JHtVtoHO4IvoxrSm1Zo1rM8tyeOgpP3Irz3HgVCyyQJKwDmKJ0e JFf3JtZCx2nMrOiPTu79SdXaS0HYpo4r3qe/0Vgtk80DzR09ZdqoUFDUyRR4kkii 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 =H22z -----END PGP PUBLIC KEY BLOCK-----
<ae@FreeBSD.org>
pub 2048R/10C8A17A 2010-05-29 Key fingerprint = E659 1E1B 41DA 1516 F0C9 BC00 01C5 EA04 10C8 A17A uid Andrey V. Elsukov <ae@freebsd.org> uid Andrey V. Elsukov <bu7cher@yandex.ru> sub 2048R/0F6D64C5 2010-05-29
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 JrV1mi5i =KVzv -----END PGP PUBLIC KEY BLOCK-----
<lesi@FreeBSD.org>
pub 1024D/96C5221F 2004-08-18 Dejan Lesjak <lesi@FreeBSD.org> Key fingerprint = 2C5C 02EA 1060 1D6D 9982 38C0 1DA7 DBC4 96C5 221F uid Dejan Lesjak <dejan.lesjak@ijs.si> sub 1024g/E0A69278 2004-08-18
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEEj2LwRBACdxv/Z/TqPsaxTmKrXZSOPnQca8L9UksW+71kI7YouAkbnnTyB maf7zCs0BDcUU6t2mO5ijJlxXe7Y4yMx/3mwGX9iWfWh5U9xobG0STcU8ET3ZQmZ /AM1vSL/weLK42YHxyqSrudt/oWxH4iDZFz5I/HI1DRwZMFhft3ja+pdYwCggAu5 GwYrQlQJHJcCFbxnYUGJX/sEAJXyzea8rzP7dTUsaOYcLitIpy/eDI3vkB0aW7Uh JSicWASPW2erv99f1p2gkVQ0b0lrpMwPrysotfN6wLLYR0fowCWHm7hnASgohFpq VwB7aj0HDEHne7EIr6geSpnO8Y4QUtbFVWo9cq7HGzrB8NhwpLXQ5g9RgB+H9SS7 SzVXA/4qPOAoJ8Fp+ZSznd46yd+dgFmVpSJuTs3g+hFolSioEkbi66fHwPMWeifS i02AkU8m/qiGMAXRwBm7s5jeLwQyJX38S4PnupPg8pOjZtLVYoTWaM19yuMGS5S/ ryF5MaCGtuB72Wnsp67aZIkaHjfS4QAKo0WVH8yucnyOS+BFsrQiRGVqYW4gTGVz amFrIDxkZWphbi5sZXNqYWtAaWpzLnNpPoheBBMRAgAeBQJBI9i8AhsDBgsJCAcD AgMVAgMDFgIBAh4BAheAAAoJEB2n28SWxSIfMJkAnjxPSokKlZtVhYhAcgX9as76 sadXAJ4yo003F9ilZw6avaThCBltR/MqWbQfRGVqYW4gTGVzamFrIDxsZXNpQEZy ZWVCU0Qub3JnPoheBBMRAgAeBQJBJQwqAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheA AAoJEB2n28SWxSIfOHYAnA9quQ97rU3eJHb1LzOTpwZVMSDxAJwJnLzSFQHfJu1f seG9fTyt5UpBAbkBDQRBI9jCEAQAza9XDZevfbu9BYjDESbKo38SRgyTd5/lIgzH IlF+9zGr2e9PH1WOIPr0m9m3LYQzkL3YiUm23UoJO7uhvWvCpxfChwVx3VFwM7Yz WqWBV+W27aZNROEmh5KheJACE/m6j0R6UECiRHZS/EsHP8FNG8roWro23ApNR0Vh zZ6iVNcABAsD/3glWDyCWMA/eX/YGPw3xN3hkENgruwtWKkK6TW6kYv94k4iD/b5 bRsmIvGd31AM5/Qv/IQd7epXb2ovDaKvMl6+jAJb1NMCSzOkCnoqcQoKB0ed33d0 JOVWuA34WCMZ2zHLFEtwuQkHZqmyNQcxRLGLkODo4WWsYNU7KeGHvAJDiEkEGBEC AAkFAkEj2MICGwwACgkQHafbxJbFIh9+8ACeNr7M+KLI/eWu6Nig8877cjrEP3QA n1Kfo14Pijwx26kysheLFV1jutrq =IfeN -----END PGP PUBLIC KEY BLOCK-----
<cel@FreeBSD.org>
pub 1024D/8FFC2B87 2006-02-13 Key fingerprint = 6872 923F 5012 F88B 394C 2F69 37B4 8171 8FFC 2B87 uid Charles E. Lever <cel@freebsd.org> sub 2048g/9BCE0459 2006-02-13
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEPxAWERBACkn7HyvqMEJbJcf5eSJ57WR4Xoo1PU1GIsAYhdFhDOvmeWRZcH kwUyFyol4X3P7RyibrvZwnvc+nrqXqATzVeDHT2NhcTTeG7fq4E4a3VpdqR10uV5 nswMRw/Arci7vuAQnmHzOYfnNP1ng6qLjA/CUizQ01WakhQeHGtbM9Q5XwCg2GEW H6d78/rWY2Lb2wo6cS+9Du0D/01cO9zPg+Mh2T43XdLMjnVp17jR99SuNajqJbBJ pNehq8yA6wb3ahZPjKtXpgELu7YI7omxhqcq1mxKvXa262aV72qdWqWoqvZzX0hU lOckg6Q6EO7qGvU/jOY02/tmHdzQy6UJzHB7JVsfZ9DGH5xW23AYmbD4WF8jXtyL Ey2eA/91IZpxEK7guIBt0FE0qMSCh5VOOlzOQkV+KtLswzEVPOWw/93wGpd/uilx jZESPZ70cSWuCWwY15FEFts/gs5gPhCs1h4asQI0Shft3sgQrBhE1/hg2uENccHR y1Af75hwezkwFkE2DUXFQqLuUlGu0sOtG+b7+IPrYuaGAB/yBLQiQ2hhcmxlcyBF LiBMZXZlciA8Y2VsQGZyZWVic2Qub3JnPohgBBMRAgAgBQJD8QFhAhsDBgsJCAcD AgQVAggDBBYCAwECHgECF4AACgkQN7SBcY/8K4dpvQCeMv7yFBMFOPxa8lF15IYP 8LRYjaYAoJyIupvj/RgaM5zZXZdPUS+gro9SuQINBEPxAWkQCACPOzcRL0LbFubW 3c8aJODeBG91aQRPz+ndMItFW6/+CW3EmyCGyaG8uxdtY0SOx0yALj4PiSj35s8u wqfsWFRuNixODl9lE8ihq4d5qfeiwpcAR9wVNwgnXD9boKXOOFwb70W+9pI/I4zX igHFxZQpndROhIFO1RLdoBlB89vV5iX/qzPKHFfmbbIkY4zvAsvW2MCly1WiEC2y GT5GJTFZgko5/VBFzb3VDvA0grCGGTbHK1hnfuuvouQPnbuawdSZO2XGMc2pFcKW gh+fgdw5Y/oQZelJKhLaL8Lz27buTz2sj5O/cYv5n7wDD/kSnb7+pd//qagox3JZ bGXKTED3AAMFB/42KW+FULr4keaGuhAZ07hrNs73Uw3QTTNIUYYOkSJVvgold8RX HMP38WANIkHtB3LBaZBxhqAOp2R5AppIPfyDrp1q0lTOGpzWfsQNQd10KRsXZGkf K6INVa6kpzQhNDxBUyLh4onp7hZyt9zXdZrfYJLexbxrxkP1LDRDNJJAY29LnVR2 vyDHPrB6mmgijy07S6yKwC6iJIRoU8w4X3xFqIQ+KcA6VBhXqtqxSjk7GQnwyB7Z 7l4Qg8iZvX5qj753w6BDEwDtXlCCbocDVsu5xcLRPwMN8BgH7XcYCwmZFEU7IgEk RAhqiHsjpnO7al5a+HQJi/KMOs5aDfwdkI48iEkEGBECAAkFAkPxAWkCGwwACgkQ N7SBcY/8K4fTZgCgiVDpYWzuROUmau+CUT/UVCatpHUAoIyg/KnHhe9PUB9Gav5+ /KWhtyRy =T2Vu -----END PGP PUBLIC KEY BLOCK-----
<glewis@FreeBSD.org>
pub 1024D/1BB6D9E0 2002-03-05 Greg Lewis (FreeBSD) <glewis@FreeBSD.org> Key fingerprint = 2410 DA6D 5A3C D801 65FE C8DB DEEA 9923 1BB6 D9E0 uid Greg Lewis <glewis@eyesbeyond.com> sub 2048g/45E67D60 2002-03-05
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBDyFNecRBACKn+4b36n2/e55yTfpLXS9a57gQNgx0WXBfbK9LMLf2D8otD+0 z1DW2eclAOwJVtPftjvYP0HKFVC8Pes9Wvp6Z0sIEPpdkL2NPlUuxXUyh1b92u7n Bpt7Uwsom88fnn+BOPrvvPL8Arg3JBen+Jd8o9yRoABCYku8vQF6CEUDcwCgmHJd 9hZ/kRb1rLdSLssB4VMQ3zED/0/SVm+6XV+2ObXn9FKQpCC6sMSq+PCoR9NzAVRI njTtkpyR0fjJZr69IN2E2MWPonv38Xg1tWJnR3fKUOnNqwiVHBQKKrKa9lGWsZQp TrR+ihtJ9hC626dCq9JDb1Ls7TXn9ha+d0WNuqiwugto/myHm/GVlCANhGzUuDNU Mo27A/46YEAMuhSQWOxgSZ/Z5g0ybgpswVePrxvD4sX2/AVfKClOYpPiNJe+S7YT JmfIPkpP2P7v+87BaN/uWgaFmxlhpUOIuat44w52EwwGB+K24cGgq52XncZsYTYH SrLitkRtt35tVdnn1v3gmDi83M8W/YunflpeJAgJC0QzxKuar7QiR3JlZyBMZXdp cyA8Z2xld2lzQGV5ZXNiZXlvbmQuY29tPohXBBMRAgAXBQI8hTXnBQsHCgMEAxUD AgMWAgECF4AACgkQ3uqZIxu22eCkCACfUuNYpGGlFboDl5FZeXlor/k/hogAnjyq /Vw8amjEN34PGuqBPQpMnFrwtClHcmVnIExld2lzIChGcmVlQlNEKSA8Z2xld2lz QEZyZWVCU0Qub3JnPoheBBMRAgAeBQJA/XNpAhsDBgsJCAcDAgMVAgMDFgIBAh4B AheAAAoJEN7qmSMbttnguMYAn14cqGfabS626P1D4GMcSkSagzaZAJ9LyH+vMrfn OI2x9+VLyaTSAvm4zbkCDQQ8hTajEAgAmuQukPFaefkzE7DTIgSDIc5vRmUHDs01 bGp36R7f5GEmXwNtCZ+Mf+H54QSzuNh1QaJ6Nq/iYd35LA03/I7AgUFwSX1cEc/n fNjxqS27CAab6nIt9Syb9WAAKUKDMwZCjHBNv49CAPyVVb1aTUCJyUcv1gGSMNHX r2bkWpa4nIN4+rqD3hifHCX1j/2XMkmYY8NCVTY52zqO4sCbh+ohAMfYtW2yV2Iz z4ngppp0fUbmlGV6DVvTC1Mi61UCDkhO+TZFlE3qXeGlP5GR0SbpdQmPiI0Jpinq Zs43gcd2xtiUBM7HAMoQDpyFirDuyDKUgMWJrtJtAwWa4cf4Luh/fwAFEQf/dqpH bl48tu+REAPrjk9NWaGVqi1vv0r4LJXo8db9aGxwwAzKXDhwqHo69E6l4/Rd+hsa sIJE7vGNbGK+uerTg/W3jot90MqraplXHuS54TjOMyzWSSG7S6ypmDf5YnK3xQE4 NfTYvC2GxphotkE+QmBzmeft/Mo3opVYlv3OOBqiQoCYB348rXczxEUPam3bFBw1 wp5XjA0kqYRcUbxNE5AK9c+g6R2c/jT96EnDZDpMRCNZiAKHFLEjtHy66BiVHKvg tijWD0kxtlWV8KAKN6OhUpSSsCv53jsCIntNARAVENOKOV0RQVDfJgykeK+3eeNr UdIjAWFAWcVOEw5TQohGBBgRAgAGBQI8hTajAAoJEN7qmSMbttngHb4An37mZU8r E3SGCAlTJCLV1JxRDXVyAJsFBVshxisn1GycdT3UCwcJVAHJ5Q== =bx2+ -----END PGP PUBLIC KEY BLOCK-----
<delphij@FreeBSD.org>
pub 1024D/CAEEB8C0 2004-01-28 Key fingerprint = 43B8 B703 B8DD 0231 B333 DC28 39FB 93A0 CAEE B8C0 uid Xin LI <delphij@FreeBSD.org> uid Xin LI <delphij@frontfree.net> uid Xin LI <delphij@delphij.net> uid Xin LI <delphij@geekcn.org> pub 1024D/42EA8A4B 2006-01-27 [expired: 2008-01-01] Key fingerprint = F19C 2616 FA97 9C13 2581 C6F3 85C5 1CCE 42EA 8A4B uid Xin LI <delphij@geekcn.org> uid Xin LI <delphij@FreeBSD.org> uid Xin LI <delphij@delphij.net> pub 1024D/18EDEBA0 2008-01-02 [expired: 2010-01-02] Key fingerprint = 79A6 CF42 F917 DDCA F1C2 C926 8BEB DB04 18ED EBA0 uid Xin LI <delphij@geekcn.org> uid Xin LI <delphij@FreeBSD.org> uid Xin LI <delphij@delphij.net> pub 2048R/3FCA37C1 2010-01-10 [expired: 2012-01-10] Key fingerprint = 27EA 5D6C 9398 BA7F B205 8F70 04CE F812 3FCA 37C1 uid Xin LI <delphij@delphij.net> uid Xin LI <delphij@gmail.com> uid Xin LI <delphij@geekcn.org> uid Xin LI <delphij@FreeBSD.org> pub 4096R/2E54AB2C 2011-12-05 Key fingerprint = D95C D3C3 8FA8 25C2 C62B 9FEA 0887 6D93 2E54 AB2C uid Xin Li <delphij@geekcn.org> uid Xin Li <delphij@delphij.net> uid Xin Li <delphij@FreeBSD.org> sub 4096R/7832B740 2011-12-05 sub 2048R/BC50FBB3 2011-12-05 [expires: 2013-12-05] sub 2048R/C894647D 2011-12-05 [expires: 2013-12-05]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 SN0= =idxn -----END PGP PUBLIC KEY BLOCK-----
<avatar@FreeBSD.org>
pub 1024R/F4013AB1 1998-05-13 Tai-hwa Liang <avatar@FreeBSD.org> Key fingerprint = 5B 05 1D 37 7F 35 31 4E 5D 38 BD 07 10 32 B9 D0 uid Tai-hwa Liang <avatar@mmlab.cse.yzu.edu.tw>
-----BEGIN PGP PUBLIC KEY BLOCK----- mQCNAzVZoYQAAAEEANP5N0PqWEDO1ml4yfxXCQ+hEhaXyaGyNboh6uLX7uNPXQTI 9veETXNd20Fu+8yuzVFJk+KmmGerUzduHLXm6q+szHBvEQoJ2ZGk9AL9jj2JjFRj rCRsf6mk8SWuL0xDBTu04bZZ2ttNDxNiymNTqdBVZmX6Mdg/T2i3mv/0ATqxAAUR tCtUYWktaHdhIExpYW5nIDxhdmF0YXJAbW1sYWIuY3NlLnl6dS5lZHUudHc+iQCV AwUTNz0HC2i3mv/0ATqxAQGQ2QQAww0WfeHFmupfTBWWdmNSX9eCDIfN7Wsuiu54 DgCi7T7ixQa6reIsMAKx1KHNX/GSBr+t3nyHT7N12Ee09qKXywQAw9W2nrdMGE1V nENHEFgJtvnoN76U1goANEfZGnLLhyuDoMyZGCZmVG6FiV6EoKrWxfwq+jV0Y9K0 3AI/Cny0IlRhaS1od2EgTGlhbmcgPGF2YXRhckBGcmVlQlNELm9yZz6JAJUDBRNC H/ubaLea//QBOrEBASTEA/9H+78uZl6JvHwGKOXyZkrRCLTUgifJcR3thVfynGrM AImheJwqgVP7FQojDk8xBCBQ1b3tpwpeRPwE0V/Dr5MkFLfiaVgCIfMibqcc9zuH i4RYcRqKswiO3pFeDMyHiSxylURcHfx73CYijIDyG+HPiCQ4OGd95VJywUzOVddn +g== =jIT8 -----END PGP PUBLIC KEY BLOCK-----
<ijliao@FreeBSD.org>
pub 1024D/11C02382 2001-01-09 Ying-Chieh Liao <ijliao@CCCA.NCTU.edu.tw> Key fingerprint = 4E98 55CC 2866 7A90 EFD7 9DA5 ACC6 0165 11C0 2382 uid Ying-Chieh Liao <ijliao@FreeBSD.org> uid Ying-Chieh Liao <ijliao@csie.nctu.edu.tw> uid Ying-Chieh Liao <ijliao@dragon2.net> uid Ying-Chieh Liao <ijliao@tw.FreeBSD.org> sub 4096g/C1E16E89 2001-01-09
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 gJ4OtCdZaW5nLUNoaWVoIExpYW8gPGlqbGlhb0B0dy5GcmVlQlNELm9yZz6ISwQQ EQIACwUCOuXFUQQLAwECAAoJEKzGAWURwCOCLMgAoJGhtnPbzYhZWHm5S9Dkgmvj QsgvAKDq9LzJ14Sojrtpxka5F5iViLoqEYhGBBARAgAGBQI7J4TCAAoJEGvZyNJ3 mDKxzzAAoJFFuWMLf6HHO0TiPdafPjuruVpuAKCC0eE7oh9t4xMlTb2SYWMpZS9p hokBFQMFEDsyHL7DfcPfQ7mVNQEB9KQH/iLaexNwzgB9efMXg6RH+TtaWzxBdeEc 7CD9oxjG/1tsfd8S10UScnr+JHTDNn3eh5KdQDjPmKkedPngAIjKHvb/Jux7jcxO OLmRnVeFD1kMyNlv5ggtJcHJ4QXe4rBko68qyU5ON9pvA/h7Xe/ulGw71dOCx0T6 jBlpmLF8AZlHW7z8OS+DYa7fJFI65cDbtd6c9hM+O4WNj8PK7p6MPgilIaWsnJq1 lS5fkaQK+dqaIaVEE4WqTt8v8xC805X58HZXRFma5D39yGFNd3LRCpu48mM5LDLT Q7tfs9jn1Ru7iUHyjI1Jel0hvRGblL8iW/zvwmS/XTXPsh3H0U/WfWG0KVlpbmct Q2hpZWggTGlhbyA8aWpsaWFvQENDQ0EuTkNUVS5lZHUudHc+iFcEExECABcFAjrt DlEFCwcKAwQDFQMCAxYCAQIXgAAKCRCsxgFlEcAjgknjAJ47s3GGw/KsEHKDjjRi D/kcOgiNZACgxKgabQRGmvwKMl8fTtNxiTbAyDOIRgQQEQIABgUCOyeEwgAKCRBr 2cjSd5gysSzKAJwOKSwO0ZIm9II4sjcxWPeNUHAl5ACfXShCxB2mVs6kRDsD1o7f aWeuChCJARUDBRA7MhzCw33D30O5lTUBAaMTB/0S70cAqqqAqrJBZosRZhmXWixk Ah1gMH8SkNVygA3BE3k4A9LC3LNyvlnbCGPFH8PYvN8ymcn3sSPu9nyHVZ31VDU0 mp7JvKeW49tWxBeoFWpNJeNxTv2aNpFCLahpiwcDt/HW8/1NC5dJirDrIrVTrhWG 85UUYeGmMX/5qC7bFh+Y5FC6HxnFTCWlxpZQDtWw4Dbf8r4dMrw/2I9Uubj6brEx LeOG2gB5UAuSS5Brp/9eiAlJs6jRgLU883IzpIhYanz37nJcLV5MVHhbGiR1Yyhr IQlO4pQ2f3VhaEpkUu63x6lxfyVVJsZZ+vZU6EvtJSFACWR1nK2SbszGt/FRuQQN BDpaoxcQEAD5GKB+WgZhekOQldwFbIeG7GHszUUfDtjgo3nGydx6C6zkP+NGlLYw SlPXfAIWSIC1FeUpmamfB3TT/+OhxZYgTphluNgN7hBdq7YXHFHYUMoiV0MpvpXo Vis4eFwL2/hMTdXjqkbM+84X6CqdFGHjhKlP0YOEqHm274+nQ0YIxswdd1ckOEri xPDojhNnl06SE2H22+slDhf99pj3yHx5sHIdOHX79sFzxIMRJitDYMPj6NYK/aEo Jguuqa6zZQ+iAFMBoHzWq6MSHvoPKs4fdIRPyvMX86RA6dfSd7ZCLQI2wSbLaF6d fJgJCo1+Le3kXXn11JJPmxiO/CqnS3wy9kJXtwh/CBdyorrWqULzBej5UxE5T7bx brlLOCDaAadWoxTpj0BV89AHxstDqZSt90xkhkn4DIO9ZekX1KHTUPj1WV/cdlJP PT2N286Z4VeSWc39uK50T8X8dryDxUcwYc58yWb/Ffm7/ZFexwGq01uejaClcjrU GvC/RgBYK+X0iP1YTknbzSC0neSRBzZrM2w4DUUdD3yIsxx8Wy2O9vPJI8BD8KVb GI2Ou1WMuF040zT9fBdXQ6MdGGzeMyEstSr/POGxKUAYEY18hKcKctaGxAMZyAcp esqVDNmWn6vQClCbAkbTCD1mpF1Bn5x8vYlLIhkmuquiXsNV6z3WFwACAhAA4vXK JfvHChbHRCc0z99UHVCluHwRUDopIFNfuBmiAOA7Ozz19dmYBKDgudZpDNZtbE4w 0S2eW3xVTkPUWdrhr0jDcibkhpdFI+Cp3x2zOhL16Yug1xFSqWDSOo3QX4eBVxMH 0sCHiZMlcx/QGl1bwZ9PpO10PttjloI2SqWGUNK9FGDjVfJoX8YMy5DG4rLcaS8+ m2IOb9BiYoRs2Dot9KZjWtL7+CDrFmLH4q8P6OHiE0RJy+7YoTvsHr0JU6suasHK NPfzrXlWZ8C5sKX0XuZTJNkfKojMVucM6olzpaE04NAtKjDffHr7Rr0md/6Zy7ru gJIOwClDyfMmVud0J9Sx/pLKlldakJl25Xfctcz/DXZJNGpvfeMm5+pzR/zulQc1 zDopdrSq261hJKE/5N6tPflXz9UreUdRm1mZV7SEgCKODMxSxexRfw51O0fk3vZ3 rfSjSgeIz9Fs3ypJHCd2q5C4LDa5XgX8vNSYxLKIevu62BnQXJVTKCyuvzUGOrvs nhKzR4GjrMm2575e+pxojQPVXcytFqzn4CS3QTWHvm+J1EzFwhdpR2kXAmaarpye JbUjuCDHDhJPegXY0oRa51lLhvcij1U6smqutADIQSck5JmyQKuC+x7Y8iLk/HSO 3uni8G44oFCf9KJG69f5Va0RHgjBUOZgKMAlKA2IPwMFGDpaoxesxgFlEcAjghEC 3KEAoK+jSxWG0hQa1aK0vkQ+IvD+Ag7EAKDahnKlbMifGmPSpYjK0zcUeojzyw== =NLH6 -----END PGP PUBLIC KEY BLOCK-----
<lulf@FreeBSD.org>
pub 1024D/ADE1B837 2009-08-19 [expires: 2014-08-18] Key fingerprint = 3822 B4E6 6D1C 6F71 4AA8 7A27 ADDF C400 ADE1 B837 uid Ulf Lilleengen <ulf.lilleengen@gmail.com> uid Ulf Lilleengen <lulf@pvv.ntnu.no> uid Ulf Lilleengen <lulf@stud.ntnu.no> uid Ulf Lilleengen <lulf@FreeBSD.org> uid Ulf Lilleengen <lulf@idi.ntnu.no> sub 2048g/B5409122 2009-08-19 [expires: 2014-08-18]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 L1JhS/1K =sCn9 -----END PGP PUBLIC KEY BLOCK-----
<clive@FreeBSD.org>
pub 1024D/A008C03E 2001-07-30 Clive Lin <clive@tongi.org> Key fingerprint = FA3F 20B6 A77A 6CEC 1856 09B0 7455 2805 A008 C03E uid Clive Lin <clive@CirX.ORG> uid Clive Lin <clive@FreeBSD.org> sub 1024g/03C2DC87 2001-07-30 [expires: 2005-08-25]
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: PGP Key Server 0.9.6 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 tF/cItKqIqZ9RhFcg+IisxgUtQ== =g51D -----END PGP PUBLIC KEY BLOCK-----
<yzlin@FreeBSD.org>
pub 2048R/A34C6A8A 2009-07-20 Key fingerprint = 7E3A E981 BB7C 5D73 9534 ED39 0222 04D3 A34C 6A8A uid Yi-Jheng Lin (FreeBSD) <yzlin@FreeBSD.org> sub 2048R/B4D776FE 2009-07-20
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBEpkXvABCADnsekA8rnN29OpRPBgLBo2RzYI3b+FCSkPqDatHJuGSfTqFUgi 2WI8QItI0toqcePNpNtgyHie5jqsX3/yFBRGO1xyCSIEMSbMiOtZZizYLqlLW9pZ seNxwHBetogToNoveYHXNGsrptkqir5mx+vtSO5o6DFcDZYQRgZq9NTnKnuJkYwK wnujkHcTpUVw9pmnwj6ZxZ5V8fboCzd9ET1SmWH6194tpJ0Fq/HX9qGfF/c6Kl+e Hwz7TFi/hpMwsdwjz07SrDi8bumuWNpwZprOzHKORbHfdg3GZaEPcLhF7qjvYunk osYrnyUmz7+FpTJVg3u2Pp3eL0xdXU4TuwTfABEBAAG0KllpLUpoZW5nIExpbiAo RnJlZUJTRCkgPHl6bGluQEZyZWVCU0Qub3JnPokBNgQTAQIAIAUCSmRe8AIbAwYL CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEAIiBNOjTGqKQTYH/3kkQL00ibVSNCHH 2VNfnV9tyIDBIorMHFctEZ+zTQ/mQRxXUS3gpD9pg4nYNJtrstIWxH9Y8GxDTjQ/ pJsVbZ6WcYXANwihoH1jQetSR4ZZDLrVynSWQ2WeYg0XEedKxV6ZmxZQPAbN742o T8ehZpThFSaPVDtIYFh0eVnPkwsmR/mC5DQDGkwb2p2bsxdbkYCWLLRiS5buGFyZ iHZSe+D+mRJq5kxZriy2pSXcQUlqZk3jvpC9mXr8QzAwyzbPwHRak5NNuQxxCJGh CBDzTSB9OsJrLd7WOxISii2k9ZszP69EymO3wTpSnoCPyUllOsdMa0291xv8kw0c 3ytWz/65AQ0ESmRe8AEIAMYk6s/25zGN9qnfbTjwtxPD2/K5AeyJaQ+kZ5kiOZqn DlpMawMccq+yvh25oX3j0NUug4j35FKFZqnzpLx4KizbJjhZX+V826lVsf9kx6mR UmpYAlOb1qQUZMuR2+41eVnuieAqNyFH4pjp2zR6mhaoI82a1AMeOdhVOLfTl1+Z mj2sL+1J+fkcBxuhMEC30elVKxuQo/8NphZlnZe/819Q3HDsuw2mEiQMWH2y/5B3 aSpm7/LY/L13YI8oUNWZrvjJZYSYyFyhDryzkP60251Dhfwlu2792Jt2Y4dm/zVW Yi/QpUdoPLRqEQjipiBg1sWLH1UGYys4muUxBoUQItcAEQEAAYkBHwQYAQIACQUC SmRe8AIbDAAKCRACIgTTo0xqimB4CAC9MJzYzpUgnlhh275aZs6pXJnK9dty7HpQ zJ6UpoR7oBcmYivlAXaFBB0jxsAAzu3wKXwC9IOZZAB5y9keXWkG/2zdutJJ687a HAjXUUPi3QIF1uPGgvpEQPNfn+Gki8c3B/QOCVhKg9UEtewRzT8tZqCubeZLmc7L NbNX5xOta92KD29XOCXX+6htRJ3aBTn6nNzRdBpuVxKhzd+eLg4gRMKJebDfDXrG fkDmHta2l1EdhlLxyLCvLd0x0mMGS9rMBuEaTvc5hka6YsM7hhGMZe//CjCO8mGl CZyUepEymoFG7nCPpMTgZFxCHzOOljsoaEeOxg6aS2kNv2sTcDkJ =cF/N -----END PGP PUBLIC KEY BLOCK-----
<linimon@FreeBSD.org>
pub 1024D/84C83473 2003-10-09 Key fingerprint = 8D43 1B55 D127 0BFC 842E 1C96 803C 5A34 84C8 3473 uid Mark Linimon <linimon@FreeBSD.org> uid Mark Linimon <linimon@lonesome.com> sub 1024g/24BFF840 2003-10-09
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD+E2XERBADU5F4DbwP8KaHN1H+yz8zaPjOSLJushNA8Qu0hN7GXqd5vgRDc zzzeZIzVVxPVdrQ+I24UwSIYu4ww6nfum6kRv/i5khxbYM4zGGPG7s5pmqIECum1 tKvJ21IE823lcJtUp0C4qhCTZvoc3lADMn9cPgOSJClzHjAYDasOTy9hhwCgsTqP aHntu6Uj3BYpurWHJSePWrED+QExF2asNPehIOZ4l7dwpaeGSTxeINH1FYnlF+J1 N8lvpFQ2H3sfSViVgAtqM27Y/jOf3EkQH0Wym0iCczOxEUFbNH5NWAm6IOVT9owo tkh2PZgyfN0AJZBPh9d/oMN2MEKPb6wcqr3c67ZmQG7B+LGliBSVYhWDbd6E2YHb bvKVBAC0pL8fzNldEQUUYDTTrWhMVCr7IGzwrd6cEhIZ6b5kqQd1IsIChVG3jCVL wWGSgmXY4J7i4Ujsx8k/f6CluNLwmP5t9caycz32QdJAWkzQq2x4AQUy56HDbvui QFOqD+PGWqvoUUyJqLbzoASI5dcV35OY+m37Z1Wxhsn22WBE0rQjTWFyayBMaW5p bW9uIDxsaW5pbW9uQGxvbmVzb21lLmNvbT6IWwQTEQIAGwUCP4TZcQYLCQgHAwID FQIDAxYCAQIeAQIXgAAKCRCAPFo0hMg0c5j/AJwO+VSVExRY8saToDKF3hVe4wNE EwCeKFf5ysZjQIJY3pJ9tUzm8o3tX+i0Ik1hcmsgTGluaW1vbiA8bGluaW1vbkBG cmVlQlNELm9yZz6IXgQTEQIAHgUCP4yK4wIbAwYLCQgHAwIDFQIDAxYCAQIeAQIX gAAKCRCAPFo0hMg0c8c4AJ99m0hHLctAVXjfZYurZBnl2dUL7gCgiG83BXm30rBa POtWm2AstMb6uVm5AQ0EP4TZcxAEAMQPPoRMfBR3cRc/T5NsWunFlZA6nB+3BkVd p0ham4FoseEh7q+hqa8udARMpTc4LIIL4FU6lIa4L0s3Z77d4bXfJmwlUHuUMSk0 tnG003D4VDBc3HWSSX/W/CRyN+OBxPljJywTjI4goyXx9Lc31qwpGqYy5Ao8X6EA TT9g3IgzAAMFA/wMgON1JxPGr8MSvSLHLMY/xn2PR8lSVZmOlbhNE5hL2FzyFME+ Pnc8hR31cohFjSXR7hb6SOWrZjYpdIVsa6qdqXIRDbcb5sKEGv9959W8yt+L/kNr RlN3oExA2pkYpEQfLpH0HdMmbU61NR0cI6p4ZZly4p6JR0kEajaUOlq/cohGBBgR AgAGBQI/hNlzAAoJEIA8WjSEyDRz9lwAn0pJVzrxxaB/PqtJsu034bH5PnlDAJ9G axdzE7A6F/UPmrURep9QFDq70w== =GflG -----END PGP PUBLIC KEY BLOCK-----
<arved@FreeBSD.org>
pub 1024D/807AC53A 2002-06-03 [expires: 2013-09-07] Key fingerprint = A92F 344F 31A8 B8DE DDFA 7FB4 7C22 C39F 807A C53A uid Tilman Keskinöz <arved@arved.at> uid Tilman Keskinöz <arved@FreeBSD.org> sub 1024g/FA351986 2002-06-03 [expires: 2013-09-07]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 uwxauGavfjau5uBBiG0EERECAC0FAj3zl+QFgwLKpq0gGmh0dHA6Ly93d3cudG9l aG9sZC5jb20vcm9ib3RjYS8ACgkQEFgWhcUhCX6JWwCfWBLfY0MNvg76j1aFNiDS N0+Kc+MAnjyL6sZi65007O2iMN5ZrpizKHEgiIwEExECAEwFAj0FGRAFgwO5JYE/ Gmh0dHA6Ly93d3cubWF0aGVtYXRpay51bmktYmllbGVmZWxkLmRlL35tbXV0ei9z aWduLXBvbGljeS5odG1sAAoJEN6Fg/i9v+g4CnoAn2xsBlhU4Ar0ometcbozgfIU ifvNAKDHthneVq4UVMN5C0Lp/w79iovplIiMBBMRAgBMBQI9BRkQBYMDuSWBPxpo dHRwOi8vd3d3Lm1hdGhlbWF0aWsudW5pLWJpZWxlZmVsZC5kZS9+bW11dHovc2ln bi1wb2xpY3kuaHRtbAAKCRDehYP4vb/oOOKWAJ0SSTs2+mxevjqnan14AOzw5GmS ZwCeNlwGUMiPZzQ7Wk8Rc4qzkElJ9CmIkwQTEQIAUwUCPyFXhAWDAZznDUYaaHR0 cDovL3d3dy50cmFzaC5uZXQvfnRob21hc2IvY3J5cHRvL2tleXNpZ25pbmcva2V5 c2lnbmluZy52ZXIxLjAudHh0AAoJEKR5zcRatGBq4DsAnjYo4sY3+i+OfER0cPvH PNFweS0AAKCTKLfNHYbegvlreeK3itC+KED7EIiTBBMRAgBTBQI/IWPJBYMBnNrI RhpodHRwOi8vd3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9jcnlwdG8va2V5c2lnbmlu Zy9rZXlzaWduaW5nLnZlcjEuMC50eHQACgkQeQV2j3WE9dj0JwCgquNEDw0PfLpP VpBKBFl4l5i78sAAn2wl5MUyTa5HT3xINEJRx9N4oLzFiQCVAwUQPSLOeb1ApukP zoVJAQE8lQQAiCSul7FIad4Pder4RTB8ow2nE52U4W0G0mjD78CBaETZOHGJuO8l lrqnx/rYDS7rsAL8Rj/v5YrsYOBbPY/6s94W6Jy6iWijwccQJRw91CtGueCTab9E sQE6WQnp1kxDyJC3FMytBchVE+gLmcn/7MhPnWj05xA4wLS5N0maYEaJAJUDBRA9 Is6DvUCm6Q/OhUkBAbbpBACdcJbmmeUz2kxRjtB2dBr3l0mVGpIMdVMC/NaKqHqk 5gxRm98cOnq2we9PSBI7H5xBmJSqX+ZJHRVUSDzoGaJ73A/yPFi8t7Q9MRMb/Xep w/bEx7jsvV7Lg+tXRedxG/gMQ5E8KS6CXRtQIprLUGQJ/rOA/wxylXPIUMGNaiEb moiiBBABAgAMBQJADIE/BYMDwb/PAAoJEL/W7lhX938JNtkD/3/2RKm28v6btjL2 UrCJg8LjxoqxSOdU6N5SLplZ2YOef3+gZUTZSsYT1K4XvPoBvPif+6zd0a9bFp+f P2j7SGMrlhHTd6+aDQ/BHaEZzt4dY2dfFcDNyvqIKeOTXw8/HR+dwryHDNwRcEMO b00IPVjfVirOcdPNbn6jYP1LYnPniKIEEwEBAAwFAj0je7wFgwOawtUACgkQxEaR 6Lw5pc2SzQP5AfSuryok2VlAgquMdE9fwF+A3bjTWs6TVxFkXdInfML4Ur+44z00 p9kjkT5IJrEebMZqYHsnyNix2owkgAyddONo+ldGAyzTUYwEWY6IY0km1n97Tnz2 f6SSOYNqHVJ50h3jxsclD5sHBiH+1OdDCCHyyzV/gL66y2JTbLZhbOKIogQTAQEA DAUCPSN7vAWDA5rC1QAKCRDERpHovDmlzaE3A/99qZ1tpSrkk3Mp/Hkbwdn/cbKp YtkMfm4yQyjaeRL52CrOtVVK68DobMTaRz+KYTOhI9QMhkwSn3sxFpA7YmJ5NcQb w9lp4UU+42+KNj5szfEM/C+tDOyMHjBw4sgBXvsyY5w05SLXMN9KU48OChg8TWKy LCaGZybsl0FG3D5zC4iiBBMBAgAMBQI92qAcBYMC4551AAoJEOUVKCUzHNpdbL4E AJNRKdSx9NEU/zO22hbv/1J0NoGpeo7U3CkJZKbfuSx6nB0EXNHq4rZwcouVIR0Z c/KpKLXZlKW5OEHuqYtqctz18g3KiF4jY+1qlZqzIg1Ybmm4xuq8+040wbwpG/3D sCgPxPlqvRGHeOwgxWIWngmiYm7WmiQIKQAoy8HTgbSYiKIEEwECAAwFAj3aoBwF gwLjnnUACgkQ5RUoJTMc2l3FHAQAki+C6EKYQRullCePZ2GMJ8SR54xI42JaPbSB zxpb684J/jabcr8WHHJvGXlapUmdl3vqlks5tatn5iFJvbE4qAPOdo6C5NXIpD5O SbHAocXj43QdrftuMVF7w1fyJBkWFoMrMZoa4FxiFLENbm7DknLebp1Bp282O/XR 9R52PJSIogQTAQIADAUCPyFkiwWDAZzaBgAKCRAbsIu/KpIyJW/MBACnClO5+acv jHnfaUd53tcKfLkb+vWzMXWKNt37RG1d04bKqlkZdzJKT+noMBqflVf91rk3goPP JPDjwUtm51gGlSgPG4mPnhQRrUHwC8BM0lGiuB68Z1QdxF1iUx8B623GtPrJbfuf CexrAxIL6La7KosErbR1JXbjS9+d+M1p9oiiBBMBAgAMBQI/SiLRBYMBdBvAAAoJ EJugaRW/hasxbHUD/RqcGxjUaJgELwAfNcTpm86BsNL5tu6WJFe3DdIIzQTb27GG gbOfj5NRLFnk75xgQtk8lnKqsXQHMC6hm+pwh4ZGISBZE7NIqYokUSYDT2mbplDo 2kDPyO2V1fWf8P5f8rI5e2QYIvn4kNFWidfQKh1Rw86MlZVIieVf8eVeS5qCiQEH BBMRAgDHBQI/FpZTBYMBp6g+hhSAAAAAABoAY3NpZ25hdHVyZS1ub3Rlc0BwZW5n dWluLmRlImh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29udGFjdC9wZ3Avc2ln bmluZ3Mvbm90ZXMuQTkyRjM0NEYzMUE4QjhERURERkE3RkI0N0MyMkMzOUY4MDdB QzUzQS5hc2MiMxpodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJiL2NvbnRhY3QvcGdw L3BvbGljeS92MS4xLwAKCRCrHktgRnVrHo45AJ0dD92uCPhsjLWrVsbhMJfwmkVO nwCglKPYurVXyo6uXC/Q5KdueASb3iWJARIDBRA9A+ZYlWBhpt2TQTkBAQY9B+MF dy8EKYP1mgbIXhZC8sScs2sSUsLhF0ZpSq6JcAMGIqjZZRSPfvDgt9Aqe8GnG6At Z7NXdfYARBq301Vaf1t/kNwVK0zcL3TswpGZ/j9Ao+HhJFA1ivPHb3zrazrmEluF HbbPHZ+33Lvx1APLw2AXP2ise5XmO/Ra52I5TgeNP9HJs1R+Qk8Pt+Pir5Efgego JngRgdySfvcFFo9O2Kinx1sV3a/KTzmP4kzmygsk2zVjTN9uLv/RV7U/MheTshFx IfQUxCFUofTz16Z5/nPEt2ePOWXQGPZrcW8grx6jQA3TnNQpy45kpBns7nWhvJAI 7UWzBBdMaBwJUjLUiQESAwUQPQPtFJVgYabdk0E5AQEtVAfiArWPvzDkos9Y+cao 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 IDJB6ZO5bodnUoQycyKKn37YE5s7kEdKoRMkZXWZaJk4bdF1b9EQZxlDvCBIRDPy YV1HQyk3R7az4S2JASIEEwECAAwFAkEksIIFgwKpkIwACgkQG2jc/MBZaCO9nAf6 A8uZ2u5TNZyJUSjevVElgUO4dhwF8EDMm5aYqTZeLU4/PYGVREJRFwfNqXQ1MFCy 8nSrB3vDBC21MoRPTnfvqZHTNwc0SHoZA6gYi5JhzkX+NJwds7M1VXFnKesrjNsn f0+NYeMkiMNRj+ZpqXfhXxcVnSMeDmHHOTtxO5LDAn68irrAIg1SJWanRUL9cCl+ 7SOPa19pIKmjNKIWEtRnhR92w5TKvm+r32PwWUXyecqsNKvlzNxL+YPrPWOWtC3l GPATg/m9g1QJjsQbFSUM2cATMJeYXN1OA9ih+SctVQ5N2/OLHTapW20pEqZ9apZ4 5/PuKOuQyN67GU9rHvSdVYkBaQQTAQIAUwUCPyFjnwWDAZza8kYaaHR0cDovL3d3 dy50cmFzaC5uZXQvfnRob21hc2IvY3J5cHRvL2tleXNpZ25pbmcva2V5c2lnbmlu Zy52ZXIxLjAudHh0AAoJEPl8+eM6S39dRrsH/0TXa1EXhlnrO7TgyXTfjbH60w0J bsE00hhpjy/Ma/kv/VdtmdSy8xs4NuzCO1Qibt9Mx3hBSUzQ6eXw6zaMgqmTzv2g Cm0N0Nn2pbZoXj1jbGyGf44Ax2eqD+yKJC4cjHttAF0zTLSHGXDzpt72Kh5nFJ5c 9yw58SiKDt/+rad6kOeskI6p/Uvkb3y/9a6vuIyQ8KgHqFvVUbqXCgBNN5OpxCcF UpvEBiQ2tGXPJ1AUxXILVLbq2TF5vBREIJDbWAhS/Va0T90/B9/KB38afAgOdFpO rkaqTKUHX//H3tjh1TLQibtBeo03sT15GlIo5mALPnSDgAvi+QhaIHPk2h6JAd0E EwECAMcFAj8WlgcFgwGnqIqGFIAAAAAAGgBjc2lnbmF0dXJlLW5vdGVzQHBlbmd1 aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250YWN0L3BncC9zaWdu aW5ncy9ub3Rlcy5BOTJGMzQ0RjMxQThCOERFRERGQTdGQjQ3QzIyQzM5RjgwN0FD NTNBLmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29udGFjdC9wZ3Av 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 85fcBYMCyqa1IBpodHRwOi8vd3d3LnRvZWhvbGQuY29tL3JvYm90Y2EvAAoJEBBY FoXFIQl+suMAoK9wMiePGVWghspdqtP9CzYpY/ZGAJ0bZJu2VkMvAWRlGOzRgT36 eZA9uIiLBBMRAgBMBQI9BRkQBYMDuSWBPxpodHRwOi8vd3d3Lm1hdGhlbWF0aWsu dW5pLWJpZWxlZmVsZC5kZS9+bW11dHovc2lnbi1wb2xpY3kuaHRtbAAKCRDehYP4 vb/oOGeJAJ9Fj3VCUQIZk0qd9UGUEJIXBH4m2QCYxLYupcwjq5IpO3TDnf1pcPon SIiTBBMRAgBTBQI/IVeEBYMBnOcNRhpodHRwOi8vd3d3LnRyYXNoLm5ldC9+dGhv bWFzYi9jcnlwdG8va2V5c2lnbmluZy9rZXlzaWduaW5nLnZlcjEuMC50eHQACgkQ pHnNxFq0YGqazgCfaWuFD/Y3mWHymdnU3CL15fZudaYAoMYSpXJwS+IQh7rsdske 4ac4u1oniJMEExECAFMFAj8hY8kFgwGc2shGGmh0dHA6Ly93d3cudHJhc2gubmV0 L350aG9tYXNiL2NyeXB0by9rZXlzaWduaW5nL2tleXNpZ25pbmcudmVyMS4wLnR4 dAAKCRB5BXaPdYT12CdDAJ9wa2zL0+9ucn4EEYye2ewY2ftnLgCfV0GGtD6qqswR XSX8xg1uVT8BvTqJAJUCBRA9IeIwxEaR6Lw5pc0BAU7xA/40Pz2+U1DqLqhc9q+g jGYaKbvB9cp1XD7TdtaZGQflFatqzjUWMFx6moDBNpH2ewJwERxaLFPIvl80Rwhc BVOanPYXS/Tk0AGwhsXYnNmSXQz5esxe9UIFk0NgZNF8je9vMOgD7+sNVu+3NPQc 45XajKsoRq6i+vOiy48grLPrvIkAlQMFED0izoO9QKbpD86FSQEBPwwEAJyHvOQP xpnXgPRkcH+WBATeDfYACi8wRtYqpBHrUWo0i8x+05V9QWEaeJSauaKEhEoF5zjG 0CQ+FZ77gWcF+W2AU3sBXXt3yK7hu2yVDu0dZ4V1ycN2d4LvV9s2X+Gig+lnF3m9 n+hE7XkR3kjcvlToi7D1rAtQg4G5xJFFVxmPiKIEEAECAAwFAkAMgT8FgwPBv88A CgkQv9buWFf3fwm2fwQAsZtoL1euv11o+Jx/BSaxObERXUMTQ4WQHRh+uZSTWdxM 0H+lLCvhBpquwZ1bTRKFnmb1JZTpkefUJ5h/ZG1MWBP8TA3vQMzVhwu5VrDiWehp 8OK5hliRQKzXy7qiup30DbSB/bDo/70+jDGU1SclMdVWIAHB0RZ4+sMz0vm6LfuI ogQTAQEADAUCPSN7vAWDA5rC1QAKCRDERpHovDmlzaUUBACDoo52K7TgUbPWPP5O CCSXu3gq0MmsZkGa9ri/FQGErQB2UyxJlldsih1JHs9UDsxvcvi0PHS2d4UgAL7f Yp7BY64JfC1XA4lkrdrGD3DkYWDjkaGHwdzkXUzlTKro29bJvuqLtdSaEfmozp6o NyuG8I5NEIsY8Fczynj5or9PRIiiBBMBAgAMBQI92qAcBYMC4551AAoJEOUVKCUz HNpdilQEAJ2mlcltB/DyQtNOneX+qAQJe2L6fusQrfQxDg4c10Wk+66Hp3mvooRO RBJFOei1V1elBSrqwkihrioKVubPpHVVMSACsdbxf+OnCzp2xcEAlTca60RCk3Vr 7HovwC3ok3FQYenOsjN1mim671DrEuShZdcXr28NmVbS/BxXdeBqiKIEEwECAAwF Aj8TM1MFgwGrCz4ACgkQtGuSO22KvnGBFAQAp5y1TghvnXEw0D7SVExX4YBjBc4W kjdYJNcPGv+e+lzhBQr4omRWfaXyJ1QI4wJhIOu9UAaeXncBRObPTawsD7bROf9k Cois/pPxwq8U76O7jHc0U1o243izjxloa52vlUVolysBTQ+9wbtB79YWCL76AxBR jZZ8ncq8IZ8AbrSIogQTAQIADAUCPyFkiwWDAZzaBgAKCRAbsIu/KpIyJSKcA/sF G59sCKxjoDnvAIy7tKe5zETyZg9esDUP3UE2EcLmP/ahWMPwAEU1Fm43WhKf96vL H94Td7rZisji7zxlU/6/g5z+iUA3zFBTJQ6O5WYVKGGRG/P2MfZlmAEUTIYYuPDn 8Wo5lOw/eJF2jOAGAi7ILPeHhXxjjn72X1tqQuJOW4iiBBMBAgAMBQI/SiLRBYMB dBvAAAoJEJugaRW/hasxz+MEAJE2ZbBrCenJ67wVbJzITCAIgbC5s8K7DqHhEIxI RG/O2DbU1g3mgxbV+6PaAonnPvl+HEF3k82g217tPkTXYJuBrt5T/NgcwxzlkMZ3 xUKZybz50KvxDAnKw5OIcpSnh2E7+Ja1AkBbzF5w/rYMdVKdlj11CUcEY9CVkwQg c0KriQEHBBMRAgDHBQI/FpZTBYMBp6g+hhSAAAAAABoAY3NpZ25hdHVyZS1ub3Rl c0BwZW5ndWluLmRlImh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29udGFjdC9w Z3Avc2lnbmluZ3Mvbm90ZXMuQTkyRjM0NEYzMUE4QjhERURERkE3RkI0N0MyMkMz OUY4MDdBQzUzQS5hc2MiMxpodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJiL2NvbnRh Y3QvcGdwL3BvbGljeS92MS4xLwAKCRCrHktgRnVrHlyZAJ9DfCRr/epketGKHgFJ qEtUpKY5HwCfV2vAA6M5/ECBMbzYgnvk0AyXR/uJAREDBRA9A+0klWBhpt2TQTkB AXlOB949F4PDm6NH+kr4CRk1ZBe9XPvpDwi92dtW8XbnSuQeEiTyuuhsh6hxznc0 E6hxp0TkSyyQQvCkM7jdepYUz0YTcrv/7B3l8PcSm3LptluQmsuaoE1DNh9jrngL wjQlF31/4DIAAb8R5FDA2E2Yes6S0EwPHH3jjvaeYT16+krw3Lt2cja6vnmslele gCc8HvxqPRvOQAZJKg2cOwQyNz30yYBaFEcEKCFDmsAKPd95/pOHzaAAkYlDHrzl NBQ/9ieuApOGnWe5zrTJ4U7zmnJk1wSOpVQtzliOj0nRdVtPGSzAy71XeiDkwX1Z puJs+6WnAsJysZRF7xSe+8+JARUDBRA9A/EIAVW64qCU2iUBAXx8B/0VFgPg08KC 1EjdkdTmruI5RRhnurqrEDNuh9zhGoc+DIx5OMBpKdv/FuBMLvHy9s4rpg2q94Nb 4fCoU2vz8KJMyFvDIPlLwixriqBBeITPqSdJmGQzh3bNOJ7tBoSBzRg+TDCCPyI3 zWnoZpnv5ASu3nDODiImcBaMEM8XlvR4ciiv44kg16C6d8TZ1KlYUyYzGmBA1Aiw IuPnZdwkmHL1OOgviBZdopLUNdxMmuSpoZC7fkUPAgvyHUIXdaIeHBsO3ddQADWm EuaA+dt74CZJ9kooZwFIiVLsA4sFja1yvmLO6YO0D/xTGYDj4ptoKO5/EiBLCJgX XD201rZI0LG8iQEcBBABAgAGBQI9J5ZGAAoJEIz2bIET3TlQgzQIALkMyL6w/Yy9 68ah5KswoSokkuCsJj7VfqHBXcS3Wd85yXG0gIpbDsp3WhoMs5F375UkzdvQvZW7 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 al9u9HJ4ZxOC/ZZ1AVm7qrgEeC8wFWKlMa29dt1cKO8ThB7O8+IxWTNQ9mGHQRZR JgvsFj+y4FSSZqI3uy2gn8nu68tqg4HvuzYGWw2og+9N+7VZYBxUQLi/gS4Oqyit QZC6psx/gPiXQ5LeRHMG8r+ErBLd/we5nxPGzqEcf3OJAWkEEwECAFMFAj8hY58F gwGc2vJGGmh0dHA6Ly93d3cudHJhc2gubmV0L350aG9tYXNiL2NyeXB0by9rZXlz aWduaW5nL2tleXNpZ25pbmcudmVyMS4wLnR4dAAKCRD5fPnjOkt/XVHLCACzW+/n SIi37z8LxLdd2svzce3PLJ7xXc49oF0SdoeuZmpBRo+4H5Zh7HZQ1BEsRBJykYrS IU+9pP5BiW1TaIk6QBUTIwIy3pDGvyI/oGpJPVa9wc1ZoiNjhfK8yDXY+z0Q6KJR ab6nbOymsZo2mRdCQ4EVo+YvY8lA+e84t1C9JbzBsi7yqAT3eQr+O9Qq8I4M+vlz VOq4iWqdRaGTq8oG0ChumQhbFNXwWrKu/A5NOzLFuF3l3vhMqbbJJEj/EZpdss8k yq8jTN4lSsuNvf5DyLSbzj2IOJMRN/hSPrBiOtriMr5aNDw0ADK54AUTy6+ab1tM iP3Hc/FNHFJ19F/ziQHdBBMBAgDHBQI/FpYHBYMBp6iKhhSAAAAAABoAY3NpZ25h dHVyZS1ub3Rlc0BwZW5ndWluLmRlImh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIv Y29udGFjdC9wZ3Avc2lnbmluZ3Mvbm90ZXMuQTkyRjM0NEYzMUE4QjhERURERkE3 RkI0N0MyMkMzOUY4MDdBQzUzQS5hc2MiMxpodHRwOi8vd3d3LnBlbmd1aW4uZGUv fmJiL2NvbnRhY3QvcGdwL3BvbGljeS92MS4xLwAKCRAZomgJiDj9lAmfCAC89hFV 1QPBgmZe+pF5bxkpld4c/P6uGwSJZ2Mumi87GrkesKclpnamTD1PirLdJqO/Ffnq 7zdOJ8TpqAWVXWnjJUck8oqlkNETlTWqNdqmT8ljIYoqPUTFP5p6PADy4xnmFueS ZPQwecXbiW/elXc1eHW3PYLuaw3jbtso68o7cU13cfqEzmN5n1HKnXixT7JMLvwd gbikGGIgDqxXHrv11/FbalEeXQL+PF9dw2G0ugXST0OlrTksShyEv5Nqm480rS8E 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 4ACggCxN/6JGgnZKzPcjQ1UIOrkLux0AnA+TSOEdyn5KbHslR/QSOJkiGWoNiG0E ERECAC0FAj3zl9QFgwLKpr0gGmh0dHA6Ly93d3cudG9laG9sZC5jb20vcm9ib3Rj YS8ACgkQEFgWhcUhCX6wuQCcCEVMC2uxUY6TU+FZh1gYJQHeso0AnRvpRw0kFy4M uwxauGavfjau5uBBiIwEExECAEwFAj0FGRAFgwO5JYE/Gmh0dHA6Ly93d3cubWF0 aGVtYXRpay51bmktYmllbGVmZWxkLmRlL35tbXV0ei9zaWduLXBvbGljeS5odG1s AAoJEN6Fg/i9v+g4CnoAn2xsBlhU4Ar0ometcbozgfIUifvNAKDHthneVq4UVMN5 C0Lp/w79iovplIiTBBMRAgBTBQI/IVeEBYMBnOcNRhpodHRwOi8vd3d3LnRyYXNo Lm5ldC9+dGhvbWFzYi9jcnlwdG8va2V5c2lnbmluZy9rZXlzaWduaW5nLnZlcjEu MC50eHQACgkQpHnNxFq0YGoOEACfTsirMSqINACr1m4dUD2r9J7QGEsAoIM17Lgq BjEMuYeVxx26AO+WjhFPiJMEExECAFMFAj8hY8kFgwGc2shGGmh0dHA6Ly93d3cu dHJhc2gubmV0L350aG9tYXNiL2NyeXB0by9rZXlzaWduaW5nL2tleXNpZ25pbmcu dmVyMS4wLnR4dAAKCRB5BXaPdYT12O3iAJ9mZ1NU2WVpp9du8QOpTvp1jdAodACf U/wOv46EWpPHyLzGx7VHh0MoBrWJAJUCBRA9IeIwxEaR6Lw5pc0BAQ+vA/0Tlm31 srrL1VhwixsEUO8BguGOG9P0go59CscjOyc2Ah95zpHQHwtFcZo6VR/qMxM/WnTo 6+7JE0Yce6xYO6LWdU9w363+5cHtBPXpR59e/XVzNeqbMIq0NoQNAcKoAkxYAUaM v3ogRI0xMUYZLHzucxSAOYvkclVrD5YsbmRxWokAlQMFED0izoO9QKbpD86FSQEB tukEAJ1wluaZ5TPaTFGO0HZ0GveXSZUakgx1UwL81oqoeqTmDFGb3xw6erbB709I EjsfnEGYlKpf5kkdFVRIPOgZonvcD/I8WLy3tD0xExv9d6nD9sTHuOy9XsuD61dF 53Eb+AxDkTwpLoJdG1AimstQZAn+s4D/DHKVc8hQwY1qIRuaiKIEEwEBAAwFAj0j e7wFgwOawtUACgkQxEaR6Lw5pc2SzQP5AfSuryok2VlAgquMdE9fwF+A3bjTWs6T VxFkXdInfML4Ur+44z00p9kjkT5IJrEebMZqYHsnyNix2owkgAyddONo+ldGAyzT UYwEWY6IY0km1n97Tnz2f6SSOYNqHVJ50h3jxsclD5sHBiH+1OdDCCHyyzV/gL66 y2JTbLZhbOKIogQTAQIADAUCPdqgHAWDAuOedQAKCRDlFSglMxzaXWy+BACTUSnU sfTRFP8zttoW7/9SdDaBqXqO1NwpCWSm37ksepwdBFzR6uK2cHKLlSEdGXPyqSi1 2ZSluThB7qmLanLc9fINyoheI2PtapWasyINWG5puMbqvPtONMG8KRv9w7AoD8T5 ar0Rh3jsIMViFp4JomJu1pokCCkAKMvB04G0mIiiBBMBAgAMBQI/IWSLBYMBnNoG AAoJEBuwi78qkjIluIoD/20Zoeb8fUTz6dltU0vJwXhcfKyncAh9OEXJyu0XvoEP NQGEwk/XCogWhM5Wk0RnJ9xpF3F6cG4V196/KWnRLgcq3k2O6dyT4oViHAcTfXd/ gqHHm19WOLg8K10OoNMpoOcLz5uQwGXPZo3vTZtBPclhUx377IyRS4NAV0VDV0EV iKIEEwECAAwFAj9KItEFgwF0G8AACgkQm6BpFb+FqzF/eQP/bS51MfoqqIEbo7bm Td+6uhTbbSmMic1bgwuX2BbDHml9+bHSG3nQ10/dbpmL0FyZ22jQhtGW4iK4Eowi CRo3oYl/L4EOz5Diw9+8Vhu3b0Zur1LT7kZtNHH3VwCVzHmd9+4JAv5AOV7a1BBb P1u4gOmmqRzPkRzRIrVTsO2T4NuJAQcEExECAMcFAj8WllMFgwGnqD6GFIAAAAAA GgBjc2lnbmF0dXJlLW5vdGVzQHBlbmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWlu LmRlL35iYi9jb250YWN0L3BncC9zaWduaW5ncy9ub3Rlcy5BOTJGMzQ0RjMxQThC OERFRERGQTdGQjQ3QzIyQzM5RjgwN0FDNTNBLmFzYyIzGmh0dHA6Ly93d3cucGVu Z3Vpbi5kZS9+YmIvY29udGFjdC9wZ3AvcG9saWN5L3YxLjEvAAoJEKseS2BGdWse av8AnjQExVJnQN05g1TMyMD0OKcLqskYAJoC8yqjWLJoeHKNJ60RQbJtv/EzmYkB EgMFED0D7RSVYGGm3ZNBOQEBLVQH4gK1j78w5KLPWPnGqELtJMDE489APXweY7cA dnLBevcbyI6HuLIlTcSmFAgPoHjdO+7xWNpfaa8m6vSumkyUeoYMlK+TUnx2LCS6 FvmPCYoEFM6g92HpASGLwZqcCLMp3+uemnAB/N4/QKaIqPNBAlSIAr8/gouF3Q5u mO18G7YPdrNMuKcxRFMjy9iaXIryRWAMbl+yecvT+SyewrD33TOdvHPu6eWcYIv4 xLK3jcIJ2hoiOJorzam3u9NV/ornIhdtEB+mGzIbgobdk7Wm+wXKAPSxGz41LHw6 KP/NdBSEQvDT/MJMXrfM0Mh7TDklFxQ5d0r1rxDaPcdUnqiJARIDBRA9A+0UlWBh pt2TQTkBAS1UB+ICtY+/MOSiz1j5xqhC7STAxOPPQD18HmO3AHZywXr3G8iOh7iy JU3EphQID6B43Tvu8VjaX2mvJur0rppMlHqGDJSvk1J8diwkuhb5jwmKBBTOoPdh 6QEhi8GanAizKd/rnppwAfzeP0CmiKjzQQJUiAK/P4KLhf////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// ////////////////////////////////iQEVAwUQPQPtDwFVuuKglNolAQHXHAf9 HIyylcQqNFatx4TC4LB8VvuMajy3C4txsU5IgkpCQlkxv7OBLUaxTtzi0UaTuzL1 ogNOruD5Dz/sU5W1vFBDN0/nb/FgivCPlQZU8wX392LwZJ+BsyVeYNSODTeKLAxY eibXPYGrXBX+g97/gtsVih2dAFfglB5uduCQG9//n4kZHj2nqCq/6MYmyJv5jaJz 0LqeygTn6QbKB0nhGmP+yqICop4ldnQs4ebi5980J8PzBypCaxY3B42Rc845g2gv bYpF1HGNhrEIPkqeF79X6Y7o0/QSiCivmqLbBv1Wehy75lGhWN1uHUPT6uYxZxDe Fc4n4bSilKLvAU+I2iTGYYkBHAQQAQIABgUCPSeWRgAKCRCM9myBE905UEgeCACm 02d+IBhcQGXS3f74HImb+UF7xbC+sS0JgIha9bXbjcbuk5hrVA3dFrPlh403JHCU zj+Ucetjj0GFTp8mwoowZdgjbQoAphixJ0hCyePLVlxQmIey5kSmHO601SeHiLjH k4l8rE1u+2q6TQgY1basJMw0u1pzqIyXIOIZHDJwomjd63g6+NO+JbPDMa+D3ur7 hJkWcKaNrRVRPTJemWD7PAJLPmMyyq3AXZFC0nJKab8S2AUuyxdCLSwkLxCQHXIq vImocpniny6eq/2h2Wt9LZ0G2BhvBEXA9YRJQnEwhDqf1GFJojtbdGxKmbQ6Vl51 ZLgT9qiPFbwhLDGzj9S8iQEcBBABAgAGBQI9J5Z8AAoJEPy64gyiEfXtZh4IAInC 8G4WUR7fF3puLovnymgaonudsm91vLE8H26fKAUMj+i4Lns3FCrKUKgsIqE6ykJ7 cimFq50qO7EVAOEHA20L7muCT3uyuUViJey4pDiWJxn9gRklYwb7AP1Z70sg/vCZ pWpHibfmzh3NV+iqtA/iC3+mv0M4+g96xlqcz/4h1wR4NGuZwViO5iFbglrt2XcC u0Mivi9HhIPwNV0MDxAUQXyoGa0MLSreABhzlH2gCeoplFVgauSN5FiK/U1vJmkW NvuBQWlrb9mUxE1YLjCbJnVa+qrucZgBmAbWxhxZpEM4uo9W/CVyYs+Ar3rnh9x3 lasLOfIzaizglb/xenKJASIEEAEBAAwFAj0Ew6wFgwO5euUACgkQCen5CopyTkWu Swf+PfsrzBwU7vwcb8Y7ZKMqU4byaCrbMRA1y0Sh1PQN6Am5dbo60poRwuuCs1ha iAEUncMsFzUDp6wWNiphqeq/1yRhVHZ0Vmo9LVJukml13yTHoxfQJfeB9Kwfv8PD EKbf7oLs5eg5OV8thrDeZH/ADOITFTRZ4RrxvrM0J7ycmXKos6bxTA5qvBpi3ksB 4VWvG4zDaWaRCvxVYYHJeDYlOrsTLycqJY9HeRSfLYTvfYGHtKQS69AmlLd4EbND bh6cUe9Nni2L5PLpOibxZB5k/27rT6kljm+ZRmNs0GXTrJbUKXQP7rTMO/7DhgGH v4wRtHN2uo5sX32UpoHKThaVWIkBIgQTAQEADAUCPxEOgAWDAa0wEQAKCRBABhUO QAnq7WFRB/9i1NmKvCJEo1p0cEvylsUn43h5Z2G1kTQNGL6A9lcc+vu8P65BT4F7 Ce/j2PLOFN94o8P7TZc2PBS2Ra2ZrNuZF6c8N1fDpbN/fMH+MJhjUTzAIdicVenl N0CWGaK2Ynks3jkQqxDjTCGEjQaRsBI7j+6wBqk20cpmn8MVk4MY7lTxtG/UElLC gumwfiXi8NKLcYoB6WvMSkdHITnHg5H3E61giWs4CBJ2Up+cguipaiqzQFHafOkY fidsuZZ4i6a9cV2yll5wwhLasJbl9W+T11wQudqQp8K/ghD5B0QQSuhPDeq1AoWD 5L1TsAwC7mcs8cRXFQcyBSFLS2+beuMKiQEiBBMBAQAMBQI/EQ6ABYMBrTARAAoJ EEAGFQ5ACertYVEH/2LU2Yq8IkSjWnRwS/KWxSfjeHlnYbWRNA0YvoD2Vxz6+7w/ rkFPgXsJ7+PY8s4U33ijw/tNlzY8FLZFrZms25kXpzw3V8Ols398wf4wmGNRPMAh 2JxV6eU3QJYZorZieSzeORCrEONMIYSNBpGwEjuP7rAGqTbRymafwxWTgxjuVPG0 b9QSUsKC6bB+JeLw0otxigHpa8xKR0chOceDkfcTrWCJazgIEnZSn5yC6KlqKrNA Udp86Rh+//////////////////////////////////////////////////////// //////////////////////////////////////+JASIEEwECAAwFAj9Pcg8FgwFu zIIACgkQpaBgwm7CZm350QgAgFvhxzaOyCdMHtXLClUDQ3gWpzGP7eIze1UMkliL B1xf1q/OzsLCm8K82t0acH0W57pxQ63Co9vw64g+4Uw+wkY+zOPMow0DJ0zEy2yd bGPAfgprB3atew0jFIj9wCDl4BcyjxH9EIXQsESeWFMVQGLZqbWNbdSGy2Fvhx9L 1MH7chXEWVfAx3cngZURkefQP931nTkBX3BMTuamzjWJ36Bo1+bEUWOc40EJ+Y+b 1edotw1DEmsHigmh0go3Xn7Z51Iem1Qel17fKX17vyMnIWOymHc69zxAOj/uhUWN PsAnJGy2PKZnFT5ZlHOVsrVuAUWknKHVYbcqP3sPYHNsMokBaQQTAQIAUwUCPyFj nwWDAZza8kYaaHR0cDovL3d3dy50cmFzaC5uZXQvfnRob21hc2IvY3J5cHRvL2tl eXNpZ25pbmcva2V5c2lnbmluZy52ZXIxLjAudHh0AAoJEPl8+eM6S39dXX0IAKzx k0rDD/EMUKZLF2A5vIQhJL1untKV52bWhdb7fLLpk5yugHOWM9Ce8GgQ+/pDW54q 68xbqMV1KiEN6fdadpaeZH0rABTJYNs+NGKs/Spi6l4e9e6slnzu4YG/yfyZY9s+ 6WULBCTwJsnfQBe4PqrSoNNPE4sADsYA+Q7jmd2v95+wZdq9GEZ3MH6cI0/rJi26 HZSwfzSfYy87AGg+LjNW/iJ6MwZ6nOitPCHJCkOvovRtSgw3yzmt1XOOTx3TUSzZ sF3xR0NgWPoCAADdx7ZCes9xNWpK2NKP80Gn4idNa7mILAlM4f5/fHAdtU2VS2wI Y/yv7hQdTH0oWrOI7hSJAd0EEwECAMcFAj8WlgcFgwGnqIqGFIAAAAAAGgBjc2ln bmF0dXJlLW5vdGVzQHBlbmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35i Yi9jb250YWN0L3BncC9zaWduaW5ncy9ub3Rlcy5BOTJGMzQ0RjMxQThCOERFRERG QTdGQjQ3QzIyQzM5RjgwN0FDNTNBLmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5k ZS9+YmIvY29udGFjdC9wZ3AvcG9saWN5L3YxLjEvAAoJEBmiaAmIOP2UNloH/2QP qs6n9ct6/Y/o4H/DPwayN2l0oLS/GQ33pPq2HVXDzESizH5wbqldZoTmtbz7BLJ1 FuEOy1imTnAq3EHEvnhl4vEMoxxA9E7ubeYxepWqtasudpFWr9PKHPtHQ7sGnrCM TCrxVv6juJDNpS9wjytLhAZK3CjDfLGrI6/wm/zt+KtL+P07XT4M+nujiAALJHxI u/OS3dCVspJh+9CGABipjSqm6IprmsdzZWa4dwSJx/FVlo7myCo4vwITwLvM3+DT AtNOrfQSfgURXjZUu15IreXyw8meyWkeC1pK7BHQZiFRtg5uNliikYkCaCR4j9Qm iW/eadPs+EkS2DjF32m0IVRpbG1hbiBMaW5uZXdlaCA8dGlsbWFuQGFydmVkLmRl PohGBBARAgAGBQI9ASZWAAoJEGfDAwhyWzfG7SsAn0lNlCrct/T4mpuiaV4Vm2Oj CCTpAJwLIQbHo6/96jUBSvNmW8utNMtrs4hGBBARAgAGBQI9AfwvAAoJEJVkH2sl PljjyhEAnjftN5ulHmofRQd93YGKDJZobAvOAJ0TT6ih9EiS+fE1xzfYThV2oFaR jIhGBBARAgAGBQI9A/CZAAoJEHjLuZUaVye5rq0An2Mi7OAiIrDgnUODQ6TYrqa4 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 AC0FAj3zl+wFgwLKpqUgGmh0dHA6Ly93d3cudG9laG9sZC5jb20vcm9ib3RjYS8A CgkQEFgWhcUhCX7O2gCgpijOB8d9FnMMwYJGu+3Spq2sF/MAnjajGQJQdL3N1VPV VZZ8e3Yf3Km1iIwEExECAEwFAj0FGRAFgwO5JYE/Gmh0dHA6Ly93d3cubWF0aGVt YXRpay51bmktYmllbGVmZWxkLmRlL35tbXV0ei9zaWduLXBvbGljeS5odG1sAAoJ EN6Fg/i9v+g44pYAnRJJOzb6bF6+OqdqfXgA7PDkaZJnAJ42XAZQyI9nNDtaTxFz irOQSUn0KYiTBBMRAgBTBQI/IVeEBYMBnOcNRhpodHRwOi8vd3d3LnRyYXNoLm5l dC9+dGhvbWFzYi9jcnlwdG8va2V5c2lnbmluZy9rZXlzaWduaW5nLnZlcjEuMC50 eHQACgkQpHnNxFq0YGpQtwCfde/EqZgmL2eVW6TR+uC1HoFE4EYAoLZZciBzI3ps 0+YO694uqsEdrkU6iJMEExECAFMFAj8hY8kFgwGc2shGGmh0dHA6Ly93d3cudHJh c2gubmV0L350aG9tYXNiL2NyeXB0by9rZXlzaWduaW5nL2tleXNpZ25pbmcudmVy MS4wLnR4dAAKCRB5BXaPdYT12LuoAJ9Wt7LpHCBxql5bSoAd8fZLU6ABfgCgl2Ri msmRsAuSK9DY8YbMd88CqJuJAJUCBRA9IeIrxEaR6Lw5pc0BARbXA/9alLowjmIi UFTd0s8l80en75x6nKXOvieebje/i10FQXVu7Y3O7znApQcyiN1dWOmtlelUEjV9 csRgWgfn7aAqINDsqmp2IHDUft4iLzCeGduldvDKbcnPVG/HHetKQAxynFjNK+H+ f+VDboJ8AjYPxL43ZB4NjC6iqQNiY8OGKokAlQMFED0iznm9QKbpD86FSQEBPJUE AIgkrpexSGneD3Xq+EUwfKMNpxOdlOFtBtJow+/AgWhE2ThxibjvJZa6p8f62A0u 67AC/EY/7+WK7GDgWz2P+rPeFuicuoloo8HHECUcPdQrRrngk2m/RLEBOlkJ6dZM Q8iQtxTMrQXIVRPoC5nJ/+zIT51o9OcQOMC0uTdJmmBGiKIEEwEBAAwFAj0je7wF gwOawtUACgkQxEaR6Lw5pc2hNwP/famdbaUq5JNzKfx5G8HZ/3GyqWLZDH5uMkMo 2nkS+dgqzrVVSuvA6GzE2kc/imEzoSPUDIZMEp97MRaQO2JieTXEG8PZaeFFPuNv ijY+bM3xDPwvrQzsjB4wcOLIAV77MmOcNOUi1zDfSlOPDgoYPE1isiwmhmcm7JdB Rtw+cwuIogQTAQIADAUCPdqgHAWDAuOedQAKCRDlFSglMxzaXWy+BACTUSnUsfTR FP8zttoW7/9SdDaBqXqO1NwpCWSm37ksepwdBFzR6uK2cHKLlSEdGXPyqSi12ZSl uThB7qmLanLc9fINyoheI2PtapWasyINWG5puMbqvPtONMG8KRv9w7AoD8T5ar0R h3jsIMViFp4JomJu1pokCCkAKMvB04G0mIiiBBMBAgAMBQI92qAcBYMC4551AAoJ EOUVKCUzHNpdoJgD/iTuEAKeayuvv9jrK+8dpFt44/Tk/094H6xVIYui06ywdD+S 5+fTNohceNNAwexSIeS81sc9TsJr+hSAKoH/K9eTLrVM1EsgPR3yVwjP1NglCJbq Z4NcYV+51Dn/049qQL3ekeSLNeXJs/AmYOIxLhcB8Qa734PBOBpSfs60wRMdiKIE EwECAAwFAj8TM04FgwGrC0MACgkQtGuSO22KvnEuPAQAh8oEB8HrrihRnt0ydhBQ RDRPj4rtAEJ9Ft7G1D6cY32LsGlQgBRRy5IH/YmI9Ktwpi6ltX7qULUUvjPeLTxb BiKEcZgI9j8a+oon6L61T6P001uD65DHw0W/Hg8D6vzKDZyI0OTqAi/0MTir6otS NWB/TDhbUWX9NfABiBJ4rA2IogQTAQIADAUCPyFkiwWDAZzaBgAKCRAbsIu/KpIy Je5QA/kBgBlYScZSjhj9g/v9o+8vl/PuBu0LceqONiJ8kKu04CId1E3SbJx8hiQq WuvYaSJMZz+WmcYM4r8n8T1yQ9QLE7c2jIbU86irykBXKixX+af1vDo84B4moPZp vTs8jHBJDTWsBuGlWxxd6GHgOP7L/u1K4ZE2PC796zuSlegRNIiiBBMBAgAMBQI/ SiLRBYMBdBvAAAoJEJugaRW/hasxDu4D/0DGiGqNXNF/cSeoAkt0hywxHKqEjzjG b1DTtJ4kLD1x7hC98LE4AaOAocDoK4FekUPbVgiyy0PtD3mNoJORWz28leSxNXow Wz3cPIrkn/Y5wrmw7Xy9ZJXJNv0h8tcxRJgUgLVN3BFrS4sx3sSjFMLbUH8znaZj xI9Et1iRl6VCiQEHBBMRAgDHBQI/FpZTBYMBp6g+hhSAAAAAABoAY3NpZ25hdHVy ZS1ub3Rlc0BwZW5ndWluLmRlImh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29u dGFjdC9wZ3Avc2lnbmluZ3Mvbm90ZXMuQTkyRjM0NEYzMUE4QjhERURERkE3RkI0 N0MyMkMzOUY4MDdBQzUzQS5hc2MiMxpodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJi L2NvbnRhY3QvcGdwL3BvbGljeS92MS4xLwAKCRCrHktgRnVrHsTuAJ9cTEySl64e 6UJgYUVyQ9FUhDBT7wCghZWaFgusjbcUY/8wh9C/OvsSCp6JARIDBRA9A+ZYlWBh pt2TQTkBAQY9B+MFdy8EKYP1mgbIXhZC8sScs2sSUsLhF0ZpSq6JcAMGIqjZZRSP fvDgt9Aqe8GnG6AtZ7NXdfYARBq301Vaf1t/kNwVK0zcL3TswpGZ/j9Ao+HhJFA1 ivPHb3zrazrmEluFHbbPHZ+33Lvx1APLw2AXP2ise5XmO/Ra52I5TgeNP9HJs1R+ Qk8Pt+Pir5EfgegoJngRgdySfvcFFo9O2Kinx1sV3a/KTzmP4kzmygsk2zVjTN9u Lv/RV7U/MheTshFxIfQUxCFUofTz16Z5/nPEt2ePOWXQGPZrcW8grx6jQA3TnNQp y45kpBns7nWhvJAI7UWzBBdMaBwJUjLUiQEVAwUQPQPmUwFVuuKglNolAQHpUQf/ Rw37iEBl3wVsGFQqsz3n6tqrfO9ZGKG/EHRO+l7iCPHjt0UHwUWLPJ0dvE6wHbfN GFjBzWcIukJSnv7erLPgTgIv2mClN+uyMLXttYBL8OXAxG2uCsE98VG8E5fio88T 5V9a6/NqkQQYlIQj98JO8SIMwvs/EMBFD2PzEUVj/pEFONl8Wh6cFE9Guntvx3+7 nUPNC3lw9dbmdTjYKTq/JHJ/rqAW0qoRbzDNSB8tTWitQznLe8srQK3gp5qq+SqG vy5L6U2X8YusQSGm730QWEwqG0ek67TwIhq/TujYopw5VhXUJZukCGSn+ASABCVr egwXgZnhyrvgeAxNiE6U2okBHAQQAQIABgUCPSeWQgAKCRCM9myBE905UO4VCACd m9qniy8LWH5uOktlSqHKbzoI/qTofUmLFHuzuh5idJl/JXImM/516u5r3uZBmRpn PYImOi8TetADuwLjLTIHpxkfhVA3NRtrq1HwtHtice2K8cHUYne5RC8BigRv/M+A P6EmgftoQ8v4mbTgT8jf4IwggJz8GX9m70zpGSMXgCkcltLfJYYPXuDTu4bw0g7O OeQi2hjDlxm8b/stB5xJ9Qw3+TyhdT4z2msmt2h0UBDr3Ejs2Iaj3Vr3KmN3hhnC lcE7dXQNK7ry1V2J0JBBSOO2IZeBekvLHD15iwMxPL5SHz1L/95B2JfhM7V+QMad sQaaEYnHUh/GXXCc6nSziQEcBBABAgAGBQI9J5Z5AAoJEPy64gyiEfXtntQIAJYA w+AjUbAot7HWUhfqYXcw5Q6F36TY7VjNk1aD+Bh6WjKxwNUVPZH91fjwskCZ9hDq rwJs/KciU2zeWz7k9KhFj/1PGtfducx1k5zwJUB/HmgtNk7dsUJ09GjV+Sy9a+Sd wLOgjizIl+jDY/YUAs3V2f0eOEmANdUntXDvhyiu07uo3aN0VdhB31T6pakGObK3 E+oAh/jkPw1I/dWBdKoKSHEfFeU1RgC9xBaJmoKVfCxedo3wFhZa7klgHurVOOs1 WWLwUagqGRq/kQ4+n8B8mRQNTlXtTjkL3pEMYmesP0UwmNlBFL4fl4Yunu5wFpB4 LdXrNLWLpM/0WZfA7GCJASIEEAEBAAwFAj0Ew6wFgwO5euUACgkQCen5CopyTkVH ggf/XyO3p5CQ+sqbLVr8IyBGBReqgXgNV98UbhngBm+BL9VFNJwJyb+QqaJGQZxB vn8Ng13cRBDgGIlzPzUWccs66zOuZoHkR9IeLnKYQud2VWG1bGFfUrq4p49xZsV/ bD3kzORUUNF0zzTzc4EK2/xHgooqrbcsjCXsCS1598uaDOo8nzMnQBO9tRiiyYNE 0gIAYsG766ZhdUHkIWJquCK+A1U0PljBTF4HORVruJfViaCvYguZCP22vyYbpXmO ZzGIWQ//m0yXJ40mhWae2AjtJJyQEm4zRLsWv6TRwa8+DSW2OMKM/uXbz/nLV4OS j64IEF+VKdznwRpcVVHkAKPRjokBIgQTAQEADAUCPxEOgAWDAa0wEQAKCRBABhUO QAnq7RL7CAC3H+vBpE14/d06iAiGV1QFIuiNF3/V+REu5/bbxqzuGY6XCmCmS8lX va08Rr29yoShJMUsvbtgQTbF80wQ5ZUlZpdlxkH88MW522rmkWD/PzxCF5tR6hBO W7p0ccbbAns5s4BoFh7bHSU7tDmaTrVZ5t5hcHGoXFfFvMOIRbNoxvidpxQOiqPb VNPqUUt/e1JTKucRjCaC91hXgPtCGR5Nbc4isImlUrMIfHqebsUzPxH66vW4eckt SCJQhRY32KBDs/fY5AiPZ3FMfN5QcnLPesJgvK5BkQ0DB1uDbG0ODL0YnilzR4HZ YtTv3kbCg2Kyz068ql6+Z16L5qfJC/11iQEiBBMBAgAMBQI/T3IPBYMBbsyCAAoJ EKWgYMJuwmZt67wH/if3kjo34L91/rzgIwlyimeM4ncnzfsCGG6q2fjTMkIWH6DN 9l7geF2T3IN2VeC2cXE6n0o+7T/pA9pw4MnwqSxfgw7yiefSaLKlWt8fp+XIVNN4 egyQ2AEA7wS0j0rQdpGt1j9P989F9iSh5sxdqXXF8NiJSLNk/6Qc3CBP+7JoOh4Z 532jvx7/q1atd4qYXhFx2b9vA20FLUQwJOyMbpYoiG8d0a3uQ0xivTUERUkOrbHk um1Q1b7R81lDYSnts+Z2PtThb/RW21BgllkLhqwg8xQKjTQ0S/Y9UdYubffvegMX uUAT9RMyuwKjxlPnACE81oPS/nS5fdvz0WaXf9iJAWkEEwECAFMFAj8hY58FgwGc 2vJGGmh0dHA6Ly93d3cudHJhc2gubmV0L350aG9tYXNiL2NyeXB0by9rZXlzaWdu aW5nL2tleXNpZ25pbmcudmVyMS4wLnR4dAAKCRD5fPnjOkt/XSZCB/45brff7zO0 wtcSO55jnl1ef/ivPg4jTKDRRLtTo9BEGf0NDYM4laaeFV2DAP/upFTG7I3vtRG2 0W64jCxzuBPto6Om8DobzCWaqr4vnuwi0sHFpqeX+pULRHFodBPv2PMevLMDHTq7 wVIh62hzJrWYPrX8CP3Fgl7s9f0O8YeoGIWQRTR+oJ9qwDqY55uVzKfhalrxoC/M Wz+Au8HAcdDJvZsTN0jEF7byIuKjnL0BQXjuMiEcIAmNZ8G+mU3F1tZaMaEkvIC0 VuhgbuuUc8CvuSdSeu2jtVdAR1T4+o7JXl7T3cMe6VMRpIZSw8S9c9oYANM9W4Fv /CcfXjM0YZGViQHdBBMBAgDHBQI/FpYHBYMBp6iKhhSAAAAAABoAY3NpZ25hdHVy ZS1ub3Rlc0BwZW5ndWluLmRlImh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29u dGFjdC9wZ3Avc2lnbmluZ3Mvbm90ZXMuQTkyRjM0NEYzMUE4QjhERURERkE3RkI0 N0MyMkMzOUY4MDdBQzUzQS5hc2MiMxpodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJi L2NvbnRhY3QvcGdwL3BvbGljeS92MS4xLwAKCRAZomgJiDj9lNvQCACUffB9VWqH ksmiZ/5q/zKBGtWBGChdc1KkjzrMcfwZPijE5taUdS1mD04+6naJ+KgSbIiOrtk4 GsCuHJSLBIhJy9dtpvaZMhmU6kKp1ItxXfBw6VqD3bgllDPnkWkb5q034BOAmdg7 Y4jXeD5iCdUNpIGemKlF1S1GNYnYzYnTKfRIcqgZ8G4QA8Po/vDaoPw42XbEY1p3 pjUjwfuh4Uhqb3lZtM/PPCHhSkogT/EW6DdyB40YfZzvDQj4upYfS19jwbrREo6x sFAMeQ60nZFqxjbWD34BIIqnWGOGM3vU+4kTDJTH36MOHSmcpteXz4wDlBUTstG9 MS1/zMPJcRt0tClUaWxtYW4gTGlubmV3ZWggPGFydmVkQGluc28udHV3aWVuLmFj LmF0PohGBBARAgAGBQI/EFinAAoJENb6+t2VLz//zDIAmgM8Pn8fyYwFN2SxP9nh xCQ29iJeAKDcePVaMco+0a3ECEdC8K9f1vrgNYhGBBARAgAGBQI/E0TkAAoJENAZ 9e+QJ6uIuX4An1HLngrffGbtzm8qmS7pwbhXe+J5AJ48LfmHJ4b97S5pU5Z9idOl XZsY4ohGBBARAgAGBQI/E2yJAAoJEK3sLNEalTfnUnYAoIZNqErG88a1q7YEzIGx rYJOnNptAKCLDpceIDQ0aEhmPsUoFp6whg6p14hGBBARAgAGBQI/FkxeAAoJEEbM XGPzGKVqolMAn0gx5juuveK5cXOE12M3eoKH9DLNAJ90uBOT0ahOSTPBNaYRNrG1 OttHGIhGBBARAgAGBQI/IEB/AAoJECjdsP0Zyba6a+8An0AOYFxPrdDD9arN1ojC R4diAecHAKDYiwxv3h5hoLfoJa+peG51Rarwv4hGBBARAgAGBQI/KLbxAAoJEG8j i8JP2loM7hoAn1/RkGr3qSul/9ELruvomxMJ0+QlAJ0Zj+Y/WUr96hetuIemzO+0 o/Aj3IhGBBARAgAGBQI/Nfy2AAoJEGnSph3iY/zUPaMAniSEyLKVjJYEFAIzgmpx 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 ExECAFMFAj8hV4QFgwGc5w1GGmh0dHA6Ly93d3cudHJhc2gubmV0L350aG9tYXNi L2NyeXB0by9rZXlzaWduaW5nL2tleXNpZ25pbmcudmVyMS4wLnR4dAAKCRCkec3E WrRgauA7AJ42KOLGN/ovjnxEdHD7xzzRcHktAACgkyi3zR2G3oL5a3nit4rQvihA +xCIkwQTEQIAUwUCPyFjyQWDAZzayEYaaHR0cDovL3d3dy50cmFzaC5uZXQvfnRo b21hc2IvY3J5cHRvL2tleXNpZ25pbmcva2V5c2lnbmluZy52ZXIxLjAudHh0AAoJ EHkFdo91hPXY9CcAoKrjRA8ND3y6T1aQSgRZeJeYu/LAAJ9sJeTFMk2uR098SDRC UcfTeKC8xYiiBBABAgAMBQJADIE/BYMDwb/PAAoJEL/W7lhX938JNtkD/3/2RKm2 8v6btjL2UrCJg8LjxoqxSOdU6N5SLplZ2YOef3+gZUTZSsYT1K4XvPoBvPif+6zd 0a9bFp+fP2j7SGMrlhHTd6+aDQ/BHaEZzt4dY2dfFcDNyvqIKeOTXw8/HR+dwryH DNwRcEMOb00IPVjfVirOcdPNbn6jYP1LYnPniKIEEwECAAwFAj3aoBwFgwLjnnUA CgkQ5RUoJTMc2l3FHAQAki+C6EKYQRullCePZ2GMJ8SR54xI42JaPbSBzxpb684J /jabcr8WHHJvGXlapUmdl3vqlks5tatn5iFJvbE4qAPOdo6C5NXIpD5OSbHAocXj 43QdrftuMVF7w1fyJBkWFoMrMZoa4FxiFLENbm7DknLebp1Bp282O/XR9R52PJSI ogQTAQIADAUCPyFkiwWDAZzaBgAKCRAbsIu/KpIyJW/MBACnClO5+acvjHnfaUd5 3tcKfLkb+vWzMXWKNt37RG1d04bKqlkZdzJKT+noMBqflVf91rk3goPPJPDjwUtm 51gGlSgPG4mPnhQRrUHwC8BM0lGiuB68Z1QdxF1iUx8B623GtPrJbfufCexrAxIL 6La7KosErbR1JXbjS9+d+M1p9oiiBBMBAgAMBQI/SiLRBYMBdBvAAAoJEJugaRW/ hasxbHUD/RqcGxjUaJgELwAfNcTpm86BsNL5tu6WJFe3DdIIzQTb27GGgbOfj5NR LFnk75xgQtk8lnKqsXQHMC6hm+pwh4ZGISBZE7NIqYokUSYDT2mbplDo2kDPyO2V 1fWf8P5f8rI5e2QYIvn4kNFWidfQKh1Rw86MlZVIieVf8eVeS5qCiQEHBBMRAgDH BQI/FpZTBYMBp6g+hhSAAAAAABoAY3NpZ25hdHVyZS1ub3Rlc0BwZW5ndWluLmRl Imh0dHA6Ly93d3cucGVuZ3Vpbi5kZS9+YmIvY29udGFjdC9wZ3Avc2lnbmluZ3Mv bm90ZXMuQTkyRjM0NEYzMUE4QjhERURERkE3RkI0N0MyMkMzOUY4MDdBQzUzQS5h c2MiMxpodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJiL2NvbnRhY3QvcGdwL3BvbGlj eS92MS4xLwAKCRCrHktgRnVrHo45AJ0dD92uCPhsjLWrVsbhMJfwmkVOnwCglKPY urVXyo6uXC/Q5KdueASb3iWJASIEEAECAAwFAj8RTT8FgwGs8VIACgkQCen5Copy TkVorwf/ZHfXpigg+qo5D9nzURNgsckj7d5F6M3QfYUSpE7Hl8826m80iVciBIkZ Eo9R2H9mFOf8CJFBLqcbz6vxRC0Q+xMbZSw8o0tRrfVTEPyvdh5ayIwKsV1mgFux JwyDPN3zy7LejqsLQUA2IGY+pCz2kv7P0iWRvK4uaRO/z5qaF1QLd+aYssolkidm cMnkJph3+/UiN8Tvlr6UAcsAolj+ZShPM1whJ6aAOL1EnDmnHScVVmGIl6Qf2q1j tPlF3qG6CY9CyIaUSxSudAEMaGthTeM+MjP108aJcTYVF1PbyHnKy0e4tJlU/MW5 OohVH3/KEmIj2lT2AvBUHbCYL4NW2IkBIgQQAQIADAUCQoDzmQWDAU1NdQAKCRD1 wyAKI5xjhP8aB/9DnrJvwzgelLhZ61kZ6hHeMnL5MfRwe1ytJw32UgK8k11Rh2qX 4aFq1z3jF/jRmFE6GRSP1dSFpu+YQjPSJ5rJO6urO8OyFXkgPVw5ERlbWxyU/E/9 wQf0rfg2/fdOsLOkp8qO+svw9kt291WSWBvw78MeHYEUjnckGhYYuvg0bFMjCqew ZxPHP6+qxgRRlI624ArmvG7auGaLJvolDji9dc6RFoygdmDKFcB6oZZCfpsMRM5i SokRQJq6kcOxC9uSq0S5F3kqBpxaX/Cz7awWCpGJ2HJ8IM6KWhn3DZ3PaKFvFWkM fOt6IXQMCuz7uhLPeh9yn8HeE0+xrafU75VQiQEiBBMBAQAMBQI/EQ6ABYMBrTAR AAoJEEAGFQ5ACertOZEIALVSl0IYEbpqEftGbDf1uxfhioTFUS4IedO8x7dG9WrH m5WTOy8dBTnA1ibqD5U6kwfUkylDsSwjghQQtsEAd9Uc45LjFZVi4+w/3mj65IbM lizrunjZwRysce8eHgEVgo4yfDfyCF+LNHSFOVDIBawnUTm4j9PZiX74hq/W2aGP acKn+as0PLzSJMu7MtmCf/pds9TBVLoTlhRXcA4+o6P94OkMP0YMSNLe/0Bq+Sag QKAtJwdTbmSGZfCnd+iBdTQsEyCUYnjvJq+enNZgKTWfNHeRYbDBJvoyA39HKiej eRci4KjDfQhn1EDDz/q9mQr50cXfWxYD+LXzWeF6knaJASIEEwECAAwFAj9Pcg8F gwFuzIIACgkQpaBgwm7CZm2ywAf/dy0mCvoyH4ly1NzHMx0y1UCw/XF7YIbO9Vuv ILO2l4JAt+r8G7ebXp18q6vMCtPnoVAr6r7e4asp7+0BhvMXkj4nx/4N0W3pG9ux 1/mPF9rpWq9hRcjbcHU7IqzS8VqaS+bVgIuGb99RT4Yeo9nA9hqwvTXFRKPzImv9 uCRfPLcD4N2nUgUWcUF2GicA1gVQ6GhJrGCROTLt0s+0lLmCVrkT/Pg6ZpxXuogZ q2GHEZPqBUiPyRbhmz4GtZHGEZjMYO3V8nMgMkHpk7luh2dShDJzIoqfftgTmzuQ R0qhEyRldZlomTht0XVv0RBnGUO8IEhEM/JhXUdDKTdHtrPhLYkBIgQTAQIADAUC QSSwggWDAqmQjAAKCRAbaNz8wFloI72cB/oDy5na7lM1nIlRKN69USWBQ7h2HAXw QMyblpipNl4tTj89gZVEQlEXB82pdDUwULLydKsHe8MELbUyhE9Od++pkdM3BzRI ehkDqBiLkmHORf40nB2zszVVcWcp6yuM2yd/T41h4ySIw1GP5mmpd+FfFxWdIx4O Ycc5O3E7ksMCfryKusAiDVIlZqdFQv1wKX7tI49rX2kgqaM0ohYS1GeFH3bDlMq+ b6vfY/BZRfJ5yqw0q+XM3Ev5g+s9Y5a0LeUY8BOD+b2DVAmOxBsVJQzZwBMwl5hc 3U4D2KH5Jy1VDk3b84sdNqlbbSkSpn1qlnjn8+4o65DI3rsZT2se9J1ViQFpBBMB AgBTBQI/IWOfBYMBnNryRhpodHRwOi8vd3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9j cnlwdG8va2V5c2lnbmluZy9rZXlzaWduaW5nLnZlcjEuMC50eHQACgkQ+Xz54zpL f11Guwf/RNdrUReGWes7tODJdN+NsfrTDQluwTTSGGmPL8xr+S/9V22Z1LLzGzg2 7MI7VCJu30zHeEFJTNDp5fDrNoyCqZPO/aAKbQ3Q2faltmhePWNsbIZ/jgDHZ6oP 7IokLhyMe20AXTNMtIcZcPOm3vYqHmcUnlz3LDnxKIoO3/6tp3qQ56yQjqn9S+Rv fL/1rq+4jJDwqAeoW9VRupcKAE03k6nEJwVSm8QGJDa0Zc8nUBTFcgtUturZMXm8 FEQgkNtYCFL9VrRP3T8H38oHfxp8CA50Wk6uRqpMpQdf/8fe2OHVMtCJu0F6jTex PXkaUijmYAs+dIOAC+L5CFogc+TaHokB3QQTAQIAxwUCPxaWBwWDAaeoioYUgAAA AAAaAGNzaWduYXR1cmUtbm90ZXNAcGVuZ3Vpbi5kZSJodHRwOi8vd3d3LnBlbmd1 aW4uZGUvfmJiL2NvbnRhY3QvcGdwL3NpZ25pbmdzL25vdGVzLkE5MkYzNDRGMzFB OEI4REVEREZBN0ZCNDdDMjJDMzlGODA3QUM1M0EuYXNjIjMaaHR0cDovL3d3dy5w ZW5ndWluLmRlL35iYi9jb250YWN0L3BncC9wb2xpY3kvdjEuMS8ACgkQGaJoCYg4 /ZQ45gf/fsceAhEWApzeJRYlY1Rc4/pH/AkiMqVovXleAoJvig+Ec6dJspMfUWjj 0vNGBsTaGZ1rN6y6Lth2Q07zEhUXsIJDnKgvxR64BonW6APq1Ck6rMH6CLUh55JO NOZsPVnmRyiM7qmLkz45XRF6l7dEOn1Ed+EtnOd/XXUkk9n5mVmYoSqO8E31WK9b WX+CN7YM5KOEWypGtZEwjWje26ydS57MbL/qlqWV5JHgccxZvnItcIURCEZQkXfv imddFHgTvHn2YzUESejLWWk9pdjYwDLTrVFWKEEKetlPDGhkjeBmFJcehHhpYlRt uQcSKduWqhcRNWqMUd+D+ccaKP9LuLQrVGlsbWFuIExpbm5ld2VoIDxsaW5uZXdl aEB6aWQudHV3aWVuLmFjLmF0PohGBBARAgAGBQI9ASZbAAoJEGfDAwhyWzfGBLwA oKWnsa+E24L29Y9VyeXfZq3pg9k3AJ9hEEh8WO5fj4Z073lvgHVPG6qyB4hGBBAR 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 mULa76pTI+OatTM85Y5HEAIAoILfHVi3YI1uZisfmgatG/fld68viGIEExECACIF Ajz72QsCGwMFCQPCZwAECwcDAgMVAgMDFgIBAh4BAheAAAoJEHwiw5+AesU6LrAA n1b1v095d8SjY2t6825yYT5KsP+9AJ9OhFAQb0IjZSkn8JFqhKE1SX0FP4hqBBMR AgAiBQI8+9kLAhsDBQkDwmcABAsHAwIDFQIDAxYCAQIeAQIXgAASCRB8IsOfgHrF OgdlR1BHAAEBLrAAn1b1v095d8SjY2t6825yYT5KsP+9AJ9OhFAQb0IjZSkn8JFq hKE1SX0FP4htBBERAgAtBQI985fMBYMCyqbFIBpodHRwOi8vd3d3LnRvZWhvbGQu Y29tL3JvYm90Y2EvAAoJEBBYFoXFIQl+LjYAnjY+MkyNepSpNWZdvFTY8Qniy91z AJ9E/GLjolXZUMnhbrcbUNpQOJaJYYiTBBMRAgBTBQI/IVeEBYMBnOcNRhpodHRw Oi8vd3d3LnRyYXNoLm5ldC9+dGhvbWFzYi9jcnlwdG8va2V5c2lnbmluZy9rZXlz aWduaW5nLnZlcjEuMC50eHQACgkQpHnNxFq0YGrTdgCfZqBF6uPJ0sBVmPvVsMQ4 6n7HrpEAn1KHK11mQyg+9R30JX/wfkfGigsRiJMEExECAFMFAj8hY8kFgwGc2shG Gmh0dHA6Ly93d3cudHJhc2gubmV0L350aG9tYXNiL2NyeXB0by9rZXlzaWduaW5n L2tleXNpZ25pbmcudmVyMS4wLnR4dAAKCRB5BXaPdYT12L7LAJ9qw5GW2sMJ6rFN VEK3kCkmcaon7ACggd1uzTHGX/q9b2HJrzGI0sfpu/iJAJUCBRA9IvmbxEaR6Lw5 pc0BAUgTBACNTSdhlZl50lKY/Wn3lNdY8dTsfkQrrfP+k2VtXMfLGILBHYzo5pw3 uwQgv8+d0wzZHTBVt+Oa0SiCi2kp6CGgDGcfNmIUk9P9VKOT+knRWySiLntWWxfO 1+JpKFJtY3aZd7ZtyvnKl9joQw0rIFmejadJRlF1nyl3S1lZ/cnNuokAlQMFED0i zoO9QKbpD86FSQEBRsID/jmh0rI12txDWfqLVoNb4sLDyVPGw6KR1bkYlBGEevwJ ffzNAb0jzQxzs6qynJUKIntGtskHeryL9BJq5pYEbDsd/GLb4ovSSRictXPIbCKd F8f2MfY3sBXhzmkrZPqo8ioCWq9tqGmIGBbc3sXbfJ5KRCadl/vtvAKhnUQYGSyh iKIEEAECAAwFAkAMgT8FgwPBv88ACgkQv9buWFf3fwlYdAP/QoaUNlMdp8CuN56W TXIjQSb7vBEjVCLrOqGx7ATo7wNWhuw454Ralz6xOwELGKCeWWlWrXyi8RDW6oAa 1vuZIqZLqqJyfbf9aAQTfZmZYieRlMCtrZrRQ9pJmX/UBhUResQRhFPxznmltomW M8KYx5M+/hs5nbqOWdG4/Vkee7iIogQTAQEADAUCPSN7vAWDA5rC1QAKCRDERpHo vDmlzUicA/wOJkiv7NtzzyxMpIgC1rqsmBc56f0Pch8XW5/fVyE5zC1epcBmAXc8 WhAxRS+ycXadHQV3EpjHzW74OFQl/wsTNK7soOxyvV9B+cQdjxdBmQfbw1/kDg++ J/hKiQYgVc8l6e+K9m9FebfDe8PFaxc0N5q8TCu4IvBMohAUpb/uRoiiBBMBAgAM BQI92qAcBYMC4551AAoJEOUVKCUzHNpdeoQEAJEP50YXbGVRgC5Y9LU2srzL1N16 WZX2PwmRE/LGgU5SNMmKZr4jWYEim8rDRyZxEytd3VAFuCMvXQ+GlhlR0XeEc6ql KYbUem3K0V58tv9JPJsu+LER6rpQYmSQBkH6fBHha/Tl9b3+jT77/TbE7V+rJCAb b7fOTSJ3qdVDKjXpiKIEEwECAAwFAj8hZIsFgwGc2gYACgkQG7CLvyqSMiXYFAP/ XVK9xQbCgN09K/U7Moh0szy7nubZYDUUA62UliMNutrqnafkKVuk3BDqmGPvkeLT 2RwRq2bZaAznMsPuVoWTfVlM9WdErwLrll8n3WgfRaWTPh6iNJpNqDdYcqoRy9oQ EroyjWKJdTijSkOrkga5Uwl44TzsvLXV8H1AK45BpwGIogQTAQIADAUCP0oi0QWD AXQbwAAKCRCboGkVv4WrMcTwBACQzG2D7BX5U4nc002Ki5py7uqWXGn03haAqx1E slANX6FycgyeqE5zB7ApLz+J68gLWWWhnVsiJOnC2SWL2ou1ky9cpgROPfhgTC5z iwH15WTGIayHy3nqzoRGAoRAyvzvZlnXQX1hGqOzfXCGszDKVGsERTZI4ublEw7M LZXwY4kBBwQTEQIAxwUCPxaWUwWDAaeoPoYUgAAAAAAaAGNzaWduYXR1cmUtbm90 ZXNAcGVuZ3Vpbi5kZSJodHRwOi8vd3d3LnBlbmd1aW4uZGUvfmJiL2NvbnRhY3Qv cGdwL3NpZ25pbmdzL25vdGVzLkE5MkYzNDRGMzFBOEI4REVEREZBN0ZCNDdDMjJD MzlGODA3QUM1M0EuYXNjIjMaaHR0cDovL3d3dy5wZW5ndWluLmRlL35iYi9jb250 YWN0L3BncC9wb2xpY3kvdjEuMS8ACgkQqx5LYEZ1ax4N6wCgoKMUMJTeMgLrP7Sd EqKYc/NXdqgAoKub6jBnXDpsFcwHq1lzhnBEtvO1iQESAwUQPQPtHJVgYabdk0E5 AQGr6AfhAXPkw0zq95J+Xi7N/d+0wPKViQyMmSeWD8NdWW/S0pKGsl/cxKVBCN/T H5GkDExI4WPc55SFO/2X4X6udCWODuypp7LkNsnROaXolU5CSpowxUpuqjlckxwW q+u+ThTeBJBWwzLpogUJtQiIcMdpmB5xs6chXKc8eeh0/F6E7XLMdcNdcXGAV21V AB9sFn3vH1v6jge4mRzvDB7ty5jbjJI8/gA8S/BuChufT0sFNxXp1/hFkEk1UGGt 2La8DKgzRw1pFNuOgfw2lOQun3VC4haThtscPavQS3FKVjHdF8l4akFDXRcltrug RMFfLkrjJThH/3MUCxxdyOdQ+YkBFQMFED0D7RgBVbrioJTaJQEBn/QH/0NIkPkt R4yatrjNn3ngGN2RjxTFeQxts1ToRrUVeNTSoQFAoLMfdE5ol6qfX6erZeVVbQyn XGejdKCpdd27BaRgZaOFmhu+VTkphUMFuriWGzDa1Tjvpfz5eh9ttIoLTS/63KOl JLt+6jxKXxTVXBAkY4sPrvioI/7Ck24JLEk+ucREflDtwIECxc1q62ILOqCpLK4g w5kaHaq2k8Dt3HzvxzYlVR/2NqXrmQRIVYXM/h97pTtT71F5NCzpqXNVcSXdJvu0 KQmj0VtFDVO8Sorwg5Vd9+6X9BdUOH0zLEgnhCbsCJSAufWv7P0fyam5r7TnmPxn avuWiH0t9FOwVLaJARwEEAECAAYFAj0nlkYACgkQjPZsgRPdOVDZqgf+LwLZ0vTE MFSqheRIh98mCqlk1S3cvbPiAOf8y82TWaX0+PEPPZIFY4dyfCED4+aHI7i6aU0E Yc2SS0oe3T1w/AvCKP3bvI5DPZhPiLOiJbGR2RYy05MDXJf0DougJdRhEWimOp4u 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 Di/aS01mrVBz9amobWhdwbdrJH45JSm7QxcO3yMmKNURjatGaBi6ih8yGRyHYL8a paZcY2VA32cdNTqCsVHeyUcml7mqfsyOKlpleEIE7IcFzokBaQQTAQIAUwUCPyFj nwWDAZza8kYaaHR0cDovL3d3dy50cmFzaC5uZXQvfnRob21hc2IvY3J5cHRvL2tl eXNpZ25pbmcva2V5c2lnbmluZy52ZXIxLjAudHh0AAoJEPl8+eM6S39dkwwIAKjo 94Mz7+ryatxk1pmMylgu5u77qqnvJ4gwOLB7lvYJCLou/QAyyy0I5iwKSQpnWJmk zV1XZdnQ/qqvMSH9l49cgxA/kQTM5laAXf4JXCM+JdLqcWlvoNAApJB1T8uQzi3+ vU2RdVKJgl4HehvyTOAS4fWMqQBhz1ha5xaXUdPFrnC6ih3bflmWxFxjK6OtEOi+ q+sTlALfPZ5S7tUazNCHXYSjtC2AncW8zq1tp+TYMJ9/Cj2j30M3752HW73oXQAH W4E3cgfiNWlxRY8eC/9XR7PpnZYV9s3gbHoYrn5vkbxOmzW+bbw//y8CBV5vtLdJ o4J2bR1QueKjIAv6rBiJAd0EEwECAMcFAj8WlgcFgwGnqIqGFIAAAAAAGgBjc2ln bmF0dXJlLW5vdGVzQHBlbmd1aW4uZGUiaHR0cDovL3d3dy5wZW5ndWluLmRlL35i Yi9jb250YWN0L3BncC9zaWduaW5ncy9ub3Rlcy5BOTJGMzQ0RjMxQThCOERFRERG QTdGQjQ3QzIyQzM5RjgwN0FDNTNBLmFzYyIzGmh0dHA6Ly93d3cucGVuZ3Vpbi5k ZS9+YmIvY29udGFjdC9wZ3AvcG9saWN5L3YxLjEvAAoJEBmiaAmIOP2UNN4H/iI9 8ocmrlSsXKH4kvKrAXdVR6Zt/eWN7bDhufaiCq5gPpkySvANnBSHv083bor6AoK4 v77Otwl5SiTnK9A2YkPqfk54mYzX6Wyd9rkXfvq7gx1FZIv7Ad8Ht2aJqAhGlSZW Q9DE7b7lDtCDwrDREimWAdGozy2sjNsqPYyF0R6okrHfkOVheXEw9ogZY8hrPQYE Nabv4R5nIg0QsK3P5QA9c6uwcEPYvz9YLsJNPgub5PnU9hWwhinttwq5byt5f787 YFF+61LoGq94SBEG47NY+j9++vvf9YCJLnMVzmZqdE+MZyu0AjcdXNzBIByBeaJF VzSyxQcnu9EjayJMWcC0JFRpbG1hbiBLZXNraW7DtnogPGFydmVkQEZyZWVCU0Qu b3JnPohoBBMRAgAoBQJMh8VeAhsDBQkVL4RlBgsJCAcDAgYVCAIJCgsEFgIDAQIe AQIXgAAKCRB8IsOfgHrFOpV9AJ9vGgOIsR2lOY8yuaVPkMN2IbwHXgCfcpcxDEAS sU5oeT6EpGXgyQTKHQm5AQ0EPPvXkhAEAJR+JXp+B5wZWFu2EzCwEH7rHNiXcQ/p nonR7NV2gbOUZ9LHskHn5jq6NNZPEfIwBJqs4RwoIb1RFNGkyx01qjx3yMUtORy2 SGENCBBTH+c9kkrL1Bq4MnbR6tWtAcOKjefsZDjBE2SgXTPW4Jy+yrRfhhxa637b y25Wmx8PHlwLAAMGA/9dRrwk/jXPcGvqcyz4I/dsTM9IhCxyKvPJghBxGNTAmqHY n3WWR8H49cHfi3XW8HMNXl+tk4IULp7GA8akmKw48d65oqd9KD468k+UkagdO83P +Uoehtv8ROCbYECF5AkPgtk8px8N5EgHE2PANrXTL0EB/TFidNLdiJu+CUsDGIhM BBgRAgAMBQJMh8JUBQkVL4VCAAoJEHwiw5+AesU673QAnRxVRUIYUB0OZZ5A2d34 bbJlJih0AJoCWn8cneSXT3oShBlbt8J3l133BA== =viLB -----END PGP PUBLIC KEY BLOCK-----
<dryice@FreeBSD.org>
pub 1024D/77B67874 2005-01-28 Key fingerprint = 8D7C F82D D28D 07E5 EF7F CD25 6B5B 78A8 77B6 7874 uid Dryice Dong Liu (Dryice) <dryice@FreeBSD.org> uid Dryice Dong Liu (Dryice) <dryice@liu.com.cn> uid Dryice Dong Liu (Dryice) <dryice@hotpop.com> uid Dryice Dong Liu (Dryice) <dryiceliu@gmail.com> uid Dryice Dong Liu (Dryice) <dryice@dryice.name> sub 2048g/ECFA49E4 2005-01-28
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =No5H -----END PGP PUBLIC KEY BLOCK-----
<nemoliu@FreeBSD.org>
pub 1024D/ECC7C907 2007-07-10 Key fingerprint = B62E 3109 896B B283 E2FA 60FE A1BA F92E ECC7 C907 uid Tong LIU <nemoliu@FreeBSD.org> sub 4096g/B6D7B15D 2007-07-10
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEaS8qERBACaZz5sEl2I6ZKN0bcqTm2G2jrxPKmX7jBxXhlwonMSfX725Jz6 fiYxo8MN0709R1xk4tKLJZGM1cxNItFVi0+8bdfdqc88u3cabTM9qYd1hoy3uJtO Z8YHGbwzcQfU81r0cs/7xHYROjU1DjM7ixa3aVqokoq+N0nIHNztsDzNkwCgjQrV NoU5rFgzsvxbzNmrLSMxpckD/39CGIg1ic4qeuNHEHoTRIGgCffFGr/VOW1m1zYL h5nX0qpE8e3y3c7YwX9yxueJtVTZV2HSP8/yILkBMb48ggUcYLaaPFthGAnggx7g XB0bLw1TYxeykQoV6MIUf+LXVggJV8js2lZmpC/eUwnbGtDj8ShidE4RlqyMvwtW /K7BA/9ZrFZkf/2KysdzweIV4HJG3tntx/bOJDGN/ndp7s7E54iTpTIQLEaXs4r+ Fb4tEork0p/BrsH2VpDp+O6SjsvpxlOxUN94BkUtwvNj0v2rAXwjEz8RNCXWPoVJ G8juOTAtLmgG5Bj+8JOHlHdO1nMZXfAzxYWwVAjE9K1z71kEFbQeVG9uZyBMSVUg PG5lbW9saXVARnJlZUJTRC5vcmc+iGAEExECACAFAkaS8qECGwMGCwkIBwMCBBUC CAMEFgIDAQIeAQIXgAAKCRChuvku7MfJB2bKAJsHeFHOGni/1CmTS/IcyOYMmChi rQCfSjwIUFej0kqsSo0VqLTAjYO0Xxi5BA0ERpLyoRAQAMrvUD7fP2937y24s55C MmmGiMxUsutflqt4mIpGf5Ssj0//h2bjFxknChyx7uc9BhnxXPMc1zN+V1onm64N eDMZon6LL3ThZvIVFbrjkRv+O1Iqh82k66HNTSl21/FQ8mL3/0E77yfrd8uZSrTa cQOdFNYMN5qUbG5U3R6S76CaYX6oN8ctJFXN8PLO2CCn5KBAJ3CWvdcmoadWq6rf w7qA0Q6FNXYQq+PxvxNKei9w6xcnDc0DA0/TzaOm3lUQnIQWivgtMa7zkM98LfRu wAV7Nn2Op6IeQv2e1i5zT9tL7Au7hUiDXzO2upae3D70tPcUER7k6J7NfWaBfsZA CZ9X+jNxECL1RzZnsNRtLMHfIE6YJCc6Onw+PuBE8147hF4bNv79+5JX5XkB7UBd 8KMHkpCUA4ANo9WTt29JdhUi2hChdATXiIKodWLuUjXjOczDe1HA69BPA6w/RL1C OChSEm0M6rYLx8a2X2rpIE+fONE1l9gtWPB1OBOs3/yKO+ozknnbUpMIZpCdq5mP BTuLaNAEWTpQUVEJ/32lLdSf0qYtqpn+WycSGXYA0cqRWXYCldTRaA5n4kYC+9ho yIueGCwW0D68QGXo+s4VuSaRwTu3kwkQ1H+srwK+pd1wMSabzaN3YgOT6g/L5lrI el3jspkgLpEHXYCk8WIZtaCjAAMGEADAsLKwES5Ig7Z3+LFMTFxK3rGMIoUizQpW kHUAcwO58jud6t0pxyz5RtYyoAXeCxEGYt5xhYgdcnbWDjraEN94ptOdLeFRa1IG y+LIr3+oWF4s4aJqe2WiFd8Fbhlw29YH+CF7E27m6byeYiH6mSB/KuBH9cFicG9B mSf6li6ZkL8NGNZ9l1ouOH1TA9hePO7RsHjP38unUFbSg6l9gfiaZF+sNXddZoQc qcstmQ2VJQkatqAAPTLwMEIYJvjY+DeKZAHbHfv97eMIe9F2aQ1OdAmL4lyownVk fILsTGZ4OOI6KvJD8QcQxn9g5bUwoxIoR1y7AoIYUe84sX5xqo7byzOqlcGQIa5B ss21LvP+0gJxrxb8Y1+jDqn8Y3wEe7V5pEchMU9BsTpPD6MNqdkZSiUCA+Yz1P90 WgO3UbzlDTp19XeOmfCN5srlI2irtijkmKnzLmJFPU3oVnS70vxTZ6JghBERuxa0 8si44lj1uPztWIc86BmYfEPZ8yuaVve8bI0Cmr/IDUfHlX8/wQ59TV+utMvPrx+e ukPoY3Ybxg1r/M2JSEqUmh8czViNrJDqWtEdOYf/oriSJ1mtenq+mEyxwlrgJR5x ZAFB/X2eZm/vEnlXttxgRlhT4HBAw6j8ju70BXbUm2boDlQDyQnPG2jA4RbTnvUw 2aN3vWATPohJBBgRAgAJBQJGkvKhAhsMAAoJEKG6+S7sx8kHi2gAn2xTy641n6vL QzMTDTvTKnwMTWoMAKCDsxLiKzQoXpl9Z24xb9BxFdIgLA== =nL7g -----END PGP PUBLIC KEY BLOCK-----
<zml@FreeBSD.org>
pub 1024D/4D65492D 2009-05-26 Key fingerprint = E513 4AE9 5D6D 8BF9 1CD3 4389 4860 D79B 4D65 492D uid Zachary Loafman <zml@FreeBSD.org> sub 2048g/1AD659F0 2009-05-26
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEocVOYRBACUSj+Rt8ZAKD0QoT4yHgh+f74lmw0pegpzvQ1DNBhGdVWfIM77 n6hK4QSYPhSNT/Zz6qqsZlcnuSyXwKDcu82rOUJmo44UalWbWF/wvz4ICuMMttCy WRko6Z+lfzILBr+simnAUX2v9mIxfnkg8mEN5/rMc4rOda49Vbcdc0aFEwCg4/or HctUnKwa6r+ArXlZ8bxLX4sD/2A3JzXegkrD6LOwGA/STqNhuolad6ZZpvJGpr1n gsYX5ihLaYuxBBWK1ech3Rm8GojvsOpmcc5YTtjb37n/YU9WYoKcmpJukdEYNeSZ BQPi7jVXUb3joJobOT1LFYjrOX8/MoOgIxPI7RBM27G5Uarxe0RpF8r94bUxEqMb SkgHA/9KqKfxHB7suexO993OtM4fTcnJjCfarcL8qpBOQlYLAP2Q3IGZpjE39Bmy tnDNwrZ/8jZrJxBttZ5Fjt01pvMAEpFVHm+QNheqBOqpyN4jmyOsvmSjd4YL5ZZQ hUhuPS/dtInONvWvBmOHBsoKdrgoUPO2EuMW1pCm/0i7xHGCtLQhWmFjaGFyeSBM b2FmbWFuIDx6bWxARnJlZUJTRC5vcmc+iGAEExECACAFAkocVOYCGwMGCwkIBwMC BBUCCAMEFgIDAQIeAQIXgAAKCRBIYNebTWVJLe4bAJ0Q8l/7TIpaYFGoaHUkv/YF VdcR/QCfVOdEcCe3gPZ2k5KLC1D8V4ESKue5Ag0EShxU5hAIAI7OSBr9s4l3skaB +lVNxA/eEkigb0ghP+OoLVRvd7k3LZpjM27jqMhdmu/8U9bTRTX6kA7Ur7uRF1La aSrc6unoufkWcm+w7M9sQv1vwdxOg/D9CZttjMxNJs18VRQokair4OAR9mMXybMT hBw3H8B+H0AZh7eLTMXUX8q6fc/Dy7u+sOq6fnCY3vIVUUDaw5XaRKI/mWDmQcMa 4hB79gvNxHjCs2oF5ntyaCF4nsggmZ2guOjN9oBoo6gm09QFlVA5Nwz/g5s84m0t Gtz8sGSPK339kwaT2Tym6yR8UszENlyjG1wVVaQhBPHvE706jOlPXc2JasNKoSqX Flyj7icAAwUH/0z2SEPs78Ws3eZq58axkafUowgB31tEM9Ke0jLNy1nGkcC+poyh Shl4DNyUbLb86J4FrkFa7bmJi8VHteZYjTxrY9usKLKGkbZV8qNd8ry1emG0Lx2g JM5jcRp6ghT2qufHF9PukKwkmNRJJgvAbgSgLi9dWkMymmpo0LsKfKmnoVCy34tV 704K7JOOBHob6Gi9vMXLYkBUPJCn8BALbZi0WRR/D5bB+OHucjJpEp6lHXYihkX7 xgSyrzkI2fvDLmJg6/jmtsrQwJFScf2E24IWO5JGLRsuqoE1UUcnmqQKLZ+iH7vI fSYNaY/TcB55V2TmpzpYmkGBgI8G1dygrAqISQQYEQIACQUCShxU5gIbDAAKCRBI YNebTWVJLTvyAKC5FWGAM6MJaj/cNvWfkdMFaZqAGgCfaktgPFqyozZiZQuoJM5D +FztFoI= =isE1 -----END PGP PUBLIC KEY BLOCK-----
<nox@FreeBSD.org>
pub 1024D/1B6BFBFD 2006-12-22 Key fingerprint = 33A7 7FAE 51AF 00BC F0D3 ECCE FAFD 34C1 1B6B FBFD uid Juergen Lock <nox@FreeBSD.org> sub 2048g/251229D1 2006-12-22
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEWMWfERBAC6P55NRPt7PWHQk3e3cp6yAYpxsNH4TyMZUNKFjE9E+g4GDe1F fd1ebE/as+qcZ7rnIoEqXMYyXW/8X8kdE7FJVoJBmH3RdlaJhHSxogrAHZJ87PWH yGC4mP7F2zvLjUqB2fUC6gYUJybmYi7F6run1zPKLr5A5Polx/SpqL52IwCg/5Kq vo2Lc3ceBT0L5BKOWFLHBWMEAI/OIOXhv4Hsu0k0Ol+Zdwp3vkw+geBo0MVHp0/P XItW5TM5Xi0iqQAcBU2KmPKUinaIJEEPAat5sPMZ/0BUsdmhlD6BqIp0qC8LXm9g Tqmenm3WpiJPsd486lW6dxzFqOZKdb6qq87SJ7ajnPB12SykRW26VkyHzNCqiETL LigDA/sFPsm499ccL62BwkRGax93iYylhsrV7zXT8FXAPIS/S7JasvaiyHTvRv8K u9XSO453WZtzN7TkNp6i3Vw1SSxbrwCRZZ7nspEdMXWF9ZdTtSq8mpA3R74X7dKM SXPbbsTFfQ5JR9v8x5T201nFiM/jPteU6WbfyQc1MuMCUqwzm7QeSnVlcmdlbiBM b2NrIDxub3hARnJlZUJTRC5vcmc+iGAEExECACAFAkWMWfECGwMGCwkIBwMCBBUC CAMEFgIDAQIeAQIXgAAKCRD6/TTBG2v7/bkFAJ9/NodQJ3G3mLhNkT/rv4ncgpOV KQCdGm6jx53ESn4s8YJAPKWgym0AKTq5Ag0ERYxZ/RAIAMR6vbusFDGVMpB6AWhC cru/N6Qz/kfB6+Ufy2nXcYMMaD2c4MiSUSV6pF08s+xx8oqh6DiGdPvdJQ19ZAdw BJaD3tc2EeIv7Eh0upHhC7CuRk3eHHd+KaKFquLGU4HNMEvxXkW+DZ0wWrbVIu0N vRBYXJlil7B3RE9+9yQLdoK1IA/N7DtUvbezVC3Px/ZuNe+cnI5neXZVnm9ks9E4 qlghKSdb2LLghwfBy0JRqssZnvvqS+kRz0LJgKIX57pSrHfx0L5Rwu1JWqvmWKYV hkCogZFXpn31ArmmJ54O5KEP4hYNR2FcF8hwNjMqfij29QRi7xpxDLQYgUjM/kTl g1MAAwUH/2TJn6E3LtPX7ceMUKVyJRO/OsS7/r8nX8hPRmX/cnnoHTtYOQ1S2F9J 0IFTZKubxfyhp9ldRx55GiDWyRvGhhjCOuUH7VCSPMCURbMOHi67EDfqbHPzhKcZ 1lmeqpETmPx4SbVQ9vQ1802gsyZzNy3BQcoK9GIw1Bg6KLYVQ/9rcSDHAB+ULVF+ YkthjJcPDQPdcn8Zy+xGDuciav9HPaeRXK8nXvx8ERDti99GiuHI/S5+t3wDeTPT dZuMiiJYsVc3QuuEN4eMseohFUX6R/Mnm2L0qFc43k3h0vmOoTu65dMEnYZdsKiI wXTiy7GaMXH69Iuq9QK5wAQGHwTDbJGISQQYEQIACQUCRYxZ/QIbDAAKCRD6/TTB G2v7/Z/1AJ9MfhLFFNtQHDgvIwjgQa2xJX+N5QCfQKUy9vBwNhrVvrH86hoDMhjV d1Y= =E5fg -----END PGP PUBLIC KEY BLOCK-----
<remko@FreeBSD.org>
pub 4096R/3F774079 2012-11-11 [expires: 2016-11-11] Key fingerprint = 7EE4 C4AF DCA3 E0B4 479B A344 7135 8ED6 3F77 4079 uid Remko Lodder <remko@FreeBSD.org> sub 4096R/59F38CB0 2012-11-11 [expires: 2016-11-11]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 5sGIhylLEgeij8uoeFOeA1qMqbhYORfYOxE= =+q/B -----END PGP PUBLIC KEY BLOCK-----
<avl@FreeBSD.org>
pub 1024D/1C47D5C0 2009-05-28 Key fingerprint = 8B5F 880A 382B 075E E707 9DB2 E135 4176 1C47 D5C0 uid Alexander Logvinov <alexander@logvinov.com> uid Alexander Logvinov (FreeBSD Ports Committer) <avl@FreeBSD.org> uid Alexander Logvinov <ports@logvinov.com> uid Alexander Logvinov <logvinov@gmail.com> uid Alexander Logvinov <logvinov@yandex.ru> sub 2048g/60BDD4BB 2009-05-28
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEoeNvgRBADOJSDLfbgPuLl4Y1QO/1BjX2MFveYtMacSLpaJURRewkBmoKBz iXa9a5A+uKiQTtX8S8bnkvwmpzEua8RMWUN/XXb8aZc7DPcZbP9NFNaNZ8BLgnLC FK1gIEpJpcodAQ0K5HAGiLwjsK3RdM78pvDUJDDmWPaflk8llx4H7kjjTwCgwIRy /8f8FHQV3zUIGqmJDt5019cEALE+LTHjCOZkk0YKqVETY7IAKX48t/o3t+ybkqcC zFYIRA0v7FR/ipxkNgSzi+tKMaExDuFuV9aZEhepS54eXriXyGmzvevINlHlFgh+ 60WrUGIlkVtQYCW4EeP7kB66u6uV6PnKqFUXPLoF7MDg5nrJqaX7r4+9d0JopClN 1L52BADKV1retnbON3PP460z4j9IJspst9n1AZ3y9S5ojZ0IvhL9UsjazvRheTCm fArizJMTtDUo9SxWXCtpfxruYJSB5jlhkZFMC1oj484mxm/MgNxJ8mov2RAT1Pu4 85PjDNtAKq7yrTf8x7PbNVpoJkU98lZQ84Bt4RbaqechA3l/l7QrQWxleGFuZGVy IExvZ3Zpbm92IDxhbGV4YW5kZXJAbG9ndmlub3YuY29tPohjBBMRAgAjAhsDBgsJ CAcDAgQVAggDBBYCAwECHgECF4AFAkoeN8wCGQEACgkQ4TVBdhxH1cBPpgCfYR9i yz3P8GnzGKzKacDhYSSRdlAAnikohHSQEqzFyKimalh+Vk+yv1mutD5BbGV4YW5k ZXIgTG9ndmlub3YgKEZyZWVCU0QgUG9ydHMgQ29tbWl0dGVyKSA8YXZsQEZyZWVC U0Qub3JnPohgBBMRAgAgBQJKHjeCAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AA CgkQ4TVBdhxH1cCloQCdGWWbAGInaDd3AqGI07kIeHUfZjMAoKmujjBeu/1n8bsO OwUIcOutIiBRtCdBbGV4YW5kZXIgTG9ndmlub3YgPHBvcnRzQGxvZ3Zpbm92LmNv bT6IYAQTEQIAIAUCSh43kwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEOE1 QXYcR9XA8FUAn2F8Y9LTsvK/GJAMU2gboZY1DCxnAJ9XnCdD3w7uQscd+sqIJKuV KlYsDbQnQWxleGFuZGVyIExvZ3Zpbm92IDxsb2d2aW5vdkBnbWFpbC5jb20+iGAE ExECACAFAkoeN6UCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDhNUF2HEfV wG/MAJoDJLimxPsysGqpRWMYb36855NBLACgn8ICeVtfyqCoxAv0YIYk3K0M9we0 J0FsZXhhbmRlciBMb2d2aW5vdiA8bG9ndmlub3ZAeWFuZGV4LnJ1PohgBBMRAgAg BQJKHje5AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ4TVBdhxH1cBWygCf fvEVUFOSzEPylUJMZt2NKaiwomQAoKY66bHiWUIReF5NliBlsM3bv5qyuQINBEoe NvgQCACVC9Ks/nhrOVuHu9rj52KRW5J7S+20ZOZFOb90iVFCwFSn3/TstqGnao9X NQBiopv+i5s5AdmVjUyHnTSMggqVGfxltgG6ttxmY+iU7N/+aIXkbPzHZ/qZgKv5 ey5MhS+kFV8Jh2IGV6beaQM0KNJ9LV9Hq1+V4ae0ulaGYFrNnbwI/rdXZ7vEETCF EVM3NP6xsgiw1NQ/V6b7iriTroeRytu7XoRlchik/7sQBLBwUvIVAD7BdHqjQ1NF SILyTr3aPagu1CxARmkCCDX2sfcqT2/9wVECubbgcUMRjVHm7k5BsZK7fGmHcBZg /5Rl7ngtUYwsR4h47A0aH4IPZ7AzAAMFB/47qL+Rb4wqF+sCWM/QqCrgFqMwz1JI qc26U0+a6bZ6kJBbMzvBcdrVFRfn52qacCdfFpdI6Yz3fWQyzrAZwqjCTPaGBeEd rSVbonW5dDjJTkSiKMlo53D19PcNklSjFnCrPeF4aFQ4VbT3RioWh9P00xhCHPQB hsg+cU9rm5ZASMht3K+k+bgpHT9gPVzckZTC73l3xaNetTDnHlRDw8ATvBYcUfYr kDp3tgkZ7a1pPRMz1oOKNWtxW5Z07HLj0Lt2xyZDe0BSImiAa7MYC4PKLi5VlDKB GPjLDrM9K1XUM3Gp8O3bd5qjnsueu6XOdGZA93g4wjXmzDqhFIXy5T69iEkEGBEC AAkFAkoeNvgCGwwACgkQ4TVBdhxH1cA3KwCfV8uCW9P5gm0+Dfm1miO/j6rvexcA niBfAchAUVjJn+UKjAd5RD1SFTAm =bSSP -----END PGP PUBLIC KEY BLOCK-----
<issyl0@FreeBSD.org>
pub 4096R/EB83C2BD 2009-09-26 Key fingerprint = D55A 42E7 0974 EFD9 3939 56B9 6E6B E425 EB83 C2BD uid Isabell Long <isabell@issyl0.co.uk> uid Isabell Long <me@issyl0.co.uk> uid Isabell Long <isabell121@gmail.com> uid Isabell Long (BitFolk Ltd.) <isabell@bitfolk.com> uid Isabell Long (College) <IL18685@woking.ac.uk> uid Isabell Long (The Open University) <il948@my.open.ac.uk> uid Isabell Long (Mailing lists address.) <lists@issyl0.co.uk> uid Isabell Long (YRS) <isabell@youngrewiredstate.org> uid Isabell Long (FreeBSD) <issyl0@FreeBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 9KqO3oDzBigK/FX+SSZjPS51SaS1nA8CcceS6UONZjk2TSn7r4/qjH5F3eV4HVFh U0ojrw2w/zdhwRt5XeELFacGJi++0CcDpJzqkooeHQ9I4httq4z3UWazW4XfCz6N Jb3yic8Qt8GlbCvF8Jx8KKQfBoqv+TJ1tDpJc2FiZWxsIExvbmcgKE1haWxpbmcg bGlzdHMgYWRkcmVzcy4pIDxsaXN0c0Bpc3N5bDAuY28udWs+iQI3BBMBCAAhBQJP hA0AAhsvBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEG5r5CXrg8K9We4QAL4W jyHf47t/z57QKlGTde4gB8HyTQAEreDiZTxz1+0dvjAgbVtVwlPFfy0cWbO1bahu QhsUHLDTxgqwk2Aqpr3/nbvSDfHyYUYN0bfnBXZeJWRlEHEC43WWZh46ZBLGKRk2 A3kzdDhyVMu3eWfebixrYWIO7TipRhfquyy2uc4H9UPDRuk4sbIlFKKLreDWx8W7 /CRysA2Ld0zqWdVJBGCmchhd9tPvc2BfdCWQE6wFJl8elTQKTqkZRF+93LLOApCG BWk3p/9Qwm/qoz5DEwCFoTAe31MUzQ+7P0GfofaWS/NJNUjmuBHIVI3nKudJiBhu /YLAcF2ftNgRBQ4Q664bh62jgJ5zQS/UBY/dyyb25up6L3pBC9PfBpSmrs7hd5hH V1TSJuqoQpI7v3oyCNEMYhbgYB1I/V4Vq7okV5t244s8pNrK7eoNORvULILP8H6z t3FYcNdGcwYs04iwLRcnor/Zy4UV+yB6NABctLOUBhiF4AjtBUzgs9tdOwmoQuTy +lLuW9DTE9n3dbgpWU8y7O0eVxwhJjT306eY6ZLRhtZnqsfdOB2/G4Iq6sm3kBQe Z200QYbZqwTI3jEZNx4DxAZjKK7Veoi4dWvSl2VRT4d0bR6G2ElaFyyDfQfYNCzH KOEU7RQPTXz9rkBx/lijxr0eIzwLMEQwz5JN1JMZtDJJc2FiZWxsIExvbmcgKFlS UykgPGlzYWJlbGxAeW91bmdyZXdpcmVkc3RhdGUub3JnPokCNwQTAQgAIQUCT4QN HwIbLwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRBua+Ql64PCvRkxD/sEvVaz G54T5Q59zG9RhNFWcmKaNw439YFKc68Sfni95BdUWsCaC63/7FnuGFd4Mp42Nr5x O46axkVrBWsNZbFrLdDqUd5/SqcoCpOn0t/Do2p6G2phRZb7mipWNe5H0/tblFtk xS04ucouWFCHkCSkBieNJoyMZx0bppHjfQKkZZVyTFxSJRglr3GYGF7ME4P5cGg6 QUGFi3zTFZF8Q7AAy7uDR0XwAbpLEHUeFO4cSSTzapIJv/95KqjM+Xjq+zbmlDIV bHEc48AkQTN4LyV3WAHssnI9p6dZiFHFMqW8DXMt4vVL3ubmNUzbcUCrhoW6m6oZ oD+W/mFEGcAW/TwvmcTSwug+tu7z+vwJCce/PW+AC0rBSeusUThSsRVfFEn+YQk6 vX4bkbBCoac9U3kc1YMngHNznHkLBPoONyQrsbwJMtazWbkl4ybkFbkOeczp7ij5 kiPwDAL/sbBeatAh2LrvBJehdtF86Ab/RQXUzauf6l4zYZvTYLhQ1ygeJuI7VxOH 6cnKORCdtMiWMebISihVrHrZkegtxo1f+I6u/6PmQf+IbGxt35XFwGrV9XP4OPhB JQVb0WC1eNisg9b2IJVlkzMBfyT6bKjWxq7bALasp7aRrwhm0cktwjGxCJTLkpUa 9oODDG+NyTljuC2vYsVMcuQF9zYMi+QRot+/NbQrSXNhYmVsbCBMb25nIChGcmVl QlNEKSA8aXNzeWwwQEZyZWVCU0Qub3JnPokCNwQTAQgAIQUCT5mgxAIbLwULCQgH AwUVCgkICwUWAgMBAAIeAQIXgAAKCRBua+Ql64PCvQhpD/9EAIKbFh4dVVZIOdes Y9M7NFM6CN/zX/6DzUaYR28qoTgDdWu9cVGf2Iyju5VSS0RiTjkKj1XW9SMwDfVN K87J5V8GCPqd9F2uEocWAjA5RkFwc2gVTnSk5YJiS72SCPDvtKv++1fdYH8Ml9q5 c/8WQMIxjg3/j8ZK/+LVV6wmX1/3MBPsU8fiB9KeOpi73Rn0YrqDUtdp+sYtyxF7 3kjhksaSCbkedXLhnSCzUeEivrjdTDiaH7P5LLDZTYDw4OCPfce6Depos+hZ6Yhx 9tqEmLIuSb1KkcKyUFcsQCIgdotKR8VX4Hi9pRZT39wWWwkEmMvNeedNmtYN2s6U 0GX0h6H4dxsHT7+kPuUUScm2pZ4V79vZTuLE4w86swi6JicemAZtRtBW8XR8I3fF vwnXIpHMSQ8m7+sVyWjMdHUfNRCk4LyJ9mXqRkrHyUaoHglxQlPepXj16Hpqcmm2 ziU4Sa+K6036pEHEZU8NapBBWBtPBT4Qr6lczfuII1CObLrmjNbOG/FASQ59aNST K+lt6h60vG63/8dwWNt2vtT+OqogCfX7BFhpZgccnVfK1XgVW/YvqhLFn6Vmu4+f ravgeIbpYVOQfj6EnN8VaB4ObofXtrOg6fAH/ILICLA10WNIE8nDHiI55eWAv5mI PMOrsNYPKCBRPOLtvcqn+iDQ1A== =yYCC -----END PGP PUBLIC KEY BLOCK-----
<scottl@FreeBSD.org>
pub 1024D/017C5EBF 2003-01-18 Scott A. Long (This is my official FreeBSD key) <scottl@freebsd.org> Key fingerprint = 34EA BD06 44F7 F8C3 22BC B52C 1D3A F6D1 017C 5EBF sub 1024g/F61C8F91 2003-01-18
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.1 (FreeBSD) mQGiBD4p5ccRBAC+tbiJm4bc9dO8oaRhVGqWmNhYfi2GnX4AM2h+L7bcIU/7jWVn uWGe/PFHDcuOpEov/XRw1gmgoNh2DopTxf363DVMevmGW3R1842YMmLvCYZ7C0Rd 0GdbHW1xXeRSygs6peLcPGQ/7ISK0BHMudFim5FrpD0tq3qrqRmuGgls2wCgyF37 u+ZoP3xiP0wANhoWJtyBWQEEAIeYSHvIPKFIo9FG/+wckx9Fc+hLXPKwoETBPof7 Wft9zXiYyowuGj6/ydb6v229nI3lJwVPR8X6Ptjf6rO1vjf7uUED9dNBLr10vdW6 jYClBT8lqJAq3DzEpDk2kOlhYwtrykyld9Ys/7vgliuBB0XRUxGVNieqDck7PZWL ewz5A/947m/ZrlZbn6+jsshGk30/pEXZUhcDnUBwW26GuFk0TGlXBha3N0NFwqz3 a7qnJcvSTKfeZJY5NCwqzCo/rLpmaNd9JCUrgwSd1MI9Txrbj3lDRy5dj4FZBQ2N BVgni7SRKaiPw1KeEprSOR8yiM9ZjbV1g5zPeZ2bZhSMCP7mdbREU2NvdHQgQS4g TG9uZyAoVGhpcyBpcyBteSBvZmZpY2lhbCBGcmVlQlNEIGtleSkgPHNjb3R0bEBm cmVlYnNkLm9yZz6IWQQTEQIAGQUCPinlxwQLBwMCAxUCAwMWAgECHgECF4AACgkQ HTr20QF8Xr9fvgCfUMy+qlN9qQtwMFAKWViSllk0xYgAnApLMv95d6Ecrj7+U9Et liAwNQXWiEYEEhECAAYFAj4p8nkACgkQtNcQog5FH332EQCghR98TNpvYGdrsg6Q S3BngO5n3VgAn1zo89iPy8VMP/kXq2jlzs/74+i2iEYEExECAAYFAj4p9igACgkQ 2MoxcVugUsOwsQCfY34hwJIc8MapwIy8fWmCeLs4T0IAn0aVpewWF99H6SapelNP hvDzTYLIiQCVAwUQPioA7mVgqaw0+fnVAQEUHgP9EJXxzQlkaN8VsfRJo/UFmC4z wGkwu2yatUjMSZR58VpS9rF6CH1rzmNFtZZmIh6ItQ/mPaUDW2yObWBRL2r9vkVx e+DPcpcZAebM3ibjsOg05cftcphv41rLak0C2Nec3MXnxT15O7fcO6aO+d4oJ2Yi oL7YJX6RHrqNCTQn6/65AQ0EPinlyxAEAIGtuZXdf7K51Gb9jijgdV1NMPKwujoq K9f1PZocpDve0vwXN6AvzJ1L/LTrZPvBZ0UCAJR/zVtz4H2bnSqalbd8j8bmxfYx 0SA3QNAKJhgBGNlnK4HvAGJCs8oXYp+6Ph9WWlTcPzkfscPFc42VcUEdfL/5kyLr OvGAUW6D7iCnAAMFA/9CWXarz2QMrkduiasc8bhSmv2lVOfUVcIdz9imc72Z5GUk FBiQJ2kuqJrxMUqAgoccnJ9R0QVZwCaQyRNakEQEcENBKq9Haa5LLo7nD3CAiqIi URqloJORSzXoQCrw8OelbBp9RaEqVdCecbNqAbA8Ru4NIwcyZCgvnX/bUTKq54hG BBgRAgAGBQI+KeXLAAoJEB069tEBfF6/XBkAoJtQ4ECj3ntS2xlODgB8N+cKIsdb AJ9Lwk2EEIZhvzhwvhpwIKAhWhHcmQ== =C3Jv -----END PGP PUBLIC KEY BLOCK-----
<rmacklem@FreeBSD.org>
pub 1024D/7FB9C5F1 2009-04-05 Key fingerprint = B9EA 767A F6F3 3786 E0C7 434A 05C6 70D6 7FB9 C5F1 uid Rick Macklem <rmacklem@freebsd.org> sub 1024g/D0B20E8A 2009-04-05
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEnY+RIRBAClGSwgcIr4i7G4CYEa2cBHRC2UOB75/AXFqxmzAOcype8WInbX f4xLBa63VMoM7eis27BouVRcHI64oREIL9yvvMPwRD2ZINY5UD/zkls7fw9F2NyJ AgntQEPRDkk14AEiIX5uvB3l+JyKmbMNpJuhrKpbxc5qvaDTgD02y9TurwCgguAy pMVQu2mtVccXkSb7WEh95SkD/0jTFzDTcuowbxALrPgQtlGEXo7RYLPIFxTI748F h8Tgra3flWp2QPAnWBJEzrz+9rl8wqQ2ddb9IydwtY49BjKIrXhj2Lh+8l/1oDKr RXzRbNH/lGHhmphW42DgM9mOCCoSWugUEu458I89FjuoncdBiDdi7HUxPy/rZ5MA tnRRBACWL22M5MPfD9dl9SHvnoBz47nwlBeg0Oxl22oNfiyTQdJ1q+g/wGpDPAll eqs3Svky7gj+f5375K/DEYaeFSRynXeetpdqpkBDlp4mRdDGcpd/4ImAx6deQTXo EraidVlZ0Fjr5cP+mFzoI41LAhTJa/VUoUkMxq+gJAsXsSF39LQjUmljayBNYWNr bGVtIDxybWFja2xlbUBmcmVlYnNkLm9yZz6IWQQTEQIAGQUCSdj5EgQLBwMCAxUC AwMWAgECHgECF4AACgkQBcZw1n+5xfFFBQCfbFJpzSEXUgmoEl4RBgoPNzu9SOgA mwW8fBCx0RDGfho/8S/PjZLQ38JCuQENBEnY+RYQBADMlW1YS4ZhBh4PCOXTJsjT Vda2DEn1W+2BzZw9j/DFAFjm0U05rlEsfz584Y/SLlPNbCZ979//3K7XxicRw7zm E1Mzahy2jrmGGJv2GfAZ+YyJPGA/xndNA3/ocT1x03LMWNbZwFBe4Kk5ShoqPgl3 cO28w3TJUnrUZyo+h3WhpwAEDQQAkwVB18LmtI0CW4H0/jMgiz5B0z3yZdlinbif +EEFHhhdp1tXtxA/jyp3FsW7hOlGXQi/tACcxJ2UBcYAZh03+x7bUMnJpisPDnJ3 UilCuwk5cAkQmGeAQ7ukNNBwVhJ0ZfW7p2lZ2RwW7zSjPK7RMW1EL4Scwpey/ojb Tv9fVXmIRgQYEQIABgUCSdj5FgAKCRAFxnDWf7nF8WUfAJ0TTs+DTEkwHeE4mHAA CqfpXJXMhACggkoKIIAH+lHNqv3Uy9q5RFd8t3I= =F39a -----END PGP PUBLIC KEY BLOCK-----
<bmah@FreeBSD.org>
pub 1024D/5BA052C3 1997-12-08 Key fingerprint = F829 B805 207D 14C7 7197 7832 D8CA 3171 5BA0 52C3 uid Bruce A. Mah <bmah@acm.org> uid Bruce A. Mah <bmah@ca.sandia.gov> uid Bruce A. Mah <bmah@ieee.org> uid Bruce A. Mah <bmah@cisco.com> uid Bruce A. Mah <bmah@employees.org> uid Bruce A. Mah <bmah@freebsd.org> uid Bruce A. Mah <bmah@packetdesign.com> uid Bruce A. Mah <bmah@kitchenlab.org> sub 2048g/B4E60EA1 1997-12-08
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =D0KC -----END PGP PUBLIC KEY BLOCK-----
<rm@FreeBSD.org>
pub 2048R/F60D756F 2011-11-10 Key fingerprint = 9D18 8A88 304C B78B 8003 0379 4574 0BAF F60D 756F uid Ruslan Mahmatkhanov <rm@FreeBSD.org> sub 2048R/B658C269 2011-11-10
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBE67bzoBCAC/blN8XOxBx7pBlsAAwFJgxYOSYCw4fTFMoyoUBWEHuq0LcNIn BO4CqVyCiWcwMl/cLIh/1OHLjpU9orNrMSnJGdCvB2FAFYNm204ZMi3guRMe5xXZ zvxSa0v6zQtTRCEs5ny44XryxbZkPE5GGgyd4+sZVAcW65SX8hbmoIvL3v33Fq1w eom0nYBxU1EDIwZMl09FWaL02vBvlbSh3CYvmDTS6WD2t1ItDxhUG06+zoJs2YCb 6f+iUk3ZLYon06aX3VB3lmT6ffSdAEX6uT4V5NJ0B60xhQP7WAEmSm9ScbnFIme2 jpZcun5TKywwm7OSyOk36Z3EQyyxOSHRNJ3nABEBAAG0JFJ1c2xhbiBNYWhtYXRr aGFub3YgPHJtQEZyZWVCU0Qub3JnPokBOAQTAQIAIgUCTrtvOgIbAwYLCQgHAwIG FQgCCQoLBBYCAwECHgECF4AACgkQRXQLr/YNdW96jgf+Kyc7hvCTNlkisTOAYZ9+ 9n85WGcPLO+vyZJ6xlP41V02opzCjCVrddz3t4sq7eCFw7DTSIFovC6Cw7rAWgx5 pa2idb6fhk/DMUwpd9I9CG9dm41WBWVkxRV3KMYyF2TYwH7VgL8KdvX1C7ZkD39V NKWHcSPwWxCEnrvfcGZz+wOHeZytSeC4Gpd4sEnAVj0HjulLXmF4YHN/cNy9Zl52 +Pt1iSzjV5WJ9ywbruhOxQ7B8q9DQDveWdtSMbaZNzW8JHlj+gy8Ww/UvdsesjQu NE6Tc+QPIigBsx+MTbAwByDY6xj9OOCGNPeAxQFjNpz+iRS3Yuz04VxMy+z3cD5t YrkBDQROu286AQgA5FORCn/VS3x+aUO0zAHm/WmTJZFRxrmdkDexFZgxuHjidGUU fbGzvyu/1fRtft/3Np/M4aRpSI96qbYXLyCeJgQjNp36YRKqJkBiPBDQ9QLZpP6L nJn/NzF6/5pKLt+Sg3SdOV1x/4t+tkmcMa2+Y+yEjd9YWE67Cc5RevfO1As4B00v jFTl5LWxOc2kzVoB4OxxOLCdj/2zkIyxEPe4z/KswGDQsmsAfivHVcT1Kpas6Jr+ sxCwZhSNy/BSuYtwHqGV8xw8vZlJkrOIn25StwW7hVf1oNYQnwTSBRwGnU8WVsqH /2VfIatSzoJ9L5EzoVjkgNxQ+9T5xrqf8G2ddQARAQABiQEfBBgBAgAJBQJOu286 AhsMAAoJEEV0C6/2DXVvDjcH/1/sV6J33aR2Wk4fT8ChWWuUl3Dx7CnDUuCvKo/v oppP/bW473lbV+AlbG8WUpsCUqKy5WkU4uHjSfp3F1UAPDBTU0lgcj30jr13sGLH n4+WReFFZfDIwIBWNHqbLmPHEG2jItF7ssxL/nsYqTo1UWsI+3fToJX98Irz0PXL mX0e8pWdDe+pR34OcYDRB6Fe17cKE/5wpVSvd3+YZ7AYuq5wxfwvZVdOhcXSnWS0 ksMRQMkG5A6BEY0ZpAZWNwRO1TcVqEJC4L6ujls1/sZEOIKSDj9UU1OC4tQYAsx2 /yW99HFkq/4I+yL4zFzmqPug4j3GXKkNGqFNmExVys5uXv4= =Ykam -----END PGP PUBLIC KEY BLOCK-----
<mtm@FreeBSD.org>
pub 1024D/7CD41F55 2004-02-06 Michael Telahun Makonnen <mtm@FreeBSD.Org> Key fingerprint = AC7B 5672 2D11 F4D0 EBF8 5279 5359 2B82 7CD4 1F55 uid Michael Telahun Makonnen <mtm@tmsa-inc.com> uid Mike Makonnen <mtm@identd.net> uid Michael Telahun Makonnen <mtm@acs-et.com> sub 2048g/E7DC936B 2004-02-06
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =TuyI -----END PGP PUBLIC KEY BLOCK-----
<dwmalone@FreeBSD.org>
pub 512/40378991 1994/04/21 David Malone <dwmalone@maths.tcd.ie> Key fingerprint = 86 A7 F4 86 39 2C 47 2C C1 C2 35 78 8E 2F B8 F5
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: 2.6.3ia mQBNAi22tqgAAAECAPARUB5VpJvYQyHAzL0WITkJmKG1lpwFMPz4jenjJRplPr33 OvKxQcXh1bAWNVFiJVDJsWwnfif94wQdVUA3iZEABRG0JERhdmlkIE1hbG9uZSA8 ZHdtYWxvbmVAbWF0aHMudGNkLmllPokAlQIFEDCwQ4yqxsuiiP+uKQEBricEAKAE f18kbKpFKU/DPRVhVYlLHCkzXLzZCiTxBUGjMaXZswKwrjVLF2l8mrNQhqC9L953 AGyUYNfPLtqw7b088v3ATCIrZ+izWyE27IrjZWSS57GZiDtnkm6moarG79yANBql LBc0sK077cHEC+/gDwXNBLg0NNpHkaVXPxixt/ETiQBVAgUQMK+p+pFKk8pIl/up AQF0QQH+ME6vPoS2+FgSN1q9R1hwmwEPAaYdyfhv2lj1/6KYDEaO9Lhw2u57nW7z CDpir9gNN0X9U3XrIxlJ7wWxa1k2PokAVQIFEC7vu/zjBB1VQDeJkQEBWFsCANX+ qJO8J6qeJW8gcrmxMBA0l2MjEHcu8XNky6YT3yS6So72yL1lZbG78Sew03fXnWNS GyhRrPz7sURNLtJDNDo= =wpn4 -----END PGP PUBLIC KEY BLOCK-----
<amdmi3@FreeBSD.org>
pub 1024D/F9D2F77D 2008-06-15 [expires: 2010-06-15] Key fingerprint = 55B5 0596 FF1E 8D84 5F56 9510 D35A 80DD F9D2 F77D uid Dmitry Marakasov <amdmi3@amdmi3.ru> uid Dmitry Marakasov <amdmi3@FreeBSD.org> sub 2048g/2042CDD8 2008-06-15
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =6qxA -----END PGP PUBLIC KEY BLOCK-----
<kwm@FreeBSD.org>
pub 1024D/F95426DA 2004-09-10 Koop Mast <kwm@rainbow-runner.nl> Key fingerprint = C66F 1835 0548 3440 8576 0FFE 6879 B7CD F954 26DA uid Koop Mast <kwm@FreeBSD.org> sub 1024g/A782EEDD 2004-09-10
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.6 (FreeBSD) mQGiBEFCGHYRBACI9ERMi5j2009Juy2kpXS860i9tJJ10mM9TNuCZVYcPRRTiSWe Q+YySmBtR9TA3OZfd6BA9EqusEgcwUJpxjZ8zjGzirj/OjcPtKwM9ZO6dadeMNaE wT32bJDUw//2ky2xflJCsjg+TSO7PxQi3g/YEWfau6Istg8PKfzHQan0EwCgxwrV 6JijZQ85jIgQoceJjkwBLHsD+gKeeSUG7g2CO+NJf2d0tBj+l22QzmeAtlnuUskd nHKDAzzty80e4HXkUYw8IMueR7Fe2Tjx20OvVSkzMwiZYqevIJHVhiouCFZxYpSa JQHPYLpMXMVZ1X8d17tjbFRBXWmNrDcEhb4m3WoDKfQD/qbMCwBErsQ0t15dddnQ BVyqA/93dSzMYRC+Zm6Hzfk5Dz2MsvsxEE30ysSwFjIZ06RtYPKlN0x3ABCGba8f o5H0P6+gobJRLTQfK4xDS4J3G/d7TWO1bZGk9MPEzCJDexTt5yfKsY2jZRVRrikE fIbdSUgLnczBdUno5qC9IyMhGNa8O92GsjleDm7D+p+wkkoyCrQbS29vcCBNYXN0 IDxrd21ARnJlZUJTRC5vcmc+iF4EExECAB4FAkFCGHYCGwMGCwkIBwMCAxUCAwMW AgECHgECF4AACgkQaHm3zflUJtqlWgCfWKIRLzsvZjBjuck31Ep8sEDP0GgAn17m X0hYq8W+2gbHbmYeqIFefHs9tCFLb29wIE1hc3QgPGt3bUByYWluYm93LXJ1bm5l ci5ubD6IXgQTEQIAHgUCQUK9MgIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBo ebfN+VQm2sH2AKCnwIQ3C8+62/uQh05mqXqdzAaU8gCdEkRN+L9HY1OwFlSDi6Tc OAWLTPG5AQ0EQUIYdxAEAItGBQMO4f4rHYh9zc4fd62RhBfMHJpY1ex6HeiHt3pb i6KfBUai1zRYxgq9F+8qR9WgBLF1VhA4O0nCU9/FKOChc19W7xKa2auvE22Kq1ta xjCszahtPTDGIBs4K8u0fH/Gx4VSikQcfIGNd3IK4vALbLfH+iK/1RJNXPzQ9A4H AAMFA/4+UBNqZPucstZgmEwVB2H1Bt671fQqODpWj2eOMIYJWXKraUxdIjUqzm9K QhC7LBj9ihsn+LRsO49oWIAv5bks4zC0STACJ+Lx+FMb1i5ayAp/03DoZyrjRnGb SIY8Dtqonut2nic0NQ4XD5uqTkx2t7xlKJay/n4Nop2uqwajOYhJBBgRAgAJBQJB Qhh3AhsMAAoJEGh5t835VCbaOZEAn3wkQ7xISlGUox1/aiPU1CafRrZyAKCXgDLa wlCa23ftqh2DPxkAXtCnEA== =FIQv -----END PGP PUBLIC KEY BLOCK-----
<emaste@FreeBSD.org>
pub 2048R/50A17BF4 2012-12-18 Key fingerprint = 0C08 ECC9 3A0A 8500 AB95 B553 49C4 7851 50A1 7BF4 uid Ed Maste <emaste@freebsd.org> sub 2048R/08FA5F72 2012-12-18
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFDQkJMBCADPPfZXZY16ONN40Z6afHF3hxGZsczwVUQ7qlNQzjfvUk5MJV7H VeKpLAN9pHLk9tg2xTXzcMbGe/baBQrw4kt23SwvQ1Q034nRcolio6rx4sq/E7EH vxRmwCgn4n/g1b/S8xzcXqFeDpdhY1RAbWdpQwscaj4hSCEAo2KrJ3tlsZqVRu35 wKAW5eVlrPZghi3jTPQxzdz4QNqLFR5aQdp5MrxhKcm6rnC7JeyuLAFruWoHBoqg 5P8dKjEMNPBzIJdWC2iEWqsiVOrJZ5YbCpZtbPlM82oGCUoC1QmW4kip3BJSBAJK wZlwRvHiMbjhjDGJaliHVx8G8NiJPrdDZlMdABEBAAG0HUVkIE1hc3RlIDxlbWFz dGVAZnJlZWJzZC5vcmc+iQE4BBMBAgAiBQJQ0JCTAhsDBgsJCAcDAgYVCAIJCgsE FgIDAQIeAQIXgAAKCRBJxHhRUKF79BotCADC09bvfZqcpiFH3HeQbH2SKeK6vNpI v1Uoib443EBajOKw19JkjOmPzwnFrKF1WSXrKYpp1iwUlvNgR1C+nMeGPOQCtLzU g49uuoC5q6FdMJIdYKjbVziga96UZme6kuSUUdv5/aumEuOfVvHewZQNWUdq1zbj RuBBesSKWULmUW4K7cBRGGvmAqIpWLL2lmZheT3WHzmLIwwqE4Xs8sgfijxxXrzz tAi7NVVEbOtDxlKZYINKXGXm4xfomuY4eAg+pCH58kEwgEudEspNQP+axJ0Bovh5 yq7cVm7zHbmrxSWSzLjAfprs84m3XIoX9wzlit2tydUbQxlALqcqpDffuQENBFDQ kJMBCADODYSrW+MNgYsqOZpg7hQL+oWPak+DJW+mAe93D0T6iS7g7ZDX7XSSl+LE R/9bLa6alA7qXDJFf41yl9Gw7vP7k5SFAT0mukffR4wiXqsTKcdGj8LxV8JllAQT h3r38gNhZRDr4UQ1MZxWseeZx6myj8vskCiv4Rd0qEOlOE7AgiJdUdUoVLnjZkDE o+UbOhqSfSCWEQNItJ7dRGsmxGAUH4pIZcdu4NIYINt2yNIQCO/NTDFj80dpIWxt Q1BNqL45ZkWG0B3J1j4tsze7dGvWnXZfJQyvTeNeSg6WteyqQSQ98WgvFQkWceUv 1ooA5bHG0xAtg2OI4L2ZvzLINfrRABEBAAGJAR8EGAECAAkFAlDQkJMCGwwACgkQ ScR4UVChe/RV3wf9F+TfpN7DC7m7+5aACXpDB86xCSGG4COtSyU8Gs0tgS84aE/b KUCdRZOwvz5dHAQUaPcgRNuNYscu2aAN4DYdPWrU59tn1s6+xYvWpgkzt+GGsni3 gsz7vot3vUEzf7kOMV+NgdBEEIKgUT3TuIU5wQ/fevYGN1gdMeXiYSJ+PSfaZWnr Eee3zGU6TtR1WUgjQLoSdvDPzsFaNYSbCGYKXwSQOw7ysp1tY6Wai3teMb1Q9YNe BpQCsjEhGSuocr1R34+Nvmo6OcOpSeqEN3XRlz4PIGcXUY9Jp9gtGBSeFLasihfC SDQa/FThS6824wFQfaya638NZbjhCzrtxx4gdA== =aAkV -----END PGP PUBLIC KEY BLOCK-----
<cherry@FreeBSD.org>
pub 2048R/2D066FE1 2007-05-22 Key fingerprint = FBF1 89FF 81BB E1C7 6C1B 378D 3438 20E9 2D06 6FE1 uid Cherry G. Mathew (FreeBSD email) <cherry@FreeBSD.org> uid "Cherry G. Mathew" (NetBSD email) <cherry@NetBSD.org> sub 2048R/7B2C4166 2007-05-22
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 Rg== =lSy5 -----END PGP PUBLIC KEY BLOCK-----
<matusita@FreeBSD.org>
pub 1024D/20544576 1999-04-18 Key fingerprint = 71B6 13BF B262 2DD8 2B7C 6CD0 EB2D 4147 2054 4576 uid Makoto Matsushita <matusita@matatabi.or.jp> uid Makoto Matsushita <matusita@FreeBSD.org> uid Makoto Matsushita <matusita@jp.FreeBSD.ORG> uid Makoto Matsushita <matusita@ist.osaka-u.ac.jp> sub 1024g/F1F3C94D 1999-04-18
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBDcZe6YRBACDOZSZ5cWE6IvNkx2Ht6S/VdIY1OXFU8n+cOVxNIHFWXPUOrFG F526VZoPfjURnslubdxXC8TKGspX96uc1jdROHvEwsxUUELyzZ7G5oJ5wd4jHwjq K5zwV5FZoNm1SHdeN0FqZB9rlJdOt0kxVZS+b1PUc0j1i4oDNZz7+8rc0wCgltLi c2i5RQzjuvJvF9P8OYGujHcD/3Tq02ov/aNX+jIoO58uuOBZpYFL7ZfbCeiMs+4A dmvjTI9MpfLBP711iu1asuikx6HLQts9UTVk36qP9ubNmFi54kDHsej7Ce8m+dOu Cjcjle6Be71MGLq4YUxd9xZmGGDPhEFnHWbB/QPP4n/m3DN3hblWBgP2PsgmqDyK 518dA/0bhL5pvw5LSaRtGxxWvFBInfWGzC5EuLw4ERZW+bEFB0To08ZnocLRN/E6 tZ2JTr2O5aMLqUEM3jgsIvs9EOGUBwPRzyOQXpc2uQemn7J0pL6PQfuBIaUI/NOu ULM0gQfLIV3wOP6Y5gH0FBcLt/ofrqdYys0C6zTq3LqDW5FdQbQoTWFrb3RvIE1h dHN1c2hpdGEgPG1hdHVzaXRhQEZyZWVCU0Qub3JnPohfBBMRAgAXBQI71CCFBQsH CgMEAxUDAgMWAgECF4AAEgkQ6y1BRyBURXYHZUdQRwABAc3PAJ0VtHlKCmR8IjdR KJxY0C5fdmaDGwCfecy3f/dYGQsljHhv0Wr2PxciscS0K01ha290byBNYXRzdXNo aXRhIDxtYXR1c2l0YUBtYXRhdGFiaS5vci5qcD6IYAQTEQIAGAMLCgMDFQMCAxYC AQIXgAUCQ5F4YAIZAQASB2VHUEcAAQEJEOstQUcgVEV23p8AoJKAqle5nC6Wi6yO TZtcr4axeBnAAJ9ABx4gqACagCDc/OMk3pmtb4sy1bQrTWFrb3RvIE1hdHN1c2hp dGEgPG1hdHVzaXRhQGpwLkZyZWVCU0QuT1JHPohdBBMRAgAVBQI3GX1RAwsKAwMV AwIDFgIBAheAABIJEOstQUcgVEV2B2VHUEcAAQE6EwCdEPG7N7vmhgYEqmZqPLm6 oqjHOpIAnAr1FfVDPXpfE2SmXUZenG7+5MwntC5NYWtvdG8gTWF0c3VzaGl0YSA8 bWF0dXNpdGFAaXN0Lm9zYWthLXUuYWMuanA+iGAEExECACAFAkORd40CGyMGCwkI BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDrLUFHIFRFdraSAJ91gKAjNH0XzAKohpQV vo3uT7LNvwCeJSxDm0hpmaOpa+LCcabNP91SyhS5AQ0ENxl8HhAEAITl4uP+i5aY Wr7mPBLAaWfoQ4fyT3pUThtStiymqsrEDFKhVqA/KD3PUV1CeOBc9oq69x1+pUlk VYz3vDrvk0hP+dy6nerUEbkdGtMKLvGzakdond55jgSTZ6CPHxqyLva06QpY8tj9 CODunFUE+MPVV4Lf9U4wMeEDZFEYvcajAAMFA/9kKoDY1ur1mAPJRWAcEONxnwiW qe7l++fg/294wra8IkAbF760iMnqq63qavsGT6xStMi9EwZC687p86sFex6KF+uv P04CTAyt+FAph7oa44AdWJo4tJ4SP8xIznOiZS8clWwxTaqv9Ncy6LZwbZf/P427 egF1zuv5A/MTO3KD7YhOBBgRAgAGBQI3GXweABIJEOstQUcgVEV2B2VHUEcAAQEr 7gCdHJTTs41XBpfprQCErm3tGXwRrG0An1zUSEtG1AA4jFXNgIlud0OO4aMm =aY+v -----END PGP PUBLIC KEY BLOCK-----
<mm@FreeBSD.org>
pub 1024D/4261B0D1 2007-02-05 Key fingerprint = 17C4 3F32 B3DE 3ED7 E84E 5592 A76B 8B03 4261 B0D1 uid Martin Matuska <martin@matuska.org> uid Martin Matuska <mm@FreeBSD.org> uid Martin Matuska <martin.matuska@wu-wien.ac.at> sub 2048g/3AC9A5A6 2007-02-05
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEXHDPMRBACme6PyRAt6LcfVO5LiPbtq6rYu4e8zrUjd7o+FiCEYjdF8VwXU 3RQ76f1cx2tnNyvv7KEQX2/NyPHQH/3n3Cu5w8BToQrV6sEAMP59nWOIKSNTXNGN BAbFXvRDC1vlPXyXaeRt6InF90FmJ/ZJpTX1wYGenYymZtBSPd3q1iK6DwCgn/I2 9FLTUjOm2qknqLGGZJ/w96cD/i6CDQa1VzwyplIKCbPDqNyJh3qW23JMkW3OGwRk nY8H4RrR3LNfCpiBuzw8JtO8vDT/NoUKG4rXFMYz0pPfPbWnJD+qtGEl3fXtNC3f a4YwTTDil5VSi846IjHK2rEwDvUkMAyiEbthOIf2U8JRn0KThPYb0alPyNuF+zaM HUUxA/wNYHb/qjqCI0iwSNxTYKeruBcua4yg7NKeeHtA0an95CfT+AyEW6inQ0Od WSrDljmZbq0YGFndRZnxlwClzA2ueS3+/F4ADvn0kONhzXfVewRayOHXLiXlcV2d 4+g3oYMWVsR/DAi12ezzvkHnDWsSeeXPKkBXMAczmKd484RpbLQfTWFydGluIE1h dHVza2EgPG1tQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJGEkt4AhsDBgsJCAcDAgQV AggDBBYCAwECHgECF4AACgkQp2uLA0JhsNH48wCfbHM5Tu8ABaGHO1Nlv0jtrc8L D4UAnjIzKUyR6A0ReHlqZyAQA7XQ0lxztCNNYXJ0aW4gTWF0dXNrYSA8bWFydGlu QG1hdHVza2Eub3JnPohiBBMRAgAjAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AF AkYSS5kCGQEACgkQp2uLA0JhsNH6FQCdH3LhF9TLVQbd5q5sYYR48zmXaPoAljRf JtDTR6ZLdjVowmZAmSlsFda0LU1hcnRpbiBNYXR1c2thIDxtYXJ0aW4ubWF0dXNr YUB3dS13aWVuLmFjLmF0PohgBBMRAgAgBQJGEkthAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQp2uLA0JhsNHkiQCeMQACotd+npbhK1pJMKBcFOHrzUwAoJYn ZRIacsYvjMBNsx4UUkfYs70wuQINBEXHDQUQCADlHvWxPueR0sgha8L1Fwp4yTE6 AbqAnkYw/nC/2q/oUDg97VFdZM0tOi67sLYHic3Fj/Il7w78jctdlpagW52b+R2J l3LFOYlbmbWkUj7iUFrDA0QZwO9IZw2yxDP3zkEMvPh9YtngmgI8CKRtXrxgY3+7 9gEN/evBiEgS9rN5/tGI5V2Pt+VTXWfw25zRnOTTThgL/sRtqKykSJ6nsJfwO2DY 0VFpb9ndFR/zG4ozJLupV+ku0EQv2xXlOdvhdWkLgXN+JRtrP1CxWzPTA6CP+m/X cYiT498yBauwk+JTGqeOKUfn27vpycGmf/VGwBoh2GrhzXRnOVBkDXb20ztzAAMF B/4/cFjtT3rdyJpFRoSl81Nvj8/DvP1ICovH2YUY+bIdUU83Id6AqKv5vOWhlhbR 5Np9EtWkdyInXHhzs1MDm1xdNFmwkVFJB+M/XNmj5lgZ+e1riuoo07WcwKN8LdBY oOoSoKViSzEoJwlkQazOCAURSWHIlr7rYwM17oAgDjJ4PjBs4l3zjIt+wNU40wYy JOnBxjyK5ucKUAHq/6vgLmvj+QZvhcDLpKxRvw5M9PLeD1iomiY3qzNRlOF4aUr7 GX8wbk+a9rsiC8dIGn++9D3BrvGvVLqxEruflXmpokyalalitIL3N3WitPjMu7gW EUotHnqcf3TGK7N7ffv0SXRpiEkEGBECAAkFAkXHDQUCGwwACgkQp2uLA0JhsNHl SgCgn7/wkepKhD2TrONJELS0/iy8WjcAnRhJSMsrJApfDOhu0ER1TqP+cFy5 =HbmE -----END PGP PUBLIC KEY BLOCK-----
<sem@FreeBSD.org>
pub 1024D/B71F605D 1999-10-13 Key fingerprint = 4704 F374 DB28 BEC6 51C8 1322 4DC9 4BD8 B71F 605D uid Sergey Matveychuk <sem@FreeBSD.org> uid Sergey Matveychuk <sem@ciam.ru> uid Sergey Matveychuk <sem@core.inec.ru> sub 2048g/DEAF9D91 1999-10-13
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 /CYAn14opUDUCjxXXd3vrkwzNCIrYQ5i =iDu9 -----END PGP PUBLIC KEY BLOCK-----
<tmclaugh@FreeBSD.org>
pub 1024D/E2F7B3D8 2005-05-24 Key fingerprint = 7692 B222 8D23 CF94 1993 0138 E339 E225 E2F7 B3D8 uid Tom McLaughlin (Personal email address) <tmclaugh@sdf.lonestar.org> uid Tom McLaughlin (Work email address) <tmclaughlin@meditech.com> uid Tom McLaughlin (FreeBSD email address) <tmclaugh@FreeBSD.org> sub 2048g/16838F62 2005-05-24
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEKSlvMRBACEIyrOE2NlPjwg7bS3nUC4S/D1nPV22eEJ0ga9+LNHlQnsJON3 lGOU6iMGa6QaBoqg7Qw3aL6FaJlogNQfIPWZCRZdfJjlbw0Yd6EzCpMqoowB+4y6 XuObOhie5bdHFK8NVk9n1BZGUELcnPGMdhPPIQ/UHq7Rlhbqh8qkcA0imwCgzNEV oPAY1SeozW0kBE6YUXXGQXkD+wRzl9As4+1CE3ZgxUWtoNqYvZMNWYTbO0ZWMx6i YWJ5GkLCMdVqNZ7iCteeDBVoRzLEbD/FyVzazPm7FBSxzK71EC+C4Ybt2IQPWfBK Q0GI+2ghQ/HyLh4gLCLP5XEk9aw9DwXGJt2q7HngEJli5o8LFVo3Qiu5X+QeC7QN r6uGA/9/raZnDF33jfAlx1jrHnFVEa1xzs81q2LK2ii+RdU5bvTJQchoHFRKZMBW HszbXB4f+wqkSkj6B7od8hBINJwdumQXdjO6nybh2abkCT2f/nyK7ktCcq027AD4 BjWWFltUZpvspzq724SOEyBsbYJp4YTB2wys+gcyDF/ugaJCl7Q+VG9tIE1jTGF1 Z2hsaW4gKFdvcmsgZW1haWwgYWRkcmVzcykgPHRtY2xhdWdobGluQG1lZGl0ZWNo LmNvbT6IYAQTEQIAIAUCQyJDcgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJ EOM54iXi97PYq4MAoJeuQSfnGZsPBIpzOZ0vHmf/ZV4ZAJ4kKyQrqbxup6u/vMWG lS9JqYlZj4hGBBARAgAGBQJDnF0IAAoJEMYEPFZyB3E3kccAnRcxLZQIxgo0T22x GUDB8tkAUUOTAJ93N4aVydp/zrDo+OE1HStNFEsWvohGBBARAgAGBQJDnGKmAAoJ EHninGCwBj/nLhoAn3sa1+X0ccAhA+iPHo1mypN2uKUqAJ9B46J73q8E7PU17U6k RHY/7eCLaIkBIgQQAQIADAUCQ826swUDABJ1AAAKCRCXELibyletfK2IB/9GoKeE G2qDTfQbwG2Gbj4sW2FjaeNryneSTxXRMpK5dBwiMi07iM8Ze+8NdE9KlOzA9I1r tkYgR32UCfteyQXU8YvsKf6Q4wRqKbpckqI43zXMdvXyzG23P6/gR/Ozqh96Z9vA i6WdnvxjZaY6jItk357LJPQDP6zQncKFfcw7W+QAPx2N8BrUUy8U94kW6URhS01R d3NP8JylEXqqF6L7cSxcmO3A2QAVjzDpmfWu6AvREuYY7dkSSZWGK9hpoEjPN5GS LDgwRaiYZKHYz8Bx2UUA6sqaoebqAHY09bHIZ4fMiEkm7SSf5PsoS0emb9O0q5U1 tHI8+6LkM6Zhs57CtENUb20gTWNMYXVnaGxpbiAoUGVyc29uYWwgZW1haWwgYWRk cmVzcykgPHRtY2xhdWdoQHNkZi5sb25lc3Rhci5vcmc+iGMEExECACMCGwMGCwkI BwMCBBUCCAMEFgIDAQIeAQIXgAUCQyJDgwIZAQAKCRDjOeIl4vez2IaCAJ98fPNG gmITFIYH+M3UBkw1YTvfAgCfQdAkDAFJxVrvDZBDliO2NB6jAu+IRgQQEQIABgUC Q5xdBgAKCRDGBDxWcgdxN2PzAJ9d7HmdkCyM5CN7cgG6BaZ87AHY5wCfUjblYg9y tsrTj2+ip8f05PC7zhCIRgQQEQIABgUCQ5xipAAKCRB54pxgsAY/5+exAJ94yol5 HuRwmESdxzjj9S70GoYbsgCgxad9osFjtuxHHX37vaxUgJyLEbGJASIEEAECAAwF AkPNurMFAwASdQAACgkQlxC4m8pXrXxT7wf+Ji6vtaE5wjEI3/puKsHfGJmmHklL UBkcl5acntPLPxhXa2Z742ZZW+3QXeUyyXnqU1/BSn6/NBYO6I8yUJc5QptnlCvQ sJpwJlnTd7jBhSzN+L1xGxxvmmq2LfzLIleW8ye27vBOW4JDPDSgz4gVTKRqc0JV 1EYULkWCGpfDA/xPP+4Lhizz57Q6EqLVurxMjNLE2mqV7feIvYoGLxOX0RxbNSpT +uJ+6ydpyE8UhykkQwgN0vhaokwSHC1KWWFH0ET38hcdFvaVrWZsrG/GwGg0T0mG 23CvIdBUGH9U0roJjUa6CDDQz8ohR0P04lFpVsgDi9AVPEFWTX4gcUwyILQ9VG9t IE1jTGF1Z2hsaW4gKEZyZWVCU0QgZW1haWwgYWRkcmVzcykgPHRtY2xhdWdoQEZy ZWVCU0Qub3JnPohgBBMRAgAgBQJDIkMNAhsDBgsJCAcDAgQVAggDBBYCAwECHgEC F4AACgkQ4zniJeL3s9hsCQCgjLOKwwiG6bABO6ue0mjHpvR6nhUAnidSAywDgVQa nv8Ev+hIv4/QpD2PiEYEEBECAAYFAkOcXQgACgkQxgQ8VnIHcTcenACeNyN5PiZU TJ72eTxbc60q6PpkVOIAnRInAWvK8iW8I7uGOMBmyYtZWfu8iEYEEBECAAYFAkOc YqYACgkQeeKcYLAGP+czFwCgkAtsuKGoojwfo/Rg6p9RCazIUjYAoJ0xxWeuZ/df 7lkbyqcRGJOfLeBBiQEiBBABAgAMBQJDzbqzBQMAEnUAAAoJEJcQuJvKV618rKkH /1kUl4Cqj3n9a+acjUnl5gH1r6SVUuNK6pPJPVpBXDOGWQQPfVYl2LTtFfzIh+e0 q7J5os8timFbi/6HaI3RNV21XoqrDVgmRA8lApxM3dfB0hlJ6jx9eoUjHgi4n08w nX3g43I0zoRc3lQPHFc0jV9yRhgAln2yHmrvdcW0SUb8Zv/FvyG26W1gyEvl0cPE /AvKerTr2oP3aKnWtQfylovIw6Y+MmP3AynlvYghY7qw5QSnw3PhITvoFh4Lg4hI c/AoY69TAdf4d+kHtbo9vssMoT/NAIaAN3K8hdzSmJ0Ifsj7/K9+qtYz3r3c/+Qz 1pH6hqz1u13upXLo/slPV7S5Ag0EQpKW9hAIANJJ8W4+BYSzM6ihW2ElYyt3h2hp WXptNPnrZDAoqx7YtCyPnUpn6dJrlsz2NTJiW7ahdsCQqrCyMTRCzAZAbFN1s8Se 0hlREeHxGBIw+trapap/B2u0VQHDfVEL/9ib+jUFm+Gp3izgcgf4y3tvJRmmPCgj Y9fFcFu7PrntYsK91OkgungUriZ1fbjx0OkHRaz7nnq+On+dVElFh2iTwpZKrG3L 7Qws/iVWamLOSQ14d3fzWN/Y7pF09QjOo5i/iyN1QEYiOffYaUthWr7lJ35muuaH yEMeodSNkKCF+BqpmmWKgJohopQ1/f36WjwlaVKaRh0zCIxcpX5xPtSoMzMAAwYH /2OiL+gBLaaTC5okydoeHAE+G5TobT4CI2fw2P9htDWVYf1eIriTRYKywSyjF+YS nCc8hleBDCwrUY03GXCFEOq0SAR97cfRhzxlHps3n3iAuZp9TwcGDiskL0wAaNS8 43AKNHlKRNWxXoCE4oBlq/t1+DV+7BnjdI+MCAUe8h4y/jACIxpxnRKjmAcN2qDh THauJKvmUjw5W9SvgDU8sHNXRAdTbCrDj3iEAvZ2bTUMLmh9h0tKhwmVD14IMpDp 7ZELqCgJgtHjv9kAg0Yz/Dy34jdLgypTJzUreQcJYvv5Krp1QLRTMMtoMtkop56+ oKcUsj5bqschZLFzuL2hj3WISQQYEQIACQUCQpKW9gIbDAAKCRDjOeIl4vez2KQu AJ999gXGK70qxOzC8xOb3luxRKE/TwCgleUyV4VszS8i918p+td30+xsf1M= =DTOK -----END PGP PUBLIC KEY BLOCK-----
<jmelo@FreeBSD.org>
pub 1024D/AA5114BF 2006-03-03 Key fingerprint = 826D C2AA 6CF2 E29A EBE7 4776 D38A AB83 AA51 14BF uid Jean Milanez Melo <jmelo@FreeBSD.org> uid Jean Milanez Melo <jmelo@freebsdbrasil.com.br> sub 4096g/E9E1CBD9 2006-03-03
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEQItSoRBAC0Dd1LYWYUcjRH9XabIefY+5q+Mwi7iBdvUjq96c/LgGZLXbG8 ZlK92kraOdWvwrPcYUCjYQwwesOmjXryXPoS+AYiz9iVs7AR/A9drFECh50wfaiL J7X4kSpR9zDgju/yVPyT3rhE4ZEZ/81txqdu5DSG5+vD8dLoXdb3EziXFwCg8Njt Lcb+ETI3MvK0M4A5HpuBvTEEAK2H7mNZ5BoLCrB81244e1BFwd16raITUv7DiF11 Wl4kFowGt0K9P0d6QxmL3bEdeud2wfNaVjAuiO2B32XlV4xskZmfalniN6fsX9b9 jnzJzpFvR4tPeZdpw07ePYJXh5vZjx4Mkflv9X2+rWafLiw5vkmwPnkQPcnhWnD+ Ia0UA/40hZZvC9h20eH9hAcJA865wLxzmUijzgAGHjXVjhNT2oYGneNeY70auub7 hGVL7GwsDSYc76W6IhJOcAjgHcCfa3uGerFR56T9se0ysmlBrONiYTokVZ3vKFp6 m9ZceaPiE94RtHsVVkDa+F2KWeGU1As8gskVBP8MycodYb8XgLQuSmVhbiBNaWxh bmV6IE1lbG8gPGptZWxvQGZyZWVic2RicmFzaWwuY29tLmJyPohgBBMRAgAgBQJE CLUqAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ04qrg6pRFL/NCgCgg1C8 cFGpWahx1wgZ8IQxsmCSUV0An2YnP/Q4w10WTe6qp+I+H7c7k900tCVKZWFuIE1p bGFuZXogTWVsbyA8am1lbG9ARnJlZUJTRC5vcmc+iGAEExECACAFAkQxmpoCGwMG CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDTiquDqlEUv6McAKDC5MusdUU0kl9T /ymavKEu9a349wCfXWEu9GgVb0CCZ8Agx3BHHIuZNo65BA0ERAi2QBAQAPB4mj53 L9vbS2WLCAPMMn4ZGDYGXbe1pB/mjRbZlTGnUYWE3NO1fLYXEaoilRsvcEKtbsWp Ynuk8Ou4DaNoVyX9I6I18rs5KMZBiLOvQZFYCBbJYSIn/nNycOqsTy6Nw9mz7mrw I6e6EhiYh/AQ+MI3zID3iYnbQlQFZo4gLMFTLKklpiV+DaPoDiEkQPGn+0mmLEIO pmCqiDTxCIrig7feExCXJa2+CXLj2OS+r6su38O7WJiGMq0i9nCeu+4NnezoKPwt +s5kVYAjOSzDRybWz0UDzi9M7Kxu9tFoxEQUikLDMdqSklPfRs95TEmpXIvksn3A lub2Vfum6/kdRNkxPPbUuyEvtzeCc87LB2cLpP2+EXcfHCe7MdrtowWleRqXymXa Lyun7uKk2etFpEIfAqCPC1Yd8Jf2coyVY/n+a6yotWzCtQ4vogO2dTTKmj17kkcW 1CXZz4W73Jut9ixZmYL/zOJj61j+2S7K7VLfSNrP8H8SACH0oHxYP89BaqOSOO2N 0DtvyhFfS0OsxAEBa/EgtCAZiON4nZdQGPyDvq2/uQ1SGxbykTCvgxElAQfyUh7x lctdQQ6f6MEEPHapdDwpnqX5TAcdY7v9eE+/DZNTeswUBc03qtqxee1II3K3+Rvl 4R+DuGn/oPdgksnX0kX0wtHgclXRsZ6x+wEfAAMFD/9S7Z0ee7WeH4WwU9Mf9gSp 3JGafoInoJZNSRsKAl4VFC8axivUGyUzJdTbADoRXDR6NfqJE94u+pP3vx4AAvVH cvzfGj10GlUOwQGbQxaYGgYtqVgQ6MKeS6A3xaj63WgBFtx8bbt3e9XTnjPto2ZC U/pM3lmwsvxHoJGgisRvEfdQeWW2cJlxcBfpqat1/2MFBK60Wd0WAr0x6A3m5xpy ejftkcUa08BT4LSiGAsmuNKtUYULA9OrbvJreUa90lrM+6sZy2Edh/kulNmXgS4Q Y+OVptuhHSgBeME+j/fM5+p3Uyyaa45xmCFxnx5u/XBWhzMiPvi/m+qYkXPECFLx CiZ4OC7Xso79UeMmYq+CTDMWR6pe6iGVQZhRH69ShA+c545Eic/RoOv4ra8se7/U R5BU29AWWtapMq50/h321Oi+JmmfJHrte9Kd6RdyahuvtlWb7bgnKPwzpaRXYtbt H9SskRTdESK14AwH2eUVAP66Dfr5xBoyuS2g9MkRxxhjHWmMi4TAyh47VgXUxOPF Uh1eFsIqVa1scXFaimmicdnbg7N5iVoqIIiuc2Q5P1xIuTUdxw1SjXOInmjAszO7 Ckad599/WaNFS/pkDOgt8yfQaLOKCqVuKkimWa8YuZkm0g/aY1n1cE7TvNpxdrS+ dw6TU3idxbY/DuNsWfHfrYhJBBgRAgAJBQJECLZAAhsMAAoJENOKq4OqURS/QrYA oIelyoPYInm4v6UTBo3XhOwNkHWbAJ0XXqE5J3Zv8FCqjQsJTFCmmNSoGg== =CyrL -----END PGP PUBLIC KEY BLOCK-----
<ken@FreeBSD.org>
pub 1024D/54C745B5 2000-05-15 Kenneth D. Merry <ken@FreeBSD.org> Key fingerprint = D25E EBC5 F17A 9E52 84B4 BF14 9248 F0DA 54C7 45B5 uid Kenneth D. Merry <ken@kdm.org> sub 2048g/89D0F797 2000-05-15 pub 1024R/2FA0A505 1995-10-30 Kenneth D. Merry <ken@plutotech.com> Key fingerprint = FD FA 85 85 95 C4 8E E8 98 1A CA 18 56 F0 00 1F
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 sGDiYyJDVnPYxZcEN0h06w== =CRmh -----END PGP PUBLIC KEY BLOCK-----
<dinoex@FreeBSD.org>
pub 1024R/331CDA5D 1995-06-04 Dirk Meyer <dinoex@FreeBSD.org> Key fingerprint = 44 16 EC 0A D3 3A 4F 28 8A 8A 47 93 F1 CF 2F 12 uid Dirk Meyer <dirk.meyer@dinoex.sub.org> uid Dirk Meyer <dirk.meyer@guug.de>
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 =b0g6 -----END PGP PUBLIC KEY BLOCK-----
<sanpei@FreeBSD.org>
pub 1024R/391C5D69 1996-11-21 sanpei@SEAPLE.ICC.NE.JP Key fingerprint = EC 04 30 24 B0 6C 1E 63 5F 5D 25 59 3E 83 64 51 uid MIHIRA Yoshiro <sanpei@sanpei.org> uid Yoshiro MIHIRA <sanpei@FreeBSD.org> uid MIHIRA Yoshiro <sanpei@yy.cs.keio.ac.jp> uid MIHIRA Yoshiro <sanpei@cc.keio.ac.jp> uid MIHIRA Yoshiro <sanpei@educ.cc.keio.ac.jp> uid MIHIRA Yoshiro <sanpei@st.keio.ac.jp>
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQCNAzKTzO0AAAEEAMVsAcUX89qHkwlI03RlAYBqQa00TFmgPwZs8sWvNUqTGtlK kOXcN9WNBvwzMYtEk/u5C1HukqISnFkDW7ZKYm+Um1sQPioFHTwDC6R2HRDZBCV7 0fROlQpb479iBlr8wNAYDhOs0rl25FpE/uAXYThW9Ik/apgXN4rTGxk5HF1pAAUR tCJNSUhJUkEgWW9zaGlybyA8c2FucGVpQHNhbnBlaS5vcmc+iQCVAwUQNu4ch4rT Gxk5HF1pAQHYiQP+IoxOpfpSPg8Gr7MUtoU3WZPY/5IuKoOwnFNFcSyuhrgn/OOB pbxkYjTO3MLh7Xa+9sPigevHy/sNA4vVZdjk05sjRfAZxIWPrinRy/kzva0KOY69 u1QfX+Vx2mfq/EfMJMHP/Am0H71nOfAZsscKlb/jmuo1TxIpCUx+wWmNn5+0I1lv c2hpcm8gTUlISVJBIDxzYW5wZWlARnJlZUJTRC5vcmc+iQCVAwUQOY7IlorTGxk5 HF1pAQGQBgP+MXSjPfcnNhNfUmeLu8sM63DnrFIfRP9E+n/yhZT0wO51r2LmF4ZX YI04IJCywJiPjEpCFXNAhqDfypkTXWcbLTxX6gE5GNqii5iq+z+UuO4panpJO5OY 4H0/90cH6I/zl93EZN9wfZJghn66vgL4tDTgILdRPekIOB23JQIXsf60KE1JSElS QSBZb3NoaXJvIDxzYW5wZWlAeXkuY3Mua2Vpby5hYy5qcD6JAJUDBRAyk8ztitMb GTkcXWkBAf3zA/9sDB0n/UlsH9hzaw4r2k0FT9F7Ixtk2i/vqmHDUUcrlEqGaeko /3Q+et2KzepX981mI7N2jdClqJgjlHapGoIQWZL3Jy7ocgCXDTYwGU2cFRF7kzkz h3FyYotm6bMi5F53GamkVbYZfogLo1MW7jmqIydJNdT1oseDbrwkjvXwdLQlTUlI SVJBIFlvc2hpcm8gPHNhbnBlaUBjYy5rZWlvLmFjLmpwPokAlQMFEDKUUFiK0xsZ ORxdaQEBjuIEALtVC6fjyDiRnZ3ReckdTO7k83VUTZiQH+2cMFNd8gi+O2sZ3YnW 6veQI45VB3oHD9kzMjol3B1ld7iKcQzHC6qUEviW+mTRRN2Y26DB704FNeUrqm1A LO8NPL6iNKFvUNsu3T0ZRY7oX9a9nMmcD7M2bm6jxrhckS8hY7x1D0xftCpNSUhJ UkEgWW9zaGlybyA8c2FucGVpQGVkdWMuY2Mua2Vpby5hYy5qcD6JAJUDBRAylFA5 itMbGTkcXWkBARgCA/0RBudh/8z/HWdX0GC0m3I0zIAOiGfmnJMPkzLryXuOQsbE dg28b193QnwTz6/ASF6PLJkivcd1vREXCz3C+jHz6OGs5jUKcSf5c0ZaIE4T21Hq LPKHSj0cYxgiC0auwY46m/yfO8I0bdiM6Ki3fSBTlTmDlNhWxOQ4Ic2RamKNNrQl TUlISVJBIFlvc2hpcm8gPHNhbnBlaUBzdC5rZWlvLmFjLmpwPokAlQMFEDKUTtSK 0xsZORxdaQEBjWYD/i3EOU8lEoje9jTBHfQaps9BQgviFSaHk0G41emKszLSLnGQ BeMGZTyWda6sTSqeLKg56HEmmVGzC/nHlhwspC6bdYaBmOpnSmmzxVstcYq8oiXI mlfFEcL5DJEau1VTBP56Fk4GCffaibCTRGYrQcJz4yLfATjYsni5Y8zXqhWItBdz YW5wZWlAU0VBUExFLklDQy5ORS5KUIkAlQMFEDrvMx2K0xsZORxdaQEBTgAD/jO7 tb78V3muNw+rfD8tA+yWXw8IdC4QHCa+Ga6Uwf9nw0WD+fuuz0I2La4iaC3FPtTs 1hz1QlmrztffL3tfsePDeN59nz89m+WPW/Cu+mLY2Eim2Hm6AWKVvtxtndunOSls xQLr0uhvNN5BOzEqv2V+l0MrwadPxUrHG0izqmGJ =cmvD -----END PGP PUBLIC KEY BLOCK-----
<rmh@FreeBSD.org>
pub 4096R/DEA2C38E 2009-08-14 Key fingerprint = A537 F029 AAAE 0E9C 39A7 C22C BB9D 98D9 DEA2 C38E uid Robert Millan <rmh@debian.org> uid Robert Millan <rmh@freebsd.org> uid Robert Millan <rmh@gnu.org> sub 4096R/65A0A9CE 2009-08-14 sub 4096R/41F37946 2009-08-14
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.10 (GNU/kFreeBSD) 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 =WNe8 -----END PGP PUBLIC KEY BLOCK-----
<stephen@FreeBSD.org>
pub 2048R/9A92D807 2011-06-14 Key fingerprint = 2B61 D82E 168E F08B 6E08 712E 2DF1 2BD1 9A92 D807 uid Stephen Montgomery-Smith <stephen@freebsd.org> sub 2048R/A4BA6560 2011-06-14
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBE32uWIBCADUDbhOVgIwECdOVmR/GT/P3L2S9r/E079PRooPFPxLoqAxC+Me DoxyYoAR0RFWBs3Qcrf6bilhuovPdZOJ9+BgkGNp/Nu6QayC+4m2IvEZqFhV4Lqn 5Dk+qmHGbCaM4K8L+vebdzDf6CAdIWo/ufaxBW2OzsuTi43QjYTH1/bs4NhpJRc1 vLgXEgxE9JJ1TJVm+B0Oa7tnsr6VUZg5BszByFtSnnt0sV0pFaQ33/WSU6XdYUZ+ RT1nhxfJ/p5NiP6e9h+IqnGf9yz/DtXiW9sqs4bYHs3qjZUB6HhECsSZMyaei1eh lvzQR23irMXHYHLI0aJUuNoC3f0qDLjzqJTdABEBAAG0LlN0ZXBoZW4gTW9udGdv bWVyeS1TbWl0aCA8c3RlcGhlbkBmcmVlYnNkLm9yZz6JATgEEwECACIFAk32uWIC GwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEC3xK9GaktgH4DcH/3NBVtRd HMfrieIAMyUYkjw0ddcAsBqakaDPDkNauv2+pAUDNhvJ4XUBPUxRm2OyLatHnHPe CPPTibNyb3OYgrbccBI1aMQPnKn5s03X0+5Y2Y/5qYzls6bA97MlJWNaWDl9rI7J hV7T6YPxzwkva7R8VRHdMoOY8qsErfA168Iy0pm3m28KBU+dnOHxcdA7GHqkggVm T+KpkuRnTv3Z1wrna4ejkbl+VEF2VXh6e1AOENSel7ujgWg3j2ZfOwy4wzBGxe4m h7GO/7AxvMfBqP10KXBOc6Vp6bw54O4n8CTX+CjGKP2ZvrwntOwvLThj4o1y2lyZ ojqcoYjGwIxx72e5AQ0ETfa5YgEIAJgDBvxMoNpKwuKJIbi85a97J8dHGr16XADU 3xBQe87nNAgOKj4/LYaO93syaFHoiP4KgU+A3l93tKXrd9vOpyBASID1VJehDPp0 3wHpQHGdVuleaobWJjSGJqCxT+fIa9s0vZgX4uGqa++neFKYTKsYC0T4ZglWsVfQ /ZFYLZekCjmW+GUR1k8pfR+n8YN1Tnc1kBN/iytQ7BZg01HA3376KyoKbQDR3XgO /fQPySu0JUJ67xNyxz0HsxPEvn3q4+34+SwNjh8pf/7dS9iyfr72juo/MqxU3sSa xz18l0RsvZk2YBpewnN7AFQf7fIXObFzr8RXpOGE7OVI6tAMvEEAEQEAAYkBHwQY AQIACQUCTfa5YgIbDAAKCRAt8SvRmpLYB7krB/48W8EaOYk8dWPMw4QF55ozMFD0 H4ooqQdRV+83ddWg3BNjX8w3aX6kxG4JZkrIesrl+ZLh6HCtinGehociZXNhxYMI P7FwGl+Q2i8YcMqHih3/7/Hfh9d7C7F9JWB2Y048tfs2jXwpnGY1NRngrnWE8mJ0 XWQ+5Fk51xR+0qdb62ly0PVv3zigypBLmkOFK6knmrZo2E1s+rAGyadcDZSrHodU tgvV8afN+V95Qp5vH2WGlK7wBPyteqXLrIO5JL+cTcKuZBAbpmUrxmHlUE3t2QTm BuJg0zCxtNGxMlx3WeX9LtWqsGx4VFOpfTwF+DC8w976faOY4QcGgD5WcV0y =DJbN -----END PGP PUBLIC KEY BLOCK-----
<marcel@FreeBSD.org>
pub 1024D/61EE89F6 2002-02-09 Marcel Moolenaar <marcel@xcllnt.net> Key fingerprint = 68BB E2B7 49AA FF69 CA3A DF71 A605 A52D 61EE 89F6 sub 1024g/6EAAB456 2002-02-09
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDxk42sRBACyzSSCLYA90zaZoMlg4zhMXhciG/YuiBZ005q0s9W9cuFFxwOM 0mLFbBHQKj5TG5TNswnf9VreRg8lRPCzgQ63atc10RU2tfa88hIjWZ4G4WEFDeXS hlj4dIA6KO93UEoJmIyR7hswisb086mK4dM9hq9FxJT7YQ63PkUYmd+pfwCgjX/y xM6+aPj0sXuOvAcVVmrnp8UD/2pEd8kxAKIaWmxOm9aGB0/E6vjZWxCk1+CO7tgG 4gInFYUnqniPB4JOXOWriwBGPx5IqWYwYpgeuoi/KeE/Wn7bRUEeCbBGEmJkHO9l 3xJuPX8JKDkGuTNDvR3SINKSzx7gb77eGorwxV7e4FXBeXOyXLxgDqDhh7Sjv5/4 ikr2A/99b5t1akHlNe1ITpuEETDNRcfu38/KW/nF3p1IKQ4Q+exSlEJzPFupYNoZ O7uD3A0YCNf3jIY52ufkZXqhqfsp6aRLetbqDcKVrZWSudAzGAEk3Q85a6Ei4mUB tfv4dmXQOLzfAFHezhCQIt5LIPJ5Dmz/a26+u0DmlfisgP5ltbQkTWFyY2VsIE1v b2xlbmFhciA8bWFyY2VsQHhjbGxudC5uZXQ+iFcEExECABcFAjxk42sFCwcKAwQD FQMCAxYCAQIXgAAKCRCmBaUtYe6J9pN3AJ982m/rtLgyiuHl1IM+/xfsZ460SACb BM7V955SU4T2b+1FW1ieOuuZEKC5AQ0EPGTjbBAEAKbxUKuiOJsAQnGKTXtbyRdR Y6BZQK9tPNXEIjIUZ94Crs9lVq/P3kyvpR/ziL+Yt3agUAELiX+cggUZ5KRzKBmo PJ6ZdWOuKLRN2+PfK1QVOQayeZV11XZAsPwyHI2v/hvjJnFvQNTEXWLZsBNnfTdx 0zi5RBNhf5Gt1hyuT4cvAAMFA/9xKQ7aKkvi+C7KafwH6B5X6lIQxRbTQuaZaqKL M8pDmVLqo3er7S1ullwMWfarQLHtlwirX9IOQN833TCDev9QeeYZZ5g2MpWO5nx4 kxEOAK6Lg+QBg4RcoLK9CpHUpLoChGQzNaDudztUixwVaaigj21O4PXFr9pmLLZk vj7AN4hGBBgRAgAGBQI8ZONsAAoJEKYFpS1h7on2XgAAnj0B9B7g4XPMXjizKVNP YLC2BYjgAJ4tZI/tGYxHex5RCeFv/fG4wN593g== =R/4a -----END PGP PUBLIC KEY BLOCK-----
<kmoore@FreeBSD.org>
pub 1024D/6294612C 2009-05-26 Key fingerprint = 8B70 9876 346F 1F97 5687 6950 4C92 D789 6294 612C uid Kris Moore <kmoore@freebsd.org> sub 2048g/A7FFE8FB 2009-05-26
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEob9xURBACHaqCbAqwyIXO0HHHCAVYPqVkhhr2FIS+yTvVJnCQa6G1KIasT LKGK0Z/Ae+suMsQoT9e1Pw/zhErm++aRSYqdTzyuMUjEDXtgsfp27rdQZRNiWDwz 2/gd1nSEWYAKqUh5i0iJ89tkiL3JJx7/FD1+Nfp2sk318usUshT9/T+L6wCgmRvG A61Yo0rszOQexAwZ6PqE9fUD/3tGobQB17xQIca/AwUDyR2cw1lGs3S2ZN2G5xAT QL+h30wplhrrIO3lkyZQ7p71ZTPiAf5b5eTrXWrXVtO2Um3+wU04yhBVcmO9DeO/ F6SLVzJLCRyTSNUSZNmWrl1EOFWooNnfBI4Emjke46g89hIbhYlS+qRL+qN0ugpR SnfmA/9d/UiazKlhp3fX9EwYRQmOC4WXDxuWS91I7kH0xsbHR/BHFJbUHDr0shsB lNRmfxwaZjiC6oHsJE0Du6FcSncYSfAChLrt+fqGvNgXf4hDIjsUtu2d5sxgoarv EvaSwfh/gelNuTnsgQll26LaeYjgmJgwf4Hb7I62UkkPuU5LMrQfS3JpcyBNb29y ZSA8a21vb3JlQGZyZWVic2Qub3JnPohgBBMRAgAgBQJKG/cVAhsDBgsJCAcDAgQV AggDBBYCAwECHgECF4AACgkQTJLXiWKUYSypOQCcCQagomGK/P/P4OedoFUDw5ZY 2qIAnjRRTC0mRqUbIjaf/FWNuU2qtbiMuQINBEob9xUQCAD/zeiP1+Ru7ffCZwZo QTPjuYvm/PnAeeL2fBqN/Q367UuqR6RlqV03lo5nFxD1phheP0BmH6b0qyMh2dxi /6nq32g9b0Wb8s93pqYimxtujpNnWmZhwparaUm9tPyIGRdJ6wj8G43gOwyjDdwi GBPDAdSAqVZI0m+l59F5lsPiYJDGSkYENjLd6T7aAd0JzDjd0YLTx1+WLir6OrLG p1j81rBRCGRNipN7tGB0/pEB/mutU8GlDTTFaD1cWT4X3RGGP9MOH1UuS4wZXzJX 8duq+4fKlpKEPOyJ9R51D25a9V71Dybdx/5mo+Bsec8T5+N0f4hK6utrnJvSQTes vinLAAMGB/wNS78TRKqFdjz83F/LB42srwFqDCKz03Pns6Fzespha8zWKOTiNOk7 2WuXl6qWXhZ1aSithGzoWX3Xm6m0m3ZYk9wE+rDqT7Z3/T0tKiHmwG5z3QpuLOnp LGuBH/ra2gbyC+Ycj/faYXOz6Chf0e67bNRru9OGf289Q/EVcm39DinYBK1jrHcq xZ+b8jxtOWygo2D0SIS/hl4ljMDMaj/J8itwJXj0OyuoJ1IZkW32L4RN3jIXTUgn pGyhtw3wO4V5nhdj+YgvhP2VW1K2SVW1SqExlYdvB+HigKV5oHzTNluILcJgs4BY ntHqlJQ57QKxWImxvFZmS9MBaf69Tb68iEkEGBECAAkFAkob9xUCGwwACgkQTJLX iWKUYSziLQCeOWM0aLs+/NIGsNo/Lc2N4YTQ4pUAn0rL6J3fe3flPx5pBoj/SSto jjB9 =yaw0 -----END PGP PUBLIC KEY BLOCK-----
<marck@FreeBSD.org>
pub 1024D/6B691B03 2001-07-20 Key fingerprint = 39AC E336 F03D C0F8 5305 B725 85D4 5045 6B69 1B03 uid Dmitry Morozovsky <marck@rinet.ru> uid Dmitry Morozovsky <marck@FreeBSD.org> sub 2048g/44D656F8 2001-07-20
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =iYsU -----END PGP PUBLIC KEY BLOCK-----
<mav@FreeBSD.org>
pub 1024D/0577BACA 2007-04-20 [expires: 2012-04-18] Key fingerprint = 0E84 B263 E97D 3E48 161B 98A2 D240 A09E 0577 BACA uid Alexander Motin <mav@freebsd.org> uid Alexander Motin <mav@mavhome.dp.ua> uid Alexander Motin <mav@alkar.net> sub 2048g/4D59D1C2 2007-04-20 [expires: 2012-04-18]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEYouBIRBACKCnll/QyL7oh1g8bNwX4mX4QDz26jOjGW624VOCOb0jarxzV/ s8NF5V7ddCLMbf8wqA2QqeyrNm+e0FdsLbxVAN6NtF6hRCK0Uwc438toERXBLq5j Ss6Ofc3n9KBdTbUDfTp3t9Tda1oajF7JqembMz6cIWXmcU5P+7a5b48KCwCg6dhG X2f8H0s3WZkFi4gDXkUOMMUD/AxfkpYNv3CMGZx/6XVAlNltOoNRG2j41tn1Bhkz 3xgPueod38HbXewTESMVm1qPW3IdNLCrVXg8/TxeUw97h8d1Xa3wfX2DEDfUSCWp IyH+gAchvZxJebdf8UpGtXMrJPzVznMHmChs8pavhnZfqtJ2tplFEf18HLbvzU8r 0GpGA/4hNHGvKtts3CTV7XoQlQrWqhl9okjAUarLjrf2iCVsUhyE3UpXmp0il5bq mhfVv5b4FHUkrSipOsJmVSLgoc0muL9G0BNvLkMi3/vUi/6TOjANYOCnUF324cKv 9o7ojNylp6eTh79wx80tHt99ZgNh1butSlQAQSTXk0aLLbOSqrQjQWxleGFuZGVy IE1vdGluIDxtYXZAbWF2aG9tZS5kcC51YT6IZgQTEQIAJgUCRii9JQIbIwUJCWYB gAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENJAoJ4Fd7rKBAsAnR3+WbuhVRDu 7AVndqKop+Qwg68hAJ9W8/4LOHr2XjLT37RQyxPgtodbvrQfQWxleGFuZGVyIE1v dGluIDxtYXZAYWxrYXIubmV0PohmBBMRAgAmBQJGKL0GAhsjBQkJZgGABgsJCAcD AgQVAggDBBYCAwECHgECF4AACgkQ0kCgngV3uspZMgCfafiI8rCSzlLwyWRXCpyH smEYsgcAoMuqcyGJ9P1yzcddYw9SZUjkoj1dtCFBbGV4YW5kZXIgTW90aW4gPG1h dkBmcmVlYnNkLm9yZz6IaQQTEQIAKQIbIwUJCWYBgAYLCQgHAwIEFQIIAwQWAgMB Ah4BAheABQJGKL0sAhkBAAoJENJAoJ4Fd7rKJFoAoNe3pxIgHjKb+mjocFUrzkAn O5pkAKClil44JNQKWePpy+xNRNG8ko5487kCDQRGKLgSEAgA8Y2EXU8EbnSyZ5AL RyHn7axmxr7p2qzEkDI8EidMlJOxfyCj7b3t+5QbIbieb/pnDMGuXPc+7lcK7Owf pu9DTvWPdLRjvXNFJbuRH5mXVUdHS3j7GnAqqgb8ydTbUrKRwY2BijJaU8imXibc +ujXgO/ZVrvYpiXtZx38cwfoIDA+LFpQlLBUUkV7GRpBYcrkrVEGMrLBAPht+l71 Y/IBMht4z5VBFMxJ13TogMseOKKDrRVsxmMqbBjr/S23pVZqpjQYGwkNo96+JxeD pQGlbbbRftiuObXEZsk4yGp56jXTieZLUlq9L1ELkzHIjPhNoeudx/tdtgZPSwsp I6M7SwADBQgA2eUilFtIbEsAizp1Jd88J+2Z/dZ3M0LK7rqZuBVQdeJZbpYBfL9v +JEbjw1e8HV2goYtwkVgfP3tJX/xqzmwIZxd3wLLzDucPrtmQJfDDcD3fDBVvCeZ Z+EjaGp8/rIE/h0LCk9XXHjK+JOZaKt8tsCtkpp5nbAMaPRBrCm9sGB9Oyt0rrU2 /ryvMIf4W602iKDka5oUl1fhNP7R2lnkLRK8OPEPdboVxOrzzdBB8XN67B3kzDRt +nBHqFZNn6GafIYpvoJS1jqAskug2IjmEUIxDxEuD2EhIiayLAuwmGnR8d3iPVcJ /KF/URy/Y7PBtkE2amogd725uRTxXOXAA4hPBBgRAgAPBQJGKLgSAhsMBQkJZgGA AAoJENJAoJ4Fd7rKMlYAoNZbw8I7WBascnxVyObkqE5rLKxJAJ46TGlVlvBS+PXT L4EaOMcBYbTvTg== =ZML6 -----END PGP PUBLIC KEY BLOCK-----
<lippe@FreeBSD.org>
pub 1024D/F2CF7DAE 2008-09-02 [expires: 2010-09-02] Key fingerprint = 0532 A900 286D DAFD 099D 394D 231B AF20 F2CF 7DAE uid Felippe de Meirelles Motta (FreeBSD Ports Committer) <lippe@FreeBSD.org> sub 2048g/38E8EEF3 2008-09-02 [expires: 2010-09-02]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEi8sBIRBADJt1SLW/mX5HmXKgbG72GXupRR8V+lDbtquXx6dJ+3E62S9xFx KehNrX8YcYnp+dcuHktXxQPJ/BAzOnvPdHKgzdXMARO5ApOfQ2VDgZgAcs0dVEnn LILvxiwQ7YlyJjOTJwbcHBpsTdolhNooi2FEE3N5ShSMRlPoH3GXF1qdnwCgqV/g IlQTCLudKrApFqNIbDCrPh8D/AmN2MdnlnIk6d7zUgLWuu3coohYIYOxaZ+ovKDb S8siSZ5uaEZOhWHVLVGYXTmzLrCK7TUBKdK1sW7YrYKQdPjhYnYXrwS4AaWupWwX K+fZWTaZsJiGLbOIrszAd2hRHUgQ5VeeoM0eD9eyAWHp5SVi9YcixMUNbn5ERPu4 ppK2A/sHynDjmkXHXzuNwN8dwcUjTMTVt9bxGrLVJHcJUsK527dv6/UG1CfZYnzT nca4GNO42/FBjQtyJaTQd76aJQ/PSU88MMGuMUh9LYl9rRdMQKn4FXm/6t7NZOqx qvXzEC8jFw1BOvxhmykSEZDlwZFwQngDre9Ux68Eu6Nut554yrRIRmVsaXBwZSBk ZSBNZWlyZWxsZXMgTW90dGEgKEZyZWVCU0QgUG9ydHMgQ29tbWl0dGVyKSA8bGlw cGVARnJlZUJTRC5vcmc+iGYEExECACYFAki8sBICGwMFCQPCZwAGCwkIBwMCBBUC CAMEFgIDAQIeAQIXgAAKCRAjG68g8s99rlhsAJwNTFc1W0eu3Em6+RjD9WZWtX/1 0QCfb2riDssKYX42D7HhVjDvTe1BtXq5Ag0ESLywEhAIAOQrj0PRt1WOC3Gh1njF KDacQl1aJ5f52yaz0FLpu7igTRS/8ET1+uHvIwzcSbbG/4xWqPwirMxpNZwpFMzX 9l8bURIX5szmJ+bEl4VH+La1p+w31YswBn0PDTSYtWhaIn1LMXED4e2Kg/wUCpLT M8htMa1pg0F2ZcmvbNZFuXMd3BBAkvWrRJTYuDXy8HHnbALjUd40laUDT3Wi6FRB W3HFj5lIiEjnJG52iTSxWVEkoChy7l/qDQ0zsguCCZZvLfdQz2DAFscjX/HltuUK s/gkzVR4jZDVMQPqCATuCvDYHrDWJnfU/R317Eg2kp2tJrNibrnFX+ciISSuq1+t UmMAAwUH/1XXvFtLACv8NFLVFVWM9wA70ZTLjZEEfewbWRYgT1yvOChn7H2ef3mn I7/WoLF3ntm8Qcw6TcSrzVbZjgdWpS65Wc5YZn1rMb6nP419kjDQPjvB8RUA1g9v 7LuOv8qeqqo1/mT6PIh8ZnhWR42ei8l3QcbyGJMQGPHyUZk84qbd1TI9gO5GjWHZ LIi80DPb0cpazMCIgYjrqZsOoq4XcYJZah85Eu9jdqbx8aDNnag4NeO+9jhy1msg xC7WuLYPctfFZ3q5ZwdvvtfluyeKjqY5mzkAuXKbtK66yMLugU4NnR1IeS7oI212 NF2FmCRAkCMB26n8sd7xavpd9uF+6ciITwQYEQIADwUCSLywEgIbDAUJA8JnAAAK CRAjG68g8s99rkWyAJ9b53BhFJ6+49cr0IIZLxVBGlWNnACfX4O3OOhx8kClRzsH 1wm6VFjn7qg= =q3W+ -----END PGP PUBLIC KEY BLOCK-----
<rich@FreeBSD.org>
pub 1024R/583443A9 1995-03-31 Rich Murphey <rich@lamprey.utmb.edu> Key fingerprint = AF A0 60 C4 84 D6 0C 73 D1 EF C0 E9 9D 21 DB E4
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1 FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP /2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw== =QoiM -----END PGP PUBLIC KEY BLOCK-----
<knu@FreeBSD.org>
pub 1024D/9FD9E1EE 2000-03-21 Akinori MUSHA <knu@and.or.jp> Key fingerprint = 081D 099C 1705 861D 4B70 B04A 920B EFC7 9FD9 E1EE uid Akinori MUSHA <knu@FreeBSD.org> uid Akinori MUSHA <knu@idaemons.org> uid Akinori MUSHA <knu@ruby-lang.org> sub 1024g/71BA9D45 2000-03-21
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDjXWqERBACDCxgN9+yMfpm3yvkYp+P4Uw6xxPdcZ9RvnTRkBX9zXaRgSPmM zeZ63LpB99uVphVZrv/EdlyTf+cRdz6VXXRcTBloA/FsyY86IluBnWCH054WyXzr 7az5WB9yDbPnlwcSL919bq0UqTuQUlQswdQAoDQG5LNNZNa0T01ydYtNlwCg3weS I/nEJrGCXGy2wrjg8LiwQ28D/Re2JHQPTYqDEZl6wj5U83wT55ChnTrjPRbGmr/C UdJP6CZQg6+DXYGYulcp3oL4btcdFDRFglJzmQNkUYmqiVC20SMVKUctrOCAI60P 7VE40UtXz9EounPSRQQ1lSdMNeRwrZ9o7IcrSj0EBw8lw3d2WxyM2Rs2crZWfOI2 mu8dA/9LbmAw5sLk5Lo5i41nAWP76pyuGxSia6zMRdML6ynoC5kmyrI9TwW5LNU/ Lsq1Ru2XSA+CwSBpTt0vdwS88dDwPGxRuUHhWVpa1M5t7K7uYODB1cD5AyNoNnR/ lHpxfPZOJNdA3OPgfssN9K+PIuhbBU5xONCoAcdC9TEqSezfUrQfQWtpbm9yaSBN VVNIQSA8a251QEZyZWVCU0Qub3JnPohWBBMRAgAWBQI411qhBAsKBAMDFQMCAxYC AQIXgAAKCRCSC+/Hn9nh7n1bAJ4vkEQX0JkcYgltt0Vv5qkS3bGqNgCguxfhuEzZ vBzpAW9/XdstjA/DSPS0HUFraW5vcmkgTVVTSEEgPGtudUBhbmQub3IuanA+iFYE ExECABYFAjnly3oECwoEAwMVAwIDFgIBAheAAAoJEJIL78ef2eHu7RoAoKn5Lw0y C+/lju5+pV0WI5dmxTzxAKDJRtsRSTBcJ7ohvzztxZqyjfSK+bQgQWtpbm9yaSBN VVNIQSA8a251QGlkYWVtb25zLm9yZz6IVgQTEQIAFgUCOZGiowQLCgQDAxUDAgMW AgECF4AACgkQkgvvx5/Z4e4t+ACgnr8RmYw81/oC7MKS2CSoFb9cg6sAnjKay6ho 14iMG+YcFNbjxwGvSE9EtCFBa2lub3JpIE1VU0hBIDxrbnVAcnVieS1sYW5nLm9y Zz6IVgQTEQIAFgUCOeXLZwQLCgQDAxUDAgMWAgECF4AACgkQkgvvx5/Z4e5+zQCf Z/09J5FOgAqw3UrTTAzR6QWicG0AoJdlBcdUltEO4WV+q3FRlw4RVnA8uQENBDjX WqwQBAC09OxAmKbGn9FETdMA/5abvOY7JgNcFhQutEVnJ90mF/npBucWkCRbOr83 t+NB0h5Te+lV/c+mjPyOemfWdAK4R9zQsat+ZqATv4Vgiy0UbJ/5TPfSraNK+QkX nxcDrhpcJXZhX6VYzbWdRSn8xSZzPT19qq0BFafz9UhZKXnLDwAEDQP/dpZe0jWw rED/Kbyr8CDoEKuun/5gPi5xmNz9iJlyvcsdOgok7yen0HHWgdaZAGX3GzjpB5gA aISX/kK66s+NeM1XQ7YXpcI8naf0jPa6N3SNWjLf3xPxLbMk0SyaGnrnSQNikk/H Bk2Nqyn0kcEaaBbdfrgkuuQWPnBDrq2EdOOIRgQYEQIABgUCONdarAAKCRCSC+/H n9nh7oxxAKC+gMyhZmSZdTvT3a2Y0RDOx5kRLACeP3JEvGZAZuo1sJeEw504+jr8 1Xo= =M+Al -----END PGP PUBLIC KEY BLOCK-----
<tmm@FreeBSD.org>
pub 1024D/419C776C 2000-11-28 Thomas Moestl <tmm@FreeBSD.org> Key fingerprint = 1C97 A604 2BD0 E492 51D0 9C0F 1FE6 4F1D 419C 776C uid Thomas Moestl <tmoestl@gmx.net> uid Thomas Moestl <t.moestl@tu-bs.de> sub 2048g/ECE63CE6 2000-11-28
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDoj/ekRBACnO84k2i5lLHZKscyV8tjQSkkr26hasdbc/uyV7HTiPhMUjEAz Pamk+bDmy/Ls8k0SJ1l0vILBBd31G5VYtKonIrgp4vZ9gV0fBdCyFDXb8bh11Pk3 pEZiG9vJevq40OPvsThLKHCLNhZ5zLPp6gd0IHwRJ0LU94pouFXd33MzrwCg4gTJ K00Dw0w1hFtUsq6WjNC+1B8D/2WiEuzBMnO6gz0p/eJ1eZ7mvrBXLQZ0u5vJ3eg2 CCPrtS1ZITq3ICPDN6biEiMgtRmlYn/VYvDQqxwNE0X2yMfB/9sdah45zma9EeVn Iy8meaCFDLhm4aIYc1foUuz3WbCNlJFY5xYPXCMXLkC65xdybHKng5TXh6NOOWf3 PfCWBACPMotTRKttAuw5YcZE5VDrSXPYHu/jm2CpIVmrac7+kDj9pGH9sB7BdUxw vczqtAT0jk7MrT+u3FH9wBtEFTXl7ksGTmDOFWJgYn3ZOEaVaX/OqD89UNhrOA2v ZOaaoKMYxK/pszPdr1Ghd6BQCmYKtLBlFYiTDRM5UMVHTqN7VrQfVGhvbWFzIE1v ZXN0bCA8dG1vZXN0bEBnbXgubmV0PohXBBMRAgAXBQI6I/3pBQsHCgMEAxUDAgMW AgECF4AACgkQH+ZPHUGcd2xMLwCfdEkPZVBgEmYnlyOKfyTSslMhud0AoKDKZNXA huNslb4KF8yKWBNRwfPStCFUaG9tYXMgTW9lc3RsIDx0Lm1vZXN0bEB0dS1icy5k ZT6IVwQTEQIAFwUCOo01FgULBwoDBAMVAwIDFgIBAheAAAoJEB/mTx1BnHdsOfMA n1xd4f7iAe6id42DLg4W3fibsCwsAJ0cT2lf08RhHkT+zLVoubyIDoY6ILQfVGhv bWFzIE1vZXN0bCA8dG1tQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI6pO9pBQsHCgME AxUDAgMWAgECF4AACgkQH+ZPHUGcd2z+7gCdF5fq/lebn3/gp40O8xP/J0XFbiIA oKJP186L04qpSNamc/qG3gs7h3DGuQINBDoj/wkQCACl8M8ObSTJaOY4SgoQkKgB CkJJP5ScUpfYV9w3dxKL/77cyfghfYsnAWuA9yXJcjA0F+u+jRf8gS7OaHD9H9Mm pMGq54Aa0KUQaDbL/Jzf5zrKS/RASHzl1vYXuZB1OIzPfeAIx9u3UaziVEGXJha3 1KgTur+TU+F94ZFTi8uApq2VoNT6sFi/V2x79bxlLFr9M9yD/0+kMZKovWRODy6T gWJzzcdd//dkvKp22tNf6C2wq8Bu60cWR81+awgG2otgZjCPUs2Bwhqa5opeUqGn J+f+PXo6+m2UF21m1vLARENuumu6SXf3XqGIUiQbT6jCdJORzwaxeCiMfu0qNnUX AAQLB/9u9gZN0N0r21ZjM6ZRmDC/REouCdYHEj49+f9g/xLXCfacpWVcrK9lIrcg hxRE2mQ/nlQLeHroC3Dp1AfThKSPFX3PRD/9CcRu480imT84ljf+6vonAZ20Edm5 vVO+UoJMZQ2G+rWRRf4bDfwFoyDw3DsNmUL4yH8m2RpTxXn0pQtD2riJD8CBCXEP K95TYT4MomJ7Szg7O5/QLngfw0q6QdKRm1vEIP7r6t+UbVNp9+5g9qvz4aqm3beY pw1QCDHcqpDITnlTxTdV2SgNpF8JPg7joaOa36AxWwRzfLFyzyw/JGQE8RwJa8BN iTu0IrKuiF1biRxqiYO887GBA/8QiEYEGBECAAYFAjoj/wkACgkQH+ZPHUGcd2xN TACgkS0AGqqd2nLtWhpbE72tD660tv8AoI24cRkUa2op32mti5zfLLMsM4AZ =76WN -----END PGP PUBLIC KEY BLOCK-----
<max@FreeBSD.org>
pub 1024D/CE356B59 2000-02-19 Masafumi NAKANE <max@wide.ad.jp> Key fingerprint = EB40 BCAB 4CE5 0764 9942 378C 9596 159E CE35 6B59 uid Masafumi NAKANE <max@FreeBSD.org> uid Masafumi NAKANE <max@accessibility.org> uid Masafumi NAKANE <kd5pdi@qsl.net> sub 1024g/FA9BD48B 2000-02-19
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.2 (FreeBSD) mQGiBDiuMYURBACEgL3d4mL0pojugj8TZFEQef+MKkXB3lazrqV2ahgWqt6K24qr 5fZrGkI8vxmYR4VkI1eLfe0Q4LoBZifL5nJYEvMvWPmdLuYjp4iwjgBdzLnwr59+ k8+T/fohGDOqx45voCdq68Jmxg283zFGQ4FChMP3ZMlOPmFRIp01C84xxwCguNFG BVPeuM0y7JH0ucRygUqc4acD/jfe/UEjGBWxOCfZYOnXEp4NXWis3xRyUDO3cuoG 8M8MEmg0dX0onFuNU5yrEBFtzPw2GO6DMM8h5hJXdSWkiyusn05PGk/jVSP9/MD5 TYyqKL1tG/fKUgtevZSi7o1x/N0bgIBqmzd30Cqx29p7juVV+SBcKCRT1qloz6fc a5B6A/wJD5n3HOAStsWpZ6To/Apdb4A3PD4+ePfQxSICsHCFg/M04FkrG48So2qc 7dSq6UH3xLsoiRIUonwCQsT+PaQQMrZNKjfal9xlEFfw1TV/squ+oNE8E24Lkzxt 8Kkn86Ec5uiUlRulSMG9HJuWM+9Qu7TF76FWP8llVp6ELkYCGrQhTWFzYWZ1bWkg TkFLQU5FIDxtYXhARnJlZUJTRC5vcmc+iFcEExECABcFAjv4RDQFCwcKAwQDFQMC AxYCAQIXgAAKCRCVlhWezjVrWUEIAKCgwVSawCg1Lzrbf8uZdMAfeOWFXQCcD7EF tsdhbEV62AOUeQQWPr9de1O0J01hc2FmdW1pIE5BS0FORSA8bWF4QGFjY2Vzc2li aWxpdHkub3JnPohXBBMRAgAXBQI7+ERfBQsHCgMEAxUDAgMWAgECF4AACgkQlZYV ns41a1lUuwCgsIhWJdtPBebkV6w+NQ/8jlkJgrwAnj9lZkiTAgl1E/vcF7yPbY7f HlHetCBNYXNhZnVtaSBOQUtBTkUgPGtkNXBkaUBxc2wubmV0PohXBBMRAgAXBQI7 +ESBBQsHCgMEAxUDAgMWAgECF4AACgkQlZYVns41a1nv1ACggYgtKhaprmMs30oz yoC0NatFJ44AoI0XSPh2G9zHEjF8AyYAe6sVCLqvtCBNYXNhZnVtaSBOQUtBTkUg PG1heEB3aWRlLmFkLmpwPohXBBMRAgAXBQI7+EljBQsHCgMEAxUDAgMWAgECF4AA CgkQlZYVns41a1lYRwCcC8l4PdrwHKNrZlTW6vod6kYgR3YAni8iLUZW5Se6nTH9 WuN0XYPpZRG5uQENBDiuMdYQBADVzBBn5+1UQVCLS51y6eCD3TidT/uJAr+eeiWZ IbTmXrltNm5rGs7OT9QYNLhCFFPYKJxa9hFbrGpgserEFnqBfxcbMLa/wyIm9m/l MI+NNCAU4IpgDWtgjf1kjzwnJPwH69YzcqS2jlEKIjkCrEa/Bpr1Nvo4aLvqlTR8 tJh+1wAECwP/YBMEMx/zgTvS3Jtji6nPceRe8icGRHb4SD7MVF/WxYu5VK7wlmuw 9I9WXnHyYaL4c6Q49FAvwhkppByqJFL0txyJ8+nNa6H5mit8m6dcsCMG3NzyvxBP 082h/MWbJn3Xdg89lp4UG3UP8sV1oWyIchd8rqxFk/EVB7fVQWNz/gKIRgQYEQIA BgUCOK4x1gAKCRCVlhWezjVrWUlcAJ467I5lFNlkwcENe5vND+DPaWyreQCfddOu 6Va2/bf7Ln4TKyl17uRro7Y= =VmY5 -----END PGP PUBLIC KEY BLOCK-----
<maho@FreeBSD.org>
pub 1024D/F28B4069 2009-02-09 Key fingerprint = 3FE4 99A9 6F41 8161 4F5F 240C 8615 A60C F28B 4069 uid Maho NAKATA (NAKATA's FreeBSD.org alias) <maho@FreeBSD.org> sub 2048g/6B49098E 2009-02-09
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEmPtPkRBADEcSQQGME+Df6I9jnjUBNMxvX8aMAH0+SKJEn0xTZvu9WLQmJv Bx1Hh6AN8fD7OONFBYGsDAxbbgFnwxc/KPBctXHUxoTE3lRTFRwYJJKIKvrDhFjr qDWwLJ9TsUn/pDsBflPFe57okBlPgSywTLGLuurOaT7oda6Z2K0FOiALVwCgn/b2 7R19gm0uKjzsEPejafW6lZMD+wQK4qETffrdqRoVRnzzpTa+xa60kQxxsIeibffy dovqH7HIWeqiqDwls17zmbMc7auNliyN7VJ1bQ2C5SkojMUqgEsVle/8gfe0cWhS 2jJ8A3Xg+/IzYwj+TtlWqUkzx/b1Ck8v/9aRmLtTNo9OdC8H9Nu1onF3Cp0WqsiN gwNHA/4+8w5D5gouNWfuYkkzoQQ2jIFJ4zhe0GCb2MIrqKrf0N40NOcYFLi4eJ8F W1DAdQbQjfMMlYAknm7MBpnsagTqjS9MniPVygYUUre/xMx0tszvWdGdRSjEY/5U AXoCevBci0meKTm5ZSDb2RPOLezF/zOV82IY3T+OKXTHcLSeubQ7TWFobyBOQUtB VEEgKE5BS0FUQSdzIEZyZWVCU0Qub3JnIGFsaWFzKSA8bWFob0BGcmVlQlNELm9y Zz6IYAQTEQIAIAUCSY+0+QIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIYV pgzyi0Bpf4UAnjOqrSHlb4NdW+ulVFu3o8W1hbTKAJwIdn91S2W9V3ueKsbFqq62 8dPYsbkCDQRJj7T5EAgAuaHr5IuEXaxoUcoZryGZweRs+G2Oh+jsMIvMABVGMZJ1 iov7vSypm1EF6/cO3O+rn+Zcpuf4XKPP3TK1oKWLIYRgdkvTWwzVc/PGWRHdr6/S fo1B8/jr9tWW50p+s+KZoMPV/Rdz84AN8bNZVAMxNWXooYrGMxMvEDg3rX8KZW57 25KF+GlYYBoIXxatMYGlZKz2lcaeD7Mf9EFs9jtpyZ2lhlXjWu3NZBdf4ClzWt/C uQI2mM2oEX6oZEDCgWvGoIPKzMruI/lAPi8I4Q9A3fH7azEz/BHW6yqLcXfmUrMe jsGTS/ovpV/dyxqNzsVpt203ZBxSSkSjOOMO4OzBOwADBQf+LVc888G6GxeCJGxp X+uACx6ziuaGO2AIvfUWN2KlDEpiCHwKf1L4FBE6mKm2l9ZloNyisnL8nvC/lmes whiTQkiVgB014EDhR7IoljZQJwpJqWC6HCwED08In2O/fI4JX3XiPbUzYSmQSpd0 tMMBVBwkB3m8SnTaF7cnYrZVGL2oCrBxfbYYhxDtxmGnD3q1/me7dixUJLbEHSmj wXvORtzMuADmNuz3RkkEKrtHXgqtqYluZwb3VNlRa9T/MxMYMfMA9V8IYw4gQkM0 xEM4UOUuweNyXRUSyuvcLQJthhWiw+Yfi9ATzdbnbwh1rwwVOoIhcM4QHBgPhnir vrn/k4hJBBgRAgAJBQJJj7T5AhsMAAoJEIYVpgzyi0BpqXQAnjkUgOmypg8bF5kd ZDVC/M0s8sUfAJwIJuJHTepRSP6qVkZKiXF5TRMt2A== =Rtch -----END PGP PUBLIC KEY BLOCK-----
<yoichi@FreeBSD.org>
pub 1024D/E0788E46 2000-12-28 Yoichi NAKAYAMA <yoichi@assist.media.nagoya-u.ac.jp> Key fingerprint = 1550 2662 46B3 096C 0460 BC03 800D 0C8A E078 8E46 uid Yoichi NAKAYAMA <yoichi@eken.phys.nagoya-u.ac.jp> uid Yoichi NAKAYAMA <yoichi@FreeBSD.org> sub 1024g/B987A394 2000-12-28
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: KUHASIKU WA http://www.gnupg.org/ WO GORANKUDASAI mQGiBDpK8uIRBACY5SwFQXiqzDlO1k/syoFoiFIFl/Dp+QmwK2oovIvlBVo/1gbx EhXrKRrfC67KSxxdUsgN290v/VVTmq8Opy1/RF+RAdxM3JrUfkcm5+IBWbSUfXFP i8OXBVgh7wNENVtwwD52F+0CFIWZXkClaif4DGkf38V6LJ6hBIycxuNDQwCggXTT Kj5SP2hFC0ueyQtPDoJEgbED/0bPL9R08io82IQqksOR9IUy0OdFJkLVWLnollEY LGjXa/AHgE8L8oWU/2eF1WM4JrtVRdcKe0Ja2e9LuH6IonGAdwqUeeAOwA/RdGj3 63EglH5ugv4rZZKWZ3/piuNXvtq0bhAfl6zBHi5iUB4bgPVoVJGn3VyykPWxdqfX sT5+A/wIml11cFMogN3RXy/2Y3JRWeBtUCfdoRjeQPgK8++krm2Pr/AtHgcqNSjI W0slX4cLou2TEhV3BHb/4npsdaY0BzYgL7V1YggCv0Pu1s2D53Nzi30V66SRP0BZ OlNTA88WdMfoF3ttb04swSenG9X8dbpyYEdlvxNbbKKbUiBORbQxWW9pY2hpIE5B S0FZQU1BIDx5b2ljaGlAZWtlbi5waHlzLm5hZ295YS11LmFjLmpwPohXBBMRAgAX BQI6SvLiBQsHCgMEAxUDAgMWAgECF4AACgkQgA0MiuB4jkZz3wCeIi857V2zyRA7 gRVsx+DcoCLeC3YAn2G3gFd+v14iZHXrPaqpd1gSjjayiEYEEhECAAYFAj2pty0A CgkQFwU5DuZsm7CchQCfdD/itI8d/uhmH9A0upJYYoYS46YAoOAfpFKvAGe/vBpw dy40SxBG/qELtCRZb2ljaGkgTkFLQVlBTUEgPHlvaWNoaUBGcmVlQlNELm9yZz6I VwQTEQIAFwUCPai4HwULBwoDBAMVAwIDFgIBAheAAAoJEIANDIrgeI5GKx0An1kh KzDAfR7Fzba/V7DHq2BRLcRQAJ9nZFgBncerxFMYAanwJruIYtPnJYhGBBIRAgAG BQI9qbcxAAoJEBcFOQ7mbJuwe4kAn1E2VVFpLajGFYgipCmMgpxRXPmxAKCUa/ee BEW5LPNf8xhaeIGlAtPZm7Q0WW9pY2hpIE5BS0FZQU1BIDx5b2ljaGlAYXNzaXN0 Lm1lZGlhLm5hZ295YS11LmFjLmpwPohXBBMRAgAXBQI9qLhMBQsHCgMEAxUDAgMW AgECF4AACgkQgA0MiuB4jkYrnQCfUgkHO/ioUTHeBtYJHGeL9qthlnMAnikYzk6K gDV8cHI/ETcNoh542Q6piEYEEhECAAYFAj2ptzEACgkQFwU5DuZsm7A/JgCgvX8u hjU7WPofTfM2d11+j+ywHm4AnRS8iRNMqbP9+crcNzCRSQ7OZFqluQENBDpK8vEQ BAClmz0m/wuG01nst/7X+riyNgZ3j3oRurb9Fg2pb7wkci6nlhzCHTcFNCZiY1nS Vp+/3tRkC7HQPz3zhYo3ieCf12NUweJ8jhbZubp1fYY9ubKoj12I+LXTfZf3kA5G UD/n1nkAqxH2yP3eVz1BpKUc+Lz+5USiDo+XfrvfxQcZHwADBQP9GejakrIdVKcA /4UTWnMh8HK2b7tDLwLKyJg/8lagBkIAH5tPpCXi1qXuvHe+T9SjbdwW/lyxSARV FAz1ejp4QEWsAGQ/pchjb+S+iYvNq0VfzkZPqFFllLMaQc9mo6blgGgSEqLNpba6 gDmVTJZ5jAhVxFBhRPwchSdPP3ewVRWIRgQYEQIABgUCOkry8QAKCRCADQyK4HiO RpwtAJ0alZHYWdBCXaPF9G9HCl/T40wzJQCdF5K4aEEsIG1P0WmNjbY4PEAVndc= =NZ/b -----END PGP PUBLIC KEY BLOCK-----
<trasz@FreeBSD.org>
pub 1024D/8E53F00E 2007-04-13 Key fingerprint = DD8F 91B0 12D9 6237 42D9 DBE1 AFC8 CDE9 8E53 F00E uid Edward Tomasz Napierala <trasz@FreeBSD.org> sub 2048g/7C1F5D67 2007-04-13
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEYfTV8RBADcVRh6fWX1XI43cTrdJBctCOxf9jZ6eedmhajkpMRhg7b0JPPL cYL6H1x1xqKbXtKxWE+BzQfdDJNJhwjQIwaXityWHihnkw5XBCRMuCGrUuaW/pPQ 31EX1Am9d8k+ckUK8tPMNuWM8+ZYjXTJppLg20pIPBRwvmRR/hrHDhMvbwCglDGC ZfTHYkv36MFnkPHJH4iaQIkEAKoy+bcyOiJK0iuAx5KeF3CxP53Nd4sbsHKcbibP OsWJKKUHPlVTts6bUvM6RH+zUHOeWpXmgNvZTsvmoLU/E0I80BN5ngdOwV7oqeAk V03iltsBGIeBv5B0xxYDyQBuo52LV5CGZ7F65o1jGF8LWfZbtPh02gTmhYymmLeV QryDA/0WbmKavL5Dh7L4Ugz1JVIC6miD399IsLV+XewJjcaXnnngIplz0ZjK9hHx kuG4w3pi450z6gMTmpY1IPC7R158j/fLhygYLhB0sffXaGs50nizBlBoZNR/RZRJ 7Ik1Q1E4dV5kVhgqBs6qPCfAdVMKGTWpM3xF2uyFT5xbuVPxIbQrRWR3YXJkIFRv bWFzeiBOYXBpZXJhbGEgPHRyYXN6QEZyZWVCU0Qub3JnPohgBBMRAgAgBQJGH01f AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQr8jN6Y5T8A7L7wCfa7dxDhHm WYOcaZ3PiBCxbMyMeW4An2regIquPmK4ZyrJkfXGd7BmmgGKuQINBEYfTV8QCACv /cPnRLjvnYJdozvbzoBqC4m2sAmBClDV9cRtIGXu//ULZ0CnDmEByfp7W2Aqlm4a +WnDBlbKaP4td0uwvly3m2hNH3DS/7/aBaDYhPUeetmIP3GZrelGlQHqe1ldJuwD KEiR0ANagAikuSiO8Fv76YY2dFmUSWh6mNd6+/F6hYahByJbDXrsYNSMI7BtpH/C fPaSew66982uu86IGIZPREfKSYouLuuHPUwrGRbcwyeIL5y/0i6Eyxi3JuPHCYSa a0jX5VQ8Gn3P3SukTdK+rWaJQMlzjbdaZknB/GeRDEc6ND3eqdmQa/PdnkGVwHeI S17IutKHDCsxDqSJgak7AAMGCACJtwmr70SqnOxtHugDB0G4tAEN+poeol9zfEnE A1nZImvDNLUoX11YZRLHCc9nz2V7HIzTacNL8ue5DenmtSs72S3zHM/DnIhXjx8r hBFrSW/DdJB80LLcC/NhRcl3U6sof4nzYuipkgr7evAeoZqWpHiYcuag0ZRRH5Jv 4Yh3R8zFYAg2NSKs2Q3CCX4c0vs1boZ1f2x4QQhxTpsDkjJxGPJ8OEAR7W5BjDOY KZBL9+02bzJKnOcbrtRkbylGZAQCxX9DoZDGHSCqaUBZMJZzWauW6xcwd4s91pMQ MVG1u5WHvZlOEo1Cg3Y9QSyehMKkcLwyuBj2zP+ijlkIBuFhiEkEGBECAAkFAkYf TV8CGwwACgkQr8jN6Y5T8A6VnwCfZdSh5TaDbb0wjcyUkVYAWZIo4n0AoJOfSvnF MeOHsJ51PEblZGwvjW0k =hc/r -----END PGP PUBLIC KEY BLOCK-----
<dbn@FreeBSD.org>
pub 1024D/FF6916B2 2008-04-09 Key fingerprint = 6540 B47C 54AA 3EBA B23B 58AC 51A6 8580 FF69 16B2 uid David Naylor <dbn@freebsd.org> uid David Naylor <naylor.b.david@gmail.com> sub 4096g/77FA885C 2008-04-09
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =0MGk -----END PGP PUBLIC KEY BLOCK-----
<bland@FreeBSD.org>
pub 1024D/D004116C 2003-08-14 Alexander Nedotsukov <bland@FreeBSD.org> Key fingerprint = 35E2 5020 55FC 2071 4ADD 1A4A 86B6 8A5D D004 116C sub 1024g/1CCA8D46 2003-08-14
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD87tOARBACkfv0/19ar/kUNsj2vL+APjo/cx0A0bubEmaPhwNuLOjtafdNm /pUULYi28lDVDxQJ8UM1voqrCcue+finCyy+k2L0nR37tlUA4t/+GH4gq4y2xL7S o/D5DqHDA0cTDAIQCbdD/rj3Z7nJw2Vkn3tAwZ6NUXV7OdLS+csbpJIjmwCg0HB1 tzahpgegUe5XauCly+NXNMMD/3UcnNA7kBKSZMcuOVq7TkqYYvQZPoroK3yYcAZL Yo4WoPEyjtlD/ZpZVysQiSMxLXRHjsEbMAMZL7Tx/Sav01XUiBHBGDHXaWWVdqmg efxtBeoG7MZxAAXBLfcSeV0bjkd9oGWW/inHrl0NgEljZQqo1kbIEb5asooyT18v vZgjA/9l8xZdOlSJv7Ct+VGrfMStMmpBCn7IRSjeJRq2pNe0pbJtzXAnAwyrB62X gF6n7ONKdLk/WPihRdfrc4BZnNIWZU0q5P11rOENQEnToprAOYebhmS6cY0lx0SR M00HVTTgzsNVWDy9h+uOobicBSHPh2La7KGnFRtMb6pZFg5Y2LQoQWxleGFuZGVy IE5lZG90c3Vrb3YgPGJsYW5kQEZyZWVCU0Qub3JnPohbBBMRAgAbBQI/O7TgBgsJ CAcDAgMVAgMDFgIBAh4BAheAAAoJEIa2il3QBBFsAUoAoIGf7gn1DPL+Miw3/2W1 YdJPT3TjAJ9LOVjgV1mZks+FjRdl1IETcJ4fPLkBDQQ/O7TjEAQA9yIaEvU/Vbj0 L1xFjIOGEyM5vFvn5xP2LibOI7hUH+cMDaWkBgrSLqsI7k6P3HSTVWpkKUTl+vJe OJnIx1gFE/WJDPK5trnjzHQI9kWf6j8EREXCFuuvDy3QhuJiHTjB+I8IVYh+oiXl 6SNo0ekvQd6KZlkPUXy8rczb8Y+A7GsAAwUD/iPYrIWC4xSX8kL6HFjaE2fS42EW iyfyb7slFSE2xtRf+xZyBa2Mu5XQsg+vJcSBsjrxpYdd+OuyTLuYRsYvuLZnB65H tTli1/ous2J56useJyeik9wJfFyZBlOtmw1QFLxELly+XgKiyGRNkTrws+smyFjC GWwhlhc40r824oWPiEYEGBECAAYFAj87tOMACgkQhraKXdAEEWySXACgwFVr9ZgH TYnmgWGXAmQWvJV+xAQAn2HlGDmOpuTDzfO5PvXOOWnFjvIt =bcPN -----END PGP PUBLIC KEY BLOCK-----
<gnn@FreeBSD.org>
pub 1024D/440A33D2 2002-09-17 Key fingerprint = AF66 410F CC8D 1FC9 17DB 6225 61D8 76C1 440A 33D2 uid George V. Neville-Neil <gnn@freebsd.org> uid George V. Neville-Neil <gnn@neville-neil.com> sub 2048g/95A74F6E 2002-09-17
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD2Gwe4RBACw78PVfE2fA9U0mISJrV1ohjdkzVTly0WQ/YwMgyB/J/Z/M35G zIc8yKi8YR/6QYGqgEzeKAhrUIDyBfudhaJ527gyR3Xi+QHgWMQDvd41NlqM5DBn yIVKj10DmDYjcHm29M1OHAkXKZT6tHCqp1dKFD7EXtY1bOakvN7TIKld7wCg6AS/ iPmIvGE7wpFlcFkYIjjL4ksD/iKpKneEwB7dEksyDQX8l18v58x0lH334WDgRO5a X3Wlc4He8b3kWzBWK0z81XE8Z7ip0Io13LHhamLp1P1eDX4sWKQpJmdRtHziC9R6 4GwW9P7aCUCCf91XxaYEU2j755u1Zby3gF1tbookwO1iXQERYuo3ZHezH1bkdRk2 HNecA/9+HCfVESjRFPfOEVqljx+Lm5atTx5VX/D/6iprDUARn0YgW5xrwM8doeNI UxkBOUszEUPDpXPnMI5RWB+0siQhZl3yX+lUPtASrEj84rpOSXZtNPAkHit/iwva pW75gZjt9yN7IhVQVw8O2OMTRGNoWsshzKzznqxNP3p1JYYq/rQtR2VvcmdlIFYu IE5ldmlsbGUtTmVpbCA8Z25uQG5ldmlsbGUtbmVpbC5jb20+iFkEExECABkFAj2G we4ECwcDAgMVAgMDFgIBAh4BAheAAAoJEGHYdsFECjPS6hUAni/U8Zbrr+TFHLt3 cLg0VWnWxCI/AKCNqxRmA/HlZLPRzhVCQODgfbOG4LQoR2VvcmdlIFYuIE5ldmls bGUtTmVpbCA8Z25uQGZyZWVic2Qub3JnPohgBBMRAgAgBQJDtkW7AhsjBgsJCAcD AgQVAggDBBYCAwECHgECF4AACgkQYdh2wUQKM9LtQACfTi75crWjtxxVJUmGSn2+ CDnlCesAnRqM+XSv9/KnZ3O/GRtpkNwT9NCJuQINBD2GwgUQCACvJfoCKfRo3y1J kaisLLtSVsqCeF1mlwfBGyvD0Lu0VnDGuy9aHExafNEbUaW+OQe0YXtZeX70CUPF nizBcDEsHEj1pC9HoZCSoYXtqORBa3ZIUwz+jJbjHJErs7XM/EshhAollC14rXKt K7+UVCw5JkCmialF7LAyWgqeBilwtKUBpIaXquf0/qws+uOikcZb3UttamQFUW0Y l4KKHP24cvCOXSlx8Kl9l2rQzfedjQPXI98zkcR3SEjZ07cDs+mQOTax2OgVS3F2 nDUEqLQmAiftHFWQ0h3RBpEYLGTNd3gXXxJPxZdR7YIBnxvJ7RZM5qGgZfTc0Jm4 aM5s+As3AAMFB/0dVB40Fvk74U6mwHLMwEkzHiZoVVZPBUMsuqb3FlgZrMYmwa3q APNhPhWSO9pLQlPJ99nFFj1lRUU7OO/oihsdKLEfT2CT5tqa6fAWoiSQIKBBbkrm bQedeXPWtvJezS0FY17rOfK8242Lnq+djS8ihBxSKpCVbwWO1DPktu6hGzWQz+x2 B91jbMfM9/n00xEkZ4Z2H0dSZNY2WKqK+MkqAiYf6uJBs7BZV391WWQ1fagCP/Tf HPM0gDnwFfqSJmxJzPm3upTmYgoSRqri7NH3Wec5pY15b67JFHMpMFbgauEsiDSi CCk4YxHfge4SMe6noPICAjN6PCkIMDldxi+ZiEYEGBECAAYFAj2GwgUACgkQYdh2 wUQKM9KJgACgwzfFmUB4diy5sTzLVLE3TCqwnJYAn39ByQnv/FeLGSY/blYrVsQK aCpC =SotO -----END PGP PUBLIC KEY BLOCK-----
<simon@FreeBSD.org>
pub 1024D/FF7490AB 2007-01-14 Key fingerprint = 4E92 BA8D E45E 85E2 0380 B264 049C 7480 FF74 90AB uid Simon L. Nielsen <simon@FreeBSD.org> uid Simon L. Nielsen <simon@nitro.dk> sub 2048g/E3F5A76E 2007-01-14
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEWqLYARBADUgEaHYK73qi4nXVO1DfcVKqzWZw0lDYXv3mVQO74Y41hP7QV4 IyvRuuWmKK0vm+ibh4WQTRGhqeSr+tDrgUIqs/tavDVx27DdBeOi5fQwFiyM0s3B 1o3VOzfmW3nOEAEEfAd/zQJVrz0GG6ao22zFSVRHEpJle8QD/HTsZ5sWIwCgiYNX Ok6oK9IdCky3kl0xwE/wkpMD/jKoZaj2/rc7t8ZtwBf9mQFECou+SsM5YFFMx2JV nHShx/6z/d1PWu59fnPOP/t+QkqBa4ds5msot4wJFqsFwuTmtCYySsK8j9yBbh6B KH2Iyjwnr3IFU2PopIxzscuGT4EKbLes925X6tjCfx+r4uGIVSJ6Xzu+9jGXK0KI TZshBADIuS+wneCYZ1Wnc/cwaG3SMXaVTOkThQS+l66o3BfXX77TN0HbjB+/CmP/ lWjcUv4tTYfmI5kQg4pRA7rSEsMBwec19CIy+mf9QD1HDVNGex1tGdGNz7oaOvwm oT2nug8mCt+77q4ESQOmfHzLjIQqKh9D8zX08atp7EVhHw2sH7QhU2ltb24gTC4g TmllbHNlbiA8c2ltb25Abml0cm8uZGs+iGAEExECACAFAkWqLeQCGwMGCwkIBwMC BBUCCAMEFgIDAQIeAQIXgAAKCRAEnHSA/3SQqxOqAJ9qfsJx+6hT6qXy9k0Hkuto pyh+lgCfS+cAvWkzwcTlZwmj7xnVMqex1T2IRgQQEQIABgUCRao0HgAKCRAV1ogE ymzfsoOMAJ4qsIQaHkhYT6FB06o9Hjd0JElbzACgkPVfATTcp5dDhiry+UMCPxfl 4Wu0JFNpbW9uIEwuIE5pZWxzZW4gPHNpbW9uQEZyZWVCU0Qub3JnPohjBBMRAgAj AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AFAkWqMP8CGQEACgkQBJx0gP90kKtq rwCfc6UlwvCI+OQ8PV4Y7xVVNK8ZWLsAnjAOOQET1C1XacStkK9icK7u/n/fiEYE EBECAAYFAkWqNBwACgkQFdaIBMps37LD1wCgmeJUFusBpliqQMpOYaP3KL9/HDIA oJox4FwHo8yhvqG7ww92FMeknNCxuQINBEWqLa0QCADNQVSiZOL9KwsEGkCLtUGQ l7hmf9iuis/GxokTE/9aPYiCKx29wjo4b4pURS/gHdNGU70KNfqli96Q1zlS9CGY KhQoce0ZDOxpO/6ZZzaOtLw5x2/8M45BDJU45STx54+F/7Lt3hZMNMlNvjZGF/W7 f5vcsPHqGAyFjDkjuL8QQqhsbaPsCTlqngFYh8/4F06+cd4GM85xGu/LM9M91TP6 9ulvz4H/5TiUNvDjt1e82soRhwY9bwHxq7b6s3Q4Wgwo9l2Y2oW4T+TVpcCvgu2D vUSXo4U1ygPFl/CQ2Mz5IEp7e0aanzOU5FhMeEoAkJewRq5747noEcnygiPUuoOT AAMFB/9KyjWpXwovVjmNITIB1JPuZSO7NLhA10SpeFz0YXJVIiteQcHnUHOUn+7i tO8XbOg79a2Pz/5tLuX8YqNQQjODFKpFnFymlFr+aPpzEJPoXWHG1FkcM7rjmLpy gj6eokmEdQdr5CflY+IkJMNC0DxDfhsI17fQVAsaScWgnmSgfCNYT7uPFw8K8omH WawyIlZuAKa+l1Q03IFt0oDLqLrcMK7DnSJvSkyM7WcH+3ObsMaCXVziD9LOlW5B M3mZyXS3Z5A8/menv1lRYm7kxCt17HEmhxnHM5waqFyK0y++X86lNpwmBQZgzTN0 2bCE2wlPqyT1LCVu4s9RAyET4hy6iEkEGBECAAkFAkWqLa0CGwwACgkQBJx0gP90 kKt1pACfS9WAfr2P8Vx/ps3WYdd8QYumnQsAnAwoaIe1d968x4FIKOewpptF/JdB =ggBj -----END PGP PUBLIC KEY BLOCK-----
<rnoland@FreeBSD.org>
pub 1024D/8A9F44E3 2007-07-24 Key fingerprint = 107A 0C87 E9D0 E581 677B 2A28 3384 EB43 8A9F 44E3 uid Robert C. Noland III <rnoland@FreeBSD.org> uid Robert C. Noland III (Personal Key) <rnoland@2hip.net> sub 2048g/76C3CF00 2007-07-24
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEamZvMRBACgUM3B+Z/7yw5DtYP+4jNaSvvJBNPtLbHeCcXzAytD/Le3Tx/g /joJFJZS92agbQSt6p9SPnw1xguQ2YMdBQ5LFbE5ZgrXnDX9JUWjhyjTPKRbkFPx 5G+JkTG9I75/ZVq6AhcOjXwsq/mkANhu87uOPRO2Uf/e01o3CplYIjRVPwCgiqwz wycuIxPvmWX3ao5gkV5iUgMD/2cVqZQ/uareIN2HF559LZkfjGdBA7U4H1cOD7hr pK27HTNcSAMpHP368AY5nSEUezQ8iOArCxx2xYMIvyxeaQ5wFgQ0kuwb21JieUdm 6+cQ3uynJMSVVic5T4qoyC3mpu00VNBpCLJIk2zLk8CPDPQot6yB41622xXXHaix 1efSA/9oJBP+6Ffdrni7hxAEgP2uG/lXQ/oG67UljMC1LFkiV0irE9O6G5UXFEVE FOQfXmXqLRoIjWaqDLdfADerSl6jeva70UfbiGfxHHkbltMZi2v3Xd6H2wmZKcSl RDYhdvNIhNDXfGAoaYneHN+JWYPDYebG5MyN1QyU5+kB7n7grrQ2Um9iZXJ0IEMu IE5vbGFuZCBJSUkgKFBlcnNvbmFsIEtleSkgPHJub2xhbmRAMmhpcC5uZXQ+iGAE ExECACAFAkamZvMCGyMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAzhOtDip9E 47ceAKCI+rqu84IxKD8Rb+a1hL/+NqHotACeIg6ZGwFCNA2OOUchxF3hXvJ+mfqI RgQQEQIABgUCRqZ50wAKCRACwq9DxPQf7Ay9AJ9xShA298xcySmevKvX8sWC3LQ4 iwCfbsQ7+AB2L4j25YgHK9CjF6f8s2K0KlJvYmVydCBDLiBOb2xhbmQgSUlJIDxy bm9sYW5kQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJIhOEYAhsjBgsJCAcDAgQVAggD BBYCAwECHgECF4AACgkQM4TrQ4qfROOE6QCcC085r5aDgvzVDPvrZU+pSitB+BgA niwufou7zDg3AJGyf1MeuuFaZ1r9uQINBEamZvMQCACOvnyHYPRaWC7fFfrdqGxj C5ZnjHjYTg4vIUgVmPE096H+WflesmgOZ8bQH6J+3Pzpf+l6HimYtF+gMvDLIz0I HD1K2z75Ne6WlPKh8Is4lty1+knbOIDLqCSgFWcU1hAkj+Yr//oqUTlJ9qIrghoj L4w7QdMHGb7jMMLL/VHg+MXnQliD/UFAk9oF+/UbTfQwsanJXaydby0yjmXecyMo X20orSA/UKJe59Rc7sGOHf7uFoVByqsWQ/yesRmVsjxMNFGNMz1ekKFKHop7xcAj 8DLYnrvdilD3MuC28USAZjSa2b84+oQJADQL1r+wT1bqWCEUvaIqf64b3Tpt8bIf AAMFB/9J9pOfPljyE3D0jy2azVr41mK7FG32FBpz4S1SIeq8DAz9OI+XuCoXd2Ol FA6oSepyBxG1Cz2dzhkobE3COPzwS6jRzPdsmZtkJ1Lp/t7w0FSMlOYqNkdD9OCb OxraGoL4PfoPgCsH80dY/On7e8COQs6rRPTOmx+FGqkdEaNXVyF8A7EoIUNi881j Cn82QjfR4pwFJ4KNeJRt+kBVE2j//VmsqlMcc1xBPzSwcO2YaURhF90qB9ql+bZx ENkoYgqdbkQwcPugdKJm4GzaX7OhdGprjH/E7Yj7fFmXhE2VsyQ8heGjKrRHgy/g 4mTYKTTJnYHSXO+MThJ6JPwcgHxUiEkEGBECAAkFAkamZvMCGwwACgkQM4TrQ4qf ROMFAgCfYpxRT6ReISfiSqGLMBQndCh2ol0Anie8hp/BanOvY2jOiUUcfvyhIqrZ =bQIC -----END PGP PUBLIC KEY BLOCK-----
<anders@FreeBSD.org>
pub 1024D/00835956 2000-08-13 Anders Nordby <anders@fix.no> Key fingerprint = 1E0F C53C D8DF 6A8F EAAD 19C5 D12A BC9F 0083 5956 uid Anders Nordby <anders@FreeBSD.org> sub 2048g/4B160901 2000-08-13
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDmXNAsRBAD0WcmPy11DRvDsEpadBPCATmPrvAImfj5XjcxBAJlBJoc9fiq4 8OcnipVdId6STdVKvB3K3h9aNsb75+rD/W3nMi8MumjyXJoHAf8d68cnjppizcPd uQPOy76lkbiyV9OYBtaNQqmU8hE8MTr5Kew9NBCoC4SB4NX8kVh8iglrZwCg8J4F ltBYDz+Z5ZGoh54fnYN6IAED/jO7ISCvWbFtnzCw1FOghcgueqrWoy0OYKq8ZfuO m046fuIlHcswJOKLLexTajsYAC0WWe9H3SvKvv1etexMh5SsrgWTsSuIvlPfG4oj D5vIYqvH5NiqJdh9qiFEzGsv44jgESDVy9qaErbXRVe9htuRZqbtEPnB5cRRwTr1 WhfuBADW1VLXj3UGw4OeBBd5KPIYXCx7RKS4nfrlBCqMcIaiD+K42U+7PXEJB8uM 2sJ6uRYs0j4tTLBbDC2TC1QfT5NIVLG5wWkIh+jL7PODH+i4LF8n0pQyuLwJOFAx s6RIHNPB2fdI5sqB9lMIBszlb896wVJf9PPWFAt/5Aekw7eTLbQiQW5kZXJzIE5v cmRieSA8YW5kZXJzQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI76xZsBQsHCgMEAxUD AgMWAgECF4AACgkQ0Sq8nwCDWVZnYgCg4fzk40pYLg3iNayO9dDNp4yHS/MAoLi/ WCYhNOS0TMpap9SQXC/2e0MZtB1BbmRlcnMgTm9yZGJ5IDxhbmRlcnNAZml4Lm5v PohXBBMRAgAXBQI76xekBQsHCgMEAxUDAgMWAgECF4AACgkQ0Sq8nwCDWVaoNACd HR57Uuyyti+OqVr4zaVEIgg+bYwAoMcFR3xdqArQmp561541p+k1IBUWuQINBDmX NGsQCADRkDqg2uW9mn5YCXlzx9KlhAfPRny6kF4+B+ga0ZaIzJng2pY8EsAxKn88 yH6ERs/PYdsy/AyksG8vzuc9CalW8JFEc+kvtJIL0HhBonlInaeUWHPixGEcOPcW ab8dPhW3zfEgOqquky21d8Zg+G3Z29tmKGcYKSQgt6W59z7vITK7+gv7tOGp2IpZ 1kGqPZn+JqvB3n/uWo3rTxOGA/tduMwfESA5gHmEzKmU/17yIkE0SflKOp0VIGdl Fp1A1ULJDDVXjtDkxFvZ1I+WpqF7p9FCgy/OHUfUa0py3uHIEKMahqpAZ9e8D+GI nGizPR33ZY5PfM72ABXeGhFnweP/AAQNB/9HPBzxoJJFJNLyosSlI+Wkmh51K/nC EawQG6a+tgL6cPHgJQkgthPUywkI+2g7SUSurgPz0hRCPg2PjHP3PwVhjKzUgfAj y9eVnu+JSpst/a0Y5LEQdNnwG+Y+Cs0q9xj4T1VXw8B9fA3y1wS1a13zCQjfLrZP ziIGjHIBvpOFrSU3ML1rRaVfQpm2wQXsGHzjkaZq7HQy2EOVLzik34XkPBY1DrnY nSEwSurfjTrKTLNYsN53xCGwJ2w2347qXr04j87XhRmGCJQ/Nrrin4z4LQ/zNm5Z bErlts8PAfR13kqP7rx/H1n5obhpOoXUqb4Rm94c0r/s9JRah9ppgADRiEYEGBEC AAYFAjmXNGsACgkQ0Sq8nwCDWVbTvwCcCG0X50Tq7V4NeGgREttltmR7UlYAoOgK 1OFsIdCCq6JjrwvfN7ry3pwc =clge -----END PGP PUBLIC KEY BLOCK-----
<lofi@FreeBSD.org>
pub 1024D/6B2974B0 2002-06-06 Michael Nottebrock <michaelnottebrock@gmx.net> Key fingerprint = 1079 3C72 0726 F300 B8EC 60F9 5E17 3AF1 6B29 74B0 uid Michael Nottebrock <lofi@freebsd.org> uid Michael Nottebrock <lofi@tigress.com> uid Michael Nottebrock <lofi@lofi.dyndns.org> uid Michael Nottebrock <michaelnottebrock@web.de> uid Michael Nottebrock <michaelnottebrock@meitner.wh.uni-dortmund.de> sub 1024g/EF652E04 2002-06-06 [expires: 2004-06-15]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 isNkDxI+R1w= =LE25 -----END PGP PUBLIC KEY BLOCK-----
<obrien@FreeBSD.org>
pub 1024R/34F9F9D5 1995-04-23 David E. O'Brien <defunct - obrien@Sea.Legent.com> Key fingerprint = B7 4D 3E E9 11 39 5F A3 90 76 5D 69 58 D9 98 7A uid David E. O'Brien <obrien@NUXI.com> uid deobrien@ucdavis.edu uid David E. O'Brien <whois Do38> uid David E. O'Brien <obrien@FreeBSD.org> uid David E. O'Brien <dobrien@seas.gwu.edu> uid David E. O'Brien <obrien@cs.ucdavis.edu> uid David E. O'Brien <defunct - obrien@media.sra.com> uid David E. O'Brien <obrien@elsewhere.roanoke.va.us> uid David E. O'Brien <obrien@Nuxi.com> pub 1024D/7F9A9BA2 1998-06-10 "David E. O'Brien" <obrien@cs.ucdavis.edu> Key fingerprint = 02FD 495F D03C 9AF2 5DB7 F496 6FC8 DABD 7F9A 9BA2 uid "David E. O'Brien" <obrien@NUXI.com> uid "David E. O'Brien" <obrien@FreeBSD.org> sub 3072g/BA32C20D 1998-06-10
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 wFQ+RbHSXThyO1HZCYdfSaaYVfrrLv5ooTBRHzP5DlSXk13nddBOE4g/AwUQOT3B NOMeMj1ArjBSEQKxUQCfY3XjdW3Yun2hWKmKaPpXDBKonz0An1Wr4nbjBvlsovrs eysWYs1ovDgKtCdEYXZpZCBFLiBPJ0JyaWVuIDxkb2JyaWVuQHNlYXMuZ3d1LmVk dT6JAJUDBRAw9rraP9k6yEHOCYkBAZjmA/9lczxVp0UjLAXM3jfErQv2dzpLDAiT QVp10pi+a8mAzPVCnmCfcNy4fQJbInAfe5FC8gxBe9DnsjLfHh5vlZzDHANpbq5P MLW5C2igBoAg0Im4RpevDhD664ZgYgB6HXHhPBSB3Gaarnpx+R6JpfDBolSg6Boi IN3q+kzftlTaDIkAlQMFEC+a5SFlYKmsNPn51QEB/tEEALKURfb7Y7metDHx5oV5 LybWyV8cTJKINUllX8HDnz6zZQ7bMYlQ0qsqRqEIDMpMk1tojT+/HI4te21uW0T/ FCemdm7leZM6g38Ne358L8jY/34iz0bIFeZjDzLoOKW5C8wtG/N88voiE0grVR3e iFEmtwWT5lRaV+DmKYQ4kXxAiQCVAwUQL6UVDceLqoSSZB6ZAQFokgP9G9xfWcKj CxbEr9TAEDsKIsNkKQKEFlfqGuAjSVWOBqEIyG0Wb1pZEQKHI379aEK9nVNSsQ5m Qk/E6JRvYENt9q5uJ9mp6+wPUVYt83YL7uv1YJJSy788tdr1esutgiAeLNmNMmOg Rw3vz8iKYJozmSyDSK/HwHS7zZ2Q9K5hpDCJAJUDBRAvoGvwym8rg/wMAtUBATFj A/9h8jSR5py9wPy6WkjsYQbml8B2fVjsLzoQbMI+b5IFYeDkRYLTnSLJKzuK8zHn 1aFeXIhD0CRY5PC9jMAu84I59iE90x95uLPAH00rSJam2gEqPovRYcinADluivOT XGAn5qN9bKlmdsFNLMIFs/rohnIFab7wG3+t+i+8YYY2YIkAdQMFEC/kX5DT8j9C J2rqEQEBOFcDAKcdXpMcMjw+uSDwNc0pjOEYkfnpaW6MKnOo0qbwALmuSn/l21+J eypp1kr9VeWKn9tcUHucBHyTzswxeu21jI/KUUIRzuQsupgnop5LyNNrpDjxbQvN uiBIX+jAVQvxsbQoRGF2aWQgRS4gTydCcmllbiA8b2JyaWVuQGNzLnVjZGF2aXMu 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 lSVmAKDF3kyQAZDAyz+21MQJnmJ2O5dFJg== =cMCa -----END PGP PUBLIC KEY BLOCK-----
<olgeni@FreeBSD.org>
pub 2048R/6450AE47 2012-11-01 Key fingerprint = 7133 AB4D DFC8 0A0D F891 B0D2 90B7 A98E 6450 AE47 uid Giacomo Olgeni <olgeni@olgeni.com> uid Jimmy Olgeni <olgeni@FreeBSD.org> uid Giacomo Olgeni <olgeni@moviereading.com> uid Giacomo Olgeni <olgeni@unimaccess.com> uid Giacomo Olgeni <olgeni@colby.it> uid Giacomo Olgeni <olgeni@colby.eu> uid Giacomo Olgeni <olgeni@colby.tv> sub 2048R/1988BB4B 2012-11-01
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =1fdp -----END PGP PUBLIC KEY BLOCK-----
<philip@FreeBSD.org>
pub 4096R/C5D34D05 2006-10-22 Key fingerprint = 356B AE02 4763 F739 2FA2 E438 2649 E628 C5D3 4D05 uid Philip Paeps <philip@paeps.cx> uid Philip Paeps <philip@nixsys.be> uid Philip Paeps <philip@fosdem.org> uid Philip Paeps <philip@freebsd.org> uid Philip Paeps <philip@pub.telenet.be> sub 1024D/035EFC58 2006-10-22 [expires: 2010-10-13] sub 2048g/6E5FD7D6 2006-10-22 [expires: 2010-10-14]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQINBEU77U8BEADNopKL65b7L+pfgiiY2zp+5RS93iScvGA8ZOqcXei1FgT0uOtL 1xj68c17EsNmBif9q/h1I5PDQYmn9GrqyITNevQZ2ZMRScSZ0I4Ly4nZtJdgsT8V lEnObIknaoERyEtNabC5h6PsyZpIFIi/oYpoYT6DEeUudVUJFi5pY96XNzh6fdPZ cfw6N0mED13V2TH9twV4MeorwYBSE6mFE09vM1yPm12tiHFE2+EprGJpXttyrzrz D1KGKeOSSlZim0L60P/TY+WW66xz+aDX6QLIw3AdUjE62KmWiYfjhkRA2biZX2LI m3tFCLwpMIdpy80Lg0vlbh0zLVilX0ZE3iZSNzb1hP4q1QxqblSiNZSptSxMClcX h1J7fk6laCX/cAXzTJpFcEVxGlb4D0ryz9xJ+oP+AiRMmm4Wenxik5m5vJWPX0n0 lqRC+20xBbgrBcD7/mKMZYmGB4761OVjRbZNceHT92zslfAaT7iS25m8sccNF0PV pYIySpuLHJ7q5W8FFaTelJtG54y+9/sHGFsRnpwPNEtuDGp+dGJ6tT7WOaE+5Agw Og9YdhBIXXuyUTISA4289378aStGoEn3KOoGXG16eLtnulq0vPcfjPmwTcpoViV1 DOTfbzKFAr0mtlg2GEqCuRGBYUGx1PhDYVSwGaEj/nzINC2NVdC7NaxTVwARAQAB tB5QaGlsaXAgUGFlcHMgPHBoaWxpcEBwYWVwcy5jeD6IRQQQEQIABgUCReH8KAAK CRDH2TAlnf+q1JyIAJdIevuhvBW5sXOijprjLtIv3i17AJ4kJ56ezA9aaN0oflwI qXS0vKh7IohGBBARAgAGBQJFO/SsAAoJEL9L0OYEnbh5Ck8AoLAjjoaNef0Cdvar C8lXWCGOevl4AJwJQFdIeNmniWpwZPZTPEwaqGZqZYhGBBARAgAGBQJFPHD9AAoJ EKsvWlsVJWmQOK4AnR9xGIGcndPS0DZQbJ/vy0KTYqExAKCc422e0G0jwo8/HeNn nIgrSMIrDYhGBBARAgAGBQJFPHIFAAoJENuE1HYSbUfAMRwAn2vvGIgDa/UTsKd5 wMWzvL+sL5DHAJoCicwubB8WeBVhYt/CWHQsG5VCVYhGBBARAgAGBQJFPI+XAAoJ ECakfGr+bYUPblYAoKOCYQ6u02bgTI/OJ3al3QIoTSblAKCD57JVvjVRuZxyhUB+ tHlVDKujtIhGBBARAgAGBQJFPKjmAAoJEFZBJvIp8ZvRllUAn0YLwcvyhSpzkHop lDmIGfdxeq/EAKCDi8M9K3nk+lvdZbmMbg77Kv6Xi4hGBBARAgAGBQJFPLNZAAoJ ENdZXTdLcpYlUZUAn0jBnTySxCvpC2Xh+7iTvYWxmauNAKCSfc6A04CXvx2T9vCo 5aMoNAGdeIhGBBARAgAGBQJFPPEoAAoJEGjhJSt9pcU7MxEAn3WXA5R9Vq0F+/Di JXnOjdK9SduSAKCrGrW8rzc928ME1db/AR88MuhlOIhGBBARAgAGBQJFPPepAAoJ EHPeaYzHFAWicf0AnR58NpBrEpcyGzRCQx1XyFx2S/2pAJ95mn84PpNwE06FuaQ1 arcDadeTOYhGBBARAgAGBQJFPSghAAoJEAbypSJtCNehRdgAoJvyUbWo7/LlrfpX 7kbK7yVzXV3OAJ49quz/eGaMnQNrFg5i3jJ1GnUAnohGBBARAgAGBQJFPecQAAoJ EKrPs4YhG27vYZEAoOf3dDXEugnfPgNtNFc1qkl1GHXOAJ9Ybe47cmctcok5BaYr 4L+3tKthEohGBBARAgAGBQJFPhw8AAoJEKkX6cyZbhReKkoAoIc/7kY7769HMeql mOhM2WGbOcePAJ9ZglKFonLbLitjG68SXC3VnfQKgYhGBBARAgAGBQJFPk8GAAoJ EC+VFQiq5gIu5HoAniq+J8CPwGuz/WiatImkxDLfPjo8AJ903msFMWw6SoCE0pUW Dgt7pxnREYhGBBARAgAGBQJFP9EbAAoJEJRq0wuHLLoEgRIAn0B4af684NXZKUjF ZVDoTa78lds5AKCfmJRQhex03mJaZCICvNUL8HqQXIhGBBARAgAGBQJFQESXAAoJ EOkjWjUYLJeDWCYAn1FOzG/SYzZ/wk76LcJtklcC9698AKC+v0hsGWHVw5brMFPd w3Vj2SeLcYhGBBARAgAGBQJFQGdJAAoJELcooz9Fd1H3jfoAnixGZx095t/nYrmc MWijYQw+k3NNAJ9XlD6jw9YKpkkHvk1gn33dqJmHrIhGBBARAgAGBQJFQm9mAAoJ EAYGnPKWlFfwdPQAn3fWPnheVKy667yfNiVD+fOrbua3AJ0f3jKynS76pFt/UeaM i78dS0VA5ohGBBARAgAGBQJFQnYBAAoJECXSjMWVfVjPSNQAoKYiFBK9HfgU0PoA bxM76WzIO4rrAJ9hmFi43RN4lauVjPM+DiwqHsQCt4hGBBARAgAGBQJFQ4W+AAoJ EGx2F4yg7ZgtCWsAoLuKmgM1YlVaKu7hbsHhsU6bpxOFAKCCVePorSYrPdNUN5lz +4+ceq8+4YhGBBARAgAGBQJFRb/8AAoJELPOLSM6q/mS5zkAnAxU1e7gs5izUWYO /tIXOYRXw+xMAKDU+K41+y32vYVhxmEbULQqwVbjmYhGBBARAgAGBQJFRhoYAAoJ EMo5dFnlGy6RZ2cAoITx/oTtU8iP+4LeYWqk1bAWPI+PAJ92M4fs1JKkf2ZxfoUf AQgimQ9UBYhGBBARAgAGBQJFRiJKAAoJEKBP+xt9yunTeVoAoIR0g1LmHVszgRoB 0pwE1DU8n9SZAJ9ACNW6ICsEJJhaMkKgw3ihDy1GqYhGBBARAgAGBQJFR4KiAAoJ EJfO5hKrjj7VcygAn38UiWJd/Z9aObV81A9XIcZmdHSOAJ413JisZ7Xx4sprSkOG 7xKpmlk5VYhGBBARAgAGBQJFSa3dAAoJEFmm5/To7k54MvAAnA9gmtoxGZT92qnl El1yZfLPqeCMAJ96DgG6DgFc60gRRQbFBzIo6+sUU4hGBBARAgAGBQJFSxxGAAoJ EKwhViahIYdXXTMAn0stK4yLRAgCFhXbPIJcHSs3iL9QAJ9SHU3xK356wIxAZnjR 6sSR0rlah4hGBBARAgAGBQJFVGbqAAoJENjKeKUexWvsXCwAoMU/UV0hSkqCAzez lzN24IO/yzRHAJwPL+7MW8dVm3uQ9wKIJmfAKJXcUIhGBBARAgAGBQJFVdoJAAoJ EBaK712xKT80Ca8AmwU45F6J17RtiBW00muUiakva6L/AJ4uKhPEkvPCJgaxCKVJ 9Js0TraXq4hGBBARAgAGBQJFVhw2AAoJEBypWmNWsMoIntgAn2hh1rNlByE+80oe x34HxhLXKa9QAJ0Q2j97jthjVlfmP24aYccG0yuZ+4hGBBARAgAGBQJFVxuCAAoJ EBXWiATKbN+yZjcAoIQabGmBdoqm/h95xSNlNBNLbJPuAJ4ig+Jlj+I9NvBRInUq Ayqpamv6+4hGBBARAgAGBQJFVxuaAAoJEDDUOm5k6+IgqQUAni4Pc1wYJmzdZnck S/I8YuU/4WqBAJ9TqJ/yWIYrak1TtMqqnBdG2nUaWYhGBBARAgAGBQJFVyqzAAoJ EL/kOH5U4nj4388An2ppiH19Js9Gu3mfJlNUmu6sOeMCAKC6jm3AsAo6OgSBZoRf 0KGFRe6e5IhGBBARAgAGBQJFV0kZAAoJEF2Oi+nyOBrUccsAnRH8NZuK85b2m4z4 b7eQ9wFWMi8lAJ9CRRNV9LLRhs2HNreUinhbIQeuCIhGBBARAgAGBQJFV0nBAAoJ EE+xyIscE5vFHB8An1e7sohUFrzhVuqZu1K3IHkC1vn8AJwKx+KYiPdUSxBNdmFe C2dyW788uIhGBBARAgAGBQJFV0sEAAoJEDMRJG1RR9z0j/wAnRUiytdSTQyphXVX 6keyuEhNixdRAJ49zPihwFu564OiNUotXBYeeHwzKIhGBBARAgAGBQJFWLI5AAoJ EBdynXf0qFEvT10AniWl5EzY1e8paryrq69o6T2aU0xrAJ43/tKLK9ZBgMfd5p2n DJpUnOfuOYhGBBARAgAGBQJFWhETAAoJEBRll9zcw5nHEp0AoLTanGw1c+kd2be5 GoOwMQRCIV3HAKC86gjb5KQXJdnc5PTtAjC4J7cv1IhGBBARAgAGBQJF4ZPEAAoJ EJhL04CsX3AMU9sAoI8kPwa+N8pprHg4mRIox4Z6Z+N3AJ95DxG1xCABXDICvgIq yyE5GvJO0YhGBBARAgAGBQJF4bTBAAoJEFAC77GWLjiQSJYAnRb8s9u6SpA5s4JS AxsvN1kyVjgrAJ9uuMjEcECzuxBXORmWe85DQyk154hGBBARAgAGBQJF4d3NAAoJ EE1EwCDFwFuu7g8AnAjYIh3iY80dUTh1y7/EK2BS5nF2AKCurITgX5MqpC7p7hdE eAxm7npN04hGBBARAgAGBQJF4eVJAAoJECV+3BMl8VmUCI0AoKC677Qp/QSypd5B d5aKVhh7b5FpAJ9NXSjm4KMPxARNPV09sIin51OPCohGBBARAgAGBQJF4enCAAoJ EHhn1Tx0eTXdDpkAn3xDac92/uQH9h3x3sjRIQbZohx/AJ9yekb90xm2MjVgtLVm O/SCA739l4hGBBARAgAGBQJF4e0/AAoJEFiD3l2iIpt4O6EAnRlLTZuD40S30q39 CiNEvVRCK1zKAJ9Yhy1MGxC0Qc8xH3WoNB4ueqKEKYhGBBARAgAGBQJF4fJRAAoJ EFUVYHaRYekR5OEAoLagvPT+4HBwSty2XZZuS29jNGRtAJ95lKp5WUe3ER2sYvrk r833OuDU9ohGBBARAgAGBQJF4gQeAAoJELOx+BoCeHiADYQAn0reA1SyGkNmiyQ4 0cVn78rptU8gAKCcdvYM7j0RiMaDjEC1VPynoAchpIhGBBARAgAGBQJF4hIQAAoJ EOVE3gebfDKNzWsAoM9JTs5NQ9OPJo2EZ52x7WPnCXMyAKCEdLV0A3AXhaHlLVLf AEgtEQkyAohGBBARAgAGBQJF4iIYAAoJEH5OpU/Qq0B1KNkAnimT7/3dHVhqEoq/ iIdWTaESQ2PqAJ9ANUnpHL2EH6QenQh1GQQwLmFQbIhGBBARAgAGBQJF4icOAAoJ EHZJQAVJruv2rUQAoKP4K1CKRT0GGC+ZL0Rofre9QySSAJ9ddZckKCNiRfrB2pN1 My4oAeejq4hGBBARAgAGBQJF4i9rAAoJEAZVrBDy2EYvAewAn2Ie8313KZzJs2kQ 6naMN27UvsLuAJ4oyPJG8gSWd835wR0bh77IrO7WT4hGBBARAgAGBQJF4jI0AAoJ EJzL2hYB+otKQ00AmQEvateRIFwRkE/Ta/HNRZXqdgwtAKCcuGJqtwDFoDaapUxX HdAZslCJOohGBBARAgAGBQJF4lC0AAoJEFuTwC+eSpyd0MUAnRs2CUtPqqJVqJOO EXOoZFWUInSqAJ9uneS4FclqLsAH66mJW+VTRKrGyohGBBARAgAGBQJF4quNAAoJ EAMlcIRNIxPVLVEAnA0Ke4Rw2f1ZgaQhLbT/9cM0Xs+6AJ9X36YZGeCvpcsXceSi y90pMI+SpYhGBBARAgAGBQJF4sEqAAoJEHMcr9NTwaMviCcAn3zC+aD4qvxydYaa aiGKz+l7Gi2sAKDALKqObGPqy4Z4N5RfKuPO7JV5TIhGBBARAgAGBQJF4ss6AAoJ ENoZYjcCOz9Pb2IAniTFUorVnGjEKdO9w/TJJIAdmaGRAJ9kpYcxnGdIVD1oAL2W neimulkGs4hGBBARAgAGBQJF4vBRAAoJEItKxIGsHnFe/VMAn15Zp8l2sMLW1e/1 AOcakClQQlEbAJ4gpj7FIS1aOhMr0+mRJvxnBT14zYhGBBARAgAGBQJF4wXVAAoJ EDACjSRIE7X+74QAniP65Ceim8Q+qbKTTKuNmXpSu1SfAJ4ygzPKrlgObMsQquxS NH850dffY4hGBBARAgAGBQJF4yUWAAoJENOjcASuTRzUdQUAnApK8bsdAPd8PK0G otAbGuuIoa95AKCie6nNpKWs2Vfs7Drc6it9HaD864hGBBARAgAGBQJF4yu3AAoJ EB9/MmoS7vYql0EAmQHwplArFeZx/NwZ1DOni2Af/308AJ4yLkNYgBrE39FqKoyW Cy82dcY3/ohGBBARAgAGBQJF4y6qAAoJEDiaVjzCcqEmi48AnA8jMLx3DFvCOcLg SUIrmsTqhDkkAJ47e0GhQXBb3XnqyMesEKCFWsCwT4hGBBARAgAGBQJF40jJAAoJ ECGntTuACWnvBYsAnRfL+aClyOhr5ZDiAn9VSA9v7wQPAJ0cOWhv/nnrTukXDZGe L8iEGzlueYhGBBARAgAGBQJF40l9AAoJECic/8DmPNbWSr0AoKdXTD2BKi4KhkfS j0rHOjgSX+EjAJoDmxJe2PM3aZXf/As6Y4AtydiPH4hGBBARAgAGBQJF41TLAAoJ EErbH4hriFRDYyYAnjlE5pKGLD8FhireIHVJvtmVvzzkAJ402lHg1aq59DULHp+7 88MkRtXfy4hGBBARAgAGBQJF44RnAAoJEM8SNHyWi9WHElQAn3S/CXYOM50Ektdj D31voZ79YxCsAKCBLTRPDbfpVbTaaNHFxi745LQxmIhGBBARAgAGBQJF45cyAAoJ EDhzTXeHkBRSCz0AoJc2ytd1OY82O9zpnTWUd3EP+afcAJ47nc38YAM7E0ngqlWZ 0Aw4JowZVohGBBARAgAGBQJF5MADAAoJEHCyAyE69Z0W7YQAniq90lxQsl32RYYC 0p/ElRJ0gTAaAJ9ifxBOG5XfXYsDlyJM0fNtb4aUPohGBBARAgAGBQJF5XYBAAoJ EHkOjJRh/9qr0L8Anjnah5s8iGbfQXtPLwFYgR6ihcmQAKCEuhMMWCm9H8EF3iJx p6qnckpZHYhGBBARAgAGBQJF5amFAAoJEM6A78SRpwfkT6sAnj6PfrZbsd/nrMNx IurtrQRjkyQ1AJ9An/37xHEptMJqGTihE/tYisX394hGBBARAgAGBQJF6ZYsAAoJ EBVYlEWZ6B2gF9IAn0YPyBVK4M45P8XPoxzL58eysxBkAJ46R5Zw3l9poc2M0bcn POTtM8tmZYhGBBARAgAGBQJF7dt0AAoJEDBp6SG3mocce+AAni00fXGE7PBdiVmM q92/UVt6RVuGAJ0Rykv22dJlM+WT1r/3nkHwrwelB4hGBBARAgAGBQJF8c+7AAoJ EGnSph3iY/zUSFcAnRQ0UDSzzhMriRkX6PeRJCC4t+ZpAJ0YlHN22zumq4uJ+H/d x7LTsnQIU4hGBBARAgAGBQJF9VMgAAoJEOpi07Zqq8KhPJ0AoMgnZk/0N2WJVeWK uCwOoS6vqTo8AJ9o7Qp7TXxyx/2m74XYT7RbTYJ4iIhGBBARAgAGBQJF/zH5AAoJ EDqQ/8EUCNfxqyQAnAga162iTQEL9rLL5rAk9nsuFYotAJwPKGDcj5iOZqdilw4i u8IyFbZeoYhGBBARAgAGBQJGCjo4AAoJEIpncZwt6CezZX8AnRObeHOWVT13y4Zw LRl5tradePJZAJ45/5Ex8w8KZx5tdQMhhg9EoQgxzYhGBBARAgAGBQJGCokQAAoJ ED2vVKIe71J2sSAAn0NAQ4kPjXPGI3p2XvqWjiJD7Pj4AJ0Yo4QAObH5IPemFMv+ etS3Knk3cYhGBBARAgAGBQJGT8yxAAoJEGBl1TP9wgW5fzUAmgJOWwsGTgoI/9VR hk2sBw9ZHgnqAJ99mnO9BZDU8szanUANRPQzByT7DYhGBBARAgAGBQJGUm2wAAoJ EEjJztxXHuSYePoAoIo5wQTVgNLMFuw4BUfx/2zRFow9AJ41Mv3DIEIZPkePaAS2 7B7KqhJxCohGBBARAgAGBQJGXE+3AAoJEHHOr6zsoorb5DoAoK7gpZ+xhDilBJVJ eHoqi59qSoTkAJ9UktPiosJXdvgXF/iewKWsg7YnQYhGBBIRAgAGBQJGUO1nAAoJ EHkDg6l0ZuZTD28Anjb505he0sGqsvdtz/j/b8qAUaTXAKCo6vqdfjHM8xNPDsEM 55h8L1O+MIhGBBIRAgAGBQJGUO2nAAoJEAJJTlL82leHczUAn1A3wUTV/giLfS8c SMMy63UYDLSJAJ4y7LI/n2fRPY/iUrb89cvvoBtDqohGBBIRAgAGBQJGVLZQAAoJ EDKI3m16FCTGb7IAn3YIYeqNJgaNqo3uOHaMPXyhdHl3AKDeV7gZ6NTK4hlNgcG7 zTdrMUldOIhGBBMRAgAGBQJFPHw6AAoJEO0Yto0WGUVT70MAnRIt3nIRVtrBUUf+ ARdLi6WgF3h6AKCvMfNhSQ0lgTGRfnjCWJNp0hH2JYhGBBMRAgAGBQJFPQ5PAAoJ EDsr5WIUkTiXF+oAn1JmYTdo0R30VxyeAq9OVupZ8A81AJ9xnEyqRYE5JTFQSnyC naiasiA5AohGBBMRAgAGBQJFRc7/AAoJEFYhzLq4BaQWt/EAoLpx4NHJdK3XvP3F D6IBYG9YXENLAKCpOVYBi+jdcACcn005zCu9OORAJIhGBBMRAgAGBQJFSmQUAAoJ EKHH3ME0tyRfnVgAoJ4YEiYVNCBmgSADowgrlyaOV0zZAJ9XOSPHY1HZbt2naFy/ kQL54COp9IhGBBMRAgAGBQJFV02LAAoJECHFCRYOSnh1X0wAn12H7QcuHUMjTpCv b6n2Vda2bFoPAKCkKnMgXtxRDaqpgFYc6UOG6I/ROIhGBBMRAgAGBQJFWZnQAAoJ EHu7RcYqQ9NMHMoAn1S0SoZDx8cGEYKwuLsbiS3isJitAKCevJ/SHOs+1mlHoyss cK8zeyTZ24hGBBMRAgAGBQJFZgjJAAoJEEIUTAYlN20+ir0AoItayxh63ybLdMFr wt9Qo/g7uJuHAJ9n3F+9y039KuQ3id3k+ZxIZS9w6IhGBBMRAgAGBQJF40+tAAoJ EIwl7g8NwLfWWTIAn2ETa9VtV0Z1vpwANwjGXr5LQ3U5AJ90iQY7RbxmQ2glTnNx XqMeSNp8C4hGBBMRAgAGBQJF6t/KAAoJEEHcHJByRJcLjZAAoKL5E/cHtkurk2G1 y2a47lJn0Q4QAKDj8xIcynNIImkMjzZLpNXHFu6NB4hKBBARAgAKBQJFVLM1AwUD eAAKCRBfLIShPrYEbQ0wAJ9YALnp+0soJem8hhB7IRisycI+YgCfTnCivHZs7bCI e/PY7V/OL4i/nUSIjQQQEQIATQUCRfGDJEYUgAAAAAAOAC8gZmFsY29AbTR4Lm9y Z2h0dHA6Ly9mYWxjYWwubmV0L2dwZy8weDAyMUM1QkQyLTB4QzVEMzREMDUuYXNj AAoJEKd8S94CHFvSqE0AoMZdrTi08D4+5/lPWx453a+0L/xUAJ98czUXanYtiJaO fkfj+5PM5TV+pIi8BBABAgAGBQJF776QAAoJEO2iHpS1ZXFvBvIE/3GKB/i4+m2R mBqyxhWShO6Fz7Hj2vmqqsKaKVUp/SYXftXmTDD14IiVxOFl+7riaU/ubGIn0cn8 dpLVjth+rS04QkS907x9afMBx93Py+Na2fPg/FFlKmEv9+Yl8yMr3omKh6VzgRFF tMNRNDA42TZa2cUsRvAGs4GQZ8t9HgI1Janmnl2Ec2EBoESyhgL2uZqfSez51HfA l8RtrT+2K2WI9QQQEQIAtQUCRT5aCIcUgAAAAAAQAG5zaWdub3Rlc0BncmVwLmJl Imh0dHA6Ly93d3cuZ3JlcC5iZS9ncGcvNDI2NzEwMTNGOTRBMEFCRUI0Q0U5QjZE M0RGQzJDNjJBRjc5RDI5RS8zNTZCQUUwMjQ3NjNGNzM5MkZBMkU0MzgyNjQ5RTYy OEM1RDM0RDA1LmFzYyImGmh0dHA6Ly93d3cuZ3JlcC5iZS9ncGcvY2VydC1wb2xp Y3ktdjIACgkQPfwsYq950p5ImQCeJo41Qrs93qfxYgL+GsMhmoV1phAAoKT2UTKH OaxnC4TDwXz67uxbP+0EiQEcBBABAgAGBQJFPLwpAAoJEILS9urEu56fXz0H/jGb lglqrcuH1KX12m3OTCWr8exda+NQ9fqaLd42xMHw8l0wEjq1hB14J+vVEQBLqcaP NA8YUT6rF5feQwZCSfvTIZtxIYiufXuLPnl8xmNGWMVMjqraSkg6eYlwAHYD//R5 YgOXuY8byDKM2OyRYwAHSCDGGQyObdxlKBnBTiPskubLgTEKtluAiYRUPlLJOWC6 TribgLa4o/+1P0fnb+qUOelSE063CX0toVfxZGUptMraSxm8M5AWnYkFHtqSN6/R f8zBkqM/R0cowKJOco1eSx2YQM3qrBVPLNBV5Eyf4w22M+5g83TpDocZJ438Vlcd Yz5JxFHPl8avzRi9eD2JARwEEAECAAYFAkVXTTYACgkQLtRdZmGgc+nvfggAlq4o amMXxVclsWrL0O/BSmqyu7cvONkT77IhAs6olFvHJDVjpMEafrXCe2NH3/OWbxZv 8KK3into/X1ex55ht0vuhNax+hR/GUYY/MF+C+snZgWiyvYAmv7zQw4UQG3RB30A tODe6jPozNwzzVzGCNZ9w5G1HqIIFrYJJs+nLpvdIE9CPpoHVcZdZG3vx0QpIUob 3DpihUnRje/ieIioIoD9e878g7KvkbOMqdCNrgrgEl7VvSqnoeWiJ5bpAm5lOAkJ eDE7vEtqSHhI6oE/UjiLVMb+qAbmnF7q2Apg2Wpg09tR6my2PJj38hwkla/MX9bt meG4gV8AM+MZ7LqnsIkBHAQQAQIABgUCReNH2QAKCRDo4GL2DcsEMV1/CACcggZE u0pl6VGj8O3MJITaRI8MPT+5n1pu7Hx4rH7dr9CX439eCP5SHRka9WGOVSSc4FAs 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 ckSXC5QqAJ9ic1QAEQxO4Us8nb7XDma0mgpc0gCgpug02QF2GHfWZcd1uRPyytIE CaqISgQQEQIACgUCRVSzOgMFA3gACgkQXyyEoT62BG3o2QCeP3ANQeCZqkeYOY76 KBkmb8mvJYgAn282Syns2QBXaRdh32CSowOjVUK2iI0EEBECAE0FAkXxgyVGFIAA AAAADgAvIGZhbGNvQG00eC5vcmdodHRwOi8vZmFsY2FsLm5ldC9ncGcvMHgwMjFD NUJEMi0weEM1RDM0RDA1LmFzYwAKCRCnfEveAhxb0gWyAJ9Dvb+0THnTnzjpujK4 6qx3w4GjbgCgk7+1sjtvEacRzzsFXpRB1GtRNmWIvAQQAQIABgUCRe++kgAKCRDt oh6UtWVxbx41BP9qnNahfVcdoIUx+SW0qgniCvpkqJe+MEZkW+Uctmc1MHMd0Isf mvLwsNJLVSKvbsnWhroGpHKas+L+IQ4/c/InfQ+2cgU2lYueqfJNQeL5KXVWvfuw 8TsLDO89WNWRaxqPAmh8zmq0g3SMvZeYGHfUoTamCbGIFdP6JTtD/7Jr5u0A/VQ1 NtHFOnKnyQeLxKiUE6VcqkCrHwZDU0+kNc3RiPUEEBECALUFAkU+WgyHFIAAAAAA EABuc2lnbm90ZXNAZ3JlcC5iZSJodHRwOi8vd3d3LmdyZXAuYmUvZ3BnLzQyNjcx MDEzRjk0QTBBQkVCNENFOUI2RDNERkMyQzYyQUY3OUQyOUUvMzU2QkFFMDI0NzYz RjczOTJGQTJFNDM4MjY0OUU2MjhDNUQzNEQwNS5hc2MiJhpodHRwOi8vd3d3Lmdy ZXAuYmUvZ3BnL2NlcnQtcG9saWN5LXYyAAoJED38LGKvedKe8vgAoJUZ/vyqJjh9 O9J8v3WCn8OuBvUfAJsGpOOA7zm+c1tUK/ThAJ1LA6YPH4kBHAQQAQIABgUCRTy8 LAAKCRCC0vbqxLuen3zTCACCuWXUoJQqS+pX4CX6gflKWf9Z4aHfHojtaJlo7tPQ re3dO2YB+5UpByiYIVNggrk8Im0nHnL4Cwt5OEmWBl1Ux766NH1IuWQWg4wwBOMt l4o2NrzdYX23+AZsRlnNQI/r1b9E2HBzDro1Lh1tNkBA61OpGTOm9Mfrd+yARqq8 GqkSYAcDFtAiMuaYTYaCEjmcCKyehrjiHLXGBUdAL2GMKyqhF1FyQmhLw1WiNeaD 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 Ht3BGEU4sXrZQcq46mb8/z/p4Ij1BBARAgC1BQJFPloMhxSAAAAAABAAbnNpZ25v dGVzQGdyZXAuYmUiaHR0cDovL3d3dy5ncmVwLmJlL2dwZy80MjY3MTAxM0Y5NEEw QUJFQjRDRTlCNkQzREZDMkM2MkFGNzlEMjlFLzM1NkJBRTAyNDc2M0Y3MzkyRkEy RTQzODI2NDlFNjI4QzVEMzREMDUuYXNjIiYaaHR0cDovL3d3dy5ncmVwLmJlL2dw Zy9jZXJ0LXBvbGljeS12MgAKCRA9/Cxir3nSnia6AJ9WPIdOlKIIwOeSCBx0uYlM UM2tQACfQKbqhzbKM8RyO3QXO4XE3CybJ8aJARwEEAECAAYFAkU8vCwACgkQgtL2 6sS7np+53Af/RSNZhaUC0B+D06crMIfkqfA2c2K6EJatcm9c7mXH5VLXKkkqjH7x 80wOtDi3GKzZLOwCkwlk6d88eISpx9dBMipxUUlJqYC+a9FMWMaZgcLd7EPuDTuq kHfCHQLpPkMDXFIj+XP8T4pt3pdG1a+eoGUdz00KypSz2Fk64ylznd1XHEdexlW/ I4E1ZAlWEmcLENobjarXiIHzcvJJj9GQXLCxO+b6H9Mew0OBLxcJZJzrurclo7Nh Nwh0JSEwkoB7xS6jerfSndbeKg6mJ1fGmmhkyvhe08/zv4ZyzP3rtArBqJq4sPJ3 zCX/gqqkfm6Q4OMD8scaCCs59x6fdubPT4kBHAQQAQIABgUCRVdNPAAKCRAu1F1m YaBz6WyGB/9TroL46iD2Ya35k+/eQVEJzpRtNXZZ6BkSismkWY11psNGiYFyTJuK B72s8g+BAij8XmXnywrZYukz7IdHwWa0avkMGQ7kne5ATn2629UTbvQy9/ceStTZ mWjqTP1+g2ERDMmXM834cSimbFJBCW1SZllRBqchTBBtSrBLRomBOquEha+wffpe mMRG7F7d3ARGFsXG4oWgOV3BiKs+J+PV8ajolC1jDq7Tnrdy+FbOZJunkwdGmvKH GU1QnjzZV69+g0dzOif3gKi1gsrirce3YMQTpayINt3DZKdZw9ki3DCrizqTJU5h huY/JFlZ8bj4EwWDbXY1Mefy4zwZNp+8iQEcBBABAgAGBQJF40fZAAoJEOjgYvYN ywQxp2UH/0x7Yzrj4RAOEVkmBl514m/OqBB2++EftWhCCj+Qpa1diejZKol7/+xY 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 AAoJEIwl7g8NwLfWE6YAoMPz6GU0qjr+TKlYphjlJKZtHcaKAKCNNgXR/3sHhcc0 G8z0awGUymF8mohGBBMRAgAGBQJF6t/bAAoJEEHcHJByRJcLjTQAn17ykf+m0+RB N2/Uj1UW4M2yL6g3AJ4/hfu8brIfsJ0HMxpeKEtVRvQedohKBBARAgAKBQJFVLM6 AwUDeAAKCRBfLIShPrYEbaNVAJ9dCSUkmKdSi88RxPKDhen9M1CBYQCdFRhJlyA6 +pCx6sKas7bv6ZleLAuIjQQQEQIATQUCRfGDJUYUgAAAAAAOAC8gZmFsY29AbTR4 Lm9yZ2h0dHA6Ly9mYWxjYWwubmV0L2dwZy8weDAyMUM1QkQyLTB4QzVEMzREMDUu YXNjAAoJEKd8S94CHFvSVUYAn1VOGjali5cGBQBcO2OXXepNIS10AKCckhrCG4Aa BGfhoWdJJuXSEpTCfYicBBABAgAGBQJFVcyrAAoJEB9/qQgDWPy9kLgD/RICpKsH 41qM1mt6XZeO66AZXjo0O1yB9Nl5XSBPiE+Rs5wDfLMheFbbgAOwhfTvwM4g7eBi Lb0U77DP5uCK/8rvsIowhJYmwJaaQrc4SzQuiIHqe22ybUOOcP68NBRozASuecg2 3hlmcNNvHz0I6ImX5Ql0QpgT5RYSxupejuoPiLwEEAECAAYFAkXvvpMACgkQ7aIe lLVlcW9PAgT/cYFUQ3RsdPPpidzqp03htsyx4Rj91ugKmMSQ3uciUKmOdpJfAr9P jE4eQEMg/q1KHOxLGlOHjpYdlNgGOsEZHXIGyNFbKdCy6iPb3/uhfEWXcKVMEkr2 uKN9bgQ3xMHR3LnmqIwr8/f72yYXx0MXYN5TfsDdG2gnlfCAjmWeZDhdoBRwOnEd C2I6Eh2QKClbgGSu53V/SSskplrypMn/voj1BBARAgC1BQJFPloMhxSAAAAAABAA bnNpZ25vdGVzQGdyZXAuYmUiaHR0cDovL3d3dy5ncmVwLmJlL2dwZy80MjY3MTAx M0Y5NEEwQUJFQjRDRTlCNkQzREZDMkM2MkFGNzlEMjlFLzM1NkJBRTAyNDc2M0Y3 MzkyRkEyRTQzODI2NDlFNjI4QzVEMzREMDUuYXNjIiYaaHR0cDovL3d3dy5ncmVw LmJlL2dwZy9jZXJ0LXBvbGljeS12MgAKCRA9/Cxir3nSnp05AJ90DnV5DBT3yYYg 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 ea2QDDN2P5fNexsliIqIRgQTEQIABgUCSZapQgAKCRBYgr49723CGjImAKCHOGhU +N1wOTBU7s/iSbT2dmqHbQCgy+wFoFyglknK6Em6cCV9XyMqCWqIlAQSEQIAVAUC SZfb0SaaaHR0cDovL3BpbmRhcm90cy54czRhbGwubmwvcG9saWN5LnR4dCYaaHR0 cDovL3BpbmRhcm90cy54czRhbGwubmwvcG9saWN5LnR4dAAKCRA61vgRgwDMAqYJ AKCUe9AkTOK+4n85grnkhkliFYpWRgCdFk/sA4D3La/mQQF+22b0us/93LuIRgQQ EQIABgUCSZdNeAAKCRB5tCnAg1ZjWSBeAJ96VEru8vbBK0wu9a6zDlpRdHFZXwCg 0SP89HegT2PqvO+MGg+u/Q35KqSIRgQQEQIABgUCSZg6jwAKCRDVybdRxGUyJ4al AJ9ujFGF+jKHnzotfS/TpJ4DE47qIACaAxj1CMWVK8uBqNsRSpdnBjcCFNCIRgQQ EQIABgUCSZnEPQAKCRAtzj8oNtTk9db3AKCAopptnFQ4azphEhFA3jicMwzRZgCf epstTTM0FT4DJ1sqM4aQTaNx3d2IRgQQEQIABgUCSZsgJgAKCRAJgdtm+JTkyMEZ AJ4tgMWJOK4vxJzR3khy4X23yz/YMgCg3TK+6c4Q3LtrnDkIRoHT1XR5K8KIRgQQ EQIABgUCSZsyzwAKCRBK2x+Ia4hUQ02fAKDCCWICugRtfV00EetrGd7sm2B+hQCZ Afv46BTUaTA5xEbj4ZXztHtrTvGIRgQQEQIABgUCSZ3C2gAKCRC8dDys1l6elO7D AJ99gIp5Pk0j8/hAWz7sYXJuQ+bzHQCdGfAEk0FckcLBbHaabPKTyNk6aiKIRgQQ EQIABgUCSZSa2gAKCRCQNcN/cCQH95pUAKDHR7tfF9Ne1eVkRYB36kkNoC4d5ACd H+y4zpF5cM3GNfeoxoQpOFMnYF+IRgQQEQIABgUCSZ8yxAAKCRCB59WGOBmFTgRL AJ4tcnL5xEJbB4GHqqwOS4ZFOVmE0gCfdZ5gN24aPFkJJkfhyaury/XbWPOJAlcE EgECAEEFAkmsJN86Gmh0dHA6Ly93d3cuZGIzeWRoLmRlL35kYW5pZWwvZ3BnLWNl cnQtcG9saWN5LTIwMDkwMjE0LnR4dAAKCRDe6rvUuzDONbU+D/90fBcNLxIIVapG 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 y2QsdOtKMckN16UxC4sajo5/VRqI9QQQEQIAtQUCRT5aDIcUgAAAAAAQAG5zaWdu b3Rlc0BncmVwLmJlImh0dHA6Ly93d3cuZ3JlcC5iZS9ncGcvNDI2NzEwMTNGOTRB MEFCRUI0Q0U5QjZEM0RGQzJDNjJBRjc5RDI5RS8zNTZCQUUwMjQ3NjNGNzM5MkZB MkU0MzgyNjQ5RTYyOEM1RDM0RDA1LmFzYyImGmh0dHA6Ly93d3cuZ3JlcC5iZS9n cGcvY2VydC1wb2xpY3ktdjIACgkQPfwsYq950p52xgCfXZth5pnHae2J5+Kc2Eoh MYzW7X8AniUizIhcHb3zAim3F9zYAj3tGxQXiQEcBBABAgAGBQJFPLwsAAoJEILS 9urEu56fmYYH/i0vpRRvs0U4yC6mjQTCYCnRRK0F3WXaQaPQpd2qI45KpMnVS23B ko/OUPSwlgSIkBkvAaep53EpAMNqbzDjrxYvungQdG5yckxVsuJPCfg/bEW8Eq5u J2T+2u8x+Xns5keaEWJVe1MqOtyxe1v4r/gZkyowe3rHAS54/rZZH/KJTA5KWW0R 3XqRJdWmybPmwdUqdA8DotHthF98sJ6gpNeJcVYYjB/yJEexji1EbiTX8HJJ/+dk rKg4m7SUzIOgF7pW4JmK0u/CE1Ds9QT4mjocNQIMIXGmZE+0p95+5V8H1xRRS5RU Jjj13bCDBMhn+FygcllVbg04RD/jqFWEXraJARwEEAECAAYFAkVXTTwACgkQLtRd ZmGgc+nkzwgAjYIAVqbrUywYgywoww51I5pr6No7eacWeo2ck6yzK1EkVcNEYwEA ifFH7QbTLq5irzaTbhqWxzsturv4BV1lN//bVS/e0wlJLo0LMhwzpb6rSHRFk8d1 Y4JtQFORmML0Nv/bSOfN1dAZ/vYt/mf9WzWU70zVZCX4jZaiQka1YXrZUnD9X1ZP wm7od8cE1AnhN+DwW2Wlpc9dYS1p2DS6SFf9vuTo5URC4R2qx71lZNB3Bg+nLoMr gRoRp/5CBrj8gfpvvPfIgBXSB4DpBRGyZqxi1ap2x/SfGH6jxRrAGZ/hUcdd/s9U BA50WVGQBGo4kR5VLtm0DcQeMuuQ+CAZU4kBHAQQAQIABgUCReNH2QAKCRDo4GL2 DcsEMUPaB/9cw9jOdvGOaRsaShiPqVnid9IC5dntKZQ3z7+nvMDFAXT22ceK6qHR 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 =srgn -----END PGP PUBLIC KEY BLOCK-----
<jpaetzel@FreeBSD.org>
pub 2048D/F6F63F01 2012-09-21 Key fingerprint = 1D8D 506E B58C BD10 DC8C 97E1 D6AD 8621 F6F6 3F01 uid Josh Paetzel <josh@tcbug.org> uid Josh Paetzel <josh@ixsystems.com> uid Josh Paetzel <jpaetzel@FreeBSD.org> sub 2048R/F32EF801 2012-09-21 sub 2048R/51F1335D 2012-09-21 sub 2048g/9BC280CD 2012-09-21 sub 2048g/CC793500 2012-09-21
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 Nl2zzZmlpV4i =ExWp -----END PGP PUBLIC KEY BLOCK-----
<pgj@FreeBSD.org>
pub 1024D/9E3F9BE6 2008-04-17 [expires: 2013-04-16] Key fingerprint = DA0B 2143 0FC8 EE5F E211 D329 7D4B 6E18 9E3F 9BE6 uid Gabor PALI <pgj@FreeBSD.org> uid PÁLI Gábor János <pali.gabor@gmail.com> sub 2048g/A780C60B 2008-04-17 [expires: 2013-04-16]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEgGzt8RBADdmkWC/Q4tpLhYpw9oidgWjyRRx/MgPRrGhtAvVdNTjbVoT4bl 5e+v3CHoBih7KIh0BVQrux+H4UJ1Fou1wwwCrPH6ismBR5P9iZEGmBR/K0+1gBph /aUBANM1QG1FpAKMsYytqXiNk7mH/+oxomsbXBg8ZFGzlOWCwp3gvMZBGwCg7UY8 YtV9L46nZMFIfzlj/tkNzh8EAMeF8nLv2qFsBT3ihYJRb27c/GtsnSUCQgwU5CVS Zx0QVb/zpy0syLHO+AeJnUIQWBKOhPpysXRlyMpjDlPu2b/VS9av01uLeHCCR9YE G/Jp4mCNswD0RLoQh0WrNtdr0kR0htr8mZrkRbZo+YoZPCdp/lD5JNq6fkS/Dgc+ OGBsBACIOunHi0iEMnThJNznfLSA4hmjSdkrI249U5Ie8KfA5aXxaCX5o68tMgUV s/9hUBIc9cKoAkUf8t1XEADTik544HYm9FNULU55K1yEoG6dQrVm1HYVSl7uklE2 mHkkg15nqapedChp2a+UhXYK4IthrBYcI4YVvQMBsMIFvo63krQqUMOBTEkgR8Oh Ym9yIErDoW5vcyA8cGFsaS5nYWJvckBnbWFpbC5jb20+iGYEExECACYFAkgG0YIC GyMFCQlmAYAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRB9S24Ynj+b5rQSAKCs f7zv5XU0wXzKF9Y/9kIH2CKg2ACcDIvhQGclbBZy1NWr96IEkesPVd20HEdhYm9y IFBBTEkgPHBnakBGcmVlQlNELm9yZz6IaQQTEQIAKQIbIwUJCWYBgAYLCQgHAwIE FQIIAwQWAgMBAh4BAheABQJIBtGPAhkBAAoJEH1LbhieP5vmlK8An3aLBPTXu/f0 dWAovygPqgvjreGXAKDUrndv2PP84EhK4f4HDDwfeIVyPbkCDQRIBs7fEAgAyLRw XdnvIKENQFgcjI2XyPtcbe+mCs2miAdRWKPRq+RuVLu7ub1kYK13W9pYTJL5LAiF TBVm31uuoiN/sQaJMDz/Hz2DOLRsEcb+d5f/9ssiPUxMdYKnE+kYwXRvm15y6Z6G dNhFZWleNpFRuPYqy/HaUb5q8/quF5VcH/cDVS1tSTErPtM7i3mmnJOpdIdBrCPe VVJXZo5MWUp1wG2IIuyap8ddM5S/kHhhyujLxLNDnlTxYogGZz0qad/R3LeiYTfl Drn9cZzvFdPlmrSvdw78RH0tB09fRLoI8KjGHi/bTiF9Pai75OUwVMv4PmxjAF6s OLU9q8zGpr8XE2ykwwADBQf/XVmkCPL+BRd45e40ayCo4sqfMoh0mK6dP66FmO90 tAHtlIfkK74mcb/XrHC0KoX7c/TSaG9C8uJ7NGYzEFQzlzY8LlAfW/P+LjIpXjk5 frEItGm0fCNU/+eBwcobO9gfWHDHucfocar8/pnot2PhwJpRFy1/xUa8oHXxNfW5 IXnb67uCDPl4xFy9GkPPsgFZ4QI9+S7do0XYDEwfvzELeNTANAzMK+jIs5yzJ7mB mwI9orFltPfmc1y/EVc08LlR7qCsbosb/HMHO3jaMeKq1NIHyzRd70RZn5ow4B0Z zPQTJCWzfM0L5vAF96N/Rmrigwsg83+dE/a5e2791WRCRIhPBBgRAgAPBQJIBs7f AhsMBQkJZgGAAAoJEH1LbhieP5vmWAMAn2t7GwTeP9Hq3t1I1uU8AUGgS47cAJ0Q 0CAkpRuxhi2FZn58aNBhvQPcog== =JvPF -----END PGP PUBLIC KEY BLOCK-----
<hmp@FreeBSD.org>
pub 1024D/938CACA8 2004-02-13 Hiten Pandya (FreeBSD) <hmp@FreeBSD.org> Key fingerprint = 84EB C75E C75A 50ED 304E E446 D974 7842 938C ACA8 uid Hiten Pandya <hmp@backplane.com> sub 2048g/783874B5 2004-02-13
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEAscLQRBADERe+RX2eJpYLoaJ7d29B8YcTYzNlsfzghM1R1/Dx2RDy5poKa Jn9j+Iptq1qS9GkTHXFcQh8LT2K7wnE/MZTCxkZvg2ZkfQbJ4Z+0z3A1A6Kvg0tH X5aqmPUeLXvnps7nqZxkhl2ibcjhH/VYZK3mdRikd1wtJD1EhbbeqaR8BwCgkQAG vdJHN9gfjLLcM12EitkjoUcEALoo1bPoULWd4YhVH7W5L3Qp0dr1vf5pYC/V7FQ+ 8yPXZtGzMvIld8iX1sv/zsw4EoXXsaRzJo/ixdCS1WYBPowryu0G/LX5w0RTTGHc ihcHLm6ZmyNuIsTQ1ifLNASJoLkNBlQAuA0VG4evAujrmaWyEHbbIDSQKUJOjL9u jb2HA/9pycrr3+735Aa7B5jThN6p1XEC8GQg5MDx23QnTPj9QHXH4qs7s+hwxZq9 3WkVFBcJtDBi8PeEVqfD/QPeU3ewbnNnfaF46miGV1iG1mzU4zMq4n5oBdijf5eL cRRdOJytYKTvlSCe8gf0MzfaB3RqD8+Cjcs3PtQOy1VT4aQiv7QgSGl0ZW4gUGFu ZHlhIDxobXBAYmFja3BsYW5lLmNvbT6IXgQTEQIAHgUCQCxw7AIbAwYLCQgHAwID FQIDAxYCAQIeAQIXgAAKCRDZdHhCk4ysqEPZAJ9ByMndfTtnnVIbsyHc2NjDp5F/ vgCeP6o87Lw4aHuGo5guA9yeWwtwAla0KEhpdGVuIFBhbmR5YSAoRnJlZUJTRCkg PGhtcEBGcmVlQlNELm9yZz6IYQQTEQIAIQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIX gAUCQCxxDgIZAQAKCRDZdHhCk4ysqLchAJ4+01/uQVdqdDeESGodcvgKsrieqACb BIW7HMvh85WqofTeAK5pJu7hCM25Ag0EQCxw2BAIAPXEkkg6lSxGRmVH1yzRnSKr /M48xyRXYDrRPaVVBFkC4Af3CR5MjncJtjbzm7xH82glC67cksRTfTZRs7kJsid+ g62V53dAu1Uoj8ecSDhblb8yW3rTLKVqGcliGcTRFivcm+ZFm0kc0xCQE3rd1COX NLEomMV6xuZ9PVzDAbJwAoGdpCYsCl09eZrTErueQ7pEVsLx9/0zQSmC/uDFEVZ7 23GsJg23+EUBT5KuTxQ4i0k++Ccr4HR/OiUy6KmyXSNsKsBsXwm3map3Debqqqx1 ssrDXa+PHkKEUrONQBoYbZ17DpPZb+NKWibi0Vp1HKPP2vZl4NZQC0GBLXbEudMA AwYIAOYhwVTWKQSgeEZUNe4PwvHczx8/3VNjYZGY6/ZRjgmfO3+MagjonZqfxYha GpsEV17NXm4WIg6HWtI43JwIWfkUybsdxQVH4i5lWYuA26wD6UtNXw9laPHKXonR DvmKDC6K0iFbSxTqXRZVQ//wMxh58/Yw/fX+fYtmH6u6kPaL+CPRkhQLezTzZWHj 2wF6v+frdglW1/LpwpCFndb1i5+36ogZ5ZudG/iz53QzlOF0IZSGHIb9tlQ+4gUn KfxpQloI+5vAyqpHDKIH9K26wTBzKsp5Mt4W6cLfgjXs7TNc8BVT8d4rmmbGpGnG pSjj7b1q6EhpIVBkAMLw7qanLlCISQQYEQIACQUCQCxw2AIbDAAKCRDZdHhCk4ys qAuZAJ0VNEtJSZOAGetxBJ/BMWahVD8xeQCfVKwTHdPh83Qcf28xx81icY5OKY0= =rF4D -----END PGP PUBLIC KEY BLOCK-----
<fluffy@FreeBSD.org>
pub 1024D/93E3B018 2006-11-08 Key fingerprint = C73E 2B72 1FFD 61BD E206 1234 A626 76ED 93E3 B018 uid Dima Panov (FreeBSD.ORG Committer) <fluffy@FreeBSD.ORG> uid Dima Panov (at home) <Fluffy@Fluffy.Khv.RU> uid Dima Panov (at home) <fluffy.khv@gmail.com> sub 2048g/89047419 2006-11-08 pub 4096R/D5398F29 2009-08-09 Key fingerprint = 2D30 2CCB 9984 130C 6F87 BAFC FB8B A09D D539 8F29 uid Dima Panov (FreeBSD.ORG Committer) <fluffy@FreeBSD.ORG> uid Dima Panov (at Home) <fluffy@Fluffy.Khv.RU> uid Dima Panov (at GMail) <fluffy.khv@gmail.com> sub 4096R/915A7785 2009-08-09
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 gvGn3mxLairK5wBG/6nAxa+uon8t9tl7FKwiMg== =Jlk7 -----END PGP PUBLIC KEY BLOCK-----
<sat@FreeBSD.org>
pub 1024D/6F38A569 2006-05-06 Key fingerprint = 4E94 994A C2EF CB86 C144 3B04 3381 67C0 6F38 A569 uid Andrew Pantyukhin <infofarmer@gubkin.ru> uid Andrew Pantyukhin <sat@FreeBSD.org> uid Andrew Pantyukhin <infofarmer@gmail.com> uid Andrew Pantyukhin <infofarmer@mail.ru> sub 2048g/5BD4D469 2006-05-06
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =47um -----END PGP PUBLIC KEY BLOCK-----
<np@FreeBSD.org>
pub 1024D/ACAB8812 2009-06-08 Key fingerprint = C897 7AFB AFC0 4DA9 7B76 D991 CAB2 2B93 ACAB 8812 uid Navdeep Parhar <np@FreeBSD.org> sub 2048g/AB61D2DC 2009-06-08
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEosaGcRBACOXnXquGEW53BjpMt2jViod/TUf1xgjMekcbDxqOODPeX7eYfr wJ8G6BCNOpGjBmWDu/JcNj4Z+gmTilJ6WLZQ7ecFZfEeO91pt6ys0cyWh0xfO+/m T83D7W81S/kqrJBkQbBIdV6LumevdErHo272r8RcMELC4Ru87eRtX3hmEwCgnnGN JMpQFUfYTt5XE7nY0yQoeV8D/0OcWmJbEZWxX9O7AuliCe3zd2Dw0B4LB9SZ2Dis 7+gpVd3xVgYnt5wRE9kM+ThgrMA/wqr807qmEG6bcfUsfwwGN9YUtNF3xAN07cXT s026sCIFNZK816PrThBzCgkwR7pDpkMzGWIBr8WiXXy0eB+JlQ6UV4PEiXuZ5ulz P0b1A/9CZm3wJfrNC0r1gMyrfVedg4zwKU997bmPLGcYs+rWXDTI9CvMseOUYn4C oDZQCp/9zxuHK+VU7Y/w0c/hVE5ERACSn4SjN2unEDstK9njZBMHEPVkAe/YvSG5 cmc97SHlVE+eu/bbLKcvFb6rRLPOaVFQJMJA2VJEGWtYhvP7ZbQfTmF2ZGVlcCBQ YXJoYXIgPG5wQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJKLGhnAhsDBgsJCAcDAgQV AggDBBYCAwECHgECF4AACgkQyrIrk6yriBL0MQCfUJOiS2PbJFDeiav1ylcXXwfp ggAAoJRoS7GDENGyM4BzjJ4b0ptZqTLRuQINBEosaGcQCACFCWs47SL4DQA6bNDl VJu4w8wLf8uVOyatuGmdXX8Y/OTVQJgA3vS+ODNVJCxhKVlvhcn7bhBdGdWKS9K+ lr8+eEvr4hf2bQpesoHC+uFgKyILkCBNL8raixbhysyq0pfZWWDJMyn+G42BG1yJ Ji+bykygdpYnbIVA8dYHmBibI8mkPKOHSohjXT1SRfGGn+l1w54OO4NlJhCXMkjT A/Z9Bt4XeaiR85uJi0UUfV8FGZHhgSvT+/P1xIvz+nytuehSP/QLXl13CtAG/nKV kAcZnsT/3NrJ4Z2r45k+c50Wrf210scAaBogrrV5eIHfNGgOANApN8+8vj+aXO4p XRuXAAMFB/44ea8rd+P5N3OMrfuM8i91Qe1bJ+BIoroKPOr8jvCry0h3QpdfLKUN IgaqbS3JZeBJ8HHnWSGCF+o6H5gzRe1hvylPEclLPDCuPe7T746h9Mzejf2hNDJv Og+BuweDZW4KhovVbdS+syJEvpGF4bO8qgHT2CKgruXSHbFetdQWbkM0rfMmTuo0 GcR2BEVrPb/SPFv64ZZyAZzmnGO4vT1bzClnTzJixrDpH74M3vSEYegMB4KdbLYB i8Jx4QUKgVEhJHjJubKWX4etyU/uuehOC3xYrmr1UXvsom3U8r36Dvdo77Yr3dgD VXa7bolNx0TIhdWxZI+R4z9E75QY+/wgiEkEGBECAAkFAkosaGcCGwwACgkQyrIr k6yriBI+JQCfUxgyqGtzZvLh5Al7gsTmRc11PLwAniD3NfWGRcO2+9uxSSQqRH1y wC4n =tqY8 -----END PGP PUBLIC KEY BLOCK-----
<rpaulo@FreeBSD.org>
pub 4096R/39CB4153 2010-02-03 Key fingerprint = ABE8 8465 DE8F F04D E9C8 3FF6 AF89 B2E6 39CB 4153 uid Rui Paulo <rpaulo@FreeBSD.org> uid Rui Paulo <rpaulo@gmail.com> sub 4096R/F87D2F34 2010-02-03
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 ik5Vxm3qOoCKPgBkTCUAZTCmZZ13YA== =vI+5 -----END PGP PUBLIC KEY BLOCK-----
<mp@FreeBSD.org>
pub 1024D/330D4D01 2002-01-27 Mark Peek <mp@FreeBSD.org> Key fingerprint = 510C 96EE B4FB 1B0A 2CF8 A0AF 74B0 0B0E 330D 4D01 sub 1024g/9C6CAC09 2002-01-27
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDxThkERBACPf5/QHmyM944qrl3hWlWvK9fZZR2c37rhxAeqDJ8WsEMPBTZK WPn9BsMk+2d8e62FkzYo6L5juekd8invwd1nnszFFJdTDWx+vpMMgYuHBmme0QuP OnlU2FwJUCknw5Ed5pYV8F6azGgUNjYKIIJi/L3D9S2qDZ7l+3DgD0knKwCg4o8Z ZE2vd9uQw0AZ7lIa+li3hB8D/jHrVZqHxhOuUbxIXoJG3g54mH4i9GF8uN8ZdhA0 9AxLVLzjLr4CQd97++LdSLagSvgD9N6OrtMPeqge4Frr1anJ+LRPDeOQhd0meJZB iCiekil4DSOsowqgmIG7DlAJx+PNV66qO1ExX1fv1ugyoWHJqYmdBSF9x1fHU788 GxCtBACC9DLBMmMVu1Fsw3rnkZaR7xX1a1Bu95ZUu6TKJP6qUS5GnQOxF7dDjuwX /uRinkQ7W9vR4UuVvcV+Ct5R/yq7e+SfLb+YFQ2BmWeGNs5AVLxIZsZ0ar16fwB9 XdxxHU/IkA3kYo4JfTvi3QXjLn4mbYUuBIVGAL63UO1kx1c8crQaTWFyayBQZWVr IDxtcEBGcmVlQlNELm9yZz6IVwQTEQIAFwUCPFOGQQULBwoDBAMVAwIDFgIBAheA AAoJEHSwCw4zDU0BXeQAoMlSoeOO5WtFMyC8viNAafpPcT6hAKCcjmQyI/cI0id2 PMX9ZOfrKd/ma7kBDQQ8U4ZDEAQAw9gcDj02cAlUh8G9bLIQazPLJnX0fah7KB3O kxh8wFn0LliP7W7HLB+nQNyO4TfNgI0bhVyKDQQbKI2xJ4hylo9Z1K2R7GilgCnB FUqIp0MdqAswX2Dq7KXoyYAZRBOnQounUMaQ+6cfRI37mWc6dC2uY5qHne4zmLML /lVOjVMAAwYD/1ZArkN4IDk/VALPnzW4VYcCcT+101DMZfIMvHK2MiwWFmO+Er/K gIo9DrybHNQ6+bVQh/F6PSlxDrgWey7dQbHQSssC364v3RPOCmuBJCMTEszaais3 VekHF9i9NMsUzbGpowaQv+YKMFQu4Rtlwaq7NUp/cD4a+jaxto9ij4EliEYEGBEC AAYFAjxThkMACgkQdLALDjMNTQHvuQCg1PrMlcafQ3BUaXAQRlGoyvF2WcQAn17c HA1RAO/MXM99nT62+AKLlpeb =mfY+ -----END PGP PUBLIC KEY BLOCK-----
<roam@FreeBSD.org>
pub 1024D/16194553 2002-02-01 Key fingerprint = FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553 uid Peter Pentchev <roam@ringlet.net> uid Peter Pentchev <roam@cnsys.bg> uid Peter Pentchev <roam@sbnd.net> uid Peter Pentchev <roam@online.bg> uid Peter Pentchev <roam@orbitel.bg> uid Peter Pentchev <roam@FreeBSD.org> uid Peter Pentchev <roam@techlab.office1.bg> uid Peter Pentchev <roam@hoster.bg> uid Peter Pentchev <roam@space.bg> sub 1024g/7074473C 2002-02-01 pub 4096R/2527DF13 2009-10-16 Key fingerprint = 2EE7 A7A5 17FC 124C F115 C354 651E EFB0 2527 DF13 uid Peter Pentchev <roam@ringlet.net> uid Peter Pentchev <roamer@users.sourceforge.net> uid Peter Pentchev <roam@cpan.org> uid Peter Pentchev <roam@cnsys.bg> uid Peter Pentchev <roam@sbnd.net> uid Peter Pentchev <roam@online.bg> uid Peter Pentchev <roam@orbitel.bg> uid Peter Pentchev <roam@FreeBSD.org> uid Peter Pentchev <roam@techlab.office1.bg> uid Peter Pentchev <roam@hoster.bg> uid Peter Pentchev <roam@space.bg> uid Peter Pentchev <roam-guest@alioth.debian.org> uid Peter Pentchev <ppentchev@alumni.princeton.edu> sub 4096R/D0B337AA 2009-10-16
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 KXQCmDuAAhfLF4IJaH7iSZYLqolgrSl6l0j+ea4kWhgfeHcSoKFsMjV/uKn9qCV5 Mk4UNEuEDDSqnQTXZjcmMvhyMvzORMGLN9bRsdjLsa4UjcoLoz91wYrrrdAGxxiL CvVcMfU+2JMsf0GuK7CjP7Ije4qkxDojjPcorQ6hW33KKrc3R2tXUwQqlnZzZ4xT Yxu4um2uIpuEw/CIKZpZb1dwKcny06XF1CWAsd7nfsU6EnUVnQS4Ik3xSAikgmZB /VX6N475Ky7ClXKK1ptoh2YCJMfrI/RIbaWPftJC110kAJgWfrsvAnkbK+g/69yi mz9NUQE8zf9v4mf8IUmYElPl3UeqUX9b+JhJiYIGlqYw7eWX0PqUJmGgkjsizPR8 l5GcbGFvcYEq1ldVrKPbyJtn58X9cEX+4Dw/ushUaiPiaYN+7NEK9Gw0mCaTjveB QLfAcj9uFoPHvrWzTKn1caO1febZawer5BCEtPZxHzTxAJ9Mwhy7I4lI8KEKUW51 hbb7hNPFCokrqAKRMTAMiokCIAQQAQIACgUCRUzvCgMFAXgACgkQvJlvTb+wLG90 XA/9F9qCy07Km3qz9c6x3Cya/37ev6YSo3H9OUbR3DkB3LqPBab/6qvYUxemH4tw RETpRIIEWFa2nhyhaj2My7g0I0STQtavOQIsoy3Zt+syS+2slvXY6w3whLnxg1bd AyZieKMOrZdHnQYB10o291oIXTmue79Dd3Q7TWaZyrV5NkRrAVWkVz7lz5XH/rVr m9FWhEox6iDY06NyeIDncDf0aHPfFQYK2KhSVv2OM+u5jBc1EBp+EP9+hlluj9t4 u7BVhqQenHcROYZ9qNiDDC+FxCa5+rUK2muXQTlMz5i10o/1hkxL4NCyz1TjyLWm cGhEGHwDBjnxdkr9CO3SZdRfandPxmigwMGZ44zsf6WeEEhGkkaUR6nybZXZfdLY AGUF8g+h8Pf+BkQLZLnyu8L1zgj0xOBuLPexhA5Htdkkd1pFX3UrVMGeSXMbxWIE ve9GY47g0Qh51qu7PVGH38HKUHa2hVMZ930s+jxN4apKQgh7gcAqMXXlvcEIY/zc NtbK+LHKI/Pq9Vvw1Cf5Ix7mnfPmo6LZp3g3ZXkNsS68z76r+MFIkvYKpuCEnP0j dGUakq0CtrKbSTG5STHkp3Sx4CKRBNRYpinUlZCSY6nSOHcCmelXVbkfCQCt37vr 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 jjAqbYfJRPjeyqTOUA== =S5L6 -----END PGP PUBLIC KEY BLOCK-----
<den@FreeBSD.org>
pub 1024D/485DDDF5 2003-09-11 Denis Peplin <den@FreeBSD.org> Key fingerprint = 495D 158C 8EC9 C2C1 80F5 EA96 6F72 7C1C 485D DDF5 sub 1024g/E70BA158 2003-09-11
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD9gSfARBAC0ZC5VEuEzqk8KQ3tFam5rugDTaigVzYDmT6XBrQuVwYrFY5zj gz3o87e/KGmvh0FgpulhoJpkOW9l7oPQpp0wvEm45WRq17+7quW9VppgVCzs79FL Cc77A4g5LAuO27i1yygfMfPrr6J/M5bM2FyuUS35QvKBTlkZiB/Zt1d1QwCgzJML PdRvozXQdg6/bPc+M3Wh9AsD/0NxL7cwGExg57hnxA3oNB4M7IM1MwbDDaEQvJbW Ls8c+x2UMzdE4XHMhr940GiwUzEa1lyy0M7FmB+cdFgqhJ1VFjYE6VyGkyYtticL my6Im5S4Pfvx7pO2qLmYW+OnbnC6FFgFPbsAZVl/1fy4hN7U2zQIMw3kIodFBnyN RMsvA/9uzITCim3ov/9x4OYX0BfUNNmczIZMvXbmcuDH+NfwkGu9pmRitx/AWHGJ chOv4vMuMnBHU12TV1dstlWrb+Q5DVrnbVUq90mUbxg2emvlv+xK2oZ9EBKjAv/z NFqySi52vd+OmgopbVI6bI2+VdKrKeNcDByt/2zRGo9Y9hDULbQeRGVuaXMgUGVw bGluIDxkZW5ARnJlZUJTRC5vcmc+iFsEExECABsFAj9gSfAGCwkIBwMCAxUCAwMW AgECHgECF4AACgkQb3J8HEhd3fUzKwCgj1hA+IDNLHGdD+ua2bs3nPcL+vMAnjR8 6CwsvOZIL5cr0EyveMsGNWqnuQENBD9gSfIQBAD+YKY2v46TD994B3h0KtAI8/Zd aJ+K1yUNIDxjueo7v+c3jKaWPgX1h+Cr/O936IVnG1zg81zEF0Ly6NcwWrj70UDO deA4tvx8HQoYfjwRA2kYAv73yvt+UG6WS3cGkX28dcLb8/JEV5M64AYKhgqRX12m VJWIKdqMYzho8n0mCwADBQQA9WcaZB8RVj22I88DA6okYxiU2vqAN+QUvZfX0X1/ 7Rh3mB8iAXBuASEw6NbQnGtky8RlkTDgYu1UJt0aSV2U2CXKOyPCJut0Ka+YYtOM prdHmnNSksNvwThju8F6js51nrf3D/7L9SFhc+W8JTfa8iz9Zfgq1HQkZ3foSO5J W0CIRgQYEQIABgUCP2BJ8gAKCRBvcnwcSF3d9Ut3AJ9WFh2gFxmqE8O3B85dO4yx z/OvxQCgsQynjVGZI9JJn1W0KOAYSbihdu4= =kQUf -----END PGP PUBLIC KEY BLOCK-----
<csjp@FreeBSD.org>
pub 1024D/033FA33C 2009-05-16 Key fingerprint = 74AA 6040 89A7 936E D970 DDC0 CC71 6954 033F A33C uid Christian S.J. Peron <csjp@FreeBSD.ORG> sub 2048g/856B194A 2009-05-16
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEoO/iURBAC3FVq7xH4uRIEWRvmPzD1azqtwlQE3zipCf4K9B4EjKidksgP0 56qAkWMvngWG7OW9YNCtZYgDNAINOGdw2pZYioERq7U+cdIPKSZrIP5WrpORdi8A 4i3VmRKh19ztJEGb8jvthYDlEyvoABXmz/Bi3YHDkfjT0py02SnkcjikxwCgkGkL rNwWGviRd6hsBZZEeximSKcD/0OAthVoMmk4bMByWPoEWf5i3I3JHDeC4g3oEgYp 7dxMaxboqjFmiTZ2xMwdR9wlpwE0ITSeVj5pMtswr8q3ghLdlXOpd4wn/vLu51/G ra7cFgNex3kCb+5tLfqZQCiK/Y8fQ6TJdowaxN0xtrdGbTtUR0BJMi7/AhNF1GxW HeE6A/4n/K5Z8EDq7e5HZ5S0lx3MAKy1QgS1tnO0aaHK3v+DtD4xbe9aV2ls39sh 2Xu+z5QGkrx7q3HOSnC/DzMSYDG5I45GGNdDoBVmJ6IfvNICzXgM4hDh8KgIXNZZ PEkHN+uwTWCnIj1yhothpk86XBvyiEAbCTwQ5jWBmZkvLI2GdrQnQ2hyaXN0aWFu IFMuSi4gUGVyb24gPGNzanBARnJlZUJTRC5PUkc+iGAEExECACAFAkoO/iUCGwMG CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDMcWlUAz+jPOYNAJ9WfWDy0ZlOC7q7 KUyrq7e49no1SgCeO4nUcK5nLZKkyGXxTbnghFZegGS5Ag0ESg7+JRAIAM8UbDPn dVBYrvJqBwdWQA17XN6jycQC2smWLnJ6geaQfBgXAff5/Hn1LtPPG58k048yF6QF xOCzPOTrkjaL8GlyKGLK9jfctyC+zRl5FvNyJIBIgFRsJjBB9K3FpZEsxWltSyqc 5mxf4D8VwJeDfWdgeqVgORapBruHm3MAf5B13PfBN8lV2Yqbo520U6ZWUtdTscsL 2QLTZcrIN5aq5Wsuy4r8H90h3JYcOUK4PJTBNLmlmLEuTlENbv8E5YVvvgx/ZJ9H lX9FWz+w/hrEQIR2xnF8MJeAaOR3Q6cKgvFrH7PUHwvYxAXkXGWv6xsJ4VEA7a3g IOytL1l/8Zo0fiMAAwYH/3Sn6JzdbiF7peLiQ3SqbNSQV3aKxNP+PuGvuALiHKKd WgF5xjrBfgSjJbybwm4YtNfqLU/x8SEtEXVkyMozgWSMn2K/vFrgwURjG92IhDXJ bOzEDyx86/iJosMn2glcb9eBYGrmz92H+9a1Q1xMyuk7uD/+nFcJOj3GqnuFK54L //A6ott10Ddgg8JB3jehrzrOeg8/IdPifhT845X9q24b3kG0orzCIOk0/xyUyps+ 9A3j54Fp/atyVmHFPRedjGMwYPIqKQvFnzYuaoN/NT1yJZEFbyud/h1Kpi4+Z2/C Te9glz71eqlUSond5WFnLSd7GSuUxXprwC0bGQ61tASISQQYEQIACQUCSg7+JQIb DAAKCRDMcWlUAz+jPNDzAJ4lJdUYDs8aONEFRW/TpLMiepzPqACeN0HmbLJjwaVk tI1h5vM9MqGGVwo= =p6fK -----END PGP PUBLIC KEY BLOCK-----
<gerald@FreeBSD.org>
pub 1024D/745C015A 1999-11-09 Gerald Pfeifer <gerald@pfeifer.com> Key fingerprint = B215 C163 3BCA 0477 615F 1B35 A5B3 A004 745C 015A uid Gerald Pfeifer <Gerald.Pfeifer@vibe.at> uid Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> uid Gerald Pfeifer <gerald@pfeifer.at> uid Gerald Pfeifer <gerald@FreeBSD.org> sub 1536g/F0156927 1999-11-09
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =3Uph -----END PGP PUBLIC KEY BLOCK-----
<jacula@FreeBSD.org>
pub 4096R/8B9F4B8B 2006-03-08 Key fingerprint = 31AD 73AE 0EC0 16E5 4108 8391 D942 5F20 8B9F 4B8B uid Giuseppe Pilichi (Jacula Modyun) <jacula@FreeBSD.org> uid Giuseppe Pilichi (Jacula Modyun) <jaculamodyun@gmail.com> uid Giuseppe Pilichi (Jacula Modyun) <gpilch@gmail.com> uid Giuseppe Pilichi (Jacula Modyun) <jacula@gmail.com> sub 4096R/FB4D05A3 2006-03-08
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =jIdO -----END PGP PUBLIC KEY BLOCK-----
<jdp@FreeBSD.org>
pub 1024R/BFBCF449 1997-02-14 John D. Polstra <jdp@polstra.com> Key fingerprint = 54 3A 90 59 6B A4 9D 61 BF 1D 03 09 35 8D F6 0D
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQCNAzMElMEAAAEEALizp6ZW9QifQgWoFmG3cXhzQ1+Gt+a4S1adC/TdHdBvw1M/ I6Ok7TC0dKF8blW3VRgeHo4F3XhGn+n9MqIdboh4HJC5Iiy63m98sVLJSwyGO4oM dkEGyyCLxqP6h/DU/tzNBdqFzetGtYvU4ftt3RO0a506cr2CHcdm8Q+/vPRJAAUR tCFKb2huIEQuIFBvbHN0cmEgPGpkcEBwb2xzdHJhLmNvbT6JAJUDBRAzBNBE9RVb +45ULV0BAWgiA/0WWO3+c3qlptPCHJ3DFm6gG/qNKsY94agL/mHOr0fxMP5l2qKX O6a1bWkvGoYq0EwoKGFfn0QeHiCl6jVi3CdBX+W7bObMcoi+foqZ6zluOWBC1Jdk WQ5/DeqQGYXqbYjqO8voCScTAPge3XlMwVpMZTv24u+nYxtLkE0ZcwtY9IkAlQMF EDMEt/DHZvEPv7z0SQEBXh8D/2egM5ckIRpGz9kcFTDClgdWWtlgwC1iI2p9gEhq aufy+FUJlZS4GSQLWB0BlrTmDC9HuyQ+KZqKFRbVZLyzkH7WFs4zDmwQryLV5wkN C4BRRBXZfWy8s4+zT2WQD1aPO+ZsgRauYLkJgTvXTPU2JCN62Nsd8R7bJS5tuHEm 7HGmiQCVAwUQMwSvHB9/qQgDWPy9AQFAhAQAgJ1AlbKITrEoJ0+pLIsov3eQ348m SVHEBGIkU3Xznjr8NzT9aYtq4TIzt8jplqP3QoV1ka1yYpZf0NjvfZ+ffYp/sIaU wPbEpgtmHnVWJAebMbNs/Ad1w8GDvxEt9IaCbMJGZnHmfnEqOBIxF7VBDPHHoJxM V31K/PIoYsHAy5w= =cHFa -----END PGP PUBLIC KEY BLOCK-----
<krion@FreeBSD.org>
pub 1024D/AEB426E5 2002-04-07 Key fingerprint = 58E7 B953 57A2 D9DD 4960 2A2D 402D 46E9 AEB4 26E5 uid Kirill Ponomarew <krion@voodoo.bawue.com> uid Kirill Ponomarew <krion@guug.de> uid Kirill Ponomarew <krion@FreeBSD.org> sub 1024D/05AC7CA0 2006-01-30 [expires: 2008-01-30] sub 2048g/C3EE5537 2006-01-30 [expires: 2008-01-30]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 6MXOtw== =3Md4 -----END PGP PUBLIC KEY BLOCK-----
<sepotvin@FreeBSD.org>
pub 1024D/3097FE7B 2002-08-06 Key fingerprint = 6B56 62FA ADE1 6F46 BB62 8B1C 99D3 97B5 3097 FE7B uid Stephane E. Potvin <sepotvin@videotron.ca> uid Stephane E. Potvin <stephane.potvin@telcobridges.com> uid Stephane E. Potvin <stephane_potvin@telcobridges.com> uid Stephane E. Potvin <sepotvin@FreeBSD.org> sub 2048g/0C427BC9 2002-08-06
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD1QNM0RBADbw1IMsD6ShBkXQirwG9TUFkBfZOaGUB9nZZTGZzkDWsj9/8FP TacAKze6REEdtfADFyYolZrps+o0xVUI3ib5kzXnzz8yj41HTzR7PG0FcgINt5Ls yuq+d3ETSu2AALwNfolKy/9yIIcRFl1bI5cawOua5MB4VUaf4JHiyOikfwCg/zsO QReMvoKLcZkn9pcCH6EZHtkEAIxZKMcRaIuGe0vF3oP4GfuEXIa7K7R9ez0u3iiD inNPQ5vQuY0qJMLbZAu6wyqEP9wVXCdAiclBbPYRb9tabcV5gFkuXpLvq5E7pGkN hRF/rUeDxf/EKIklqe63KNqgzMZ2nM8lvoDkUrdSQL5dc2Y5a6VIq22QsgaraYmo j4p7BACAfCiZjND9VcNAQmTvEyNGslQ63gzUfE7D8Xlx2Glv4PP9AmZ2X+FRliY4 YaARKDK+62bNTrJjQGiaIzz9LsFV5zpYvHBQ9KP6NIp5bP3ljaUwyAJt5+GT8sGZ ZOBpSmau+s8RmSPajjvSwACjWF9tP19IJMtnk+pMn1SGiVbMA7QqU3RlcGhhbmUg RS4gUG90dmluIDxzZXBvdHZpbkB2aWRlb3Ryb24uY2E+iEYEEBECAAYFAj3s8qYA CgkQpvaYsfdm3ZH1VgCg3x3Qbvq/n5W/xonGXqI6+LJXLw0Anj5AgE0GPTC1naYn KpFmD9Hb+m6LiFgEEBECABgFAj1QNM0ICwMJCAcCAQoCGQEFGwMAAAAACgkQmdOX tTCX/nvccgCeIGN+hK7GND/4+9BbHpXOOnnlsJ0AoOavUpZeUj/t6pw+ld4CU7t5 iUrhtDVTdGVwaGFuZSBFLiBQb3R2aW4gPHN0ZXBoYW5lLnBvdHZpbkB0ZWxjb2Jy aWRnZXMuY29tPohGBBARAgAGBQI94tEZAAoJEJnTl7Uwl/57WiQAniYT7h0K32tZ 1+PkyM0UUvu/Vg3JAKD2VXNsiI3w3o/xm20IqR/UwZtAVLQ1U3RlcGhhbmUgRS4g UG90dmluIDxzdGVwaGFuZV9wb3R2aW5AdGVsY29icmlkZ2VzLmNvbT6IRgQQEQIA BgUCPeLNjQAKCRCZ05e1MJf+e0K7AJ9YssAR7btTX0oE9MNYYVQBbfYNpACfdyiD QeQhD+7FNqs4cZ+GEsWMxJ+0LVN0ZXBoYW5lIEUuIFBvdHZpbiA8c3RlcGhhbmVf cG90dmluQG5tc3MuY29tPohxBDARAgAxBQJD6jKhKh0gSSBubyBsb25nZXIgd29y ayBmb3IgTk1TIENvbW11bmljYXRpb25zLgAKCRCZ05e1MJf+ewE7AJsEexwRGNC9 uR8JUPjttVJG012/VQCfVg4M1xq2+h3Ys/DecKUVxt0uVsK0KVN0ZXBoYW5lIEUu IFBvdHZpbiA8c2Vwb3R2aW5ARnJlZUJTRC5vcmc+iGAEExECACAFAkXQf8MCGwMG CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCZ05e1MJf+ey10AJsHFjVs9WEaui/i L9xfITeCmwkd/gCcDlRcmGUW3ov/jmeDzGFrE+MQsqK5Ag0EPVA0zRAIAPZCV7cI fwgXcqK61qlC8wXo+VMROU+28W65Szgg2gGnVqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ +AyDvWXpF9Sh01D49Vlf3HZSTz09jdvOmeFXklnN/biudE/F/Ha8g8VHMGHOfMlm /xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl9Ij9WE5J280gtJ3kkQc2azNsOA1F HQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhdONM0/XwXV0OjHRhs3jMhLLUq/zzh sSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZ Jrqrol7DVekyCzsAAgIH/3fG4jw0qo+iUk3wwS3oLPf5USbiPYOjUZ9jpaII8pYE iH7i741cPL8qNpFgshJANd4sz3Iu/hu3xj8aWaZ+jDOM674U69lcv1hl/rrHESIR oHIwfjmExLtnFl/2NvQ7uKM2jKoJNERtbi5P7PfLqD2Y8xK1W8cFZmPuD404SBRu ubk5BrYXv94VU8rxE34uhOEuAW/I6uv7DhCcr+bVJzJQYCsHxHh79kHsHEW6KAGb W34S96t9m8mgl7Kb+KCS7CqmqlmP4/itf/26wfXf5ynhRrWpUuc+jbf6n9afjjzm 0CWCBS6/f2OALgJX+J5DUG5TggtFVKMMQRf5Bv79F0mITAQYEQIADAUCPVA0zQUb DAAAAAAKCRCZ05e1MJf+e4YEAKD8ArLrD9l/sJDn45ZDBjs3PxAEWwCgoy+go5Wt 0MmiyLIGfKRYTeFnh6A= =AbPN -----END PGP PUBLIC KEY BLOCK-----
<markp@FreeBSD.org>
pub 1024D/182C368F 2000-05-10 Mark Pulford <markp@FreeBSD.org> Key fingerprint = 58C9 C9BF C758 D8D4 7022 8EF5 559F 7F7B 182C 368F uid Mark Pulford <mark@kyne.com.au> sub 2048g/380573E8 2000-05-10
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDkY4OYRBADvB+3Uh68SGrlbrq1MTAN/gnVaj4ztmA15X13bunGYdLKLEJdq rd9xFv5OgxGZXJ+sDhbKomJ7yrBGtUwC5kIrKXN+MPbO60yy30+kIVLKjXIv1d+c MlWhjFzHra7WGFmvhzYnbOI/zjlOR68iKHnwxhtKFOK9m2O3voURWLEuqwCgzK/S j4UGrPUmZf9XOZcKdnN07nMEAJrNh6aoVgK1xwpyO9uTURuCppqAUym/fr4xNQqh mngblwIACnV9FpBi1ogtX1iDo4YeQa7t7ALgdwTBbU8upVFYzoVByid9ibNu3OKv j9JvL55jUVg0wv6a8bEWjxnNK/zVa/HCzTbAzHob0CSgH9WmEJJEUIqI2/PG2dj+ ZX3QA/4y6Gon6iya2wk0Zs7mrTj80kxLRMnuPN6geTGVNTfrxat+sA1PVpT2WWSo qOrPoyxcpUBbJ3VlFmuYDDgld4lJiGD/2SG5BkD6OoGlRnD5AMgUxQtQFnkloao0 3md8UDucIJnJRF94pttQtv4lVKaocm4z0Fx6cWC4Ysupj1AG0rQfTWFyayBQdWxm b3JkIDxtYXJrQGt5bmUuY29tLmF1PohWBBMRAgAWBQI5GODmBAsKBAMDFQMCAxYC AQIXgAAKCRBVn397GCw2jxyVAKCbPwK2rDZx/oahfd4M7XJ4GoF0xQCcDExtL+DK wOugUQwfVIExB+HBM3y0IE1hcmsgUHVsZm9yZCA8bWFya3BARnJlZUJTRC5vcmc+ iFcEExECABcFAjse9k4FCwcKAwQDFQMCAxYCAQIXgAAKCRBVn397GCw2j/OXAJsF bdYQGgCs3sXMOdb7pNUi2DL2kgCdFOFSojmWV9mulpzH6ceb/fKgoJC5Ag0EORjh UxAIAMrmc2VXtnp/WWhGne6yTirnnWjR/c+rSK8ixbAqTkdYnocY6gtBJliR7LSh Cv2RD8TaUc0ZZseHC5vR7VZKXobXUF7QqB1Rgzz/CpsFeEmxxQxZrVKNjwcMloSt wmH17yW5tBDg8+6KhFwHj40oV88/49L8utVMEW80gh9O9TlYw5qCAp5QKqkFS52A hO54xjTNdEpv/9yXpwQfgUqkAHM8MQhsaxmKCIQXUGt6Lp13aHDAYtMizED0LBjV 3P3qCoc03P9k2nWwGGU7dukncYNNuLDW9xwkAfV9VQuPYCHEBiPTcRnn99imyvNz FNhOElHDttCyKtt1FdZZVAQzXusAAwYH/18mnEMMv4rMZglYb0PRCxaxwQYkxESt KyXEclTc0kgyaZnf4Vbdz1rroxxZLIf+16p/MVNFierz/7d5FbJYggCDSsBAaj4r Qe2/Os3oCnHyyQY+zF9Ac30CsxzgDxMYxYGJHr6x+s9cloZ3WwBFAO0bMoS/9T/9 /S7L0d0litecox5et2yEw4AqHdCslGx5mX0os66uh99eeEwW2EQHSLklwUPReb7U 6m+fNyWxq5w+qTPG+zcXdiW/117T1aONVmg29tSNW8S/syha2PCJ+IoordBus4mU kfa49yCuXyZAYDNLbkiqMVTDCqrH2+n1mbUuhRBaSZEvgqVfVLZzRziIRgQYEQIA BgUCORjhUwAKCRBVn397GCw2j7T3AJ0ZDGzVqNQBE07ntRKuzQQmou8YhwCgibYR ZJyP31xlO+Lt5FgzzeqcQwU= =DKp2 -----END PGP PUBLIC KEY BLOCK-----
<alepulver@FreeBSD.org>
pub 1024D/945C3F61 2005-11-13 Key fingerprint = 085F E8A2 4896 4B19 42A4 4179 895D 3912 945C 3F61 uid Alejandro Pulver (Ale's GPG key pair) <alepulver@FreeBSD.org> uid Alejandro Pulver (Ale's GPG key pair) <alejandro@varnet.biz> sub 2048g/6890C6CA 2005-11-13
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEN3W2YRBACt8uucrC3Gv8Q2PoAppL0Gdmy+ufJkvp+e3QpNnEvYPU7jivtZ MBuMVzadeiE2FMfzAhD90bLOxomZSwIKAc+uiMqqXrciOGMEBFFcHNOgHGI48me3 fBvzQ4weJjGQrdUVOuQOtCNEmPHHdXOG0Vks+2ZD2czYDmixUkysso1gXwCg5ETt H/u9qXgKHxwQN1znhppBHu8D/2/ikj7Y8S5evZauwQ5m1qBMz7GS4FyXH8LZPPC3 KJW9AHiNSOl4a0g6bH17OTaa6OOljyO0MzbM0UQDJON9JvGLH4q3ML0QQ145yfvQ fxLbFMU0B3MSOgFUkpRrWflbsleBp0BH6MCUNzdhDVgyQxyLkyr+mdX6m7N+EiF1 m882A/9hz6+cmex12xdJnhx/frVL2Ji2deY4JntneNcZS7FBCWCe5d4weYUlLUJa sAZuwe/8q5BftMfHXeJzwLc+8zJ2EU6HEX7QdJTezSb7Mjh8Py8T/7TkyjK9LYJ7 hg8BSx7hQ0xo1KJoDx057GjkE2PGW+ngUyAExGvZHc4Gos3lgLQ8QWxlamFuZHJv IFB1bHZlciAoQWxlJ3MgR1BHIGtleSBwYWlyKSA8YWxlamFuZHJvQHZhcm5ldC5i aXo+iF4EExECAB4FAkN3W2YCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQiV05 EpRcP2HiqACfSVe9jQLEj8zM/iMLO3S5aLY6EawAnjIo6VapDopNW66BjRzFKQ+D P56HtD1BbGVqYW5kcm8gUHVsdmVyIChBbGUncyBHUEcga2V5IHBhaXIpIDxhbGVw dWx2ZXJARnJlZUJTRC5vcmc+iGAEExECACAFAkQy/PwCGwMGCwkIBwMCBBUCCAME FgIDAQIeAQIXgAAKCRCJXTkSlFw/YcLPAKDTcYP8Uso5mQls/wFYuOsfruyyXQCa A/xZlNpAz+akVuPQZRh4qqHH0nC5Ag0EQ3dbdRAIALqYTavt1809JFOCuiaOZBeC /qK5Hvi70rgyIyUJj6q0RrC6FzEOTKGQIaLZSdxhG50lw2KFOCkq0ARfhdrezR0a 0WQApeSb63hd1lvOz8ocyPkUI1IKc7aD0aQfcplaf3NmQJ6HF0rEzenRUoxy3mro R1yddUO/HosbvaeSCRabM1ORqx/G3WFfmX6dHuLltvbModDmOr04QbQ4+gctmplR qtk7eRXAFAG+Fo7lkhF0z1KUFQF56kL3rDXaAQzE/Vv6Rgk9vOYGXLJQdngNIXhC KVzrkqrZXj4El1gfSR1Dl32AzZtY6acGF2GvMGm2R2udTHsYeyCYXKlBRu6xakMA AwUH/iRn8SsuszctzdLqNxideej+9FQ+nHaMBw3Y+N1tlkHeDVmPDNiTotOzYo/V aRhW3bAebwEQr5bOs/6bnDrK86b2PUuwC/XtE9nXF9f1QQvApIyKzW6VG/FsQIpd +5lNWfRDKmoUZpMeKg9bQCjeFk8tFXsnp6kn8NhEAMCCeDwiWYUl8pcFlNIwPs1M brkZ7QCbA8OFAK0YkzUqYmvKPIS2SjpMA+uPJ0674v8kMuh9VhcQj/1RKKR0q2Fm sUykWFoGEp1FAVpMkKa2cKS3vYgpobMjVYeMWhsWXAFM9hZT9gI5oKVo7ECUZEBO f9dufNDZ1UHAHlAojMMCW53/fGSISQQYEQIACQUCQ3dbdQIbDAAKCRCJXTkSlFw/ YY8XAKCxojHrj/8OzUI3PFFTS1/afkj3HwCgz5wfMMjyDZG8rUt9ZFbUVN/RPs8= =iWC8 -----END PGP PUBLIC KEY BLOCK-----
<thomas@FreeBSD.org>
pub 1024D/393D2469 1999-09-23 Thomas Quinot <thomas@cuivre.fr.eu.org> Empreinte de la clé = 4737 A0AD E596 6D30 4356 29B8 004D 54B8 393D 2469 uid Thomas Quinot <thomas@debian.org> uid Thomas Quinot <thomas@FreeBSD.org> sub 1024g/8DE13BB2 1999-09-23
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.7 (FreeBSD) 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 =mFN1 -----END PGP PUBLIC KEY BLOCK-----
<hq@FreeBSD.org>
pub 1024D/85AC8A80 2004-07-22 Herve Quiroz <hq@FreeBSD.org> Key fingerprint = 14F5 BC56 D736 102D 41AF A07B 1D97 CE6C 85AC 8A80 uid Herve Quiroz <herve.quiroz@esil.univ-mrs.fr> sub 1024g/8ECCAFED 2004-07-22
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBED/zxERBADJcZlF+Rzm8wL5lPTTPA1zLwa9u4ZZeVheS9vRGTOC6Sfi2NV9 feWCM4TR9CVtp2tAcVlrXjBzvhbeNajssCPn94qUh4z8ERJKT1R8n4zlilTcMTSQ qZ9t7mIpcpsmpCO1FvfozjfexpUSeLHONKlwHhXXQFdJm6bw3X+kZKUeQwCgut4g ilrxtY66n6pzC7jt8GaM1ikD+gLzk88lPNHA8hZurRaYoRD2cD7jOMk0WNuuRZLA 4LsG+hJUyrPU5vLKou+2iXl6MBvjlYwY3FS5wc1PZ9tRRbMNIq71xCTXmSapks50 M+/cVYhJhQTVWCFhY+HZLDJpiaeMEkTHqoXo6ePVSMgFDQXADv/hMIPkNheXzmXM yhw0BAC75FBSMcRJz8jOaHXSZ7AM9EdMhH4mru1YyfLzwqk0DQS7ToXc8mEpo9SJ c/rYfSHf6Egx9856sncCfLvoTScZDwWXvB7kJPOfXK0u8KK1uZBDAqEacmm2oEHd Xi0KbfW1zyqIPnLKjgu57OqSGyDBKzC2XuQvWcNk7Sol/Yxp9rQsSGVydmUgUXVp cm96IDxoZXJ2ZS5xdWlyb3pAZXNpbC51bml2LW1ycy5mcj6IXgQTEQIAHgUCQP/P EQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAdl85shayKgHKNAJ9/qmkJgaMW zOFnMUGcH/fc9ksrZwCbBhYIuo/nnHe9tC53mIlqDoXOz/a0HUhlcnZlIFF1aXJv eiA8aHFARnJlZUJTRC5vcmc+iF4EExECAB4FAkEOc8MCGwMGCwkIBwMCAxUCAwMW AgECHgECF4AACgkQHZfObIWsioA0SgCdF2eAlmqyihMQVf/T8r/x6x385vIAoIhZ hhYxTsWZ4dUA1XmbEfZxMQPvuQENBED/zxMQBAC8M+1oDgxVjVnYlhapOHWNMDlU 1LolN2B9sUm56K0UaCpnCsrm2Jc/kzr1egmjqxGkV1dIih65W+oPZQOBqq4mAvPI SRlE0MrcPCeRyzN4zSwqwu1o0rcCWaacPpNxnG5icluD1RPBDucRPhc8gFMmcfEq 5pgw3LU58ZIrvB3FLwADBQQAjM9l/u6o0CVwRZ6XshuJQnc7Kt+su/xyZjkYqURp sZ8Q9xWgKI4Tv/x+IbgkU5D2vCu6FyfDpBMWsNnSxVJ8FaHCWDKLpDHxB0+RUcme HRcpvV+HnLvJtF1V0dRB3XVtD8h6TcGuntFlKHFTKKQk4H5X+fbsUdq4ycNwgNm/ IfyISQQYEQIACQUCQP/PEwIbDAAKCRAdl85shayKgJrjAJ9S1aS1G9Vpq0kYjZHp pFmvrw+CbgCeIgeeepmX9+n+2YEAuWfJlX2KZCs= =Snnd -----END PGP PUBLIC KEY BLOCK-----
<dfr@FreeBSD.org>
pub 1024D/59F57821 2004-02-07 Key fingerprint = 9451 C4FE 1A7E 117B B95F 1F8F B123 456E 59F5 7821 uid Doug Rabson <dfr@nlsystems.com> sub 1024g/6207AA32 2004-02-07
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEAlXqcRBADYFElOoUIMntNwwMiVO/7bQQGYgo0HOz2ih10GpP3iyNletvOt AbH7AFCB/D6eHO/pOs3khk3ys3xL618e8vxttN7/jC+GWlPb6zReE92A75iP7+ud aDCccDlpfsoLfTt8FlZnFuA+d6gJ48Aie5meq1T/IlFV/EJGZ3BfTyKkAwCg545G dnVFL0hRjIJkz6Bs5xKqpxUEAIpfe1Ik8aXgwgbW35dZPUtUNDU3OmullZO8z2BU HefkZDyL+y5MBO/9aGtjN+TpnhmhWcVKD7rhTsL4w8v719Kq3cGFfNL/E1D6YyCp /BU0/Hm9+1MMxPg+nIUkhU4HmtZGoLT71xRSendbZjCr+s31XXxA5YbLruztTRFT YcNyA/oDbsyMIcEemO7F2ypq2FPlnjjCISS2Fr0HsBQltedY1Kr+hfOnjYAcMfIQ QyojMPl3bV4IFcavIhkiQBPBwGJsj/SNgNhOek9v9c4iuLpXzzbOfO4WiRBkpUY/ Fzefogi7d+9t/PyPVzd5Rzwx4eqrTYOeMT8TJmGLWkoUwbMe1rQfRG91ZyBSYWJz b24gPGRmckBubHN5c3RlbXMuY29tPohbBBMRAgAbBQJAJV6nBgsJCAcDAgMVAgMD FgIBAh4BAheAAAoJELEjRW5Z9Xghhw8An02BsS5+rEgyF+f+byeZy5sIrDnJAKDK GpoGPWfwZ8leK1MqENlxZZerx7kBDQRAJV6oEAQAvo0FvU58ew8t5XAo27wvwpxV pdWoKRTF7lS7ENfhwoiHVW2qsX/TfxyRw50BEtDUlFe7lBqSyskJ/3ejcVXuJ5cm vYmxrUEfas57AnBsJqFerQhqB2Pr6BwDUU9kpmJv9vAlt/vdX6lIkXTfvGcrSFWF 7cDEL++0tD63ULOVQ4sAAwYD/1CUpkXjwmFkg72LddRrvmXtKxk3crql4dYj/wjQ JeWeZQT+HKOOIHYFENZAqC8GSfQ621DeFD+TIN9SNeBG8K1LNqxUk71QAwiYSz2R Cm3n97esKKD2SB0yJDQJo+MsQ7PKdQPJtCDk34x0JvA4eijiTj9yGdQX8jWi8Sd7 H0NPiEYEGBECAAYFAkAlXqgACgkQsSNFbln1eCGOuwCeLy66OJdIebn1pU3UXo8O xlFnyncAoOYrXS8vPETOhlx/yeBVsgfX1vcL =ZXPM -----END PGP PUBLIC KEY BLOCK-----
<lbr@FreeBSD.org>
pub 1024D/9EF6F27F 2006-04-30 Key fingerprint = F251 28B7 897C 293E 04F8 71EE 4697 F477 9EF6 F27F uid Lars Balker Rasmussen <lbr@FreeBSD.org> sub 2048g/A8C1CFD4 2006-04-30
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBERUw7QRBADJY85JY9QB4nxv3rXAPnlW59gLmWzuuVNnKBrQsoD5jq6WrDEs fqqU2h/JwHB06RZMm/VUSH9MnsrxpGGKbIuJ9bRn9zA4qbgP0kPCMoyb9AmyGEYx bIp0N1PeYni64IQH3XGaycloWNhNDDLv6o+c6e+wNnRfUv1qygKhM8vf5wCgyN3/ KgxrTIo27FnrLDatjxYgHeMEAKtOpeyGk8VhkxXX7t6/sD1HPvDiuYLfM/14VKWB ZXaWcOzhytZRFbu/DDG2sMiMFdK8Xu7a1Zsfa683kmpgqHkG0FYcS14Y8yHDU1IM GpCRz18v8tZwW4N1npJ/vthpL1B4Hx0SUhGo2HgE85pRHdsDbhp0S6pZW2ff25wZ ljhABACI2/zM6SbfibbyRsvJcyW/TOfnEOxHUFfqT3SFYAP79hRBsqCN8v4fSR54 Tf+jHv7uYVH2lK3zED3sXn2VCgjD3jJNLkeGB6qY/WnWYCB63YwUXk2igOqGijJq XEVplNG6ExaQIco5vilOseqWuW5ONJKMM+iEi5TpfV1cPGFpAbQnTGFycyBCYWxr ZXIgUmFzbXVzc2VuIDxsYnJARnJlZUJTRC5vcmc+iGAEExECACAFAkRUw7QCGwMG CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBGl/R3nvbyf/xeAJ98F2AdELJxK6Po 3rTPUqnJK+GZawCfX/0jvc82JWnGwbDcpyp0+xUJ/xe5Ag0ERFTEKxAIAP2AWduS +WfuTAqZlD2aIzyvzZPOJ7a8ZDmUtBDxbxuBetLMqC3oFMoZ1/857wV3J7Jvxx7u LFbpdYS/0zXTjyKE/NWqeHIuGH9fDOIDuUKT1ZkEh+OzfWQaUihYTib330LwWP1s 9J8zLCJM1SdQSHVDOG9m+28JXH4ITmK3LkR3zdb/QYEOyFmHfhSqVQpZ/KEBYZ1K Kn0gItwqDILuk4v8BvR3ioWF1Ywod6JEMAgJvwypyDlyglvVVvav8UcOYIYfyv2i 6g2EjIqmCpzaEa3m/RumCWaCLIIeZUqpM+rIfQyKcjgU8J254dFMqFYFIX7iFGnO FVhT8tyNXolkKWMAAwYIAPrna0LxXoNVdwCyAW6pcNR9LkWsalQ+cCTS15jnguq5 V6HmMHsbAIwcXqZn6benX5g6Gx68gIrSS/c3iBMS3jiauIu/bjvhdTMLr0v/jXpp 7HjdOkgwfdE184hxVzsO0w3UeWFVhmb6sW/Wb9OtdRTj160mHj5UsCycg7Q75R20 2sBke5vP6o22CCNOZQxM615oFDgotYO/D5I8h/x08IQHlyxzgG2VXFbb/vvibOVs iFA246TaRzxYjo4pJ7apRKhXWX9Bm6Tl/X3X41idqbkZXXcdOV8i1jjJ+8hvmUXX BTrU4DyOHeRrKD2GRBGMn8WxhPL0DN+w2zBRpRdM7sWISQQYEQIACQUCRFTEKwIb DAAKCRBGl/R3nvbyfw7kAKCnpl/jNh5Hx0mkJ6BEDWlmGzuvMACeM95BWxxghmcn J6BmOEuZ+TPmHxc= =6byw -----END PGP PUBLIC KEY BLOCK-----
<crees@FreeBSD.org>
pub 2048R/1E12E96A 2012-08-26 Key fingerprint = 8C57 BE3B D320 5FFC C4C3 C0B0 900F 45A6 1E12 E96A uid Chris Rees <crees@FreeBSD.org> sub 2048R/C10740CD 2012-08-26 [expires: 2013-08-26]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFA55DwBCADLmiSSORwcGwNoCi2X02jPmS2lcZXWp5uCtzx0ybPM65tIQAII L5e8QzyrV+r/yyNdGJIKtl4ty69aVodQ6n6Xf2BGqmm/x6jlvg2BrJgNHYfAjkIV tugkbwsMQxHkNmOlB+fURVPJk9xub4pz9kRRdtXJ3DiImQRw5XVe2ZvBXZuu2nOz jw2zArEaBSLbjo1MlXWJvvuyA2ktaKcAjFyfz/VJ8M/RDbJdfYDB9Q78jrr4uwIM lyWSWUD8RxAvbWw0My2tr1Nu9FDvsydbKygGnZ+7oo4zvqncGZ+0am6D3XSsOcaf /bzB8pIGJ1hsSe9JHvYpLvnWCwP+AJtKTPwFABEBAAG0HkNocmlzIFJlZXMgPGNy ZWVzQEZyZWVCU0Qub3JnPokBOAQTAQIAIgUCUDnkPAIbAwYLCQgHAwIGFQgCCQoL BBYCAwECHgECF4AACgkQkA9Fph4S6WoK/gf/eghgBaGoxfXXbNZwZNIC0NUhISas XVYnKNpKCojFl80ZGzI5mPAFUiQm6aMh3fSrzTIB1uxxd9T9A3KN5ghf9jjtOmpU +uYEm1aW4wHYSWzKDfgfV3QlFOROBn02V8xc1XPaZr0pqBCSJ18BDVwsI8UG9odw /vPrrcE/Gm3psKJRwaHVGTtvJYPZYB5dQM5XD0shvj7DDSdut5l7DGDGUhp6Q8R3 2iMkCSTbaJEQNMzUqoIIw/oPrgsVeNxG7zFrkxbdl4YLmuzy9nZhRPLZ7lWpoRrf 3lsvo7WktMEXiW+uAX23wKH3P0gSypcsJ/jbb0nfV1r13/8O8plXwo5Z9LkBDQRQ OeTHAQgA5GzHZKoE3obEg4Ey/hW5xp/OvyQr9hruwwd5CSxendMJWlmwT9V4QTDl RNtn6n37n70wJxjUHdDrr34ItKhWN0AGy71LKcGBrfMenSW2IugB06/kSik3ti2m fVI9TJ/gTT4uSppM2MTMmRPw1YR9VOGvO3CED4NfVa4EajCUtMMoEVaFCk6hPhzs pSLcnvN+DUVR00RwGQJveHObRCDR10olA0PrLn7hqU2XAlnCAnclSPLjj3pLH9hi vWkoeXr8PKNC50yWqclyuTKo+HsUkanDLgfC9kq+ffLvebUayaYfGyYpBKcxzcBs uLEJhbh26NBqVfp1q7fTnxvNMVMUnwARAQABiQElBBgBAgAPBQJQOeTHAhsMBQkB 4TOAAAoJEJAPRaYeEulqcrIH/iO/VQq5gLquEQfzFdIl0I2HIyey/bNpkhDLiLNv xPVpflymH9c90fdEXUYrI1HSbYKuACRsiXhu+SaQ0uvfBZuPDQZ7XWweuPB8y+fe s86MmAyFXGs8gLisYREnGyltNK3goX+FiZeXdMkE7u+FfFSgMgP02/Ki85F2hj7B nFAyaERP9vCeK20dUKSXn+y7+xqbTZBg7Ic9krSNsi77IyuAQ11BMe+vQVVoEhGO TdjgE2VJzDiS1FXcvFWh93f3AQ9yAUqkstHMzKAfkwqm4y3SFYCS1xK5YUszImAa 2T9qZkw+R7dFEM20OWtNiz6P80+BRw/KAL0PwDFCyU4MoC4= =QoyM -----END PGP PUBLIC KEY BLOCK-----
<rees@FreeBSD.org>
pub 512/B623C791 1995/02/21 Jim Rees <rees@umich.edu> Key fingerprint = 02 5F 1B 15 B4 6E F1 3E F1 C5 E0 1D EA CC 17 88
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.7 (OpenBSD) mQBNAi9Kb+IAAAECAOaa/3k5Zo+9i/fUPQfU4fzrRFwNifp7ujcxLNFsnMgcWeJZ XMd6iGiomTlBSlIHeNKa+JMGPmBTRrL7I7Yjx5EABRG0GUppbSBSZWVzIDxyZWVz QHVtaWNoLmVkdT6JAFUDBRBDA7AqRrL7I7Yjx5EBAQSTAf0WL+tTm+n0NFF2xQUO ZfxpuqnERjNQY5KaWQuC6qk4UOVCwoBNA24ZxY7TifvhsNErMHMc6HTKGvzhyGyV q/pGiQEVAwUQOhrmBjZ8FqYKL4flAQGcEwgAwPj2xt3ITbeUWf6HiqA1u6FiIy+w T+GZC2Mit4UQNdjKuNJad7t56Wqem57IhOGDWGYZJoZki65y9jD0BB7MixjuQhhW CV/vjdiX+pDxa0HG/75CNS7PVribIuhpbTFR2tG/EZh0sl8yMUpYho81yUDMeHVN UV8YqerlqntgqVra2cfPanScFve9YYXVgEbM2wQyWnEG6q0wPL+upmoZ8ppozHfr dVYiOonwl6QrgtzavI3tHTHtxDajMJpnQLC0rWHQRmY0Xd9xs+YUpaoUcOQFUH8L PEp7d1OQDd6KJOV+mQ/Bf7tZwl7as3cl/16nCMZoDJVGNGCuug4vEeV36IkAlQIF EDMEqXeGvtRXff+FMwEBX3sD/1Uf0sqHFBfFtuphKG5ZK9cz12NRANLpVf0welRX Y/Yp9AIL9xGGiEFvlma1TN8IA50Gxgxq7cEiHDWT2Zh4Hps0VWmuH9vGwc84D6PW JXuuPV4sdfCZnJUj+g13P7ypSlPSS8WIDVET5vG+K5m8jOQJ0NPsWGaZMGknXfLT ZDWDiQCVAwUQL8yKYkDqOE5/AdFlAQEmFgP/VwyNP37Vaunu7DdvBblDMpfMStds 9GY0Jmhe7q1EkkGjwSJHtkn31yPwdb/93d25puCU6rZ1+qw5jKMY9qa8RvCOnnNF vN0fOqGso+We3q2rGamjBYtVnihYBni7jCBTJ1lvHixWM5XjyGkIQsRBoh3qNUNA I3LeH1ArE3IHzDSJAJUDBRAvxTnlxS1HbQ2/kG0BAeaxA/wPKsCrDl3qJsxrLPUP tMfXhGBeOZWPMx1rulCknHpTgfjPpA7soh7K9zi9LAatR08sotD7oAFWslP/OR/F DsaLWztFjSmu1laZyU5E7yCIsHgILX0aIsazYW0UoYqCm87FDzHP1kjXs7c6mgOJ g2YIY6o3UH4azIigo37B52J6Ng== =O0QA -----END PGP PUBLIC KEY BLOCK-----
<bcr@FreeBSD.org>
pub 1024D/4A819348 2009-05-24 Key fingerprint = 2D8C BDF9 30FA 75A5 A0DF D724 4D26 502E 4A81 9348 uid Benedict Reuschling <bcr@FreeBSD.org> sub 2048g/8DA16EDD 2009-05-24
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEoZOPQRBADIhhxLB7VS78ooK4j9HuEjamF7QZTXvti7rtJdnJRZtpHW2Tzo GWbmlyYBQoGTk8DVuUoQCO6yy0PNe9CVUDxyXz5dUL8/fSfAOhwZowXF7X5mSP5I 2G70oN9PgdMhxazIPoUlRFAtuDEZl8udtCOVyhiLylXnHj3LJS6XG2oetwCg33hC UWM/ZW2XZUt7+LQfdbTvgycD/AqrDrqazX86fI5MjeRuXB75i6OCUGorcWH2T8i+ P6r3+1A1zjxhXcYMsCI4CDBHo2Z9oq2LN7ullvutfQA3sFR2KxuJmOa7GqHFI7Zl PYiRD4Zkuma2bAxIzer65IwQaaC58MCoBxTUqyKys4cv0Lalj6bh+yVArG0v8is2 5E8aBAC4GptIHT6kfx1515W/1aBiPo+2Qu3227FLyNypKu3x/EwmFu3igbir6EOf uQLbjWclnJv2IXZhxiS08EoD6sFFrgDYAcXa3qPpIMjYEEmH5RziISGDwqCazgFY 63paO2B8aHJB1W+A7jz7PYMsLNXt0JhwG4hLgK8fWT0NKG2TSLQlQmVuZWRpY3Qg UmV1c2NobGluZyA8YmNyQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJKGTj0AhsjBgsJ CAcDAgQVAggDBBYCAwECHgECF4AACgkQTSZQLkqBk0hwvACeKQW/gMO7z6hv57J2 4Ed012vx6mIAoL2JyQyqhtwjM3QJ90ZCvB073uTmuQINBEoZOPQQCACi/zTUlqiY dA+XNPPH93JSArILJcRIamP8n+Ans6akcluVONe5qRG1txgpclh9/v0Cv3qkr3hM Whm3Hh0zCtlrpZbd3oS1qdejpnCJxWTyISI/n6LXyoZ9YHI+IdYkcQowxxFDw+0J jIF/ROzHRyAmHqN0ORPyN0a+Xu4st+lgWBCj84op2xzzId+d4mTTyjvlAzbBaijI xMdbca3R5V4ISFzGiOHtEWQYb0lUz/DZVXYC22JnQdqtOJy/vZ9IMsSdi0tWsugo DGRtfdLAsg6PHIQZgTwbfehQmdSsLAAy43uvs1ywT7Nh0ffCmQawvvOhUOlIrYXU jxnIxQkncTqDAAMFB/91mznM5M2NWRhEIG5p0SKJaq4rrXUngMA0Tl4dhrJhlkol TfTTlS2u8jSjEK+39Lbs8uWZDXg8PHK2i8LOmgmuf1JfRV0clJMa01D/ZHIBRVB/ TrJ3ia9rM7EG+2GBFzjkuMEpKBFrW/YLtCJZUdYfyQRjtLRCa3NEfQolvUvA3V+W ehixnxIpUJrz3JjLGcDVJx0tkgtFV8f1D6O9WEUc9jLzAM7ehrqbA1QQFlnwDcZo T1m0+Js3cIOfiLMqHB6iZi0tBTj5A2h5C/lWVCdw0HYjZkRKc2uG7nFfv++9mqS4 HyiCcDiyStR01S/CuV5TCLZ17tW1Ihi53EGO8K3hiEkEGBECAAkFAkoZOPQCGwwA CgkQTSZQLkqBk0jJ8ACcDgRWhxql58ou07O1MZZbCBzDnkwAoI0ngzxuGBDgIIyx vPpqAjKmWnR2 =WFIY -----END PGP PUBLIC KEY BLOCK-----
<trhodes@FreeBSD.org>
pub 1024D/FB7D88E1 2008-05-07 Key fingerprint = 8279 3100 2DF2 F00E 7FDD AC2C 5776 23AB FB7D 88E1 uid Tom Rhodes (trhodes) <trhodes@FreeBSD.org> sub 4096g/7B0CD79F 2008-05-07
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.9 (FreeBSD) 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 =S+Kg -----END PGP PUBLIC KEY BLOCK-----
<benno@FreeBSD.org>
pub 1024D/87C59909 2002-01-16 Benno Rice <benno@FreeBSD.org> Key fingerprint = CE27 DADA 08E3 FAA3 88F1 5B31 5E34 705A 87C5 9909 uid Benno Rice <benno@jeamland.net> sub 1024g/4F7C2BAD 2002-01-16 [expires: 2007-01-15]
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.7 (FreeBSD) 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 YbCuiDguaEN052KDrSoDvk4S =L0S4 -----END PGP PUBLIC KEY BLOCK-----
<beech@FreeBSD.org>
pub 1024D/ECBFDC44 2011-08-29 Key fingerprint = 6921 47CC 8B61 7C02 70EF 4D00 16B4 EAB7 ECBF DC44 uid Beech Rintoul <beech@freebsd.org> sub 1024g/F1FD1C3D 2011-08-29
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBE5b5cQRBADUMThWYK/+cy0IO39D+w5sREzc5rvsCh8Ia0n7EIh7BqL0LrO2 AGRjImOC2GCDdXNTS84RD+/TwonAOWK6tLn4wDTuYJQqi/0Z3IrPob7jKKwhK4o8 zVwb4XLLWKTV+nfKbeUfcrp7eeD0mDRX3YJ1b0piT8AFkLjqQGiF4L7VrwCgkO8C uIffCwAV6oAFo+taWxeNQNcD/3luZVyWCffbWXHAYuXIBCwX3/9ehSqS1u7RL88b 2xD0D9ZAaXC3kiv/ccu1ZSUx+olq2uHTHfFRdeoH26OOS1yMD9x0oyyY/hfpiWHU MOG4ZMkV0M+vdIGKOyCoQj13bUYgEYxoOT2FR8rjMWtdy7kgyJrVk0k5b3px9Jd2 qGlMA/9eqgeEQuZsXoX1mT/0ZgDp4PRxnQ6RJ174HPM4zgG3bhEiAhUAz56NSCR5 mKq5Lj2FqWq8jlb7mVD+hL/taKIBBAGBjaXhotkTY0Lhpp0SzgVtkDGsmgKxlqfh ZQqLC4cgTLsqAYQOt0IqlK54cLkwwm21VeO6q4Mo0HSiuLVdUrQhQmVlY2ggUmlu dG91bCA8YmVlY2hAZnJlZWJzZC5vcmc+iGIEExECACIFAk5b5cQCGwMGCwkIBwMC BhUIAgkKCwQWAgMBAh4BAheAAAoJEBa06rfsv9xEs0oAnRCR2Md2jKcIx8F2WPDM sQAaSqlzAJ4h+qVgOzfFULS50q+1kvB/PJ3C6bkBDQROW+XEEAQAp1lE3HT9kFTH XeaNi+IMfaorNcaYkHmGwqHuTiKXTWDmhbUEIqT8jsPcRVF1etw7gK7l5eNilQsE qHd9IgBx4SfP/j3rl6wH9tYx53013NZTrDcR8C37+9HhFO2xwHMCXEk+4rSkyBZ4 D62qtZeiYouL6Y2vfhEsYJcy1tgRWocAAwUD/3RQo+7vgIMIGbQVcGcQNFKHLj6/ WMSVDIuRj5fm22TYnqTVBbOUOEEXXPnops5+K0X9sv6QXFb2mqkPQR2Hed1RNIdo vp834XCFS6frYNdc1ulPSAevsFwBR9ub9fQS7Ca7m98n16M7xIl2QTktQQl/RuGb fIIHpH2i7AuB+RcKiEkEGBECAAkFAk5b5cQCGwwACgkQFrTqt+y/3ETvMwCfQk/G 2zlUtzB5mYNsSNNHflFIGSoAniU7mn15Z82cwMAE75DMhQKaBHYD =Fb+t -----END PGP PUBLIC KEY BLOCK-----
<matteo@FreeBSD.org>
pub 1024D/1EC56BEC 2003-01-05 [expires: 2009-09-07] Key fingerprint = F0F3 1B43 035D 65B1 08E9 4D66 D8CA 78A5 1EC5 6BEC uid Matteo Riondato (Rionda) <matteo@FreeBSD.ORG> uid Matteo Riondato (Rionda) <rionda@riondabsd.net> uid Matteo Riondato (Rionda) <rionda@gufi.org> uid Matteo Riondato (Rionda) <matteo@riondato.com> uid Matteo Riondato (Rionda) <rionda@riondato.com> uid Matteo Riondato (Rionda) <rionda@FreeSBIE.ORG> uid Matteo Riondato (Rionda) <rionda@autistici.org> sub 2048g/87C44A55 2008-09-23 [expires: 2009-09-23]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 zIEAn1IOi7barh7DDNvdtZ5nQ6V31XmDAJ9Lh/KNe/dgiX6GnqA5ti0fEwB8N4hf BBMRAgAfBAsHAwIDFQIDAxYCAQIeAQIXgAUCQXVk4gUJBTfOpgAKCRDYynilHsVr 7IKJAKDU1KY9xWJZmmoLaHnOjNcMt7OsewCfVaLCIj5OI51InSN6rube6W5gmtWJ AkgEEAECADIFAkVVuYgrGmh0dHA6Ly93d3cucGFlcHMuY3gvZ3BnL3NpZ25pbmct cG9saWN5LmFzYwAKCRAmSeYoxdNNBcf/D/9erGdyo3vlqA2jUIOQRPQMNCS/71J+ 2CFBSmJ2I9WmeFDR/aMFSVrd8AQ8YmgaeC0qA9Ql0IYaT0dTfd0FSb/vwFlPsd0J xBSTAtnNVxwFm70WT/Ny11MDqveZwbG2/k/JKICDQ9bgfe5CVwTybrtl4scvTPDS KIPUG73BDMurgRsUF4zHXbzo9ltEO/b2++sq3Y0f+V1IMMMGGWMU1NF1SbkbQyx4 T7jGJUPbDrMF7lmdZKRW89EIxYQ3jLPVB9A5zksSrc7oWSQ02NUjLffju4wi2nbp 4SVYmkaL1rDP03j3QrCVHA76wtNg3A9Z7pwPmau17dcvFxmrc8VTiiaIwz0ssClK Mcf19qeWNDvnD8Yx/4xUL5QpJe0QpRzY0kI8IWhiLqZAB0NveemmIZT3OoeDBXDM Xa8d+WD7N8O8LZkjWqKDAP6aMAlZ+Vc6Rr6xkdvQlZejMWqNIgQTnfi+DbEGG03t CFTiH+ymssuph1yz0EaP3wwwmIqLO6onFmemVfStgfww7jRifnpeD3jWKicgL7PY 6k39Lsn1WTBHXrCM3nIfHGn6toKdoPMUsf7tCKcjEcdpzWih1lEbBwRK9GExXeKw 3FtEToJJtyCEWVIaWPR4js86/NwQOhWpIZqYLaGMy3OtNdTYfvDSKQmoOhfU9Ma1 MdgFreifHUYrO4hfBBMRAgAfBAsHAwIDFQIDAxYCAQIeAQIXgAUCRvJKowUJCrtL 5QAKCRDYynilHsVr7Ct0AKDGZfOIDsaFhDfcgsQyosFn8MGztgCcCSCU7JryVjKj fDuu8pFy1BNwema0Lk1hdHRlbyBSaW9uZGF0byAoUmlvbmRhKSA8cmlvbmRhQHJp b25kYXRvLmNvbT6IZAQTEQIAJAIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAUCSMP1 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 LlxcQeUB =cJab -----END PGP PUBLIC KEY BLOCK-----
<roberto@FreeBSD.org>
pub 1024D/7DCAE9D3 1997-08-21 Key fingerprint = 2945 61E7 D4E5 1D32 C100 DBEC A04F FB1B 7DCA E9D3 uid Ollivier Robert <roberto@keltia.freenix.fr> uid Ollivier Robert <roberto@FreeBSD.org> sub 2048g/C267084D 1997-08-21
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.2 (FreeBSD) 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 izq3ic4= =mgE0 -----END PGP PUBLIC KEY BLOCK-----
<rodrigc@FreeBSD.org>
pub 1024D/3998479D 2005-05-20 Key fingerprint = F01F EBE6 F5C8 6DC2 954F 098F D20A 8A2A 3998 479D uid Craig Rodrigues <rodrigc@freebsd.org> uid Craig Rodrigues <rodrigc@crodrigues.org> sub 2048g/AA77E09B 2005-05-20
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEKOK8MRBADOO9VIucM2dGygVera0+Hcu9ud2f3MrcfVgsB7/awfE/MgIYtC CFtCJrD1Ml+p/spmiuzJNDSamT8NHywsG5R+GO0EC76+mfL3hwXvGUJoQV+NcDu6 99s6OUWTimi5OPOURzG7lXYpO0wVysx3R5Nzg7tIC06fmXNXuj02JvCm+wCgqkPx nZgCFoqq2mHoiLL59CUExbED/iOnglDOuZsncR9xRZJfbSLUJf5z9NE413FXAx3f THY7+akGk8kWChrOeyIvLvSGmkHHFQXgh1umG4fFd7TCJ0Sexh44s5q0ROjEK4ge nwAsS0iheMB6JqW8ibBfawr2iwu3ZAkqfelU+NSbHm4sEeHxEGyJtZKA7rOPGDm8 YOBZA/45n2E/Z6hv6D4Bm1xEDGNICK28uTqzXh0wyCJJtVOortd4CmKZZrZJj7am 3aDdtFUZ1yZc5FW2E0xLa7Oz8HUj7eMT7Ljfd0c5yNna7WcNjqWNAz6WMhHByRZv nOPiUMQNvCbyrKw9OsFKNNbrSnjQcc/5yy0SiIMVm4rydXzK0bQoQ3JhaWcgUm9k cmlndWVzIDxyb2RyaWdjQGNyb2RyaWd1ZXMub3JnPoheBBMRAgAeBQJCjivDAhsD BgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJENIKiio5mEedzB0AoIXeENkxV41KlJMV z0ozHJ/q1ESdAKCimzfOMwz7Qyauo4VHs4rk7NEPerQlQ3JhaWcgUm9kcmlndWVz IDxyb2RyaWdjQGZyZWVic2Qub3JnPoheBBMRAgAeBQJCjjVzAhsDBgsJCAcDAgMV AgMDFgIBAh4BAheAAAoJENIKiio5mEedT6wAn0IjcGqARj8Qe+JZThbQCQbH0ERp AJ4w1pYLdsKphwaEB8GakvaeRsrBTLkCDQRCjivkEAgAo5DHUcjEBK54Vo2S403y InnfqiiUDXqb8Oof18CICB6JgA3NjP5g9BE5+7dI8relt4Q0ILg2IJvISIlfmyDl +GuegA3dMo1IrghmtI5+IWN2mm1iNy96jpJ1TQhvHTFDlETdV/BE57CcO1ZnKHiW m9G3GjnMrunVyLMEY+6TJ6ykqP2VzYBsc847iCv477LdYFe1+vedZb8Bk9xpeeZJ tuT3O+JiR+B/SHISpycxyM3ei+C7eRRC8wV+khOw/8xirJ1Wzyg3GrolQPtJsTNG mqg6DXIYPY5wbF3SUBT5ZA7pLPxXhUWNewU/8mXisuM0hp7nz9VLQ4JfbMuvGF2j wwADBQf/SCUw06q5l8qdJ9G3WFfPOE449mq5uXHGlfeamCkjx9/SzI/8yldrxwdF 5XiAZWRpeQoksUbPI+tmxWqi8NDxt+KLDNhSCg0+C8KRFBY0ZI4CDmUg+MX9Mix2 ir/RK6eoEYNXdt32raX7MzQP87LTL+cnxJzbQ702HYpVqrJUOgSRwQ3posbp7hwV djfiE38r9Hd/E4ZxxAIT3GafZ12KzxQZ8dSxoa/2tP8VfAfe9jt/XX4F0QD2yIGV 2wJMd/CZWTZgDfNW1anGR+9AyV9dT+8cYi36fkgTQb5rN25rJKzHd9RA/EGJXSU4 l1hNG4gBpYjF5gD/UTuSgGI6XInycYhJBBgRAgAJBQJCjivkAhsMAAoJENIKiio5 mEedTS8AoIa+gNX84jClqNvPR5lMlQGKeB4HAKCaEmhTA9kGSY5JW3hsfDiwfr0a PA== =hHZm -----END PGP PUBLIC KEY BLOCK-----
<guido@FreeBSD.org>
pub 1024R/599F323D 1996-05-18 Guido van Rooij <guido@gvr.org> Key fingerprint = 16 79 09 F3 C0 E4 28 A7 32 62 FA F6 60 31 C0 ED uid Guido van Rooij <guido@gvr.win.tue.nl> pub 1024D/A95102C1 2000-10-25 Guido van Rooij <guido@madison-gurkha.nl> Key fingerprint = 5B3E 51B7 0E7A D170 0574 1E51 2471 117F A951 02C1 uid Guido van Rooij <guido@madison-gurkha.com> sub 1024g/A5F20553 2000-10-25
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 jwCgnb++jBLoAgqu7BiWMBVe9sCLfMY= =qL8T -----END PGP PUBLIC KEY BLOCK-----
<rea@FreeBSD.org>
pub 3072D/8152ECFB 2010-10-27 Key fingerprint = 82FE 06BC D497 C0DE 49EC 4FF0 16AF 9EAE 8152 ECFB uid Eygene Ryabinkin <rea-fbsd@codelabs.ru> uid Eygene Ryabinkin <rea@freebsd.org> uid Eygene Ryabinkin <rea@codelabs.ru> sub 3072g/5FC03749 2010-10-27
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 Edu6GCfjXE66i3XaSUcQWu+g8BMQUo5Huw== =xPkv -----END PGP PUBLIC KEY BLOCK-----
<ray@FreeBSD.org>
pub 2048R/4B7B7A4E 2011-05-24 Key fingerprint = BB9F D01D 7327 0B33 B2F5 6C72 EC49 E6ED 4B7B 7A4E uid Aleksandr Rybalko (Aleksandr Rybalko FreeBSD project identification) <ray@freebsd.org> sub 2048R/99F9F9EF 2011-05-24
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBE3b+zABCACwiwsbEdmRqU1Tsb/ErrEGYPO6uGPy04niDFSwT4EoW9tJmX94 bZSfD07hMUHm3yk3sSNBVPYYqvolCd+Wa/aSBo22Ru8MT5gtFT6QmRmo0r4ye6hp 0jddGbTE3gS62ojQCDayRrSWhqYDtxMTVhF28+GVf9Yb8xD7booHz+soOEOp/lyi rMbAKKpAKKzlbTg+JF4xuNAOCQeYq/iw+5/Yv0WRdlPFlAhefpC9HGnm7Ci2oX9O yadz6O5B8Z3mvXrprHVf/gZaxpMbqHtiCwUCOjyu+65AJxZ2RtXOZGlgixVldzZ5 1/PkPjf66PNOE/jei7lQfoiXSelbMsn/0m89ABEBAAG0VkFsZWtzYW5kciBSeWJh bGtvIChBbGVrc2FuZHIgUnliYWxrbyBGcmVlQlNEIHByb2plY3QgaWRlbnRpZmlj YXRpb24pIDxyYXlAZnJlZWJzZC5vcmc+iQE4BBMBAgAiBQJN2/swAhsDBgsJCAcD AgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDsSebtS3t6TkqnCACNpw7DnH7mPLVtJ9Hk 5V6kzsY0Fkt155HcOw5IqK2UJUqGZTa1Y6SMjqC7Joq7P/3myjWOyN62xByQ/kcL VT3Ee9Nonknkjx1S/7Y9aVlCoT3koB/no9BQRgTsWX2oHUEakBftYq/8sx/1jzAc YN9DffiOIfXH43435MtYc5dct8lRaQkMXL6hDrswqqnsC2lefISiRojWgSpX2Iax VsR9KA/gDGXcFQLYG19ivgQ/MWMwfHCQd5EyPa3JGsx/G3Me0uA2YC8igzuEG/PJ 29G2eAhA48T1iDbmD7rHsMRdNvr9+0vHemNLyBysyzS+d1opwAE3HPeFYslbRfQp UxJuuQENBE3b+zABCADfEA5d/HafarrCijuoKqv7miY4JeknD9CezUiI9KgsjIAQ Nv6ObNUoAAZyO/tmKyK1c6ohOQn1m5knH9ldSU0aj/loeBwD/tSjqenqI3rk+XH9 ZUW1t8U/2fEt152hbaZIeW3X5ovSwNJxL5GCjvqiy1bNq6rV7hiQfnwET3cV/FmA KJUlxRZKNbJn3VutSIF4vgOVJTdZy/0dDcpUubHcfVFXeZRiBMQiBqy/WW80VL9l /RZ8js/ArM7fNqnHtGN4Hgxfh5HEUJtQncYs1JNkFiUD6aYL3zsJAbcXcfyEwo6Y Hpsn8hxuEYpAVzsaO7E63Vdgyag1b8ELRBbYpranABEBAAGJAR8EGAECAAkFAk3b +zACGwwACgkQ7Enm7Ut7ek5nnwf/V0kzZ9N92h8oes2ZWwnuWWbZewdp5p1AZmaj FDeM2Usiqb9tOWizJwKI6B9Z66S2TdLTrCwtcPWhrr/MPfWTNffCgrVI4jOczCeT Jm9Y6OBVdlT16sqF2gskwLlA73R64TYJxS7uYAjOMvhFzXeZuJv2BLxSI2NBvpfh HfvoeBAM7NRmuJrUXz90ik117bzEcuEBwIDRc/fGUvSdWm3a+AmbVtyPR24RFMGb OK2UWrTXa9TiTAKKLWKyDDYf/B4nOtGoF+OCkpwLgTNJE5kwh+PnJjN7wsdiAvL0 2cUXjLV5wX/C2w1FFMtM7PA/7aURr6CNmS+00mriikVFT++FDA== =Q1YE -----END PGP PUBLIC KEY BLOCK-----
<niklas@FreeBSD.org>
pub 1024D/C822A476 2004-03-09 Niklas Saers <niklas@saers.com> Key fingerprint = C41E F734 AF0E 3D21 7499 9EB1 9A31 2E7E C822 A476 sub 1024g/81E2FF36 2004-03-09
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEBNxyoRBAC22NnMqcH1hXXkz+jC+U2QGzOJdGHZtLRXDRpS4blFtRgAf4ab tZY6LJUMnjmdgaPP3Mc7YE/ITF1hGnzYF2jbJazNm17nMSP/66dGJt9dK4XAE4cc 5nYo3GnEkacAa1zUvM6e9OGaAIkndBDUW6+a9aSQNcNyMnYL1/APv+wdIwCg2G4C N221QrjrGbxVQPiBM51lY98D/11d/h8aOHYkf+nirhIj9GvRmXJfD3RANZUDjOsj OKGgUNlXm/AT6I226v9urfdtrhMg+5zdO+I2p7dZMad/RpnSYo0GMdLRzOlN6aoI +4JYoACq2C7iR8pmItb+L4Nl5nNBwmcLBXD+HaZebGffZy9Uvy/A5G0ty08I8LKm 5STvA/kBMybZhX+RTq5v1Kzau63bMBJR8MPHyWYAIBW2wTMJM1ndW5RrbIMJ71qC 8DFFTHFJd97s/fqBMQ9rj094CdDxCYQJUkZy5+qiBkRta//iSlgsi54Xhj9prgPj nBMWxUjAI5Ih0VPIp3/z/q5aQRvey8Ro5JWmduzH0KpLv2Qe17QfTmlrbGFzIFNh ZXJzIDxuaWtsYXNAc2FlcnMuY29tPoheBBMRAgAeBQJATccqAhsDBgsJCAcDAgMV AgMDFgIBAh4BAheAAAoJEJoxLn7IIqR2/y0AnRetbhzvjj3kKOV28bx2Qt+YRA/j AJ4yY9wDPJpwq63IsGeo3BYXi32zPbkBDQRATcc5EAQA2SipeeJJjvrzqqILHNA7 X+m/PAJonO4QhyIEXXMhzNGdiUVJ7wli23gGVF0Cj3V97Yw5KFGco3qOvvsWkO4c CLwd3NHbVL6OHKM36LcFd+a6RiJO9qAGGixyqUIkqYeWCmpObihrkZy9WADsSJTc /qOrLghJ0GyR4Ga8CoFNT/sAAwUEANfA3lWeTj3QZcDnJZYejt1aJWt7oUBQ/KOc HhTjY/A7zkQsAdgbcmuhzSiIH6eoofTwNOl/Kl0ieSdIyFMFfVxrmYEN/HUUUI4q J+BgWZgppinaeUEabnZPfY03T+ZanJ3DmB8s8x4HdpFi3jgtWY0KfDhDfHtNIeRu CYmLAzjYiEkEGBECAAkFAkBNxzkCGwwACgkQmjEufsgipHbIOQCfSaudT6wnsh4G 6D9TZkji6aDqUBwAoKqxWnOya/v/MqcgrXGSCih7phIL =Hz+C -----END PGP PUBLIC KEY BLOCK-----
<bsam@FreeBSD.org>
pub 1024D/ADFD5C9A 2006-06-21 Key fingerprint = 81AA FED0 6050 208C 0303 4007 6C03 7263 ADFD 5C9A uid Boris Samorodov (FreeBSD) <bsam@freebsd.org> sub 2048g/7753A3F1 2006-06-21
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBESZt5sRBACyDUDxsmkdq0XNNJfbsdVO07/vtUc+rP5hBEdMzbetPnLdujSX JtwzS2b5kQFk1ONAuTs9udlcZhhq5T2FIyhqpvgLG3tnt4gDabRgFsOL6oB4dFKv yL5emRwnch+wYlwfaoWXsXpWfdHQCwFfL39lsYLIR/aXcMwjXF1wl9yl6wCglkCt NECUgmsoUYE1iOyC5PnqHkMD/088reqeJuH2hWHupCOihIOOddQPiKX3EY1Y6piO I3aQFxOq8BdYw+3WAlBs4vegMmzk9MYEwP2STsVcPE+eu55m1GCRRds++oyv9tQO TFZVsYEuvJALvHSW3InTGHWfhQPrHcdodyRjhgo2bKY1RwO3RHYDRRQj5i8LDn/9 kRSiA/9Y9Cl8Abr7kuPbgw7uWb8lRta9/le1UWQXpU6GAZHXEgppHenDaRqvbaag MhXXiKuuFAz4LNHf8UDqyQ4fjjfR0EajIivV17hpzagPWIzzEdr4j3RBpwHMYLbV 1yfyml5QT46amMd2Vwq83Zgn0cUObu8E0IITqTMkweEvH+soOrQsQm9yaXMgU2Ft b3JvZG92IChGcmVlQlNEKSA8YnNhbUBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCRJm3 mwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEGwDcmOt/Vyam2gAoJHvCp76 i+XiNv4R3pJgG0ZxTCjOAJ0S46VswPDByVJZNF95pfy1qEDb/rkCDQREmbekEAgA vAUui6QrSn//3FHeSvH1smd0432C1r8IHvR7m0Ki+F1cRolkWF29y6JMpoPcXrWC D5OpGfZaZQ9SwhedFr776xAwMDWAHlrHEpPC4OE3RPq7YWENc40hL+ZKfsZhGA89 H8fiU18UdDlARgg1PDBbVi+F4ZFfKSyNcTUO3brIIpUy5OfAdTkgl3JFKERlqZic ZWjS9PXjsyaeTYn1Ny2T9WZqbk9Ghsb2/t8bIyayu9KNnI+vRSafRtaomeUEsKme YZyU4pLutea2Zj6u8BtEVyxp9Gcy0Whn/HwQc/FZE91Z6UzViucBqKmFmw3A/OHF HV3DAxd2ctkBrt5jzgJA2wADBQf/dD7RVzfD2ea+jpgqJW5EFDqYebjPLab5GZJ6 uUWWZu73ynDm92lemzcT67JYirU0H0sQ6QmcZ9ZwqqdW/taCjvpsXPFb88B9AL9c aQD41otxgpCF/zMQwgS24DCrdtPXiKceTjHNEAMOM9xS3FBNAWjy23Jz6rIt3ROD o0X3iAta9cT71Q6/u6BYo1YRuLIAWZ1rpkELb06NUxsVuEQmBKGMBKf00LEw+AV8 0FkaEukzFuG1u3k2qkeFJEZW0C6d04JT5jsskRiTrIzkd1FTyaEdueaZoiPBQybX KE9GyClXn1RMWA+dzAjjNvJOo556NAIpebgvXMd1rHSRxumHdIhJBBgRAgAJBQJE mbekAhsMAAoJEGwDcmOt/VyaOikAnRQNCxBdrbQSOLIxrChaMU5tNejQAJ4hpoO4 tGfWhh+Ib0+vCD7UaSphYg== =fafd -----END PGP PUBLIC KEY BLOCK-----
<marks@FreeBSD.org>
pub 1024D/DBE7EB8E 2005-03-08 Key fingerprint = C0F0 44F3 3F15 520F 6E32 186B BE0A BA42 DBE7 EB8E uid Mark Santcroos <marks@ripe.net> uid Mark Santcroos <mark@santcroos.net> uid Mark Santcroos <marks@freebsd.org> sub 2048g/FFF80F85 2005-03-08
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 IdA= =F4/l -----END PGP PUBLIC KEY BLOCK-----
<bschmidt@FreeBSD.org>
pub 1024D/5F754FBC 2009-06-15 Key fingerprint = 6B87 C8A9 6BA5 6B18 11CF 8C38 A1B7 0731 5F75 4FBC uid Bernhard Schmidt <bschmidt@FreeBSD.org> uid Bernhard Schmidt <bschmidt@techwires.net> sub 1024g/1945DC1D 2009-06-15
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEo2DaERBAD6iTY24oR5YgIAGmKudAPxNNLLaZPm5tsa1eQjNCRp/WPLIXCS /x2oZPk8JoKOPnHNuvfzKnDwh3sB/hKAQOwSTHmtKQ7Gq9Uq/IpuQXHOfF3JqJ8p 4pOEHCSdJPv1rGNdv2Uh5Pmas3qfkI1pcn44B/XAYDVoYC2CsHmTHSMfwwCgwKIP BELVfQZDMaV/Zkv1etazaLsEAJXHS06o4TFVmrHzvhMPlBmS/MDJyt04MaqJwCkh IzZGpJ6c2rS+a9UOj5Fy8zeim3f94U5L4pUJUmn2SitHTGm14A+ZN7r2dmBC8jw5 Oki0tbz3yObM6KSzYV2BuZ7BLP65KXAlUnHM5h4rw/EJaTL6bm0Z0sOLpc74KnZd qgi9BADzkJnZ0VKRRZ18xfdbPqa8FMeHJI/IhlBrwEPSeRqEjZCtTYfePzutbpm7 YRpXk2cMe+k6Xt+FrSVF4elNT5/b3SjWjmZr7jLQ+/RvN+AH/5Ru9bQHVfuL6uSY zoHgl9Y5RKJMkzWfdn1LknaRIqE/ciWq22cESYJ8e/Wrk8lFVLQpQmVybmhhcmQg U2NobWlkdCA8YnNjaG1pZHRAdGVjaHdpcmVzLm5ldD6IYAQTEQIAIAUCSjYNoQIb AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKG3BzFfdU+8UXMAnRd2NUzksPzw xY9oQMyjeP1cg1R/AKCWoPmmPjJDsf1/CQIkMFMb7RuTDLQnQmVybmhhcmQgU2No bWlkdCA8YnNjaG1pZHRARnJlZUJTRC5vcmc+iGIEExECACIFAkttpeICGwMGCwkI BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEKG3BzFfdU+8Ht8AoJS8LxsUX8jA7J6S WKwM9JPJ+adJAKCPcJC5vcz1C78IB2XBmnbbKmrYLLkBDQRKNg2hEAQAzfaS1s2p EOwwH6ZS9JJ0mnoEfVUkO2I3yfMvXZ4HVkf/lmjQziSsgtbOUPIsIZxh/0V7sDU6 4ShmeYcY2GpBRE5NFAOo721nOMzXtSbwhUt8ZNZkWXLOCXE/oaS1UoPTQ8KW21IN prsFPuVORaZPn1BKXSt/g0l2mkKDdgjMLe8AAwUD/RCMR4fDfuKULk+PG4DrGuyz sz/6MC7cmxH76SBzLARw7HOKFXQoVPUfBbQ8oi5ynqFobgENEL5iiWrPhRHLYiJ1 ee/RiroqJlDxSHno5qU4FIjVGm6b1WbunQ1m3bmK4ExFrygOvHwI0RhoySoAhxiR vttEGBF27GMdkRaaUyniiEkEGBECAAkFAko2DaECGwwACgkQobcHMV91T7wEHwCg tY2Mbu5ssnZVqMYfEKlx2QIJvZYAnRkudrXyV2F4QME4eLCgAXrjDptm =FKOV -----END PGP PUBLIC KEY BLOCK-----
<wosch@FreeBSD.org>
Type Bits/KeyID Date User ID pub 1024/2B7181AD 1997/08/09 Wolfram Schneider <wosch@FreeBSD.org> Key fingerprint = CA 16 91 D9 75 33 F1 07 1B F0 B4 9F 3E 95 B6 09
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: 2.6.3ia mQCNAzPs+aEAAAEEAJqqMm2I9CxWMuHDvuVO/uh0QT0az5ByOktwYLxGXQmqPG1G Q3hVuHWYs5Vfm/ARU9CRcVHFyqGQ3LepoRhDHk+JcASHan7ptdFsz7xk1iNNEoe0 vE2rns38HIbiyQ/2OZd4XsyhFOFtExNoBuyDyNoe3HbHVBQT7TmN/mkrcYGtAAUR tCVXb2xmcmFtIFNjaG5laWRlciA8d29zY2hARnJlZUJTRC5vcmc+iQCVAwUQNxnH AzmN/mkrcYGtAQF5vgP/SLOiI4AwuPHGwUFkwWPRtRzYSySXqwaPCop5mVak27wk pCxGdzoJO2UgcE812Jt92Qas91yTT0gsSvOVNATaf0TM3KnKg5ZXT1QIzYevWtuv 2ovAG4au3lwiFPDJstnNAPcgLF3OPni5RCUqBjpZFhb/8YDfWYsMcyn4IEaJKre0 JFdvbGZyYW0gU2NobmVpZGVyIDxzY2huZWlkZXJAemliLmRlPokAlQMFEDcZxu85 jf5pK3GBrQEBCRgD/jPj1Ogx4O769soiguL1XEHcxhqtrpKZkKwxmDLRa0kJFwLp bBJ3Qz3vwaB7n5gQU0JiL1B2M7IxVeHbiIV5pKp7FD248sm+HZvBg6aSnCg2JPUh sHd1tK5X4SB5cjFt3Cj0LIN9/c9EUxm3SoML9bovmze60DckErrRNOuTk1IntCJX b2xmcmFtIFNjaG5laWRlciA8d29zY2hAYXBmZWwuZGU+iQEVAwUQNmfWXAjJLLJO sC7dAQEASAgAnE4g2fwMmFkQy17ATivljEaDZN/m0GdXHctdZ8CaPrWk/9/PTNK+ U6xCewqIKVwtqxVBMU1VpXUhWXfANWCB7a07D+2GrlB9JwO5NMFJ6g0WI/GCUXjC xb3NTkNsvppL8Rdgc8wc4f23GG4CXVggdTD2oUjUH5Bl7afgOT4xLPAqePhS7hFB UnMsbA94OfxPtHe5oqyaXt6cXH/SgphRhzPPZq0yjg0Ef+zfHVamvZ6Xl2aLZmSv Cc/rb0ShYDYi39ly9OPPiBPGbSVw2Gg804qx3XAKiTFkLsbYQnRt7WuCPsOVjFkf CbQS31TaclOyzenZdCAezubGIcrJAKZjMIkAlQMFEDPs+aE5jf5pK3GBrQEBlIAD /3CRq6P0m1fi9fbPxnptuipnoFB/m3yF6IdhM8kSe4XlXcm7tS60gxQKZgBO3bDA 5QANcHdl41Vg95yBAZepPie6iQeAAoylRrONeIy6XShjx3S0WKmA4+C8kBTL+vwa UqF9YJ1qesZQtsXlkWp/Z7N12RkueVAVQ7wRPwfnz6E3tC5Xb2xmcmFtIFNjaG5l aWRlciA8d29zY2hAcGFua2UuZGUuZnJlZWJzZC5vcmc+iQCVAwUQNxnEqTmN/mkr cYGtAQFnpQP9EpRZdG6oYN7d5abvIMN82Z9x71a4QBER+R62mU47wqdRG2b6jMMh 3k07b2oiprVuPhRw/GEPPQevb6RRT6SD9CPYAGfK3MDE8ZkMj4d+7cZDRJQ35sxv gAzQwuA9l7kS0mt5jFRPcEg5/KpuyehRLckjx8jpEM7cEJDHXhBIuVg= =3V1R -----END PGP PUBLIC KEY BLOCK-----
<ed@FreeBSD.org>
pub 4096R/3491A2BB 2011-03-12 [expires: 2016-03-10] Key fingerprint = A110 5982 A887 74A2 F4B1 D70A 6E5E D8FE 3491 A2BB uid Ed Schouten (The FreeBSD Project) <ed@FreeBSD.org> uid Ed Schouten <ed@80386.nl> sub 4096R/81BB41E6 2011-03-12 [expires: 2016-03-10]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 Y6j1y6QnLaPN =FiVI -----END PGP PUBLIC KEY BLOCK-----
<das@FreeBSD.org>
pub 1024D/BE848B57 2001-07-19 David Schultz <das@FreeBSD.ORG> Key fingerprint = 0C12 797B A9CB 19D9 FDAF 2A39 2D76 A2DB BE84 8B57 uid David Schultz <dschultz@uclink.Berkeley.EDU> uid David Schultz <das@FreeBSD.ORG> sub 2048g/69206E8E 2001-07-19
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBDtXc9MRBADg4tN94el8rq0ZMUqB2jEVACg/UfYjtsaboDL4HBBUH+P+Wxic 9JqotcTbT8pJGeRpeXbfO0YHaAFnUfilhoFkeLyAgDvnUP9Z77DjFpliLAKlvuCz Lxi4UxgQXRdedNCg3omrxQWx7Yx067GT/yw4RgvogOuYBX0l3AJ25/WBxQCg/6Dj TMTu6iYR2Y6dEL4NGs9PnBMEAKBlhelAhzYoMpcWpk2VITUgONMW+Oi2JDTmwDd+ 1FAUDc1mHSoNBKPUrCWyXiwfzL09/ROlK/KMR6YoYtV6d66zZ/dQNuzrMhsis+Ou PCtvcaR5NGln49THgcw7/K5gTjwrG1xA/wcwnvUp6sxjh4p88meI/LNBAstixb3z FiLDA/9pAqn42B9ZBL1le98DTiLDemHvQFgXu8Oj20IIF0umyJRBfKwDY6iIx0gd 1rUKua6XnqMSEg+LmHmSfDBaAOsFTdnL7wVU0tLF0V9goxU4qDZjw5EeMEqnk7tg /6REIvtdOA/GLOmr/Q0WA4JEukcih3AQ9iFnwg7WAp0S4GF6gLQsRGF2aWQgU2No dWx0eiA8ZHNjaHVsdHpAdWNsaW5rLkJlcmtlbGV5LkVEVT6JAEsEEBECAAsFAjtX c9MECwMBAgAKCRAtdqLbvoSLV78JAKD4iJ2kNeTsYQnWZ2DeytAeqVaKFwCfTIQE lFPZyaQr7yjthREE+8SPZCG0H0RhdmlkIFNjaHVsdHogPGRhc0BGcmVlQlNELk9S Rz6JAEsEEBECAAsFAj5S1iEECwMBAgAKCRAtdqLbvoSLV4b5AKCljokqRgi/pbDa ZebYLluQCIkbgQCg+jSKAIi1r+CZiaCJdqk193IZVnm5Ag0EO1dz0xAIAPZCV7cI fwgXcqK61qlC8wXo+VMROU+28W65Szgg2gGnVqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ +AyDvWXpF9Sh01D49Vlf3HZSTz09jdvOmeFXklnN/biudE/F/Ha8g8VHMGHOfMlm /xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl9Ij9WE5J280gtJ3kkQc2azNsOA1F HQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhdONM0/XwXV0OjHRhs3jMhLLUq/zzh sSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZ Jrqrol7DVekyCzsAAgIH/1AtvAGCJchvLFoaR5KNocKcoUMe2NrpRrFS3DsYOsXU 0U95pmAHJaMt+wv4UDs/wNzOzC6stRML+3lg6sYnSgddH+N/DA0b5jQSAyNWlL87 j08h3ATaPeDD6qhqFRe3uzpQMAJJWbeTdyiT2vwgglgcaJWuVjYSfkkxX7AVDFHw C4IOuZ0aQhHyHQsGQURTg+sotMx+kX68o7oGZqBBOcr8VdFyrlq0Tq1b/i0fJnn2 Nz5hY+OOXbyeoJbaY0KiGnnMwHmeZ2eJWk1cCHUZnrY5WOxYQHail2KHXxhYuPoI xsL0y+XdErX+lc2BiEbvXROs+VxEo/3/BVJXAIar3nCJAD8DBRg7V3PTLXai276E i1cRAsj2AKC26JMJWsvd93UUWRXDKmU46MgLggCfTOIjPheQwY9VCN3jO9YROzij QVE= =qhh7 -----END PGP PUBLIC KEY BLOCK-----
<scheidell@FreeBSD.org>
pub 2048R/34622C1D 2011-11-16 Key fingerprint = 0A0C 9ECA 18EC 47AC C715 2187 91B9 F9FE 3462 2C1D uid Michael Scheidell <scheidell@freebsd.org> sub 2048R/8F241971 2011-11-16
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBE7EJJwBCACw/7AoltcqlzLBZfdNZTb/9zMBRV2X7Qz8jtOrmFj10GpasMCe oHWLXHyWbuVgsu2QeANorUcEMvVpkCkNWG8EewKH5QbUcehqPfs8L51N+8Xxdzr3 LlAoOiDFI6FWhDrHvdXRgzWM0xU7OMAxPkXpVNhT4cTmLwWGXmVNtxL48MRTsUz4 XRMkXpfEEfXJ0xGsz+Q5AMSUbUIAOq6cKCreIk1s2Ir9UHHBJ5E68W4jHFk/PnYP WAx1z+PugI932b1RmnZEycjs2U+QN925vJ+V1172tU31TOPF3yTVkeltV/R7yXgB Pn5iDDrhILjOjWxj3xOGXJja/ikERYAPUEqLABEBAAG0KU1pY2hhZWwgU2NoZWlk ZWxsIDxzY2hlaWRlbGxAZnJlZWJzZC5vcmc+iQE4BBMBAgAiBQJOxCScAhsDBgsJ CAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCRufn+NGIsHabBCACaxRmi/WgvVt5y r/9DfYDKMBRZwdvTmPqSc3qa/HyCH5b8pIzEep0UsVw977LmOnMbHr9TEzU9YuF0 XyA1WZNdzjnVjlRl2VW6/Cwo28jnwnESiGD/KNdU0e0T4ntqP4eLEd7t4Y4WhpTk JBidX0r6d2+CQyCFk74zDc5eTXS/sLZZJommr5JIo75L7LWetuxR6AFrZ3SDdanc ktHJspZAN69yVb3XxoDveVF0XXE/RSeStWtWHLJNN0r+6Oq2CAf1fJZhFOZybPhs zYy6xWFp3N+myhq9HgPmlQcB8BCPHu++S55Ybe+4ZDqtuLaALQaT20zr73Vv4VHi QMiB/TYnuQENBE7EJJwBCAC7Qjm0lGOxZy0JoPTkZ32KW84TxsQ8IH/6QhAP2AVN kCaVrlZcGaZKd2WBQIcd0Br6FErD+jrYB9+hv1kGj/2Q3dL9UbB/Ee7ywm6++rLc RdRhlyeG1or+zjcQEvJyYEzyGdJi4R1+6SIQLaJiPrGL2GvGWfx7xk7UoJe9vayX ie9LNBoqq/qlXNRRRAu8DvOk4LIRcZHwv1urwZIGoK/Kmj0DQJ8+mrqXBugkI35G /XVeIgOzAoDGHkIR+eHGp7iOaAxDWwRGgtcYp8hgUASLgMxOM7npc1agozdFD20A PmI5uLqS0nmHiGaQYbS9azkZh5zwDKXaq6xz0LDuBcgHABEBAAGJAR8EGAECAAkF Ak7EJJwCGwwACgkQkbn5/jRiLB1lPwf/bQmsQnuQIM1O4cWxS8zKqFp30k1GaU9k GEAUEeY9JB6z/vhhleNwiMV6DbIfzFN71JWs00iyI0NAXDjNp+PLR+lBXH0Ztca0 C4N7vqNnbsg5CleKK5n66fOc/HVB86rpmBFU2ji2ZQ3NO+A47XlGKyHgPvZ//XfW +WfeuCJ3tCWnx7lVTFXh/tIKO4fPyJ+dmp0JzumT7lmwG9YPwKovx6s42DD+62NM kf1yKac03ta650N6s90zB6XswCa8Geb4pn2f2PGkobY7OUfqymf+Rnj/kfnkRFo6 sHoeErC1UGxAi59bZaVJ69y1/fmJrRD92ymTEj4DZowEs02c5NhwtA== =S4If -----END PGP PUBLIC KEY BLOCK-----
<schweikh@FreeBSD.org>
pub 1024D/0FF231FD 2002-01-27 Jens Schweikhardt <schweikh@FreeBSD.org> Key fingerprint = 3F35 E705 F02F 35A1 A23E 330E 16FE EA33 0FF2 31FD uid Jens Schweikhardt <schweikh@schweikhardt.net> sub 1024g/6E93CACC 2002-01-27 [expires: 2005-01-26]
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDxUIHoRBACGAbIspofa2HTwV0Y81ZgrizVgvsHduKRMYmu9scX6eFSQWC2a JLXXnMJMK97LG2m6qX/hzjxZKU/n2eNpHa3h9zLYQ/8VdN+AFHGZtgmZ7xe7UpBI V2YohykdmgKqg8WuVQGrNTwbkaAFeLnG3yXhR83qukRvv+qFfXbEF+1S2wCg6lLg YJ6U4J1pfTO95Rd4hw5v6DsD/0hUfa6C6C6xjME6P7r/ORd91+nJsfO0pcV1rK0s yCMdAy/zdUlKpsNF9vS0qhCFonuOHWxMEe7D8L80oUAwlk4RrFBm+Ch7RoBGYGru aEom/7JGNoRqUD2CKbFnkAYi9HP6XlXcpgm3GO4c4VtIcEbgywjw7rNhmNoYLrZV YUb0A/9mNCqpPTd8ngm7kPyTTMJitYEVaBPXEdiPueYJND+eI9AQkcqYhs6LWq4c jgmTNeImQ+kR1UeDj3dOwUDqhGmLPN60nD+Q2oHHBif8NJOu47mx1dgdriM9FsTN 3UbeSve+mY8Z8zcPIYKl2UJLPZckWgq4pZRrE147cnKHSHHM9LQtSmVucyBTY2h3 ZWlraGFyZHQgPHNjaHdlaWtoQHNjaHdlaWtoYXJkdC5uZXQ+iF0EExECAB0FAjxU IHoFCQWjmoAFCwcKAwQDFQMCAxYCAQIXgAAKCRAW/uozD/Ix/ZB8AJ989jyDH1G2 T1KMoNd7gPk9tAw1VACfXJgkrI42ShC4cHz37xrVLXeJp9i0KEplbnMgU2Nod2Vp a2hhcmR0IDxzY2h3ZWlraEBGcmVlQlNELm9yZz6IXQQTEQIAHQUCPFQ+0AUJBaOa gAULBwoDBAMVAwIDFgIBAheAAAoJEBb+6jMP8jH9P+YAoM72fnNwxxcDjb+3Mv3A CfbHonYCAJ9lfK9fIbkgfAHo+2kwnOEN4yWxzLkBDQQ8VCB/EAQAzzIqOgms7u+e UKampP/5U9G78HA3GIkVLcAeq5FfpFtls4NmSKz240zNxXmABWTSlBmOQvMdhB08 vRbzEsxPoVdNaF+QvRZYEr5+2bOM1pnHqYYMyUKwN83LXgTDnXxas4mtrkgngZTe tGdFQ3PIVqW4jV0MmnEmaqde0nMJ6XsAAwUD/2z82PDDwFBu1Ogogh63qE69HSQt 8weHX+Skmi75jE3r2niUlx6B0IfLXzFqP33vyrsov7QHgAuOjNficisbC73o3gjp voJ2RYB2IfUCgeFvipLpqY1TWJ3bF52TYnJg4rrEWd5OWs4FB0iaJ78LVWgq3WsN zfgcgfQ38d+scJu4iEwEGBECAAwFAjxUIH8FCQWjmoAACgkQFv7qMw/yMf1PIwCg nSP0i+q9jhEf9T5xA0+qg2yYB/IAnjvd/tA+2/5bP4pObE/oRNjIVZBZ =YPu9 -----END PGP PUBLIC KEY BLOCK-----
<matthew@FreeBSD.org>
pub 1024D/60AE908C 2005-12-17 [expires: 2012-03-21] Key fingerprint = B555 2A96 274E D248 5734 0EB4 F0C8 E4E7 60AE 908C uid Matthew Seaman <m.seaman@infracaninophile.co.uk> uid Matthew Seaman <m.seaman@black-earth.co.uk> uid Matthew Seaman <matthew@freebsd.org> sub 2048g/58BFDA29 2005-12-17 [expires: 2012-03-21] sub 1024D/9B19F956 2006-12-18 [expires: 2012-03-21]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 sg4yrGkH4IXKBB8csDYR5w== =IPI8 -----END PGP PUBLIC KEY BLOCK-----
<stas@FreeBSD.org>
pub 4096R/092FD9F0 2009-05-23 Key fingerprint = B83A B15D 929A 364A D8BC B3F9 BF25 A231 092F D9F0 uid Stanislav Sedov <stas@FreeBSD.org> uid Stanislav Sedov <stas@SpringDaemons.com> uid Stanislav Sedov (Corporate email) <stas@deglitch.com> uid Stanislav Sedov (Corporate email) <stas@ht-systems.ru> uid Stanislav Sedov (Corporate email) <ssedov@3playnet.com> uid Stanislav Sedov <ssedov@mbsd.msk.ru> uid Stanislav Sedov (Corporate email) <ssedov@swifttest.com> sub 4096R/6FD2025F 2009-05-23
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 syiKxh4= =OeD1 -----END PGP PUBLIC KEY BLOCK-----
<johans@FreeBSD.org>
pub 4096R/D3AE8D3A 2009-09-01 Key fingerprint = 31C8 D089 DDB6 96C6 F3C1 29C0 A9C8 6C8D D3AE 8D3A uid Johan van Selst uid Johan van Selst <johans@gletsjer.net> uid Johan van Selst <johans@stack.nl> uid Johan van Selst <johans@FreeBSD.org> uid Johan van Selst (GSWoT:NL50) <johans@gswot.org> sub 2048R/B002E38C 2009-09-01 sub 2048R/1EBCAECB 2009-09-01 sub 2048R/639A1446 2009-09-01 sub 3072D/6F2708F4 2009-09-01 sub 4096g/D6F89E83 2009-09-01
-----BEGIN PGP PUBLIC KEY BLOCK----- mQINBEqcpnQBEADprno8T+hOoXlhAGyiOGjsfjtof1Qm3e+mCuIEt+xqauPS1tmh Ono29qhbEdEbewNadk3kQuyyDFgikIGby2voNwn//puS8TSrANovB989t/4jaiYz vCzxqY+WBK3VorlF7ZdbRtljYfZj/1lKxU7AtECxVNwAZ6A0Xrbd8jremMnKqIQa cF+pJqPVL4EIxtdZI3lcG2lVA3oyFcp3tjscln2PmkD5NjaIMChtvIQaszy7LzFc XNe0JU+kRsSPIlj/llf7jqnXjHOuDXMKPYOGojQSrGPaiWMq00JMEpDvVkrYCdFL B8iZlValVMBRJuZSz5wd0ZctIeDs63v5Lr1uCbvrAQUpGQuRGzTEAW99D5oVskxs gvwSaE0BMACgXQtArJTOEzB8ZjPPulg/3y/R/cPEfesHhrzI4Q4FqHOc5nmx8E0Q McOc7fEAxBuHLzNRUKfxrI2cPrTLtodfqScZ3Y0p1eBqRmA5TgiLxDMm1arQpUSK 5VvLkQfr6lPq9vESCXs3Oi0Rej+/TNronAbyRQ7BK1PTJ/5ZUHwmzRZlnci/pgdn kRlQgCJiax73J6RAZOeTTtRBhCuLYdyyeGaeV2IfDUf9wveC5PmQSfQVVcWRg1ty mVxIEBYuOCKQgraufOkUzk6COokaCGk0qnBL9T0alXYr3UXLBGjfrkjJGwARAQAB tA9Kb2hhbiB2YW4gU2Vsc3SJAjsEEwECACUCGwECHgECF4ACGQEFAkqcrQ0HCwkI CgcDAgUVCggJCwQWAgMBAAoJEKnIbI3Tro06lFAP/jmtu5ysfv0TM14kxgdRxpls rZeaJOO7Q4iyyLNbDyE8ZRFG3QdUoA7dJf3S2UvfuqN3qwNwYHYO6o1lum2yIfRd MekvLTgUB/yijNyj0ktnAENZXfNtZcVlhk3r2y/NXyQkuBUOC1jm9PZKkjiblZl4 2mAr2GB9N+f58CbqvAhm8QfoTXYqs9aOdYTsunvKF7Rbj9dpGWT7fWiVEXCeox4w MNXCEnS93bGxqbspOe6UP0JiR75DLQaemcoyN/iVR3N9yXUnEetfuSunN/iPcwCk L3gNKgerAPt0jCW9zzUwncLBwSdfWBxIZFED0XzxbEHtsk9Tv5EZPoWYNV2/bi2p YEEHoxDHwTSY72m0L729cafKX0ZUpo66GpOrT2eAotEqDYCXYFleh0iWXxUsehQ/ DEd3xwAwRuUM8TNCBiigE/b2f6NU7gyJkTrkzZ6fm3R3OlHbUEDVIfQs0KERxixA sQS+yyam9Svjvm/1m2u89igT7n6v3wbTU3uLhEakw8toG0jQgUFJte158pSDOmae uJ39DKZq5ht1aqWkf6F1rqG9qYzip2GR/m8TZL0UlR9fMVWLUmJwcig3q+9o5ZAJ Gu+tdUgXRWzsvi6WRKlOb2pohyENKvsAVH221yt+THm+6Pa0EuasUYqgDvvK5XwT JpDUmmOm9p/Yc/z9AiZZiEYEExECAAYFAkqe0REACgkQaOElK32lxTuXfgCfUSra 3VVlY64YX9ROsAHdZmlJ+oYAnimWL68p+mDONkx1yWBxTjUqHQe2iEoEExECAAoF AkqlmDoDBQF4AAoJEBByCxU2vzrtlw0An08H2kBp/XcoZBqDELQZZHVNTEoDAJ9e lb8/+xjWbY5DQaCS7HaPJSm/C4hKBBMRAgAKBQJKpZh7AwUBeAAKCRDXmT7UvdE7 kGbwAJ4wrg6Q9mzAJ4ujuijpA9eoum2SDwCg/3fKQXXK7gk9EJWYjxMuFhsQDZ+J ASAEEgEIAAoFAkqijJsDBQF4AAoJEBCGy9eAtCsPswoH/i6E3xOMHqC0FoxzqyQl czgp412aUyS/LTB6BPNBbqqEc+OkEpB1Isb/W19WJWCr0uCOGewX+tDR4Lv6mxp6 w+eLzybzEDKif/2T6cLua6bacUZzRRxJdhsuJMH23EEirV8114XvEyUM2AuC9kfv /RgpO1mo/fuy1QCNjMfAE/QpLkGT+W070LQope3ZXqi8ooNtWQnsPPkv9K/KakAn df6COa2MFpUtSY4W2hJNJti90N7dmmSG8OmPQygYF9qeM6uMalnhdqCLwnjRJlAu mqMHhUV8J2exoeMyYIDscMly3tTemeXLazKjX1HBT0iKzoXQvUbtfMqki+fS13V4 RfqISgQSEQIACgUCSqKtIQMFAXgACgkQepIbwjxKGAkX1gCg3J0E52v35FKmZ/P1 fEe+eOSm3wAAoIQ+M3iIjWpl4zoc2Pm+fBN+urciiEoEEhECAAoFAkqiiFkDBQF4 AAoJEDbnHCpaky5T4BcAn3YvwSeKCS875LPJgGs1kk5qNr1aAJ4ljDDmPfRerzYs MJvKc8Mx/SpBBYkBIAQSAQIACgUCSqKMjQMFAXgACgkQEe7L7rRk3Q+s3wf/e4pJ JsryHUUFJ59QXnfxnGaOdAN2X/1YGVeTj+T7Hn8zhO1dQSB+k+CoxjhCiKto6cc+ tt2zdJIiUkesc9/ZZ8TtYgTADHWrxgILgItmhV1BA3eZ27WRGsU86g8IDLKJodVq +Hhx2eEb54CrVj6TvhdgFeRc264hqYLpKaog5GE03yfVI10w6H3vknFlgcGcVgGB isOf530DctS+lkE8UJEHJy4dQMBhFikIV28YV2taSFDFk/Rmndvg/0pf5GH0D43/ 9fuV4xVArEBZks64Wp5hj+9wPEfN1aBWEY3mHdozVfwqAuZAEIVpk/G1WqonfnWR TCEtHQHABtH6pTKpeIhKBBIRAgAKBQJKpmFiAwUBeAAKCRD381LPiJXoD9a+AJ4/ 6a9oyCQpEcpzCoHxbHBs87xHJACeIxn2A8Hwa7jcDDp9JT9NUYoe1x6IawQQEQIA KwUCSqZ4HQWDAeKFAB4aaHR0cDovL3d3dy5jYWNlcnQub3JnL2Nwcy5waHAACgkQ 0rsNAWXQ/ViW0QCghJK3kG+DB7p44FNEibFk4YpErFYAoIWhsAMNDZvsWDQ9foPq SKSpAuQ6iEoEEhECAAoFAkqmn9sDBQE8AAoJEPcpr9mBgClU9V4AoPJM4YUfq0dR G3f6vdQ3cVA+MUyHAKC96N65/s5Us1Dly51Nvup5/ZumiYhKBBIRAgAKBQJKpqFP AwUBeAAKCRCLxr+ZNdY9j16GAKCqOLfkdZxy1EPxycMKQNocQdnUVwCfXcOUCkaC RH698o7dAxIKuA+XsJeISgQSEQIACgUCSqahfAMFAXgACgkQHWelwMBq2AbG7QCc DMr0zxuAG+Shd/wLYduDMSEmQXcAn2vm5Ns/rYBx0Ff5pVaE47NgibuBiEoEEhEC AAoFAkqmoaADBQF4AAoJEPGDTqsN2VJBUz0AoL8jYo+L5hmPF7HF9U5/69Vh0XGU AJ0ZtBuW5pHMsw6PoavGaV6Yzw36MYhKBBIRAgAKBQJKpqHvAwUBeAAKCRBHhV2p bRFYvMIkAJ9Z3lnZkr7L0CelhJCllNjZuwOULgCff966Ei9nWGaH1+Rt6qtlx7mT bv2ISgQSEQIACgUCSqaiHQMFAXgACgkQBsUfSegn6dhrqgCeLcfB6loaH0aJsNs9 yeNvcoPOdiMAmwX/+qYtJIwCj/Rq00v97X2x2Cb+iEYEEBECAAYFAkqmrcoACgkQ qs+zhiEbbu/ZbACgt9iysRPmUsm8TZx+FSLiecTnn9wAoPSZ3+pcz9S3ih4sSTAN K0xSamrniEYEEBECAAYFAkqmkcAACgkQub27dH8SNyuZfgCfXBayViaCw5WndUQ7 fQwhhn/JoxYAnRy4z3Es55kDo1vYJtKtowBfJmtuiEYEEBECAAYFAkqmyDcACgkQ NgOy1CrygD5/SwCdGXPwE/0/A0PeA/ZCVPGWZXEdQqYAoJVcqfo1I0MXJPc5cNC+ v0YI1Y9ziQIcBBABCAAGBQJKp2jQAAoJEAmUCUYh2+/UmKYP/0xz2I6zRvAAYfeT qUy4wRy127tzWwv7XlGKxLxev6X8H0FzHQ8klpi7NUxvtiDHkYq7soGeGy5Rq1Sn OnsX4R26MTFFOzFI2mfid9dhEj0g5AV2mGbrzj/pO5RZ0i2Jc6VlAnJYQ6w1rvZt HR8ZDsgYtOJoq6ObQoiFkA/1Ou5vENVIHj0tYdVaFkRxJeYxLMC0lleTCFvP7r72 srfJFuZTQMhlnaW53xiwRJIk8qKnmATwS/gZvYhJgFBsBM/eDUWo3JbL/xvua5MU drqANXfaVcRGITzg1RD+mTFhSu7xEOIjVbhfueZ32Jx6d2WN76nLL7Q7tq6DHssY nl5DN7ZYkdQFm1ia/pgD3k45l9Pz8SBNzcpQpzkZS4U37pyZwA0K9BlVK3qFn9eg PxwDcAX6YsLLLJiTmCvbUbqOyBW0KBbNiAPBWe9y+mbmz3SkljoTOQx1im4nJ4Nf 3Njqnk0GzRsH/QTMwJhWenrYlols0grZuVYNX59TMu90aaVtvHuMuy7KQ0qmFU4n 8CprGGDWUolTXrNs9m+BW0uYgI+y0r5+jgt/mye+IXcqhquL6wpd+nY6t8KQXv2S pw0fxHeUgeYxzezdNRmLeELkm6ralKX4KhlblRixDSmZREJCFffvaZ7WjXPcCHaL Hvt0O3dIvwLvCWGU+Cd7i+rHJvLYiQEcBBABAgAGBQJKp5BmAAoJEDlnPg/70uE5 tHUIAIIScwGH4/3bcXnDSkq6qXR6+ocdAGdsLNdufDoaQ4U9xZdMA0msAWNsCdEE X0bLX+TN076P6ES8UKUJBvesgXPpGWI4/RwXvem8MzuUNwOHSHhp56bFSplAVsov x4QCvDQNxRA+OU4HQ69UYKSyY4p/YHOmjTyckV2wLeWSseUpxAQTKeDYjKQKT39M UDoVbKVoTuiLcprszaJAyAkFVqDRqvwK7Icvz7TZMtyhe6lSraM7wIoKSOOGbvBa 2ctg3EfW0ShqSz9sxMww7yujCw7eBZIBL0Q1yQZBXGsoRaV6Fp3IJKPCT7RsSIz9 BSauDaEcVlKSDiQBHtpk7JZMRKSIRgQTEQIABgUCSqoXPAAKCRAvlRUIquYCLl7l AJ9cMezeVdik/1G/wJwtIkSLKCk4zwCffHBTHe7nDNHXKGnTltXicSuNtkuJAhwE EwECAAYFAkqqF0sACgkQrDCHmqtVsxKo5Q//dP0gnUHyTfzMlf4/Xfz7B8xO1rP0 Cec23hCT5qQPxlBaPKDmtaYaeO0pyrwNnAN1xPJPaGbx6Ocq1aB3AuRQ4aEON++9 HhdsDPiUaJNMy/CFDXD76QPKWyegCsVYh+nggffR7LB+820U7JLXQZA4HD2fhUZ3 c4W/8FZG1hXuHB6E/u92Roi2GruIBXyuYBqJKQ2eJqMFdo3ivRnKh9ijWSBJto05 5dyUp1JSIuEdQbjjOEp4klKo6LEHnsfD7LZEbQl0IGZp3cBeS2iRNjr5p5KAgZcN bLo7yr3v+FmwKbo3JUH8xrj2ThFZ+fEe0zNsQzMjQ65Uu0OCkGraEbnCr9VJHewn O10uRRbDhmQkJSFOVOc201fWdS6BhUFOPzVIZS3JSnc6Jc2POnHg0/pNDSHggtBo U8rhVmIpRT39IBJfgOKV/ZBgVdI/EorIgZ1cJSQHleFbRi3iY3A4Cncvrl0tAwjJ 7ES0Uom/mloKB5TUP4ddDfZMyzL/kb5zABAUISGeqRhyhdvILxAaYXjXdY93ZWLB zxHkJ/QKIIteKwvdpOjwyB1enw/7038lYhfLvsS/VErakAzjevOBtbk7p+XPCguI i9X673NwF3kNdkDPmkkx1Ri4HiuWPOAEdacYfVhzofdLMaxtEOWgBZlv4J2ayPFp yCEj0ZfdXbJ5LDaISgQQEQIACgUCSqawtgMFAXgACgkQctTf+NTD8ZdXxQCbB/mz k9WQmVj8wI9duZKpco5HtVwAn15MhJhTfyZpCT+ULks7tEuXFuu4iEoEEhECAAoF Akqr5wgDBQF4AAoJEFi7lhvQKwF5DHMAn3sMBXRs1+Hmf/PyxGb9u5QgwzUVAJ9o wGUE2OcRHiU0JldEA8ay7UQMEYkBIAQSAQIACgUCSqxXswMFAXgACgkQghIaRUMZ QQ4eBgf/aS5tLIwRZPSB5ABaJ+hYBNqwgQglxNDk4Pt3v5CU3JeYCz9IVkVFwOU/ AmESRWG1k/l+s8dKdqlOloRlgP3apl0mc0AUzJS5bbvkPrxHf6cz/pvxxp7wGwgA leyrehOhAtNWDqQ12y2L5JmBAHzV9WgNSrdZR1Q+1BNqlUOdo/LPim9+MT+rmuS0 xGxZuF4XqxcNNA4MWV+0Y1qd9GCZVtvZlD8xhdac1xkXJ0qbE30Wp12NZnVJ7qS+ pGHXila4ZRVlC5nD9MYyxqtGEQYr8ejE5dP0btfdY7/mQ1cKWx1MyVQYC3v8mWH8 hR0wrUt5l9iVPCs9Rjtw0voJBDQRZYkBIAQSAQIACgUCSqxYZAMFAXgACgkQrfMu 3+Px2PehvQgAtpK8olMmx3qNu8In2f7NkCm2DmBBy8NtO9N9C6CDRUDMmaW+D3uQ H7hpBUVCf3Fpl0WUCCRFiXGr/tK2H3G/JJR98nxqyoSTcijxTCCT77bbm4osPK8V XpPkVNFp8kgM/jQa+3GrqFnRGFZIZ0gNhGJP9vDuBZ0Z5LOS3Uirt6cc2w2MrAXC e609j295GVkRypkZ6RoCEuRiE/5AsGBkAQ67fW6kUXveGxF1MJbReN6qfTOCr6Sg lDKp34UQXtupDvlyuqyOXbU/+ujH4HZdlW//3Hv3t/ww14D8taIYThr4DUeYgG/K CcxWJZIaG3HCsXyDyJxXiuZ13uCRi4RRj4kCIAQSAQIACgUCSq4spQMFATwACgkQ Ndfaqf58fOlKUhAArEERkqZVenEtG3UOr3klsA/zSYXY2lky2sphrBk595/bfWAP 0msECksAELpWhCGuAWjmKMOjtf4+LDpjJJ/WYtK+m7XRoxAqKFOTJV5LHWCeo/Y4 xnEee5r4xq3Hnz2NvExSjfVNhS24zdCzoibZpii2IGuFq4hFmlkbtlsEkFNzd37P XxMlVuR3SaZnxDUYtLWM/5Buu3UHsw3MArWjzkC4x0dal2BAdaWHu3saKWvqECbF igeRUkSqBUIthiNtV2tEnviZeWu0cIYNQWvK2yINf4p9fOQgt8OYxda2+OrA9+LV FqxZlXrLJte/QKrQyxTx2kJZ/Ao96rVVIpOaEvTxy5tbIA1OwOr8kBMkl81Vl0su j2jFggujYRi+a/8pb4HrgWXHEuGX3cjuAprf5/3My07mFBO32t9Oyljrqxo/01EQ 1rutiV+0FIXYFynU8XS8c9fkVRvzGKjiXQmIb8W8Nfl18LBxRhW5kdM8YSKWCVK+ PVphRedlLkcvpIeqJVyDruMWi2mv34P8LcbDeRBjTjRKseyCpWpNGOS4usls/RCZ a9SD2BfJnImk1NDK/9KGi4wcM/Pr+DkK6hk60URY0QxlYjComgHtDYyURI6cgouV I+XBoDNdzhEZH/whH3Fx/9pT4i5Q1+28wmXox2SkReXv0NUUPuphmtuGQUe0JUpv aGFuIHZhbiBTZWxzdCA8am9oYW5zQGdsZXRzamVyLm5ldD6JAjgEEwECACICGwEC HgECF4AFAkqcrREHCwkICgcDAgUVCggJCwQWAgMBAAoJEKnIbI3Tro06YQ8QALhG 83o8eZIMOchaL9NKHsZQmqu+BQiYR3fDmRxmWEVbglyLzIxoz7pAMg3osznOmY16 KMAOe0Y1L/gTtI65pZn8h9n+E+uIh97uWoGtnsfsMkArq+siaJbbxp38y10KmFp5 yzZHr7BKTaBaLF83+mUXanuF/6s76FcljWleFKx+ia7n/BLj0+LKwpFgYqv/UlAM Uvj9ufiH2Xj3xBfgWOm98DCiFYwZExWThI276QvE1xZ72wTyQ05FOjpL/2UzIw4Q SM2/cGZY7riUOypIcFdiXu0AEJ6yKNhsDzplrBpNHYWsAjju2zEizZ5KZ9N07pEG OeZjQ/xk6dN7aamwd25k0yE5SfDPISBLQJV0Nn+J5X+3tqq9uWcao7lMdaJzRPj7 wRDuDwz7zQxlbfut11Ye+SLbMiHu6qbK2ciP7rQ6wKy+fO7x9fqRhWDWFnVeRu1o KfzylQnbgbmNT4pXLvPYos/cc+eLecdIeMREJZCffXb9UFt3yJSLx0tldspG/xiz 1CnLKNfpv4pIvcF/BbeObIK4fRjz1ydUJb3lMwJn49+u+nJcw1228u4schvXNC46 jqITLIIjrIh5Z+TFgXXq1Qu/aT9vKYyv4M7rEMpW3ATvssHb127Lr3H6pEx0cD9n XMbiC8XaQw4u3OQvR5vjphEbRLbyHWNBUPPz5SgaiEYEExECAAYFAkqe0REACgkQ aOElK32lxTv7iwCghs7rqnpD9QH9gWM3loBkYqlf3RUAn2yRd4/0CwM8Oha0zPaT VPJ3CFy2iEoEExECAAoFAkqlmDoDBQF4AAoJEBByCxU2vzrtSj0AoMKqzg7NjLMK fgKalmGoqg6Se3lBAJ4uHBipTkpNhTjfrUNP3qOJxNi/CohKBBMRAgAKBQJKpZh7 AwUBeAAKCRDXmT7UvdE7kBR3AKDntL/LkGSeUPadzXfXEHQq5L9sBwCeIR8ZGqfN QSmLCc1W9paKmKLS1h2JASAEEgEIAAoFAkqijJsDBQF4AAoJEBCGy9eAtCsP5TQH /2c0UomTy3PHgrk9FVJmTRUPMKdkhN5FG6l4hcLtzyNXF0hjYiVxOa8PeFOTh4aO USqtD2PLfuxTwfFbTP+xTfYCKUary6wvlppwVY9xFvGFQ04hYAOTyngY4X1vqKXr HVBesUhcRebvxvvXEpjwGO45qBQLiXQKb8j72lCyT27DAJArz7HFIo6viPWl3xaX yA3JNY50VXXaGc84aD/U62SWrkZwO0b3TTbqaB03t96iOZ1S/td68g6aMJgIPP0e LUeMKUq2XT4ZoYm1mUi+ZC16O8J0FAy/g1hBocyOkyPG/FR4CYVjfBIjJKR8Z+eb c34kZXbAu9NzOnoQgtIcdE2IawQQEQIAKwUCSqZ4HQWDAeKFAB4aaHR0cDovL3d3 dy5jYWNlcnQub3JnL2Nwcy5waHAACgkQ0rsNAWXQ/Vg19QCfS2MPOkQuep2SY7lZ nXyjU3QwF7gAnj2f/3ykDkaWWWgKvE5uDYSDA7/niEoEEhECAAoFAkqmn9sDBQE8 AAoJEPcpr9mBgClUAlsAoN/1rftPXjp1Rs8Qcerym1+faxpQAKCh9s+BYuHoTPw8 toLhon5GeQlQlYhGBBARAgAGBQJKpq3KAAoJEKrPs4YhG27vAZEAn1/mCdoaHfbH fw3qoiwGI/2e5DKZAKDgZmWVPAvk63XiTEMmVBj8wyo2hIhGBBARAgAGBQJKppHD AAoJELm9u3R/EjcrnFYAn3NJXIozeTFIbOgrGDOTT7w7LxTJAJ0agEei1uGo2jKr 0ELOPK0nm4tiPohGBBARAgAGBQJKpsg8AAoJEDYDstQq8oA+AIkAoMvI1BnYmmae YwWPCemCRvVyEzxPAJ9Abd1BMAe+mxiZHCoCssMaoYl7kYkCHAQQAQgABgUCSqdo 2AAKCRAJlAlGIdvv1KFDD/9FbHEMafmTmj70B4Y9UDgT45ZxgBA2krECgp6MWxfH kiITdsUzgsrV8NQrVzk5SnBbFRmMvfnJFMn5onGcK84d+RfstzwvT0r2X/pg/hht LMVyJN1s1SffTaWl8wodk/xrg73767Q+kzhBLxlI9QIjfT7gbWqodb75VR+pD4JQ ZavZqX6upfoP2VRA/tre6SqdDGHzt1VFLExrxA8gRlj5R12hrEETIKrt5F7JH3Ja W+qvKAXQm2qeX0o2SSqNTTxxUNDxKAZHO50hZ46V1CYoIgp3uww9LFAaLfkWVRW4 rqgw+xBb5F1TwmpmsTGLs1OY/BhCy8JCKaTY0fWDKZXFSeJtXcmgtb8IZ7a/KraB l8bRA4DFjZkxfbNyy6VtKhwyPh5atNDMSH2oGxBQHK1bHF0MLFdwwNks4eKr8qhs IfE66K5ws6qDxZ11kAVLx/kvoycPwDpE1hSA8rOZefc9FPlYHpC5OeDpg/qZQX2z ELbBSmb+CZew8Dxzv6UiBYiw0vp2Wzo8JncLBe/MB7iwUK09KDyiizTL+PHucNmm J4PPiq1Cz95S+U9JPXka9xiL5dUVNHU29iqcXONJrglKOPqCx8hBHxGp8QZr9VFq 5tQRSZFCZw887c9B3Ygy59PcUytzIQOGxLUrkzwTzwCMHf1Ocsb39ggLKQPZk/HY E4kBHAQQAQIABgUCSqeQZgAKCRA5Zz4P+9LhOTFZB/99QQuC6qCodfgXgQ3pf9Z+ TQmf0hTCYN71ZTs/CeWyxpCodTbkQ0GBacaRW8taz2vFGS9BVHrK8TJIcopRa/Di PL1qLYfyR8ZxDptsn+8wE1F+iNPEhG0zM7wccJlImVLy0tMqDOoEqIpyAIeVX+Z+ fv7/n1eXbmwDzYFOaEXJ59UJ6ArSva8lWqe+mK8RAuzxK28XI98to14x1ZHF3uNS nl9sKNX70KZTLBJCaEx9kqdJecAME5vVnlYoRtPVOOSAlr/yp5W4ZRD+hF9SjSGN /3uRkEPPfYvLXy7GOT0AKe5JPsCtWL/kRXsSqWKlTBFhWbzxCcAU4mOW4Dt408Vs iEYEExECAAYFAkqqFzwACgkQL5UVCKrmAi5nPwCgxG4oDif++BKOFFWP1cGxxLiD YYYAn3rsN8GzH0HcI4qsxJY7Yzbz87mFiEoEEBECAAoFAkqmsLYDBQF4AAoJEHLU 3/jUw/GXNy0AnRL7CpkPQA76f9I2JqvZhIbcKt/jAJ9d7vpFuzqfha9VDcSZOPkp ovYww4kBIAQSAQIACgUCSqKMnwMFAXgACgkQEe7L7rRk3Q88aAf/XB+HHxJgjDKY x0ZUi4E3VTascK598DtSeGPfm1gN8+QeXESUnewEubF/sDHYRs0fJKIYiSguJUwC q+3LFlpkX8lLhHvEomS4VSp2+T9u0rRqjy2TT4wBiExKxDlQFlz1qU58uJlYOTT2 5KzzLEL0ztNn5ZefJBIwXdzmD+JFQvFjYGTBFwHgiZLNIzMfWie13Hvzr7JHamCz ZLGZi31Hv3iQ/N8NZ1KQ1HMcLfCUATE2iiohH7YQURQk5tCVbg/fVmeDj+1lBjkp 37xhhQ8lwaFajfGmlGZH/MzXXbgWP8A/WCokWMgauSXlkuX0b0O4Jm7QyYqYF8FM he2PJNMIi4hKBBIRAgAKBQJKq+jDAwUBeAAKCRBYu5Yb0CsBeQHTAJ9WhV5Hhi0A HsDvstpNbyqY+tR6iQCdFitxnpiunZ0ERQNHy35SEHAt05SJASAEEgECAAoFAkqs V7MDBQF4AAoJEIISGkVDGUEO/+8H/jOl+90cNdJCXVe0jE0lCAvs/u+h9eea57Wm RfgjqENk7EwRi7o+YrZ4mIeqfGRgNKG/YUrZworNe+f2QDYVDr7CVY871396WnLj 5e6BvTurZQzzQ1E2ku0LRWQhIj5Y8dg40pd3DW9bRzZhN6fCj1d89ZUS/Ghidfa0 pA289y79467Lt174oUKlqAVeTZlCrCnKGLsGVLHhe+CRqJdx74v2hNEOrCXT6Zuo r/ZYcaqoKbh5voYRYMuj2M37E7PnQ0I0vGrartsWMYp6Ci/xgBsgzL6NA0wH745T x3mPPEFJ86ghm0xlAXx/nri753GdbxOEa5mTFUHqrqoyEpcPrlSJASAEEgECAAoF AkqsWGQDBQF4AAoJEK3zLt/j8dj3bqAIALtzduPZ+VTMfRxgALZvRf6/camiVKWa 0dd142UgZMXZTO4/p2yuH/QK6k8Caj+B2xM8jdbjbjnu1UsIEuhGGhLTQuMkFesN 6ZJies8Oz+WiKoqgMXw2ITxLSYTReoNEgxbm2YA6CwQ0cwzsFLuD1I2WjXckBFvp psHACHxvcImm6JvX0o7wNDX4+LeRWwhtbN6n9Vb+5oMgUzIa8Q0nGq/Vwk0v8Vsr mlUu8iVkHHajLF1QYr9qn+ZTaRHBK0qSdJB9DRdklD78usZgLSeQ4ERbbBf9i1BO EHzVMReoiViVB7j23lOjFtet8uRmpZjwd+JWgSaP8HUUCKo+6j5J/rOJAhwEEwEI AAYFAkqsw00ACgkQrDCHmqtVsxJELQ/+OFHqI6Kr9LYspMubm75rfaXVcqUM64xL PcbInrBKJBSG4fARp5oSA3m0SliIwXR04oRz2p6Z1SrDJwHtrbd+ouD7DIKKUe5q klnZqLAAnzzpcm+DK4nVZ2ADhZu9NEJUv1hP06tGA9JVsP5ljftPMxLab4cGhJRk ccbscH2eG1xhc9lAsLMx/WHMrWf8/OTWr9e2L4weJvPCZ3jSdVUUbnlmvOitAdDu 2dPyBMghrsX4/J3jajisCbAdAL1Zpee00HylFktbCu1/58dKFuRk2E8O0f3JN138 unuhQdvbi52G7qj6LMaSo6Yr8t7yMm+FPBd7MVV0n3+oXNsMtpz6tAAbV8tKDeWc nA7cNgLMsfB7cHb6maGcSzcp6G3FiXCo0MLsZrSWFgteGHWXoZhAd0npgFIDrA/g 1FePOHspbQ6OQ+X3sGSYZ5BEqDr3ROBcfL25VnifqY8VDlUt07nIQ/Iw/CqvpmID IwM9ELY99Brtp8KTs7330IlphC6p83xzwpMpp/e0bhEPJcEEJ+qIU+ZTQJRozPMu nGw0CP+t94ZqQZB9hjM6X0S5jiWiIwTpBxTcCwRJueYRLh9ek17sVjxoZF7jAe1G 0GuaD/UGf7gvXrNscHUVGDcjv4vxr4QbDlkWWSoXr0hrjN2pAL9LBwXoprYgNZos 6iwhji5XQf+0IUpvaGFuIHZhbiBTZWxzdCA8am9oYW5zQHN0YWNrLm5sPokCOAQT AQIAIgIbAQIeAQIXgAUCSpytEgcLCQgKBwMCBRUKCAkLBBYCAwEACgkQqchsjdOu jTpkng/9HBXP8DExqefDeANtaNjgKE8IGyZj6mZrIm7ThYpT7/5Gtkp8lxTD/NsI URwxuwjbHras9+q1fVV2nqPc3Dfg+hUSqGiGmm5GjAXEjPyCuMEzWTH2Hmsz3yf0 BHaxuLWV4z5TGngcWRZqg+dySdvs2CPTwIwFrEglMM0JCnr5yoBDvjevlpYZNL7w /4wrxmSrIXq/kype094dlCV4Jp3OYdrYOk30b70ueMsqkX94it55DvF/Tvl1kHtm Qz/x7EGJ0lLJfwQzqgJuw/SA+wHHvvL9mo9xSwyQK1s6CSgyrsdT2FQje81/4Dys tvJSf8+KJljzXjaiTV+IkT8vVMof44MSZjFJKuLOWMEIq6ZMOXg2/Ijnn9m/wOnI DqCPj7WGrEhCjoV8t4n5Ms1pO7H1IA9r/EDRb5J5oXQfM2a9AJIRlDTMR8Rqvo+5 wS2Truuacr6bFfWmoRAFyKNUyI4+L9WhNnritAAUHPjwuHN8qkcK9Ky+tm6fz0bz kJDhYiaVuvFU6ecpXliSG34TFoxNBPv9alyD/l+N2VaV+vAjETMAKzOMy0cstOw2 OuRe3Xl6NEgRwuCboZ/u70nFs/xwhE0xbUt04Hq7rT9XNcZCtX1ri47KMzrnBU2h Xia+XpIZKLtwdL/NGkyv/MuXpmlagXs8jpi5p/CcPtnIFGWPD9CIRgQTEQIABgUC Sp7REQAKCRBo4SUrfaXFO0niAJ9stWn5U3hYZn1oV+F2nt7Ll5S6VwCbBc7L8aUL IsbRfkmp+WL8sh14hYqISgQTEQIACgUCSqWYOgMFAXgACgkQEHILFTa/Ou3ebwCg iLMPOczy8QMLa291EctleMWV4i4AoNrHs413om8KvxynFzO0fK0vCp0diEoEExEC AAoFAkqlmHsDBQF4AAoJENeZPtS90TuQJHgAn3LMLx3OILR29uli5A1c4SMm8l9J AJ9UmfFtCVibAsZ+fsfs0I5h/M6lfIkBIAQSAQgACgUCSqKMmwMFAXgACgkQEIbL 14C0Kw+X7gf/YRfIadsegYou3X33hd2VirBtOgpJ9ilAzq4FSwkStl+RdXd6DPpu vPh0H7nZDBpNvkEb4YUce3TpDKUoPtF0G5njCsSG8oG5uPlfZmZGtJ/0tN+zVo4Q vNdrdH8tzRTfDgxgTTuzH2B4OVKoO5wWeXjQX4z5GgZFoQuLQzOosBG3FAWgYFqL gI2uTI8lL5zSM0W8NO4rcXJTeakeAs8U8ucewmaATb4u1s9pv3Y68HE4e8kz4GFu FSi1tozpPth4UTC40TA/hzd0QTn84Li1QTk6DG3lPI9RO2bSPebIz3RoqDv7ifT3 FxxSYu1tSo8lXl6MN9NBTD9b4vNX9akeoYhKBBIRAgAKBQJKoohZAwUBeAAKCRA2 5xwqWpMuU57JAJ9T5MX8JFWuYwI+/SVvfGc49mTlHgCeLFyH5PhjhNZcwsUDBsn8 EPFAjnqJASAEEgECAAoFAkqijJ8DBQF4AAoJEBHuy+60ZN0PEjoH/jseG5oTwLkb FE3//C2NMK+XfnZ3gcwaRnhG2AXHmlHZ9dhYavASoIV4kendskskyNzlVuBbOt6K C24Oq94P6TWnb3MypOXF7qo3DgPKqpdNDkXW8BbsrGr8mqmj9fZTwdOw0kXHauG4 M+qMVaXvoSUJWzVuaU2bSmBe4E7SSIfUML5SZxs2QTPUBbJex5JmuZ/cHfc648fm bBWVpBvAO0R60er/GjtARsZob3ZFaC0XrVThOjKxcErKVJNXjitGfa8cpR8Yo4ai 9crohIBem3TLUG+DagxH7Hr520wNlFd7/8ovoQKQaSoH9C6JGmEtiCtuI+F4wicy 4h8Jf/iu+QyISgQSEQIACgUCSqZhYgMFAXgACgkQ9/NSz4iV6A9fqQCfYjeHQ1wx Tp81q1XL0klVfYoMp2kAoLYhmT6HtSfBJF8h7s2medA1tFhZiGsEEBECACsFAkqm eB0FgwHihQAeGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9jcHMucGhwAAoJENK7DQFl 0P1YbcQAoI2o7sQLlc0pm85z+yXBfMkMyQm9AKCV9E/WRzFzFux2FxZ9SXrcUGSu rohKBBIRAgAKBQJKpp/bAwUBPAAKCRD3Ka/ZgYApVDzWAJ0RG8tD+3EP7MTBB2Ao cLSbSJbXOQCgtISRwPWhtpRb47Caj4vBQjAYINWISgQSEQIACgUCSqahVgMFAXgA CgkQi8a/mTXWPY8FzQCfWn9ho1I//g7bsxLfwpRif1mpB+QAn2s9BdjtPlzOk8xi x5HC+BNL6hymiEoEEhECAAoFAkqmoYMDBQF4AAoJEB1npcDAatgGr8MAn1xa7PRx x0omDjWRMsRlOJc+CzQzAJ4pDLAcG1GitzChsNteTPN0KAhY2IhKBBIRAgAKBQJK pqGnAwUBeAAKCRDxg06rDdlSQbF1AJ9BMu/ycDYhXvM+idOZa9HLQtdIagCeIRZB +1IzrnO10TQul2UN6MK23XuISgQSEQIACgUCSqah9QMFAXgACgkQR4VdqW0RWLxw 5QCgtVqgBLtlu/lyrcOMAjubiCQyXuMAnjiooTWCrnNBxlbWUV7KY395KKHNiEoE EhECAAoFAkqmoiMDBQF4AAoJEAbFH0noJ+nYBOMAn1iL2htqPg6PeQASMktwkKdE Z0r0AKCDOFQv5vlNY6TTwdCGcALh7gFeH4hGBBARAgAGBQJKpq3KAAoJEKrPs4Yh G27vOl0AnRAeMVU21GpgaWRCJtOaxqY/3aUKAJ9Kmlz9A5KHP7GAToU+DzSbRXEw C4hGBBARAgAGBQJKppHDAAoJELm9u3R/EjcrI70An25tffRYRqLXB3IWwGyMnnUu 6NcWAKCAvX2HJjthy2oSFFc7cG+TE4fs+ohGBBARAgAGBQJKpsg8AAoJEDYDstQq 8oA+VVIAoJEaD9HpqIrMCQHY6gYhiiENixUUAKCjSHS0An2pA3S0IkYkFRbdJQQ5 TYkCHAQQAQgABgUCSqdo2AAKCRAJlAlGIdvv1NH8D/9OTxYi5X9cTBEIrs9c9ElV YFxBPLPmHHDJTCa/nCG9we/g1bGWfjW8a00QkrGLHPF+QFeQZBreHHtIDwU3k55b r5xcrlmroDH0kwJB3hb3ENT2AMN8qR7G69BerCARQaO2kJp5nU7zz/aQvYkKo+Dr aue+Yle9QTNJ7itz9YKgWlO9gSHRFRkJZJYxFMEJUfY3wv4yFiedJFVVvz78QJkX r0jdxxmz2p6q/174Eylqsfx13l8bkUcBLP4iYF4sLPsNXd+ZoQq/rWNa8DLjNwt4 kzsywPvIVfUCqxGpwrhBP69Fe4VOD01UeIbx0JbskGtpNivwQF3Jjd5bhABN0D6p xQE1kcNyGiEiPGiu2c6L3ksTyPtLk21SupQWbqelPCpeLEZugc193GWMOSdWBkfp V182EeNfrdmw/7vDzzWkJWlY+LjPfPOhQq6b7n3ZFvFtMW7C7ABD5vF9AIK8NvZA zXFPoUcuV3AqqDAfe86YdtC56t1PIxZIz3SnrElPPEqxv6wjfvcTi/LWNKHHrgko Tj0oYLSKvwlVY9sb4H8CKfRTOsFBjAaF9t3ePhU0JNqB4lBR4No5UMDsB3syZGjQ yrdt4uGDP0r1R9J6d17jVstvFZ6ASPrX9jE3trU49Hk0HFmjlt2QMqYbi8mpBTgm K1NOvhjvMMj6pywfLuaF0IkBHAQQAQIABgUCSqeQZgAKCRA5Zz4P+9LhOZYkB/9Y pATWkrr/f6Bb/cXclYh023EAuQOhdKHlZshdrcmcyoefLkxRUTS7aPDwb3LKjjY7 vhLQsB4evd5v+WWJyvOao5Nr5icc7fgbgZLiyMLg5UDoaxmiGVuYdMS7eKBVZT1e b9Upkh2j7EOZvhuWy3dw989Du3pHxVCadca83oY2gduq2fnXoNT05IfUlVrgcz+q fCJbyCwAxemE4puK+nyJkpxL6KebgO3PkVCpWPvZwI5W0ytFKiiQuvUIjHmU1zVH btp1DO2yZBM7MlafHLnR//ffFvHAsoeNFyv7EpgFrN0ibqAYaRq3YRzFF2iXZNbl UVGuUXN8GAKeRd1oRt7fiEYEExECAAYFAkqqFzwACgkQL5UVCKrmAi5EFQCeMwiL 2W0nlgb4UP4MCS8emVHH1eIAn0KTmwYV2Wq7WYzNNQ3MA0Rnrw89iEoEEBECAAoF AkqmsLYDBQF4AAoJEHLU3/jUw/GXpyMAn0BSNUeCxIqhsNdhoTWgdJ/9uyeLAJ0R aztsd5ostqGWqCKFPZfTbPkIm4hKBBIRAgAKBQJKq+f8AwUBeAAKCRBYu5Yb0CsB eXKiAJ4y7DB3qqV+QA3cR7KVVGVLp+AkQwCeLbQkzcuO+pPS8iYSNG7xmYb3ImiJ ASAEEgECAAoFAkqsV7MDBQF4AAoJEIISGkVDGUEOmzQH/iU9D5r/sgW68BJtR57y v2EW2+L4Yz04PhoBNBi8e9EmrqGenLNUpIRrTYC3oFui64BcfQKRyck4ptNCkcTM mmU7D0JEqAzgUNG5dcxFK6DwvPWWVN5/f4Iq9doE2DxrSHKBdfDIKmqnGTtehBUr TFULG9Rpsdd9dIqMwITistIZ8UcLvVnu74gdBrPJx4HL2lgUwuwfHQe5n7KzXtIK uCz6gea+OSS/E34q7AUvuKSTDIfKJJm5ibD7FqFvywUa6PQs33ofUoRaCvYO9yJc dWjD3WgEUP7GCaFgaUakuLvypLld8JqevS2tgGNCMDhweSDBb/1Cfl0eLE7X3a2a 03CJASAEEgECAAoFAkqsWGQDBQF4AAoJEK3zLt/j8dj3UBMH/0mpyf0XgzyRH9pW eI+2+XEFZyq6mmOx7ohcJBvQIFbAcg3gb4bd5tZtRj+gTkdDERNHUZDYD0NYO53E QQJRhE9qajs99Mn7oPbXrdcrk6KizMrpnkwFnQJ3i8xLaJCtmnvznBRwh10qiBoo NHyCtcBP2P5IorWRTkTTrd4ISBmnFqPiYI49LCw0lkwbZ8AXTgEolKQNgp/2k9qw TPmjGvgUmppwH9tW4g0J1wge8QmWvATPwUG+yRWYh0PQqYmYacNw7H03k0W1YRrJ WMBetb0HhveGwm1JN9l6T60zI4rSn9dcqcHSltou2NYnDuZpCQujP1PUFb/ah86L 5zK/zr2JAhwEEwEIAAYFAkqsw00ACgkQrDCHmqtVsxJE4Q/+OTEIv69a5ewe9X0J Cg8NOo94OY9eEmlGX+FSgSdyo1g9nfwUFqOLhVFMf4ambbwQD4NAiHeReneXf07+ M14JtI+YzO0nVSlNnFp8J8pDmkjxdvFOUHUfSH5BAzQ1TJoTb/WWGl3RneiHhrpN A8x08FHK399UR/ycagZnKSAwgRF4JQjn4anUu/FQ45MD8nk45l8HaXGLhOKqJQwm bmDVAwH9XeSnaRdcQGBri2lRtPM9qMwFK9yrTkOfT9D00lBuQ/5yKXhm/9T0A0ya tH2EVXkcXfZBxp7vjgZ7Gkn23D9K3nWFWgUCUqzib6JvfpsEpOcJdfmBbgOvywjS B5NUzEpzeRiPH9O1QSpbe1Xm8nPXbl5r74z0M8Xv0DUuCGZD9aN8TpOx9x/ho/p+ PYTmuQh/ZyUfMMJxLVwmYC31w9aXYYhjywVerLtkkTW4fOxbMrCW8aANoxvUHSqJ +xAlUTqXQzNqZzrdf5U95LLPV9DDbCUHyiBWoZr8vjvpSnoYWj7ZRJBcYpIvAib7 7Rgr77KggzJjxNc3bCgM1I83zE+fxMGVYzA7lWDKCsyw9TTNuNAXIoTPYsM9x8wD C78aakJvS/lwOFYXwnFP2PclkX4ne3bQJrRvxKOVG2A3lwFOp8JTnOlkuLK13BbY 4UU0XHlVYnf5OPnNH4ZPKFM0OM60JEpvaGFuIHZhbiBTZWxzdCA8am9oYW5zQEZy ZWVCU0Qub3JnPokCOAQTAQIAIgUCSpy88gIbAQYLCQgHAwIGFQgCCQoLBBYCAwEC HgECF4AACgkQqchsjdOujTocVQ//Rg61eEGjOXsvFq15ESLbMTxVDrJdkjFl3Ikr E3ovWY96HehYVijlz9yU5AXUSeB34LG/NZ/V4k/ana4BN6Tp9jy1CGMpIe7EzXRc e1s8mcmcIOpjFsEy7pycDhkrHRdA3lvsmFxbhi1ckD/lgyopvXRiY615qPW9WlEn TzaNOQV4uqeUNyv5XzkbL4i9HxCdyCuc/5IYO+lrHJl0GuC06BpegSX43omOWU1f GdTo9yWiN6v60A2Wlumd9NeAIQHqwHEt4oODd7D8jXLd2btFIdr50Ro2WSUeOHNP hWndhfUWlwLOLaGddCPGIVnV+mgAjNZtZI1x7D71HshJayGdtw4Q2lUffc7taT91 u6Zbotdw3xRcDGoQ4dqgD/5+rjih1fIyWW5pJjQS+fqbXkGd1Z+38ueVKvNoCO46 067x2eKPnLS/hw5xsrW+LHUWJHrcesA3pDy1vV2N4UAtGydfGumAjaVi8CbV/vtt f09BaqjehW0Q74TmS4AfSlDZSksRShY4UyraeXwXfNSb9WA/nW/yCe4vXrzRMgdg 9FrFaIrzFjPiD/wUrSadbxosQjyNHFXz0YL3FK0HFW5mMc3U7Ih1LrZMvfgnAeXo AKRpYIdaULeuOJnQdUL258hQqJGrJdHmek93DXlC9XyOOWAfl4l4IglG2kN0At7l qS2J7hOIRgQTEQIABgUCSp7REQAKCRBo4SUrfaXFO2jQAKDRXDcYWEclZ/lyuMbV H1sv4zFkMACdEj7UWbxOyIcNq5bBruvyQKBztJ+ISgQTEQIACgUCSqWYOgMFAXgA CgkQEHILFTa/Ou1YuACdFd+gOyNTCpbW3z3+HY83ANMHpZYAnjIgn/j7YfO+C9gy xEa/AvkBet5LiEoEExECAAoFAkqlmHsDBQF4AAoJENeZPtS90TuQrk4AoINKmyrT ITcfPpM3WUt9qfNhCnkMAKCP296Wks82XSy+KnvxEb4YnX7PUYkBIAQSAQgACgUC SqKMmwMFAXgACgkQEIbL14C0Kw/QrggAmRo4Cl2IqVDgTk8ukfiXo/zeZqbq0Fi6 2WwaWsJfZNOT3N5TEZxFMuB7owKrIrG9s66FcUJrxv1CyOHvymNEuHv9ywrRWiQd qr5CH0cZp0t4j6J4cj3UhvT5qm4t0weOrdmcZU1L3Z6bsz9zInxa+YJpopArxZSw 2Qh0A9HFVjjj5RQw3p2CVpHPXZrC6NFCOexi9F6lknQUSu/pjZGrz20ZDXR0Namh 8/XUhYaEqWsaVch2Z8GJ+G8uQy3iUhCavrNvJiduS28E4r7+XT2n8mySOJylE/Od LVEPLQZPLyH+jOHcjX3ipG2r5nyfoNbf6CvLofDQHB3xnWR1ZMoiqYhKBBIRAgAK BQJKoq0hAwUBeAAKCRB6khvCPEoYCQSSAKCT5ASpy0w3h+ZLh4zP65Xkqk4D+wCZ ARcYw1SEFaAz8Cf50AmwRtXrmRyIawQQEQIAKwUCSqZ4HQWDAeKFAB4aaHR0cDov L3d3dy5jYWNlcnQub3JnL2Nwcy5waHAACgkQ0rsNAWXQ/VhM6wCeJJfuGa7n2sLT ej9AuGA5yBUiWYoAoJof1tJ4nrYmxRKeUZHSlZOL9NtriEoEEhECAAoFAkqmn9sD BQE8AAoJEPcpr9mBgClUp0EAn0pplpaD+U0RHMZCAd/eFJv3/6KsAKCLlKxRgx4k II1EeMqvyWfadlRmVYhGBBARAgAGBQJKpq3KAAoJEKrPs4YhG27vDcMAnA1/wyRl RjS37tSWTKRx9uRW6CaiAJ91JIQaXV40Tex/8iuP7XovFIHozohFBBARAgAGBQJK psg8AAoJEDYDstQq8oA+jJoAmORyDQGfcAWdOXGfnJ/94YyF+6AAoJLIoqAXroTg XuctIzNx3dZSjQ2WiEYEEBECAAYFAkqmkcMACgkQub27dH8SNyvDCwCffg6UVuNg Nt/HHfdu0CTBuxsp6zkAoIC6T6QODIbP+XN18bHpyfqEPrCHiQIcBBABCAAGBQJK p2jYAAoJEAmUCUYh2+/UALQP/2Jhpf9ICKc9+OAavpn8x6L0KckqrXZ8UiUHCALC 7+OqQmNrB6BEHF3tT92cvGS2cPUTvu0pOtaH/LyLWohj8MitaLJoTppKT4KQdUaR 3awucs+YlS5OJHJl9T5zl9+dAP52eGjSqq1yx99lNAqugD/MxRC33fbnqfUXEFU/ Wlg5oqYX2q4Fv6pF92EZQl7wp0A72DyH4Wh7DgXk8EKMJMeOYkRbU98AeFnWYnKs l1LBrqs7YNGgRXOLYNsNzq1OPsFLBuUVoSf9DeZTo0l1u7ZMhj8r4JSZpKuADvm7 DnWk42B5QeADmR4nmaLMKExdnAJDkrBzndAzVQCedXMVPAJNX6dHu0CBD9URl6yC RDghm8HI+vU6sAdUyDpCVCsFYDi4XDSBNaiCwPgCFmt202cOyMjCCuJB3cIo4tgv lhbugr4XUkcmZfPPQHCTru8KhAOQuU/EatxG7nk5pxj9tMNgmLBTo08VcDNmSmxJ lsQQFa8jgyHHPMqbgEvSQE1o4LEIGRxkK2lg+GzrpUf1A1EB3QsGHqRXdcOMvd2p h7pxgXa5zx6vpqAWKh4C1sySi6ZA86s7VTEFx7P+E5j5vkEHwpaCmo9OSDvXCK1z +R4DROeYbHMEaJjgpHp96CcZ/4RCuxRK4HlZZsCBtUs4unYFWagIEnZxRIMEDK5C EE5qiQEcBBABAgAGBQJKp5BmAAoJEDlnPg/70uE5fr8H+QEur734aQGUDu5tuwE6 0sR1+B4NmXUITT87LSY2xKGG0FWRenNst88ATmZrRAmRa5cjH0vtybrGQGblB9F8 bADi2VDP+i40cXTk0j5ggglZrbwrk4J0LOA3G9TaNck6F5U88Ep1bPx/ZknV5ofa RO78339/dhSuhHhf28QqjB46GVgH9GMsaiHCnqPZOMcWyk6ATQO5tHD8pkiuZwVc m5IIWM0/VxGj5zH+nM09DHWG74i7ypmxupv3pECwwGtrhaWFFaeJMfHsl++XVj92 z2ljAWtjDi2RsVpK3bwHpcMM2/zyFuG3bmWR4Wm0CFSzzOs4tyEw6nM5b68OT3XC uoOIRgQTEQIABgUCSqoXPAAKCRAvlRUIquYCLou2AJ47rXNnejz4L13rAAnPPDAK 6JgA5ACdEGCHhyUOf6iVdYYZvGN0RCNgiReJAhwEEwECAAYFAkqqF0sACgkQrDCH mqtVsxJ2xBAAipe7WB3YZlnqoDpN4i/ewzqAVlj+wAifDTEXAw4Cx/9NTyT/BklE VAmGMqjpnWeOWNoRrPhulgTHX3qa5hmuooOcUAjtzJrzYFO6DlIK9iM+OqHx+Ez5 2h4ifNJNq8OsfjBWPf1X8S2XTuvRQp/SNkmv3iHktWaBgMUw4zeeGrEvj/0x/b2A 4AdxCCCVOmH81yfMiqg3pkdI37LhX0YY0Tn4QLl/UJ5MlX85CnQsqPzAdZm3o8S9 fSgYLYStBwVAI9oq4nsxmV3UCvqZlubysXuCkj2RjpfcMCLZm++zkPkNpzYpMBsM EzcIl9GFxgKer5xELHy3DcuSNJ22Bx8+1PSSTHTqTm+naCUM4SeO9vqMlks5Og9z TdbG967RgIt0pDJ0AnLWk8jKjLEAHudeSc2gUuTDQf/MDVRZSohCebXA9mBpn7LR QfyeWY0wN3xM4TPDjFsSdJhW47PyGwEwRRJ0yn7CfwZewLHgXkC+8zI4oY/27z88 RZrEueN5ACjVWdCTO6APSQQCecJusRkVLx2Sp7fIHajpOg2D+j5VmbajjCK4/rSo eYOIwHSw6SilkcarueL0zHwNcC33LNDoQU+z0rWaSppFiHCYpwdUxT8J/xwiAgfO B9pXJCOkNO2UUbwu/fnDXhixGASU5AUt5Sz052RpBmY0SWiooXtUyjuISgQQEQIA CgUCSqawtgMFAXgACgkQctTf+NTD8ZcgqACeJgVERcvIWjA9rOfjHD2I5r6fYjQA n0QmJv1u+Rt88lA8VeVTrQUb+Vc7iQEgBBIBAgAKBQJKooyfAwUBeAAKCRAR7svu tGTdD3pJB/4zk5xRyhPEYT6VqV9TanRibwk1bV3yUda/D/ta8RLLN7zhiKIJxz/e X5Arboojlq0wYkS+iPrR/KEKsimY5OKoLDVo6O8GYnHWsfCjO48ilp8vybvKrpNh c5b7U8Z1+4W+13CnujJVho2n2HeRJTh66Z+2fTrfeTc+YViEkljONyw7THgjSq8S S9LrVh4uRlPNpR9J+jFaStRQLYVOmcDPF+TlOkVhFlqenL8sm+6l7Rk2crXnhgg6 rtyXS7EDAQfstVB4CXZEWqW24bgBlf6gfCA4CYHqXY2vZ7PD/2PFdP1KH1L35+oX vABSEregAfqCTz9yfazZTmXaN194O/2giEoEEhECAAoFAkqr5wsDBQF4AAoJEFi7 lhvQKwF5bHEAn2AQIxcn9/Z1AHzgtxg5NAycZB+UAJ9S/z0nRDMQoQjukLfKbO9C FQxBe4kBIAQSAQIACgUCSqxXswMFAXgACgkQghIaRUMZQQ6VZgf/U1wAUbnK27FF MZZiSHXfpnfVs4zNb82GiDXhGGJWdnx+0t7ahbCyihBiWrmANZ9iq7NezQixKnN1 TxGGk2FCFYyqHlLa6R1/DNCoHqiSKHT9xXMjP9AHjVDYNM9PBE5SvBCB2MpFqzaO NunxxPKXfCWEOEDqbqAwDZTTjB7QA7dYXqW9hfzDpodBadeosKw7jHmLkDDJ3h32 0rWkARNLqmduXu9ojrgjysI/sS1hEtP0xO77+ioE/mr+Z8aig9YnwHhHlrJZNwhI OwwFBbicHqDF/DaxmG0c9yqiLneNPi1ChA5wbhv2e2WcpOWVtXjYTO7xay/DuclM TehtzTY9MokBIAQSAQIACgUCSqxYZAMFAXgACgkQrfMu3+Px2PcnYgf+MtMdIIj2 8Ed08dFFiwMCmebERDrWI8i9YrBgSoCIxTHBpEhwZmaOnUp+5zPUKoxzNgnRlX6I l9CJ9DYLH0FqmY/x6jLX5U+PzH2UNVrLc/XvoKYjbXnghS0baYd03HX6/HIrOT0t 1/eiVbhr5+VM7a8JrU8AGLe4AAx3sZ6nuIXQRryb9s5dptJPswmx7lpwgNSfUDL1 YX8eYPQtTqbi1LS2boMrhR+oJxDCJC0SgiY6qAnJ+hiXI9EUNlCujd3bSVqLY1zM vlEuo3yDcaOLjIIbFj3RvbVC8oLNEnRQKMwfMKzngIPYqE4D+uHSjE+CEU+E4HKR fesddlYuYmHk1okCIAQSAQIACgUCSq4spQMFATwACgkQNdfaqf58fOm2GA/+OD2Y QdwK5dbkmXNmDd04p/VDxTThRCHxT4QBZMI5mA8pcgNhSCrnT/lSia14QbcBkEIJ nOtTlsMlbWWb2J6MWf22LL1VserNVTu1I6UvGgZAlV0f+zBLGNidjO1iA0Trtf8h VLv0olHfNsLTA6zaMBCmS4T/WNz4QnAWhdUT97ckkuegIplHjx4Eajyntd3soA+B yNk9EyDYona/3kzeCtLi4+6LszjNrvs0QFAo1PD8i9nPSKf1yMNd5FR6Pg4N4yuC PtZtS/3wqDzBp1kmNCbBHS7EGO0/j3f1s9qhSOOEmdpJqAD/Xj81pwZBPMYtjmjg FNsaZOIw0BY0GexaqZEBzVVvs72YxQjhS+p6acvxrvB6ImkYejf+Cu0+lgPKOP6A uCRd69ay3nUSkF7NteLnU8XrmZoqpE/8cQga/biBh0uLSZyA+bDolvnZAlKAv8oR SXf3DSr0/B9ujZ0smM5gdsyXWgNMupJDum7hGqWcdNSDCvFhgTSSm3naLHvObvtb Kfg2cXYXk6xGA9GquaJxYGLJWkZQwl/XIgcm2COB7W+qbBoxVHY23RGbSRnpM3zw k3RopMRcGFWmO9D/qY0ZsOFEoY2/cOD8Wi9XTLJ/DNy8lrQQZNVKFTsOUykvNIRo T7QlBC+82QKiDLNA7xWT+x2J+XJSX/o3fvZH0+S0L0pvaGFuIHZhbiBTZWxzdCAo R1NXb1Q6Tkw1MCkgPGpvaGFuc0Bnc3dvdC5vcmc+iQI2BBMBAgAgBQJKnOfYAhsB BgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQqchsjdOujTqKkBAAiD+2Va58RCAM xU1qIfMN5eYRbB0zXN9fNi/FNVyB1Z0Ad0Jq96bcxud4Kq4rE5z2u7Op0LjBvRVP DQnK8lF4Go5uV9iZny66l/inQ3i4xunnkfX0XzZEpnfHP2HTNpu/6AbMebnBBg/u fFcgjX40ppJDo6tuTrXb90kE/8U8K12GaKFCMTsnRNPe44ki1+znqTIJBW44sez/ WE9PWNd5TQjTMbsZdx19BeVuK5O8WboqfibF1kIQavVOhc8A23OEx53IKUFgmpc7 35OGWGfU2nkCZz+aWzk4Yrm2pyFmpoPiK0MMJwbe3/EuD7w1laGcQBhrxl/EHDJr eL+T8H8HtIwhdMb7b72NRk/EoqUd1skivExMB/wOqRpaFrfNLbBA2jHMmiJtFt1o blT6dmIy8QvIARebhbyIBheTexQQB7ti1W0o3V+65od21BCeJmufUTOY47cX9YxZ Qw8JURifqxbNzKF7pzbpkkSH9409u9RoC3mEDaVvd6/YujeYgry8O5215QYbeg9r XMC60Sz/qgGx87PAXxrdiHSiOd2l+Yxr3bteeh2brC3PYuWAjkFrq17jU1djgNHe FdrjgQopf+MpOYY3DZBloVQ1l4tis12ho820QgDYwNDZXHzPrQx/heOIWXFAB7Ry jNgEu/nDyvp4QcAxX8f3/BkfanU5oOaISgQTEQIACgUCSqWYOgMFAXgACgkQEHIL FTa/Ou2G2QCg3RF1ypBsZeJbvTAbnGydgMnHwRcAmgKdStMLUpAY9kkVqHjjolm9 u8oZiEoEExECAAoFAkqlmHsDBQF4AAoJENeZPtS90TuQppwAniOvOxTgGnW7xDRe HJnnX3D0aHt7AJwObf7UrFXswH94u4/u7c8Bzd0GnIkBIAQSAQgACgUCSqKMmwMF AXgACgkQEIbL14C0Kw+SFwf+MapiWTS4TuKGnq6t3UOiwcxaNHBX5zjZzlrgce7k v6R/JN/N5CvJKAG264SdaZEsyl8A2W/yQLVhuTxHQA9TtTPa7bDb9DuQ8t4KNGAb Gpz70iMjqDYms+CdVjCy/BRPm3RTSvASROBOnH9GfZx7bcjeoEmjdCkufagFZDY7 +5PKiSpNFWPrxMGX2UNQXVjmrnd65yFW4U1C2SxPyXIIXdw3ROoH56EJOM433Ng0 FWhBu6MJlG5CVA30ndeQJpbu0jXABiNrohOHiTu0WmP3/sjQgOMROM7YWn9tPyqA Fi+FpTIYu6EJEmu8yRm0dgbI8TqI6JEPU2ff+KlKY2w8fohKBBIRAgAKBQJKoq0h AwUBeAAKCRB6khvCPEoYCakwAJ9h3KYMY90ckQNl/XJKYH4/TOOFWACdH6HWEqTm RKBhZno75+7pPkbo2HSISgQSEQIACgUCSqKIWQMFAXgACgkQNuccKlqTLlOk/gCc CD0dO0CEBRSIhb91h+GCfMqVyOQAn0jmi2bU8Lsvi1AynNzLIUTQ+VnwiQEgBBIB AgAKBQJKooyfAwUBeAAKCRAR7svutGTdD5f9B/0aOgmSiHCB7wLIaTMMw3tzxf7c MrPjDG/D58Lq+g3gwXw9G+j21YJJnHuGi/EClVW1xQ3mGRRUHY+YRV5extZ85EpB 8KoYXAkeoGxcBWoPmTSZ2gXQzdvlFZdO4QSt8zn2acgZqqt7ig0t0wjTmXqqw1Gl Y8C8ZfH3rHhUmt/FtEScjf9x/p2ElQpt02yf9HMwIEQHazDKbvwcGBjnKN5rU3nb lF52lx/EquOrTiDcXnjDIIbr/mhAndbptQbHL83bWhOPHvz9ssaXltR0M+dJaHOQ k1L1+jcGhPbjXQ2+wBYTefjGcM+A8A5iFyFmZw0JGYQweKMlANNJ5oW4WHTEiEoE EhECAAoFAkqmYWIDBQF4AAoJEPfzUs+IlegPVJsAoIfBM41Nvf9SjoxfVjQ1bc1b +tQKAKC4YmEmwnyePLoFCPDqIi6KFshbyIhKBBIRAgAKBQJKpp/bAwUBPAAKCRD3 Ka/ZgYApVA9ZAJoDy+2/zbe+CEkVAzwMzf+Byx6XtQCfXEm+v+hL7BGNZIKvjhhA 8OOJE6iISgQSEQIACgUCSqahVgMFAXgACgkQi8a/mTXWPY/9gQCfUzpYaMQjrVmN GntN3+tACykKIeUAoKDP/zc+aMCfymy4VrWq2hr2WlN8iEoEEhECAAoFAkqmoYMD BQF4AAoJEB1npcDAatgGJaUAniNY0RrCqKkv6/YAHLLAp7JyrEROAJ99OBUF7kqB VT3AAtQYPzxC59xz0IhKBBIRAgAKBQJKpqGnAwUBeAAKCRDxg06rDdlSQQSrAKD0 tR47VDrpdhyktUPXj4Ip23iGNACgyFLrT+Z+BJJgP/n3Dng9jaM4pQKISgQSEQIA CgUCSqah9QMFAXgACgkQR4VdqW0RWLy0WACeMUqcWHloNK/yGxDG6DnY96kvbcYA oMb8i5IsLSb+8ux+6NF062lu39P5iEoEEhECAAoFAkqmoiMDBQF4AAoJEAbFH0no J+nYQlUAn1UbvEE0RBzncP6Nae23oU4704v5AKCvwOAlckeaTyHHNXLdkmJmXUid XYhGBBARAgAGBQJKpq3KAAoJEKrPs4YhG27vAWQAn3I3y47Fuc2EPbzyzcGeehEr ckDdAKD+za8qMpmATpJwEm1hceEki0KBKYhGBBARAgAGBQJKppHDAAoJELm9u3R/ EjcrrEMAnj3Khl0tOBDOs4+UCVQwuTM74SyJAJ9eBM8LmD30tryLI2jkHNQYNgQs U4hGBBARAgAGBQJKpsg8AAoJEDYDstQq8oA+NnIAoMnJiXOreLACk0/J1b+EH5wT nPVJAKC4yxYzNNVweL01SZlf75MUay5tlokBHAQQAQIABgUCSqeQZwAKCRA5Zz4P +9LhOTp6B/0dC3ugQaPcSEcqGM4HXiLRZgH6qQbxVOC3JqGTvJ/ECqmeIkJOI3kb WnKHSi/OJ28TcNHR8+1DmhWvLkLUw4gykbWdLhqORI7clJTNbo0ymFxmOw90SOPh kaXdnLTZcofeYESJ5dnZb/cRM9m5x2G/gQitWc24BVCJHMwvRIuPMcLTyugGU2Nn 2mIxyGvsR3kPgw+PVB0UIAxDo/xzqzxc76ITk12dFskad76yyLHI076BbTPqhn5x 1hXbuVnw26iv2c0zEaIpgsTEYumvuofwpATnNLMW1acMi36buBM6ZQi8Eg+GBBSU Z83Ze0JVS/f/TZaS6fiRagPz3WQCpkFPiEYEExECAAYFAkqqFzwACgkQL5UVCKrm Ai7aJwCguIrS8X+BcrLy2TkJdZ32EiaW/m0AnjCMVM1y+/Dx9jPyhvIPYjytpb5T iQIcBBMBAgAGBQJKqhdLAAoJEKwwh5qrVbMS6esQAJVhiIQYADwa/X3ff2lfNsoi oH/fRTA85pze7UU+lDMXEZobPDkX6kHbZE5g4dlTnPCRHGCCfiR83m+UrW4QWSFI K+ET5FKJDHKWLKks5/jROhbj6Tz2w9jkiU2YhCgLKiV1eFLQ9RexBq0PK6H3QLVW kkF/rzD5efvCzVy6Nki8O4WKdSGmjVwaP+BR+Y9FSAXwNPXJRWdTg0Y8vxfrSPBe /c/WHIEDMtvM/UqrT7lE3vyN3QeQdGZrPZO1Uay6RoGtiCfpxFFwY2BhZUeNh89E DsDPXFKOCsdWLLO+Mxurk/2d/tmE+SO63UXbTW5g42aG4Jp2c8YIfPN3w0MLx9LF DpeOCyTyD2HJ1uv81Naw80xVl/JLPJUA6kuE1x+2B9FuFpZuGYY9rToaBblfcq4n tRy46Lpcbb63Wjyb0qsJpkVsY8zNBYd5p6+0/ckdtExqFG2DcLKG+8tnpP1UzKbK 2c95uYvER+g79kvRsBwfDk9vbRqokJ1OB9M23pVyPkcUKFtlcPSXcqi9KwfzZNzb dCixsHN7P358PyDhXLjSp3SE735VRDfu3S7kzgoTk/U2bbJLwoBBs83yBLVSHCNi SFiqsWfirOVUpTyb7M4JbO4NVAw5WwuaiRo4gON9nbSozSGbRx+xv67fV5ISMNBC ba2eAjHBHXKg5oY34KotiEoEEBECAAoFAkqmsLYDBQF4AAoJEHLU3/jUw/GXPukA nAjmsVYRMm7jjiwkQfjAZdqpsFzkAJwJpzYGphIqm4dhYXIUEFjU4BQYwIhKBBIR AgAKBQJKq+cLAwUBeAAKCRBYu5Yb0CsBeSmjAJ9AOeUGojlyqYIcokDRVp6G1RYk OACfS00KlHaPOpAiusBHeaSUq4G/PdWJASAEEgECAAoFAkqsV7MDBQF4AAoJEIIS GkVDGUEOH6EH/2HxohnpEOKCx5YwNP4j1qwnh4vpIqYmVmSRxZ39m9WK5ja+Aaf8 91ZGZVkP9esTFGMmcFyOACJoHwkD7WmtTgifFA2rr+AWDXajAR5jTs/5jZHDSAF2 L1DSLMzmPpBxGYojfYCdJz+UCUkN58hfsYBtjW7ZMbM+WoytQgA+QTkFs800q1qw 9qzLcpkPsEas3mcLYSVqZAVtgaXqXm6/xBA0H8yIIA2mUcJa0cuo5Pzf+Ihe6NXc KgZaIfNW4TKjrIF04MO64SeNhojT32Tksr3y+IcSWkHwZg4Jttr4ENevRoJ7d72h u5qxIFHwJrU8rOtjXmYtTSLUhvWi6iVP+VGJASAEEgECAAoFAkqsWGQDBQF4AAoJ EK3zLt/j8dj3jlQIAL9WD43eQjM3zDcoiaZscoWfsvntxFQShX7DsSVfjhOXFXpM PJfQmLQz6iGM6Mt8fjCXttiCJfDkccvzSi4IDWHTqVEgOSkgIRrTgr7aoAethswA wHLrijzeejYnBGt1jfkXBQ8TEQJeTg0F2HYyzq8Hxw9/QcxQJc72t7/AvMxLtQjZ BJinQkYCRRiA2iQB/74YOAEbGCoiRGoV6ppFt3x9LeB/sNHRt/VYHtNDXZuINMQX TcR6QrLSDW+7C++OU674t475i5Sj5ePf2Nbc+Q0yiql2+AcPjgcgde4SB6Gzztlx puHw8iE4L+/6/8pTft0d9hr+3dd9mKi1jdkIFdqJAiAEEgECAAoFAkquLKUDBQE8 AAoJEDXX2qn+fHzpAykP/jPCD163VJUMXHkn4wjMe0O8sm8QcWKNSyg53hxGVMtS G9EAyAN40YzFn5i6RktEdF18pSe63WuQbsCV3ID5tfxhEAUbie30rLSxzNyyArpb 4hjwf1MohC5pqOxEqtqazrjFDo57tsFIMaS2TpnqA3Y1UEHQcXiuUFzep2JqO7Xr FQktM01DkCkLoAKjAmNFYtSJjtiBwvToJwhU+fCn7s4FdyNmTKtKQDDiaPN2zXuW BbWSWsOR0Q9zVbKRLo3/MwRA7tVyZt/TNaWSyPKtC0hfFnu7MN55kTEMmnPb9lT1 p9+6RiBQ/2677sokwI6QCBhQUsFrJ3AKifaLyIFe4NA4XZutYdDGXGHZhQmeneGN dy0sKsIthlo8Iw8vf6fL15N3LGFBRohWQEgrAYClvId/PCKRQt6la7rXdWszzXhp dtKE5vw/VoLW+nHX7ZkRkbvprE7iHCCWUQ2JisUyOA9LpOnM7kwP6krmHIm1soVg YHp6k2C9mrL1IQPfxNpxd9Lg8+Nzw30rvHkeG14C7v6m7pPwjJUx+TlpTDYM4PT0 Uww0DUQw6dI4AZkqa+pY97Mlpeyy5iI2cYP6gv4Q9a98tSuWuR+XUT3AE9pvPz8z kUUemnxvJa8aBqcdTNDJXmpG4IzdcZBAaCXtpttHKkoF2orI12wyNq2MeJ4PZD+a uQENBEqcp28BCACWoSJTF5/vigvns40TlQh1zapa56fC6fIpao6L4LIc1Xn577CV hwAC2HLbwz/R+nIeFyyH3ktohp1rJs88Dz3mLoSxo7YO2ZQlUYKIwn7MGB4Xn6EP HA+720Xwbc6YtM6IeBq0iCliqbJ5iE42i8S9Zl4v17qChJUI2S4Y934LFdb/+IXe VbLF7vJPF9ylDetTjDN+yT0zLlRz1VpPmyJ/V1D/dMorYGk8Z/3Cdvt0vHxAuv8+ Baz38DxJBdKPBKN0HiG1WWMhtzbogKhefz9rTYgdIzA0JxTWQHyKGDdagXTWwKqQ uPCliC0VFEwYc90yh2jDnJ8S+etRUfZ5RdiDABEBAAGJAz4EGAECAAkFAkqcp28C GwIBKQkQqchsjdOujTrAXSAEGQECAAYFAkqcp28ACgkQRtci7bAC44wGnQf/YEwb HRKF7xRpOb4r/IBam8BLNYkwcecFTXE1A78CRbIJaZDRlm8ILvhdB9/WP3ryIsj2 aj2y4lpXHhXC74I6fPkIUakxUtflWssT1GwJ/wB6ZgvnGwUnUHOBUfNtHX+vEDvm B5hXlCb5MbjFYUdDFcg8m7RDYEbEZmqGJLMi+sbQ2BJ5ZAOeTPR7wkPKJHPtQxFd 637zHgaR+2vSaZKbO/ds8I5oe6kVwGy2e4BjcHqhbYGdmfHiXJsGtdaciKEKIwTb OlDMman7xkWgk6glis0asM3w+k2MEzaP8w+lo6irQ+xIYjifmubOmhLO23xMgKOO VgDdnZUU8Cr9mp67Opq2D/9bV7YN0uziDoJnqAZnL+vpJl9vjAAUVhOypHRalcKJ LVCEqwtvewHqULL8xC7XEWGWt8vvAc10VHEUG6S9H7M0SHNAdf0G8Ui0f3Answr1 wW903S5ySF4BmcFdjCcICL2pXD3g41MQad/p+9r0I0rObC7lyqMffFPo+Wl6Do80 92KPwMaLE1/O1xX2R0aSh84wqtWWlj5v4yVn6jBDWDBcv+qr2LDqeKMNsGPdWc2f x0y3Tnz9KJbocvqyStanYPl0Dfq8yD0XTMVeIG6DdhlMmJ4dBmnO5ImuKx3yVhTp 2bmswV5npoD2EwY6QOLlWnbIhzh7YAxNb5wCN7PEpSdHecHwzaUuAeKMCuidswHg g7RBmLNXg68ca5kFKQPe/wtcsxfilHKP6SsGTGNS3NxXQ4AbMgpQs8v3LazMTC2s uFy9DEWHC5hZza3fxQaOJgNswuZBuB/Z+Xxf10bMjZpCsw9RR9IMyplMSYrEIPVC I4MqLbMApVlFzLRb5gWoenpe9Dq42b8YJnMhqPCb+to5wVopYyypC50lftFJcwNb 96CZj26atAAQTbtkSj1RZEsAaqU0uI5cTWD8ZKntZBfaAzmq5Z6Meknw5WyFz8eI IRUSxU1EYQZBGD1hHIqUIaOwcYXbYOx5eYVu4h1HjbxvzcnmMpzI2zK6aOiQVS0B jLkBDQRKnKfGAQgAo5IPa4TjOvPiF8E8uAdtlpZcTHgDzXITty3bAz2WXUKUIoZj x6gri6+lVWBGl1QQJUh1g5eREk6bTQNcEZS2gDcZ/j7mjfYO0KqmY4cVAKBTRj3S aUzKI7J7hZrAa6UymRJbM5HKkD750pvS4CPzoyFBOparqUyyBqRWr7xIiZN/Mpcp KWKsda/hmX9Ygs1dQivO5+zCUMk5bIkOxb1O5zsbvcWS1pMSP808+ui9+YHmo5tJ msDZdxdI8reTMQ+38l/VUwL++gEKPeHfrWiFZ8RNWzlf1iku2MzF2PARVRkKLnba L6Nivw+Ri+ZBVQ5lza8XktGNCc3NSNeDAXfqtQARAQABiQIfBBgBAgAJBQJKnKfG AhsMAAoJEKnIbI3Tro06sHQQALYnt5n/2IP5WYihIGcC2iZEBbggOrq9XOpFvNco BGO8YZE1MnXXVYUdVqeiYjDyzhjXJMCY+ApQgtFFgHE0T5iePKsE/YAwpOMWW1Gm 9Rl9RjgGsYiADdGu1DME63wAf2LPVVwrVv4Yxl6yi9QBPJZohkfftkVIaLTHlDOq Rkq/Je7FgL5INSnpH4iKEYMtnBH+dFzNhAAtkLbir6ErmKloxnPARbrK5srE5bog Zem6j4SWHvygCIsBJ2+/iAJ7LYYylOG2cmSDNeAT49UBF0SlIc2lAf9hn2sm1pDp 4mXMISVmFRp0C0mQzxrJFsf94GrJqOkK50PWB9VdHQymUMzHsLXbkNS3U2gF7oy9 icT0kPK0IWvHY4XDUlRJUsyxX/3CIXxGzsdnH8tcpYSLzZB0f7rPoYYpFPhOYiEX Upcj69eZGkgjPugOwfAN7HeCZz9OYyMzzXosq4tP0RnBRm0qLEBKNr93lmppQBrC KgfSuB2pXHtpejLgk60nuepQu0XNRvYW6TdVRRNQnTNaMEp10YE5Qv4A2n7tqXk0 FFIujiAG+dke/bDFKxYmxTtCXjm3Co2oB13nlutXrCRMiXk/IOXYApHyKwOFj1p/ JzSiDVAW0y2FYi4wujfgZ2darey6l//4WZZ2EhRhjvUAd1UjBDt55QA+hvrPEU7d XPBvuQENBEqcp+kBCADZWW8oql/CP8dY3djRrsX+uFt0OWHLIcknDU57zz26kpxZ dbwU97fAhBiU3ptwdXd3IVIbrV2qn7ZvlKmmEpI/8VRKHTz2xVdyP7hHQD1XMSnn eudmQOdSuv0V5NbA7LMbdnFMl9tGF1gLVPgNWbfSFMBeFeGeUNea0TrA5aV3S4OV o8/J+CPMIRjqbsxX16t0+wjFA1jZDuLyTWfzRXbRBa8w0CyLMZzv/n9ZDMwm0gBL VbqSVv3gFU6pzJd5BxaBaSp2yNGj76t2vZISTosbdbVBX80UeZ2yqgW7KyauPria sbgAQrG+IF+Qv5UolX3Gw4HcLedli2GCckKr75LDABEBAAGJAh8EGAECAAkFAkqc p+kCGyAACgkQqchsjdOujTreaw/+JBoQp6vcrJ0NtDx1IqlRUvLJv5owCys8B1yd 1rp5vxCUWpI90PbLFuaVYdkmJX2wpCfuXuIYcRv8+nRnKYid041Hk6Ezc/wT569r GS7qR4tau94JnjQP159VCAEFmK73Y0IQfGcb4m/lKtqqFDr7jvyAAg7gQ2bHpM5m C+qSUhmTXrgrrvoF3MFtzhambQ24yk88Fm3kbEj2Q+wFcUw+HkYCSHOcgj2ZYtJj 2AAZJyZ1AmFxEyJ8cn2ZGcikkpUSP40A3MOmdlKyX6Gh1T+VV1sj3ylwCyNf97rx rmSS81zpMlesgglg3vH8fwXMpLsiYBhQBS90pQRVmC6qEpge21EJYq0oXossu4DJ AEqDVOhIa7VUdIkoDp0jeC6R1x9XJKNDK4bxQB156lRJE3IQs/MpOsDUrNON2jcj b7vJn4Oo+tgkemHPIz98GL5AlUTfEn/hsOC1syk7FUWmYck+GXUxhjCR7V5kPFbb dKD2aXoY5TXMfqdj3UD20HKYECACo9gp0jguXGUL8/syRJ6dJW2KM3qA+C+wjvqA q1bNQydVJMolS52Rw9ayW6nexBnvZ2RWc9OCVbMmYDqZfDQaNs5HztPWbKv82mqf k3WY75yj3zMFZ8vcN8d2qXYNQkygbLwy1KLEHgQJaJo/wqFa6TVud7zeGy3/7/ur FIUIjFG5BK4ESpyoPBEMALrDCC0bXcPetvpbfio+iB7/N+e7zhFX4Ysyj2PRufvT Eq/NScVyV9u99jugzylDHMT3sKTO/rfdAwYR9tQFkevukmT/l71BjhNuQkmMG8SL gIxXEO8oqJXklBYMUMZGPGkr5zMER7XKyqA974h3NVOYnjuvAfEX6fHnCJsYXGoy ak9LOp1KUbtM7LfR2QRYM+BoDj59ZP4LHBCDqfQOBkWF6s6bSrMe/myoklPCxUgP ijAUMNAZadd8ltc8hcE45pQqgmpuSS+w6bbuWMvM/dra4i4E7tfTB2IYiEhLie8c IOxIYclbKuuJNCU5UUGotgK/rqPesWSDQMBiXVXNeZvi+PRJTHJi0x8rw37DEyYE y0H5UV9YokJL0Q9yVz0iJhcNYQbrYLPhJZn5og4RHWQZqpfsR+7IZpnLetWCR7z1 KZZQcxQNyw0xoVSe7AOsphGUpowZB6i1J1ROxnWoV3mDwM2I7lntAUajCioyRCOx asNh8/PE49cf5dM/KMqsGwEA42+ZaZSu+96OisK+W70eNyTn9+mxSc/mOd38X7wz ljML/iOAh2k5SK+J0IimL9QmOW/kJzH2DHL8cLvKct+8EgxjI6HlUCQytgeFs0YG qFxrlatOfo0tu4y1W8/FeGeBfTy6CM2j8qCVshKKEIxKMxpqgsIfE3e6SPY+Hc9v nE74cbtAwGzpH9g75Aalcksjynzol6E3nUzGjpTKDWiNWtbWjBLmXAkWZsZ53Ka3 Dml+GJgEeJyC30W9ghqJrBXYtL5tm/1SUAaesdLA0iVoZhiAA21vXquuLllLAZu3 RqnhVCQtTaY+KiMg1SJRbRDImoqsSuBhQchpo24SaVT4VXjdNgs7FOo/ki1ImqVn RfJYRLeQ4QBqkdGVOzgh9dL+9lEZp5b4e2tHLSINsyO6+1/5bs13YW5Vd29kc+Eu NRCooSx6MKBiX4fa3Mja/tjdiR5J+1znTQUG+1rjuftCCP7TBxewdUTP6HS9Yll5 upfwB4G1uJhgZPPM475rng7Ufw0mTYOhCtiQZ+iOgN/Zm72W6fF+58Q87OBKQ0eV HvYAUQv/bYvKNDlKcHq3HDx1gc7ozrVc1m7fOFk5V2a6xonxqTHcspANIsqKKlm4 gbrreIb+grGd0jhgUR8ZzhkXyuFWoruuXP3M13/f+do7+OBiMzEmp2LipZUXohg1 /kz0z20yJweXAEF8wDsOd6UvDmlE6nLcIG4t8n9Q4cjWg0rLj8Vgh+aZE7eKGevJ +MkVru9Y9EhgIhueSh9ZAMoLqrxeBMMMEwe0xLt7pdBgxL8DEkoF34Z9/tISUJme L9/C3Jis97dHXTPr8NjtN5JVNnWUOe9WVLGM3ZwgkWZIA5CVrf0c9pjPYquSm0ez OcyEocJRE9Pv/91ciOGFq9hwP2818u8cKDsPcIOLTLl5K6lV91OQ0yELVzCiY2Wp xpMph4Jpcil3EGBWn7SsMtfpCKEdZs0tj0tvqo5/QQ1YR16zf87l+VP/y0c68FJ+ c494SGVH1/7r2IXl47Mrq3kUtBNlnbUSUkcrDWtRuWHqx4mYHBg+rKZfaOu/tWTI FKMnAUx7iQJ/BBgBAgAJBQJKnKg8AhsCAGoJEKnIbI3Tro06XyAEGREIAAYFAkqc qDwACgkQAEpMHW8nCPQaEQD/bL1Nt1+7/09yLwFEdTraMzTa0kqXTetCabEnbkP/ x8EBALyc7z09/0wC/ObQ/gNDDHWltdxLN79AkzVUdJDfHQaxe0cQAN1sPcBCz3Iv JeUmuQncfdQzV760IJ2f4bcVEDKPOdxL1sYab0SrOEGm1IaTR8ChKPfjgTcNdjaf a+rp94UBND+CTsuzIW2Y+5njbQcoRr+3yc4mKaczUPBUYPHX36vXCsPd58Wkziwb EKtRfrUGk0BuH0gTduKpEs9gcUq4444MDgW0We4AjZ4gHiJPp7FsmrFfQOJ9Vnhv UzeyQndFjIDuQcZd7rO2ZW13hWH+WiVRjK0o2dOgOuU6DIF79n+V8eIQ0z19boI4 DlvwW3+MEBhsypRPNmUc0y6zmgbRJlHZEWquIETdzjOOnqrvZsA4BuTpdoXHbEZ5 fDG2ccpxZLvBmbYxntrcgh/AelusoU9+jLRmkuOgY7ReeVPddpCt9PEOvqoznQ9m seo9AXGqcozI0I5ccalxbLbYoGxBeFH8KSuNo2LeiAB6GBsrQl7KxeWd6XQ0wp7c 3t5ivNSiH8tDctz/+dw8lZWEcGo9QmTKWqM9JPfzn/QuYVjVPZ3v85+FX0voXQef mGJpGH8Ksya7newDfQmg739PK/5OSkL4c7/ArPx3bNgyWeYGI4mDLXQa9qYHbbln G6dRXtaZU810EuC0B4w5MWPOCGEx85J9jlqnZpHa4nYGrSig5vj+OFm4Ydpr+YJC hwFtR9YUukVrs1qqWmR2OgnRBViMTPBYuQQNBEqcqGUQEACcNiCSpyE+J5UfeYiR vi/YIfpIdieu74nqRT5nTuyCnoc9SQFRqsNPKLAov0SaA+acvWqLaUmsnlLrLvkN cmTW+s1EK+VJCxoLxsNEcWv1C0vA+uBIhWU0cdmUFIust+NARAokf12PoGWZxK24 S5F3XAAg8Sq+GSgDQhOU0ZvFcH4Rrl0X+thvdhUDOgMAlWIy6IHpkOYeiqM0sSXQ zENWpkXPCZJvO/mUnj/feDgksm+vacS8ENOV7LuS+dzGtmY/dyRQyNCxa65GOeMC UQz7ZbxtyPlw2M5jJEe4tcUUZM1ro7lZoBVaWO8i/9lX1vmSYSdf6tc6NvvI8X4D 3Cwl8aToBOG3nTCmzE+oTV4wNan/mZktYHi4ptFSQR22wdbsFLko+0N2bJhvglKj UwEkJSV0o0RCy1F4tQTgTNmXs5uxkID1fnVPsr+dFjZrJyXBlWKAbZZPiTAC3LJ8 PKBPMGyOb0Mdbu1Ii5rnxdpoJHJEvPVaXWK6RgNXJs9X7Uo/kq0BOdhtbV5P8Guk oHlZzQmWrZtENuYRgU0OA93C86RS7lpEAz/M51rvyZnaX0UPzkn+ZC8nSEQNoQi3 EHo7e91PlDwWKv3tjTBzQdAPS9iLmS6NN30IlFAmZXaaV+80Ypgj5z0iVD11mf2a YmMYXBaJkWZyqQW8Wclv5uCqmwADBhAAjD1WwzPbYUpSmdwC/M4Uzj7iHSSavd3k 1of6RoOz1pX2gTW6i/xBrGKjUH3KLOiunvZSe6x3211E/ptJuIktKVelizjGOaTR pA+VH6nPJS+OrD8SS+Te02CKyH7hb4Bu0mhiaXryNvRp7XzCdLk2GoVQIJf/b4wT SUsGutSiAsud9QuwQEU+BHQGaBs1w9MmQkvd0uUWE+r7FdFQIW/VzJVVfHeO4goD CHijBspGBxcbowA1S0slfh6AA817Pugc25oV3QkMNsmXEo7hgxLKOLzDx5Zn+LCJ j5vVBuSRtTOeTYpPvUZ56zWlpiFe5qdjPDa+MwqimYt6h/RSXufW3wvk0tdju12u Yi/GvBNTSZxQ++EjI0MGpfKMeD6zFaeHkLNfgfmfHygFoYva6+0N0ay9I1nW2axR +MjrgN4pBIp1T8l2mnIxP0Dz1DlhxeNnh6xEotPdB/gmHFCoPvfAAY8TXrS7dLcH +ambaNIKBwpQjT7U7bA9NDtUXQ3+KyjR1HeotY5p9TK0yiNgREaESMCea4kDzpZR vwk3JRh4sI6znH+YTBM4OWDABYrDMKH0P9N5LlBbGDppuwIZ2TxjuFHe5DXY2RC6 D8MDlcgBl6vhb4ahZ7ZHQtF882m9TUsCzpWsZQF7HKaPXJ0S7UdpwNKch3YGJOsY f6+aENudm0aJAh8EGAECAAkFAkqcqGUCGwwACgkQqchsjdOujTpWPg//Vm3WqBHw 4RJINOy3+bjiUR/GN8UORBoxb+vTqSIgIu6FzL+QYlPSTu3otrH6wvaKKHDUsAFK kjlRlxk214GogzhsVQLlE4pIrXp4Eh3Mx5DQ7RSsZ9EwhBYjoEZYU78TnDM1Q+4y UyfSSkeD9ry3FOFZg6icFnGaqDgCnSXIS4+fJ2AUVpzDtSxIDbs5sV6DuEVkhkOn lbziXwOjYmePE1ejKoMwGeJevfyrsKs/xIeKqpWxVUTGSp4PDgJvI+3YkgpiFYTi Av/GgMF8W6qXYKpa/xm+JINHZF/eGczGumSZHjopTb3hMdLQmOkhK7Qa/1SBShgm G8eB78OY5iA2qFWe8c6ramzga+ZCu2hq6+v2ZtJT6Y9XclVVpvxxCiswkOY+ihDK 4b7gmcd939TpzlQWp5XnLaL2qVu2C3pFoKxcT2WnQXHj8f0BPVy/BQkmUOeGiR7e 0mB+TaNDxWZ2avq7cctJwFoiq1eJRlaEahVzcu5Ldh8079xPiaKX55m+aJGKCR+a ApXoqrdWcKbMxsWnsWpy/4+uBCanejj0giCXGN7LVv/d29nT6NMoHaOpqhEsORul ZsWbhT5+7Wpjs7JXWN4Jm7A+Apn2tjk/EUy+sWOZD42baWtM0Jcuv5uuTCiAtYs1 jJLQtFy144uCNLgL5JagmqMiXx9rL6dHFHc= =sXgu -----END PGP PUBLIC KEY BLOCK-----
<bakul@FreeBSD.org>
pub 1024D/86AEE4CB 2006-04-20 Key fingerprint = 0389 26E8 381C 6980 AEC0 10A5 E540 A157 86AE E4CB uid Bakul Shah <bakul@freebsd.org> sub 2048g/5C3DCC24 2006-04-20
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBERHS6MRBAC60MHcIa5gqGjSmHLxJeZTkLTDK0zEo7MRJuMeF90Py7wdP9Fy jmRhyBS/tYfOtPrpHwAdn5FIkVzajEklv9L0/JiUx5WDrmJFWqIgRLdRPYw909hE 7pW3uTs2qotWjeA8ecefzlTX9gdZVgy2uPhihMG9cn7pL1aXluca8AUsIwCg4lUf 8pL0Pn6pZ6xP7nG1hEvkzr8D/1LR5Bm47RboJ+dvoMf9lwlXiEBP0m40100urcxR 7e+AHDX2yr6s4edx7pPRCq2ubPgzK2rYv4NHN943AY8EYbrazp5F3EItDOLHmIus JasvCgPTb7HYWO7Q28redJyUIfBUTPgVVk2z4EuCb5QKDU2/2DyqWThrLEwTCTRh mR82A/sHQE/xib0291VjMxGKiatd2Xm5hu7dSzCeZwc/5uF0g33OYcd02fosyERd 96SWmGigFWLbQ/kFiAoN0OAlQQoNPuWjGzIJVrxiy9y3Fw2hnoiV3MAWAGr43+UI FR+XB/MxOKIozYrMouhZHtmw237fKVH6Ewe/rFkthkgm9P9BpLQeQmFrdWwgU2hh aCA8YmFrdWxAZnJlZWJzZC5vcmc+iGAEExECACAFAkRHS6MCGwMGCwkIBwMCBBUC CAMEFgIDAQIeAQIXgAAKCRDlQKFXhq7ky+oMAJ9Cth9LlPV2on7lTedInW/6T2mh YQCgm6bY4yyoJbjUxop0bcuKYGVVuSO5Ag0EREdLsRAIAK/+InMhz/qJB/+Rwq08 K6TtPPkAs5+IcFQqjShCtFWiaZrvBqvcTPDqVIMu6CAnBf6QTOKQc+L7lSUE6QdI 0mE3jiieYJ/cDzSqntYZBkC5glW0AzemgyllQRlqKrIawWu8M+SwZipvKb0YCIFo rmhoHCjzK/DKlSi0MOjPVTbsyS/rTvhAoXxodogKfNzRpb4MwDjM4Lda9mO+hKlI 93CsBCzNZaOECYJ/1vkpuGqOBhvezrLtNCYFmul2JtVMyCb86mOIJAeiwn/hiZu5 eU3QYdvcCOfYh//B8AZOVSW1x8HYzMFXuznVtx1P5ygvtWY3u+uIlXC274XuV0aJ NNMAAwUH/1rSg/fSdVGEG3ge+sGtFKHPOaGW014dt5nHCePrhLwHIe/udyZPCD3a axp6RVlx5Yvw2+nMBWiW65KACBUQslSHbeM5u2aPH6HaAAEYCJ682vKUWyEHGljJ zDBBANYKThYwle1xRxiE5MT9B2Bz33z2/BQnCgo21KYAU/2bwi2qVG0jyF0i6ryP 6r5w2zZbZA/0IINcwENYRhYdtU+QtyB/HqX//nshVnxZFgG0pIPET5ltq9VM+6Fj hxJ2RXwGOxBJW3+yLw5JuDVrqoOz2lAOulY2uiQY1Nk9xHDBKZ1U172BugHuOIbW EAgbLB4QFuIE0HF1h6bNSISULLt0/yuISQQYEQIACQUCREdLsQIbDAAKCRDlQKFX hq7kyxbGAKDdITbPvXRBxINGLWTcNxtRqjXl0gCbBVmMqSG99Tl8uB7wTZRDjtCX 5DU= =iFzp -----END PGP PUBLIC KEY BLOCK-----
<gshapiro@FreeBSD.org>
pub 1024R/4FBE2ADD 2000-10-13 Gregory Neil Shapiro <gshapiro@gshapiro.net> Key fingerprint = 56 D5 FF A7 A6 54 A6 B5 59 10 00 B9 5F 5F 20 09 uid Gregory Neil Shapiro <gshapiro@FreeBSD.org> pub 1024D/F76A9BF5 2001-11-14 Gregory Neil Shapiro <gshapiro@FreeBSD.org> Key fingerprint = 3B5E DAF1 4B04 97BA EE20 F841 21F9 C5BC F76A 9BF5 uid Gregory Neil Shapiro <gshapiro@gshapiro.net> sub 2048g/935657DC 2001-11-14 pub 1024D/FCE56561 2000-10-14 Gregory Neil Shapiro <gshapiro@FreeBSD.org> Key fingerprint = 42C4 A87A FD85 C34F E77F 5EA1 88E1 7B1D FCE5 6561 uid Gregory Neil Shapiro <gshapiro@gshapiro.net> sub 1024g/285DC8A0 2000-10-14 [expires: 2001-10-14]
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 LsOLmQ== =GprF -----END PGP PUBLIC KEY BLOCK-----
<arun@FreeBSD.org>
pub 1024D/7D112181 2003-03-06 Arun Sharma <arun@sharma-home.net> Key fingerprint = A074 41D6 8537 C7D5 070E 0F78 0247 1AE2 7D11 2181 uid Arun Sharma <arun@freebsd.org> uid Arun Sharma <arun.sharma@intel.com> sub 1024g/ACAD98DA 2003-03-06 [expires: 2005-03-05]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD5my2cRBADKOgeJz+IX/4UT65iwvAMoR5SMctMAEGNHvTk96H0DSYmDmqPE 6D4PWxjiAmbFdMmxGvmPlZDGRk7IpZhrvmsAuAvwImA/UyGb3Qnb0zOoOlAIQiGz NXRvum8vzoTeW5r9ghLOKkBuze1qi8PZdT+ztreaYcPPZBI9zPNfnZd29wCg4Sqo eWA46NgWICUsOpC3dkhAmdMEAKBUmh8p4kOZQq5LPv3y1fo+5MBI1gnawiJoO955 nzVuisH5h1yaNjz0nkB5VtEG2Ub2mhBjckze4EP4FzPgIpOhSMdGfNh67rrByvv5 DD/SBwjULSEGbBlywn462QDb1X0PxFX5C6IYK2Q6i/vbWkOFMI2dVuQX0PUq9zjN D5QJA/sFeXR7NcutCUaLknFCaV1cBTITJNurKn5Vm3QQq5s6R2cFTxdouHcSNkto EbhcAvMapxlWl146h7mAtLsXXa5s3wuMWq+igOXUk0wkcm8CqvSQtnVYl4Xy/Ll3 zXKxtzKHZ1YxAdYQXGkesBuaSafCN6VYDFFSEwChHrwe1sV9obQiQXJ1biBTaGFy bWEgPGFydW5Ac2hhcm1hLWhvbWUubmV0PohiBBMRAgAiBQkDwmcABAsHAwIDFQID AxYCAQIeAQIXgAIZAQUCPmbLaAAKCRACRxrifREhgYRWAJwLdcAEvjkJf5bHy975 R7q7Rp4KUACgq214dvKu35ysWriNNxu2jtIj1he0HkFydW4gU2hhcm1hIDxhcnVu QGZyZWVic2Qub3JnPohiBBMRAgAiBQI+ZsydAhsDBQkDwmcABAsHAwIDFQIDAxYC AQIeAQIXgAAKCRACRxrifREhgVrxAKCXiBsYhu++BPQX9prGf2BeKNYaswCfaS2Z eNyZsxSNedBb26k8ARWrZzq0I0FydW4gU2hhcm1hIDxhcnVuLnNoYXJtYUBpbnRl bC5jb20+iGIEExECACIFAj5q4pcCGwMFCQPCZwAECwcDAgMVAgMDFgIBAh4BAheA AAoJEAJHGuJ9ESGBbWIAnRAlo9PVZzdar5pmWDGspeyGk63ZAJ9X3x6ZQSD7uYeB ajKe61NpPAamJbkBDQQ+ZstqEAQAkgu4UWlgyF1IeMM+vwHQ43zik3Rn6nhpJXRb Arpg4QyVHQNQshVT4XsmSvcgw0TSUub0x5m23dqnhcoB/mk0kAIymVQiEaa4SLjI tTXd93yRvSgPd8JEUNFwcSE43ZJrrmSAqIc6MUJ0hI/pAeCFvRWYQ80+82xx30Vn fJLOJR8AAwUD/R2xFX5geJ7W8OyLtB5XQirkL1YPGLNNx4lyAPXFJc1s1KwfZ90q LYNw2qLRIacYKmY2X9BrWADXPrEZIDKljn+Awz34lSwerLHWwYDDoeyjfMt4Mmra MsV8UIjaBGO1ptbqEDSVeb1tiWQGa622pT5YaZp/r/OFdlmg+JvkAzHkiEwEGBEC AAwFAj5my2oFCQPCZwAACgkQAkca4n0RIYGWkgCgxhDAezhK5kiSC4N74g9ifsF2 jl8AnjujFRJcMfV2R28jiZ2BS9mnvqjU =klyl -----END PGP PUBLIC KEY BLOCK-----
<wxs@FreeBSD.org>
pub 1024D/17F0AA37 2007-12-27 Key fingerprint = 96D1 2E6B F61C 2F3D 83EF 8F0B BE54 310C 17F0 AA37 uid Wesley Shields <wxs@FreeBSD.org> uid Wesley Shields <wxs@atarininja.org> sub 2048g/2EDA1BB8 2007-12-27
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEdzy+MRBACwXYsfLwZzbzYru+XqMIFKVIIszXJK61UejvQqcuaZRNLSQyM8 Fc5dI6AfciZV9tH8LDqYmd/vDtzjmBp/h2SPqQfiVuREQ0+c+aplvWvWc2TjFQg6 CZbb730TtazPXbObZvSMRvLeRM32W9Abj5L8DXoQbpMtC8cllG21fsY4hwCgyngp xK9e32zih9ddXk+NgjK627MD/iPPyo0N4cb9omNwOCot8YIRpdJhmvR/yPh+8rmW NUu61gV8jn2XB6Ldto8/dR7chqqbBU7bS+hsk/lmbOuLNe2XkQA3e7dd0EEHSYYf mx6zjw/dEb9EBANAWI6QOyjNM9npWb/shZi8Pehcty08t2eytd4M7wPI9zLAXsMV M3nUBACgxIoW4e9yXeNQ3CI2KD/Dbup+SNha1uCEmzN5A0VfPJzyi4Avdtl9URGC HUFnUAs5B366yQTgmkjUcfcWqTKBicp4TAZ2KbuDzMX6f6cikb9bdbl4P62vN718 5iclN77KfTfc6j4aOdIbnc6J9GStvYY0R2eZRKkr3CsqSuebxrQjV2VzbGV5IFNo aWVsZHMgPHd4c0BhdGFyaW5pbmphLm9yZz6IYAQTEQIAIAUCR3PL4wIbAwYLCQgH AwIEFQIIAwQWAgMBAh4BAheAAAoJEL5UMQwX8Ko3juoAn3bIDWeVAWOfi1XjXdaA HN7HKkMKAJ9RJ4F67NZKo37U5E3UnnVSRLCZ27QgV2VzbGV5IFNoaWVsZHMgPHd4 c0BGcmVlQlNELm9yZz6IYAQTEQIAIAUCR348ggIbAwYLCQgHAwIEFQIIAwQWAgMB Ah4BAheAAAoJEL5UMQwX8Ko3KPQAoJYfbksQ/n/1FitmpqJb+AmpOmkPAKCVXF0g Clk43/Af2rVb3Vm91NmuvLkCDQRHc8voEAgA6Tped4TSVLcdXmDMeHvt29i/9rGw EO6lbwUZfamHGasMALyhWC2/nWhoCdo6tTP2XT9guEX5eu/FoN+nAEIKKHqNiiuZ 6jyOuzUFD/d6n8pUkjHRLqLxFznbgW8f0aaG4rNJTQEQy6+X4/yKEvzRxjroNbZQ l300+liw6Q5OztzgMjhkcva4Gxf+aVhVMueGVuANj1QhPPqvIT2roRsBY6PPNCGY AaymLWBq51UbvE5j2jtCF2nfxYnajauqnJpZK0tSkLMkxWd/Khvv7GmO4v47qx/U DTx6iQP/i43JZIqSg8zSGjY9Lr9XJpzxr4FVyW/rs5X3Fp9ZCQxF3Sty5wAECwf/ Zs93KXphXLWhCal07JQsu0T2y81+EXRue7QltZs+VTHvGZuc949dgnZrq6iRckpD unMRJUXNrKP6BFNOJuDAVRVOxxDQc+ydVGwpQFzJes8/9C0TYOaw0k+ayCZapfVf L6zktK+g8oYOXVjjdo8hX9xsus5ie69x73Csve59VmGgCwvywuLUcjCWEgMZGRY0 hBL9ec4uRDVRIdsl15hQ3NGwdxiDEPkJu8QzQv/t4cde+omnI0UdH+Ywk6FZ2qxj 62QaoTvFhuNfWUdmnEAbIkfRCFnHVEL5KcQs0Z9CM2V6qS4kdD9wzthhYtcRgWjS paW/fPyNYLmXuYgvfyk8XIhJBBgRAgAJBQJHc8voAhsMAAoJEL5UMQwX8Ko3AxYA mgKQnqx2baAJtOI7VsgWeTBFEi+HAKCaIQDFpsRsUtsuEYpqj+/zH1bwhA== =kNwv -----END PGP PUBLIC KEY BLOCK-----
<nork@FreeBSD.org>
pub 1024D/7104EA4E 2005-02-14 Key fingerprint = 9580 60A3 B58A 0864 79CB 779A 6FAE 229B 7104 EA4E uid Norikatsu Shigemura <nork@cityfujisawa.ne.jp> uid Norikatsu Shigemura <nork@ninth-nine.com> uid Norikatsu Shigemura <nork@FreeBSD.org> sub 4096g/EF56997E 2005-02-14
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =/u/r -----END PGP PUBLIC KEY BLOCK-----
<syrinx@FreeBSD.org>
pub 1024D/1C139BC5 2006-10-07 Key fingerprint = B83D 2451 27AB B767 504F CB85 4FB1 C88B 1C13 9BC5 uid Shteryana Shopova (syrinx) <shteryana@FreeBSD.org> sub 2048g/6D2E9C98 2006-10-07
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEUn9lsRBADbufFsrk3YtL2jzdLYUufYV9goSp7joMMOwSLhSWf/98DoaW/d 1bhwr9yAFfA81/ByuCEkigZl6jUW5AEEDuoJ4hxZG6th7OasSMCLHrGv4QCIDsiR Yo3TUFlh3Fg7SYZAxmGsMm44u/nB/0oZOWJeTzu4IkoG2QCfoRi+RUIEZwCgupdk xn2tovdQA+y5l7uxhm6MW2ED/Am3BVCM5EojGESa8QKTynKoWOzPFSvUvarqORru pEpmy5JdPjmf5mnfPvWcyccgAIi4VyuyGeqckFOJBBUaQ7w0Es7G9p+egp/e7UVC vgAVRKtSzix3TuXaaB04K3IJVY9vmEwTGO8Jy70Ab1hI/R4MbUUfzuWVaKUic9jB p3oRBAC8RgIM9zBTOtbsFTQ/LpiBL2X6oSRrJBvaLtFZEyG4aDGPxF/ESdfzIPrW 3YePPinAgB1EhVawmP/uj3zhZQML3g69tVu9YhMhRb6C7v1h/nVC73wT3KDnGrPS eZzFhgHDr4zfEomXoR+HLjP3u9EMguyzlCfEO58QtTgeXKzZcrQyU2h0ZXJ5YW5h IFNob3BvdmEgKHN5cmlueCkgPHNodGVyeWFuYUBGcmVlQlNELm9yZz6IYAQTEQIA IAUCRSf2WwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEE+xyIscE5vFGEEA nAhEEHq5H3tzKRdgX+PFn8wyzSgqAJsECHYU7maqvBfs8l34AOwuoK+TR7kCDQRF J/Z0EAgAxyVxRfbMBrSUGeCXI1FSWvqZJkrLUeQ2aCN0FiEmrjUMqTgkiZcxortS BS9Iuk8aEXv7d4S6qhJLfidM5XgxZs/wXFHNO30S+HHw5EwQuSDg1OGM/vY2i5y0 hJqZuQos3SpUWx2Hl3y/BlExt+D5jwFyU9hUE1nNru3SltmryJwr+6PDFfom5iYc 1FZpfnm60ZPK0cWDYk04uMYebgXd55acArmPvZMdzEYl/ChrB2GEv/JTVCJZZY0q rfI7WE2wwPb6/+WK+QINb9fqAdGsOlpOgkuFo7Xu+iKdH/EDGWnKQkLMPClM1xMK dclJKMz5y+l/GB/dTYWH4NtGeiIk5wADBwf/TLTluCRCFKDHkBuV68mJs/ShXpXw tnhaFF5snAmmtAH0zk81byw4Wt1+MUMYZ1rYrmhqyhXcqnAcHYatUbj2lyvzvCxo W2qdW6CE+0bj/pCM41oeRZi4LzJx3pYwSS2fPWaBWAeWZ6qLrHWT8lc0RrJMlteJ kDnchDP9AVxmi4bvpmUbNPdERDEE66XFtQ3zXpzmb0hLV1Hcv60KVYd3zzRADOaM tRnRMN53/yC0C+DDDoV6H4TJwxiTo5MTT7s9a9H/EfMY40RxFGjwojRukCTGWpuh pJf2WBCsnvBqVsqJLeOHyxwlbJhm/KXVRbFoAp6rZTshQ8M2kplmygIJEYhJBBgR AgAJBQJFJ/Z0AhsMAAoJEE+xyIscE5vFzHMAnjcjCi17pcNEGqdUuGWLXFCyQ5X/ AKCNc4ZJinPdFRM5W3TXJmKRuGTOVw== =DE3R -----END PGP PUBLIC KEY BLOCK-----
<vanilla@FreeBSD.org>
pub 1024D/ACE75853 2001-11-20 Vanilla I. Shu <vanilla@FreeBSD.org> Key fingerprint = 290F 9DB8 42A3 6257 5D9A 5585 B25A 909E ACE7 5853 sub 1024g/CE695D0E 2001-11-20
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDv5ys0RBACm/dkRFFWNFb6pafzsHX3YHfyYBQAhyoT5ZPvvh7e6RdHYdxYc tYjgtOid4jL20Uz7kXYwT5OVYo/l9j/AqknacYoboO5AHcJrfO3QjfztJaorUSqv w9dv6DSOQWwTmexeshp6v5aEsOpDbfPtUnFBwcJe5lOBsokk2CqkzI/XqwCgv49G uNLbdtIN87CrUwyiLG5nsSED/35/A/9b/KNwjBoBbheCJDByHNPd9svQIpVWTuk5 i5RKVQQET4ZD5tPQWPnSZ95ztkkwcjjOak+esHK85yTYXXjrfcP7JiE3HIZhyj3S dxWaOFEbSE3Xc0BT+8BOAPFfb2WMSdCQFowkRqbMiFudLnz4tZnBmTQcuxqp4G7S AFh8A/4jBhhkKaw0KeWtkFKugVgUWZNWZ54aJhUaLg5wGbSTNME74YLO0Xc+wkjY id3gG5ayJyecZXCMUf175/ZaSPeNRCBOfMjDnl3G05b/huBFUnXzxTkWCcmopOwW 5tz4C69UVP1UHg4XMu+f6D48srIaFu+DOMTwniL95vqcGkCUJrQkVmFuaWxsYSBJ LiBTaHUgPHZhbmlsbGFARnJlZUJTRC5vcmc+iFcEExECABcFAjv5ys0FCwcKAwQD FQMCAxYCAQIXgAAKCRCyWpCerOdYU/oHAJ4kKjpX6iMF1Y0FjPMyFiyUlgjT7ACf a3czQMrflxJC/VNuzMAmzA19j3y5AQ0EO/nKzRAEALHq1lBY0OBQBeV7sGOvTaBN itMZeVDrGDYUQ9xunaDsEHfz2fD3jXCZLaUayv4LZeWzRr4DbnK4F0AmZLR1v5h3 LxBuvqHPRma5RyyFRftwTNHM+DWu6TSqnE43QS7Ci+z8ua96CmcDa+PnEfubyNLE dco8gfE4oHDqni1R2qVfAAMFA/4uVSYj/DvIzckbZ05FjG+pg4HKsyxyFeFsrm9D 8JD9tC26k4YxLG5FPBdKRsDrN/lZbnLWHTtZqhE3WlX6DRlea93T9Vi2skbujKcN mbao5pyVXWl1dboFquP8ku91CRTZvmdLF6IBnPo0LfOu4jD6DsD5O0UZ7lD/Y+6p 8WcDfohGBBgRAgAGBQI7+crNAAoJELJakJ6s51hTsJUAoIB80SN0z90ocSdxYGwl xkOSm2cvAJ93DigXb3moOsw3BRLlLPQRS6TZxg== =aR5H -----END PGP PUBLIC KEY BLOCK-----
<ashish@FreeBSD.org>
pub 4096R/E74FA4B0 2010-04-13 Key fingerprint = F682 CDCC 39DC 0FEA E116 20B6 C746 CFA9 E74F A4B0 uid Ashish SHUKLA <wahjava@gmail.com> uid Ashish SHUKLA <wahjava@googlemail.com> uid Ashish SHUKLA <wahjava.ml@gmail.com> uid Ashish SHUKLA <wahjava@members.fsf.org> uid Ashish SHUKLA <wahjava@perl.org.in> uid Ashish SHUKLA <wahjava@users.sourceforge.net> uid Ashish SHUKLA <wah.java@yahoo.com> uid Ashish SHUKLA <wah_java@hotmail.com> uid Ashish SHUKLA <ashish.shukla@airtelmail.in> uid Ashish SHUKLA <wahjava@member.fsf.org> uid [jpeg image of size 4655] uid Ashish SHUKLA (FreeBSD Committer Address) <ashish@FreeBSD.ORG> sub 4096R/F20D202D 2010-04-13
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 KuE+idQxbU77Z0BRtvqrcDwuelghJOUZ4KvLT6s8BNb5rJqJASIEEAECAAwFAkv7 ddAFAwASdQAACgkQlxC4m8pXrXypJgf/RDjEqFUMxcyAXtsvncpNnJHjEqtlm8uj GyDOK69lMe/td44ujCJsqvqP2Pjj1dhZ0uh+R1Nd6mCBPviM0uH6lJ4QDoq8WRgf Fq03HGHxFAe2CbTaZbUa7aRHuevHzZwsAksNlsqFdp5Xq0P9c/rt91UNW93Y18cs edp6vSFVIcY20j5xxc9Q/xbjBIqcDJ75Mm6h+5ZlzgD6LDuwg2vQ2cWScUGFAu8M RzcPkCfLMBWdaojlXRCVYROA2UIwHknWtfEMtCuK7JiPRqzOoz7nRDfYvR6AQSLC aBsjMnf9fMfdd/XHaPtH8DJz5qlrdmZ4a1e+ByNhVxQL9T1sWGThQokBIgQQAQIA DAUCTAyZhwUDABJ1AAAKCRCXELibyletfM5aB/wIo62JuZQKCuuw/yry8x/TYAVb nhuQaD3HXZeiw7FT8bX58JQNGhRE6cWze9ziI9SEiCQ+n8J/VmXcYezXTOwWENSB u3OkE4h133CENnyqgJhmDboQTKbpq47jgHpBpATVMnLcDpKmg1ypXHUK/1zo4dWB hdNf/EK4adzLOCSnlYc4/4knkAiaBuy65oEYVeob9FogGK6q9xIFehzpRN53Pcgz I3LSf+I3gaHlNLIpmqvLAOZK88ZsnidCPhA4u0br9ce0FOKaTGzNN6zDWl95pBvB xoy+Jgovp3emI1OVNW+aNqK6Syt3WdSqi7UXNabpN0PgfqoHzU8a96aEYcuU0dGC 0YABEAABAQAAAAAAAAAAAAAAAP/Y/+AAEEpGSUYAAQEBAFkAWQAA//4ABE1l/9sA QwABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEB/9sAQwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB/8AAEQgAZgCA AwEiAAIRAQMRAf/EAB4AAQABBAMBAQAAAAAAAAAAAAAHBQYICQMECgEC/8QAOBAA AQQBAwMCBQEGBAcAAAAAAwECBAUGABEhBxIxCBMUIkFRYXEJFSMykbEWgaHBJCcz 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 72HtYsmNE4TLbl0fMctolg== =ID+y -----END PGP PUBLIC KEY BLOCK-----
<bms@FreeBSD.org>
pub 1024D/860DB53B 2003-08-06 Bruce M Simpson <bms@freebsd.org> Key fingerprint = 0D5F 1571 44DF 51B7 8B12 041E B9E5 2901 860D B53B sub 2048g/A2A32D8B 2003-08-06 [expires: 2006-08-05]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD8xcj4RBADp/ttN/vrU8xXimyZDEJ3NbJXMRAdWin8hhY5cVDT6n6t6Kih2 5Z+orVfRUA77yyYprxpkMKJvfsRspWvJeM9/7duQe6C7CSUNwB3bXCj5Q7PG9Oqa a6ZNPQ8k0EGZkFRgbbkru8wpcttMr4ngsdIm5cU7Y/bk3O2L8kh/Do1XwwCgraUA 0z9KKZR+PpMgM6YXmAy0fh0D/3EP//MLIF7RW+wyabjmTGxMB9RapZXlZLTjFFeX sOrAhgcjFodwigDHEqLtG5I75wz+z2vuyaLtTPHYy9fkFxKXNE8wNWj++6GMJO3l OWRyWNlDLX0d3D22vVWOeh/rLq+PvsEHso1TnOJrYn4Dn4VwVXzSIaGmzGAPuPoO KaT7A/9Pgc8gwGPtG31yrp6AixoMZ32wVdxuqndD3M9XK+jtcdDtKvICQcMWCL5T E8dwmb2qzN13bBILJHktut5JvjgOgYOJeLZKPAMRZz4MON7KcKNZKmPBuNw1a6cF KGkBJfbCh1GIx7DyF/CcFeg4/7IhQoANYZQNc9Zm/tRbg531SLQhQnJ1Y2UgTSBT aW1wc29uIDxibXNAZnJlZWJzZC5vcmc+iGEEExECACEFAj8xcj4FCQWjmoAGCwkI BwMCAxUCAwMWAgECHgECF4AACgkQueUpAYYNtTv0bgCgkdyW3YFhooTeMExQJT5Q FbCTYS4AnReju20M/WngliTt9bdbnbmPeGFOuQINBD8xclEQCADhc4W1TgKJBO6M bEnWC16IXR3U8sXU7meMMbclb5vWt3j1jHVczrYVdkEyGxzu+ydxVlPhdGXtxT1W 8CBjXsfz8DRKs9nMttqPj5u6KQdr+O0zWiZZkoqOdT29X7WZNKWQreKK10PgvmDu 1rzf0Y87B7M0qnqjKjhqinVhLrOHqJIwfFQmB/E06MOhE3BQqYXc5qvBuq4U9y7X Qt/Cxfobw47iwAJEJIExai4mMsbXXtydsj9O1tg20c7IBzJEEDecOFJPhIKtcQ7p kRNjVGwAkQhWmXsPZHKkMjgnkhTmH0L7MT2YGK6LHvLiuAbjULYiSZ7WLXMDe3iJ al4lDNSrAAMGB/9X9K1Dmdu6pWOub3zkgNybFFh8OoguKJkdO/bh1RejzeNfI9Q1 M8gO3ePzgXF3+BgJIblOA77t6OhNUQLRcjSs/xZwXG5KVQjRF3XJGkLZQIl3JGmB i5eNE/rBIMHSPn4GM8FSDZ8bPGzgaTBhEIos/8nCMpyxf70f+gsbjjW/Dq2HXHNr wToHezXX1LzzCqIl2fJgubrMXVbKYQBLy7d/IQnfZp1sGfvTcSJSZXT3wo6MH1EP jUpwmfVOGDN1NDQTbuu1vYqSETt2xzIq4R/+y8/xbm8YKBYDCL2EyCGQcwWhFU4C RAgXFkuWPiXx/PjfYC4YpKd57/7xgRO9i++LiEwEGBECAAwFAj8xclEFCQWjmoAA CgkQueUpAYYNtTtwzQCfc42CUSzItmXxtmWaVRxFSbnwJTsAoKPQ1LsUmEHNo+1s X7criQoU0Axa =iL/w -----END PGP PUBLIC KEY BLOCK-----
<demon@FreeBSD.org>
pub 1024D/13D5DF80 2002-03-18 Dmitry Sivachenko <mitya@cavia.pp.ru> Key fingerprint = 72A9 12C9 BB02 46D4 4B13 E5FE 1194 9963 13D5 DF80 uid Dmitry S. Sivachenko <demon@FreeBSD.org> sub 1024g/060F6DBD 2002-03-18
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDyVYkARBAC2Z/8odq3zwRIQZ9XOF4ZoQ8ITJRrTUwwYjwOf4Kz6gTH+zIGt Q57m5w1Scse3J/fDdIZzw0gJgH0XRpKOonWi23di4B3Oyvrdr1Zm6OlqUjoty8CC 7jo5WlLF/05Vai2HCUmFeqiukCN0mfm3Fd8S+hf1IpE1gaIxCKNvYaf14wCgpoVG Tqi+lIMCktV/vxUf3h7KgOsD/3nBeANz3U+Izr9g/AsF/FnHXeawl2m7USaIB7b1 4CFrQp8FDl6TCAtPHQyQ6pdnh0HZ3h+7cfPB1poRaXUvDimQZR9KHZO9uIilpC2n MdBjbkXmvVQ5FhOJz49cXw51Lck11n/+OuP4N4TcIHdt0DQJoUrGIB6X6Op9aOrP Ob70A/sFsFfebYdfH8loLsJkHU8VbB2Y0KZBXSnhysQ9muvj1HqT+n66o/3SliCE R3cNVMgg51pqxzUC0o6qTVKJbfOrI5b2tbYjvx87ejugQwafhKu8t1liDuUYQK0Q S549pzLKUr/NUvJaYU//6QlFIPNSzwB6x4wjrWAKBv6Vn+x0c7QoRG1pdHJ5IFMu IFNpdmFjaGVua28gPGRlbW9uQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI8lWJABQsH CgMEAxUDAgMWAgECF4AACgkQEZSZYxPV34DFVgCfREoIUfpKaEeGyzl0zKThVC7J XccAnjiB85SwuNAxMraQuGDJXojukUfwtCVEbWl0cnkgU2l2YWNoZW5rbyA8bWl0 eWFAY2F2aWEucHAucnU+iFcEExECABcFAjyVY4cFCwcKAwQDFQMCAxYCAQIXgAAK CRARlJljE9XfgA6GAJ9RFwXlNqYap2SI14IPRjX9ZAzvjACeOC/Elh0HkwQ2HZMT edpgzOuknUK5AQ0EPJViRRAEAO4VdFfYGd/amgG2MDGqD269Kb5vTFbS5mDczgjM 6gXZgOjhbvj3x2auo+Pfos6M/bOtHuIk7QFOeOEJ1wcg8wgE3L3kFQPeEPeOgKBk /eA1ExIW3hiPeuwNxT3iWEv0GF/rvCSeSK3nuuDBNmkSpJ4LHIyO8Kf5YJNp8+6D yJ8rAAMFA/4jaulRHxSsWlFIm3gpBR9aiXGGX1pZTuJpXqjAQcRzDa9cuVatiSJS H9wzfE8R4353s5HpaY3AkVRjY6s9AB8bygGdUCQjuIuifTS4+tG/wmaXNgyqBqaB 6V9gTgfW/7XqcJUGeLLMUpccSRZhlQvHd18aTfPWPB49xu2+arw6P4hGBBgRAgAG BQI8lWJFAAoJEBGUmWMT1d+AYlgAoKZWZs7rDLdQbn2d0CVwmWb6hQLhAJ9E/r8N n3jf2PI8Psl2wtgvWazpaA== =mkxU -----END PGP PUBLIC KEY BLOCK-----
<jesper@FreeBSD.org>
pub 1024D/F9561C31 2001-03-09 Jesper Skriver <jesper@FreeBSD.org> Key fingerprint = 6B88 9CE8 66E9 E631 C9C5 5EB4 22AB F0EC F956 1C31 uid Jesper Skriver <jesper@skriver.dk> uid Jesper Skriver <jesper@wheel.dk> sub 1024g/777C378C 2001-03-09
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 Crfzumk= =Ru0+ -----END PGP PUBLIC KEY BLOCK-----
<scop@FreeBSD.org>
pub 1024D/BCD241CB 2002-04-07 Ville Skyttä <ville.skytta@iki.fi> Key fingerprint = 4E0D EBAB 3106 F1FA 3FA9 B875 D98C D635 BCD2 41CB uid Ville Skyttä <ville.skytta@xemacs.org> uid Ville Skyttä <scop@FreeBSD.org> sub 2048g/9426F4D1 2002-04-07
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.7 (GNU/Linux) mQGiBDywu5YRBACKxY/5WzdUtpL2aK2Yy/Yde2spYiEP2vKj3bs+ovV7a9129lki ldCu8PhoJO+x+96+AwbrR/T5FlXyQrInMa9U5os/8/HQjTXtY/oeq+UNDNFZrnMR Gu0zYICbzgd1rW/tnZJBkB3X2Ao6k0hSATGmP5/sowT7EBSdaM7ZhhqOywCg5A5n J7+062MfzdS/3KoSn+Utex8D/2BN/BMLvrItQBUjy0tn8Vsomx+FHbFKOm1cuOeq smhsOmsANwIafiZnK4+SnQlVbXJLM6exNTqSimH93y7Q9BX7hmWYl0XVpUui0mBR UrVG00PEa0jTLasOkvlyYBS1En4gZ5J2ArE2cYFPkv7jndqJ/pAAZkG+tQnXJ8l5 g0SLA/4tJHLJ6kPad98V3cVbTfhY2Dn/i+QbHvzBbBj+bETLEUdqOKzADGrWoJeE fADfxYi24wHkpH3U781p4SldZpOUvkyYj7YmjqZP0AH6SsKI3i52z1BDQF49gRcD uc0sSmv57yvjKCk1Cehen4/qaVcqXWTZ5NfyGb+hbHLtA2FxSrQjVmlsbGUgU2t5 dHTDpCA8dmlsbGUuc2t5dHRhQGlraS5maT6IWgQTEQIAGgULBwoDBAMVAwIDFgIB AheAAhkBBQI8sLuXAAoJENmM1jW80kHL8KkAn1yTiwsMLq9GsqA44hkh1Sk0etM/ AJ9BiDSqgX0S/wzyXAqfYcsmxS96qbQnVmlsbGUgU2t5dHTDpCA8dmlsbGUuc2t5 dHRhQHhlbWFjcy5vcmc+iFcEExECABcFAj0dWzwFCwcKAwQDFQMCAxYCAQIXgAAK CRDZjNY1vNJBywFtAJ9NCVHRa6GxtfTxae+6ZkTh08xQZQCfcGNMwhcSGJUyjKI2 eYucgrkwp2C0IFZpbGxlIFNreXR0w6QgPHNjb3BARnJlZUJTRC5vcmc+iFwEExEC ABwFAj0di4oCGwMECwcDAgMVAgMDFgIBAh4BAheAAAoJENmM1jW80kHLzoYAoLqR 3unds+O73Z3EppJna4gECkQ0AJ0Uye7ZXLMTJo7pNmZSBSz6bA/qFLkCDQQ8sLvS EAgAinenfe1g5Cdp8bf72+idBePq0zHyPUOpCuFGkiKXecXpgQUHCVYM8IiafB1M Or9V97vy1H56sr+HaBsC75mpuPC7lnltoY+zq0zIkNbi20+p/546W7A5MV66xtTx D6uUSyZ3jksAaVch+6yQNNxr3CDWiNSjomkK1ExPsjaPAA82L4yExAJJGwUYAPOS B1Gw6N3dUtoNuQwJdcw8fjsaRektXsHm6Nnm++3gB0YJ4/x3gcvxlNlONHNp5vdW msQAJtWj4isSMfqi6Y4SQsw2MWOKrYr8Lt++m4cQC6/VZXafTR/TrDZCqYhwovyX vgLMdKfxTZLqsyZwgWDxFKOEewADBQf8CCEh65lRfWQG3MopboOs2fFp3BsfVMvA stV5AYktLHvwGXTW0rx7sCdb3kBtKjiuNFob3gis2Nd05NUxFrzrZsyaktyDiZmT gjmEL1LvodDg/mXLRQgl3QDzUL1nlfFQRkcKqlDfCYezbgYFxCy4EGsC86cf8s8F ZI0hyXXY+zir+xJ/w4KBtL+cY5LJExh0FyPfNnL+tXUthRuN9wxZwVyQ9I4RTlkv ybb8VTWEgzkIf5BiDZalvcOJNAujptlgz2cLnV4Kzu55Xy7jOi5YfYjMbSDa6W5c vO/wbcAG3gwZOoeHBRjwTNkn4iBkDPq71o1LDDxHvWUVAO+jU3TrZYhGBBgRAgAG BQI8sLvSAAoJENmM1jW80kHL1RMAoNsmDIuxlUf3YwjAr/fSqBOKWgN0AKDc0CBV uZAqlAL0tDv8Fiz3HvICMQ== =mEvy -----END PGP PUBLIC KEY BLOCK-----
<anray@FreeBSD.org>
pub 1024D/AE7B5418 2005-12-12 Key fingerprint = DE70 C24B 55A0 4A06 68A1 D425 3C59 9A9B AE7B 5418 uid Andrey Slusar <anray@ext.by> uid Andrey Slusar <anrays@gmail.com> uid Andrey Slusar <anray@FreeBSD.org> sub 2048g/7D0EB77D 2005-12-12
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEOdg/YRBACkP7DeG+wypqbAvKYmIYMBHsYFCmIf5928MvpCgwO4idtg76IX Qd/AQH0sF2uFJiikI9NiJuq3OUXsyRk+7xltLLrgzl7/0GTT6jej8tWFH0AU1/0r nYhUJ/svVe+QNNEbMOvCCcZLslv4/fuak4Ilvgcb/SAir8iUL+nfNzwLwwCgw+fG 2DBpULmZtyMUMZYwyi2UQ2cD/jycHnx1+AHLt24OajcWBoBG88DlcK3ERpg/J+D3 PYoNfs4qcEhU4UVQw5vhMXBnWxD+BiZf6yrh/GRay11oqShMWl/B4UQrZZBwXBVN Lvx4aY6LRA/DAUd0R2CUIwsjaaeBQ2gmvISau4UjtE1ezNI5s/E7oFDNDKkv06Z2 hrucA/9G3+UlrLhDWd2+VMt99O5FFEhtHbClMUXIhXYwFS/41zy7cGf9p4wA+IQC SeXns1bvdZYBxPAYTgDK0XGP8yi0TMpICcXB4v9gkqKIIuO3scB3mH+We66RG5mI 7sls5BoJ3ARfsJuidRS1Uu0TXqCTcj2NTCtDNWd82nRarNpDwLQgQW5kcmV5IFNs dXNhciA8YW5yYXlzQGdtYWlsLmNvbT6IYAQTEQIAIAUCQ52D9gIbAwYLCQgHAwIE FQIIAwQWAgMBAh4BAheAAAoJEDxZmpuue1QYMTQAnRGPeBTIOHdEj4nOmVtECGhv jpqsAJ4pcMFoOwSyCqy5YXoetkQWrsq3IrQhQW5kcmV5IFNsdXNhciA8YW5yYXlA RnJlZUJTRC5vcmc+iGAEExECACAFAkOdhSwCGwMGCwkIBwMCBBUCCAMEFgIDAQIe AQIXgAAKCRA8WZqbrntUGGMkAJ45WS+CK9Uh2UYk3kGG6/jmx3kVFACgl3ALZehS E1Z1ifNha7XLh8C+U3G0HEFuZHJleSBTbHVzYXIgPGFucmF5QGV4dC5ieT6IYAQT EQIAIAUCQ52FUAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEDxZmpuue1QY MzsAnA1T9Wkp8yaxQmPBuuvZNrTdJOBjAJ0TJrwVeQW/+3zffBICU+rptKA8xLkC DQRDnYP9EAgAjavYUHgBttL7+qFwfeOJ3oW+sNVNsMp4VGWvy6QeVCeFvVK+Kpb/ eN9ScAFJM+8wzhNHv3eyXFht0jwSadX48a0FzcYApm+pP3OH6y4Osxhz27P2tc2u yzKMV19nZz28cikY2mtH3Y2GtSyn8pOIL2Ar4sc+hK1LnszGTPf6YgLSBlJSnGH5 +TMg1Pxq/CSDIq4zEv9IyBLlbuK+w1/fqDzLBT5L51FdKDUpsCBZNPaRiin+ZkBx LI742GusIYz+aIcwsRBDONnWdemAHbtSFDxMup5SSEvlAtEU5O0gO6bZx3tv+WZT 6EJ66QsE5IszzTGkw0qK/H/BrsEbyOPbOwADBQf9FOrU6qF1Zj/ONad4vzbjDrn5 nI1vnrBkJ2QJnMM/d6V2ItUVjz9myqXTgteERmwN60DD1jrTqsw5xWHJ/rjJCoW6 mUHWjVkUram3OL/HO96t8zmTZDynrGXfnzLqykkLgJVsVmoU/1OCusY6h0CMAiWr altooE6mD4dpBQq1svwJEe98/X97LJix0J8W1QLOwOi8lD5kApFf6feTRCzJKcOy Szr3NiiwYGGRyHDQhe13KiGoJZQbhoJlbpS7krBTAxyUll6RRtQmlITLF5wmP0jV JWPN2tZ5BdmqYEqOoH4h6Dj+D1glXT19YN6kh+CV1w/d6iWWiB1lDXwDOQMtFYhJ BBgRAgAJBQJDnYP9AhsMAAoJEDxZmpuue1QY+tUAoK4RQLo2F+0c9PlfrfUOYpOk GAzYAJ0dMZ6xeDy4UKlIBdDq4KPZk8IGzQ== =vOBB -----END PGP PUBLIC KEY BLOCK-----
<flo@FreeBSD.org>
pub 1024D/C942BF09 2008-10-24 Key fingerprint = 54BB 157B 8DB2 9E46 4A3C 69AB 6A9A 3C3F C942 BF09 uid Florian Smeets <flo@smeets.im> uid Florian Smeets <flo@kasimir.com> uid Florian Smeets <flo@FreeBSD.org> sub 2048g/4AAF040E 2008-10-24
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEkBvUMRBADvY21WeriAMR1JjTxq3UGnj/gJL1WLXxym4OkZqIOmwcMdL4Rg BWzbp5n0eTiY4+p463NC0rRWSoJYnuncUD9uJNW8Hsne/MZ//eUC0TVQOmQeX4vy vdeCj2H/Q+oAa/AFqbBAA2bcvqWuwiQ6vg3aSWHXzYtrVPoWFqc0myW2mwCg5j+l GKb8J4zs3RX6koAzT++JrcED/RxUcUp9Hh0/J53qwq/OrhdG8R+TVUSqA8Zdc8Gj YTqmr58Rrlb5C6EpiWL716B7+iS2sxU0pDlrOhK2xzCnBhaViNjrrEMCiYPm1OyM QJAwAlV8aulWKK5bullZ/IoOwfN0Y/3xqcyb8pvNNk6FGueb+c4CCRZA069Arrxd ix2IBAC7QAMM8TKpZjuMtRdP+InmJhIkq4YRDXcdIzQopTSuaQlAZ55SX1YPHcn+ kYQDZhsJr1mQYcpxNSV/+GJmnMNcaLMOdtM6IwyV6B75k+FRr2TDDAHmLXl9+SvI QXCqy47IFLWrAtByq6bmnngMqDz+YQJF+yZIoRvLRtBf21g80bQeRmxvcmlhbiBT bWVldHMgPGZsb0BzbWVldHMuaW0+iGMEExECACMCGwMGCwkIBwMCBBUCCAMEFgID AQIeAQIXgAIZAQUCTOudOgAKCRBqmjw/yUK/CR7LAJ4+IhYW52GMrD3HFP6aMcbi a6i49wCgkDLQgMjlhmrxqZBcrNSGzKHXmhi0IEZsb3JpYW4gU21lZXRzIDxmbG9A a2FzaW1pci5jb20+iGAEExECACACGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUC TOudOgAKCRBqmjw/yUK/CRckAKCuViBlM0f2r8KK+KLl8pyfVBXJ3QCbBifsn5Tm NFB5i5+GQqr6rbl1yZ+0IEZsb3JpYW4gU21lZXRzIDxmbG9ARnJlZUJTRC5vcmc+ iGIEExECACIFAkz1m1sCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEGqa PD/JQr8JCcMAoNtjrCmNfjb1ZjLZ8uZwN7R31DpNAJ9q3fORQoIZcYmBl6b1X1Xd v6+VYbkCDARJAb1DEAgAvVokUAGgNoLIb5atFee/teRvn8+WDIOwWHNMZ/F3w9fO 1kPovV97Ux0n8mt6O0Z5bERo7rnK5vAqbd9xvW8HXjSdJxvYT23FyrwPyEKnvXvA 92/yuZ+y7L+xxoHn4RqtFGg1d8iM3C5yGS3o1P54RRAbZ+8oc1p08k1kYosI2a06 gIKKbvxVZH3ePv1Xl1b25gQKhj14GHm87xq3qclFtiDdP2fZIX5+H2uLwqJGhcPY ab3sl8DVLlSr/r4fUzPhSI6vk6MsuVCPUqqwTBybbIFrGMQxmJQjr8UCb/455gZw 8eRDAxAgPttnk8Iqql/VTxEY3MzlQLGquCC0CpreBwADBQf41qghbeUBIng/1/NT 6BJkk8irsNCfNeHHCPjkeaR+Dz/3lQb7tJyQ8TVD3i51rDhqaThONi3NqIrs9tLg zJOWBvooOzoQ5sGAi/ZtwmIFpRwX2vIm359ZXw2Z8C8HdFshDKcQ2k8cV4z7mbOg HVQHPIzXaySglp1m0KHkB9F2ph60l/QNYojXyNI2q+T/vBJMnf9OnF18lPOui2Sp peb0CFQ01KSUMXR+oK4p1JKjq52ua4eAo1gk0U931rBr9kZfN1mhcUvD3eSVUwZS wKmgZuZLu38IACQGrSBcgHDcBlc5eHTFuoKUn1cEJWi6J4wG6xFsrsYguyN0HF7m CVi1iEkEGBECAAkCGwwFAkz1UBQACgkQapo8P8lCvwmVNgCfcS6lzlVs9R2ut11P Qpic1Iujn8EAnjI/dpcnSOomuzyI7ZC3xvZLCtch =Bnxg -----END PGP PUBLIC KEY BLOCK-----
<glebius@FreeBSD.org>
pub 1024D/1949DC80 2003-08-25 Key fingerprint = 872C E14A 2F03 A3E8 D882 026E 5DE4 D7FE 1949 DC80 uid Gleb Smirnoff <glebius@FreeBSD.org> uid Gleb Smirnoff <glebius@cell.sick.ru> uid Gleb Smirnoff <glebius@bestcom.ru> uid Gleb Smirnoff <glebius@rambler-co.ru> uid Gleb Smirnoff <glebius@freebsd.org> uid Gleb Smirnoff <glebius@freebsd.int.ru> sub 1024g/A05118BD 2003-08-25
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =buTJ -----END PGP PUBLIC KEY BLOCK-----
<kensmith@FreeBSD.org>
pub 1024D/29AEA7F6 2003-12-02 Ken Smith <kensmith@cse.buffalo.edu> Key fingerprint = 4AB7 D302 0753 8215 31E7 F1AD FC6D 7855 29AE A7F6 uid Ken Smith <kensmith@freebsd.org> sub 1024g/0D509C6C 2003-12-02
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD/MDZIRBACfyWbQW/cZnu504r57DAQbCbTYNG7V/TgfZwphIPyC8YnLtmJv vLdtl7+ToiG7UJUJsBE9OJdb1qA7JP5+jha/TlzIAUMW8doWNyI52nM1zHzBAZVE aB4Gxy7pib9yBsrGYiLbuV5YfB7TUyea31OXpZ4jPl1E6RxlYdVuzEhq0wCgnOeC SuO0cJZMXisY7DhoF1Q8ucEEAIALzShJ6bbjABbcvMWmoRwXvIcBsAcjKSdRcIp0 AP+9i3PSZkNXV7rfYM3+SydTa3sJIVBbdXChQakcZqu9+rmfL53rErErYuRwKqhX mkp4+3GO7cKm0Oya1xLF9es/OfkKcQ9LxkEytNEnU7xlUNoP8fkCMJcBIwagzPfY 7UAzBACEwGP/o1e0R36jOAjrUZsxe63Zopz5138bYdZtmsqwI+QHK6+/tS5I7FCL EQZL6fEjR7gF1lcj3gC2nypjO1aqodx0hShlNnz9d3uJ0q8EChjJuc30UhjgTcbb ZQv3hssKHkvTJ5ch0x+ohYCfH+Gcd8jbXCZvvS8PcI66DRaz3rQgS2VuIFNtaXRo IDxrZW5zbWl0aEBmcmVlYnNkLm9yZz6IXgQTEQIAHgUCP8wW5gIbAwYLCQgHAwID FQIDAxYCAQIeAQIXgAAKCRD8bXhVKa6n9nfpAJ9MHcwNehlbFRJn8B9tlLBE2JvU aQCeLuore1PhiLZPjHriz0/npGn9xDuIRgQTEQIABgUCQLQblAAKCRDYyjFxW6BS wyFIAJkBI9/2PBvvTvB0FZUF2yd3JEQJMgCgpWVGTdChec2z/YGMQ/EeTgNDThy0 JEtlbiBTbWl0aCA8a2Vuc21pdGhAY3NlLmJ1ZmZhbG8uZWR1PohhBBMRAgAhAhsD BgsJCAcDAgMVAgMDFgIBAh4BAheABQI/zB/pAhkBAAoJEPxteFUprqf2oVkAnj0Y vcFOkVU9JWyJJKieWL/+OuNSAJkBvi/uFt2RgkNgUOvHR61SxZrGeYhGBBMRAgAG BQJAtBtxAAoJENjKMXFboFLDvxkAn21uVgtvwLN82vOpKTvBzwAUVK/gAKCKEQDk vfyMyQZayoFeC8cMagaUCbkBDQQ/zA2UEAQAqYnqd58qHyrKfsw3SrTE74/4qneU ra7FY74jcUhGhrxOElG5hXrHHEHo+0M+0zFwhqedecj2GZbrzGEl5SxVsme3slAf Gt5OaAk/ojOY5d5rTezG5v7jSr4EX0JKDkdlve8RozHsutXznsXmUY/BfO1qACek herQeczznycJPZ8AAwUD/1MF+jo626W+4/gMgjgCQ+saOiNI6AnGlS879MUjV0Ef j6aPfAJ5Xi7zNqkM+HdNBxjPtyxIK8RqmdAjHDMR8FjlZjf+svwuL2CfXk4jCk02 OXD4dxJK74w/ZTK2kSW1VW63+5K1lgsRmZvnTpGZ4ijxj4H0r2bJFQ7iUd2kNxpO iEkEGBECAAkFAj/MDZQCGwwACgkQ/G14VSmup/YeOgCfcaCQpDfKaEvYiw7XJryW b4OXclEAnArceW10G489Csi2QR94q7clHU0G =gLKU -----END PGP PUBLIC KEY BLOCK-----
<ben@FreeBSD.org>
pub 1024D/2CEF442C 2001-07-11 Ben Smithurst <ben@LSRfm.com> Key fingerprint = 355D 0FFF B83A 90A9 D648 E409 6CFC C9FB 2CEF 442C uid Ben Smithurst <ben@vinosystems.com> uid Ben Smithurst <ben@smithurst.org> uid Ben Smithurst <ben@FreeBSD.org> uid Ben Smithurst <csxbcs@comp.leeds.ac.uk> uid Ben Smithurst <ben@scientia.demon.co.uk> sub 1024g/347071FF 2001-07-11
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 =D508 -----END PGP PUBLIC KEY BLOCK-----
<des@FreeBSD.org>
pub 1024D/64EBE220 2006-11-11 [expires: 2012-12-31] Key fingerprint = 3A1C 8E68 952C 3305 6984 6486 30D4 3A6E 64EB E220 uid Dag-Erling Smørgrav <des@des.no> uid Dag-Erling Smørgrav <des@freebsd.org> uid Dag-Erling Smørgrav <des@usit.uio.no> uid [jpeg image of size 3315] sub 2048g/920C3313 2006-11-11 [expires: 2012-12-31]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 BAOo =h4i6 -----END PGP PUBLIC KEY BLOCK-----
<sobomax@FreeBSD.org>
pub 1024D/888205AF 2001-11-21 Maxim Sobolev <sobomax@FreeBSD.org> Key fingerprint = 85C9 DCB0 6828 087C C977 3034 A0DB B9B7 8882 05AF uid Maxim Sobolev <sobomax@mail.ru> uid Maxim Sobolev <sobomax@altavista.net> uid Maxim Sobolev <vegacap@i.com.ua> pub 1024D/468EE6D8 2003-03-21 Maxim Sobolev <sobomax@portaone.com> Key fingerprint = 711B D315 3360 A58F 9A0E 89DB 6D40 2558 468E E6D8 uid Maxim Sobolev <sobomax@FreeBSD.org> uid Maxim Sobolev <sobomax@mail.ru> uid Maxim Sobolev <vegacap@i.com.ua> pub 1024D/6BEC980A 2004-02-13 Maxim Sobolev <sobomax@portaone.com> Key fingerprint = 09D5 47B4 8D23 626F B643 76EB DFEE 3794 6BEC 980A uid Maxim Sobolev <sobomax@FreeBSD.org> uid Maksym Sobolyev (It's how they call me in official documents. Pretty lame...) <sobomax@portaone.com> uid Maksym Sobolyev (It's how they call me in official documents. Pretty lame...) <sobomax@FreeBSD.org> sub 2048g/16D049AB 2004-02-13 [expires: 2005-02-12]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBDv7rWERBADAnp/1Nc02OyU3eiXisqYDw2CaFNG7CpTNalQbJCX9KDuCzNbh RKS7slRG0Cp/IsCIoJ0WLugslAZHBtLigl5XxdVeTYKJfXV1gKXLBnzW942oswUu zMeZzpcrCYHK7AVaTtZJEQTDf/SIx/ZYu8DJPv/7m9I7aY3EYXQsHIqj7wCghRzg vhbpzqR9KiIsH82z5ctlGHUD/AixgJJ6dCf/bxIq3siaijMs1fM1JNLTIL5W7i+I LWUjM9PJztfasAZMj4kXjimZl9345CW+0+jV2oe7y+AFWGZUsQHKb3azruH9frZc a6JSUOwvy4mQjMwtQC2ngJsUQGqrfGl3DLaa4hJzlgQ6i0PHTN1ljKvrMNgtgnZg dypDBAClZuCCjn1RffnM4FzWuDZLYL/wLhqbtzMNvQXe5gwnDeg1QM1xgfUtaaa0 7f071Ayv+K54wVk+7XIRZLP0Kbgo07kJlXw5AzznzY4167RkcrifLPtG4nbDQCaS QreYjUG902h8T7ckkmTV6VAPGUEh/ms9aAeFxAg2XOXiwCaYerQfTWF4aW0gU29i b2xldiA8c29ib21heEBtYWlsLnJ1PohlBBMRAgAdBQI8INsQBQkB4TOABQsHCgME AxUDAgMWAgECF4AAEgkQoNu5t4iCBa8HZUdQRwABAZRqAJ4ypOHGqZA7mf+m+R1k kUCSxtirZACeIXLS54rLLTauEHQtuHfNKEQolCC0JU1heGltIFNvYm9sZXYgPHNv Ym9tYXhAYWx0YXZpc3RhLm5ldD6IZQQTEQIAHQUCPDcdsAUJAeEzgAULBwoDBAMV AwIDFgIBAheAABIJEKDbubeIggWvB2VHUEcAAQEdMQCgg67lgOG0NlSy6RlNxeqT mREvqt0AnjoRX4MwyfWsHmD63XoByM5XjdketCBNYXhpbSBTb2JvbGV2IDx2ZWdh Y2FwQGkuY29tLnVhPohlBBMRAgAdBQI8Nx30BQkB4TOABQsHCgMEAxUDAgMWAgEC F4AAEgkQoNu5t4iCBa8HZUdQRwABAYJvAJsGythE5SUctWSmAYIxYHagnEUU/gCd FQv6AywESIEMOLK5iaONMFb5NGO0I01heGltIFNvYm9sZXYgPHNvYm9tYXhARnJl ZUJTRC5vcmc+iGUEExECAB0FAjw3HwsFCQHhM4AFCwcKAwQDFQMCAxYCAQIXgAAS CRCg27m3iIIFrwdlR1BHAAEBbJQAn1tcab5GD07XKi33AdcyP521kGhHAJ9eo7wb PMLk4e7y6ZiQEeMd4DF1/5kBogQ+e3iWEQQAsxiirVfUk5G6X5YyhHT3pX2Tt6n0 F5hj36BLxU/Cbn7viUMP2x6qafIolWC5wW3JEklsql3wXovUl6Uuaah6S57XD+45 YNAztjJ2rOp4wW9KD6i7IWkbtgz0eRLQBNzEvcvdMfGqH/1XujGn033Q3tpgT8sH WfbT68DXuaUTJCMAoJhav+twkmoLhT0o5KSjSgcmtjOvA/4oJZ9D5H4rSRKWhQNG 5A5FZlNX1q7K9/WYcSKWsE6R+jnOFigZOt/wEXA4tUiI1b7SaVnSPNgQ26iMPDIZ uauEmvjQmVDSdO0ZsS545VQ9xJtksJdHZXnTVKWyTNiRWGHWT3ucR2XFJ40U+so/ AxKch0N5CqtYy9A27aO6KLqBOwP9GJUvIE1zB5plWP70d9Kii6Gf9c84VwK8sYcd w45M4DozPUJqMUcfP4ycvK5AY80MRvNr+UP0VgfpuKElh2JCUpgj9XTE48vuAdyd 3q6lVEC4SpjZu29oFNyzcX0dILPHy49pTaNOUK7EQgdS1S7OWksP6XCWQ+Fmd8E7 vtcT+BO0JE1heGltIFNvYm9sZXYgPHNvYm9tYXhAcG9ydGFvbmUuY29tPohiBBMR AgAiBQkB4TOABAsHAwIDFQIDAxYCAQIeAQIXgAIZAQUCPnt4lwAKCRBtQCVYRo7m 2FP7AJ9QC+MpLfOgfrBZ62ylXJbgV9rSfQCbB+djelAeWNwsPCSI1ztdLW71gIW0 I01heGltIFNvYm9sZXYgPHNvYm9tYXhARnJlZUJTRC5vcmc+iGIEExECACIFAj57 eW8CGwMFCQHhM4AECwcDAgMVAgMDFgIBAh4BAheAAAoJEG1AJVhGjubYpG8An1bD +5ViByos/wyRoQ3fL5eRnPbYAJ9orRZWWPheXO7sO4kRB4p0tUGZQ7QfTWF4aW0g U29ib2xldiA8c29ib21heEBtYWlsLnJ1PohiBBMRAgAiBQI+e3mWAhsDBQkB4TOA BAsHAwIDFQIDAxYCAQIeAQIXgAAKCRBtQCVYRo7m2EMFAJ0SKWhO8mbbRHNjJZhr Z6gRvtM7RACfXwBb7dbxG1ZEcJHfvaJxo/VxF2G0IE1heGltIFNvYm9sZXYgPHZl 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 =Z1Sd -----END PGP PUBLIC KEY BLOCK-----
<brian@FreeBSD.org>
pub 1024R/666A7421 1997-04-30 Brian Somers <brian@freebsd-services.com> Key fingerprint = 2D 91 BD C2 94 2C 46 8F 8F 09 C4 FC AD 12 3B 21 uid Brian Somers <brian@awfulhak.org> uid Brian Somers <brian@FreeBSD.org> uid Brian Somers <brian@OpenBSD.org> uid Brian Somers <brian@uk.FreeBSD.org> uid Brian Somers <brian@uk.OpenBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 3mPjEgv3yQyXxmScDQ== =g4uu -----END PGP PUBLIC KEY BLOCK-----
<sson@FreeBSD.org>
pub 1024D/CE8319F3 2008-07-08 Key fingerprint = 64C7 8D92 C1DF B940 1171 5ED3 186A 758A CE83 19F3 uid Stacey Son <sson@FreeBSD.org> uid Stacey Son <stacey@son.org> uid Stacey Son <sson@byu.net> uid Stacey Son <sson@secure.net> uid Stacey Son <sson@dev-random.com> sub 2048g/0F724E52 2008-07-08
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =uagC -----END PGP PUBLIC KEY BLOCK-----
<nsouch@FreeBSD.org>
pub 1024D/C744F18B 2002-02-13 Nicholas Souchu <nsouch@freebsd.org> Key fingerprint = 992A 144F AC0F 40BA 55AE DE6D 752D 0A6C C744 F18B sub 1024g/90BD3231 2002-02-13
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: Pour information voir http://www.gnupg.org mQGiBDxq4ZARBACJSN3t0e7d8A7LNfvsKsNNfMWbANu/f3vEhDEj4D4X2QLKyk8t Ti5/wO2Z7HJiT5QfI3zeRWetvHMWXhAYc24GrTUMdCt2zhUjufi5BdysmcbLiZFt 9wjJpJITW4A6W7YP55ORkZs6ye/j4Luf7YN4xISWvM9/kzpUtU8R6txC3wCgq28H 0tdFPUDvyAwr+97vHs97z/UEAIFPSIAsrH00DuudiLpqZB0LE+BcDsSKgxBQsZJT 06EQQaE9XMN4f46nAtxzFhSbGZL4qIBUO3Ny1Pp0rqjCfumuwONLXZSK829LaaJn WfZ5ux9ZjvfYJ86NgUV2tFnwZm2UYQXc4234FfzfebeiSmYI27BMvLJ28xXU+pNw vUvhA/9uPu+i3Dk+ha+0UaBTp/HNTAveoTKH6lNOS12XhCNNPQUL0gonJTeWThRO z4YttxgLa5I/MoNsub0+GtNrlyhLyHKzjBBHEqJHJp7+zkyfCODnJaxUqoKskUSD QF5VX6v6vEQl5UBjGwonHmzsrnuqTb9pyYhfPTch9n22eS6ZqrQkTmljaG9sYXMg U291Y2h1IDxuc291Y2hAZnJlZWJzZC5vcmc+iFcEExECABcFAjxq4ZAFCwcKAwQD FQMCAxYCAQIXgAAKCRB1LQpsx0Txi0J7AJ9q3/ulyXnWjGWlR0L+3QtfPKI5EgCf WTLlr+SXYF+nrW4VvQcJvuyzZyG5AQ0EPGrhlBAEAKQjsjIRO+kHT+9qCYsw6HPi BYzH++xP0i5143trUJ66FoEfqOl4UqHwNJ7GEXq9MWgzBH9wDL69Bb4kSKQ9vKwD EgAnXObS3FOUPLK5AMXc5jy8rRaUru58+cGs1cNIg69zgQ3FQyWF0FHI7kGsAdz9 8iUZhXL22I7+EVBgd9DLAAMGA/9oK+Xjo7xdLZvkW8b4nNIA7Xyml2uMLYjg/OVg qRkVU5f7KM2oHna7+VtvdJrIl9bTVc6mrTl6GY1/0GYb1edgSu2Axg+msj3fVkGd 8hWuNQ/T5v45kgPcoJxWLzaWWkDeLQAf5tq/QVmN8hofl6UsrsNDvYTBbl7129uo 3BJbG4hGBBgRAgAGBQI8auGUAAoJEHUtCmzHRPGLta8An39UVQwz3OgsZQ5e8upC VEBCvTUmAJ9/8mbmXF+Ii/JdY6STmU1MMfmQvQ== =A6my -----END PGP PUBLIC KEY BLOCK-----
<ssouhlal@FreeBSD.org>
pub 1024D/2EA50469 2004-07-24 Suleiman Souhlal <ssouhlal@FreeBSD.org> Key fingerprint = DACF 89DB 54C7 DA1D 37AF 9A94 EB55 E272 2EA5 0469 sub 2048g/0CDCC535 2004-07-24
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEECPOARBACeiKSpedo952tApwSI+rrDIrp5LOC5FG1crAiTpAqy6aP+n60z c2euoVDGjH/ncUZ+TxUK/MkzSOFXTjU0TETFgq2UMxSzZCLwPrmQibfHbmnF08+g 0EjlslsszccPgTEZz6F85aZGYWjU4dhQ1VYP+y5Im88CgahggCB6J+8hHwCggMu3 f51egcdCrodzFvL8poUYKi8D/i644gOjVN/YamHS5QUGNPJ9xkcq5G4OfK+Ubjq8 6T1dd7UkJ22sePpKGtRhPNATeEar/HwzLB7r2h+UAD4Yrl6+//EwWB73BgxyCqcB X57s57K3+UMblbLR3NWJAD/HpxIBFxXfj55VPk6aH6GX5LzayMxfZVYccMyWOcsK UZaNA/0aJkearTpmitBL49fOhz8Je/QIF6riigkdOuyx62yAtYRNrVbDrQvvornR Z1CLUp+mixUc3bT+emLFpz2ZXmGqCr9BMAqENh0gayGeekyk8IYLQudFSidL3yHo WErc76neXoBE/5M/v7jZCrQS9loS0vITFsui0Rv95BcsNbV0iLQnU3VsZWltYW4g U291aGxhbCA8c3NvdWhsYWxARnJlZUJTRC5vcmc+iF4EExECAB4FAkECPOACGwMG CwkIBwMCAxUCAwMWAgECHgECF4AACgkQ61Xici6lBGkj0QCbBe+RP2fX0+t1fiU/ oOcORVeRc3UAn3Y7M2TfTKmSh+5RXsaxcVKWDqZauQINBEECPPgQCACOxltxnJKq MHIW1P1u4pjby/v0ZsVWbhqmPzW1L/o0SHbBdPkLn+NZmOKG3sXFkitq1nnXQMq0 pdWwEK55rN3+iYMpq2OJgubsEDJbo39Lom49w3xXs3ElHKWmgjNUMmiGi3yA3Q5P p9E13ze+ZBTTZrlj9xtTsXYPCkoihcjA8iD1G52CJYuVQOCxeKo3d8EZi4sFXhTs yGfK7ipLN2jO4H8LSrImMlT5z/ePmhTgo59A+vsIShklJpRlHqYB861sMobUlbCd 0n7Fng8pD9jIG63usHJgU32AVEeZ9BMaZ5Gjsm7KvIwJH+w8DGnR7016hleSXSEk wVbS7zjXKfAPAAQNB/9GQcWpnuKYlVa7olq9XOVHe2pHrnK20wLy14ormB245Aip gTCN/SEIgwc09nF2QXXXhzZrxsFCPphgJh7CT8g25LCJ2rchOhCpShNS43I1ol3d II4nK0DtXUJc/3qG5PgPaNLHHyskwIIyfL2rKRlufTgByzF3AKXHweJQ9suxGkGS i2+l1NBwLwsjee59gEyKXT/cbfkV/IgA+NBpj7QaDs0yhsbPSDAJszbo53aBAB9U sZjWP9tkrzaP1eoSbl+LFttLtrivG/v8HZuPlI4lELeRboslI1aUUfZVt7xx4A6P u3L1DWOYm9rQ0q1KMlhGQKa/JBtaKy73wwzZujSWiEkEGBECAAkFAkECPPgCGwwA CgkQ61Xici6lBGnrNQCbBljRUNo/9EHyCk0D07YM27DYC+8Anj9wU0uuZE798XZ6 n4y0m1iMcuSh =Fl75 -----END PGP PUBLIC KEY BLOCK-----
<uqs@FreeBSD.org>
pub 2048R/4AAF82CE 2010-01-27 [expires: 2015-01-26] Key fingerprint = 08DF A6A0 B1EB 98A5 EDDA 9005 A3A6 9864 4AAF 82CE uid Ulrich Spörlein <uqs@spoerlein.net> uid Ulrich Spoerlein <uspoerlein@gmail.com> uid Ulrich Spörlein (The FreeBSD Project) <uqs@FreeBSD.org> uid Ulrich Spörlein <ulrich.spoerlein@web.de> sub 2048R/162E8BD2 2010-01-27 [expires: 2015-01-26]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBEtgnPMBCAC3bCUDqq+6pLElEuqGoN33TBfDGjX3CPciCBGBY33u0ThbKFHO 8VYStfwkwofutees9itDAjbQbJ7vIiQSe/1gt9WLfVUhgo6j57i5lbuVi/P3RMMA QjJBSZM/0r67XBqUXdye0xnPuJDKs5LmfY+23AWiWroRieeEBhbkJBQOyvY/fEdE dQ4A26/aLR+PDIxB8vrmsTRgwLYmxpnXqPkbmQ1tjS3MtsPgUMAaEQQOyoZJ7A9k loivX3S44GGTmehrKaCOivMtK21zR66Sslfr2zCCvzHXp8votrRorTBOGSTMC9ed Gp4ZlCAWa243NOVgCYWLsUAT7sutuI97VZunABEBAAG0J1VscmljaCBTcG9lcmxl aW4gPHVzcG9lcmxlaW5AZ21haWwuY29tPokBPwQTAQIAKQUCS2CfxQIbAwUJCWYB gAcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEKOmmGRKr4LOtLIH/0G99k70 FWtU8wLnHAw4d5dkV+MpSJOiNK3xfqoEgzcBSnK8h4kkEibwzsUggtIvIQ/xkLzF oihFGhL/14+yM9aiyp3cVjPT7TqCN7j0kfKxwDOf7otAAwI+hYUrVG1XVM7qe7Gq sIS6ucEAnhjK5s/vxI2wJM8xcEQvx2ubPPtuSYAn3k/+JryIfSJaAiSmxuAfYEsf TBKmACwQ0CfthLkOSnBp3xNbmXnOJ7mVA/wZwTZjD2Vm4Iu9SGBNF+gsx7Jhs0/X ow6JpY4YsoZehFHzeLg3RINUdq5qmB0eqg0VbYV3YcH0a31nOUTGqrztfJs/V4Ap M8pJ3WbDrPugqDaISgQQEQIACgUCS2CgGwMFAngACgkQ524iJyD+6d3PZgCfZ+Ow SV3Z2p3IE3rQgIf+f67SZxEAn08H7gIDjHWv6P9Mt0JveEgBqqaftCRVbHJpY2gg U3DDtnJsZWluIDx1cXNAc3BvZXJsZWluLm5ldD6JAUEEEwECACsCGwMFCQlmAYAG CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheABQJLYKDuAhkBAAoJEKOmmGRKr4LODJYH /j7RKNrmeszuP7hQ0sQpnn+8xmbp6bmNyXK+h3L78y1mVagMWlrJRbPe8QVLR9xq AmI7jIR4oVkcLhm/jnYnlqIAIyNLgrOQ6dIFMbwzd26AYS/Ozy7Grl+THXZJMcZ1 YTNNcPpmUsC7U76viLLw2CKTMzP3LHribNCoNmfhvplGdZibwW3so+ZjEzrhmjtP efLnYmD2AlsJADMhmOy7vgEUSdz7UnIiVgInpf11yQQWarAwAoiKxDSR1D3MaQcW JmyG8mhRqyJmFtbmARZaH/eGm+QyZKYuFY//NY9/ugt8xBhhUTeWN80dwZnx2rw2 6kLsWh3iy36yWNRF1sY7x4WISgQQEQIACgUCS2Ce8wMFAngACgkQ524iJyD+6d35 ogCghywJlVYXlcjHCqUJkZ4mc8/sW9cAnjUU3AThywjlZFNaB4ngPYGIXHZxtDhV bHJpY2ggU3DDtnJsZWluIChUaGUgRnJlZUJTRCBQcm9qZWN0KSA8dXFzQEZyZWVC U0Qub3JnPokBPwQTAQIAKQUCS2CfRwIbAwUJCWYBgAcLCQgHAwIBBhUIAgkKCwQW AgMBAh4BAheAAAoJEKOmmGRKr4LOELkH+gOD9ML6IDd4Hdu5I7JcmquHejOJoEQ9 rJRmbExegiCLtTtxI98f2GF9fMgYbKEZ2DRv9dT4tRYhJgm2ko6kf+BsLv1ilP9j MRJmzFe5RtVt+ot03+8bgN2TAQ6J0DknMT4sbpKWfMKgw8DQCDgK6aUxAHE/PO2f 49Wdb6ZxXIwYQKBUsPhAB/a4Jn7C3cjG/CqtkcsWm/INNdrr8wmqFQlQByYkE8bN U/LS8UEIf64o59sQW8qmZfMwy7MWsL5VDvJwG/llAAYK5V+Uu+kLDwn3Vuxp5144 rR7HgAgt+lX3IuMjvM72bc0ooljxqfGRwyfXkVqS0u7YKMIylibWlwmISgQQEQIA CgUCS2CfegMFAngACgkQ524iJyD+6d2hcQCfXmKCFRSNF7KxaIqfFbAZUFhHR6MA n0G6al32pXWhiV2i3sHyjDq3YCrCtCpVbHJpY2ggU3DDtnJsZWluIDx1bHJpY2gu c3BvZXJsZWluQHdlYi5kZT6JAT8EEwECACkFAktgn6MCGwMFCQlmAYAHCwkIBwMC AQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCjpphkSq+CzppbB/9X2o72Knam5vdu9nAK vmkXmOmKMtp9gJ6MDXLCG/a8DME5weE37i3lmHkm/lKThNRteLajeWz1OWTEODSD 4lq9BOpr0fDVtSEGsrgQOIj6m/RGpKhmKmyZcsGhTC9OXpcrUk5QnFFb47+25PhC I6cfzADL06WGPDkTEFsB2f7ugJw00iC2Kcr35YG5TvvSR/tGRCo6HZ7ooTbLAVmu wMrAxwIsPv/ycFBZ5e4DQiIaxsVDPS5sQDHmoIhhRgOovoIinXXCpEl0JvnkegLG P9ZWHsmUEIlzU20iMBDmwDmxbsMhtiIFpSNNwA1c3wE786mTQ31vcvscR5p6JJCe v9yHiEoEEBECAAoFAktgn/4DBQJ4AAoJEOduIicg/undB58AniViZmymFbmu6LcB IQdX7tOfkKQKAKC1L+dB4cKQwTLHMv+PTm3ZZQUCiLkBDQRLYJzzAQgAs/C4imB/ b+pPBbSm85RC5tgzng8RgF9S1WXVUJupa7QEetNn58yodQr+j+ACoNeX3EKHd58m Ja2HyU/cKo0UwNOJA6iKwfrWXOGj7DigxdZdZ9QE/IyzsyrQPIbAVxZn1v3zmpTn ngueh9dUda0KKzeq8n5J6OjpS+G6wrMe1tnicM1vh18wIS1JNU/EgQ3hQ5y6Docs 4xjiYmmO+UlmW/SiiFhwR0b5pwEaQwSLLX4OjEdpxb4E2gxh4+V0Bk1BzpS6GygU Qvk1Ct/elQZX3Cyo88OlLSG/UiYGI04JDuyA8wwbriQezVMn0PbVXdo6tR7pqpCD QAtI+LFEM9VjbwARAQABiQElBBgBAgAPBQJLYJzzAhsMBQkJZgGAAAoJEKOmmGRK r4LOtMEIAIrN0mDZgdvcsV6RmSfoWWawDOklTOh96B20iKYKWxBSOrGNwAAkJRfL 4E+y/fu3DMoNUKJAAUZvjTOAl2YXv6U5LNK6IDQ5vGtERKS4VukBeDdgK9bLj95P cOQ2khuq4RVRL+4H4sdZyxLDD7Dad77rsuavECIK72Dlb9KX+/HJuHERxpqPNAjs FlQv2pfbfbr+SoOTjknLCIjct+lDV//y72WwlJeEYWQhKjVJupxPBGOyQEDCofML FvzDnuVl4Ft3qP/dLNwObtfghIz604M0aCpYwtItHA35zHRI/R7u24VtluA4D+Bc vKKK08LFvCJ5WIK8LKm1Ad/oQh3yuwI= =h+sB -----END PGP PUBLIC KEY BLOCK-----
<rink@FreeBSD.org>
pub 1024D/ECEDBFFF 2003-09-19 Key fingerprint = A8BE 9C82 9B81 4289 A905 418D 6F73 BAD2 ECED BFFF uid Rink Springer <rink@il.fontys.nl> uid Rink Springer (FreeBSD Project) <rink@FreeBSD.org> uid Rink Springer <rink@stack.nl> sub 2048g/3BC3E67E 2003-09-19
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 hpneRV17ciF5APqU2SSiDrugQg== =Gfya -----END PGP PUBLIC KEY BLOCK-----
<vsevolod@FreeBSD.org>
pub 4096R/90081437 2012-05-16 [expires: 2017-05-15] Key fingerprint = DD9A 126C E675 1EA5 2A97 04A3 0764 7B67 9008 1437 uid Vsevolod Stakhov <vsevolod@FreeBSD.org> sub 4096R/4A5A0B54 2012-05-16 [expires: 2017-05-15]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 XCbWVeYyJqaMXExTQIx+F+uj =EHpi -----END PGP PUBLIC KEY BLOCK-----
<zi@FreeBSD.org>
pub 1024D/7AD7FAF2 2004-01-21 Key fingerprint = EF36 D45A 5CA9 28B1 A550 18CD A43C D111 7AD7 FAF2 uid Ryan Steinmetz <zi@FreeBSD.org> uid Ryan Steinmetz <rpsfa@rit.edu> uid Ryan Steinmetz <zi@zi0r.com> sub 1024g/058BC057 2004-01-21 sub 4096g/0EB108D2 2006-02-27 sub 1024D/FEF36DD7 2006-02-27
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 ZTV4zXhavRs= =wi3x -----END PGP PUBLIC KEY BLOCK-----
<rrs@FreeBSD.org>
pub 1024D/0373B8B2 2006-09-01 Key fingerprint = 74A6 810E 6DEA D69B 6496 5FA9 8AEF 4166 0373 B8B2 uid Randall R Stewart <randall@lakerest.net> uid Randall R Stewart <rrs@cisco.com> uid Randall R Stewart <rrs@FreeBSD.org> sub 2048g/88027C0B 2006-09-01
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBET3848RBADitK8bahB8Ftqi9wtYsFRGfdm645cTF5fAnxFjC+ouPfLk+cfD I6VG1Vib3T+SYTTJ3xPm7tV6RLLlRsdAfSE4P73o5qVe85Dq4JBKYgdCms+0Z7B+ O0yB7B0KClaXhZpsQtK8yLtROjiJxw1WQ9uOS/me5AHi2cZruoOcYxkzbwCguMmd tOy1SL5V2RLfJiQKAFQ23M8D/3m42RjkoMB791fuJ/pH3i98EuXhCwrSv7eZ3xYU TY93OwMEwPYaABK3jSygMETj9hu2pYFbrAFKSHQVPLcUBrKYw9+Fjd4XTOOxYZeI /+n0xSRk4W+sIQX97jCbvCrtk9jqIz2NQt9IlKxG0Xniio/Q8PsNNbO+jd5HSXqE ja2oA/9+r3LUi3jKH9rpY6x4Qz/DBpcNK4v5Fz24mtkwTfjyfC2nTlG58bSbmulE 1tfOLDL5BHmGoyWIqaFzIVIA5oGo9EYG2RCx7Vr+WgsY6jr5tX7HlhByoE5Wemoz YN5CDC9KCKe7TCpVJtlq57c02kE0OT3gqYsflidfV50Qzt9jI7QhUmFuZGFsbCBS IFN0ZXdhcnQgPHJyc0BjaXNjby5jb20+iGAEExECACAFAkT3848CGwMGCwkIBwMC BBUCCAMEFgIDAQIeAQIXgAAKCRCK70FmA3O4suHBAJ9kvtlm5qy8c6qSizjcvuzj q4gFJQCgqthVasQ5jNFZf1p4vM+gD1T84M+0I1JhbmRhbGwgUiBTdGV3YXJ0IDxy cnNARnJlZUJTRC5vcmc+iGAEExECACAFAkT39KoCGwMGCwkIBwMCBBUCCAMEFgID AQIeAQIXgAAKCRCK70FmA3O4slQYAKCNWFpgxPkfqz7PoTUcobiXbu7EAQCcCj0F mj5AKPyuPbwP3JT7Cyf4Fs60KFJhbmRhbGwgUiBTdGV3YXJ0IDxyYW5kYWxsQGxh a2VyZXN0Lm5ldD6IYAQTEQIAIAUCRPf07QIbAwYLCQgHAwIEFQIIAwQWAgMBAh4B AheAAAoJEIrvQWYDc7iyy60AmgLBwWw0LjdY6+zyUyUhRm9s4vZEAJ9F6dw61khm NQlfhpvoBh24pl6GTrkCDQRE9/OUEAgA7GAeZ2BgjNDYa42+GV6uo1FxadTNppdN gG22xgg+4SXnWZ25O8dofrHIwP9rk/qomw452MoAlVevV20uYthVqAXBWRGEhO/q zKfyZxTe8aCOs1mjCKu9fPkSgNUDoCl6jCac/5mDdcLdVT3domBJvGiqqSQ/B1JA 3YWrYCnnLTUN2a2aPW0ZK14zCSjaWQFDcm8kPi1WwKu9yldGnAPoT03+JF4KN0kB YkdmfEAFOJ4kjm2UROJc2aVUtjeMH3nqvdlTmuw6c6cmMMSIlXkcrTO7gRLmnx2J HgSdukq0vEtgND6O/o0n9Rnr+UccOCCz6EJkltL9knjKwutdQz9x8wADBQgAkEfc D/VQ1sUCgS5xyrer45zxW5NdeuFI+h12D94MKopczr73p+7Tc1bSDZK1M4e432qV 8hNy8Q6gYowhuuBqxI0LYcEtrJld0ma4cnMraRjkId2jmyK82c+O/K1w+vcGUsYu nxYBiGwtTTo/R+202kp6VGD7jnIxGQs5WsMmnh8EL1m4BXeFm6BzfT29SuV4bdoZ 6/YHyPLGVgtnPBCNQUjLvXqdaOlk3E1wCBd4A90pC1dDiN1rsAxOTcxwgyKfasXx CZsdBaXEYYUIfm9WrAFc1S/baV613184I1duBfCJWMKxGXMSr68CeFQ+I1036lsZ IdHoq+Y3nZ5jPRUIYohJBBgRAgAJBQJE9/OUAhsMAAoJEIrvQWYDc7iyXiAAn3XC FR1XLpBIlAr5dn8ozSpbwfoHAJ9ZDFSqbQt/EDawxqaoYP+4p4Q85w== =jM4N -----END PGP PUBLIC KEY BLOCK-----
<murray@FreeBSD.org>
pub 1024D/0E451F7D 2001-02-12 Murray Stokely <murray@freebsd.org> Key fingerprint = E2CA 411D DD44 53FD BB4B 3CB5 B4D7 10A2 0E45 1F7D sub 1024g/965A770C 2001-02-12
-----BEGIN PGP PUBLIC KEY BLOCK----- Comment: For info see http://www.gnupg.org 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 qN+IdvKuAKC6p9c3lJBbYHFlhxPDhBvgBaSOKw== =WyeV -----END PGP PUBLIC KEY BLOCK-----
<vs@FreeBSD.org>
pub 1024R/3FD1B6B5 1998-06-16 Volker Stolz <vs@freebsd.org> Key fingerprint = 69 6F BD A0 2E FE 19 66 CF B9 68 6E 41 7D F9 B9 uid Volker Stolz <stolz@i2.informatik.rwth-aachen.de> (LSK) uid Volker Stolz <vs@foldr.org>
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 G7oQ/NdFiVk5IOo= =r3Jh -----END PGP PUBLIC KEY BLOCK-----
<rstone@FreeBSD.org>
pub 1024D/3141B73A 2010-04-13 Key fingerprint = 4A6D DC04 DDC5 0822 2687 A086 FD3F 16CB 3141 B73A uid Ryan Stone (FreeBSD) <rstone@freebsd.org> sub 2048g/A8500B5F 2010-04-13
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEvD5ncRBADjSSeOophd6EZMLRUyyqvBTYhHJiCmYqDfog+PG84/Fsb7sXXe 3W8uZ/Wob/wF8vZey+7V9aK8eoJP9aK52SIMFUR8hdbXTrwhHlTc1QrFWLXjVqJ7 Ct+ORGcqsUO9P/KwG6Waf8UG1Dnb4IZ2bQCoy+hEXpwiE8KLhR5X3vdq3wCgjARv ef8JXQvjUiiGUmPTtwumbmMD/0QmTbZOhdjC1TbIEOoj5BRZKWUv6rj2bXJL+miw DCTdpwwn5VfmZiYHeTcCclyPH+GfkNAhrYf4XQ0qUBtB054A+0ZuK/oEbHpqw8ky 0qj2GGCt0m1LybiX0g9MhEZU9/Coq69TGoAFcysGisrEq4gJm29oc1gcXKXdXAem pP9NA/wLMp4p5BTd7Q+9fVJo2X7JTAtCL3djhvFpgbSeExhKCHflH+g0gw7qiMKv po1ozRY0r0fwr/gv/LcIh/XBImeyodj9Hnx3xd1jhToGoVP4Olm54PxNKLtcRize 7CfrQr8TPG6MCY10EGVczIz6Qel7izPdqacXeeB8u8RYnoh4d7QpUnlhbiBTdG9u ZSAoRnJlZUJTRCkgPHJzdG9uZUBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCS8PmdwIb AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEP0/FssxQbc6NYEAn3Mm+6fmwl8H JuLh1vhMkmO+liK4AJ9m5Btl2vy1eKMfijZ2a/zIbGcydrkCDQRLw+Z3EAgA9LNT KPMCyYCuRn0OjAMiCcHiaj20sbY5kO8o6GSOT3Gk8cXxNQgglcvfYxuGxKjG3uIs 9+1Sa1uGkyVwTCt9DUo9EGvtLxZx/AUU88M3aVF8kt3WiIjTEow2EiS1D7gmancP PI2snFh3qqbkN3oWcD3rg9uEwxa9i7ptb/45KnCFJ1bB4jDkuNRqeEOGg7uPV8sZ /s8EYFqTl5mW8hTvUY/XgKZl8TvFHxDDXQlA83OWa7RW1JI6G6zuJPHA7q1zwKFF DZTabKaXB/gQHYj+j5fx8FgzIa3J7s6MUnZLq4e3xf/3yWOgfsRAxgMjL4WUe/GF 6vOvE3oxTbUMrQ8FQwADBQf/awmIQZWNMi1aVo2Jls5GpvcV0QZTo5HCcItzoEax rY8HMaaApvbiGFckN75O08GuKPEtoet232CEBet2D0NS+VKqp3yBcRwKELTttOFl fi0ZUWH/Mk5NEJUSR+lUzptNGRmtu4ftPW/apjrtzRTR6k7KxVPZ0q171qQfF90n zFeWklDK1lw1PGWk5X0p4qHCCMs+6l+TEgYjCXZdaDJ/e29bNmXdz3ZBiWbu/Kjw jk4s6/17TVXl/KhDAyvfZ3IN3d9BN6h+R1gqE/cp7tGvgDTVZ4+nPm8NVaOr5sOl 4L9EagqjMAqQzcbhtWHG8PE76P7wnbU2I5pHbexqLlTpGIhJBBgRAgAJBQJLw+Z3 AhsMAAoJEP0/FssxQbc6JK4AnjiZo91wrPy2ZqMytQaPL3SJcmv8AJ9Q9jvmFruu qi/JXA9b5UcmNn7xoA== =J2di -----END PGP PUBLIC KEY BLOCK-----
<xride@FreeBSD.org>
pub 1024D/E683AD40 2006-09-28 Key fingerprint = 8A0E 7E57 144B BC25 24A9 EC1A 0DBC 3408 E683 AD40 uid Soeren Straarup <xride@xride.dk> uid Soeren Straarup <xride@FreeBSD.org> uid Soeren Straarup <xride@x12.dk> sub 2048g/2B18B3B8 2006-09-28
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEUcBVMRBACN3a/+siykVNlKvwCmd4HVMogG+Oljeu9wyLsI8dJ9Y81bkY0h fi7ve3Tfu4GeRcirnrc2FV9Fcsv4dt9DtYQ7PQTPH8kjrSXr3kQoiHE4fGGJl4IK IVIHj+iC26JJgbqFcSU7CKGdvZIOJ17IPPh/HhunKBv9ljNJ5MM+WL8kJwCg20Ez J3CRnHM90EFk/nfAlJRvXk0D/3rqR1ODyY/8fFDtpOIjkApkw7k2eoJsfqy7tbtX YwdMKQptAvz2NxW4Qjfo3NbgGbfN6eAlhoy9Srcfm886KPMA22ZAvCWopFNbqAGX e2iOEwbU4JflSq5vLsIhOVz133W6mK1c7VJ0cf2zl+iRWtISES4fOY5s9rEacIjA NcAHA/0ak6bks8LqzC64zFdI6bj2FfJbOoTrga1/FQEBSw8bET14S20G/713ZCD+ tQXXrs8I9YjBQREsKYmy0ixFYFmxMvG0NxkIyrwD/GEqpBbNdkJlx7pUhqv3zyRY rzvcmca7jIguu6K9nYi3t45nmCVo4ku9EE34YHzvgFQ15+1LdbQjU29lcmVuIFN0 cmFhcnVwIDx4cmlkZUBGcmVlQlNELm9yZz6IYAQTEQIAIAUCRRwGPAIbAwYLCQgH AwIEFQIIAwQWAgMBAh4BAheAAAoJEA28NAjmg61AFysAmgIisxdd6032Jk2xeI17 gcHuzXvuAKC5z1x4XxCwELWC9mk9HUlVTWcMW7QeU29lcmVuIFN0cmFhcnVwIDx4 cmlkZUB4MTIuZGs+iGAEExECACAFAkUcBVMCGwMGCwkIBwMCBBUCCAMEFgIDAQIe AQIXgAAKCRANvDQI5oOtQAvaAJwIhTZcNVO1HKFwW5+hfnpE55hAMwCgtgTvelBA dhl0HgdkEN+HWtZzEnC0IFNvZXJlbiBTdHJhYXJ1cCA8eHJpZGVAeHJpZGUuZGs+ iGAEExECACAFAkUcBtACGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRANvDQI 5oOtQBgzAJ0e+6mp3n17yH4hAzcE2toJ/CPBPgCgrDC3mRdXEOD8Gegm80agUykc Fq65Ag0ERRwFhBAIAPf3jtvf8pJMZoO7SQ3/Et3jla1POUcJuk9T70om/Fqi9Y1b mxTXR7yu5Rue/ZSN20laoywnJQAJ3BENx7mZHZwCzZDfEU9QU6WipPykt7KbhBG7 DjXBONGY34wl4RearvGn61FuL77/pkSA1XQ4+5U/hWIisTWnHRufxoykhlyo7QTN x/S1bEXA6eTtfT7acA8sZfMRiqb8opOtJPiSMO7vBEYHfkleUGhSJwI7R7ghux2z y92Sp1sFO7xb7ZVlKVPo+edqbu5mKRLvhykLiA7keNv/YGkfVjPgLthAo14JIL3b 95dOkGV/iI+DlYWPa/sDOM2KL0S/wJ7dXMtMVO8AAwUIANqJ9nqvDnWMoiJ2/Zuc H9y7CMmSZEdzQwKqaJysyDqiV6LAK9TXsxzzl1UXximPMCb2qwtVGOaRKAPR8qjD 9GQc0Lb/BCFQ213o0eb+pvq7fFmUxrt7kMUvbwRGhiRbHyo1qf/z+VA2bntosYmW 9YSpa9eoE3iXr3cF6wQVw/nUF7jm6QQ4M3ak1MiaoICxxCy1x2WzW9mrUePPWz25 x0Pj0+R3mnWMTewLC6kk3QFM3usdxudGXJqDVch3w47BHV59WgSnzYPshGFp0VlU xeJNWJYu0DM/8WeOvRdf/5VdxwJGDtxRyQSDX6niYHWg6tL2Bx1cCxJnnzLLnXDp PziISQQYEQIACQUCRRwFhAIbDAAKCRANvDQI5oOtQObqAJ4gRDoYRjl6DWCd2DgO ECDwvMM5wACgiAYFjP/BOSY6RZdSBTxOSdyeVdk= =Dgd4 -----END PGP PUBLIC KEY BLOCK-----
<marius@FreeBSD.org>
pub 1024D/E0AC6F8D 2004-04-16 Key fingerprint = 3A6C 4FB1 8BB9 4F2E BDDC 4AB6 D035 799C E0AC 6F8D uid Marius Strobl <marius@FreeBSD.org> uid Marius Strobl <marius@alchemy.franken.de> sub 1024g/08BBD875 2004-04-16
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEB/3xIRBADGjxOPVRN2LvXTd6jXqKf4/6pPVPQlKqtwpOZj9JgDVE+V0Elf kjvwfCXA0gqt7kkal8i2TU9v2g6IIKP1eUoNpBy/s15Wc8JMlESB6CkfFPNkqj5o ohRSoKuB8dud0KR3T531rPfQNmsVRWtxrPYigkrtYZHiTPSZFgL0e+RiBwCg+i3+ p9+1JBby6tthOolOGdr54xUEAIYounibXk8p54DJeunp0rMbzKYvbXYTOyc4HbD0 t9kOH+VI3BJ+DlEuCejgwRkxkisjhQbSTa4+EGROKYcVIBBTtsj8JGHiNyRVSQ0D +A1KDuZQh7iDwuyatT0xvcvFw52In0dj3RK5hDV2ZX1ec1WiEMKdf8It+WdTSQPT UUF+BAC1WEPU92FZefdEDIQQHu17xsCestDOyd6xUBpxyPV2dyUwm8k7OhRalNuk nAIXfbZcVVZ/+RWDdfiftoSxQmODQg0JtzhtGEQO2q/FozsCy4Bx8XPk6CQmPMJk x/o8MwR50qDlsmcMRR2NDF+I1QOyRpEmugZ6sO+WXm8bkj1J6rQpTWFyaXVzIFN0 cm9ibCA8bWFyaXVzQGFsY2hlbXkuZnJhbmtlbi5kZT6IXgQTEQIAHgUCQH/fEgIb AwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRDQNXmc4KxvjaHxAJ9+D0jNIIFzozzz 6n/bx6N+yV2rwgCfZRtKVbN4QNEBod9tfer2TgmRlqGIawQQEQIAKwUCR3O7DgWD AeKFAB4aaHR0cDovL3d3dy5jYWNlcnQub3JnL2Nwcy5waHAACgkQ0rsNAWXQ/VgC ywCgjtPLCzZAAgOuFiLwNw4vF6ZXJBQAnRPxbc9SwccyaGrkk8kiCX1nxVmFiJwE EAECAAYFAkd2QQ0ACgkQ722CQfCBGV1D4QQAgo9MiuMFTfyjZn/qfQmSenruVgSW GpKiz6DTPhmT767GqaVqaaChoWqPY6/PGPTbk71NleF1v2HU1Orzoj3KqgzE6vVM MMfmMXJ7y/A9hg+xImKuThiwMzfJJQ+nrvCc1beJIiMxhJJLHxmBJZve/mbMUs3V HC4tGEcdrGecFY2IRgQQEQIABgUCR4ekWwAKCRD09yJxgsm6KU0pAKCIgvYV8BNI ES5/8AK02J2lApE5kwCgxetWv8ToTTbUhW2AhaIEHlg8KQi0Ik1hcml1cyBTdHJv YmwgPG1hcml1c0BGcmVlQlNELm9yZz6IYAQTEQIAIAUCR3QWxQIbAwYLCQgHAwIE FQIIAwQWAgMBAh4BAheAAAoJENA1eZzgrG+NU0AAn1xgOlGk3+FpLagxQh6/O94Y 8iz1AKDvu7Im3yfxj4LRh5UVKnNYMIJTtIicBBABAgAGBQJHdkEIAAoJEO9tgkHw gRld4JcD/j52TeNiPNJ4hDyd0QJUItk8RXcvBtrg2dSl0TGmNs2f1+3fjZ6vdrE+ 5Ry0qh38ywsxs7sEFURPavre4i7EbdOWv6NawUfaIsgXp8Os91bQr+UrXe2esAEC SICQS9hHI3qEl8hPqay7rPl/lXM3ivofmrRXXfBRCtxUqy8+CFoeiEYEEBECAAYF AkeHpFsACgkQ9PcicYLJuikeVQCdG97q3ZUAYRy7za8JihUzddma5wIAnRS7veJj ENbiKHg6MJc2BMFGZ9H4uQENBEB/3xUQBADFOTE426iijaR8FaZLMIRaSexGfOvc nPJFF+rkoktpQzP+9BKDwKvt1HmlDXaiaeJfwEfQdK7/oORh9+ynL9ag/KaocJtT 8eAqhVnoC240NF+PhMlX7YblUwa9+M5MfNmDkNEV92ZFIJ8QjRAzn/G3rQIMo6ax BmsF+1P71QEIgwADBgP+Kbmf5TjcU45Wuc3ceZCAEm9o7VMhsU/tVu69x6QRu379 HqJ9RDuAOdcBWQ/67Jw7blSbe3yWZpqhxLTWwYELJG7/XSNnIsFl3osF34lm0Y9M lJl+XBQ3UV2kPgtIMDTXDuklzuhdhbIlhWOXJJf48WkSxeB2WGnnlVvBCjBTx3+I SQQYEQIACQUCQH/fFQIbDAAKCRDQNXmc4KxvjWiAAKC5xnCwJYOHHwqreNa98Dah W9e6+QCgjchyumMlSJfpEEnGG8vU08TmXrs= =QOvV -----END PGP PUBLIC KEY BLOCK-----
<cs@FreeBSD.org>
pub 3072R/D06F0BD7 2012-11-25 [expires: 2017-11-24] Key fingerprint = 61A4 F2B8 2A6C B81E 5557 0798 78E7 DE70 D06F 0BD7 uid Carlo Strub <cs@carlostrub.ch> uid Carlo Strub <cs@FreeBSD.org> sub 3072R/71C75997 2012-11-25 [expires: 2017-11-24] sub 3072R/318AEB16 2012-11-25 [expires: 2017-11-24]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 5w== =X5dP -----END PGP PUBLIC KEY BLOCK-----
<clsung@FreeBSD.org>
pub 1024D/956E8BC1 2003-09-12 Cheng-Lung Sung <clsung@FreeBSD.org> Key fingerprint = E0BC 57F9 F44B 46C6 DB53 8462 F807 89F3 956E 8BC1 uid Cheng-Lung Sung (Software Engineer) <clsung@dragon2.net> uid Cheng-Lung Sung (Alumnus of CSIE, NCTU, Taiwan) <clsung@sungsung.csie.nctu.edu.tw> uid Cheng-Lung Sung (AlanSung) <clsung@tiger2.net> uid Cheng-Lung Sung (FreeBSD@Taiwan) <clsung@freebsd.csie.nctu.edu.tw> uid Cheng-Lung Sung (Ph.D. Student of NTU.EECS) <d92921016@ntu.edu.tw> uid Cheng-Lung Sung (FreeBSD Freshman) <clsung@tw.freebsd.org> uid Cheng-Lung Sung (ports committer) <clsung@FreeBSD.org> sub 1024g/1FB800C2 2003-09-12
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBD9iAJ0RBACJHmAyofYftDx6hFkYRkCrM999YrKxfYGybHI+MoN2fFPXMvSh idYzBGhij1a8E7DGuZ2fGwSxdUZXcUA9PlDPuTmxs/xI/ZgX/qnG4yPgeT7KfZ5g UqRpm0/gz/7g5UsvNBw0iUzSbI7tTXprErflhUXX6cC1bPHTeEQbHe+nSwCglpMT cpcV93CQpMX+GC16UvwC8MUD/2TzigXSQ9rJNoTLuhsibSK9fh0vzq6rhCrzy2Ma G4M9kLvApu7+8YEk9ydVk9EE0PxHTTXGAxnpZzTW/bCCcLubhBqv8eXs2GOOxzHG YXb9Oyo+FDe0EAEZ5Swmf/V2eAHV4bYDmXzW9okxIUK6skXtFxQ70DxqcmtAxlxa QLgbA/9plT+d5g2s1c11Z0p5CQbxa8sJu4nLFT36DzhR2BmhTEM/X2wSARGe7PKu LdWI1WfU4Avoj9sWehSF531tMekMSZ4lp0gb0rYOyzGTqTWjq32mkqep8MDP9cT9 6H1UaSU96yyc1sprUdU7XDf7TA4jZp2LSLlOEB2UCOa0mBL9QLQ4Q2hlbmctTHVu ZyBTdW5nIChTb2Z0d2FyZSBFbmdpbmVlcikgPGNsc3VuZ0BkcmFnb24yLm5ldD6I YQQTEQIAIQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAUCP4IzGQIZAQAKCRD4B4nz lW6Lwc3gAJ91P1UQoV68L7emHnjqlf3nK6qzmwCgiVtWyaqQJq4fayifeKfFmT2U 0EyIRgQTEQIABgUCP2SPxwAKCRDm4NvoVAvGHGhiAJ90wTMq0zYb41tG8M+RoMyv oVsgtwCdGko61SUEB+884zRD2bHhwFMg+OiIXgQTEQIAHgUCP2IAnQIbAwYLCQgH AwIDFQIDAxYCAQIeAQIXgAAKCRD4B4nzlW6LweOrAKCRWdRCC8hQYwWCa4/upt6N hc+SRgCfVybP7alAFua8F010HJiSfXdNtFuIXgQTEQIAHgIbAwYLCQgHAwIDFQID AxYCAQIeAQIXgAUCQSQbpgAKCRD4B4nzlW6LwVB9AJ42/CQFoYKDRYz+XmCqBou9 Y+Nm/QCfZv19FBbMSOfvRW6R7nJTSkf3Uj+IYQQTEQIAIQIbAwYLCQgHAwIDFQID AxYCAQIeAQIXgAUCP+GGogIZAQAKCRD4B4nzlW6LwUZ8AJ9q3BbkGIsEuhnp6rWX uSkcXYkWWACeNSCb9l9g/650wnXPEHcHsRpzBLK0UkNoZW5nLUx1bmcgU3VuZyAo QWx1bW51cyBvZiBDU0lFLCBOQ1RVLCBUYWl3YW4pIDxjbHN1bmdAc3VuZ3N1bmcu Y3NpZS5uY3R1LmVkdS50dz6IXgQTEQIAHgUCP2SMCwIbAwYLCQgHAwIDFQIDAxYC AQIeAQIXgAAKCRD4B4nzlW6Lwb3bAJ9mJttWnct/3ej1XlvmnAxRq6ZkOACfdZDT sLSo8DN73ZKDbiP73KqDPdmIRgQTEQIABgUCP2SPxQAKCRDm4NvoVAvGHONyAJ9t QrXQSZDkm71qAw+6HiERQ+qsEgCfWuA857Lrda9ZR8X7IJJ3XLO2HPi0LkNoZW5n LUx1bmcgU3VuZyAoQWxhblN1bmcpIDxjbHN1bmdAdGlnZXIyLm5ldD6IXgQTEQIA HgUCP4IyxQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRD4B4nzlW6LwecsAJ9F HNrKHPsCJ6ZesY1gJI5HOVijvwCfb5G6dT2YW8TH8GNRFe7rWPXO1E60QkNoZW5n LUx1bmcgU3VuZyAoRnJlZUJTREBUYWl3YW4pIDxjbHN1bmdAZnJlZWJzZC5jc2ll Lm5jdHUuZWR1LnR3PoheBBMRAgAeBQI/gjLeAhsDBgsJCAcDAgMVAgMDFgIBAh4B AheAAAoJEPgHifOVbovBz+wAoIJhcDpcOVIACy+wboHG4nGOQfiWAJ45qvE09ckd IX+MDl7xez7OMqDU/rRCQ2hlbmctTHVuZyBTdW5nIChQaC5ELiBTdHVkZW50IG9m IE5UVS5FRUNTKSA8ZDkyOTIxMDE2QG50dS5lZHUudHc+iF4EExECAB4FAkAoN7AC GwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ+AeJ85Vui8HhdACeNn9owhjpYr2y cYCkOFDv+q3xIF0AnAijfOOUq2oT0d0+B9sALIz0HHrEtDpDaGVuZy1MdW5nIFN1 bmcgKEZyZWVCU0QgRnJlc2htYW4pIDxjbHN1bmdAdHcuZnJlZWJzZC5vcmc+iF4E ExECAB4FAkESZaACGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ+AeJ85Vui8Em ywCdEDYOgC1/YxPHqyvEXGs+JTFFqfkAnjfkTpRPM492elqZkBlQimFGLeWutCRD aGVuZy1MdW5nIFN1bmcgPGNsc3VuZ0BGcmVlQlNELm9yZz6IXgQTEQIAHgUCQSQc 2QIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRD4B4nzlW6LwZ4TAJ9hByDD2ep6 ixTnazmBJSg3epv9tQCeOM4JaWNwvbOrF528n8PQcgpe/3W0NkNoZW5nLUx1bmcg U3VuZyAocG9ydHMgY29tbWl0dGVyKSA8Y2xzdW5nQEZyZWVCU0Qub3JnPoheBBMR AgAeBQJBJBoPAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEPgHifOVbovB564A mQGePiZdxv8qVwvtdyf6m9SvosGoAJwPuv0oR/D4PIDKFYtlTqfYN35I47kBDQQ/ YgCgEAQAwHkhKy54M/yuuJgb4Gcit2+fDnlRZ8yRJkGe8OSl7qx9Gaz0+kwe1Gir V+DQFGC/W3gJqjEN12jh11ZUabE3Seeofec94rDZz/YBkf5ofMT1+tN1kwr+ju7C lQdZCwNewaS2p6C5PsXCUQQ8ZHfgs8YB7Ze/TY6GvpOoDKqYHO8AAwUD/1ZvVV9P e36FE4RkHg3P1YLkMNs5fxleXD1l6LZ8ElQy1V0RVg8sD2W22xh0wP2W9RplsDYj UwFKuRtxxoEsdXvDNLaUyG4hXmNUVBz3b3tmZSvENiuj5EchJWO85T+AFT0g7ap5 wWlxOqmvHC5NZRiAP1fpKpwoSvYTLP418YSsiEkEGBECAAkFAj9iAKACGwwACgkQ +AeJ85Vui8E94gCdEqq8xPwuUc/LJQyc1ziacZJ/FmQAnA41/zThbZg2nf994Wre OT332jJ8 =EtCd -----END PGP PUBLIC KEY BLOCK-----
<gsutter@FreeBSD.org>
pub 1024D/845DFEDD 2000-10-10 Gregory S. Sutter <gsutter@zer0.org> Key fingerprint = D161 E4EA 4BFA 2427 F3F9 5B1F 2015 31D5 845D FEDD uid Gregory S. Sutter <gsutter@freebsd.org> uid Gregory S. Sutter <gsutter@daemonnews.org> uid Gregory S. Sutter <gsutter@pobox.com> sub 2048g/0A37BBCE 2000-10-10
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 sTEQABKrEX0m =fxvp -----END PGP PUBLIC KEY BLOCK-----
<metal@FreeBSD.org>
pub 1024D/AE562682 2004-05-23 SUZUKI Koichi <metal@FreeBSD.org> Key fingerprint = 92B9 A202 B5AB 8CB6 89FC 6DD1 5737 C702 AE56 2682 sub 4096g/730E604B 2004-05-23
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =xwme -----END PGP PUBLIC KEY BLOCK-----
<ryusuke@FreeBSD.org>
pub 1024D/63D29724 2009-12-18 Key fingerprint = B108 7109 2E62 BECB 0F78 FE65 1B9A D1BE 63D2 9724 uid Ryusuke SUZUKI <ryusuke@FreeBSD.org> uid Ryusuke SUZUKI <ryusuke@jp.FreeBSD.org> sub 1024g/5E4DD044 2009-12-18
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEsqyesRBACDA3KsPNZg2Q88N9Vhp0kpoLW2Yp0xWbJ01tD2PPcGCq4nGE0W NgEvynvUwVJ4ODryLEIL3Po79fBIpkOhjraWdFH4LMcXjOequoERDWCMLOSBzP4R PKPqhSvOGw0H54357fcjzo3X2ze9HnfiOI5d94qaUpnPeE8JioJQcTEW9wCg9wKy KijAwG/TQBIHrS/bp6F/4GED/iCdSQ09Q6ZQF497zS1oNTgXDmD/qaAzW8F0bu/D rp9v5GVWeN1vfXHAtvug7/kIOO/eFZqU7IZRIf9bSerWXtaSV34QZSS81UZOr4u9 YUGG1qk/A2a06GFzPCzB80c57G1b2c7i9Ktbw5cQ5o01eLcbqkdLmc3OcjIjnmCy /wnfA/9tlfS50UU7RFfwj199z7R6vxZ8HNoW0DwyNT0G/Sumj96o7+GXqU6NGZ3c X4g0qQbF1NY5h3cXkR9y3w3TP+guQFWtJEqyXxykYHZWAmUfNbaG7xiWdP0iGa6N pAWzMjpeHFXKCLmD4WzRx82TPvxSaw8W7H3PQwi/QIj1yBFot7QnUnl1c3VrZSBT VVpVS0kgPHJ5dXN1a2VAanAuRnJlZUJTRC5vcmc+iGIEExECACIFAksqyesCGwMG CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEBua0b5j0pckoPcAoNDzMLDEsOm+ GxbYMxiTpRNqR3/IAJ9TZ2g1dD8D99ipOUIADN8DyEZRBbQkUnl1c3VrZSBTVVpV S0kgPHJ5dXN1a2VARnJlZUJTRC5vcmc+iGIEExECACIFAksqzV4CGwMGCwkIBwMC BhUIAgkKCwQWAgMBAh4BAheAAAoJEBua0b5j0pckOEIAn1Q0VUudnFwmFG2/Gim1 u+C8cmZpAJ41a06jrPg/BwDeHLHVhd5FzmXyqrkBDQRLKsnrEAQAg7+aWadgT2+8 C6Hb2GzSs3/sJnLUWCGfmzBqKNQwyTMAlXEBD1w6MIeYURz7PuPgkOvB8v8b5+2Y JBU6i1289khWYSq1pn7XgX988+GsX//IfqCHl9i/RnuO4dVL9KXl3lGFvftpsm+A /l+4NkyWo5T/wpzyrmNfuDrsuDUf92cABRMD/0NsHSpAxZpt67PoIrnAXIByQU9g grORKLEHjYe6XpuVsz8XPARBjskYScU9VcPEtWIUWh6PXCjNk4aiKwE0jY7XX0pE DeiZwa2WG2eFlDqJ03aPgxTQouwEKu3zuo7Xnd/dlAThHK0wZdNWmV6ebYah8rrt TJ3PrsYQNptn8iogiEkEGBECAAkFAksqyesCGwwACgkQG5rRvmPSlyQyTACeNfIm DBCNKmYGktQUlB1U9kf7o2MAoK1PxWrRo9/d+uKirJNnzdYXTJk4 =69IH -----END PGP PUBLIC KEY BLOCK-----
<garys@FreeBSD.org>
pub 1024D/FAA48AD5 2005-08-22 [expires: 2007-08-22] Key fingerprint = 8292 CC3E 81B5 E54F E3DD F987 FA52 E643 FAA4 8AD5 uid Gary W. Swearingen <garys@freebsd.org> sub 2048g/E34C3CA0 2005-08-22 [expires: 2007-08-22]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEMJW1ERBACGUsHdqFuQjrrtjpvx2pQ7GpZYl+HS/jVPn+0MjMcZwRtk2T+g b0/EzS/0oeOqv1biX/aZN19T31JGdlSm8FumpTc9zPgh830omlJx8V3g8wi0ZHzl UjGa2MkmkaCEVeP5bX/NyRljP6fpnOy+5h4F0WcpkqwlXRuhOzM8UgpXlwCgjjPk 0CLI2jSVsnqIKtMdunOfsd0D/RaALnZrVkGtQfDX6MDo1Ws+ADGj8rGtmdN5TIoo ivJvilG/5HSL2nsqOcIKWA+C4lZqzMIlo5iPSz3BijMc1Ni6LaQo4E4zvh7ID5fs fXsMhiE7H2KNSGTjmmL/8Weq8Zgpu9TBD8CHUZLD6BU4Wmm9I/R49A16T5Gbylgs fEwaA/0VYP+u8TEechtQKLuAfOwL2ruFE0YKmnXq2S7MixFvSNaRilB/t41I1YcZ mcWbRlIBezvchln5qRommEKfp/sWVcocR+AuSTcLT3683SkeJ+9205bFx9xXJnrE PBhqjMmRNNlmijcBFZHk+W7tCJQBbLGJkpLfqllfVkJ+rY/NVrQmR2FyeSBXLiBT d2VhcmluZ2VuIDxnYXJ5c0BmcmVlYnNkLm9yZz6IZgQTEQIAJgUCQwlbUQIbAwUJ A8JnAAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEPpS5kP6pIrVGPkAn0i58Ikn S9M9e7cMI9Fis6lXDoAxAJ9eRxZEgPn3aQ4DZ2ObnuKbKSqcw7kCDQRDCVtWEAgA 7jU7l7ssKXwc+/ynNfiLAm9nvCY4jMw+CK6hwhtuOmrgFH14jeEY8wRVBrOUkVi9 Y13Z3qkTk5DD4iX9f25iK8PJELU5XJWStuX64hIEyqowRZ5KkvsdydHjQ1x2koS5 oTW5kD2nWChnBKI7iWPgRnFnfthrXE83ZY1sV+/OBRZH1ZS5KVxOzClcoTiTE5Q0 Q4Py1vlS/Bw95Nhejef7gSf6fN+iV2DQn8KDF81+MIj1jTWt5LDa80G+T5yGWeuz asAZVzBfPEHbWbVmRjT9Ajmump1D/0gUvxSr0fpnVfPtEFJ/MbLdcV1kyTtI9YLm EWnov/J31bGCDlhGjYfaLwADBwf/TBu+b48oClOPFJznnNGVVJUdD528hfVor4Wy 3ph3KXSfaysOmG1xo+nQ3JpdzbC3nXgfVGM2wGvFEgq7ogBZ9YZNzwSP0vseJlwn oXNKvKKDdCyVJC6Xi0Pd6L4beJRTjxf0LPQUjYdQbwrk2RqHXZ/RUapYjlfOWS2l 4ZqHiMoO7ZIAj/bdBKxySu8qVs3zmu59SE+ZQgxSXwxw2mF09XWOLgXsKTfhXlkl ZyKhjcSlVfjy4SXiXy2zFCh9+T0eiCeEzz5kS0QkA3npOooIFftI2q0IKbHOExSA YwOocuVEW7eLzeBfCoDa0SoapeXcjyF7KbiDwQ8xu9gEIUkpXYhPBBgRAgAPBQJD CVtWAhsMBQkDwmcAAAoJEPpS5kP6pIrV3wIAniAehy9Ttb00FbjcevJetKN5PWe9 AJ9XhpsYKAyHxoZLFzGdR3EGBJNAbQ== =EQll -----END PGP PUBLIC KEY BLOCK-----
<nyan@FreeBSD.org>
pub 4096R/6624859E 2012-11-18 Key fingerprint = 1CA5 445E 7ABD BC21 AEC0 7B89 47D7 4EFF 6624 859E uid Yoshihiro TAKAHASHI <nyan@furiru.org> uid Yoshihiro TAKAHASHI <nyan@FreeBSD.org> uid Yoshihiro TAKAHASHI <nyan@jp.FreeBSD.org> sub 4096R/362726EA 2012-11-18
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 818CVCU0zxY= =tAoH -----END PGP PUBLIC KEY BLOCK-----
<sahil@FreeBSD.org>
pub 2048R/C016D977 2010-04-08 Key fingerprint = 6AD2 BA99 8E3A 8DA6 DFC1 53CF DBD0 6001 C016 D977 uid Sahil Tandon <sahil@tandon.net> uid Sahil Tandon <sahil@FreeBSD.org> sub 2048R/F7776FBC 2010-04-08
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =jPKa -----END PGP PUBLIC KEY BLOCK-----
<tota@FreeBSD.org>
pub 1024D/67F58F29 2009-05-17 Key fingerprint = 6940 B575 FC4A FA26 C094 279A 4B9B 6326 67F5 8F29 uid TAKATSU Tomonari <tota@FreeBSD.org> sub 2048g/18B112CD 2009-05-17
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEoPodURBACCCL74hQbB00H/yUtv9No6sBynaWyH/blLogfrVbNL+86XIKDz yricgZ6/GDT4tbpaxs+o0wPdI0SrvvZuvvLfiV4ZxiCa8TNJF5/4GEzjKE89Pmtr DMK/i4RCzhRfs+PfzQdTRA7aQ77mds/tYGJYsqk3m1bWwOGggMti4TBk4wCg21tx RTopEa+HVDn1NTLgsAs9a/0D/3lvX6trmF07ENwCp4VGzBRTAZUAGgXziQ2zdjVD WcIWPO9PLxM1C1Crifbh5IOFoCsrUZeEsuLalzEVWZ2O4NqLRiRfuSD4ku6Rnd/k DBwkHiDy03JfGybBNEKUGvhXhhu53uij6ZXxNW9xR0KclDmrBxxEyj/Y/GYMte3b gV0SA/97szSEf8LmQmUD1sd+VHDBaJ9QUe5xNEJ9+8ZfCsVh0zamLvrAOLnZY0mU hPr61esTetdjDv1UAbn/OPTMfp4oY6/4Xa59APshxuK6urXaKExwWrvio4OYTHq5 N0Bq73HwZV1beY+yP8wRRI4AzPoeHa+vIOhfIIJO++v5u9Hrp7QjVEFLQVRTVSBU b21vbmFyaSA8dG90YUBGcmVlQlNELm9yZz6IYAQTEQIAIAUCSg+h1QIbAwYLCQgH AwIEFQIIAwQWAgMBAh4BAheAAAoJEEubYyZn9Y8pRqYAoIpC8dx4p/BaKVxueFll Jm/w5qD5AKCC5KSc0zMxM0Iq3FigA/tDjiyj9LkCDQRKD6HVEAgAqVPZwxV9bFbv PU20xAQ6HA8YxPp6QYUbb+r8AoRmqPNLoDqfNglhMimj5nPEFLvBgDHQaPQcqcja 5Qiz7j3I8xFrBbkCrx8xp4XYAQB8An4iy8np4Ys/YjvDjittYUn8CywN4rVGIppz S8BDY9Ufjy6v9iFERXGEGcW3x5gFA3S1hGJZ308QhlWMw6OachMadUnAXcoO30fe q8eITtyJZN2MESq7G5TtaywDHz3Gg1K7m68bPeQaeAHwkQBwC/0xvDtJ4uyq/Yp6 sQrlWJN50vaTnSAQ9q+b0tHQMVxQnxU0dVYgtE50jpPHApbc21Krc6H7a8VhNu9R JIanzAEUEwADBggAgJ1JY8XGrOVeYJ9F6S7F6pZKxyj/pYYBYA5dAIOm1df+cpvu Knen7UTOb6CgkZqGlX0BbYwYsfzr3B4oS0P5ScqE5gNVeWrCItZrZV6fuA1ZGnNn bvnEZ3xCZsb49CtfUcMLqNp1KGVGg1iVvh5YA7mtBmp6W12sq5YM4jx20ph+AHrs 8/eIts+MMJ70QDI+GoXtwgS5IfFQK4x62K8W0RAmp77/qvRE4hrdsL55UYwD1zuY qzwfQVNaPNUUiVDEyL6K3K5GYfkZ5zPz8iJ6sWtsuLEyG4CSWLwkAtJj0Xuc71vN W/gkbM4ZpQgqQGQDZvN44Sj/prcJlnbyh26ajohJBBgRAgAJBQJKD6HVAhsMAAoJ EEubYyZn9Y8p4EkAoI+bYGMuNB+i74EdgubvW/fTinfPAKDGBmZorrcBfYrnictP T1jCoBbEow== =0Wta -----END PGP PUBLIC KEY BLOCK-----
<romain@FreeBSD.org>
pub 3072R/5112336F 2010-04-09 Key fingerprint = 8234 9A78 E7C0 B807 0B59 80FF BA4D 1D95 5112 336F uid Romain Tartière <romain@blogreen.org> uid Romain Tartière (FreeBSD) <romain@FreeBSD.org> sub 3072R/C1B2B656 2010-04-09 sub 3072R/8F8125F4 2010-04-09
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =AUXU -----END PGP PUBLIC KEY BLOCK-----
<sylvio@FreeBSD.org>
pub 2048R/AA7395A1 2009-10-28 Key fingerprint = B319 6AAF 0016 4308 6D93 E652 3C5F 21A2 AA73 95A1 uid Sylvio Cesar Teixeira (My key) <sylvio@FreeBSD.org> sub 2048R/F758F556 2009-10-28
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBEroxHYBCAD8d4HA1tGibcHpjyOTeiQ7+yclqvB8bzWazJf1OeHwHcY+Rt46 gVxADP5QPLhMaiw4nYNr+bSg+RDIOG3bmxqDZpmw38508NWd/W8XjgQSV/PhnjU0 pfrvhXfmGG/f6C5D5D+IRJ5dffW65YuDXtsIPTOuBCwmq9NSRK0/w4VZBL1+ihDi oDhAWnkxfaFXN5luY98o1GVxQNpd/ZKjb+lsvAwsoXDSjn3R2bGZbA2LBIFh1Y2f KHa1vL4p5ZaNp0hnHyGW0mxC+SWse7zA3c500Erbm5d5I0HUgCEGNdE6tEryklFT zr4HfPxclml+QnlCDVZDSAf3+ExKfNLlSwjdABEBAAG0M1N5bHZpbyBDZXNhciBU ZWl4ZWlyYSAoTXkga2V5KSA8c3lsdmlvQEZyZWVCU0Qub3JnPokBOAQTAQIAIgUC SujEdgIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQPF8hoqpzlaFKYQgA mO/vudKdpx8jYDFmCOIE0OorvjqXNue+0VowONs2qSWiGwsvwh7YDUg8ZKEiBZHZ KV29T32y0JIQJ8tKloCF+XS3IktqWA0hlXqnN+Kmw3H0+MmzjgzCPhfTxG8jUUns r3qnYrFQDLzQXr64rUi0o6SQsxcsyb3m3VZX/NWXLyZm3RlCOfQzIRHWKGsP7Q5+ sMcLA/obV+C2cEOlsrT1EQWw6pBdhoPr55ssNG9Gs1oZtPhepoKjTq4X3VRIkm5n LEcR5WUOe9qOJxxLWSWI2lWl7KAMuGt7KmOpbSYZNWi6Z4ASm2U8KhtFIDmQINzJ Th4Qkph0TDAr1mhKSaRVZbkBDQRK6MR2AQgApzi1h0Oy/HVxC82JSxsfcQKNgQbF 6H9d3gkyb57koVVP52jBhcXx4vpce7oSpyWkm/uH6ZGZi5qkjSBliy1SdE+daymV 8FEh9KQCMPvM3BArrDlbHUzpgRDwxJ5E25FfY/ggFF6/uzY0vLsAtLdyWowOh5ZM Dt0sKXsAMzBRaZ8VsWeBfxJJpecRLa6igK7w0+oehWQ7v9iC+XqBpfXR2S4pxTi5 bshXeEfezqkut0wg9UBQdOZwMdzV3kw2Zis/qvi6jte19FrH3JVe3jhuoZCVKxec aTL2nawtQHqCN+7MhTog3ap+ZhghWr7NK3wlPWYmk0fDCRLW2bzh7e8OawARAQAB iQEfBBgBAgAJBQJK6MR2AhsMAAoJEDxfIaKqc5WhBt4H/ArRP3bzyv5ejeCZ25fr OCR7Z1vwdFFWvWqEAPO70x9XolGZMEhuF7OVjZpIXFgjDPBAoN5nxn4A3SJqMcXg zDsfqOJC4N2JHwWluX4D/CZ6caWOfI0p0sM7hYyXaoAEouknPO97IvermEvmiqnO gpcqUHbDL9DRKBnMyqDsSE3S83kEyuwD86x+UXJNCJk6awcUTWoETg6tVrpJ6Jma ccMPVsn4QucbRYyY2e9tIvJ1YbcqZH2munFGa4UXeY5+UemX88tg0rHHIYoN1B0d qMSWsm6YwNRBuyFC4f6RkK5x3FQExsTd36UaDkxMbimkyAf2y9uMmHf49+anaTUb QaI= =7/gk -----END PGP PUBLIC KEY BLOCK-----
<itetcu@FreeBSD.org>
pub 4096R/F0808380 2012-11-19 [expires: 2014-11-19] Key fingerprint = BAEC BFED 67D8 7529 5B53 C636 C922 F9F4 F080 8380 uid Ion-Mihai "IOnut" Tetcu <itetcu@FreeBSD.org> sub 4096R/54B3FFA0 2012-11-19 [expires: 2014-11-19]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =o4Z4 -----END PGP PUBLIC KEY BLOCK-----
<mi@FreeBSD.org>
pub 1024R/3FC71479 1995-09-08 Mikhail Teterin <mi@aldan.star89.galstar.com> Key fingerprint = 5F 15 EA 78 A5 40 6A 0F 14 D7 D9 EA 6E 2B DA A4
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQCNAzBPh/0AAAEEAKiF0rNVbbuQue8Mo+knlGKtZJXWkLOhmdzE+FPxTSRv3TOS OHOfFbEbTlcuplvYv1US6o4liAyyx6vGLGa7ZW0zLFAtTOJTfwW3GPmcMTieOIK3 wwzJtjH+wi7VeXIQCU/mOcLC9A8QaLqhJ86e3m9FODSFMIluSoucrgI/xxR5AAUR tC1NaWtoYWlsIFRldGVyaW4gPG1pQGFsZGFuLnN0YXI4OS5nYWxzdGFyLmNvbT6J AJUDBRAwT4kMH2ldntvsCqUBAVAcA/4x53VCfOx5Bm+BtneQNEvHgV8aqWW0tM4r 31KtsSjMwuHF3kl7PJtCfVk4OpRvog4u9V5G7gtUhUIOi/Qfuia2YHvvxIh3sx7Z Gg22e4FxNzNob3qV+YiPOr+Aa6EoYfHB45eHSLFXryCBS60a0CfZies+CSzcHBy9 /Zu51dCtnQ== =f57V -----END PGP PUBLIC KEY BLOCK-----
<gordon@FreeBSD.org>
pub 1024D/357D65FB 2002-05-14 Gordon Tetlow <gordont@gnf.org> Key fingerprint = 34EF AD12 10AF 560E C3AE CE55 46ED ADF4 357D 65FB uid Gordon Tetlow <gordon@FreeBSD.org> sub 1024g/243694AB 2002-05-14
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.7 (FreeBSD) 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 =1nJ4 -----END PGP PUBLIC KEY BLOCK-----
<lth@FreeBSD.org>
pub 1024D/56B0CA08 2004-05-31 Lars Thegler <lth@FreeBSD.org> Key fingerprint = ABAE F98C EA78 1C8D 6FDD CB27 1CA9 5A63 56B0 CA08 uid Lars Thegler <lars@thegler.dk> sub 1024g/E8C58EF3 2004-05-31
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEC7Hq8RBACUBh7OsXzgLr6Hz1QigRoSr5nWAUdj7Z9wNIcoE9t6J61MIUtP qGL3x73LspmwBGu/aC9muJ5b4Ont+BBBkVkC3Cdl7pKSvT70/ZB7TKw9f9HA9S67 jK/NnrgG4R9amixfd0KyycNpf3yvug2FV5VZBiUqvuqWipqXacOxsD8rAwCgksWW 74+msARYAf+mTeR7/NCEH3MEAJFfoV3APPGGECWfwrDmQT1IiBhObbjsVKbo4z7w yHxK+3Qm9nCG/sVthRll96C+rtAJKf+FEN8nvIx/9Z1UQ3Y7zTMgzlbz83BhhPnZ lAZEZI+EfmWsltzmyjJHnsvShRvjEp/YQ+0tfZV5uAPy2yrICw/rvozhCmqTox5l zOgXA/9mfbgbJR8NS7IwzcVSH+YEW06lyxLHjEd31aIj6wgX7O9H7JdXOytTqbSR VXN+5GjJhEaw9GmAd6tsvusHMy+1GBgY7TFFUNYO+JqHn6FKGzfPiFyxDyvyrF01 QL033peqiNVxTS5nvJzmKQCpftlU3S85R+K62Alv6xO70HyaALQeTGFycyBUaGVn bGVyIDxsYXJzQHRoZWdsZXIuZGs+iF4EExECAB4FAkC7Hq8CGwMGCwkIBwMCAxUC AwMWAgECHgECF4AACgkQHKlaY1awygj74QCggWeR8IRwgHIsxVv5zItpzdtnkSsA n31ytm6noxfetU5J/5NnR6bwV4WetB5MYXJzIFRoZWdsZXIgPGx0aEBGcmVlQlNE Lm9yZz6IXgQTEQIAHgUCQLsjTQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAc qVpjVrDKCPikAJ9a/Or2be00A9PeXyoo+b7VuLAzhgCcCX9kI2DduTtitld/mY93 vZDnQPO5AQ0EQLseuBAEALDSStxYn/CidImaPKwDZoYVpXpHucmBZ/nK/rFwMNh/ /RZD8ZdBF1PEDf3EA78qTxEk7PfSnoEWcxmcNfiMSALiTkehI4nWQH7j0ZSwqC/5 Du4lP1v1PSeR35IkC58n8kur74olLMdoYxlpVOwh7jGR9W/3MSEjQ7NJP9AZ4yw/ AAMFBACv3/ZxNdO78IPVJ1kQsfGUnwfpiw9syDqK+CMA6FyTCI2VUc6kY0Wc23Qv uoGv8ROk75pa2MJxEH/GQJNSZerJCSzLqdCyEW4tuxxJPQ7celSZ7PL5QutBzytL 4rUQ5bUlYQBFlCx6aOuG2+zQqiFbm1RqX7RYdOf3LnlRmkaTDIhJBBgRAgAJBQJA ux64AhsMAAoJEBypWmNWsMoIibYAn1x8xlAkuQC2ZlUID9ORxSIgEMyjAJ99nQWi rCVB/qZMKoL16f9mHKvJ4g== =OYqV -----END PGP PUBLIC KEY BLOCK-----
<jase@FreeBSD.org>
pub 3072R/3EEAF1EB 2012-05-30 Key fingerprint = F5FB 959F CF1B 6550 054E 2819 A484 BCDB 3EEA F1EB uid Jase Thew (FreeBSD) <jase@FreeBSD.org> uid Jase Thew <freebsd@beardz.net>
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGNBE/GKjMBDADNtl6FXubTcr6FSa3k9bFMekyXgJgqBAmx8UfSo2D5YyD/TJfT Utm4nTRrnR7hJ3Cgi//WsrkgB5I89fwUpmNtx2CzTikg1XLooFI8s17qa5/HeBPR r6/dblmAen31FfgzAIJrSjLVPSsxRMAxANZVcMc9fMD581/QLzmp7BVY2pddHaSo xm1nJMVPsKLfvc/YYnS3+7Ro1QzxGOMkyULClgzDYx0PziY1IAeXZDoH5llwF2Dg mBy1NnHH1Q2Y/NZSwJW7xmLQTZsz5haHbz95sAwnkJKRDgU5fisUvTAaWfhOwbNj AQlPWynB1n/pc0SP7ROJdRqmZmxU+tDvZ7rtW2P1XHa99BQI0ULDQhybiKiU3PuK yMd/t04hLT4OuSIaiJeCDHfmu0DP/ZbjMhq4YcqRy0UcR5r2kVOxmVYpz8vTvkSc J+guTn0QrFZS0GB9LJCy7iBgHTuXEz7cn+rGiHYVtx9vn1Yl+XTBNriaRC/IgFPf 5YZ57u7J2Vcd1icAEQEAAbQeSmFzZSBUaGV3IDxmcmVlYnNkQGJlYXJkei5uZXQ+ iQG4BBMBAgAiBQJPxiozAhsvBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCk hLzbPurx601bC/90gKFw7ybh057xvR/p7bGvTVEm7yP/sgmQJ7EuCqVy7RTb+VZW 4EUhLwJMOnblRLCzNnbVoRPLzDe97rYG6i6jBjTMgCXz9ebQadxMi3CzHnDEdUe0 x+UgsiEAETtzj79i4JUFBzv6VLMZVqUq/lxaozwmXkvFcCHG9mBSo+sZ2AwOoOvE cs01vOnBjug9RwpLxzKb6ZdwbleX2skJma50QaZJ5I5uVgFurWHeP+1vOTi/smhO y2y5YHEHjM6sNFNxsov3EhmwLa95NBkiKJRpP9GT6vAE4MLe/5HLSFXGW1q4xKf/ UKydopCpt2d8OPqx902I75JyxmMXoMMTWQ3HEgJ0qML+mqATHi7H6CJ4hnYyzwVj zF18ZH+Ruab8M4WvoPxvasps4aRhYiCuZs+zC4sMkt1gcWygC25ZAKhKJtz+jm6w SJ7cLOopTcYOanHzRr8JkH32EYtrbchD7aSUabk8KfPbXcaTNrtu7khNPXbfCNM6 M3cB7HViCDSBuEu0Jkphc2UgVGhldyAoRnJlZUJTRCkgPGphc2VARnJlZUJTRC5v cmc+iQG4BBMBAgAiBQJPxipWAhsvBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK CRCkhLzbPurx6xmHC/41e1BInZuSDM5l8dJeUQHXOcFfTSyz4KAoggPpNdfnfZ+o cdqQf7IhPqACkRvnETqmhsW9QwJHLhqcvA5x5BAtlulbjgg6qYYARjRnzl/1UjB+ lOsnijgXJQCeDoWueLhj3tf/yrUqG+19Jrx6EHIZUpwDeVIXj76MfWwhpB4izMbY TdtjI0Lriwvs2RGE8fRjEw5hcl85uHFVrYzSEJ9zevS/BalBy9u1VH4gaCrhsbg4 mpe1nxZU3Wm59uWNKFihUJBYW7PMWYTAtLa8QFtDXUqkoGXGE/30D+cuuOnQMdrt lU3eXwCn6E7zBeM52JKelJgYzBRm7kdKix5t+HIwpbVtqePSaPoiCNhtEdWuTYYU 83Bek8nhHo6caaLPz8VAHvB/5MmsPUJ/upbIWssc56aHWX/obBCUJnjcJpHl+6Bb BNT2L84IDX1qzvSjwj3z1/BwXtsPORbbNyf4eQKXjeWngIU8cAex+b391g4sJMBh Q7X/U+bJgrjizCVI2VM= =r3h8 -----END PGP PUBLIC KEY BLOCK-----
<lx@FreeBSD.org>
pub 1024D/A887A9B4 2006-11-30 [expires: 2011-11-29] Key fingerprint = F08F 6A12 738F C9DF 51AC 8C62 1E30 7CBE A887 A9B4 uid David Thiel <lx@FreeBSD.org> sub 2048g/B9BD92C5 2006-11-30 [expires: 2011-11-29]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEVueHgRBACBqHSbbyc8BoznmojkguHMrDQtqISv33b9tpIsNSHDgz4Wpoqs MRwMPZpStu/FwULPzRUkceoYFIkyRyBwyIqTAD3uq2nisPR23ffDKRe8Q44Y8ccz sAtc7zPz/XpoI+2tLVGBCZyk9UOuIK1HkrmEjJ8uG2/eqyuckjO39oA/3wCgorer I3uzG/mJG7V0hHaCEkhQVx8D/3/i9YwqVVf2kqfKEGUASik/PXDpoeHfC/v6GFik Ss47TSaiuMOCoxF92m9EcOSoYCHOmdkJ1l+AVAWCZvKHKDM6J20dRr1zNqvR37jf FlmbF5B/MhRcjaSvrOLnZsP1wlz5sRkdAOdHNN/J/mwqkaatkFwtf7XcFMheB2qi 1XvRA/kBi8lvPw7/PGibDIZXBxUmWVHLCU0dtrwKjbHE1HIpMwgjbTFrvh0pjmXh +qjn9VTcduP50Lrd/J3bh6WSgdc16xT2zxSAg9G8nJctDSJVgOJiYFUfLBpPBeLS O5ZN3GHw3TyLnDV/NvaAfzp1GXaGUB4kEuIaiaxxNugT82R3OLQcRGF2aWQgVGhp ZWwgPGx4QEZyZWVCU0Qub3JnPohmBBMRAgAmBQJFbnh4AhsDBQkJZgGABgsJCAcD AgQVAggDBBYCAwECHgECF4AACgkQHjB8vqiHqbTvNQCghqU1WwfsIQgI4bQn94M7 z3PY/ZYAnRPT7soJ0GrlKAMRplxFoRWH1C1TuQINBEVueIUQCAC2nNYNyuKG/uCP l6/GUoumFRE8tcbH1jW5yrFbi8ahcoi71iCQ6Ozdx+XM/qIu13/iEJmTOvoVyOFf 0pn0vVjgJ6yWek2oZmqh9Loj0WX2bRvV2uemOfvNwqUvDLCvbdftHgQAHOff5Tij GJxEBzDylhkAlF7MlZbCejiIJ7Of9fMC066Yi5M1lg5wAX1gPG27PiXJLMjcLI1B BsaIEtJsInd+UWsgjUE4tq1xoFhCeDZZWHCAyc7XyI7cy9FFQIII7SWkZ8TkZwKO T4UYyIHKtRFtgrMTkcXAc/Eul0LEo2z2e4L/G+8vF7q9LicIyv3/BF62fgx3iCKe HkJRWueDAAMFB/4lX+vF95ESlWuZ6DH1orSDKMzWlaJfl8ImE8nCT+QN/3ZauO7Y 4kQ11jy2Q+vURzltl5r1uMgAheBR//qDp4OTlqxqSyYFx49iysd3rjP0vnc8WGD9 BpGobsbcgw9axW6z278IZzJ7aroYBaceOHkEM6nNboZ1aKCn7jYqxFyzNUuJqqEY 0vxx82C2wHIPb+b9k5LCz+kMrq8fGDPERYYcFFKHMuKZ9oyide/8hQ83KadXbvJB /GAqx+prMs8axuAMoGgksMRV7Er+eRZNqYyeCr31j+Oh4qpUbe1q3UPzkoUg9OMI qJXvBn5S1M2B8epkggu4y6HDsbVXqgT+NCaWiE8EGBECAA8FAkVueIUCGwwFCQlm AYAACgkQHjB8vqiHqbS5dACfWGE7OYOJs3lJUh0fHYJEYGfcOKMAn3Spx9LXSIcR mVETDDKHRmZTSiZX =iAPM -----END PGP PUBLIC KEY BLOCK-----
<fabient@FreeBSD.org>
pub 1024D/07745930 2009-03-16 Key fingerprint = D8AC EFA2 2FBD 7788 9628 4E8D 3F35 3B88 0774 5930 uid Fabien Thomas <fabient@FreeBSD.org> sub 2048g/BC173395 2009-03-16
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEm+vTYRBAC03EXAZTDbUh/ShE+8WHHaB98hrIyAlHsMBRpWdouqNVbvEWBQ 08to2fDMF8zpWY7GB6U1w8bH274bWjIFk9KkK9fLbfoKnwQOWBEB1IFOei/G/4Ro xfufEQUOWGjAcVlZp+/crXEJQEljWe4OOjh2Seruxo86qWmm6Pp8LkmPvwCg5+t8 iQL/1Ud2c8fyLAS+AARuAhsD/R6MSZtQSselAtbGB5S01reSKO4enb7yFdU7Pcbp iBAqgE0khMZqcQFeOWyAiTFTqyt4t076R1s0G9uBoTCI5/sDslVvyaglnGVrL/Ej 6WEyBEHXFHOS+pf7Aofke0wHyQhl9YrN22cEFEKWNDMCu2T+K0mP1AVKtnbLqwVG clIuA/9+qeScAK7n1Nu33c4WTkbhxdpxqcQGuUti+vHLrSy+wpZgEP4e3A1AurRs JXUGTuqT0g8wxpCMEassWuoOphrNUz3Y3ckspvo3PLbht8iWhkAS+YjvTgBPu+at rxqS4vuog8z12Gl5C69oUihXozh0c+9WNQUahsy2RM4ldFu3qbQjRmFiaWVuIFRo b21hcyA8ZmFiaWVudEBGcmVlQlNELm9yZz6IYAQTEQIAIAUCSb69NgIbAwYLCQgH AwIEFQIIAwQWAgMBAh4BAheAAAoJED81O4gHdFkwWz4An1Jps5d16oHpy7qh7jro 87IPMczmAJ0f4rYdOnxuFuRDnBLwVbdb1gLQcbkCDQRJvr02EAgAlrdKSnI726B0 hGobE1BE7jwjS+u0ozmeTh1JLZH1rKNJd/LszO7ubB6X0VGA5ustPYVb1eVoSn6L LkvbspsdvNitklU8Ys4FF0dI9+AvrT4u84f8AjKKSTMHoTu6vv07Vm0qEdt2ZTim YTwG0OKuRbwCDNaMNzshkncWxWNd/KgrP9NlfdVJ/3NxlEl/GUm6v4bw1CM3F+n8 DanJa1jKPk0krg0bdZc90flknwaH1rQckFrxICLa/9MnV8HjZEiE/h6M4Ay3Okb8 zQnYywHqklRfvi2nUm85AZ+fJ1X06QCJD+Idg+/Tgk2SZ3oG+yOBS5GASiYiY5Bu 3fUtBVc3CwADBQf+NFw7Lw9mLYqd7E8VFr81U6JH4WU2sG7YEqbcZ95jqiaOby99 jaSZ0FKPGvm2V3VpgvXchzf7noqNMWUXbQadg5U/iJnRRhdhnVUbMq/T/mx5u9RL jH8Bp3zF5hElGpa/rPQ0TJSI9lltUUHD4c59FbgEXqmG69sTNcXBeH+w1LBoqmyS VQvLsPKan6FKfFDzvvuOxdP2SFor36zu7ecEuDz+teETk5ixRiu5wpEq7geqgZfW rgO/2HN5OgHJCIGvQfttUwzrDLw+RHiy5wM2f+S8wSi1bka3ggE39KPODMHQR6z8 zunYn+Xjw+jL3zrDu/FAa58nbaFRuuFEqG/V5YhJBBgRAgAJBQJJvr02AhsMAAoJ ED81O4gHdFkwb+AAoKtrw8aIkc31k+gGotiqv2Z+v6ZoAKDKsv5LDbNe2fncnihP 0wGrqiKLdg== =HImo -----END PGP PUBLIC KEY BLOCK-----
<thierry@FreeBSD.org>
pub 1024D/C71405A2 1997-10-11 Key fingerprint = 3BB8 F358 C2F1 776C 65C9 AE51 73DE 698C C714 05A2 uid Thierry Thomas <thierry@pompo.net> uid Thierry Thomas <tthomas@mail.dotcom.fr> uid Thierry Thomas (FreeBSD committer) <thierry@FreeBSD.org> sub 1024R/C5529925 2003-11-26 sub 2048g/05CF3992 2008-02-05
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 oMybWISax+SEH2PZ7dgbNw9pgQub =oY1+ -----END PGP PUBLIC KEY BLOCK-----
<thompsa@FreeBSD.org>
pub 1024D/BC6B839B 2005-05-05 Key fingerprint = DE74 3F49 B97C A170 C8F1 8423 CAB6 9D57 BC6B 839B uid Andrew Thompson <thompsa@freebsd.org> uid Andrew Thompson <andy@fud.org.nz> sub 2048g/92E370FB 2005-05-05
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEJ5esIRBACGrMoYYIu2yCvXUOUgySagPjKetJ5zKOCFDa/Gl65tFtCcc3YR IjSDCvKuxcuS/qPo87pNP1sHPT0gVhMr+zcTrj8rgLWfC+CTzV3FPTdIA7LhVwer +evZ1jSHo/MY+GHTYBiDj/GiDkk8zBk6Sppo0OdzqZ0O8IW6tvh9n7RNZwCgrPYX rzBYHlAZxmZfQTDhgi8rPPcD/jH740waoG4l564X9hfkHDbxe2mrwKrcxfUbNi0h yIOTyl3glTULTno/xG6zxh4qG/COxIWhjC3Nkwllq+VzWqzYFoPIV4E/nvPNrLLY 5a4/19ANLLkrw2kiLxNKLPu+SwnAF6cLdnbpPrGZSGOg/DhquXulAs8foTxv0SVN F5dAA/9O9GFOk9IcZ6D77A7Unysoxoa3WwqNHikJTo+bHvENJJw6BM1e93keLXbo bljw02y2cBXMz+cwd0S3ysj2tEPvEWpUJCVbCk7bB565R1TBb8SJB08MQ7PuOzbh PCCc9nB2TditjUTuL1yTrOW4qki1fHMA8ySNuYBiw/iUOkHgbbQhQW5kcmV3IFRo b21wc29uIDxhbmR5QGZ1ZC5vcmcubno+iF4EExECAB4FAkJ5esICGwMGCwkIBwMC AxUCAwMWAgECHgECF4AACgkQyradV7xrg5vQjACfboFkm4m9zZmor2J1+T5IknZ2 z2EAnjX7sCxeTxGAUp0gv1+ijFir8Ju4tCVBbmRyZXcgVGhvbXBzb24gPHRob21w c2FAZnJlZWJzZC5vcmc+iF4EExECAB4FAkKUyikCGwMGCwkIBwMCAxUCAwMWAgEC HgECF4AACgkQyradV7xrg5tJswCdHh+UXADhzk4yJKgLuJlLYsSCK4YAn26SPktp Q2fQpBC3mGRRUYVRowhZuQINBEJ5eu8QCADgBVHTfrvthg1lDFvuZVlSgZueFEuq dBn0tyJULht4MyHAYzY1fBkKtRPxp/c+sGKzd/nXZ+zqQIJRYtrAviGAi9CyHTiI URcpMACCvofuRoMJ8djl35UzioL8O+icL2aoSq1w0MBzzkwTDcmaiceWVIC/RZka U0/irf31HSzAxGYO1wXtZuYp6BrEwcRezDZQUkO/riGKT9+UUppnTFVBbyelvVjt D9iyeRnL3GEOH0IvXbPRo400EwOHs4ieOZhNO4xyzj2qexMcbFq2nUis/qctukth lynv0mYVstLgS+GQiX8+VsbmK1QkTfKTY2ufTQDPJTcAa7Kneb+luDYzAAMFB/wP UyXix1pw1+qSJS6m6T7m6wmPj93/BoB+sadJvmjdaGcE5yKtCLdQYHZyI8Pvl3aA uktn+k/IxqSwLgJCSHv9CQ0AwN+kuIPHyy+hsJk1w5C8Qd4q8sYWecyt+aycYz7X Op9EB2rpKgg5E+RHFsuyx/X2dI4/n9XsF0xTDXmvBYHLw1E22rliiS9WlJ1C8UHn gjVZ8nqd4bI9HcwQMadtjXj0EcyarnJnrqLkJopzmLSJfOtnQvXyaTzwfS7fyQYs lnj+k/jJFULvgolWLmmfx149+3ou9c6c9KItAE8kfl7dSaEwOo4oE9cKluzhFHeC ezponq9OPdSpXUwBXjJgiEkEGBECAAkFAkJ5eu8CGwwACgkQyradV7xrg5szjQCf WQNYMndCd/TFxFqNF8k6Nu45/lIAn3oxSJ0Gc09OwQB4oiL6kHscyL/z =SFfV -----END PGP PUBLIC KEY BLOCK-----
<flz@FreeBSD.org>
pub 1024D/5147DCF4 2004-12-04 Key fingerprint = D203 AF5F F31A 63E2 BFD5 742B 3311 246D 5147 DCF4 uid Florent Thoumie (FreeBSD committer address) <flz@FreeBSD.org> uid Florent Thoumie (flz) <florent@thoumie.net> uid Florent Thoumie (flz) <flz@xbsd.org> uid [jpeg image of size 1796] sub 2048g/15D930B9 2004-12-04
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEGyCSARBACWd64iJ+56C42einT4AIwy9qon61Lx+LO4BOMgeaQTGy9/fKq0 XqQmPddhp9awRtm0+QoeZQ00q2qyY6ufmSZJCr9iQg2a1b/fG/UKZSIKBguDuCCk O6acsAd3H0fmZRu8jAD+pMsJb9gO5T6YLIHK9p8uVPG0lRKzulTXm5zsEwCgkoi9 h+S/dIPXfX94thtJgVcUeLEEAJK9ZO2KFfGx+YRKDpbj7ocGgjqMlhkDFw13Lycq jopPipNwpey4ZKjJa2w2fmIbcqpUZW3EH1Ld8KBOt1bhGlI92uqvrssalNH82PGL cbiuvYMHXOfE05tOWD2JgxJE5tY0KtED4SDaF77RAcy4z9nFt4og4YknB/seOQZ/ 5oSKA/980pHAvnm3TFK7jQN+AIckWxOS3mXxvwHmvM/MzQEVUrFAPp0C/aCh4JJF 7Tvy54cRKEUJQpXuTeyBT0pMU0ataaESMfk4hM/WDhvlV0AXebah44uJfBAcHwJt f/d3c+1I5eRkWuN+ey+6FfBCooW4KvqVCnrWC/Kk16VqAyn9UrQrRmxvcmVudCBU aG91bWllIChmbHopIDxmbG9yZW50QHRob3VtaWUubmV0PoheBBMRAgAeBQJBsgpP AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEDMRJG1RR9z0Y7sAmwT9GkO3Wcrl y9KcPtsQV4x6dvJhAJ0cGtclPmdOM34jMC7U5NQol2bV/rQkRmxvcmVudCBUaG91 bWllIChmbHopIDxmbHpAeGJzZC5vcmc+iF4EExECAB4FAkGyCSACGwMGCwkIBwMC AxUCAwMWAgECHgECF4AACgkQMxEkbVFH3PQ5igCgiRkJPRjrvitfZOrvLhx+oScK 3moAnifC/FHLFLr7hG/NlgLbF2yjN7Fv0cZXxlUBEAABAQAAAAAAAAAAAAAAAP/Y /+AAEEpGSUYAAQEAAAEAAQAA//4AbwoKQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEw YSBSZXY6IDEyLzI5Lzk0IChqcC1leHRlbnNpb24gNS4zLjMgKyBQTkcgcGF0Y2gg MS4yZCkgIFF1YWxpdHkgPSA3NSwgU21vb3RoaW5nID0gMAr/2wBDAAgGBgcGBQgH BwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5 PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABgAGADASIAAhEBAxEB /8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqD hIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAEC AwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMi MoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaan qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6 /9oADAMBAAIRAxEAPwD3Fic02nkAmmleagsSiikJ496AAnsOtN3Y7ivNfHnxL/sb dY6KFmuwcPcHlIiDggf3m/T8a8b1DxL4h1KYtdaheyZ6BpTgfQDgflTsGp9W5z1o zivlTT/E/iDS5EaDVL2IKwOwTttOD3XofxFe1+BviNB4hCWGokR6l/CyKQswx/46 evH5Z6UWA9CDetOqPqKkpANY9qRetOIzTQMGgCbuaKO5ooARq4z4ja3Jpegra28p juL4mIMOyfx49DggZ7ZJ7V2bV538Qrb7brWgwAH70mT+KZ/lQJnPaV4Ksrq1iuNR V5ZnAJTdgKOw4rbTwdoaqQunoAePvsf61qoViVRwAOBVtCPUUyTl5/BHh90I+wfj 5jf41y+reC4tMzf6W7L5RD7CfTuD7V6XK2AefyrKv4i9tIigncCOKAub3gvWJtb8 MwXV04e4BaN3wBuIJwSBxnBXPvXSVwHwwR49Kv42PCXRGMYwdozXfg0ikFJjnNLQ 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 YhEx5U7AKdGZ55po =hxwJ -----END PGP PUBLIC KEY BLOCK-----
<yar@FreeBSD.org>
pub 1024D/EA04CF5A 2008-08-31 Key fingerprint = C063 6788 AFF2 A62F 06B7 516D 200F 06AF EA04 CF5A uid Yar Tikhiy <yar@freebsd.org> sub 2048g/20443F06 2008-08-31
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEi6nDMRBADDmOkKUcTtDy4VHqTIJfILJsWmfnYBNzEzqQiRTO9qWDpmt9ah 8lb2/MYT45AMdpUQu3NagY9oZq8bkUsUZ527gDHYOIclgwVulGEcDuwGSJrUi7mV 5SrEWqi9FspzRgaEwjVSB1XDXqb60J7UHXzyxcUb//f5Qibxco2k9fqzxwCgtZF9 XBidVm+Vsj/cKoJ1FXm9NWsD/RgYQzE4WUlZ3wVw+EX4+kIgHgPh5vfx2KdK4R1u KdWLOnamegQRQG1pe/4nAHH8WTZOkoL+eN0Vgd4Y/2/vrohQWEknqz5f4uxpOXgA cWp9B4Dfk4i280vNvWWoCclDTvk5Ukm305YaR4sSVHpSdwu8s+KBIZ9ia5LXpZIQ iKVvBACT6K15alAx71Shv8XRGiU8aYiRHq2/vBzDOPsEwomM1mIeCrJddZbangab GtbyizFtz4ZG2aA7ctOFVDnfbU9PHfXD1wywkjz+LBHAr32z5QU1irSUJSRGP8vr pOvNsrLaSS/L4Ux+kjfrJ1o/sX7isr9izsxuob2RKULBZMFx+rQcWWFyIFRpa2hp eSA8eWFyQGZyZWVic2Qub3JnPohgBBMRAgAgBQJIupwzAhsDBgsJCAcDAgQVAggD BBYCAwECHgECF4AACgkQIA8Gr+oEz1omLwCgkAutx32AF5bws/pj7R+zSWy6bcIA oLC9q/1fLyeiFMyurmx92vT9d9W9uQINBEi6nDMQCACnALycl1uAKREjUAYiWjO1 CjLEmjFXNM4gryW+gm2ZMk0kWCFzdCSMTyk0pkMV33wa2H+BOMRk5XhwY3AdPnmN mwYwNnptRxeIrHc4J8RuQkI4apKwZ8Z62iA+c56LZCYluJGzNCrQa65LgW70fDuP Z6BeBCvF0pSAmUCaivezhJPQAuiZg3B2Nf2Ty7ZsX2DwuyvJVwx5mGudQ+b9YKS6 A+nkBke0AE7Q/CS04LpCewlK+acNka3b2JlAtDpOLSvx5bzzFsZcyMmhJYF8Am2C 4yv0F6aD4cTdH7mSvFRND9pkDtpUYDuPpJt+RgSSelXEp+nksvwTIqX3tM+vn7qL AAMFB/wO3l7LM8z3QaQB/eMZV4U+14wJLsWvVU1vAAR0GG5GqefSgDQOvcw1MmSm YsX50lGKBdtpaq6UqXcEVKJtyg84HySwMBNRGFeibiiTO2ldaWaGS4c9e0eVu7vY Pch+DA2rrCNuE+lb2bWlDfkDsrK/doOiYVu0XiIQK3WFF8bTXRW+9T2OWyCjAcTl Yml4eKqedob/PWApJPMvMzLpg1h+VfV1JPcG1xmeoT+mtRSDME14GZwoF8JLfci8 Gnp4odmfgx5f7dTU60DPbpps94idR7dkFrTeWervPeXvFWb4+hSENb6fgJKoBkt+ SsC+h7OmCBsWu3GCEVQ1XhB6jezfiEkEGBECAAkFAki6nDMCGwwACgkQIA8Gr+oE z1qM4wCfc6TUkmIxEfS6j6S358z+qkLadQ0AoK6vPNvtYK734zGuUg7w0Lm4KmHY =xzp4 -----END PGP PUBLIC KEY BLOCK-----
<jilles@FreeBSD.org>
pub 4096R/D5AE6220 2011-07-02 Key fingerprint = 4AF5 F1CC BDD7 700B F005 79A4 A2C4 C4D4 D5AE 6220 uid Jilles Tjoelker <jilles@stack.nl> uid Jilles Tjoelker <tjoelker@zonnet.nl> uid Jilles Tjoelker (FreeBSD) <jilles@FreeBSD.org> sub 4096R/14CB5775 2011-07-02
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =sGf8 -----END PGP PUBLIC KEY BLOCK-----
<ganbold@FreeBSD.org>
pub 1024D/78F6425E 2008-02-26 [expires: 2013-02-24] Key fingerprint = 9B8E DC41 D3F4 F7FC D8EA 417C D4F7 2AEF 78F6 425E uid Ganbold <ganbold@freebsd.org> sub 2048g/716FCBF9 2008-02-26 [expires: 2013-02-24]
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEfEDpoRBACh+3G72OFXvEjpBhfsiLhudF39C+E4zZ47xuWC9oAV/8y4jJdD 70TjTBYydonraDCxhx+GdjfCzaN3PYw5fOMTric9xi3g8s11oKtzHG5NfgHfMIMV R1+7D2uXzgl/10JeYIz8DriaUBdHSKOhge5eNyXy6l1z1dPvnkP+/sQ0QwCgnaaU gIVvEj7qRiemJG0WRtWPU5sEAII5NYtidbx5SKM7/JzRtRI/BG497VVrcNVKbEZF jH5WklnTTQ1v9TnQfP7iksTZ6Ik6k86/opOagqtCRZ/Pdm9ldU/dZNFoA2f/4iER Od4Hhnm4rQ/rSUwXl6aZfE/26iBmH4/KkfkOX/mnRHAhs4EttXl1Nt7ew1BYwIAu +1eFA/40VV0lL93ab5aqvZ0fX6MmbXWjZXQ4q7YscqKclvGJK/BL4C7GTHk5Sn38 uv+b9l39YR5yuZt2mByWyNCBBu8nXQ/vSjQ2V6wzFizAVZv3b6k13aGj4/ZUZiV3 Q1WuU6qHvafvl0BJJBw4ywOC5gSU9eR2roGQb37fvcwH7nd747QdR2FuYm9sZCA8 Z2FuYm9sZEBmcmVlYnNkLm9yZz6IZgQTEQIAJgUCR8QOmgIbIwUJCWYBgAYLCQgH AwIEFQIIAwQWAgMBAh4BAheAAAoJENT3Ku949kJe/EAAoIFqc0wekId4QcEDk35R OBMT0mpPAJsE2LsdqX17BXJLuVfuQuxIR9RLP7kCDQRHxA6aEAgA4w40fvHBJOqJ 1RtowjBEX8uDEOwH2LlnKK7S5P5Z0PRM4/p+a4/P7KKRYAVehaBPc56TW4eqIXWE sjGNoJd8SIS+M7LIhlgBe0E0qKO1PXq7Alr5QMSR9aSS3z8NPWdKHU6+bJRomM8h 1v8l0dBfFdYsrP11FXoAtRhkRnxB5E+A3rMJ35Uz5WPs/omz422M6SNziVn9lTXT N0Xk/pg3KHIVjosIakfbV25ZbrX0XYWNvh3zEhGyvbV5A4QuEXg4HSjYd43l5p+z FreZCrQh7IN4Oj1SfIbWzsoIygn9IacXQW/iASvpVcqP3yozcL8oi3VNSZtWY4fg jZZTIEJ04wADBggAoha5dSArTS2Tq04ArO/Mew4ZSZyOYg8Zay2TURrx1y2BU6on F56WwV2/C1qPzCOGDeVnYiXKKHnc9bNIefzKTMsJdIihw9N1CfD9h8MZ23GbhKcg VbiRC6t1b2BR1C7H52rPs8mXtywSGiI9pjzl8bA+ARCsvWHKe8R8iwL+jw+IVF6R 94xcbHtK9EKOD7U2bVhiRb/uQiY6df6+VjL9lLoJMSLSWXWMtk3KJoFt6peB/XVu NIvbdxcU+xpgqz/SBPUs3MIgt9dG29UBsez56l0hgDAU7lcR0EIpCeBA4MskhInp AEJ38BJ6zL5MNmOOXWki2+FT4PbLjndwqxP0Y4hPBBgRAgAPBQJHxA6aAhsMBQkJ ZgGAAAoJENT3Ku949kJeYScAnAxcM/ZxE+XdjWrIazFTBJITMR0LAKCdaevdwU2m HFVwUGCsG1R5u7ctUQ== =rUEt -----END PGP PUBLIC KEY BLOCK-----
<tuexen@FreeBSD.org>
pub 1024D/04EEDABE 2009-06-08 Key fingerprint = 493A CCB8 60E6 5510 A01D 360E 8497 B854 04EE DABE uid Michael Tuexen <tuexen@FreeBSD.org> sub 2048g/F653AA03 2009-06-08
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEos/K0RBACA1Ck3ZLIpeSiYRNYG8RXCxbvHFOsI56DCwbRm6VXwjbbH32wv FZTxIR+A6LQQLCLDEvfklgI06Ksi4uWfAoLRB/CoiX7crEZGvYDc4kYSVjumjORh OzDtUiechd17/gyo4j+u1PDtw/5XXpSaTIRJO3g/UobVpUPjl4dMz4Ks/wCg25PC MPQI2rqriwffFak4PZdJ/JED/RSqsLqjsBOpk0hrY22VQrDhCHrWsVopq5hcqElw W1iuLMBhGK/Lursari5M8pSmjJVeWMEQwDqfF64MctbbfmOfMaRRggX2meVdMq3c o7bAWWEfstFB5WlUkCg6TIQjLV/4QbATfX2YkIcwuxiwC+CMq2trAJ/X8A6VdaOY tkHaA/4iyk4gCbvCxB1bhDp2HiDZfAWm5OlkHefzWeMIY7O4k5+vpaS69ui1xgYO WhXKB6RpDXcJzvZdBQqrXqFXdfBgOwhbUj1uOgkBCMpC7EXT07sxzvrnaW/RR51f KTeplrRMX0tXMij7nFh/WzJFSfFK+0W6+yaRVzXa42ds+VARd7QjTWljaGFlbCBU dWV4ZW4gPHR1ZXhlbkBGcmVlQlNELm9yZz6IYAQTEQIAIAUCSiz8rQIbAwYLCQgH AwIEFQIIAwQWAgMBAh4BAheAAAoJEISXuFQE7tq+FHAAn36ou5m91emjHT6ziIWw 80iHtiyiAJ9RL3W/bShdgmG0U3UKDnPrSwebdLkCDQRKLPytEAgApnToBctsJKyI YBJp2wusPzd+8H1Ab0VCcL4pcKWzCIy7dTJSknLpJV7c6ts82+pZBKUMp1XHfnsT Q8YwoaIUOQjkBqqlkrxqkexidwj3VVZfUvHfXvU8Hw4JM862MtYa6ZHRoz+ZSVQi x8idPMFhs+zD9Pb0ct6YsINeKiEGTGnanm3XJIIeNg1bOlrTjDiWB6KnlMmmeZ/R o4vGdnO7wsP03VtJBUnPNaQ8luAs4SHBTmC+tXNhBYwn7Kh5PGR1TVH2ROpPOYTS StOktseR6iMJ//6mJEBOt3cypOx2d7hbXfy/LOijg5Ku4FkUUmJrM4yDMgN/2bPw RGw8KgOvFwAFEQgAlw5VA4FwTgo/2+pDtQxtp96WuvQxw1IL1fPPNwGO7b2TVlj5 KTqvsqx5MP9jLCTPi93KKAFzwFfzXxOD+Isd6AxeuotlxLOUXeCdcpeyYHepURYT 7bjYg0DaaoqZopm0L+8c+hvOLfPaJLWVbUCEy219SeCA3xtGvRtFY1JXIFk9sbgZ y23S592sG/5CAantKyI+SHzZim2mj4iRiI9HlGDLpGn6QAyz5HX6a+TXdHijg/xK 3T0xfBLn/xh5tSlBdzKR7cXSmzbtP9HL5rewVgVAqqg/Mzc93nD+gY67bMwAeyHq u2OCE6YkLNJz9kSqsSygcMDI8vKoPU8cqDvyyohJBBgRAgAJBQJKLPytAhsMAAoJ EISXuFQE7tq+/EgAoLrfM3GP7IAcTezTbs+BjUQcoWHhAJ9sJmO1S8JcXD8f9G2J AOE2UIkbvg== =adk0 -----END PGP PUBLIC KEY BLOCK-----
<andrew@FreeBSD.org>
pub 2048R/31B31614 2010-07-01 Key fingerprint = 08AC 2C57 F14F FDD1 2232 B5CD AA16 EFB8 31B3 1614 uid Andrew Turner <andrew@freebsd.org> uid Andrew Turner <andrew@fubar.geek.nz> sub 2048R/9ACBF138 2010-07-01
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 BuY= =WLSs -----END PGP PUBLIC KEY BLOCK-----
<ume@FreeBSD.org>
pub 1024D/BF9071FE 2005-03-17 Key fingerprint = 1F00 0B9E 2164 70FC 6DC5 BF5F 04E9 F086 BF90 71FE uid Hajimu UMEMOTO <ume@mahoroba.org> uid Hajimu UMEMOTO <ume@FreeBSD.org> uid Hajimu UMEMOTO <ume@jp.FreeBSD.org> sub 2048g/748DB3B0 2005-03-17
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEI5K/4RBAD0LiHx/Tl4UyaX8yFUGjX1+PvATTJloNZGXl+jagSUQxCOp6Hv emDinSPskld/viupoAxjRImlkP905Y0Q6iDMne4s5fM/75lpeG9ztKRSgDQrQLTL HhXPXKNMtDV91yDqFEkwptS+0MaTMY0KrlR29RtGnpjoa347TU2BzU6TcwCgw+SL YdOWeSGs/7LKdUIyYlrldjkEAMqIQwnDl14vZBe9EOCrjSA4gHv6g2IQP1TRCpBu +/Fpi2+xcj117xO++uqMMzoi3aWwsqarao0/VSJ7ZD81by1H56Hnsp1d0r67neJy PKsyh2JfSQww9cxVkQjuZAjZNN1SLzDeA6xtSZrcmim+f0GIxlz3JFS9za/scs8x mGqzBADRF2My4V5HEMeScREj2hoquRv/uG727Nw+jftwiE+7TB7+JUwwyakAStNv x4+YEFAVSpKxyWgOeMqOWYd9bOSwJk40t9y1Gk6TTgV2C6sYwGHMSNOWYZbhYX7c 84cxm2PtQFIq7g4Q30IkfAhYFzEwKmPJ8eV1zO0uNIhE+SO9QbQgSGFqaW11IFVN RU1PVE8gPHVtZUBGcmVlQlNELm9yZz6IXgQTEQIAHgIbAwYLCQgHAwIDFQIDAxYC AQIeAQIXgAUCQjxiFQAKCRAE6fCGv5Bx/qe3AJ99w7Ipfxs4CF3/+eCf53HO3FuI +wCdF/xyvVjjNdAYXCMxCHtUF85bD++0IUhhamltdSBVTUVNT1RPIDx1bWVAbWFo b3JvYmEub3JnPohhBBMRAgAhAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheABQJCPGIY AhkBAAoJEATp8Ia/kHH+3c4An3RGo6JduyjPTZFh0eCBezNgzxdnAJsGRRE6ERs8 nyORm56bvSgRTw9VKLQjSGFqaW11IFVNRU1PVE8gPHVtZUBqcC5GcmVlQlNELm9y Zz6IXgQTEQIAHgUCQjxgkwIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAE6fCG v5Bx/iTtAKC+8mS7jAYMz3QsCe4dJeIPaJcFGQCcDQITgNpJcUmBZ5u21Jotvp1X T/y5Ag0EQjksbhAIAP1+LeYSauTBi/ST3343W0lkqYr6HgZMNS7RtoCGFWcjfiYU 99ybRgr0XwH5yJrn6JASp27f/ve5cwt/7ERLZ7flcfFi53AekeuRjFDkThLx2N4I s29ZQZsYubdOKHapnMflnFE3PQfkB7Og1MoFxkp0kOAEP/rOyuLMc9CbUaWczxWo FS8bmZDJ5ZNzAQ2vQFu5ExxomOENApy3ZCm/Z6MU5YJ2trsP3dkYStyG+1pT4NsU R4+TIbQfFzwZjowiC5w8rM4FIV4FMQ+3YvIEVkT+M/93hLGakh5tQENsitj7JsrC VA2mkomV4Hnjj94YCxUiPu59kHgiKGgXbdnceX8AAwUIALF64I+guwCaHbjoRPVg HWRuU2NzuKN93xii+xyIpImf+S30aTbFy0D6ZTQRSCs34oVNMSkUzySVcVn9DTG5 +KVCHCOnGMH/Iv3dRWlHZ3HX6Gvr/cRyhDfWYDEec7KCDGT7Q87UbmTZ9cmOh+/h M4ND0NoYU6/EaaOqyRH4D8/LAeg0YsEpilClYWhlXT7VS7noOBf1JuB9Q0nOGycR DstkHWJf5om82lH5FzAuh9kEAduv8JdBdsMh3Zh4N80tCV7OyBQFWHV0UgjARSLY msEuelzzaFcfR2vIrmpYIElr6JzHGBiux0XK3Qk98kexGRdbrDFpaxbrsjs1/8m9 MVOISQQYEQIACQUCQjksbgIbDAAKCRAE6fCGv5Bx/mRWAKCAQQ67iDvQq08n+bHa QkK3EDOmqACfZmJe9AepCkPAUkvp0ketnOPBXAE= =QZ8N -----END PGP PUBLIC KEY BLOCK-----
<ups@FreeBSD.org>
pub 2048R/D684B04A 2004-10-06 Stephan Uphoff <ups@freebsd.org> Key fingerprint = B5D2 04AE CA8F 7055 7474 3C85 F908 7F55 D684 B04A uid Stephan Uphoff <ups@tree.com> sub 2048R/A15F921B 2004-10-06
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =93PR -----END PGP PUBLIC KEY BLOCK-----
<bryanv@FreeBSD.org>
pub 4096R/E97DB7DB 2012-11-05 Key fingerprint = 0F8F 11EF F4D2 EDCA ECEA CB16 744C BF25 E97D B7DB uid Bryan Venteicher (DITC) <bryanv@daemoninthecloset.org> uid Bryan Venteicher (FreeBSD) <bryanv@freebsd.org> sub 4096R/2EBC1A46 2012-11-05
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 hvaQWSxKvtCA3RdI3vmKyQc= =6YAA -----END PGP PUBLIC KEY BLOCK-----
<nectar@FreeBSD.org>
pub 2048R/33C1627B 2001-07-05 Jacques A. Vidrine <nectar@celabo.org> Key fingerprint = CB CE 7D A0 6E 01 DC 61 E5 91 0A BE 79 17 D3 82 uid Jacques A. Vidrine <jvidrine@verio.net> uid Jacques A. Vidrine <n@nectar.com> uid Jacques A. Vidrine <jacques@vidrine.cc> uid Jacques A. Vidrine <nectar@FreeBSD.org> uid Jacques A. Vidrine <n@nectar.cc> pub 1024D/1606DB95 2001-07-05 Jacques A. Vidrine <nectar@celabo.org> Key fingerprint = 46BC EA5B F70A CC81 5332 0832 8C32 8CFF 1606 DB95 uid Jacques A. Vidrine <jvidrine@verio.net> uid Jacques A. Vidrine <n@nectar.com> uid Jacques A. Vidrine <jacques@vidrine.cc> uid Jacques A. Vidrine <nectar@FreeBSD.org> uid Jacques A. Vidrine <n@nectar.cc> sub 2048g/57EDEA6F 2001-07-05
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.1 (FreeBSD) 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 =lY5L -----END PGP PUBLIC KEY BLOCK-----
<avilla@FreeBSD.org>
pub 1024R/44350A8B 2010-01-24 Key fingerprint = F740 CE4E EDDD DA9B 4A1B 1445 DF18 82EA 4435 0A8B uid Alberto Villa <avilla@FreeBSD.org> sub 1024R/F7C8254C 2010-01-24
-----BEGIN PGP PUBLIC KEY BLOCK----- mI0ES1vM6gEEAMBJJFEzIesoeff/XaJ5baSLJwdZ87H26x51KPodOiCK4pvhSOvA 1Cl+/moYBVOqhqzfNw2pX+EPWJpwRHToqZMba0rxALNhRaQgQAVk29V3bqsQhwBS yfwQirouhXGNaUGbdYh4ay0ZoyY0FUtKsj4GxhpWdHlKrjsHAliHM6U3ABEBAAG0 IkFsYmVydG8gVmlsbGEgPGF2aWxsYUBGcmVlQlNELm9yZz6IuAQTAQIAIgUCS1vM 6gIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ3xiC6kQ1CoucYwP+N72o Hafp9Oj0004/rsgDKSLSfru89cusN7G7FyBYICjFQXJfwRAr3Mqo+4JwMVHPbQ6z ReRiMKN362M3e2cA5GMhtYqDTq7FSJzsWBUyfMhJmKOcP5rtQlm7sIt+XFGvOxRx 6HXoduhiDmqmDUrxVxBYQTU5qGqkOXsIA/lITJ+4jQRLW8zqAQQA2HR/E+7JRr4r 6WkpHb5WVe8w6ipuOpVRh9KjLOeDtxlCCuZ61asE6dVTYxhLrxhmzXcz7WQLJb++ 89DaQj5bSAFy3BfujeO+HUik9qB9Dv+t6eNh8SlPByxObyNx+NNNP6k5xiyx0cMC AMfUJbbZ91SN4gh+21yf2VqlS5uAlWUAEQEAAYifBBgBAgAJBQJLW8zqAhsMAAoJ EN8YgupENQqLLXUD/3qVTKnHAvQqu7EcdV4SEMbXtxHauN6tushMAbTiSI1tCz+3 2nThTiXvLp4mQfwdH8uTQL+n3Yf3xZATAXe6Y/7Q+TvUp/Em3/5QOzdTEHirQDDe Cpks3VK9i/ud2nOl/TD1sy/5ad2aBKE2sAYgtILxAsdnxh4Cn4oBYc8Obg0N =UkFd -----END PGP PUBLIC KEY BLOCK-----
<nivit@FreeBSD.org>
pub 1024D/F11699E5 2006-12-05 Key fingerprint = 2C17 C591 2C6D 82BD F3DB F1BF 8FC9 6763 F116 99E5 uid Nicola Vitale (Public key for nivit@FreeBSD.org) <nivit@FreeBSD.org> sub 2048g/4C90805D 2006-12-05
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEV1n44RBADfkt4OUwHA7c8DbobkvhyXCRHC6w0NDQER6Q/uAE68nvEgPcdO dAvGXUpNNWFXbKEnIc7ANCm0V7F2VDfwANAzePY1wBfVM8UQBLuSV2WIAfs1beLl MZzO7sth2oeMuF7l7WwM31qwgRLTOOzXs7zG+m2uh1c1nMTKG9wgQ4rz8wCgmT5i oJ25GpzaM0kgX3HQWP/MkFMEAK5GUSesXqHc37fEnO4WVvdB5afc4RTDJzvniXBm nXkHin6uAWw4HSJOEOLPv8MtRZuIxOfznukjBpHnz19R0fEvWdRKzmDoc3Yn0BW+ FdszOxY9Nt+LtY3/ZdcbgAtWu662/t3SvgWULgCQ7bvi0Nu75Zn3nui4j2uU5fNf 6v4KA/9x8FXQ18BPO7EuYe5ewQwVaGWKvzrMmz8NsiZuRs4oxWXL1x0nSCumetKA 03UHxGAQli+vuMNDcDXg5zpaGN7hIqS1N1fR7XEouvkgTDTUPsjjQUdmQ98lnEBf URB5D+qDq8nq7H9R/4rOmxKdiA8xmBzadnolJ69Iz9nyJ4mvb7RETmljb2xhIFZp dGFsZSAoUHVibGljIGtleSBmb3Igbml2aXRARnJlZUJTRC5vcmcpIDxuaXZpdEBG cmVlQlNELm9yZz6IXwQTEQIAIAUCRXWfjgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4B AheAAAoJEI/JZ2PxFpnlNbMAoJWh5Yg1lOayXo3b8seKn09ers2UAJQLxlE9lS9G qzU9FITOFNllI+duuQINBEV1n5MQCADqyPgr+kjhfCz/2N8y3FmWr4CSE0b1S7rH i7fy27u0QcNK3vN/l0Vbj6dsacfP9DC3+aGw3W8uY8LK8q72AIAwLh1aoYtJfzMs v1kqY4shMAANF55VgcAb7lyHpSymFraVZCai0nzNyccjJtSNQgC9s1BkXeUrRTS2 su078DDYVgbXs1S14PkZOyrZ+0R4y4M6QKvD8Th46K+mZMaXdcn+wlIvOISFQppP 1htkyCnHexg5L6PE/VsdobiCyZ2zNKd+d6GUillVuO2Qpkq1dlLTPtRgFMnpjhRi L0+a84b8rs6TE9g/ZLKNOmfmbGTTk3u4vQ7u6Mky6GCGO8W8WHW7AAMFCAC9NGWK RU0l0hfHY3kjLll9Ygcnt42nAj4ipmnzMp0jAPV2AgShnzDJLZ1KHmJcUfby4I6c HDKrI5lt6B8OD1hAWbHaAJ1Js1vfiwGDqisra5ZvkfJQMY1CDv1orXeM/ZnWzLSp +PqVXA30ei/NtngXFYlw+BJHnbB18eKw25jT6n72Ls0T9xZscwgseAmSKZsrb6M+ N0tjZkkueWRbvrFum1i8Hf+VYhCgRkQFcTtEEo/Ulb6GRDXaFLPZzklfQMvjgWel yfWpv5Qg6knJFGbQyZrJ/jNBAi7aM8XAuNhhjC1oHVyNlIRM1V+1MybvoheREjMY qcdWjs5YCrg43SWAiEkEGBECAAkFAkV1n5MCGwwACgkQj8lnY/EWmeXXJQCfW3pc YuXRQYv5d2NC5AfgnvxmjnEAmgPFcYvU/gGprH9Hz/bvXp3KrT7M =NcNR -----END PGP PUBLIC KEY BLOCK-----
<ivoras@FreeBSD.org>
pub 1024D/569C05C8 2000-05-24 Key fingerprint = AB9A A555 C47C B61D BF83 154C 95D9 C041 569C 05C8 uid Ivan Voras <ivoras@fer.hr> uid Ivan Voras <ivan.voras@fer.hr> uid Ivan Voras <ivoras@geri.cc.fer.hr> uid [jpeg image of size 4567] uid Ivan Voras <ivoras@sharanet.org> uid Ivan Voras <ivoras@gmail.com> uid Ivan Voras <ivoras@yahoo.com> uid Ivan Voras <ivoras@freebsd.org> uid Ivan Voras <ivan.voras@zg.t-com.hr> sub 1536g/149FDD60 2000-05-24
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBDkrvE4RBADgl43F4E9yq9uGfw/sc7ulsKvz64g8Sj4XjtG2K1VoEzJ+eKZB rgaH//pbAH7ULpV89oVpvBbvVkIlM6WSrCOWydTlvFGZgRHL10nl9FxFyuX+yykJ Qw3I/zhpE7TbowDwEivNtBt3p+PE6xRCpvPA++BhMs3RADvDXSeq1a1LGQCg/wUn 1cZgybe/i0KEgOLjSYIcfWcD/05bn0WkRXUq3evT7wYZ/zi+HEQsCUV/LOPY7Zom sDkKTuLKlNXx8xk4EcIb1LOqmcI8qct6CLEhGfa9ek0KrxpaFkR/1fj5zZWlLbxj UREeaVXt7ESlawmHTwVwRAmyMDAUulxDz7MgYcJjfi0RICHCsEeopgyo6Mm7z5SH MKqIA/0er6aLclMRbE8+AW+4TYFyYYmlc8ek7tz3KTCGrustE4ZJXSGt9pA5puiS +KvlWEm7XjG5H8xUJGQuhcv6L1sY0U+1LLFZOoU9l06Rbi5QaR/J7beRqKhitLIt 5/43PpQZ3tmdHjvIRX1EfPV3M/QS/yB2xsiJu2nChutM0n6hB7QaSXZhbiBWb3Jh cyA8aXZvcmFzQGZlci5ocj6ISQQQEQIACQUCPBddlQIZAQAKCRCV2cBBVpwFyOnX AKDsmTv7Unk0LeLnzrNHKrM2Cd00RwCffqq2vBc8Okr6cu19JJRqcRLlC+uIRgQQ EQIABgUCRh9mWQAKCRBtO67R6hYNC70GAJ96UzOIyYn0HMCpE3IvUAKfmPXBjQCd FM1iFq5IKcHYW7Chf2RBy40NtZa0IUl2YW4gVm9yYXMgPGl2b3Jhc0BmbHkuY2Mu ZmVyLmhyPohJBBARAgAJBQI8F10WAhkAAAoJEJXZwEFWnAXIx+8AoJYexih6EYDs iVst13lTI61claABAJ0WRoRfejnHcgBDidpt3P86xOv5iYhJBDARAgAJBQJErs38 Ah0AAAoJEJXZwEFWnAXI4FQAnjATnWkW6jqhS4B0q0Fyu/PSomVjAKDX3n5peLqe n7copp3k3fvNTD8AXbQeSXZhbiBWb3JhcyA8aXZhbi52b3Jhc0BmZXIuaHI+iEYE EBECAAYFAjsrwhwACgkQldnAQVacBcj8hACeOJt1Oqq6erPIEh9smx3Ri3TUHwUA nAxb1miM4siElBik0NbqaRJUqBtriEYEEBECAAYFAkYfZl0ACgkQbTuu0eoWDQsp VACgkQr2lvyRsMrLz9Kt2FS4MOgZpeoAn3B32Z1QNnkT81A39SS21I5i6b2ntCJJ dmFuIFZvcmFzIDxpdm9yYXNAZ2VyaS5jYy5mZXIuaHI+iEYEEBECAAYFAjsrwnoA CgkQldnAQVacBcjnYACeMY0ipykUA4WTTVYsjE8H89r85JkAoKwO6L6QUprO5qSB me6M6QldoV2RiEYEEBECAAYFAkYfZl0ACgkQbTuu0eoWDQvFKQCfbWH3vb6MRQx5 lAxLQuUEDPt0EAYAn0UX3UduAYZMR/dAsXSVooSOWDP+0dEt/wAAEegBEAABAQAA AAAAAAAAAAAAAP/Y/+AAEEpGSUYAAQEAAAEAAQAA/9sAQwAKBwcIBwYKCAgICwoK Cw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkhIjBBMTQ5Oz4+PiUuRElDPEg3 PT47/9sAQwEKCwsODQ4cEBAcOygiKDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7/8AAEQgAkAB4AwEiAAIRAQMRAf/EAB8A AAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAAB fQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYn KCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeI iYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh 4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYH CAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRC kaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZX WFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwD AQACEQMRAD8Ara2MX591X+WK5mU41d2I6Kp4HoAK6jXRi9Unug/ma5i5BGpOf+mQ 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 =9LWk -----END PGP PUBLIC KEY BLOCK-----
<stefan@FreeBSD.org>
pub 3072R/12B9E0B3 2003-03-06 Key fingerprint = 85D8 6A49 22C7 6CD9 B011 5D6A 5691 111B 12B9 E0B3 uid Stefan Walter <stefan@freebsd.org> uid Stefan Walter <sw@gegenunendlich.de> sub 3072R/6D35457A 2003-03-06
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 Sjk9E6QR =iXXA -----END PGP PUBLIC KEY BLOCK-----
<kaiw@FreeBSD.org>
pub 1024D/AEB910EB 2006-09-27 Key fingerprint = 3534 10A3 F143 B760 EF3E BEDF 8509 6A06 AEB9 10EB uid Kai Wang <kaiw@FreeBSD.org> uid Kai Wang <kaiw@student.chalmers.se> uid Kai Wang <kaiwang27@gmail.com> uid Kai Wang <kaiw27@gmail.com> sub 2048g/1D5AA4DD 2006-09-27
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEUZ6yURBAD9qQ4Pz+LEm54dEtrDII566La8mVjMpZfp/xcPSY4Jsj9Rin4o XiJ4cevwTiAr7KBGbO4uJ/hRwOQMlql8vzwO+Bc66zLxwQfGpLniTvdEnsRmiwXn MOlc6Kd1SwxOk4rV/B6p1iJLZ6sXQPx9IlDskyJ0OhIYKBaYx4sjN4W3wwCg5QB7 QSrzEldBYnrxVFLHfmQO6ikD/3sW06q+gAdSFwFCFEZmE0kaCVzQUrTwnyKWlRPx Fvk0PftHhbofybxiv3OFp/zHZMHRlcVqcYf7WRLww+QXRgFh6x5kkOoAFMVJzhYH xKcXSnqPph6M4H1GvRVo4G1FkdqEZ5z2hRwiryugSfuzRRHil4ewpZQeB4am+Llu H3UeA/wO4eqG62W13pRephwYO0ramQai+WV34z+DUGoKY2EMpsbE6+J85aiySvor BTfWq1Lh5Mg3RYGWLmLay+GDQE2YIc1EUrCgHlUpB+vB+3pqPq+5ssOixktylJna R40BAqOP/gO/sSBnCZpI9nNqtKDpONfS8xwDArEKaoqxxphD2LQjS2FpIFdhbmcg PGthaXdAc3R1ZGVudC5jaGFsbWVycy5zZT6IYAQTEQIAIAUCRgD96wIbAwYLCQgH AwIEFQIIAwQWAgMBAh4BAheAAAoJEIUJagauuRDrMosAoIPJziIJtz3GBALxa4SG nIUGNliZAKC8yMp144zGxaumG1n4HZLNdaMwVLQeS2FpIFdhbmcgPGthaXdhbmcy N0BnbWFpbC5jb20+iGAEExECACAFAkUZ6yUCGwMGCwkIBwMCBBUCCAMEFgIDAQIe AQIXgAAKCRCFCWoGrrkQ69oVAJ9gWVClx+v3Hhvw2AjOyFaDT4hpnwCeP2ppw3M2 nNkuXRtTI3uY+jwCSmm0G0thaSBXYW5nIDxrYWl3MjdAZ21haWwuY29tPohgBBMR AgAgBQJGAP2+AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQhQlqBq65EOtj DQCfZOhljB+TJQncoZWMf/CvbT5I/ZYAnimgyJtouIZGXSTqU172qsr721aTtBtL YWkgV2FuZyA8a2Fpd0BGcmVlQlNELm9yZz6IYAQTEQIAIAUCRvwuFAIbAwYLCQgH AwIEFQIIAwQWAgMBAh4BAheAAAoJEIUJagauuRDr8iYAn0PbQX8TzGfG4VJkI/W1 9Y2lQruoAJ4jtv0WxAV5CxIbBccVErg9rEdBdLkCDQRFGeswEAgA3/ArJRAwAXv5 AOSioc12EGWSX9bpYWfcODoJL5ggaBLQKE8SiA+evSXgvfW9AD8S9T5ltLSAYXUb pbIWw/Nnp7w9+hC81fQI7mHoDe7oSsJa1mnyzibnqRczxy3V23cjqPLeZiRr3AkD mhBkONQron7mk23x1lTsHCgFmxBZWxNdnkIprmN37YkiUB0ky3/x3s7BVdat3hqQ ot3OF3i/6ugqW3qH8+Z3uEpWZr2yx5KwEJbUQNvgQqONlZsMDCp03jJuPIgnR/kA iRFIUmGLocgOqfL3JL+l7MflVQFFlzZNQqKK+WK2kXOc/C31AsVY0YJ4CsjTQyBa 775LqpnTtwADBQf/WOJ8AztEUxh75zndmMV6tsUhq8K+cfaWR0e96zOP0eiO5IRW Z4muIXIBC7FxgyR628XAPm3a/IbMpD0Usure0MIQkmaza5ktGXG03KCpQYYhveJr 3I69jJHUM7Vvrcl+a9wY3Ni5UgIfmWQzdpsVW707/SjZDcD9e3MWhASOThKb1wIM II7zgKICwGBr4VSwNVdikdHJ2wNhziuwJQHFxQs8rsXTLzHeJcWJfpZ1bi1P4Csw lsWosIFeKESAHoPsbpHHcS46cd6CXbOTLkonsUDqW5DZoN959MI8txkh54heZdXv al72Ksb969EL5ef//lDo/ex8aaVYaYwiI0H3VYhJBBgRAgAJBQJFGeswAhsMAAoJ EIUJagauuRDrkbkAoIe8dlhn35cPrbpcy4AtUGFlR0HTAJ96MT6WOnFqjfJJxo97 Hps0V71KXA== =v7/U -----END PGP PUBLIC KEY BLOCK-----
<adamw@FreeBSD.org>
pub 2048D/C57CF3A8 2012-11-15 Key fingerprint = CCD9 F28A BD1D 50A1 8D08 18A7 F48B B195 C57C F3A8 uid Adam Weinberger (FreeBSD) <adamw@FreeBSD.org> uid Adam Weinberger (adamw.org) <adamw@adamw.org> sub 2048g/9C6D0E30 2012-11-15
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 IpuNrKfM7zuBiw== =yHIG -----END PGP PUBLIC KEY BLOCK-----
<peter@FreeBSD.org>
pub 1024D/7277717F 2003-12-14 Peter Wemm <peter@wemm.org> Key fingerprint = 622B 2282 E92B 3BAB 57D1 A417 1512 AE52 7277 717F uid Peter Wemm <peter@FreeBSD.ORG> sub 1024g/8B40D9D1 2003-12-14 pub 1024R/D89CE319 1995-04-02 Peter Wemm <peter@netplex.com.au> Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A uid Peter Wemm <peter@perth.dialix.oz.au> uid Peter Wemm <peter@haywire.dialix.com>
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =7AWH -----END PGP PUBLIC KEY BLOCK-----
<nwhitehorn@FreeBSD.org>
pub 1024D/FC118258 2008-07-03 Key fingerprint = A399 BEA0 8D2B 63B3 47B5 056D 8513 5B96 FC11 8258 uid Nathan Whitehorn <nwhitehorn@freebsd.org> uid Nathan Whitehorn <nwhitehorn@icecube.wisc.edu> uid Nathan Whitehorn <nwhitehorn@physics.wisc.edu> uid Nathan Whitehorn <whitehorn@wisc.edu> sub 2048g/EDB55363 2008-07-03
-----BEGIN PGP PUBLIC KEY BLOCK----- mQGiBEhs+ZMRBACu6CWtdlJ/GkGO4O6epy4SKwxV2s64od5j3ZG/+CkdXfHVnvDf NAdvytDwRPjFdQtwDmLTcotdm9akMpmoI+nuTDOC/wyoojh3NlTp/YmzSLntBoaQ W2uwp8oAW4dszTMptgb3Dpce17cHQcCuQ8Ql9tnZlFOvm4XCP00y7pmGrwCg65cu 0wxbDYVp2fpPIG0D67q03j8D/01g68qU+JQqCZtCTDSJ7tG4w5zlOH6Hu7Q9wRhb XBDKX6fiO9CiRDorgi54DoKqjQoHWnFXrKBcAughLEjle5BSZ+Z+eu/tfMwDEfhL FMMPuvT9BVG/nukn4ufmk8BqPbw5PGalYGbdJvvjbyWhVIu/dexqGe9mT3DD7gk0 WZArA/95nvE5+LRH31Jugq1GJ7cqjJyd/IPQC96z7JXdme7oPQ8IYDsLjsT982MO 8WvwNbQPnRrj3Sgjp7EcuaFt/J66P7KvpU1lQKJDfZgk1LTL0Nm8wzLj2tXSwZWg tSOZewMItr2yKwBlpGDsS5K7CCpbocsndrI5DOPEzuYr7y+56rQuTmF0aGFuIFdo aXRlaG9ybiA8bndoaXRlaG9ybkBpY2VjdWJlLndpc2MuZWR1PohgBBMRAgAgBQJI bPmTAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQhRNblvwRglgkxwCgmC82 iM6zfYaJwcFsqETyxS+9Vv4AoJCemsKBmBQiN7o5K84/DuaCZTWutC5OYXRoYW4g V2hpdGVob3JuIDxud2hpdGVob3JuQHBoeXNpY3Mud2lzYy5lZHU+iGAEExECACAF Akhs+tgCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCFE1uW/BGCWCFSAJwL f5HwF8PEUIEo/25Dwr72JCW6DwCeIm2wQjiyXl+wy1QIP5eX5Emy+Pa0JU5hdGhh biBXaGl0ZWhvcm4gPHdoaXRlaG9ybkB3aXNjLmVkdT6IYAQTEQIAIAUCSGz66wIb AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIUTW5b8EYJY+GsAoINx6fjsHpdy JT0UWgiIr48kEhtcAKDetW0OzAVCF8HmXMHWR/zyjVqHSLQpTmF0aGFuIFdoaXRl aG9ybiA8bndoaXRlaG9ybkBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCSGz7AQIbAwYL CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIUTW5b8EYJYgiQAoM04WRCQ0LI5L78O d4VFwQSiUiDtAJ43eEJzvlPmvR2geTEaB6lJGNrBMrkCDQRIbPmTEAgAypfp7UhW ZPvGO8EfI90WkCclB/H7hSfpTgcZfQafWis6YllJ/EC+orAdQ79I/vdp5x5as6VS HsvN/IXXxoL30uHj2PTFV4qi0Tx8YMcw3xUK+wskQ0HonWsmZZvqHBSMbh0+JpXg 75ZHXxOg/kpaFIjYz7cML9jSFBxD1S1/kmHqFnJISJ5wFAeXJj1loPfTbu6x5NB5 BGbR/ysii9FidJUAXPk2EviD82oltntcNrUJS29ghFwM3FO/sZFdStQppNTgDnwO mUFyYxpwzG8vMjWYl3DWlc8ozXtKRotGzzsXuwUvdnC9e9MRX8xsF7x1vMrV5j6+ 5SGMnz6KvRzRIwADBQgAhDEuTI6+glgo0Kale3FKlKaOdz9R26uTCWVlK32O98jp mrdCfG1u1cknYrLlIVZIlrTgu3WqjRS9j23z8mIKQNW6wudu+/50/N7wtlV8k/s3 DKmoUjcXH1b7vPxxnhFbtg41COFOUziIyXkupHEOJeaF+Sz4EEi8nXMKBEoGFlYD rh61rOFsfrf24E3dIwdLyjoTify8trdL5pgug27pHPMgXXx5cjLooq73VFvzlqCA 3zFyypgED7UsYMH9NjmyLlA77gK4gfuAlGXwEWyh99SVksrvvHqntHyg9p+HdCQJ GyYwRMNUXTfdSn4cWVc+Qip1jpgdH/bbIwZeTIMaIYhJBBgRAgAJBQJIbPmTAhsM AAoJEIUTW5b8EYJYA0wAoJ5oqyCt4TZRVfofTeTGcm8K+a8lAJ0YGUPg2rEaTf06 QaoupCN+daK2wQ== =hP6F -----END PGP PUBLIC KEY BLOCK-----
<miwi@FreeBSD.org>
pub 1024D/B1E6FCE9 2009-01-31 Key fingerprint = C022 7D60 F598 8188 2635 0F6E 74B2 4884 B1E6 FCE9 uid Martin Wilke <miwi@FreeBSD.org> sub 4096g/096DA69D 2009-01-31
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =S3Qn -----END PGP PUBLIC KEY BLOCK-----
<nate@FreeBSD.org>
pub 1024D/C2AC6BA4 2002-01-28 Nate Williams (FreeBSD) <nate@FreeBSD.org> Key fingerprint = 8EE8 5E72 8A94 51FA EA68 E001 FFF9 8AA9 C2AC 6BA4 sub 1024g/03EE46D2 2002-01-28
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDxVl7cRBADbXnR4t/xRvvOSiPuGPnOGeamrphPbpPXsWD8Nm/pjfN3fhSfa 0gv3Y2n/IyLTg93gWZhWloMznkdg59Oj0oPSUxjgPauVw4q6l3JJIcurJNlp/Q7l DH0KLFJ8GuL6zxAz7Jcx1BpAIEu+G2SnI8+ZuGvq+YwaDxPFavfCqmVaBwCg/iPu OI+84/W54yZXvxfUN7dkDmED/3CxYLGeWqPqE8B8Eq8BlmgfP/FwaqXXb6xR7jsE XBaqNOIita6Iz49sYTYKYY2rMv6dMXjX1FM13wNW3rS73xkNvuJz0WU6sWl9Hw1e kjNjCN2oIqkqB5/1H14NMSOcUPLqERP7goFIK7OAJejUmm5Nc3KjG1S2G97xxjPe 39mlBAC0QFfa8J0Z6TORFa8Uqyx90pC/Y+I/S+y0vP/59ReP/PnQq/aUdDPLt5OZ edtpz7M4A2GtoVkWtedPRsw0hYK+Q3CtOMemQSnlfVjTZq5edL05Po09N89M/WMz hB9aRcdY7IN/btsQ0H12ZH+rEj+O4Adu+qEjsWePfW60Uj74GbQqTmF0ZSBXaWxs aWFtcyAoRnJlZUJTRCkgPG5hdGVARnJlZUJTRC5vcmc+iFcEExECABcFAjxVl7cF CwcKAwQDFQMCAxYCAQIXgAAKCRD/+YqpwqxrpMSwAKCVuyt4B1Pc1tAwRMEOmmZw 2nGIIQCgyRvB49snyBl86TikYv97ZifyLmK5AQ0EPFWXuRAEAIghycOZtElvBhfw r7TisjtVtzKhbF0Kj9cGg5brCC8/bJLK7PxNe48NSdlqMJ7algumsgYR37b/QBmq sOSEa2wXCnvCSD0ol+bdPn+Psb+hyi+AVNmVgdlJwuxHUHny0lWQnxeQLrt07SAw Ye/Nnc+arH6GXzBwXSpsQ2sOaMajAAMGA/9Hzjkv6HmJkPlKT2TNx33mbLaDk8xv vAJXxogxDcUqDDwqszWPcqShaW0IkMZo+grZfykZJjA0/8QUCaEUwhnYIwHMQRdA uNegCF/D2x4yzkF4d9gKYCCykDUrwvFDztIhGkinyzu6+xwe9qFcL/esIxnnonz7 Wx8/3e7pRvS2QIhGBBgRAgAGBQI8VZe5AAoJEP/5iqnCrGukuikAnAt8uA1EIv/5 WDCIpvNp0lgmwes9AJ4vD1R35+Db6UIw+R5EJaxNBY84zg== =xbGI -----END PGP PUBLIC KEY BLOCK-----
<swills@FreeBSD.org>
pub 2048R/207B1BA1 2010-09-02 [expires: 2011-09-02] Key fingerprint = 98FA 414A 5C2A 0EF9 CFD0 AD0D F5CF 62B3 207B 1BA1 uid Steve Wills <swills@freebsd.org> uid Steve Wills <steve@mouf.net> sub 2048R/E9B254FD 2010-09-02 [expires: 2011-09-02]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 eYhPE7EaCOyuAA== =7zxq -----END PGP PUBLIC KEY BLOCK-----
<twinterg@FreeBSD.org>
pub 1024D/C45CB978 2006-01-08 Key fingerprint = 04EE 8114 7C6D 22CE CDC8 D7F8 112D 01DB C45C B978 uid Thomas Wintergerst <twinterg@gmx.de> uid Thomas Wintergerst <twinterg@freebsd.org> uid Thomas Wintergerst uid Thomas Wintergerst <thomas.wintergerst@nord-com.net> uid Thomas Wintergerst <thomas.wintergerst@materna.de> sub 2048g/3BEBEF8A 2006-01-08 sub 1024D/8F631374 2006-01-08 sub 2048g/34F631DC 2006-01-08
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 B5lKgt0VCQCfdhlL5hMDBDoaMdMtBZXFL4/Vn10= =ArNG -----END PGP PUBLIC KEY BLOCK-----
<wollman@FreeBSD.org>
pub 1024D/0B92FAEA 2000-01-20 Garrett Wollman <wollman@FreeBSD.org> Key fingerprint = 4627 19AF 4649 31BF DE2E 3C66 3ECF 741B 0B92 FAEA sub 1024g/90D5EBC2 2000-01-20
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org 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 iq7OH/kskwCfeEvJINcMBk0UEdjpgO85woB6QKI= =stB+ -----END PGP PUBLIC KEY BLOCK-----
<joerg@FreeBSD.org>
pub 1024D/69A85873 2001-12-11 Joerg Wunsch <j@uriah.heep.sax.de> Key fingerprint = 5E84 F980 C3CA FD4B B584 1070 F48C A81B 69A8 5873 pub 1024D/69A85873 2001-12-11 Joerg Wunsch <j@uriah.heep.sax.de> uid Joerg Wunsch <joerg_wunsch@interface-systems.de> uid Joerg Wunsch <joerg@FreeBSD.org> uid Joerg Wunsch <j@ida.interface-business.de> sub 1024g/21DC9924 2001-12-11
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.6 (FreeBSD) mQGiBDwWI2kRBADM4C4YlBiLozC/bZDedK12BMLyfnv9yOppj/doC1cOEaE+xZNQ 7/aDZfhi7FNQzt+ehh52DLihV91G7gOsACtUk3gLR8G+0q6U76dBY/gvAGzCYUu0 bJwlQCcPMysF4sNEwvsuct1fIVAHa+660X6Q+WI+eADIwZyN8wR1GrEqswCg3uGM xm85EYtxPFx7tyxfA8q/d+MD/i+SPmt9xEZ/KZOMbQVPw/vYmeWW4lVZGG2HLKmH J2FiAW4YjryoNqhpbbqlJigxf6staqgnQL4uuzBrr6v+OIjbljTHA7fs0WA4mtTX u7YcAKPXBTztw/O+f3tZz08Ep+AHJ3Q+pTbbRQZpikGGdOpjfLcEyAQBh1rNA3zl /MiLA/9IL7yfpyiA6cjX+MuUCqlqbPW2awQOCsmDBOcpXdOYC+MsBUhlT7IcFtQd BUxUiqdIKlRtIT4l4LnqzhL2HASv6Zzc06zGS+tlG6BlpCGlSxz8fp4asbTYdJnp d7lqme75jOUNjygal5lxJApincaLjv+4IaNUWCC5RjQuRsd3t7QwSm9lcmcgV3Vu c2NoIDxqb2VyZ193dW5zY2hAaW50ZXJmYWNlLXN5c3RlbXMuZGU+iF8EExECAB8C GwMCHgECF4AFAkGkelUHCwkIBwMCAQMVAgMDFgIBAAoJEPSMqBtpqFhz3+0An1WU SyLW5PtVk8AN2wZOZoIbdpWJAJ9UZjNCICVixY7lc+me/lfu7+nCsIhzBBARAgAz BQJB4lonBYMB4TOAJhpodHRwOi8vd3d3LmNhY2VydC5vcmcvaW5kZXgucGhwP2lk PTEwAAoJENK7DQFl0P1Yu+kAn27zpfl6Angb/DIsaV6srJ6SB/hmAJoDHPErifuG 2L4KGF3NcagZRoUl77QgSm9lcmcgV3Vuc2NoIDxqb2VyZ0BGcmVlQlNELm9yZz6I XwQTEQIAHwIbAwIeAQIXgAUCQaR6QgcLCQgHAwIBAxUCAwMWAgEACgkQ9IyoG2mo WHNIRwCgnTUFJ1krhK0XISLLossxl68fS0MAoJEjQcOZTKtIp8S4Dqo7/VJYUVKF iHMEEBECADMFAkHiWicFgwHhM4AmGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9pbmRl eC5waHA/aWQ9MTAACgkQ0rsNAWXQ/VjuVACeKGyJ5VTFr26fxsDgqrlfXjksoBMA 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 =SfCl -----END PGP PUBLIC KEY BLOCK-----
<davidxu@FreeBSD.org>
pub 1024D/48F2BDAB 2006-07-13 [expires: 2009-07-12] Key fingerprint = 7182 434F 8809 A4AF 9AE8 F1B5 12F6 3390 48F2 BDAB uid David Xu <davidxu@freebsd.org> sub 4096g/ED7DB38A 2006-07-13 [expires: 2009-07-12]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =jyox -----END PGP PUBLIC KEY BLOCK-----
<emax@FreeBSD.org>
pub 1024D/F050D2DD 2003-10-01 Maksim Yevmenkin <m_evmenkin@yahoo.com> Key fingerprint = 8F3F D359 E318 5641 8C81 34AD 791D 53F5 F050 D2DD
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.2 (FreeBSD) mQGiBD97XL8RBACC3CMLdwZY/RcLw4PM6h2KYj+cG7TNSfNWszZO5HdQYrd6HZKQ h0cL7cyW1Low8a2ZulxtEjM1SfofzDlhNaTYhyjlO4xBnJM13dMFchmM4j4qF0Mu al1MEeO3EbLntFsh/aDX2sOKEavz5id8eKmAZKez2O5Z27bymkFf4o2UbwCg841B WuuWHsy4O1zrac0WidkS3G0D/jeVbYA09gylZA1KSd3djHE55lQDQrUt3+2xWxjG Lg60WIqys/yxei6nVO7/Wr6Q1WISiX0bYXAxHCZZQrT6cuNtEBntPPa9PnXRewUx 8xwVCBIuSLK5Kw2WZ2FMuQWTzfd4fwt8P9vghJlaV3h5Byw3e6/MdoDID9Jkg/ml f5FuA/9kZBwtE4zKJvx3Pv7EG6T0w82QA0SFtcFyRnNarUIfqyUsFXNkr8hoQT3Z J5haO/lW2HW70KMr26GxK61XcF8LQtfvphv9M+4yF3+DZSu1YxUM1Vs/q27EQhXa 3Cs4kJkKdzW2xDbIbuD5ZJQqFAzWX7IiTTNXnEGZStPTQMYZLbQnTWFrc2ltIFll dm1lbmtpbiA8bV9ldm1lbmtpbkB5YWhvby5jb20+iFsEExECABsFAj97XL8GCwkI BwMCAxUCAwMWAgECHgECF4AACgkQeR1T9fBQ0t01FQCfUR367fJJ37Wl4HvZVBoF peBX9ZEAniaaK/D+n/JttkgY8jJf2ZvjF0SSuQENBD97XMIQBACPpJjDdDw42++u vPMW/R7Iwqdpgs22T/bzVlFxDGx2uD9xaoNKI03jkOyUWiFlHbuifMRhxTwO5Vyg nj91Y0fk8hdd9bjT0ee7lJuQ8PBqzb/uEVGFIC+56/ocFzuBANdN5fzEfxp5AA0o zAPotyGEmLLK8+3ApZmAbsnQEveOwwADBQP+KgIxPzWAxYSn/MFPK2QBEjHuCCsS JB+VOShc/QaSn/wFEKc8Brjpr1KeAEi7dFrK4Sa2Rn2+k9tRSJptxi1m3Hrr0J2z 0JofnF6cKkvmIsCse5OGCK/LJmuWHuNVqYI2X9Q0am+soHEYsRaqB/BDLT5Mw0mE 5NO6455cKEcyizmIRgQYEQIABgUCP3tcwgAKCRB5HVP18FDS3b1HAJ9ZjWomBkE4 1vaMSXyIopmSQNVxSQCg3J+fBmk0yhD2A8CIfxhpSRJDwus= =wV5Z -----END PGP PUBLIC KEY BLOCK-----
<bz@FreeBSD.org>
pub 1024D/3CCF1842 2007-02-20 Key fingerprint = 1400 3F19 8FEF A3E7 7207 EE8D 2B58 B8F8 3CCF 1842 uid Bjoern A. Zeeb <bz@zabbadoz.net> uid Bjoern A. Zeeb <bzeeb@zabbadoz.net> uid Bjoern A. Zeeb <bz@FreeBSD.org> uid Bjoern A. Zeeb <bzeeb-lists@lists.zabbadoz.net> sub 4096g/F36BDC5D 2007-02-20
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 B8U1cYUAoI3ftziD88BkkQf1aD7jpiQwlW7/ =N1dt -----END PGP PUBLIC KEY BLOCK-----
<zeising@FreeBSD.org>
pub 4096R/EA4BF1EC 2012-11-28 [expires: 2013-12-31] Key fingerprint = A8DE D126 D346 E9CB 6176 AECB 0401 4392 EA4B F1EC uid Niclas Zeising <zeising@daemonic.se> uid Niclas Zeising (FreeBSD Project) <zeising@freebsd.org> uid Niclas Zeising (Lysator ACS) <zeising@lysator.liu.se> sub 4096R/BB8B5551 2012-11-29 [expires: 2013-12-31] sub 4096R/B8D43CD2 2012-11-29 [expires: 2013-12-31]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 AGKnizAGgU22dFYDKXsM/kldl7QM7wQ= =vzHR -----END PGP PUBLIC KEY BLOCK-----
<phantom@FreeBSD.org>
pub 1024D/9196B7D9 2002-01-28 Alexey Zelkin <phantom@FreeBSD.org> Key fingerprint = 4465 F2A4 28C1 C2E4 BB95 1EA0 C70D 4964 9196 B7D9 sub 1024g/E590ABA4 2002-01-28
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org mQGiBDxVhBMRBAD20EH9hS3S3gy73E1s//vYS1yo4GmmvzUzMTJo4HH6OMFT/MVn B51RXK5YlQ1cau4MWt2sifpWsG2hmmmPtOIaC6Mn4X8cEXmzy6qW5m+3RUdXB8rM pFSEVVEGhE9Sq+pTI1wB4VUJ5mhQtvWVJKsmuyf1YRa/zrr2zbZTIXg5EwCggloA GdcoFNm7p+cW56HJI1jZTpcD/jUyc4KLeimo+6Fn3z6NZh64GS+JmmCDe7mlcK2S XNPVq3tXXP3ZUKdv3faoMAgI1hSi82/32GINDkhiLPc0Q2tQZRDYKvyY/swgJSnV 1LV8jlpk2VsmsYOp9hW4SJLAQUaejpZe4CwHpOfJWbPkXE83nVygA0lnN89dfhIH JaB8A/9VottMl88+CLzqF3AzN72R5tFWnSFMWumaODis+UvLW0XAMP4AHhvux/FS Pl+m2YtilHhib6lfMYuGalN84H7VxOBxjc9L4qORV9jP4cWEYXpxx0DTmmtFfLae xGGTyYNM1RiqmScXMF28Am1I+WhnLTql8DVFWr8XoZUbususg7QjQWxleGV5IFpl bGtpbiA8cGhhbnRvbUBGcmVlQlNELm9yZz6IVwQTEQIAFwUCPFWEEwULBwoDBAMV AwIDFgIBAheAAAoJEMcNSWSRlrfZ9yQAn0bnLWBjo47dKrS82X1VvbuokkNXAJsH oANWk5PoOZzySJ7st8/IyaLBErkBDQQ8VYQXEAQA2cEOpYzl8L5y8TErdj1lfpHt gxm1QFETl8HvZGb/hTRWVhIcUhtOLA2uftk1oDHbnp+FPsJuFTxanCaCSQVdtMEE I1zK/Qy384FjS1B6L3yq84yTKn+Gp8SbMX3ZWT+dVmy88yJpmo/yFiiN9d2hYy1q fCUWhbAoWeD7sqSeGL8ABA0D/Au95rpaYunrMhu5nVdvZpTbNEIEDLOTS337GWy7 n1E9RG72ujCLFg8tbEmjEUFYfCZ/cW+6+2/Nj7zoGH9xXH6bRTfSKXojdKgNkUvL SLynpmFpUlFKc4fzSxx5EkCxH/zog9X2CQjMvxHmSD1/x+LeD0v/5WMsLvIdj6Op 0KmziEYEGBECAAYFAjxVhBcACgkQxw1JZJGWt9nbrQCcCvSJho7n1r4+1PGTlcep ABxplbsAn05jPrtZLjln7aKcavCp8FICJ2TY =GYHE -----END PGP PUBLIC KEY BLOCK-----
<sephe@FreeBSD.org>
pub 2048R/3E51FB42 2005-10-21 Key fingerprint = 5F47 3861 7ABA 8773 9E32 0474 5C33 841C 3E51 FB42 uid Sepherosa Ziehau (freebsd) <sephe@freebsd.org> uid Sepherosa Ziehau (sephe) <sepherosa@gmail.com> sub 2048R/7AA31321 2005-10-21
-----BEGIN PGP PUBLIC KEY BLOCK----- mQELBENYRSgBCADNXKEOqPFvo//r9KnH2BzwJOB8h8TmU3zS4fogC1HjYQfZmFRa MCguECmq730ulxo2hnBSq9VyLfwnL0W1vz4b+2vMbcO5v9TkvnPlL3OW/mAHjrAL u01ui5VR1TKxD12q/KIEQ49+Ir8z4THImm4WgKaYo37xrNMAZc2BSCHK30I8lda0 2DG8hzDtlCE79ZbqNAPmQYewflaU/ga0kzI/MftFeIZA7K26krXBLlOIY142ckTd iB3wrC2s0tqjQMxQODQTvWyxoTLi1TGMY/zbXdc9aoXnuX6qKZEzTh6P5NU8cRto BDlNVTV1eFYvFy6NNkNVE4Jj3yk96xWwlRJdAAYptC5TZXBoZXJvc2EgWmllaGF1 IChzZXBoZSkgPHNlcGhlcm9zYUBnbWFpbC5jb20+iQE2BBMBAgAgBQJDWEUoAhsD BgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQXDOEHD5R+0LrJQf9FD6NUteiA76n GtJ3FRPUbEL/GbDtg/Ad/goeOzQIgw60QSan+nuDIcWz50XWcxfnjkThRQP0CWwk wkpGlOQt0DsPpFq2oSaR8yXSqfUAPuzSohmuArAeAs5aNlr6FYaXiOsvSmOM1pGX 7JkTvajjxcXcSLSTqJS43xbI8s/+gEqTJbOErNeWxdK6uHHVhGmWexzu1wrUzjxT +4SFEEOsL/ScF2ITzByPZO6oBTrZveNKcC/nOBZAnkfjqqc7jRMggY4zGvFtFgsl dbHwMqkWihoJvhqspoopCeGwt7sY1NFsTUFNOZp073C7rIig1vgHEWnhevleq+cK ridbUbY+YbQuU2VwaGVyb3NhIFppZWhhdSAoZnJlZWJzZCkgPHNlcGhlQGZyZWVi c2Qub3JnPokBNgQTAQIAIAUCRgkgdwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheA AAoJEFwzhBw+UftCiZIH/iSSBM5Nv3G8Y2cS1ui1Xc5KpChSt6CAqKTOiYxwWQ/B U6clllym0NvzjUxiJm4JuV0N8sAy8nhhs79SNRfYfNnGeHXmLS58MPszhnEnhgZm yuZFQdZ15T9Axf5gLmDqA8TYpcUYxssSm8PcJqoCGnbk28okwbRuwTUm9T/w4TXt 28w7SEXK0GFBG3ZlKPZh1er61CSwM7l/aoCkyFoNHAfGssFd/t0OCD8ugfQf9zvk JKXsm15vQAhMJrbcIhMGPWKoLN/z8bQTHSN4AP8nGM7gq3zUKZwL5jrzAUtHGqGs jtIBX9oPT5GLCaXZNotcLh40aS8qtemVthLqFS+pNu25AQsEQ1hFXQEIAMQRgCMl 1tgeNZlj6fN+JC4LU4DC+9R28tnzEXWFGud5XQx/EzNRQVDuiDqQKPmc86Ps77dl 7iJNTxapBs+Ki+3VOP11/ZUzHukER4iWZRXwfYtCE2tu2ht53WtYqoqwt40rsCOh uzC66FIiZ9Woj4omL5br0lKj8kVqS+OKfLt452bWg0mV39lokA3Q0xVfhlL3Nuj0 S2yJcP0G8kesu/Ol1z85EK4GMlrOfZOaaz1r4f1u3FwE3Fo8anjvnUM9UC+ImJq0 Z6gZwbBQ0tk55Z2Bs2sSyNp5cDnNyxa9HPOpvNqEE4bD4pMzsRMlEUhgM1kTOe1x AwBsQscqG1ovCnUABimJAR8EGAECAAkFAkNYRV0CGwwACgkQXDOEHD5R+0J/WAf/ aALJbyEU1nSvyeVp0mP6U9xRFnXM1G4zQ3mrFyMvYcQ0a2A3gr8E+Ejl5Lpg/7HU t1UvLSqn00dqXuI+BIm/exDmpfLKXouBLVGtDcSQ/EQl6SV3mkJrvH8rDkCakCOG Fho5cl3Ge8YThQW1jdjbo+zXJfC9+k4ienh7DC2Yd8cwpcYRAKeKFOdveSjW+Ox0 NFmZYc0F+XfKZLJ9d1SrFH5/ytQRAVvMbkLo1nb92ZXBrSbTN+tsLZrEbcmuuuZb pP+0i1PJDqfCRVpYFnlPZsNzZU5c5ihABZ79/uSScAyuxlhRdZAVHSDc6cRyzB5w AshLLfnD1BoaFl+lzNnL2Q== =F5Wg -----END PGP PUBLIC KEY BLOCK-----
<zont@FreeBSD.org>
pub 2048R/E8A68B1C 2012-08-17 [expires: 2016-08-17] Key fingerprint = 3DFF AA2F C10A A979 2FB9 A764 F145 4BB6 E8A6 8B1C uid Andrey Zonov <zont@FreeBSD.org> uid Andrey Zonov <andrey@zonov.org> sub 2048R/57FC2BD3 2012-08-17 [expires: 2016-08-17]
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 +Is2qlWoT4cI+VuljBbdprk4 =ElkT -----END PGP PUBLIC KEY BLOCK-----
<syuu@FreeBSD.org>
pub 2048R/43788F78 2012-11-21 Key fingerprint = 31CE 242E 6F4F F24F EEF4 D9BB 0890 2C5F 4378 8F78 uid Takuya ASADA <syuu@freebsd.org> sub 2048R/A87B0906 2012-11-21
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFCs6CQBCACri3OLkH5JVQCN2GylV62LuXCc7g2TfLf0q7XtmieJAwvtfxOl LdBDC8d/WAqUWVEW1eMWgvCJlgCPIFedG+GDBYPUFYsy1cUDALEi+QSS1Jozovs/ b3Rk7TIW7Fu2F9KQ7ivlEtPS1bjQHmhrkHxOloapWUSrP2IdIfllxKAN3BGas2+j hjkmSPmSe0FQBIOyEp/RHf8bJ4LtRa+NACjOZWydLft54hcHNbS6/ubHtHlJjMjm V+fbLfYZvWGV1R+7gnuUAVu6bqgY6Bc60gwHs9wcITXCSDAZv9CP7r6mazo4MTV6 auXYSiuec+rLNO10ndHuOqZPS0EKLExMJStNABEBAAG0H1Rha3V5YSBBU0FEQSA8 c3l1dUBmcmVlYnNkLm9yZz6JATgEEwECACIFAlCs6CQCGwMGCwkIBwMCBhUIAgkK CwQWAgMBAh4BAheAAAoJEAiQLF9DeI94mZkIAKOPCkQcK/XENDyZR9iZroMpg60K TXNR72JIymRrBlUgJXOgxJJDETOx3GjTSXql7CLxkdun3oCmatskN0vneMHCs6/M 3UP8UKwiA/6lk6cmg6vfXQ/IreqQyyV3inBN6fJMscsQrtB+pmw6CD8U1tiAkbBI ExlKGkQG7Qy5FzQ1meyUP9XvD9JhaDe+3sWPK60kcSpskrQgZ0y2yWgJxWOw4meS E0blTt+wyTFySbEraoY2ZoZP5y9vcMJoh0OKBzpTVi156RM87P4t3IjWNaDlGSJD uf5oVIhavgKYVPXu5+EmVTjLAFaNYc7C9lGGa7bOW1LlEt6EKcrReVaWPX25AQ0E UKzoJAEIAMWEiRDeAR5IkJmiRg0J1ORCbCFGbbENEqt2lahTAxuM5QAzjZ/StCos DeUydqy0/gYJ1zntyDGFNBEgBT4ZPcy1uFPMoTefG1RpYTBiw/gMTCcsFI8JzihY ShoAKJGw+jDBDhnYslAfrmYrOwyGykXep8SpmkigWAxnhZtyzbXCSgLcOGloj2AT uLo8DDIg7D3cxgX81U79UFsm3WZH2BaTi9dqhhtJanmmLpbxtJTDLZUEoR3iZwdE Myu1ziW5y+y3sfTVUgTH2sj1TNSF4vE1q2rr5qud+g5PlwA+05wNdaHLr3u7Y8qf 218W0fDXw3mMgwD3ryXvHDkEwqOIHzUAEQEAAYkBHwQYAQIACQUCUKzoJAIbDAAK CRAIkCxfQ3iPeHVhB/45lUQo04TLDaXYX+vw5pSFGmdOUUz+gCRstZ7X+6yeYRhC XquBBmiByiHle0obuxk3IBNtNVmoKwyYjicYr9YdRAhjr/ei/MzORryj2RZUTHra fm7o4B6E8T3tlM2gXJ1erdwZVVX7M1Tuxs6fM4ZZLfRlVwwQxgsW2KViZwe26a/h vV9Y3EYheFjrlUcV4sTWAJ6VbPoWrsTm81iQWrEo1Hq2zV+FbtGDuoAiYiLCzPo8 WP7/oZA62Ri5vOAdj1mD4tRWlDLwGDhwO/9eXdT6BwV808pVUi/6CwLWbCiRShRI xLcPUUM3uzQJpPwgiTPDxEvmS4lZR5m94smK/tE+ =7PcP -----END PGP PUBLIC KEY BLOCK-----
Ebben a szójegyzékben azok a fogalmak és rövidítések szerepelnek, amelyekkel a FreeBSD-s közösségen belül és a hozzá tartozó különböző leírásokban találkozhatunk.
Lásd: Access Control List
Lásd: Automatic Mount Daemon
Lásd: ACPI Machine Language
Lásd: ACPI Source Language
Olyan pszeudókód, amit egy ACPI szabvánnyal kompatibilis operációs rendszerben megtalálható virtuális géppel lehet értelmezni. Feladata a rendelkezésre álló hardveren az operációs rendszer felé dokumentált felület kialakítása.
Az a programozási nyelv, amiben az AML-kódok íródnak.
Egy objektumhoz, például egy állományhoz vagy hálózati eszközhöz tartozó engedélyeket tartalmazó felsorolás.
Az a specifikáció, aminek köszönhetően a hardver egy absztrakt felületet képes nyújtani az operációs rendszer számára. Ezen a felületen keresztül tudja az operációs rendszer elérni a rendelkezésre álló hardvert annak konkrét ismerete nélkül. Az ACPI a korábban az APM, PNPBIOS és a hozzájuk hasonló megoldások által szolgáltatott lehetőségeket igyekszik kiterjeszteni és felülmúlni. Ennek keretében lehetőséget ad többek közt az energiafogyasztás szabályozására, az energiatakarés mód aktiválására, az eszközök ki- és bekapcsolására stb.
Eljárások, protokollok és segédprogramok összesége, melyek egy vagy több programrész között írják le az általános összefüggéseket: hogyan, mikor és miért kell összedolgozniuk, illetve milyen adatokat osszanak meg egymás között vagy milyen adatokkal dolgozzanak.
Egy olyan API, amely lehetővé teszi az operációs rendszer számára, hogy a BIOS-szal együtt energiagazdálkodást tudjon megvalósítani. A legtöbb esetben azonban már az APM-et leváltotta a sokkal általánosabb és kidolgozottabb ACPI specifikáció.
Egy olyan démon, ami önműködően csatlakoztatja az állományrendszereket, amikor azokon valamilyen állományt vagy könyvtárat el akarunk érni.
Lásd: Base Address Register
Egy PCI eszköz címtartományának megadásáért felelős regiszterek.
A BIOS meghatározása némileg a környezetétől is függ. Egyesek szerint BIOS az a ROM chip, ami a szoftver és hardver közti kapcsolatot megteremtő alapvető rutinokat tartalmazza. Mások szerint viszont azok a chipen tárolt rutinok, amelyek a rendszer betöltéséért felelősek. De akadnak olyanok is, akik ilyenkor arra a képernyőre gondolnak, amin a rendszer betöltésének folymatát tudjuk beállítani. Noha a BIOS leginkább a PC típusú rendszerekre jellemző, más esetekben is találkozhatunk hasonlóval.
A névfeloldásért felelős DNS protokollok egyik implementációja.
A Kaliforniai Egyetem (Berkeley) számítógépes rendszerekkel foglalkozó kutatócsoportja (CSRG) ebben foglalta össze az AT&T 32V UNIX rendszerén végzett változtatásait és javításait. Maga a FreeBSD is ennek az egyik leszármazottja.
A “bikeshed building”, vagyis a “biciklitároló építés” az a jelenség, amikor egy egyszerűbb témához mindenki hozzá akar szólni, miközben egy sokkal bonyolultabb témával alig vagy egyáltalán nem foglalkoznak. Ennek kialakulásáról részletesebben a GYIK-ban lehet olvasni.
Lásd: Carrier Detect
Lásd: Classical IP over ATM
Lásd: Central Processing Unit
Lásd: Clear To Send
A kommunikációs csatorna létrejöttét jelző RS232C szabványú jel.
Másik nevén processzor. Lényegében ez a számítógép agya, ahol a különféle számítások történnek. Rengeteg különböző architektúrája és utasításkészlete lehet. Közülük a legismertebbek az Intel x86 és annak leszármazottai, valamint a Sun SPARC, PowerPC és Alpha.
A felhasználók hitelesítésére használt módszer, amely a kliens és a szerver közt megosztott titkos információkon alapszik.
A távoli rendszer számára a küldést engedélyező RS232C szabványú jel.
Lásd még: Request To Send.
Egy verziókezelő rendszer, aminek használatával egyszerre több változatot tudunk nyilvántartani és használni adott állományokból. A CVS segítségével képesek vagyunk egy vagy több változtatást kivonni, összefésülni és visszavonni, valamint nyomon követhetjük, hogy melyiküket ki, mikor és miért hajtotta végre.
Lásd: Debugger
Lásd: Data Encryption Standard
Lásd: Domain Name System
Lásd: Data Set Ready
Lásd: Data Terminal Ready
Az információ titkosítására szánt módszer, amelyet általában a UNIX-os jelszavak és crypt(3) funkció használ.
Ezt az RS232C szabványú jelet küldi egy modem a számítógépünknek vagy a terminálunknak, amikor készen áll az adatok fogadására és küldésére.
Lásd még: Data Terminal Ready.
Ezt az RS232C szabványú jelet küldi számítógépünk vagy a terminálunk a modemnek, amikor készen áll az adatok fogadására és küldésére.
A rendszermagban megtalálható interaktív nyomkövetési lehetőség, amin keresztül meg tudjuk vizsgálni rendszerünk aktuális állapotát. Leggyakrabban a rendszer összeomlásáért felelős körülmények elemzésében alkalmazzák.
Egy olyan ACPI táblázat, amely az alaprendszerről nyújt alapvető konfigurációs információkat.
Az internetes címek (pl. levelezes.valami.net) emberek és gépek által is olvasható formája közti leképezéséért felelős rendszer.
A számítógépek IP-címeinek szerveren keresztüli dinamikus kiosztásáért felelős protokoll. Az így keletkező cím alapú hozzárendelést “bérletnek” (“lease”) nevezzük.
Lásd: Extended COFF
Lásd: File Allocation Table
Lásd: File Transfer Protocol
A TCP felett implementált magasabb szintű protokollok családjának egyik tagja, aminek segítségével állományokat tudunk átmásolni egy TCP/IP-hálózaton keresztül.
Lásd: Graphical User Interface
Annak a kölcsönös kizárásért felelős megoldásnak (alvó (sleep) mutex-nek) a neve, ami a rendszermag erőforrásainak jelentős részét védi. Amikor még a számítógépek csupán néhány programot futtattak egyetlen hálózati kártyával és általában egyetlen processzoron, akkor még elegendő volt egy egyszerűbb zárolási mechanizmus használata, azonban napjainkban ez már egy elfogadhatatlanul szűk keresztmetszetet képez. A FreeBSD fejlesztői folyamatosan dolgoznak, hogy ezt olyan zárolásokkal váltsák fel, amelyek csak az egyes erőforrásokat védik. Ennek köszönhetően sokkal nagyobb fokú párhuzamosítás érthető el mind az egyprocesszoros mind pedig a többprocesszoros rendszerekben egyaránt.
Olyan rendszer, ahol a felhasználó és a számítógép grafikus megoldásokon keresztül érintkezik.
Lásd: HangUp
Honlapok előállítására használt jelölőnyelv.
Lásd: Input/Output
Lásd: Intel’s ASL compiler
Lásd: Internet Protocol
Lásd: IP Firewall
Lásd: IP Version 4
Lásd: IP Version 6
Az IP protokoll 4-es változata, ahol 32 biten adunk meg címeket. Ez a változat még napjainkban is széles körben alkalmazott, azonban lassanként felváltja az IPv6.
Lásd még: IP Version 6.
Az új IP protokoll. Azért alkották meg, mert az IPv4 által felkínált címtér már túlságosan kicsinek bizonyult. 128 bites címekkel dolgozik.
Az Intel által kifejlesztett fordítóprogram, amivel ASL-programokat lehet AML-kódra fordítani.
A levelező szervereken tárolt elektronikus levelek elérésére használt protokoll, aminek egyik fontos jellemzője, hogy az elolvasott leveleket a szerveren tartja és nem tölti le a levelező klienssel.
Lásd még: Post Office Protocol Version 3.
Csomagok átküldését leíró protokoll, amire egész internet épül. Eredetileg az Egyesült Államok Védelmi Minisztériuma számára készült, és a TCP/IP protokollkészlet egyik meghatározó eleme. Enélkül az internet nem nyerte volna el mai alakját. Részletesebb információkért ld. az RFC 791.
Egy olyan cég, ami lehetőséget kínál az internet elérésére.
A KAME japánul “teknőst” jelent, de informatikai körökben ezt gyakran a KAME projekttel azonosítják, amely az IPv6 implementációján dolgozik.
Lásd: Key Distribution Center
Lásd: Kernel Virtual Address
Lásd: Kilo Bits Per Second
Egy olyan módszer, aminek segítségével a FreeBSD rendszermag funkcionalitását anélkül tudjuk dinamikusan bővíteni, hogy a újra kellene indítanunk hozzá a rendszerünket.
A rendszermag által támogatott szálkezelési rendszer. Ennek pontosabb részleteit ld. a hozzá tartozó projekt honlapján.
A sávszélesség (vagyis egy adott idő alatt mennyi adatot vagyunk képesek átküldeni) meghatározására használt mérték. Itt a Kilo helyett még szerepelhet a Mega, Giga, Tera és így tovább.
Lásd: Local Area Network
Lásd: Lock Order Reversal
Lásd: Line Printer Daemon
Egy viszonylag kis környezetben, például irodában, otthon stb. használt hálózat.
A FreeBSD rendszermagja az erőforrások megfelelő zárolásával igyekszik megosztani azokat. A zárolási hibák keletkező holtpontok felderítésére a FreeBSD-CURRENT rendszermagokban található (de a kiadásokból már eltávolított) egy zárolásokat ellenőrző futás idejű rendszer, aminek a neve witness(4). (A witness(4) jelen pillanatban kissé még szigorú, ezért előfordulhat, hogy vakriasztást ad.) A tőle származó valós jelentésekben olvashatjuk, hogy “ha pórul jártunk volna, akkor most itt lett volna egy holtpont”.
Az ilyen hibákat általában gyorsan kijavítják, ezért mielőtt egy ilyen hibát beküldenénk, nézzünk szét a http://lists.FreeBSD.org/mailman/listinfo/freebsd-current címen és az észlelt LOR-ok honlapján.
Lásd: Mandatory Access Control
Lásd: Merge From Current
Lásd: Merge From Perforce
Lásd: Merge From Stable
Lásd: Multi-Level Security
Lásd: Message Of The Day
Lásd: Mail Transfer Agent
Lásd: Mail User Agent
A levelek továbbítására használt alkalmazás, melyek a BSD alaprendszerekben már régóta megtalálhatóak. Közülük manapság a Sendmail szerepel itt, de rajta kívül még több más MTA is létezik, mint például a postfix, qmail és az Exim.
Az elektronikus levelek megjelenítésére és írására alkalmas alkalmazás.
A -CURRENT ágból származó valamelyik funkcionalitás vagy módosítás beolvasztása egy másik ágba, ami a legtöbb esetben a -STABLE.
A Perforce repository-ból származó funkcionalitás vagy módosítás beolvasztása a -CURRENT ágba.
Lásd még: Perforce.
A FreeBSD fejlesztésének megszokott menete szerint egy változtatás először a -CURRENT ágba kerül be tesztelésre, majd csak ezt követően a -STABLE ágba. Esetenként azonban előfordul, hogy egy változtatás először a -STABLE ágba kerül, majd csak ezután a -CURRENT ágba.
Ezt a kifejezést használjuk abban az esetben is, amikor egy módosítást a -STABLE ágból olvasztunk be a biztonsági javításokat tartalmazó ágba.
Lásd még: Merge From Current.
Általában a bejelentkezéskor megjelenő üzenet, amiben valamilyen információt továbbítunk a rendszer felhasználói számára.
Lásd: Project Evil
Lásd: Network File System
Lásd: Network Time Protocol
Egy olyan technikai megoldás, amelynek használata során az átjárón keresztül haladó IP-csomagok információt módosítják, és ezáltal lehetővé teszik az átjáró mögött levő gépek számára, hogy hatékonyan osztozzanak egyetlen IP-címen.
A Microsoft által kidolgozott állományrendszer, ami általuk fejlesztett “új technológiájú” operációs rendszerekben érhető el, tehát például a Windows 2000, Windows NT és Windows XP rendszerekben.
A számítógépek óráinak hálózaton keresztüli egyeztetésének egyik módszere.
Lásd: Overtaken By Events
Lásd: On-Demand Mail Relay
Lásd: Operating System
Programok, függvénykönyvtárak és segédprogramok összesége, amelyeken keresztül hozzá tudunk férni a számítógépben található hardverek által felkínált erőforrásokhoz. Napjaink operációs rendszerei egészen az egy időben egyetlen programot futtatni és egyetlen eszközt elérni képes rendszerektől a többfelhasználós, többfeladatos és egyszerre több programot is futtatni tudó, többezer, egyenként különböző alkalmazásokat futtató felhasználót kiszolgáló rendszerekig terjedhet.
Olyan javasolt változtatásra (hibajelentésre vagy egy új funkció igénylésére) utal, ami a legfrissebb változtatások, például a FreeBSD hálózati szabványainak megváltozása, az adott hardver elavulása stb. következtében már nem lényeges vagy nem érvényes.
Lásd: Perforce
Lásd: Personal Computer
Lásd: Portable Document Format
Lásd: Process ID
Lásd: Post Office Protocol
Lásd: Point-to-Point Protocol
Lásd: PPP over ATM
Lásd: PPP over Ethernet
Lásd: Problem Report
A Perforce Software által fejlesztett forráskódkezelő termék, ami a CVS-nél jóval több lehetőséget kínál. Annak ellenére, hogy nem nyílt forráskódú, használata ingyenes olyan nyílt forráskódú projektek számára, mint amilyen a FreeBSD.
Egyes FreeBSD fejlesztők a Perforce repository-ban dolgoznak olyan kódokkal, amelyek használata a -CURRENT ágban túlságosan kockázatos lenne.
Egy olyan módszer, aminek segítségével egészen 64 GB-nyi központi memóriát tudunk elérni azokon a rendszereken, amelyek fizikailag csak 32 bites címtérrel rendelkeznek (és ezáltal a PAE nélkül csak 4 GB memóriát képesek használni).
Egy misztikus eredetű fejrevaló, ami leginkább a szamárfüles sapkához hasonlítható, és minden olyan FreeBSD committer jutalma, aki miatt nem fordul a rendszer, visszafele halad a verziók számozása, vagy bármilyen egyéb pusztítást végez a források között. Az ügyetlenebb committerek szép számmal be tudnak ilyeneket gyűjteni. Többnyire (csak?) humoros értelemben használják.
Lásd még: Post Office Protocol Version 3.
A levelező szerverken tárolt elektronikus levelek elérésére használatos protokoll, aminek egyik fontos jellemzője, hogy az elolvasandó leveleket a levelező kliens letölti, nem pedig a szerveren hagyja.
Lásd még: Internet Message Access Protocol.
A FreeBSD fejlődése során igyekezni kell elkerülni a felhasználók elé tárt hirtelen változtatásokat. Például az /etc/defaults/rc.conf állományban található, rendszerindításért felelős változók átrendezése sérti “a legkisebb meglepetés elvét” (POLA). A fejlesztőknek tehát figyelembe kell venniük ezt az elvet, amikor a felhasználók számára is észlelhető változtatásokat hoznak létre.
A FreeBSD forrásában vagy dokumentációjában talált hiba leírása. Erről bővebben ld. a FreeBSD hibajelentések írása című cikket (angolul).
A rendszerben egy adott futó programot egyértelműen azonosító szám, amivel hivatkozni tudunk rá és műveleteket végrehajtani vele.
A Bill Paul által készített NDISulator munkacíme, amivel a szerző elsősorban arra szeretett volna (filozófiai szemszögből) utalni, hogy milyen szörnyűséget kellett művelnie. Az NDISulator egy olyan speciális kompatibilitási modul, aminek révén a FreeBSD/i386 változatában képesek vagyunk a Microsoft Windows;trade; NDIS miniport hálózati meghajtóit. Általában csak ez az egyetlen módja a zárt forráskódú meghajtókkal rendelkező kártyák használatának. Ld. src/sys/compat/ndis/subr_ndis.c.
Lásd: Router Advertisement
Lásd: Random Access Memory
Lásd: Received Data
Lásd: Request For Comments
Lásd: Remote Procedure Call
Lásd: Request To Send
A Revision Control System (RCS) azon egyik legrégebbi szoftverek egyike, amelyek egyszerű állományok esetén megvalósítanak valamilyen “verziókövetést”. Segítségével állományok különböző változatait tudjuk tárolni, visszatölteni, archiválni, naplózni, azonosítani és összefésülni. Az RCS több egymással együttműködő apró segédprogram összesége. Tudása több tekintetben is alulmarad a mai modern verziókövető rendszerekéhez, mint például a CVS-hez vagy a Subversionhöz képest, azonban kevés állomány esetén nagyon egyszerűen telepíthető, konfigurálható és használható. Az RCS valamilyen változata minden fontosabb UNIX-szerű operációs rendszerben megtalálható.
Az az RS232C szabványú tű vagy vezeték, amin keresztül az adat érkezik.
Lásd még: Transmitted Data.
A soros vonali eszközök közti kommunikációt leíró szabvány.
Olyan megközelítés a processzorok tervezésében, ahol a hardver által végezhető műveletek ugyan leegyszerűsítettek, de a lehető legjobban általánosítottak. Ezzel csökkenthető az energiafogyasztás, kevesebb tranzisztorra van szükség és egyes esetekben akár nagyobb teljesítményt és megnövekedett kódsűrűséget is eredményezhet. RISC processzorok például az Alpha, SPARC, ARM és PowerPC.
Lásd: Repository Copy
Állományok közvetlen másolása a CVS repository-n belül.
Repocopy nélkül a committer csak úgy tudná a repository egyik részéből a másikra áthelyezni az állományokat, ha először a cvs add paranccsal felvenné ezeket az új helyre, majd a cvs rm paranccsal törölné a régi helyről.
Ennek a megoldásnak egyik hátránya, hogy az állományokhoz tartozó előzmények (tehát a CVS naplókban szerepő bejegyzések) ilyenkor nem másolódnak át az új helyre. Mivel a FreeBSD projekt ezeket viszont nagyon fontosnak tartja, ezért ehelyett gyakran a “repository copy” módszerét alkalmazzák. Ennek folyamán a repository-k karbantartásáért felelős tagok (repository meisterek) fogják a cvs(1) használata helyett átmásolni az állományokat, közvetlenül a repository-n belül.
Az internet működéséhez kapcsolódó szabványok, protokollok és egyebek leírását tartalmazó dokumentumok. Ld. www.rfc-editor.org.
Gyakran viszont abban az értelemben is használják, amikor valaki szeretné kikérni a véleményét egy általa javasolt módosításról.
Egy RS232C szabványú jel, amivel megkérjük a távoli rendszert az adatok átküldésének megkezdésére.
Lásd még: Clear To Send.
Lásd: System Control Interrupt
Lásd: Signal Ground
Lásd: Server Message Block
Lásd: Symmetric MultiProcessor
Lásd: SMTP Authentication
Lásd: Secure Shell
Lásd: Suspend To RAM
Lásd: Subversion
Egy RS232 szabványú tű vagy vezeték, ami a jelek számára a referencia földet adja.
A Subversion egy CVS-hez hasonló verziókezelő rendszer, némileg bővebb tudással.
Lásd még: Concurrent Versions System.
Lásd: Transmitted Data
Lásd: Trivial FTP
Lásd: Ticket-Granting Ticket
Lásd: Time Stamp Counter
A modern Pentium processzorokban megtalálható precíz belső számláló, amely a mag frekvenciájával érkező órajeleket számolja.
(Például) Az IP protokoll felett ülő protokoll, amely garantálja, hogy a csomagok megbízható, sorbarendezett módon jutnak el a céljukba.
Az IP protokoll és felette futó TCP protokoll kombinációjára utaló fogalom. Az internet legnagyobb része a TCP/IP protokollon keresztül működik.
Egy RS232C szabványú tű vagy vezeték, amin keresztül az adat átküldésre kerül.
Lásd még: Received Data.
Lásd: User Datagram Protocol
Lásd: User ID
Lásd: Uniform Resource Locator
Lásd: Universal Serial Bus
Az interneten található erőforrások, például dokumentumok helyének meghatározására és azonosítására alkalmas módszer.
Az eredeti UNIX állományrendszer, amelyet gyakran Berkeley Fast File Systemnek neveznek.
Az UFS1 FreeBSD 5-CURRENT változatában megjelent kiegészítése. Az UFS2 különböző kiegészítéseket, és 64 bites blokkmutatókat tartalmaz (így lehetővé teszi az 1 TB-os határ átlépését), valamint kibővített állománytárolást tesz lehetővé.
Különféle számítógépes perifériákat egy univerzális interfészen keresztül összekapcsoló hardveres szabvány.
A számítógép minden egyes felhasználója számára kiosztott egyedi azonosítószám, aminek segítségével a az erőforrások és engedélyek egyértelműen hozzájuk kapcsolhatóak.
TCP/IP hálózatokban adatkommunikációra használható egyszerű, nem megbízható, datagram alapú protokoll. Az UDP nem tartalmaz a TCP-hez hasonló hibaérzékelést és -javítást.
Lásd: Virtual Private Network
Helyi, például egy vállalati hálózat, valamilyen publikus hírközlési eszközön, például interneten keresztüli távoli elérésére alkalmas módszer.
Ez a könyv “A FreeBSD Dokumentációs Projekt” több száz résztvevőjének együttes munkájával jött létre. A forrása SGML-ben készül a DocBook DTD alapján, és ebből számos különböző formátumba kerül átalakításra a Jade, a nyílt forráskódú DSSSL engine segítségével. Egy további réteg hozzáadásával Norm Walsh DSSSL stíluslapjait használtuk fel a Jade vezérlésére. A dokumentum nyomtatott változata nem jöhetett volna létre Donald Knuth TeX betűszedő rendszere, illetve Leslie Lamport LaTeX, valamint Sebastian Rahtz JadeTeX makrócsomagja nélkül.
[1] | Erre utal pontosan az i386 jelzés. Még abban az esetben is az i386 kiírást fogjuk látni, ha a FreeBSD-t konkrétan nem is az Intel 386-os processzorán futtatjuk. Itt ugyanis nem a processzorunk típusát, hanem annak “architektúráját” láthatjuk. |
[2] | A rendszerindító szkriptek olyan programok, amelyek a FreeBSD indulása során maguktól lefutnak. Legfontosabb feladatuk elvégezni a többi program futtatásához szükséges beállításokat, valamint elindítani a háttérben futtatandó, hasznos munkát végző szolgáltatásokat. |
[3] | A FreeBSD konzol- és billentyűzetmeghajtóinak teljes, pusztán műszaki és precíz leírása a syscons(4), atkbd(4), vidcontrol(1) és kbdcontrol(1) man oldalakon olvasható. Itt most nem bocsátkozunk részletekbe, azonban a téma iránt érdeklődő olvasóknak mindig érdemes fellapozniuk a kapcsolódó man oldalakat, ahol megtalálhatják az említett eszközök részletesebb és bővebb leírását. |
[4] | Ez azért nem teljesen igaz. Van néhány olyan tevékenység, ami nem szakítható meg. Ilyen például az, amikor a program egy másik számítógépen található állományt próbál olvasni, miközben valamilyen ok (kikapcsolás, hálózati hiba) folytán elveszti vele a kapcsolatot. Ekkor a program futása “megszakíthatatlan”. Majd amikor a program feladja a próbálkozást (általában két perc után), akkor következik be a tényleges leállítása. |
[5] | Az önszabályozó algoritmus a maxusers értékét a rendszerben található memóriának megfelelően legalább 32-re, legfeljebb 384-re állítja. |
[6] | Hacsak nem kapcsolunk hozzá több terminált. De ennek a leírását a 26 fejezetre tartogatjuk. |
[7] | Lehetséges akár 4294967295-ig is számozni az UID/GID értékét, de az ekkora nagyságú azonosítók komoly gondokat okozhatnak az olyan szoftvereknek, melyek bizonyos feltételezésekkel élnek az értékeikkel kapcsolatban. |
[8] | FreeBSD alatt a bejelentkezéshez használt szabványos jelszavak akár 128 karakteresek is lehetnek. |
[9] | Más feltételek mellett másmilyen hibák keletkezhetnek. Például, ha egy olyan objektumot próbálunk újracímkézni, amely nincs a felhasználó birtokában, esetleg nem is létezik vagy írásvédett. Adódhat, hogy a kötelező házirend az állomány, a program, vagy az új címkeérték tulajdonságai miatt nem fogja lehetővé tenni egy futó program számára egy állomány újracímkézését. Nézzük erre egy példát: egy kevésbé sértetlen felhasználó megpróbálja megváltoztatni egy sokkal sértetlenebb állomány címkéjét. Vagy egy kevésbé sértetlen felhasználó sokkal sértetlenebbre akarja állítani egy kevésbé sértetlen állomány címkéjét. |
[10] | A könnyen megjegyezhető ám mégis biztonságos jelmondatok megválasztásához a Diceware Passphrase honlapján találunk egy kis segítséget (angolul). |
[11] | A RAID jelentése: Olcsó lemezek hibatűrő tömbje (Redundant Array of Inexpensive Disks). Különféle típusú hibatűrési megoldásokat vonultat fel, habár az eredeti elnevezés félrevezető lehet, mivel redundanciát nem tartalmaz. |
[12] | Ez azért nem teljesen igaz. A régebbi FreeBSD kiadásokat ugyan nem támogathatjuk a végtelenségig, de általában így is több évig foglalkozunk velük. A FreeBSD régebbi kiadásaival kapcsolatos jelenleg érvényes biztonsági házirend részletes bemutatása a http://www.FreeBSD.org/security/ oldalon olvasható (angolul). |
[13] |
Ha kérdése van a FreeBSD-vel kapcsolatban, a következő
címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <gabor@FreeBSD.org>.