vázlat Bányász Gábor Kardos Gergely v

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "vázlat Bányász Gábor Kardos Gergely v0.6 2005.04.29."

Átírás

1 LINUX ALAPÚ HÁLÓZATOK vázlat Bányász Gábor Kardos Gergely v

2 Tartalomjegyzék LINUX ALAPÚ HÁLÓZATOK BEVEZETÉS INSTALLÁLÁS A LINUX RENDSZERMAG ÁTTEKINTÉSE BELÉPÉS Virtuális konzolok Grafikus felület A JELSZÓ BEÁLLÍTÁSA A LEGFONTOSABB PARANCS: MAN A PARANCS FORMÁTUM GYAKRAN HASZNÁLT PARANCSOK SZÖVEGSZERKESZTŐK vi pico joe KDE MEGISMERÉSE ÁLLOMÁNY TÍPUSOK HIERARCHIKUS ÁLLOMÁNYRENDSZER A KÖNYVTÁRFA ÁTTEKINTÉSE LINKEK AZ ESZKÖZ ÁLLOMÁNYOK FORMATTÁLÁS, PARTÍCIONÁLÁS, ÁLLOMÁNYRENDSZEREK ÁLLOMÁNYRENDSZEREK ÖSSZEKAPCSOLÁSA ÉS LEVÁLASZTÁSA (MOUNT) FÁJLRENDSZER TÍPUSOK Minix Extended filesystems (ext, ext2, ext3) Journaling állományrendszerek ReiserFS Más operációs rendszerek támogatása A CD állományrendszere: iso Hálózati állományrendszerek Az állományrendszer paraméter használata Fájlrendszer létrehozása PARTÍCIÓK LÉTREHOZÁSA, KEZELÉSE PARTÍCIÓ LÉTREHOZÁSA, FORMÁZÁSA, FELCSATOLÁSA A LINUX ÁLLOMÁNYRENDSZER MEGJAVÍTÁSA A RENDSZER PARTÍCIÓK PARAMÉTEREINEK MEGADÁSA EXT2 ÁLLOMÁNYRENDSZER KONVERZIÓJA EXT3-RA A SWAP swap partíció hozzáadása a rendszerhez swap állomány hozzáadása a rendszerhez swap eltávolítása FELHASZNÁLÓK ADMINISZTRÁCIÓJA A felhasználói azonosítók Felhasználók létrehozása... 27

3 3.1.3 A felhasználó letiltása A felhasználó törlése Csoportok adminisztrációja Az állományrendszer jogosultságai Az ext2/ext3 állományrendszer további jogosultsága QUOTA A quota bekapcsolása az állományrendszerre A quota táblázatok létrehozása A quota rendszer bekapcsolása A quota értékek beállítása A türelmi idő beállítása A PARANCSÉRTELMEZŐ (SHELL) Parancssor értelmezés A shell beépített parancsai Állománynév-helyettesítés Standard input/output átirányítás Csővezeték Parancshelyettesítés Parancssorozatok Szinkron és aszinkron folyamatok Csoportosítás A Bash shell további funkciói SEGÉDPROGRAMOK ÉS SZŰRŐK A find parancs A head és tail parancsok A sort parancs A uniq parancs A cmp és diff parancsok A grep parancs Egyszerű reguláris kifejezések FOLYAMATOK A folyamatok monitorozása Háttérfolyamatok Kommunikáció a folyamatokkal, megszüntetés Folyamat vezérlése a Bash shell-ben Prioritás állítás CHROOT A RENDSZER ELINDULÁSA LILO Loadlin GRUB Az inittab állomány Shutdown Elfelejtettük a jelszót, nem probléma, törjük fel! A futásszintek szolgáltatásai AUTOMATIZÁLT PROGRAMINDÍTÁS Cron At Batch LOG MECHANIZMUS syslog Log állományok Logrotate... 77

4 RPM CSOMAGKEZELÉS Csomag telepítése és eltávolítása Frissítés Információk lekérdezése Csomagok fordítása, készítése X WINDOW XWindow architektúra Ablakkezelők Kliens alkalmazások Desktop Environment Az X elindítása Kliens futtatása távoli gépen KDE Grafikus konfigurációs eszközök TCP/IP HÁLÓZATOK HÁLÓZATI ESZKÖZÖK A HÁLÓZATI INTERFÉSZEK KONFIGURÁLÁSA RedHat konfigurációs scriptek Az ethernet interfész IPSec interfész Alias és Clone interfész Dialup interfész Egyéb interfészek Interfész kontroll scriptek ÚTVÁLASZTÁS NÉV LEKÉPEZÉS NETWORK CONFIGURATION PROGRAM HÁLÓZATI SZOLGÁLTATÁSOK AUTOMATIKUS INDÍTÁSA TCP WRAPPER TÁVOLI SHELL ALAPÚ ELÉRÉS ÁLLOMÁNYOK ÁTVITELE ÁLLOMÁNYOK MEGOSZTÁSA FTP NFS SAMBA A működő szerver vizsgálata A konfiguráció Grafikus konfigurálás LEVELEZÉS SMTP POP IMAP Sendmail Procmail SPAM szűrés Dovecot WEB SZERVER

5 9.1.1 Globális beállítások A fő szerver szekció Virtuális szerverek Védett könyvtár létrehozása SSL Grafikus konfigurációs eszköz SQUIRRELMAIL MAILMAN HÁLÓZAT DIAGNOSZTIKA Ping Traceroute Lft Netstat Nmap Tcpdump és Ethereal Whois DNS DHCP MRTG SNORT Sniffer mód Csomag log IDS mód Snort installálás CERTIFICATE AUTHORITY A valós élet OpenSSL Az openssl.cnf állomány A CA segédprogram A Certificate Authority létrehozása A certificate lecsupaszítása A szöveges információk megtekintése Tanúsítványok létrehozása és aláírása A jelszó eltávolítása A tanúsítvány visszavonása A tanúsítvány megújítása PAM Konfigurációs állományok A konfigurációs állományok szintaktikája Példa konfigurációs állomány Konzol jogosultságok További beállítások KERNEL FORDÍTÁS A kernel forrás leszedése és kicsomagolása Konfigurációs felületek és a config file A kernel és a modulok fordítása Az NTFS kernel modul utólagos fordítása RENDSZER VISSZAÁLLÍTÁS Tipikus problémák Boot floppy készítése

6 Rescue rendszer Single és emergency mód

7 Bevezetés Linux Programozás könyv 1. fejezet. 1.2 Installálás 1.3 A Linux rendszermag áttekintése Az installálás alatt a Linux Programozás könyv 2. fejezetének tömör kivonata. 1.4 Belépés A szokásos bejelentkezés nem tér el a más rendszereknél is használt egyszerű felhasználói név - jelszó alapú azonosítástól. Azonban általában a Linux rendszerek egyszerre két felületen is nyújtanak a felhasználó felé. Egyrészt a szöveges, virtuális konzolokat, másrészt egy grafikus felületet (X window). 1 Mivel a Linux nagymértékben konfigurálható, ezért az egyes rendszereknél a beállítások eltérhetnek. Mi a disztribúciók által általánosan használtakat tekintjük most át Virtuális konzolok A terminálok használata a korai időkre vezethető vissza. Eredetileg a Unix nagy számítógépek tipikus kezelői felületei a soros terminálok voltak, amelyek egyszerű karakter bevitelt, és a válasz karakterek megjelenítését tették lehetővé. Ez az idők folyamán fejlődött, és a terminál karakterek segítségével barátságosabb felületet nyújtottak. A személyi számítógépek, illetve a hálózatok fejlődése révén a soros terminálok használata háttérbe szorult, azonban egyszerűségük, uniformitásuk, elterjedtségük révén virtuális terminálokként tovább élnek. A Linux rendszerek a konzolon általában egyszerre 6 ilyen virtuális terminált szimulálnak. Ezek között az ALT + F1-F6 gombokkal váltogathatunk. (Grafikus módról történő átváltás esetén CTRL + ALT + F1-F6.) Mindegyik egy teljes értékű szöveges terminál. Külön-külön mindegyiken bejelentkezhetünk valamely felhasználóként, és párhuzamosan dolgozhatunk. A később tárgyalt hálózaton keresztüli bejelentkezés esetén ugyanilyen szöveges terminál felületet kapunk. Egyes célrendszereknél grafikus kezelői felületet nem is installálnak, 1 A Linux rendszerek támogatják a hagyományos, soros portos terminálokat is, azonban a beágyazott rendszerek kivételével ezek használata manapság már nem tipikus.

8 8 mivel az csak az erőforrások pazarlása lenne. Ezért a szöveges felület kezelésének elsajátítása egy adminisztrátor számára alapvető. 1. Lépjünk be: Red Hat Linux release 9 Kernel on an i686 localhost login: <név> password: <jelszó> 2. Kipróbálhatunk néhány parancsot: - pwd - aktuális könyvtár - ls - az aktuális könyvtár tartalma - echo - a parancs után írt paramétert kiírja - exit - kilépés Grafikus felület A rendszer indulásakor manapság elsőként a grafikus felülettel találjuk magunkat szembe. Azonban a virtuális konzolok használata után is visszakapcsolhatunk ide az ALT + F7 segítségével. Belépés után egy grafikus ablakos felülettel találjuk magunkat szembe (más modern operációs rendszerekhez hasonlóan). Linuxnál ez a felület változatos lehet az aktuális ablakozó rendszertől függően. Jelenleg a legelterjedtebbek a KDE és a Gnome. Ezeknél a felületeknél, a más rendszereknél megszokott mechanizmusok ugyancsak használhatóak. Kisebb konfigurációk után a működést teljesen az általunk megszokott rendszerhez igazíthatjuk. A grafikus felületeken is elérhetjük a terminál emulációt. Ezt az xterm, kterm, stb. programok teszik lehetővé. Így a terminál parancsokat itt is használhatjuk. 1.5 A jelszó beállítása Unix rendszereknél a jelszót a passwd parancs segítségével módosíthatjuk. A felhasználók csak a saját jelszavukat módosíthatják. Ehhez meg kell adniuk a régi jelszót (hogy egy magára hagyott terminálnál mások ne írhassák át), illetve kétszer az új jelszót. 2 Rendszergazdaként bármelyik felhasználó jelszavát módosíthatjuk. Ilyenkor a passwd <név> szintaxis a használatos. 2 A rendszer a beállításától függően tesztelheti a megadott új jelszót és visszautasíthatja, ha túl gyengének találja. Linux alatt a legelterjedtebb a cracklib könyvtár alkalmazása, amely különböző szempontokból teszteli a megadott jelszót, illetve összehasonlítja a szó adatbázisával.

9 9 1.6 A legfontosabb parancs: man A Linux (és Unix) elektronikus segítség rendszerét a manuál oldalak adják. Ezeket az oldalakat a man paranccsal érhetjük el. Minden, a rendszerben található parancsról, segédprogramról, de még a függvényekről is az alábbi módon kérhetünk segítséget. man <parancs> Magáról a man parancsról is kaphatunk információt az alábbi módon: man man Nézzük meg a man echo parancs által adott manuált! Vizsgáljuk meg milyen részekre oszlik! A leírások 8 fejezetre (kötetre) oszlanak: 1. Általánosan használható programok 2. Rendszerhívások 3. Felhasználói szintű könyvtári függvények 4. Speciális állományok 5. Állományformátumok 6. Játékok 7. Különféle leírások 8. A rendszer karbantartásához szükséges információk Több fejezetben is lehetnek azonos nevű leírások. Pl. lehet azonos nevű program és rendszerfüggvény is. Ilyenkor az egyértelműség érdekében a fejezet számát is meg kell adni: man <fejezet> <parancs> Próbáljuk ki a man printf és a man 3 printf parancsokat! Kulcsszókra is kereshetünk: man k <kulcsszó> Próbáljuk ki a man k reset parancsot! 1.7 A parancs formátum A Linux parancsok a következő formátumot használják: parancs opció(k) argumentum(ok) A sor elején áll a parancs, vagy programnév. Ezt helyközzel elválasztva követik az opciók. Az opciók - jellel kezdődnek. Több opció is állhat egy - jel mögött, vagy

10 10 megadhatjuk őket külön - -el helyközökkel elválasztva. Időnként használatos a dupla kötőjel használata is. Az opciókat követik az argumentumok, szintén helyközzel elválasztva. Az argumentumok száma és sorrendje a parancstól függ. Például: ls -l /tmp 1.8 Gyakran használt parancsok Linux alatt a leggyakrabban a következő, egyszerű parancsokkal találkozhatunk: Fájlrendszer parancsok: - cd Könyvtárváltás. - cmp Bináris állományok összehasonlítása. - cp Állományok másolása. - dd Állományok konvertálása és másolása. - diff Szöveges állományok összehasonlítása. - du Lemezhasználat összegzése. - find Állományok keresése - ls Könyvtár tartalmának listázása. - mkdir Új könyvtár létrehozása. - mv Állományok átnevezése vagy mozgatása. - pwd A munkakönyvtár elérési útjának kiírása. - rm Állományok törlése. - rmdir Könyvtárak törlése. Szöveges állományok megtekintése: - cat Állományok kiírása, összefűzése, esetleg létrehozása. - less Állományok megjelenítése. Görgethetjük, lapozhatjuk az állományt, és kereshetünk is benne. - more Egyszerű program, amely a szöveges állományt oldalakra tördelve jeleníti meg. 1.9 Szövegszerkesztők A Linux története során az alábbi eszközök terjedtek el: vi A vi egy egyszerű szövegszerkesztő. Kezelését leginkább a gépelni tudók igényeihez alakították. A parancskészletét úgy állították össze, hogy a lehető legkevesebb kézmozgással használható legyen.

11 11 Azonban egy tapasztalatlan felhasználó számára kezelése meglehetősen bonyolult lehet, ezért népszerűsége az utóbbi időben erősen megcsappant pico A pico egy egyszerű képernyő orientált szövegszerkesztő. Általában minden Linux rendszeren megtalálható. A pine levelező csomag része. Elterjedten használják a kisebb szövegek gyors módosítására. Komolyabb feladatokra nem ajánlott. Ezekben az esetekben alkalmasabb a következő részben tárgyalt joe vagy egy a feladatnak megfelelően specializálódott editor. Ábra 1.1A pico felülete A program parancsai folyamatosan láthatóak a képernyő alján. A "^" jel azt jelenti, hogy a billentyűt a <ctrl> gomb nyomva tartása mellett kell használni. Ha ez esetleg a terminál típusa miatt nem működne, akkor a dupla ESC gombnyomást is alkalmazhatjuk helyette. Főbb funkciói: - Paragrafusrendezés - Paragrafusoknak tekinti az üres sorokkal elválasztott részeket. - Keresés - A szövegkeresés nem case szenzitív. A keresés az aktuális kurzor pozíciótól kezdődik. - Blokk "cut and paste" - Blokk műveleteket a kijelölés (<ctrl>-^), a delete (<ctrl>-k), és undelete (<ctrl>-u) parancsokkal végezhetünk. Kreatív használat esetén mozgathatunk, másolhatunk, vagy törölhetünk részeket. - Helyesírás ellenőrző - A helyesírás ellenőrzés megkeresi az elgépeléseket. Más helyesírás ellenőrző programokat is használhat. Ebben az esetben a SPELL környezeti változóban kell megadni azt.

12 12 Parancsai: Billentyű kombináció Parancs <ctrl>-g Segítség <ctrl>-x Kilépés (módosítás esetén rákérdez a mentésre) <ctrl>-o Az állomány kiírása <ctrl>-j Rendezés <ctrl>-r Állomány beolvasása és beillesztése a szerkesztett állományba <ctrl>-w Szó keresése <ctrl>-y Előző oldal <ctrl>-v Következő oldal <ctrl>-k Szövegrész kivágása <ctrl>-u Az utoljára kivágott rész beillesztése az adott kurzor pozícióra. (Többször is vissza lehet illeszteni, vagyis másolni lehet vele.) <ctrl>-c Aktuális kurzor pozíció <ctrl>-t Helyesírás ellenőrzés joe A joe egy elterjedten használt szövegszerkesztő. Komolyabb feladatokra is alkalmas, mint a pico. Egyszerre több állományt is megnyithatunk különböző opciókkal. Ábra 1.2 A joe felülete

13 13 Komolyságát a parancsok számából is láthatjuk, amelyek leírását a <ctrl>-k-h gombokkal hozhatunk elő és tüntethetünk el. Itt is "^" jel azt jelenti, hogy a billentyűket a ctrl gomb nyomva tartása mellett kell használni. Mindazokra a funkciókra képes, amelyekre a pico és még sok továbbira is. Gyakrabban használt parancsok: Billentyűkombináció <ctrl>-kf <ctrl>-l <ctrl>-kb <ctrl>-kk <ctrl>-km <ctrl>-kc <ctrl>-ky <ctrl>-y <ctrl>-_ <ctrl>-kd <ctrl>-kx <ctrl>-c Parancs Szöveg keresése Ismételt keresés Blokk elejének kijelölése Blokk végének kijelölése Blokk mozgatása Blokk másolása Blokk törlése Sor törlése Változtatás visszaléptetése Mentés Kilépés mentéssel Kilépés mentés nélkül 1.10 KDE megismerése A KDE környezet egy barátságos grafikus kezelői felülete nyújt a Linux-ok számára. Felülete nagyban hasonlít az MS Windows-nál megszokotthoz, így a felhasználóknak nem jelent komoly nehézséget a kezelésének elsajátítása. Az oktató segítségével ismerkedjünk meg a KDE használatával!

14 Állomány típusok A Linux fájlrendszerében a következő állománytípusokat különböztetjük meg: Egyszerű állomány Az egyszerű állományok azok, amelyekre először gondolnánk az állomány szó hallatán, vagyis bájtok sorozata, adatok, program, stb. A Linux minden állományt egyszerűen byte-ok véletlenszerűen címezhető szekvenciájának tekinti. A rendszer eltakarja az állományt tároló fizikai eszköz tulajdonságait. Az állomány mérete az általa tartalmazott byte-ok számával azonos. Könyvtár A könyvtár speciális állomány, amely olyan információkat tartalmaz, amire a rendszernek szüksége van az állományok elérésére. A régi Unix rendszerekben az implementációk megengedték, hogy közvetlenül, állományként kezeljük a könyvtárakat, és megnézzük a tartalmukat. A Linux programok ezzel szemben hibával térnek vissza, ha ilyesmivel próbálkozunk. (Leszámítva a less parancsot, amely a könyvtárról egy olyan listát ad vissza, mintha az ls l parancsot használtuk volna. Eszközök A legtöbb fizikai eszköz a Unix rendszereken, mint állomány jelenik meg. Ez azt jelenti, hogy ezekre az eszközökre állomány nevekkel hivatkozhatunk, és ugyanúgy kezelhetjük őket, mint a közönséges állományokat. Írhatjuk, olvashatjuk, azonban ezeket a műveleteket természetesen az adott eszközre értelmezhető műveletre képezi le a kernel. (Például egy hangkártya eszköz olvasása a hang bedigitalizálását jelenti, az írása pedig a hang állomány lejátszását.) Két eszköztípust különböztetünk meg: blokk és karakter típusú eszközök. A blokkos eszköz állomány egy olyan hardver eszközt reprezentál, amelyet nem olvashatunk bájtonként, csak bájtok blokkjaiként. A blokkos eszközök leggyakrabban háttértárak, és fájlrendszert tartalmaznak. A karakteres eszköz bájtonként olvasható. A modemek, terminálok, printerek, hangkártyák, és az egér mind-mind karakteres eszköz. Tradicionálisan az eszköz leíró speciális állományok a /dev könyvtárban találhatóak. Szimbolikus link A szimbolikus link (röviden symlink) egy speciális állomány, amely egy másik állomány elérési információit tartalmazza. Amikor megnyitjuk, a rendszer érzékeli, hogy szimbolikus link, kiolvassa az értékét, és megnyitja a hivatkozott állományt. Ezt a műveletet a szimbolikus link követésének hívjuk. A linkekre és használatukra még később visszatérünk.

15 15 Csővezeték (pipe) és socket állományok A csővezeték és a socket állományok a Unix két egyszerű IPC (Inter Process Communication, folyamatok közötti kommunikáció) mechanizmusát alkotják. Speciális állományok, amelyek egy kommunikációs csatornát írnak le a memóriában. 2.2 Hierarchikus állományrendszer A Linux operációs rendszernél egy kitüntetett alap állományrendszer van (root partíció), amely a merevlemezen helyezkedik el. Ez az állományrendszer tartalmazza a gyökér könyvtárat. A gyökér katalógus több alkatalógust tartalmaz, amelyek további alkatalógusokat tartalmaznak. Így egy hierarchikus fa struktúra alakul ki. Az alkatalógusok nevének elválasztására a / jel szolgál. Az állománynevekre az egyetlen megkötés az, hogy a / jelet nem tartalmazhatják (illetve a különböző implementációknál eltérő megkötések vannak az állománynév hosszára). További merevlemez partíciókat, és egyéb tároló eszközöket (floppy, CDROM, memóriakártyák) hozzá kell fűznünk ehhez a fához (mount). Így a könyvtárfában az adott csomópont alatt található az eszköz tartalma. 3 Ezzel a módszerrel a programok számára teljesen átlátszó módon oldható meg a könyvtárstruktúra széttördelése az egyes háttértárakra. A könyvtárakban a. karakterrel kezdődő bejegyzések rejtettek, vagyis az egyszerű könyvtárlistán nem szerepelnek. Teljes, a rejtett állományneveket is tartalmazó listát az ls -a paranccsal jeleníthetünk meg. Minden katalógus tartalmaz két speciális bejegyzést:.,... A. magát az aktuális katalógust jelenti. A.. az aktuális katalógus szülő katalógusát jelenti, vagyis azt a katalógust, amelyben az aktuális katalógust létrehozták. (A gyökérkatalógusnál a. és a.. is a gyökérre mutat.) 2.3 A könyvtárfa áttekintése System Administration Guide Linkek Sok operációs rendszerben egy az egyes összerendelés van az állományok és az állománynevek között. (Minden állománynak egy neve van, és minden állománynév egy állományt jelöl.) A Unix a nagyobb rugalmasság érdekében szakított ezzel a koncepcióval. 3 A koncepció jelentősen eltér a pl. MS Windows-nál megszokott címkék használatától, ahol az egyes eszközöket betűk jelölik.

16 16 Az állomány egyetlen egyedi azonosítója az inode-ja (information node). Az állomány inode-ja tartalmaz minden információt az állományról, beleértve a jogokat, a méretét, a hivatkozások számát. A katalógusok csak egy fájlnév - inode összerendelést tartalmaznak, ezért lehetséges, hogy egy katalógusból több néven, vagy különböző katalógusokból hivatkozzunk ugyanarra az inode-ra. Ezt a Unix-ban linknek hívják. Amikor különböző névvel hivatkozunk egy inode-ra, azt hard linknek hívják. Ebben az esetben az állomány addig létezik, amíg van rá mutató bejegyzés. Hard linket csak egy köteten (egy partíció, egy eszköz) belül hozhatunk létre. Azonban lehetséges ún. szimbolikus linkek létrehozása is. Ilyenkor különböző nevekkel hivatkozhatunk egy katalógus bejegyzésre. Ilyen módon különböző kötetek között is létrehozhatunk linkeket. Azonban mivel a link csak egy katalógus bejegyzésre mutat, ezért ha a bejegyzés megszűnik, akkor link nem működik többé. Amíg a hard linket katalógusokra nem szokás (de lehetséges 4 ) használni, addig a szimbolikus linkeket igen gyakran alkalmazzák katalógusok között is. Linket két katalógusbejegyzés között az ln segédprogrammal lehet létrehozni: ln <forrás fájl> <cél fájl> ln s <forrás fájl> <cél fájl> - hard link - szimbolikus link 1. Hozzunk létre szövegszerkesztővel egy állományt. 2. Csináljunk egy és egy hard szimbolikus linket az adott állományra. 3. Az ls il paranccsal listázzuk ki a könyvtár tartalmát. A i opció hatására az első oszlopban láthatjuk minden állomány inode számát. Vizsgáljuk meg ezeket a számokat. 4. A lista 3. oszlopában az állományra való hivatkozások számát láthatjuk. 5. Mindkét linken keresztül nézzük meg az állomány tartalmát! 6. Módosítsuk a linkeken keresztül az állomány tartalmát és nézzük meg a hatását! 7. Töröljük le az eredeti állományt, majd próbáljuk meg a linkeken keresztül megnézni a tartalmát! Az ls ail paranccsal vizsgáljuk meg az aktuális könyvtárban a. és.. könyvtárakat. Magyarázzuk meg a hivatkozások számát! 2.5 Az eszköz állományok System Administration Guide A könyvtárak közötti link létrehozására csak a super-usernek van joga, mivel ezzel a módszerrel hurkot lehet képezni a fában, ami viszont a programok hibás működését eredményezheti.

17 Formattálás, partícionálás, állományrendszerek System Administration Guide Állományrendszerek összekapcsolása és leválasztása (mount) A Linux állományrendszere a root partíción elhelyezkedő gyökér könyvtárból indul ki. Innen kezdve épül fel a könyvtárak fa struktúrája. Ezt további blokk orientált készülékekkel bővíthetjük ki. A mount rendszerparanccsal egy már létező könyvtárat egy másik készüléken elhelyezkedő állományrendszerrel (esetleg ugyanazon eszközön lévő másik állományrendszerrel) kapcsolhatunk össze. Ezután a már meglévő könyvtárra való hivatkozások a másik állományrendszer gyökér könyvtárára fognak vonatkozni. Gyakorlatilag a mount parancs a hierarchia fa egy pontját egy teljesen új részfával cseréli fel. A lecserélt pont a kapcsolat megszüntetéséig (umount) elérhetetlenné válik. A mount parancs végrehajtása után lényegében nem lesz különbség az eltávolítható köteten és a gyökér állományrendszerben található állományok között, egyformán kezelhetjük őket. Fájlrendszer hozzácsatolása a könyvtárfához: mount t <fájlrendszer típus> <eszköz állomány> <könyvtár> A fájlrendszer lecsatolása: umount <eszköz állomány> umount <könyvtár> A felcsatolt eszközökről, és a felcsatolás módjáról információkat kaphatunk a mount parancs paraméter nélküli meghívásával. A felcsatolt eszközök kapacitását és a tárolt állományok helyfoglalását a df paranccsal kérdezhetjük le. Próbáljuk ki egy floppy lemez felcsatolását: mount /dev/fd0 /mnt/floppy Vizsgáljuk meg mennyiben változott a könyvtárstruktúra! Majd csatoljuk le! umount /mnt/floppy Próbáljuk ki egy CD-vel is!

18 18 mount -t iso9660 /dev/cdrom /mnt/cdrom Próbáljuk ki mi történik akkor, ha olyan könyvtárat választunk csatolási pontnak, amelyben már vannak állományok! Vizsgáljuk meg a helyfoglalás változását a df paranccsal! Mi történik a lecsatolás után? 2.8 Fájlrendszer típusok A Linux számos fájlrendszer típust támogat. Ezek egy része használható a rendszerállományok tárolására is, másik része pedig az egyéb operációs rendszerekkel való együttműködés érdekében került a rendszerbe (FAT, VFAT, NTFS). 5 A következőkben végigtekintjük - a teljesség igénye nélkül - a Linux által támogatott állományrendszereket Minix A Linux születésének hajnalán a fejlesztés a Minix operációs rendszer alatt történt. Egyszerűbb volt megosztani a háttértárolót a két rendszer között, mint egy új állományrendszert kifejleszteni. Ezért legelőszőr ennek a fájlrendszernek a támogatása került bele a Linux-ba. Azonban a minix állományrendszer túl sok korlátozást tartalmazott, ezért a fejlesztők idővel szükségesnek látták a lecserélését, ezért fejlesztették ki az extended filesystems nevű állományrendszert Extended filesystems (ext, ext2, ext3) Az ext, ext2, ext3 állományrendszerek elsősorban a Linux számára lettek kifejlesztve. Az ext a minix egy továbbfejlesztése. Azonban még így is számos hiányossággal rendelkezett, és teljesítmény problémái is voltak, ezért szükségessé vált egy új rendszer kifejlesztése, amely az ext2 nevet kapta. A minix, ext, és ext2 állományrendszerek korlátainak összehasonlításához nézzük meg a következő táblázatot: minix ext ext2 Max méret 64MB 2GB 4TB Max állomány méret 64MB 2GB 2GB Max fájlnév 16/30 kar 255 kar 255 kar 3 idő támogatása nem nem igen Bővíthetőség nem nem igen 5 Bár nincsen valójában megkötés, hogy milyen állományrendszert használhatunk a rendszerállományok tárolására, azonban célszerű olyat választani, amelyik kompatibilis a Unix védelmi rendszerével. Ellenkező esetben számos problémával kell megküzdenünk.

19 19 Az ext3 állományrendszer az ext2 továbbfejlesztése. Lényegében az ext2 kibővítése a journaling mechanizmussal Journaling állományrendszerek A komolyabb állományrendszerek adatainak frissítése, összetettségükből adódóan több különálló írás műveletből áll. Ahhoz, hogy az állományrendszer konzisztens maradjon az összes írás műveletnek végre kell hajtódnia. Ha eközben egy áramkimaradás miatt a rendszer hirtelen összeomlik, akkor a fájlrendszer egy köztes állapotban maradhat. Ilyenkor a következő boot-olásnál a rendszer végig ellenőrzi az állományrendszert és megpróbálja ezeket a hibákat kijavítani. Azonban ez egy nagyobb partíción nagyon sokáig eltarthat, és nem is jár mindig sikerrel, ha a helyreállításhoz nincsenek meg a szükséges információk. A journaling állományrendszereken ennek a problémának a megoldására születtek. Az állomány rendszer tartalmaz egy elkerített területet, melyet journal-nak, vagy log-nak neveznek. Mielőtt az állományrendszerhez hozzányúlna a rendszer, hogy az egyik állapotból eljusson egy újabb állapotba, előtte a műveleteket feljegyzi ebbe az elkerített területbe. Majd ezek után végrehajtja a folyamatot. Ha eközben a rendszer összeomlana, akkor a journal tartalmazza a szükséges információkat, amely alapján a művelet visszajátszható. Természetesen, ha a journal terület írása közben omlana össze a rendszer, akkor az állományrendszer konzisztens állapotban van, ezért nem igényel beavatkozást. Természetesen a journaling fájlrendszer hátránya, hogy a több írásműveletből adódóan valamennyivel lassabb, mint a könyvelés nélküli társai. A Linux alatt a következő journaling állományrendszerek vannak: - JFS: Az IBM által kifejlesztett, elsősorban az IBM Enterprise szerverekben használatos fájlrendszer. - XFS: A Silicon Graphics által kifejlesztett és használt fájlrendszer. - ext3: Az ext2 fájlrendszer kiegészítése. - ReiserFS ReiserFS A ReiserFS a klasszikus balanced tree algoritmust implementálja. Ennek következtében a szokásos blokk allokációs állományrendszereknél (pl. ext2) jobb helykihasználást és gyorsabb működést eredményez kisebb állományok esetén. Azonban blokkmérethez közeli állományméretek esetén némileg lassabbak a konvencionális megoldásokkal szemben. Jelenleg támogatja már a journaling metódust is, így ebben sem marad el a társaitól. Mindenképpen ígéretes fejlesztés, és érdemes odafigyelni rá.

20 Más operációs rendszerek támogatása A Linux számos, más operációs rendszerek által használt állományrendszer típust is támogat: - DOS FAT 12/16/32 (msdos néven), illetve a VFAT bővítés, amelyet az MS Windows rendszerek vezettek be a hosszú állománynevek támogatására. - NTFS, amelyet az MS Windows NT vonal használ. (Használata csak olvasható módban ajánlatos, mivel a Microsoft nem közli a specifikációját, és bármikor önhatalmúlag megváltoztathatja. A fejlesztők csak az állományrendszer elemzésével készítették a támogatást.) - HFS, amelyet a Machintos rendszerek használnak. - HPFS, amelyet az OS2 operációs rendszer használ. - AFFS, az Amiga gépek támogatására. - Qnx4, a QNX operációs rendszer támogatására A CD állományrendszere: iso9660 A CD-ROM állományrendszerének neve Linux alatt az iso9660, mivel ez a szabvány definiálja a működését Hálózati állományrendszerek A Linux három hálózati megosztásokra használatos állományrendszer támogat. A Unix rendszereknél használatos NFS-t (Network Filesystem), az MS Windows család által bevezetett SMB protokoll, valamint a Novell Netware szerverek által használt ncpfs-t Az állományrendszer paraméter használata Az állományrendszer típusát a mount parancs -t opciója után kell megadnunk kis betűkkel. Az egyes állományrendszerekhez további, típus függő paramétereket is megadhatunk, amelyekről információ a mount manuál oldala tartalmaz. Amennyiben nem specifikáljuk az állományrendszert, vagy az auto típust adjuk meg, akkor a mount a partíció superblock-ját ellenőrzi és az alapján próbál választani. Ha ez sikertelen, akkor az /etc/filesystems állományt próbálja beolvasni és az abban szereplő lista alapján próbálgatja az egyes állományrendszer típusokat. Ha nem találja ezt az állományt, vagy már sikertelenül végigpróbálta a listát, és a lista végén egy * karakter szerepel, akkor a /proc/filesystems állomány alapján folytatja a tesztelgetést. Ez valójában a kernel által támogatott állományrendszerek listája. A mount minden olyan sort végig próbál, amelyben nem szerepel a nodev kulcsszó. Az automatikus állományrendszer meghatározás hasznos lehet, amikor például a felhasználó egy floppy lemezt próbál felcsatolni. Azonban a tesztelés tévedhet, ami katasztrofális hatással lehet az állományrendszer tartalmára. Ezért fontos adatok esetén ne hagyjuk, hogy a mount találgasson!

21 Fájlrendszer létrehozása A Linux alatt az mkfs parancs használatos az állományrendszerek létrehozására: (Az eszköz állomány helyett esetleg megadhatunk könyvtárat is.) mkfs -t <fájlrendszer típus> <eszköz állomány> Az mkfs parancs valójában egy front-end a különböző állományrendszereket elkészítő programoknak. Ezek a programok a /sbin könyvtárban találhatóak mkfs.<fájlrendszer> néven. Az egyes állományrendszereknek eltérő beállításai lehetnek, ezért használatukkor a hozzájuk tartozó manuál oldalakat tanulmányozzuk! Hozzunk létre FAT állományrendszert egy floppy lemezen! 2.9 Partíciók létrehozása, kezelése A hard drive-ot feloszthatjuk egy vagy több logikai részre, amelynek neve partíció. Ezeket az egységeket a partíciós tábla írja le. A Linux rendszert feltelepíthetjük egyetlen partícióra is, azonban teljesítmény szempontjából célszerű a swap állomány helyett partíciót használni. Szerverek esetén a biztonság érdekében a rendszert is célszerű részekre bontani és külön partíciókra telepíteni. A partíciós tábla kezelésére a Linux rendszerek alatt az fdisk program használatát javasoljuk. Bár egy régi eszközről van szó, ezért a felülete elsőre barátságtalannak tűnhet a később született társaihoz képest, azonban kis gyakorlással könnyű kezelni. Ugyanakkor az adminisztrátor számára ez a program nyújtja a legtöbb állítási lehetőséget, szabadságot. Azonban ebből következően óvatosan kell bánnunk vele, elő rendszerek esetén pedig még fokozottabban kell ügyelnünk. A parancs leggyakrabban használt alakja a következő: fdisk <eszköz> Például: fdisk /dev/hda Az eszköz neve általában a következő: /dev/hd[a-h] IDE lemezek esetén, vagy /dev/sd[a-p] SCSI meghajtók esetén. Lefuttatás után a program egy prompt-ot ad és a parancsainkra vár. A parancsok listáját az m billentyűvel kérdezhetjük le. A leggyakrabban használt parancsok: Billentyű a Parancs A boot partíció beállítása, illetve a jelzés törlése.

22 22 Billentyű d l m n p q t v w x Parancs Partíció törlése. A támogatott partíció típusok listázása. A segítség lista. Új partíció létrehozása. Az aktuális partíciós tábla megtekintése. Kilépés mentés nélkül. A partíció típusának módosítása. A partíciós tábla ellenőrzése. Kilépés mentéssel. Csak tapasztalt felhasználó számára további funkciók. Mint látható a tábla módosítása után a q vagy w billentyűkkel léphetünk ki. Előbbi esetben mentés nélkül, utóbbi esetben a módosítások elmentésével. Az fdisk parancsot meghívhatjuk még a -l paraméterrel is, amikor csak kilistázza a partíciós tábla tartalmát: fdisk -l <eszköz> 2.10 Partíció létrehozása, formázása, felcsatolása 1. A megismert fdisk program segítségével hozzunk létre egy új Linux partíciót! 2. Az mkfs paranccsal hozzunk létre az új partíción egy ext2 állományrendszert! 3. A mount parancs segítségével csatoljuk fel a könyvtárstruktúrába! 4. Az umount paranccsal csatoljuk le! 5. Hozzunk létre egy új ext2 állományrendszert úgy, hogy ne legyen rajta a rendszergazda számára fenntartott terület! 6. A tune2fs program segítségével utólag módosítsuk az állományrendszer maximális mount-számát! 7. Próbáljuk ki mi történik ha felcsatolásokkal elérjük az előbb beállított maximális értéket! 2.11 A Linux állományrendszer megjavítása Az fsck program fő feladata, hogy rendszeres időközökkel ellenőrizze a Linux állományrendszerét, és szükség esetén automatikusan kijavítsa a hibákat. Amennyiben az automatikus ellenőrzés során túlságosan jelentős hibákat talál, akkor hibával tér vissza és a rendszer az adminisztrátor által futtatott interaktív javítást igényli. Ez az eset leggyakrabban akkor fordul elő, ha az állományrendszerünk nem journal típusú és a rendszer összeomlott (például egy áramszünet miatt).

23 23 Azonban bármikor parancssorból ellenőrizhetünk állományrendszereket. Ehhez az állományrendszer ne legyen felcsatolva, hiszen egy ilyen folyamat aktív fájlrendszeren nem biztonságos. A parancs formája a következő: fsck -t <fájlrendszer típus> <eszköz állomány> Az eszköz állomány helyett esetleg megadhatunk csatolási pontot is. Az fsck az mkfshez hasonlóan csupán egy front-end. Szintén az /sbin könyvtárból hívja meg az fsck..<fájlrendszer> nevű programokat. Ellenőrizzük a korábban létrehozott állományrendszerünket! 2.12 A rendszer partíciók paramétereinek megadása A Linux rendszerben az /etc/fstab állomány tartalmazza az információkat az egyes, a rendszer által használt állományrendszerekről. Ennek az állománynak a karbantartása az adminisztrátor feladata. Kizárólag az adminisztrátor segédprogramjai módosíthatják. Minden állományrendszert egy sor ír le. Az egyes mezőket space vagy tab karakterek választják el egymástól. Az egyes mezők jelentése sorrendben: 1. Az eszköz állomány neve. Hálózati állományrendszer esetén a távoli megosztás leírója (pl. az NFS állományrendszer esetén a következő formában: <szerver>:<könyvtár> ). Ext2 állományrendszer esetén az eszköz helyett a partíció címkéjét is megadhatjuk (pl. LABEL=/ ). 2. A csatolási pont. 3. Az állományrendszer típusa. Használható az auto kulcsszó is. Működése megegyezik a mount parancsnál tárgyalttal. 4. Az állományrendszer csatolási opciói vesszővel elválasztva. Az állományrendszer specifikus opciókat az állományrendszer manuál oldalán találhatjuk meg. A következő opciók minden állományrendszer esetén használhatóak: 1. noauto - A rendszer indulásakor az állományrendszer ne csatolódjon fel. 2. user - A felhasználók is felcsatolhassák az állományrendszert. (A felhasználó ilyenkor a mount parancsnak csak az eszközt, vagy a csatolási pontot adhatja meg. A felcsatolást a rendszer az fstab állományban meghatározott opciókkal végzi el.) 3. owner - Az eszköz tulajdonosa csatolhatja fel az állományrendszert. 4. _netdev - Az eszköz felcsatolásához hálózat működőképessége szükséges.) 5. A biztonsági mentés során a dump program az adott partíciót figyelembe vegye (1) vagy sem (0). 6. A rendszer indulásakor az automatikus állományrendszer-ellenőrzéskor (fsck) a sorrend megadása. A root állományrendszernél az 1-es érték beállítása javasolt. Egyéb állományrendszereknél a 2-es érték használható. Ebben az esetben egy meghajtón belül az ellenőrzések szekvenciálisan hajtódnak végre. Ha több meghajtón találhatóak a partíciók, akkor a rendszer párhuzamosítja az ellenőrzéseket. Ha a

24 24 hatodik mezőt nem adjuk meg, vagy értéke 0, akkor a rendszer nem ellenőrzi az adott fájlrendszert. Tanulmányozzuk a rendszer /etc/fstab állományát! Állítsuk be, hogy a korábban létrehozott állományrendszer induláskor automatikusan felcsatolódjon a /export csatolási pont alá! Állományrendszer-ellenőrzést is kapcsoljunk be, azonban a biztonsági mentés során hagyjuk figyelmen kívűl! 2.13 Ext2 állományrendszer konverziója ext3-ra Mivel az ext2 és az ext3 állományrendszerek között csak a journal mechanizmus támogatása jelenti a különbséget, ezért az utólagos konverzió könnyen megvalósítható. 1. Csatoljuk le a létrehozott ext2 állományrendszerünket! 2. A tune2fs -j <eszközállomány> paranccsal végezzük el a journal mechanizmus hozzáadását! (A parancsnak megadhatunk további paramétert, amellyel szabályozhatjuk a journal fájl méretét.) 3. Módosítsuk az /etc/fstab állományban a fájlrendszert ext2-ről ext3-ra! 4. Csatoljuk fel a partíciót! A tune2fs parancs a -j opcióval egy speciális attribútumokkal rendelkező rejtett állományt hoz létre, amelyet a műveletek könyvelésére használ majd az állományrendszer kezelő alrendszer. A konverzió visszafelé is lehetséges, az ext3 állományrendszerről ext2-re: - Lecsatoljuk az állományrendszert. - tune2fs -O ^has_journal <eszközállomány> - e2fsck <eszközállomány> - Módosítjuk az /etc/fstab állományt. - Felcsatoljuk az állományrendszert. - Töröljük le a.journal állományt az állományrendszerről. A tune2fs parancs letörli a journal fájl inode-ját, az e2fsck vagy fsck -t ext2 pedig befejezi a fájl eltávolítását A swap A kezdetek óta gyakran felmerül a probléma, hogy több memóriára lenne szükségünk, mint amennyi a gépünkben fizikailag rendelkezésünkre áll. Ugyanakkor a felhasználhatjuk a merevlemezt, ami ugyan lassabban kezelhető, de jelentős kapacitással bír. Amikor kifutunk a szabad memória területből, akkor a memória egyes nem használt részeit átmenetileg a merevlemezre helyezhetjük, így felszabadul a szükséges hely a programok számára.

25 25 A Linux a virtuális memóriakezelés módszerét használja, amellyel ezt biztosítja számunkra. A memória és a merevlemez felhasználásával a processzek számára nagyobb memória terület elérését teszi lehetővé, mint amennyi szabad fizikai memóriánk valójában van. Mindezt ráadásul úgy oldja meg, hogy a processz számára az egész memóriaterület egységesen kezelhető és átlátszó. A Linux a virtuális memóriakezelés megvalósítására a memórialapozás technikáját alkalmazza. A rendszer memóriáját tartományokra, úgynevezett lapokra (page) osztja. Ezeket a lapokat egymástól függetlenül mozgatja a memória és a merevlemez között. Amikor a folyamatnak további memóriára van szüksége, de nincs már a memóriában szabad terület, akkor a Linux egyes, régebben használt lapokat kiír a lapcsere (swap) állományba vagy partícióra, és ezáltal helyet teremt. A swap terület lehet állomány, partíció, vagy állományok és partíciók kombinációja. Az ajánlott a külön partíció használata, mivel ez a megoldás nyújtja a legjobb teljesítményt swap partíció hozzáadása a rendszerhez Előfordulhat, hogy kevésnek bizonyul a swap terület a rendszer számára, ezért újabb partíciókat szeretnénk hozzáadni. Ezt megtehetjük néhány lépésben: 1. Létre kell hoznunk egy új partíciót a swap számára. 2. Meg kell formáznunk: mkswap <eszközállomány> 3. Majd máris engedélyezhetjük a használatát a rendszer számára: swapon <eszközállomány> 4. Már csak hozzá kell adnunk az fstab állományhoz, hogy a következő rendszerinduláskor is használjuk: <eszközállomány> swap swap defaults swap állomány hozzáadása a rendszerhez Amennyiben nem tudunk egy partíciót felhasználni, a swap területhez, akkor még lehetőségünk van arra, hogy állományt hozzunk létre: 1. Első lépésként létre kell hoznunk egy akkora állományt, amekkorát swap területnek szánunk: dd if=/dev/zero of=/swapfile bs=1024 count=<méret> A méretet kb-ban kell megadnunk.

26 26 2. Az állományt is a partícióhoz hasonlóan meg kell formáznunk: mkswap /swapfile 3. Majd engedélyeznünk kell: swapon /swapfile 4. Utolsó lépés, hogy hozzáadjuk az fstab állományhoz, hogy automatikusan használja a rendszer: /swapfile swap swap defaults swap eltávolítása A swap partíció vagy állomány eltávolításának menete: 1. Ki kell kapcsolunk a swap terület használatát: swapoff <állomány> 2. El kell távolítanunk az eszköz vagy állomány sorát az fstab állományból.

27 Felhasználók adminisztrációja A felhasználói azonosítók A Unix rendszerek alatt minden felhasználó rendelkezik egy egyedi azonosító számmal (uid = user identifier), és egy vagy több csoport azonosító számmal (gid = group identifier). A felhasználók azonosítása a rendszerben az uid szám alapján történik. Bejelentkezéskor a rendszer a név alapján kikeresi az /etc/passwd állományból a felhasználó azonosítóját és a későbbiekben ezt használja a rendszerben folytatott tevékenységünk során. A csoportokba sorolás segítségével a felhasználók egy csoportját összefoghatjuk és a rendszer egyes részeihez több jogot biztosíthatunk, mint a többieknek. Egy felhasználó több csoport tagja is lehet egyszerre. Ebből az egyik csoport szerepe megkülönböztetett. Ez az alapértelmezett, amelyet az állományok létrehozásakor használ a rendszer. A felhasználó azonosítója és az alapértelmezett csoport azonosítója az /etc/passwd állományban van eltárolva. A többi csoport azonosító az /etc/group állomány bejegyzései alapján rendelődik hozzá a felhasználóhoz. Létezik egy kitüntetett felhasználó, a rendszergazda (super-user, a login neve root ). A rendszergazdára nem vonatkoznak a felhasználókra beállított hozzáférési jogok, a rendszer még az állományok tulajdonosánál is bővebb lehetőségeket engedélyez számára. A rendszer az alapján ismeri fel, hogy az uid-je 0. Jogai gyakorlatilag korlátlanok, éppen ezért igen körültekintőnek kell lennünk, amikor rendszergazdaként jelentkezünk be, mert egyetlen rossz mozdulattal az egész rendszert tönkre lehet tenni. Ezért javasolt, hogy egészen addig egyszerű felhasználóként tevékenykedjünk a rendszerben, amíg valamelyik művelethez nem kellenek feltétlenül a rendszergazdai jogosultságok. Megjegyzés: Mivel a rendszer a rendszergazdát valójában a 0-s uid alapján azonosítja, ezért minden felhasználó, akinek ez az azonosító van beállítva az /etc/passwd állományban az rendszergazda. A szerverek feltörése esetén szokott előfordulni, hogy a betörő létrehoz egy felhasználót, akinek 0-s azonosítót állít be. Így később is visszatérhet, és rendszergazdaként garázdálkodhat. Ezért egy ilyen esemény után célszerű ezt is ellenőrizni Felhasználók létrehozása Unix rendszereken az új felhasználó létrehozásához elegendő, ha egy rá vonatkozó bejegyzést írunk az /etc/passwd állományba. Továbbá létre kell hoznunk neki egy

28 28 home könyvtárat, amelyet a tulajdonába adunk, és bejegyzünk szintén a passwd állományba. Azonban léteznek segédprogramok is, amelyek ezeket a műveleteket elvégzik nekünk. Parancssoros programok közül ilyen a mindenhol megtalálható useradd. Alapvetően két működési módját különböztetjük meg. Az egyik feladata, hogy új felhasználókat hozzon létre. A másik módja a konfigurációs mód, amikor az alapértelmezett értékeket állítjuk be. A legegyszerűbb, és leggyakrabban használt formája a következő: useradd -c <valódi név> <login név> Alapértelmezett esetben bejegyzi a felhasználót a passwd állományba, majd létrehoz egy home könyvtárat, amelybe bemásolja az /etc/skel könyvtárban található állományokat. Mivel a létrehozott felhasználónak nem állítottunk be jelszót, ezért blokkolja a hozzáférését a rendszerhez. A jelszót utólag rendszergazdaként a passwd <login név> paranccsal adhatunk. Azonban nem csak valódi felhasználókat hozhatunk létre, hanem úgy nevezett rendszerfelhasználókat is. Ezek jelszó nélküli, blokkolt felhasználók home könyvtár nélkül. Csak azért szükségesek, hogy egyes szolgáltatások ezeknek a virtuális felhasználóknak a nevében fussanak, és ez által a rendszer a hozzáférési jogosultságaikat szabályozhassa. Ezek a rendszer-felhasználók abban is különböznek a normál felhasználóktól, hogy az azonosítójuk általában kisebb. A useradd programmal az -r opcióval hozhatjuk létre őket. Az alapértelmezett paramétereket módosíthatjuk is a -D opció használatával: useradd -D <opció és alapértelmezett érték> A rendszer az alapértelmezett értékeket az /etc/default/useradd állományban tárolja. Megjegyzés: A RedHat disztribúcióban a useradd program egy módosított változata található. Ez, ha nem definiáljuk a felhasználó csoportját, akkor figyelmen kívül hagyja az alapértelmezett értéket, és minden felhasználónak egy új csoportot hoz létre. Az újonnan létrehozott csoport lesz a felhasználó alapértelmezett csoportja. Ez a működési mód általában fölösleges pazarlás, ezért célszerű a useradd program használatakor a -g opcióval definiálni a felhasználó csoportját. Állítsuk át az alapértelmezett csoportot a users(100) csoportra, majd hozzunk létre felhasználókat! (RedHat esetén a felhasználó létrehozásakor is meg kell adni a csoportot.)

29 A felhasználó letiltása A felhasználó hozzáférését számos okból letilthatjuk. Egyik szokásos eset, amikor csak egy bizonyos időszakra adjuk a hozzáférést. Ilyenkor már a felhasználó létrehozásánál a useradd parancs -e opciójával megadhatjuk a lejárati dátumot, amikortól nem férhet hozzá a rendszerhez. A másik szokásos eset az automatikus letiltásra, amikor kötelező érvényűvé tesszük, hogy a felhasználók bizonyos idő elteltével cseréljék a jelszavukat. Ezt a passwd parancs -x opciójával adhatjuk meg napokban. A -i opcióval pedig azt állíthatjuk be, hogy ha elmulasztaná a felhasználó a jelszó megváltoztatását, akkor hány nap múlva tiltódjon le a hozzáférése. Adódhat olyan eset is, amikor manuálisan kell letiltanunk egy hozzáférést valamilyen oknál fogva. Ezt szintén a passwd paranccsal tehetjük meg. A -l opció blokkolja, a -u opció pedig újra engedélyezi a hozzáférést A felhasználó törlése A felhasználó törlése történhet kézzel. Ilyenkor törölnünk kell a felhasználó bejegyzését az /etc/passwd állományból, továbbá shadow jelszó használata esetén az /etc/shadow állományból is. Amennyiben az /etc/group állomány tartalmaz rá vonatkozó bejegyzéseket, akkor azt is el kell távolítanunk. Ezzel a felhasználó megszűnt létezni, azonban még további állományai lehetnek a rendszerben. Ez alapértelmezett esetben a home könyvtár tartalma, és a levelesládája (általában /var/spool/mail/<login név> ). De természetesen ezeket a műveleteket elvégezhetjük egyszerűbben is a userdel paranccsal: userdel -r <login név> A -r paraméter használatával érhetjük el, hogy a felhasználó home könyvtára, és a levelesládája is törlődjön Csoportok adminisztrációja A felhasználókhoz hasonlóan a csoportok adminisztrálására is találhatunk segédprogramokat. Ilyen a groupadd és a groupdel, ami mint a felhasználóknál, itt is az új csoportok létrehozására, illetve törlésére szolgál. A groupadd program is rendelkezik egy r kapcsolóval, amellyel rendszer-csoportokat hozhatunk létre, amely ebben az esetben csak azt jelenti, hogy a group azonosító kisebb lesz a normál azonosítóknál.

30 Az állományrendszer jogosultságai Mint minden több felhasználós rendszer a Linux is védi az egyes felhasználók állományait és folyamatait a többi felhasználótól. A Linux és más Unix operációs rendszerek a felhasználói és csoport azonosítókat használják a védelmi korlátozások meghatározására. A rendszer minden állománya egy tulajdonos és egy csoport azonosítóval rendelkezik: - A tulajdonos azonosító az állományt létrehozó felhasználó azonosítója. (A rendszergazda ezt a paramétert állíthatja a chown paranccsal.) - A csoport azonosító az állomány létrehozásakor a felhasználó alapértelmezett csoportja. Ez később a chgrp paranccsal állítható. Ezek az azonosítók szabályozzák, hogy az egyes folyamatok hozzáférhetnek-e az adott állományhoz és elvégezhetik-e a kérdéses műveleteket, vagy sem. A folyamat (felhasználó) és az állomány között 3 féle reláció állhat fenn: - Azon felhasználó, akinek az azonosítója megegyezik az állomány azonosítójával, az a tulajdonos (owner). - Akinek a felhasználói azonosítója más, de valamelyik csoport azonosítója megegyezik a bejegyzés azonosítójával az a csoporttárs (group). - Akiknek pedig a felhasználói és csoport azonosítója egyaránt eltér a bejegyzés azonosítóitól, azok a többiek (others). Minden egyes relációra 3 féle jogosultsági engedélyt állíthatunk be: olvasás, írás, és végrehajtás (könyvtárak esetén ez utóbbi keresési jogot jelent). Nézzük, hogyan is néz ez ki! Az ls l paranccsal részletes listát kérhetünk az adott könyvtár tartalmáról: drwxr-xr-x 2 root root 4096 Sep 23 23:24 dir1 -rw-r--r-- 1 root root 5 Sep 23 23:24 file1 A lista sorainak első mezője tartalmazza az adott állományra/könyvtárra érvényes jogokat a következők szerint: drwxrwxrwx Ahol az első karakter az állomány típusa: Jelzés Típus b a bejegyzés egy blokk-orientált speciális állomány c a bejegyzés egy karakter-orientált speciális állomány d a bejegyzés egy katalógus l a bejegyzés egy szimbolikus link - a bejegyzés egy egyszerű állomány A következő 9 karakter hármas csoportokra osztható. Az első három az owner, a második a group, a harmadik az other jogait jelenti.

31 31 A hármas csoporton belül a három karakter sorrendben a következő lehet: "r", "w" és "x". ezek bármelyike helyén "-" is állhat. Jelentésük pedig rendre az olvasási (read), írási (write), végrehajtási (execution) jogot vagy "-' esetén annak hiányát jelenti. Az olvasási jogkör szabályozza, hogy van-e joga az adott felhasználónak az állomány tartalmának megtekintésére, illetve a katalógus tartalmának kilistázására. Ha egy felhasználó rendelkezik írási joggal egy bejegyzésre, akkor bővítheti, kicserélheti, megváltoztathatja az állomány tartalmát, illetve létrehozhat, törölhet bejegyzést katalógus esetén. A végrehajtási jog (amely csak állományra vonatkozhat, ha katalógusra vonatkozik, akkor keresési jognak nevezzük) azt jelzi, hogy az adott felhasználó futtathatja-e az állományt. Maga a végrehajthatósági jog önmagában még nem jelenti azt, hogy az állomány ténylegesen futtatható kódot tartalmaz. A katalógusokra vonatkozó keresési jog azt jelzi, hogy van-e jogunk a katalógus bejegyzéseinek eléréséhez, használatához. Megjegyzés: Szimbolikus linkek esetén a jogok nem értelmezettek. Az eredeti állomány jogai az irányadóak. A tulajdonos lehetőségeit ismertető csoportban "x" helyén "s" áll, ha az állomány setuid módban van. Hasonlóképpen a csoporttárs lehetőségeit ismertető csoportban "x" helyén "s" áll, ha a bejegyzés setgid módú. Az ún. setuid mód lehetővé teszi, hogy a rendszer a programot futtató felhasználót saját uid-je helyett a programállomány tulajdonosának uid-jével azonosítsa (természetesen csak a program futásának időtartamára). Így a felhasználó által futtatott program mindazt végrehajthatja, amit a programállomány tulajdonosa végrehajthat. A setgid mód teljesen azonos a setuid móddal: a rendszer a felhasználó valódi gid je helyett a programállomány tulajdonosának gid-jét (gidjeit) használja a hozzáférési jogok megállapításánál a program futásának időtartama alatt. A jogokat a chmod paranccsal módosíthatjuk. A parancsot két féle képen használhatjuk: egyrészt a jogok egzakt, oktális számokkal való megadásával, másreszt szimbolikus jelekkel. A chmod parancs használatának általános formája: chmod <mód> <fájlnév> Azonban a rendszernek már az állományok létrehozásakor be kell állítania valamilyen engedélyeket. Lehetne szigorú és elvehetne minden jogot, de lehetne engedékeny is, és megadhatná őket. Azonban a legjobb megoldás, ha a felhasználó megadhatja. Ezt meg is tehetjük az umask segítségével. Ez egy egész szám, amely azt tartalmazza, hogy mely biteket töröljön a rendszer az engedélyek közül. A legegyszerűbb, ha oktális számokkal adjuk meg. Ilyenkor lényegében a chmod parancsnál használt szám inverzét kell megadni: umask <mód inverze>

32 A jogok megváltoztatása (szimbolikus jelekkel) A mód szimbolikusan a következő módon adható meg: [kinek] op jogok [op jogok]... Ahol a kinek a következő betűk kombinációja kehet: Jelzés u g o a Kinek állítjuk a jogait? a tulajdonosnak a csoportnak a többieknek mindenkinek Ha a kinek elmarad, akkor az mindenkit jelöl (mint az a ), de ilyenkor az aktuális umask-ot figyelembe veszi, és azokra a bitekre, ahol az umask 1 az állítás nem hat. Az op +, -, vagy = lehet: Jelzés Művelet + jogokat adunk hozzá az állomány jogaihoz = jogokat veszünk el az állomány jogaiból - pontosan ezt az értéket akarjuk beállítani A jogok a következő betűk kombinációi lehetnek: Jelzés Jogok r olvasási jog w írási jog x végrehajtási jog végrehajtási jog, de csak akkor, ha az állomány X katalógus, vagy van már másik x bitje s setuid vagy setgid bit t sticky bit 6 u a tulajdonos mezőt az eredeti módból veszi g csoport mezőt az eredeti módból veszi o többiek mezőt az eredeti módból veszi 1. Hozzunk létre állományokat, vagy könyvtárakat, és gyakoroljuk a jogok beállítását! Pl.: Adjunk írás jogot a csoportnak, vegyük el a többiek olvasás jogát, 6 A sticky bit állományok esetén nem értelmezett. Csak a régi Unix rendszerek használták, a Linux figyelmen kívül hagyja. Könyvtárak esetén a jelentése, hogy a benne található állományokat csak a tulajdonos vagy a root nevezheti át vagy törölheti. Jellemzően a /tmp könyvtár használja ezt a jog bitet. Nélküle bárki átnevezhetné vagy törölhetné az állományokat.

33 33 adjunk a tulajdonosnak futtatási jogot, adjunk mindenkinek futtatási jogot, ha valakinek van, stb. 2. Adjunk írás jogot a teszt könyvtárunkra mindenkinek! Hozzunk létre benne egy állományt, amelyre levesszük az írási jogokat! Egy másik felhasználóval próbáljuk meg szerkeszteni, átnevezni, törölni az állományt! Próbáljuk meg ugyanezt, ha a sticky bitet beállítjuk a könyvtárra! A jogok állítása (oktális számokkal) Az abszolút kód egy oktális szám, ami a következő kódok vagy kapcsolatával állítható elő: Például: Jelzés Jogok 4000 setuid mód a végrehajtáskor 2000 setgid mód a végrehajtáskor 1000 sticky bit 0400 olvasás a tulajdonos által 0200 írás a tulajdonos által 0100 végrehajtás (keresés a katalógusban) a tulajdonos által 0040 olvasás a csoportnak 0020 írás a csoportnak 0010 futtatás a csoportnak 0004 olvasás a többieknek 0002 írás a többieknek 0001 futattás a többieknek User Group Other Szimbolikus Bináris rwx r-x --x Oktális Hozzunk létre állományokat és gyakoroljuk a jogok beállítását oktálisan!

34 Alapértelmezett állomány jogok Azok a programok, amelyek állományokat hoznak létre, a létrehozáskor beállítják a létrehozandó állomány védelmi kódját. Így történik ez akkor is, ha pl. editorral létrehozunk egy új állomány. Ilyenkor a jogokat az umask beállítások alapján állítja be a rendszer. Mégpedig úgy, hogy azokat a védelmi biteket (csak az alsó 9 bitet), amelyek értéke 1 az umask-ban, a létrehozandó állomány védelmi kódjából kitörli. Például a 002 umask érték azt jelenti, hogy állományok estén a jog 664 lesz, könyvtárak esetén 775. (Látható a fentiekből ez az alapértelmezett értéke az umask-nak.) Állományok esetén futásjogot nem tudunk az umask-al adni Az ext2/ext3 állományrendszer további jogosultsága Az eddig megismert általános Unix jogosultságokon kívül az ext2/ext3 állományrendszer további jogosultságok beállítását is támogatja. Ezek a jogosultság beállítások eltérően a Unix jogosultságokhoz nem a felhasználók közötti hozzáférést szabályozzák, hanem elsősorban a rendszergazda számára nyújtanak segítséget speciális esetekben. Egy adott könyvtárban a jogokat az lsattr programmal listázhatjuk ki. Az ls programhoz hasonlóan -R (rekurzív listázás), -a (rejtett állományok listázása), -d (könyvtár nevek listázása) opciókat is használhatjuk. A jogokat a chattr programmal állíthatjuk szimbolikusan: chattr + - =<jog> Jelzés Jogok A Az atime érték nem módosul az állományhoz való hozzáféréskor. a Az állomány csak hozzáírásra nyitható meg. Törölni, felülírni nem lehet. Az állomány automatikusan tömörítve tárolódik a lemezen. Olvasáskor a c kernel kitömöríti. D Könyvtárak esetén az adatok kiírása szinkron módon történik. d Az állomány kimarad a biztonsági mentés készítésekor (dump). Az állomány nem módosítható, törölhető, mozgatható, átnevezhető. i Továbbá nem hozhatunk létre linket rá. Ha az ext3 fájlrendszert nem journal módban csatoltuk fel, akkor is az adott j állományra működik a journal mechanizmus. Normál esetben nincs hatása. s Az állomány törlésekor az adatok 0-val íródnak felül a meghajtón. Az állomány esetén módosításkor az adatok szinkron módon íródnak ki a S lemezre. Az állomány törlésekor a tartalma elmentődik, így vissza lehet vonni a u törlést. Megjegyzés: A korábbi kernel verziók (<= 2.2.x) nem támogatják az összes állományrendszer opciót.

35 35 Megjegyzés: Egyes betörők az i vagy a opciókkal levédhetik hátrahagyott állományaikat a tapasztalatlan rendszergazdákkal szemben. Ezért ha rendszergazdaként is problémánk adódik az állományok letörlésével, felülírásával, akkor gyanakodjunk ezen opciók használatára. Próbáljuk ki egy tesztállományon az egyes opciók hatásait, hogy megismerjük az általuk okozott jelenséget! 3.2 Quota A quota rendszer segítségével szabályozhatjuk, hogy egyes felhasználók, vagy csoportok mennyi háttértároló kapacítást használhatnak el. Így megakadályozhatjuk, hogy a felhasználók teleírják a diszket. A korlátozásokat megadhatjuk felhasználókra vagy csoportokra bontva is. A quota rendszer bekapcsolásához az alábbi teendőket kell végrehajtanunk: A kernelben be kell kapcsolnunk a quota támogatást. (Ez a Fedora verziók esetén alapértelmezetten támogatott.) Az /etc/fstab állományban meg kell adnunk a quota opciókat a felcsatolt állományrendszerekre. Létre kell hoznunk quota táblázatokat, és az egyes felhasználóknak és csoportoknak meg kell adnunk az értékeket. Be kell kapcsolnunk a rendszert A quota bekapcsolása az állományrendszerre A quota rendszer támogatásához az egyes felcsatolt állományrendszerekre be kell kapcsolnunk az usrquota és/vagy grpquota opciókat, attól függően, hogy a felhasználói, csoport, vagy mindkét beállítást használni szeretnénk. Ezt az /etc/fstab állományban tehetjük meg, ha azt szeretnénk, hogy minden induláskor automatikusan megtörténjen. Például: /dev/hda2 /home ext2 defaults,usrquota,grpquota 1 1 Ha az állítás előtt is fel volt csatolva az állományrendszer, akkor mount-oljuk újra A quota táblázatok létrehozása Miután felcsatoltunk minden olyan állományrendszert, amelyre a quota opciókat bekapcsoltuk a quotacheck paranccsal le kell generálnunk az információs táblázatokat (aquota.user és aquota.group). Ezt a c opció használatával tehetjük meg. Emellett meg kell adnunk, hogy a felhasználói (-u) vagy a csoport (-g) táblázatot szeretnénk legenerálni. Például ha a /home partícióra szeretnénk legenerálni:

36 36 quotacheck -acug /home A a opció azt jelenti, hogy minden felcsatolt quota-t használó állományrendszert végignéz. A táblázatok legenerálása után az aktuális diszk használat információkat a következő paranccsal frissíthetjük: quotacheck -avug Ezt akár crontab-ból is tehetjük: 0 3 * * 0 /sbin/quotacheck -avug A quota rendszer bekapcsolása Miután a táblázatokat is legeneráltuk következő lépésként bekapcsolhatjuk a quota rendszert: /usr/sbin/quotaon -avug Azonban előfordulhat, hogy az adott rendszerben ez már szerepel az inicializációs scriptekben, ezért nekünk már nem kell megadni. A Fedora disztribúció esetén is az /etc/rc.d/rc.sysinit megtalálható a bekapcsolása A quota értékek beállítása A quota rendszer beüzemelése után állítsuk be a quota értékeket. Ezt az edquota paranccsal tehetjük meg. Egy felhasználó esetében: edquota <felhasználó> A rendszer az EDITOR környezeti változó által meghatározott szövegszerkesztővel megnyit egy táblázatot, amelyben beállíthatjuk az értékeket az egyes kötetekre. Az oszlopok jelentése a következő: Filesystem A kötet neve. blocks A jelenleg használt blokkok száma. soft A soft limit a maximálisan használható blokkok számára. Ezt egy meghatározott türelmi időre átlépheti a felhasználó. hard A hard limit a blokkok számára. Ezt semmiképpen nem lépheti át a felhasználó. inodes A használt inode-ok száma. soft A soft limit a maximálisan használható inode-ok számára. hard A hard limit a maximálisan használható inode-ok számára.

37 37 A quota használatát a következő paranccsal ellenőrizhetjük le: quota <felhasználó> A csoportok értékeinek beállítása hasonló. A következő paranccsal érhető el: edquota g <csoport> A megjelenő beállítások megegyeznek a felhasználóknál látottakkal, csak a csoportra értelmezendőek. A beállatásokat a következő paranccsal ellenőrizhetjük: quota g <csoport> A türelmi idő beállítása A soft limit-ek esetén szó esett egy türelmi időről. Ezt az értéket a következő paranccsal állíthatjuk: edquota -t 3.3 A parancsértelmező (shell) A UNIX rendszerek és így a Linux egyik érdekessége, hogy a felhasználói felületet megvalósító parancsértelmező (shell) egy közönséges felhasználói program. Ez a parancsértelmező nem integráns része az operációs rendszernek, és nem élvez speciális megkülönböztetéseket. Így bárki lecserélheti a sajátját egy másik programra. A rendszerbe való bejelentkezéskor a rendszer a login-név (user azonosító) és a jelszó alapján ellenőrzi a felhasználót, majd a password állomány hozzá tartozó sorának megfelelő mezőjében megadott programot elindítja. Ez rendszerint valamelyik shell (sh, csh, ksh, tcsh stb.), de lehet valami más program is. Mindegyik felhasználónak joga van ezt a programot lecserélni (chsh parancs). Az egyes shell változatok között a különböző kényelmi szolgáltatásokban, valamint a programozói felületükben van eltérés. Ugyanis a UNIX shell-ek nem csupán parancsértelmezők, hanem programozási nyelvek is egyben. A következőkben áttekintjük a bash (Bourne again shell) különböző funkcióit Parancssor értelmezés A UNIX shell lényegében egy parancsértelmező program, amely beolvassa a felhasználó által begépelt sorokat, és azt más programok végrehajtását előíró kérésekként értelmezi. Egy parancssor a legegyszerűbb esetben egy parancsból és a hozzá tartozó, szóközökkel elválasztott, paraméterekből áll:

38 38 parancs argl arg2... argn A parancsértelmező különálló karaktersorozatokká bontja fel a parancs nevét és argumentumait. Ezután egy beállítható keresési út (PATH) szerint a különböző katalógusokban megkeresi a parancs nevű állományt. Ha sikerült megtalálni, akkor azt végrehajtja. A parancs végrehajtásának befejezését a prompt kiírásával jelzi. A parancssorban szereplő állománynév után következő argumentumok a következő négy kategória valamelyikébe esnek: - Egyszerű karakterlánc. - Állománynév, amit "<",">" vágy ">>" előz meg. - Egy karakterlánc, amely állománynév helyettesítő karaktert is tartalmaz. - "` `" jelek közé zárt újabb parancs, ami ún. parancshelyettesítést eredményez. Az egyszerű argumentumokat a program string tömbjeként kapja meg. A shell állítja elő ezt a tömböt, ezáltal könnyebb és egységes a paraméter kezelés implementálása a programokban A shell beépített parancsai A shell-ek tartalmaznak néhány beépített parancsot. Ezek többnyire a shell működésével szorosan összefüggő parancsok, amelyeket nem érdemes más módon implementálni. Azonban léteznek olyan shell-ek, amelyek számos parancs megvalósítását integrálják magukba. Teszik ezt azért, hogy a rendszerhibák esetén is működhessenek, és ezáltal lehetőséget nyújtsanak az adminisztrátornak a nehéz helyzetből való kilábalásra. Ilyen shell program a sash (stand-alone shell). Ez egy statikusan linkelt program, amely tartalmazza a legszükségesebb programok egyszerűsített változatait. Így akkor is működő képes, amikor az alap programkönyvtárak meghibásodása miatt a rendszer lényegében használhatatlan. Az ilyen shell-ek telepítése feltétlenül javasolt, hogy a problémás helyzeteket egyszerűbben megoldhassuk Állománynév-helyettesítés A parancs argumentumában megadott "*", "?", és "[...]" jelek ún. állománynév-- helyettesítő jelek. Ezek jelentése: Jel Jelentés * Nulla vagy tetszőleges számú tetszőleges karakter.? Pontosan egy tetszőleges karakter. [abc] Az "a" vagy "b" vagy "c" karakter egyike. [m-n] m-n intervallumból egy karakter.

39 39 Az olyan argumentumok, amelyek állománynév-helyettesítő karaktereket tartalmaznak, állománynevekből álló egyszerű argumentumok sorozatára cserélődnek le. Például *f - ből azoknak az aktuális katalógusban található állományneveknek a sorozata lesz, amelyek az f karakterekre végződnek. A helyettesítő karakterek közül több is szerepelhet egyidejűleg ugyanabban az argumentumban. Pl: az "[a-z]*" a kisbetűvel kezdődő neveket jelenti. Az, hogy a kifejtő metódust a shell tartalmazza, több előnnyel jár: - A kifejtést megvalósító program csak egyszer szerepel a rendszerben (helytakarékosság). - A programoknak a kifejtéssel nem kell foglalkozniuk. - A kifejtő algoritmus alkalmazása így bizonyosan mindig egységes lesz Standard input/output átirányítás A shell által végrehajtott programok eleve három megnyitott állománnyal indulnak. Ezek a 0, 1 és 2 állományleírókhoz vannak hozzárendelve: 0 standard input 1 standard output 2 error output Ezek alapértelmezésben a felhasználó termináljához vannak rendelve, de átirányíthatjuk őket. A > vagy >> jellel a standard kimenetet irányíthatjuk át. A parancs végrehajtása alatt az 1-es állományleíró a > jel után megadott nevű állományra mutat. Például az ls > kimenet parancs létrehozza a kimenet nevű állományt és a listát abba írja. Ha a >> jelet használjuk ls >> kimenet akkor az ls parancs kimenetét a kimenet állomány végéhez fűzi. A hiba kimenetet a 2> jelöléssel irányíthatjuk át. Hasonlóan a standard input is átirányítható. Ezt a < jellel tehetjük meg. A < bemenet jelölés azt jelenti, hogy a standard input a bemenet nevű állományból jöjjön Csővezeték A Linux-ban gyakran előfordul, hogy az egyik program kimenetét szeretnénk használni egy másik program bemeneteként. Például ha egy program kimenetét szeretnénk megszűrni, rendezni, tördelni. Ezt megtehetjük az előző fejezetben ismertetett módon átmeneti állományok létrehozásával. Azonban a Linux tartalmaz egy sokkal hatékonyabb eszközt is, amelyet csővezetéknek (pipe) nevezünk. A csővezeték egy olyan speciális állomány, ami egy FIFO-t (First In First Out) valósít meg. Az érdekessége abban áll, hogy ez a FIFO állományként kezelhető: Két állományleíróval hivatkozhatunk rá,

40 40 egyiken írhatunk bele, a másikon pedig a beírási sorrendben kiolvashatjuk a beírt adatokat. A csővezeték-szervezés lehetőségeinek előnyei: - Nincs szükség ideiglenes állományokra, amit később úgy is letörölnénk. - Mivel a folyamatok "párhuzamosan" futnak, a FIFO-nak nem kell nagynak lenni. - A pipe használata gyorsabb, mivel az a legtöbb memóriában keletkező állományként jelenik meg (egy FIFO csupán 8 Kb). - Az eredmény a cső végén már azelőtt megjelenhet, mielőtt az első program az összes bemenetét feldolgozná. A csővezetéket a shell számára a jellel adhatjuk meg: ls grep minta sort more Ebben a példában az ls parancs kimenetéből a grep program kiszűri azokat, amelyekben szerepel a minta string, majd az eredményt rendezi, és oldalakra tördelve megjeleníti Parancshelyettesítés Igen hasznos és érdekes szolgáltatása a shell-eknek az ún. parancshelyettesítés. Ez lehetővé teszi, hogy az egyik program kimenetét a másik program paraméter listájaként használjuk. Ilyenkor a megfelelő parancsargumentumot ` (visszafelé dőlő aposztróf) párba kell zárni. Például a du `cat parameters.txt` parancs esetén a du parancs megmondja azon fájlok méretét, amelyek a parameters.txt állományban fel vannak sorolva Parancssorozatok Ha a parancsokat egymás után pontosvesszővel elválasztva írjuk, akkor úgynevezett parancssorozathoz jutunk. Így például az date; ls parancs először kiírja az aktuális dátumot, majd kilistázza a pillanatnyi katalógust. Parancssorozatot nem csak pontosvessző segítségével alkothatunk, hanem a és a && jelekkel is. Ekkor egy feltételesen végrehajtódó sorozathoz jutunk. A és a && jelek jelentése azonos a C nyelvben megszokottal. Vagyis a parancs1 parancs2 parancs3 && parancs4

41 41 sorozatból a parancs2 csak akkor fog végrehajtódni, ha a parancs1 hamis megállási státusszal állt meg. A parancs4 pedig csak akkor fog végrehajtódni, ha a parancs3 igaz megállási státusszal állt meg Szinkron és aszinkron folyamatok Az eddigi példákban az egymás utáni parancsok egymást követve szinkron módon hajtódtak végre. Lehetőség van azonban aszinkron végrehajtásra is. Ha egy parancsot az & jel követ, akkor a shell nem várja meg a parancs befejeződését, hanem a prompt jel kiadásával újabb parancsra várva azonnal visszajelentkezik, miközben a kiadott parancs aszinkron módon a shell-től leválasztva fut tovább. Pl.: find / -name core > eredmeny & Ebben az esetben a shell azonnal visszatér és új parancsra vár. A fájlkeresés a háttérben fut és az eredményt az eredmeny állományba írja. (A háttérben futó folyamatok kimenetét érdemes fájlba irányítani, hogy ne keveredjen össze más parancsok kimenetével.) A parancs futatásakor a rendszer kiír egy ún. process ID-t amellyel hivatkozhatunk később a háttérben futó folyamatra Csoportosítás A parancsokat csoportosíthatjuk is zárójelekkel. ( parancs1 ; parancs2 ) Például: (date; ls) > lista & Ez a parancs kiírja a dátumot és az állományok listáját a lista állományba, és mindezt a háttérben teszi A Bash shell további funkciói A következőkben röviden áttekintjük a Bourne shell további lehetőségeit, programozását Változók kezelése A shell-ek az eddig megismert funkciókon túl változók kezelésére is alkalmasak. A változókat egyszerű string típusú tárolóként kezeli. Érték adás shell változónak: Az érték beállítása a "=" jellel történik. (Előtte és mögötte nem lehet üres hely.)

42 42 változó=érték Például: kutya=ugat Hivatkozás a változóra: Ha már beállítottuk a változót, akkor a "$" jellel a változó neve előtt hivatkozhatunk az értékre. Például: kutya=ugat echo $kutya ugat A példánkban az echo parancsot használtuk, amely kiírja a paraméterként kapott szöveget. Mint látható a változó helyére a shell behelyettesíti a változó értékét. Az echo parancs már az értéket kapja meg, és azt írja ki. Előfordul, hogy közvetlenül a változó után kell írnunk valamit. Ebben az esetben meg kell határoznunk a shell számára, hogy meddig tart a változó neve. Ezt a "{" és "}" jelekkel tehetjük meg: kati=zsuzsi echo ${kati}ka zsuzsika A változót az unset paranccsal törölhetjük. Ebben az esetben, ha továbbra is használjuk, akkor a shell egy üres szöveget helyettesít be. A set parancs használatával kiírattathatjuk a beállított változók listáját. Szükség lehet arra is, hogy a shell által indított programok is megkapják a környezeti változók értékét, mert a rendszerről, vagy a felhasználó preferenciájáról tudhatnak meg információkat. Ilyenkor az export kulcsszóval tesszük számukra elérhetővé: TERM= VT100 export TERM vagy összevonva: export TERM= VT100 A programok számára kiexportált környezeti változókat az env paranccsal listázhatjuk ki. 1. Hozzunk létre változót, majd írassuk ki az értékét! 2. Keressük meg a set parancs által adott listában! Nézzük meg az env parancs listájában! 3. Exportáljuk ki a változót, hogy a programok számára is elérhető környezeti változó legyen!

43 43 4. Újra nézzük meg mind a set, mind az env parancs listájában! 5. Töröljük a változót! 1. Az mc programmal nyissunk meg egy szövegállományt szerkesztésre! Jegyezzük meg, hogy mit látunk! 2. Állítsuk be az EDITOR változó értékét joe -ra, és exportáljuk ki! 3. Az mc programmal újból nyissuk meg az állományt szerkesztésre! 4. Töröljük az EDITOR változót! Speciális változók A shell-ek rendelkeznek néhány speciális változóval is. Ezen változók speciális szerepe abból adódik, hogy vagy automatikusan kapnak értéket, vagy értékük befolyásolja a shell működését. Nézzünk meg néhány ilyen változót: Változó Jelentés $# argumentumok száma $* az összes argumentum $@ ua. min $*, ha nincs "" között "$*" == "$1 $2...", de "$@" == "$1" "$2"... $- a shell által adott opciók $? az utolsó parancs visszatérési értéke $$ processz szám $! utolsó háttérben indított folyamat azonosítója $0 parancsállomány neve $HOME home könyvtár neve $IFS input mezőhatároló karakter $MAIL levelesláda állomány $CDPATH keresési út a cd parancshoz $PATH keresési út a programok indításához $PS1 elsődleges prompt $PS2 másodlagos prompt 1. Futtassuk le a true programot, majd nézzük meg a $? változó értékét! 2. Ismételjük meg az előbbi műveletet a false programmal is! 3. Írjuk ki a shell process azonosítóját! ($$) 4. Állítsuk át a PS1 változó értékét a következőre: '[\A \h:\w]\$ ' és értékeljük a hatását! (Az eredeti érték: '[\u@\h \W]\$ ') 5. Vizsgáljuk meg a PATH változó értékét! Fűzzük a lista végére az aktuális könyvtár jelzését, hogy a rendszer a lefuttatandó programot ott is keresse! A shell indulási folyamata Az első fájl, amelyet a shell betölt a bejelentkezéskor az /etc/profile. Ez az állomány tartalmazza az alapvető változó beállításokat a folyamatokhoz, és csak a rendszer

44 44 adminisztrátor módosíthatja. A változók beállításán kívül parancsokat is futtathat a felhasználók bejelentkezésekor. A $HOME/.bash_profile hasonló feladatokat lát el, mint az /etc/profile, azonban ezt a felhasználó is módosíthatja. A felhasználó ebben az állományban beállíthatja a saját környezetét. (Mint az a nevében is szerepel ez az állomány csak a bash shell esetén funkcionál. Léteznek azonban más állományok is más shell-ekhez.) A $HOME/.bashrc olyan beállításokat tartalmaz, amelyeket nem exportálunk ki az alfolyamatok számára. Az /etc/bashrc a rendszer szintű beállításokra szolgál és csak a rendszer adminisztrátor módosíthatja. Az /etc/bashrc a $HOME/.bashrc állományból hívódik, ezért a felhasználó dönthet akár úgy is, hogy nem használja. Vizsgáljuk meg a rendszerben a felsorolt állományokat! Alias Az alias parancs segítségével a felhasználó saját parancsokat hozhat létre, vagy leegyszerűsíthet gyakran használt parancsokat. alias p='ps aux' alias l='ls -l' Az alias parancs argumentum nélkül kiírja az alias-ok listáját az aktuális környezetben. Az unalias parancs segítségével pedig megszüntethetjük az alias-okat Parancs history A HISTSIZE változó által megadott számú utolsó parancsot eltárolja a rendszer a.bash_history állományban. A history parancs lehetővé teszi, hogy kilistázhassuk a megadott számú bejegyzést. history pwd 502 touch file 503 l 504 rm f file 505 l 506 history 6 Az fc -s parancs lehetővé teszi, hogy megint lefuttassunk egy parancsot a listából. Használhatjuk a sorszámát és a szöveg kezdetét is. fc -s 501 vagy pwd fc -s pw

45 45 /home/tomcat A fel és le nyíllal is választhatunk a parancsok közül Parancsállományok A legtöbb felhasználó azt hiszi, hogy a shell csak egy interaktív parancsértelmező, pedig a parancsértelmezés valójában egy programnyelv része. Mivel a parancsvégrehajtásnak az interaktív és a programozott módját egyaránt a shell-nek kell végrehajtania, ezért furcsa nyelvvé vált. A Linux rendszerben gyakran találkozhatunk parancsállományokkal, más névem shell script-ekkel. Egyszerűbb feladatokat gyakran gyorsabban elvégezhetünk velük, mintha programot írnánk. A rendszer adminisztrátorok különösen sokszor használják őket egyes funkciók elvégzésére. A legegyszerűbb változata, amikor parancsokat egymás után egy szöveg állományba írjuk. Ekkor a shell egymás után végrehajtja őket. Az állományt kétféle képen futathatjuk: Meghívunk egy shell-t és paraméterként átadjuk az állományt és a futtatási paramétereit: bash állomány [argumentum ] Vagy adunk futás jogot az állományra (x bit) és csak futtatjuk az állományt: állomány [argumentum ] Beépített parancsok Korábban már volt szó arról, hogy a shell-ek beépített parancsokat is tartalmaznak. Azonban ezeknek csak egy részét alkotják a shell működésével kapcsolatos parancsok. A másik csoportot azok a parancsok adják, amelyek a shell programnyelvét adják. A következőben a bash shell parancsait tekintjük át röviden. Parancs break[n] continue[n] cd arg, echo arg eval arg exec arg exit[n] export var pwd Jelentés ciklus elhagyása továbblépés a következő ciklusra könyvtár váltás az argumentum kiírása az argumentum végrehajtása az argumentum végrehajtása, de nem indul új shell megállás n értékkel var változó kiexportálása az aktuális könyvtár elérési útjának kiírása

46 46 Parancs read var... readonly var return[n] set[kapcs[arg]] shift[n] test ulimit[-fp][n] umask[ddd] unset var wait[n] Jelentés var változóba olvas a standard bemenetről csak olvashatóvá teszi a var változót visszatérés függvényből kapcsolók beállítása pozícionális paraméterek léptetése feltétel kiértékelése limit beállítás állományokra alapértelmezett jogok változó megszüntetése várakozás az n. folyamatra A break, continue, exit, return parancsok funkciója megegyezik más programozási nyelveknél használtakkal Feltételek kiértékelése A programok visszatérési értéke alapján elágazásokat, ciklusokat szervezhetünk. A 0 az igaz értéket, a nem 0 a hamis értéket jelenti. Azonban a test parancs segítségével lehetőségünk nyílik arra, hogy feltételeket adhassunk meg, és ez szolgáljon alapként az elágazáshoz. A feltételeket három csoportra oszthatjuk. Az első csoport a string-eket vizsgálja: Parancs test s test -z s test -n s test s1 = s2 test s1!= s2 Jelentés igaz, ha s nem null szöveg igaz, ha s nulla hosszúságú szöveg igaz, ha s nem nulla hosszúságú szöveg igaz, ha s1 szöveg egyezik s2 szöveggel igaz, ha s1 szöveg nem egyezik s2 szöveggel A feltételek második csoportja az numerikus értékeket vizsgálja: Parancs Jelentés test n1 -eq n2 igaz, ha n1 szám egyenlő n2-vel (numerikus =) test n1 -ne n2 igaz, ha n1 szám nem egyenlő n2-vel (numerikus!=) test n1 -lt n2 igaz, ha n1 kisebb mint n2 (numerikus <) test n1 -le n2 igaz, ha n1 kisebb vagy egyenlő mint n2 (numerikus <=) test n1 -gt n2 igaz, ha n1 nagyobb mint n2 (numerikus >) test n1 -ge n2 igaz, ha n1 nagyobb vagy egyenlő mint n2 (numerikus >=) A feltételek harmadik csoportja az állományok tulajdonságainak ellenőrzésére szolgál:

47 47 Parancs test -f f test -r t test -w f test -d f test -s f test -t fd Jelentés igaz, ha f egy létező könyvtár igaz, ha f olvasható igaz, ha f írható igaz, ha f könyvtár igaz, ha f létezik, és nem nulla hosszúságú igaz, ha fd egy megnyitott állomány leírója, és az egyben egy terminál Ezeket a műveleteket kombinálhatjuk is a! (tagadás), -o (vagy), -a (és) logikai műveletekkel, továbbá zárójelekkel csoportosíthatjuk is. A test parancsot "[", "]" jelekkel is helyettesíthetjük az alábbi módon: [ n1 -eq n2 ] A szögletes zárójelek esetén figyeljünk arra, hogy a szögletes zárójelek és a feltétel között egy-egy szóköz van Vezérlési szerkezetek A shell tartalmaz olyan eszközöket, amellyel elágazásokat és ciklusokat hozhatunk létre a parancsállományon belül (de akár egy parancssorban is a ; jel használatával). Most ezeket veszzük sorra if feltétel Az if feltétel használata esetén, ha a feltétel teljesül, vagyis a parancs visszatérési értéke 0, akkor a then ág hajtódik végre. Ha a feltétel nem teljesül, vagyis a parancs visszatérési értéke nem 0, akkor az else ág hajtódik végre. if parancsok then parancsok else parancsok fi if test $1 -eq 1 then echo 'egy' fi if [ $1 -eq 1 ] then echo 'egy' fi Általában a test szögletes zárójeles változatával találkozhatunk az if feltételeként, de használhatunk más programot is, ha követi a fenti visszatérési érték szabályokat for ciklus A for ciklus eltér a más programozási nyelvekben általában használt szintaktikától. Itt egy érték listát adunk meg, amelyen egyesével végigmegy a ciklus. A megadott változónak átadja az aktuális értéket és meghívja a do és done közötti parancsokat.

48 48 for i in w1 w2... do parancsok done for i in egy ketto harom do echo $i done while ciklus A while ciklus működése olyan, mint más programozási nyelvek esetén: amíg a feltétel igaz végrehajtja a do és done közti parancsokat. while parancsok do parancsok done while test $i -le 5 do i=`expr $i + 1` done while [ $i -le 5 ] do i=`expr $i + 1` done until ciklus Az until ciklus is úgy működik, ahogy már más programozási nyelvek esetén megszokhattuk, vagyis a while-hoz képest negált a feltétel vizsgálat. until parancsok do parancsok done until test $i -le 5 do i=`expr $i + 1` done until [ $i -le 5 ] do i=`expr $i + 1` done case szerkezet A case szerkezet a változó értéke szerint kiválasztja az azzal megegyező minta ágát, és végrehajtja a parancsokat. A "*" minta az alapértelmezett. case word in minta1) parancsok;; minta2) parancsok;;... esac case $1 in 1) echo egy;; 2) echo ketto;; *) echo sok esac Shell script példa Egy script amely megszámolja a könyvtárban található állományokat az alábbiak szerint néz ki: #!/bin/bash # # file szamlalo # n=0

49 49 for i in * do if [ -f $i ] then n=`expr $n + 1` fi done A script-ek első sorában mindig megadjuk a futtató shell nevét általában elérési úttal a következő formában: #!<shell> A kommenteket a "#" jellel kezdődően írhatunk az állományba. A példában az n változó értékét 0-ra állítottuk. Ez után a for ciklus végig lépked az adott könyvtár bejegyzésein (mivel a * helyére a shell behelyettesíti a könyvtár állományait és könyvtárait). Az if feltételében megvizsgáljuk, hogy a bejegyzés egy állomány-e. Ha igen, akkor a számláló értékét eggyel megnöveljük. Módosítsa a scriptet úgy, hogy a könyvtárban található a vagy b betűvel kezdődő, illetve az a vagy b betűvel végződő, futtatható állományokat számolja össze! Erőforrás kontroll Korábban a beépített parancsok listájában már találkozhattunk az ulimit paranccsal. Ez a parancs lehetővé teszi, hogy korlátozzuk a shell és az általa futtatott programok erőforrás felhasználását. A parancs formátuma: ulimit [-SH] [opció limit] Az S és a H opció határozza meg, hogy soft limitet, vagy hard limitet állítunk. A hard limitet ha már egyszer beállítottuk, akkor nem lehet növelni. A soft limit ezzel szemben megnövelhető egészen a hard limit szintjéig. Amennyiben nem adjuk meg, hogy soft vagy hard limitet állítunk, akkor mindkettő állítódik. A limit értéke egy egész szám, amelynek mértékegysége az állított paramétertől függ. Ezen kívül használhatjuk a hard, soft, és unlimited kulcsszavakat is, amelyek a hard limit, a soft limit, vagy a nincs limit értékeket jelentik. Az állítható paraméterek: Paraméter Leírás

50 50 Paraméter Leírás -a Az aktuális limit értékek kiírása. -c A core 7 állomány maximális mérete. -d A folyamatok adatszegmensének maximális mérete. -f A shell által létrehozható állományok maximális mérete. -l A maximum méret ami a memóriába blokkolható. -m A maximum memória rezidens rész mérete. -n A nyitott állományleírók maximális száma. -p A csővezetékek mérete 512B blokkokban. -s Maximum stack méret. -t A maximum processzoridő másodpercben. -u Az egy felhasználó által indítható maximális processzek száma. -v A shell által használható maximális virtuális memóriaméret. A méretek, ahol nem emeltük ki külön, ott 1kB egységekben értendő. Amennyiben nem adjuk meg egyik opciót sem, akkor a f opció az alapértelmezett. 7 A core állomány a processzek összeomlásakor a rendszer által generált memória pillanatfelvétel, amely alapján a gdb hibakereső a fejlesztő számára hasznos információkkal szolgálhat. Azonban ezek a pillanatfelvételek a folyamattól függően jelentős méretűek lehetnek, ezért érdemes a méretüket korlátozni a rendszer védelmében. Természetesen, ha a korlátozás által az állomány csonka lesz, akkor a hibakereső számára már használhatatlan.

51 Segédprogramok és szűrők A find parancs A find parancs rekurzívan végignézi az adott könyvtárból nyíló alkönyvtárakat. Keresi bennük a kifejezésnek megfelelő állományokat, majd kiírja a talált állományok listáját, vagy feladatokat hajt végre az adott állományokon. A parancs formája: find <elérési út> <kifejezés> A leggyakrabban használt eset, amikor megadott nevű állományokat keresünk a könyvtárak sűrűjében: find. -name fontos./doksik/fontos./fontos Nézzünk meg még néhány opciót, amelyekkel összetettebb keresési feltételeket adhatunk meg: Paraméter Leírás Az állomány megfelel, ha a neve a fájl paraméterrel egyezik. A shell által használt állománynév helyettesítő szintaxis -name fájl használható, de idézőjelek közé kell tenni, hogy ne a shell értelmezze. Az állomány típusát specifikálhatjuk, ahol típus az alábbiak közül az egyik karakter: b - blokk speciális állomány, c - karakter speciális állomány, -type típus d - könyvtár, f - normál állomány, 1 - szimbolikus link, p - named pipe, s - socket. Az állomány megfelel, ha az állomány tulajdonosa az uname -user uname nevű felhasználó. -nouser Az állomány megfelel, ha nincs tulajdonosa regisztrálva. -group gname Az állomány megfelel, ha az állomány csoportja a megadott. Az állomány megfelel, ha az állomány csoportja nincs -nogroup regisztrálva. -perm onum Az állomány megfelel, ha a joga megegyeznek a megadottal.

52 52 Paraméter -perm -onum -perm +onum -size N -empty -amin N -atime N -cmin N -ctime N -mmin N -mtime N -exec parancs -ok parancs -print -xdev Leírás Az állomány megfelel, ha az onum érték minden 1-es bitje az állomány jogaiban is 1. Az állomány megfelel, ha az onum érték valamelyik 1-es bitje az állomány jogaiban is 1. Az állomány megfelel, ha az állomány N blokk hosszúságú (512 byte van egy blokkban). Az állomány vagy könyvtár megfelel, ha üres. Az állomány megfelel, ha utoljára N perce fértek hozzá. Az állomány megfelel, ha utoljára N napja fértek hozzá. Az állomány megfelel, ha utoljára N perce módosult a státusza. Az állomány megfelel, ha utoljára N napja módosult a státusza. Az állomány megfelel, ha utoljára N perce módosították. Az állomány megfelel, ha utoljára N napja módosították. Az állomány megfelel, ha a végrehajtandó program 0 visszatérési értékkel tér vissza. A parancs végét egy pontosvessző ";" jelzi, amit a shell miatt idézőjelek közé kell zárni. Az állománynevet "{}" jelekkel helyettesíthetjük. Használhatjuk úgy is, hogy a talált állományokra a megadott parancsot végrehajtsa. Megegyezik az -exec paranccsal, de a parancs végrehajtása előtt jóváhagyást kér a felhasználótól. Hatására az aktuális állomány teljes nevét kiírja a képernyőre. Hatására a find program nem megy át másik kötetre (csatolt eszközre). Az opciókat a következő jelekkel kombinálhatjuk:! (nem), -a (és), -o (vagy). Továbbá zárójelekkel csoportosíthatjuk, azonban a zárójeleket idézőjelekbe kell tenni, hogy a shell ne értelmezze. Az N értékek helyén a számok mellett használhatjuk a + és - jeleket: n - pontosan az adott szám +n - több (nappal ezelőtt) mint n -n - kevesebb (nappal ezelőtt) mint n 1. Keressük meg az állományrendszeren az egyik felhasználó szimbolikus link-jeit! 2. Keressük meg az állományrendszeren a felhasználó azon állományait, amelyre valakinek végrehajtási joga van! 3. Keressük meg az állományrendszeren azokat a rejtett állományokat és könyvtárakat, amelyeket kevesebb, mint egy napja módosítottak! A find parancs -exec paraméterével programokat is lefuttathatunk az egyes állományokra. Ez lehet a keresést szolgáló állomány tesztelő program, de ha egy -a

53 53 paraméterrel illesztjük a keresés végére, akkor keresés eredményein végrehajtott művelet is. A find a {} jelek helyére a talált állományok nevét helyettesíti be és így hajtja végre a parancsot minden állományra. A parancsot ";" jellel kell zárnunk. Hogy a shell ne értelmezze idézőjelbe kell tennünk, vagy "\" jelet kell tennünk elé. Nézzünk egy példát, ahol a program futtatása az állomány tesztelését szolgálja: find -exec grep -q "alma" {} ";" -a -print És egy másik példát, ahol az eredmény állományokon végzünk el műveletet: find -name "*fontos" -a -exec ls -l {} ";" Minden fontos nevű állományt nevezzünk át fontos.old -ra! Ha nem vagyunk benne biztosak, hogy minden állományra szeretnénk végrehajtani a parancsot, akkor hasznos ötlet az -ok paraméter használata az -exec helyett A head és tail parancsok A head parancs a megadott állomány vagy a standard bemenet első néhány sorát írja ki: head [-szám] [állomány]... Ha -szám argumentum meg van adva, akkor ennek megfelelő számú sort ír ki, egyébként 10 sort. head -5 myfile ls -l head -12 A tail parancs a megadott állomány vagy a standard bemenet utolsó néhány sorát írja ki: tail [+ -szám] [állomány] Ha +szám argumentum van megadva, akkor a kiírás a megadott állomány elejéhez képest a megadott sorban kezdődik, és az állomány végéig tart. Ha -szám argumentum van megadva, akkor a kiírás a megadott állomány végéhez képest a megadott sorban kezdődik, és az állomány végéig tart. tail -20 myfile tail +20 myfile Az -f opcióval is használhatjuk a tail parancsot, amely azt eredményezi, hogy a program nem áll le az állomány végénél, hanem végtelen ideig próbálkozik tovább olvasni. Ezáltal folyamatosan követhetjük a kimenet állományok vagy log állományok változását. Ilyenkor <ctrl-c>-vel állíthatjuk le.

54 A sort parancs A sort az összes megnevezett állomány sorait együtt sorba rendezi, és a rendezés eredményét kiírja a standard kimenetre: sort [-t<mezőhatároló>] [sort mező...] [-opciók] [állomány]... Ha nem adunk meg állományt, vagy ez a "-" karakter, akkor a standard bemenetet használja bemenetként a program. Az opciók mezőben használható paraméterek: Paraméter Leírás -b A kezdő szóközöket és tabulátorokat figyelmen kívül hagyja a mezők határának meghatározásánál. -d Szótárrendezés. Csak a betűk, számjegyek és szóközök számítanak az összehasonlításban. -r Megfordítja a rendezés sorrendjét. -n Numerikus rendezés. Nézzünk néhány példát a sort használatára: A példaállomány az autok : cat autok lamborghini:2 ferrari:4 porsche:10 lotus:5 Egyszerű rendezés az első karakter alapján: sort autok ferrari:4 lamborghini:2 lotus:5 porsche:10 Rendezés a sorok második karaktere alapján: sort +0.1 autok lamborghini:2 ferrari:4 porsche:10 lotus:5

55 55 A -t paraméterrel megadjuk, hogy az oszlop választó karakter a :. Ez után a második oszlop alapján rendezünk, de karakteresen: sort -t: +1 autok porsche:10 lamborghini:2 ferrari:4 lotus:5 Most ugyanezt elvégezzük numerikusan: sort -t: -n +1 autok lamborghini:2 ferrari:4 lotus:5 porsche: A uniq parancs A uniq egy nagyon egyszerű, de sokszor használt parancs. A sort paranccsal elvégzett rendezés után a duplikált sorokat eltávolíthatjuk. A -d paraméterrel csak a duplikált sorokat írja ki egy példányban, a -u paraméterrel pedig csak a nem duplikált sorokat A cmp és diff parancsok Mind a cmp, mind a diff parancs az állományok összehasonlítására szolgál. Azonban míg a cmp parancs csak egyszerű byte összehasonlítást végez, addig a diff parancs a szövegállományok sokkal komolyabb összevetésére képes. A cmp parancs két állományt binárisan hasonlít össze. Kiírja ha az állományok eltérnek, és megadja az eltérés pozícióját. Használata a következő: cmp [-ls] állomány1 állomány2 A diff parancs ennél sokkal komolyabb összehasonlítást végez. Értelmezi a szövegállományokat és megpróbálja megadni, hogy mely sorokat kell lecserélni, hogy az egyikből a másikat kapjuk. Törekszik arra, hogy úgy adja meg az eltéréseket, hogy a lista minimális legyen. Az alábbi módon használhatjuk: diff [-opciók] állomány1 állomány2 diff [-opciók] könyvtár1 könyvtár2 Ha mind a két paraméter katalógus, akkor a diff először névsorba rendezi a katalógusokban található állományneveket, majd azokra a szöveges állományokra, amelyek különböznek, a normál módon lefut a program.

56 56 Különböző opciókkal megadhatjuk, hogy az összehasonlításnál milyen karaktereket vagy sorokat hagyjon figyelmen kívül, milyen legyen a kimenet formátuma. Programfejlesztés esetén a diff nagy segítséget jelenthet a verziók kezelésénél, vagy a patch-ek előállításánál. A nagyobb szoftverek (például a kernel) esetén jól bevált gyakorlat, hogy a diff által generált különbség állományokat (patch file) is letölthetővé teszik. Így ha már rendelkezünk a forrás állományok korábbi verziójával, akkor nem szükséges az egész csomagot újból letölteni, elegendő a különbségfájlt. Majd ez alapján a patch programmal elvégeztethetjük a módosításokat, hogy a csomagunk az új verzió állapotába kerüljön A grep parancs A grep (Global Regular Expression Print) parancs a megadott mintát keresi az állományokban, és az illeszkedő sorokat kiírja a standard kimenetre. A minta lehet egy egyszerű szöveg, azonban a grep képes a reguláris kifejezésnek nevezett, speciális jelentésű karakterekkel kiegészülő szövegminta használatára is. grep [opciók] minta [állomány...] Ha egynél több állománynevet adtunk meg, akkor a megtalált sorok elé kiírja azt is, hogy melyik állományban vannak. Az alábbi opciókkal befolyásolhatjuk a grep működését, a mintaillesztési szabályt (-i, - w), vagy az eredményként megjelenő információkat (-l, -n, -v). Paraméter Leírás -i A kis- és nagybetűket azonosnak tekinti. -l Csak az állományok nevét írja ki. -n Minden kiírt sor előtt a sor sorszáma is szerepel. -v Inverz működés: a nem illeszkedő sorokat írja ki. -w A mintát, mint szót keresi. Létezik két módosult változata az alap grep utasításnak: Az egrep mintaillesztője a kiterjesztett reguláris kifejezéseket is ki tudja értékelni. (Egyenértékű a grep -E utasítással.) Az fgrep mintaillesztője csak egyszerű szöveget használ. (Egyenértékű a grep - F utasítással.) Egyszerű reguláris kifejezések A szövegek feldolgozása során gyakori feladat a mintaillesztés. A minta megadására az egyszerűbb használhatóság érdekében közös szintaktikát használnak a programok. Ezt hívjuk reguláris kifejezésnek.

57 57 Egy szövegmintában általában minden karakter önmagát jelenti, azaz a mintában az adott helyen elő kell fordulnia, de egyes karaktereknek speciális a jelentése, így adhatunk meg bonyolultabb mintát. Karakter Jelentés Az utána írt speciális karakter is karakterként kerül a \ mintába, kivéve: újsor-jel, számjegy, "(" vagy ")". ^ Sor eleje. $ Sor vége.. Egy darab valamilyen karakter. * 0 vagy több valamilyen karakter. Valamelyik karakter a listából, hasonlóan, mint a shellnél. Használható a [a-c] módon is. [abc] [^abc] Bármely karakter, ami nem "a" vagy "b" vagy "c". Ezen karakterek egy részét a shell is értelmezi. Hogy ez biztosan ne okozzon problémát a minta string-et egyszeres idézőjelek (' ') közé célszerű tenni. A reguláris kifejezések metakarakterei hasonlóak a shell-éhez, azonban akad néhány eltérés. Továbbá a reguláris kifejezések jóval több speciális karaktert tartalmaznak. Ez a lista a fenti táblázatban megadottnál bővebb, azonban itt csak a legáltalánosabbak, a grep parancs által is értelmezhetőeket soroltuk fel. Az egrep esetében lehetőségünk van a többi kifejezést is használni, azonban ezekre most nem térünk ki. Nézzünk néhány példát: grep minta$ szoveg Azokat a sorokat írja ki a "szoveg" állományból, amelyeknek a végén a minta szó szerepel. cat szoveg grep '[pt]i.os' Olyan sorokra illeszkedik, amelyekben szerepel egy szövegrészlet, ahol az első betű "p" vagy "t", majd "i", egy meghatározatlan karakter és "os". Például piros vagy tilos. ls -l grep ^d A long listából azokat a sorokat írja ki, amelyek d betűvel kezdődnek, vagyis könyvtárakat.

58 Folyamatok A programok elindításakor létrejön egy folyamat, amely tartalmazza a program kódját, adatait és a környezeti beállításokat is (munkakönyvtár, környezeti változók, stb.). Minden folyamathoz az operációs rendszer egy egyedi folyamatazonosítót (Process ID) és egy folyamat csoportazonosítót (Process Group ID) rendel. Egy folyamatot (kivéve a legelső folyamatot, az úgynevezett init-et) mindig egy másik folyamat hoz létre. A létrehozó folyamatot szülő folyamatnak (Parent Process), a létrehozott folyamatot gyermek folyamatnak (Child Process) nevezzük. Az init folyamatot kivéve minden folyamatnak van szülője. A gyermek a szülő másolata, csak az azonosítója különbözik. Így többek közt örökli a megnyitott állományok leíróit, az umask, ulimit értékeit, szignálok kezelésére vonatkozó beállításokat. A szülő-gyermek reláció alapján egy fa struktúrát is felrajzolhatunk. Ezt a pstree paranccsal nézhetjük meg. Amennyiben egy szülő folyamat előbb szűnik meg, mint annak gyermek folyamatai, a gyermek folyamatok árvákká (orphans) válnak, és szülőjük automatikusan az init folyamat lesz. A folyamatok tudnak még a szülő folyamat azonosítójáról (Parent Process ID) is A folyamatok monitorozása A folyamatokat a ps paranccsal listázhatjuk ki. ps [opciók] Alapértelmezésben a ps parancs csak azokat a folyamatokat listázza ki, amelyeket az adott terminálról indítottunk. A listában csak a folyamat azonosítója, a terminál, a státusz, az eltelt idő, és a parancs neve szerepel. Azonban opciókkal nagyban befolyásolhatjuk a kilistázott folyamatokat és a megjelenített információkat. Folyamatok kiválasztása: Paraméter Leírás -A Hatására az összes folyamatról információt kaphatunk. -N Negálja a folyamatválasztást. -a A terminálokhoz kapcsolódó összes folyamat listáját kapjuk, csak a shell-ek nem szerepelnek benne. a Az adott terminál folyamatait listázza ki. r Csak a futó folyamatokat írja ki. -u user A megadott felhasználó folyamatait listázza ki. x Azokat a folyamatokat is kiírja, amelyek nem tartoznak terminálhoz.

59 59 A kimenet formázása: Paraméter Leírás -f un. teljes listát ad. -j Kiírja az ún. job control információkat is. -l Hosszú listaformátummal jeleníti meg. -o formátum Felhasználó által definiált formátum. j lásd -j l lásd -l o formátum lásd -o A top parancs segítségével folyamatosan is monitorozhatjuk a folyamatokat. Alapértelmezésben a CPU használatának sorrendjében listázza ki az egyes processzeket, azonban ezt könnyen átrendezhetjük. Segítséget a h vagy? gombokkal kaphatunk Háttérfolyamatok A háttér folyamat indítását már korábban is tárgyaltuk. parancs & Azonban ezt a módszert csak rövid folyamatok esetén használjuk, mert ha kilépünk a shell-ből, akkor a rendszer szignáljára leáll! A másik jellemzője, hogy a program kimenete ilyenkor a terminál. Hosszú folyamatok esetén a nohup parancsot használhatjuk: nohup parancs & A nohup parancs megmondja a folyamatnak, hogy ne vegye figyelembe a 01 és 03 szignált (HANGUP és QUIT). Ezáltal a folyamat tovább fut akkor is, ha a felhasználó kilép. (A szignálokat rövidesen bővebben is áttekintjük.) A nohup által indított folyamat kimenete nem kerülhet a terminálra, mert lehet, hogy a felhasználó rövidesen kijelentkezik. Ha a parancssorban nem irányítjuk át a kimenetet, akkor a nohup parancs automatikusan átirányítja a nohup.out állományba. Ha már létezik a nohup.out fájl, akkor hozzáfűzi a végéhez. Mivel minden folyamatnak kell, hogy legyen szülő folyamata, ezért amikor kilépünk a rendszerből, a nohup által indított folyamatnak az init folyamat lesz a szülője.

60 Kommunikáció a folyamatokkal, megszüntetés A kill parancs segítségével szignálokat küldhetünk a folyamatnak, így kommunikálhatunk velük. A kill parancs szintakszisa: kill [-szignál] folyamatszám... Ha nem adunk meg szignált, akkor az alapértelmezés a TERM (15) szignál. Ezzel a szignállal leállíthatjuk a folyamatot, ha nincsen maszkolva. Ha ez nem sikerül, akkor keményebb eszközhöz kell nyúlnunk, ez a KILL (9) szignál. Ezt már nem maszkolhatják a folyamatok. Azonban óvatosan bánjunk vele, mert nyitott állományokat, vagy lock-okat hagyhat maga mögött. A szignálokat a kill -l paranccsal listázhatjuk ki. Néhány fontosabb: Szignál SIGHUP (1) SIGINT (2) SIGQUIT (3) SIGKILL (9) SIGTERM (15) Leírás Akkor generálódik, ha kilépünk, miközben a folyamat még fut. interrupt karakter (ctrl-c) quit karakter (ctrl-\) A legerősebb szignál, ezt nem hagyhatja figyelmen kívül a program. (Csak végső esetben javasolt.) Folyamatok leállítása. Az alapértelmezett érték. A hangup (SIGHUP (1)) szignált akkor kapja a folyamat, amikor a szülője leállt. Például ha a shell-ből indítottunk egy háttérfolyamatot, majd kilépünk. Az interrupt szignált (SIGINT (2)) akkor generálódik, amikor az interrupt gombot (ctr-c) használjuk. A quit szignál (SIGQUIT (3)) a quit kombináció esetén (ctrl-\) jön létre Folyamat vezérlése a Bash shell-ben Néhány további műveletre is lehetőségünk nyílik a bash shell használata esetén: Az előtér folyamatot felfüggeszthetjük a <ctrl-z> kombinációval. Ez nem szünteti meg a folyamatot, csak megállítja a pillanatnyi állapotában. Amikor megállítjuk a folyamatot, a shell megjelenít egy job számot, amivel később hivatkozhatunk rá. Ha háttér folyamatként szeretnénk folytatni, akkor az a bg paranccsal tehetjük meg. bg <job> Ha megint előtérbe akarjuk hozni, akkor azt az fg paranccsal tehetjük meg. fg <job>

61 61 A jobs paranccsal kilistázhatjuk a felfüggesztett- és háttérfolyamatokat. A job számot használhatjuk a kill parancs paraméterezésére is, így nem kell a processz azonosítót megjegyezni. kill [-szignál] %job Prioritás állítás Lehetőségünk van arra, hogy az egyes folyamatok prioritását módosíthassuk. Ezáltal megmondhatjuk a kernel processz ütemezőjének, hogy mely taszkokat részesítsen előnyben, és mely taszkok nem fontosak. A prioritást a renice paranccsal állíthatjuk be. A renice szintaxisa: renice <prioritás> [[-p] pid...] [[-g] pgrp...] [[-u] user...] Egy vagy több folyamatot is megadhatunk egyszerre. Felsorolhatjuk a folyamatok azonosítóját (-p pid), hivatkozhatunk folyamat csoportokra is (-g pgrp), vagy egy felhasználó összes folyamatának állíthatjuk a prioritását (-u user), vagy kombinálhatjuk is ezeket. A leggyakrabban használt alak, amikor csak egy folyamat prioritását módosítjuk: renice Ahol az 1033-as azonosítóval rendelkező folyamat nice szintjét 20-ra állítjuk. A 0 prioritás a folyamatok alapértelmezett prioritása. Ehhez képest a pozitív értékek egyre nagyobb előzékenységet jelentenek. A maximum érték a 20. Ha egy folyamat nice értéke 20, az azt jelenti, hogy csak akkor fut, amikor más folyamatnak nincs szüksége a processzorra. A felhasználók csak 0 és 20 között állíthatják az értéket. A rendszergazda ellenben mínusz értékeket is beállíthat egészen -20-ig. Ezzel megnövelheti a folyamat által kapott processzoridő arányát. Természetesen ezzel óvatosan kell bánnunk, hogy ne szívjuk el az erőforrásokat más processzek elől.

62 Chroot Időnként szembekerülhetünk olyan problémával, hogy átmenetileg meg kellene változtatnunk a root könyvtárt egy program lefuttatásának idejére. Ennek egyik tipikus esete, amikor egy rendszer visszaállítás során felcsatolunk egy root partíciót valamely pontra a könyvtárstruktúrában. Majd ezen a köteten szeretnénk lefuttatni egy programot úgy, hogy az root könyvtárnak a kötet eredeti root könyvtárát lássa. Ilyenkor a megoldás a chroot parancs használata, amely indít egy olyan shellt, ami a megadott könyvtárat látja root könyvtárnak. chroot <új gyökér könyvtár> A másik ok, amiért a gyökér könyvtárat átállíthatjuk egy program működési területének lekorlátozása. Így ha a szolgáltatást fel is törnék az úgy gyökérnek megadott alkönyvtárnál nem juthatnak feljebb a könyvtárstruktúrában, ezáltal nem szerezhetnek hozzáférést a rendszer kényesebb részeihez. 4.4 A rendszer elindulása Egy operációs rendszer betöltődése, elindulása első pillantásra mindig is kicsit mágikus dolognak tűnik. Általában ha egy, a háttértárolón lévő programot szeretnénk betölteni, lefuttatni, akkor beírjuk a nevét a shell-be, vagy rákattintunk az ikonjára, és az operációs rendszer elindítja nekünk. Azonban hogyan történik mindez, amikor a gép indulásakor magát az operációs rendszert szeretnénk betölteni, elindítani? A Linux kernel betöltését és elindítását az ún. kernel loader végzi el. Ilyen program a LILO (The Linux Loader), a LOADLIN, a GRUB, és még sorolhatnánk. Ahhoz, hogy ez a program betöltődjön szükséges egy kis hardver segítség. Általában a gép csak-olvasható memóriájában egy kis program foglal helyet (x86 architektúra esetén ennek neve BIOS), amely megtalálja ezt a kernel loader-t, betölti és futtatja. Vagyis összegezve, egy kicsi beégetett program lefut és elindít egy valamivel nagyobb betöltő programot. Ez a betöltő program pedig elindít egy még nagyobb programot, nevezetesen az operációs rendszer kernel programját. 8 A kernel manapság általában tömörített formában foglal helyet a lemezeken, és képes önmagát kitömöríteni. Így az első lépés a kernel kitömörítése, majd a folyamat a kitömörített kernel kezdő címére ugrik. Ezt követi a hardver inicializálása (memória kezelő, megszakítás táblák, stb.), majd az első C függvény (start_kernel()) meghívása. Ez a függvény, amely egyben a 0-s azonosítójú processz, inicializálja a kernel alrészeit. Az 8 Lehetőség van arra, hogy a betöltő programokat még tovább láncoljuk. Ezáltal lehetővé válik a több operációs rendszert tartalmazó gépeken, hogy induláskor kiválaszthassuk a számunkra szükségeset.

63 63 inicializáció végén a 0-s processz elindít egy kernel szálat (neve init), majd egy üresjárati ciklusba (idle loop) 9 kezd, és a továbbiakban a 0-s processz szerepe már elhanyagolható. Az init kernel szálnak, vagy processznek a processz azonosítója 1. Ez a rendszer első igazi processze. Elvégez még néhány beállítást (elindítja, a fájlrendszer szinkronizáló és swap kezelő folyamatokat, feléleszti a rendszer konzolt, mount-olja a root fájlrendszert), majd lefuttatja a rendszerinicializáló programot (nem keverendő a korábban említett processzel). Ez a program valamelyik a következők közül (az adott disztribúciótól függ): /etc/init, /bin/init, /sbin/init. 10 Az init program az /etc/inittab konfigurációs állomány segítségével új processzeket hoz létre, és ezek további új processzeket. Például a getty processz létrehozza a login processzt, amikor a felhasználó bejelentkezik. Ezek a processzek mind az init kernel szál leszármazottai LILO TODO Loadlin TODO GRUB A GNU GRUB egy jól használható, jó pár funkcióval rendelkező boot loader. Képes a szabad operációs rendszerek széles skáláját betölteni, de a boot loader-ek láncolásával a zárt forráskódúakat is. A GRUB egyik fő tulajdonsága a flexibilitás. Értelmezni és kezelni tud több állományrendszert is, ezért anélkül is képes betölteni a kernelt, hogy a pozícióját előre megadnánk/letárolnánk. Induláskor a GRUB beolvassa a konfigurációs állományát. A konfigurációs állomány alapján egy menü interfészt jelenít meg (karakteresen, vagy grafikusan), ahonnan kiválaszthatjuk az indítani kívánt kernelt, vagy operációs rendszert GRUB installálása floppy lemezre A GRUB boot lemez létrehozásához annyit kell tennünk, hogy a csomag stage1 és stage2 állományát felírjuk a lemez elejére. (Ez a művelet a lemez tartalmának elveszésével jár!) # cd /usr/share/grub/i386-redhat # dd if=stage1 of=/dev/fd0 bs=512 count=1 1+0 records in 9 Amikor a rendszernek nincs semmi feladata, az ütemező ezt az üresjáratban futó folyamatot futtatja. 10 Amennyiben egyik helyen sem találja meg a rendszer az init programot, akkor megpróbálja feldolgozni az /etc/rc állományt, és indít egy shell-t hogy a rendszergazda megjavíthassa a rendszert.

64 records out # dd if=stage2 of=/dev/fd0 bs=512 seek= records in records out # GRUB installálása merevlemezre A disztribúciók telepítéskor automatikusan installálják a boot manager-t is. Azonban előfordulhat, hogy ezt utólag kézzel kellene megtennünk. Erre mutatunk egy rövid példát: 1. Első lépésként el kell indítanunk a GRUB shell programját: # grub 2. A következő lépés, hogy megadjuk a GRUB root eszközét. Ez nem feltétlenül a root partíciót jelenti, hanem azt a partíciót, amely a GRUB állományait (stage1, stage2, stb.) tartalmazza. Ez RedHat disztribúciók esetén a /boot/grub/ könyvtárat tartalmazó partíció. grub> root (hd0,0) A (hd0,0) az első meghajtó első partícióját jelöli. Ha nem vagyunk biztosak a partícióban, akkor meg is kereshetjük. grub> find /boot/grub/stage1 Figyeljünk arra, hogy ebben az esetben az állomány elérési útjának nem a rendszerünkben elfoglalt helyét kell megadnunk, hanem a partíció root könyvtárához képest elfoglalt helyét. Vagyis ha a /boot könyvtár külön partíción helyezkedik el, akkor a parancs alakja: grub> find /grub/stage1 3. Ha beállítottuk a root eszközt, akkor a következő lépés a GRUB installálása. Egyrészt installálhatjuk a meghajtó boot szektorába: grub> setup (hd0) Másrészt a partíció boot szektorában is elhelyezhetjük: grub> setup (hd0,0) Ha a lépések végrehajtása során nem kaptunk hibaüzeneteket, akkor a rendszerünk indulásra kész.

65 GRUB konfigurációs állomány A GRUB konfigurációs állománya általában /boot/grub/grub.conf vagy /etc/grub.conf néven található meg a telepítéstől függően. Tekintsük át néhány fontosabb parancsát: # grub.conf generated by anaconda A kommenteket itt is a sor eleji # karakter jelzi. default 0 A menüből az első elem (0-tól indexelődik) lesz az alapértelmezett. timeout 30 Ha 30 másodpercig nem ütünk le billentyűt, akkor a GRUB automatikusan elindítja az alapértelmezett menüpontot. Az egyes menüelemek konfigurációs részei az indított operációs rendszertől függnek. Egy Linux rendszer esetén: title Red Hat Linux ( ) root (hd0,0) kernel /boot/vmlinuz ro root=label=/ initrd /boot/initrd img Az első sor a menüben látható szöveg. Ezt követi a root partíció beállítása. Majd a kernel állomány neve és opciói, illetve az initrd állomány neve. Egy MS Windows rendszer esetén: title MS Windows rootnoverify (hd0,1) chainloader +1 Az első sor itt is a menü szöveget tartalmazza. Majd beállítjuk az MS Windows rendszer root partícióját. (A rootnoverify parancs annyiban tér el a root parancstól, hogy nem próbálja meg az állományrendszert felcsatolni.) Majd a partíció első blokkján található másik boot loader-t töltjük be. Számos további parancsot is használhatunk a konfigurációs állományban. Ezekről a GRUB dokumentáció nyújt bővebb információt Az inittab állomány A kernel a kezdeti feladatainak végrehajtása és a root állományrendszer csatolása után elindítja az init programot, amely gondoskodik a további rendszer inicializálási lépések

66 66 végrehajtásáról. Ilyen feladatok a hálózati eszközök beállítása, a konzol konfigurálása, az USB eszközök inicializálása, az állományrendszerek ellenőrzése és felcsatolása, stb. Majd ezután következik a különböző szolgáltatások elindítása, a virtuális konzolok, és esetleg az X felület létrehozása. Ezeket a feladatokat az /etc/inittab állomány alapján végzi el. Az init program több futás szintet definiál. A futási szint egy konfigurációs összeállítás, amelyben összeállíthatjuk, hogy a rendszer egyes állapotaiban milyen szolgáltatások fussanak és melyek nem. A használható futási szintek a következők: Szint Leírás 0 Fenntartott. A rendszer leállítása. Fenntartott. Egy felhasználós mód. Minden hálózati és felhasználói 1 szolgáltatás leáll. A felhasználók nem léphetnek be, csak a rendszergazda kap egy shell-t a konzolon. 2 Több felhasználós mód hálózat nélkül. 3 Több felhasználós mód. 4 Nem használt. 5 Több felhasználós mód, X felülettel. 6 Fenntartott. A rendszer újraindítása. A Linux rendszerek esetén ezek is működő futás szintek, azonban ezt a 7-9 dokumentumok általában nem említik. Ennek oka, hogy a tradicionális Unix rendszerekben csak a 0-6 futás szintek léteznek. A 0, 1, 6 szintek a rendszer működéséhez vannak fenntartva. A többi futási szint lényegében az adminisztrátor által szabadon konfigurálható. Leírásuk inkább ajánlás, amely alapján célszerű beállítani a rendszerünket, illetve amit a disztribúció készítői is szem előtt tartottak az alapértelmezett konfiguráció összeállításakor. Az /etc/inittab állomány sorainak szintaxisa a következő: azonosító:futási szintek:akciók:processz Az azonosító egy egyedi 1-4 karakteres szöveg, amely a bejegyzést azonosítja. (Régi rendszereknél előfordul, hogy a limit 2 karakter.) Terminálok esetén az azonosítónak a tty előtag utáni résznek kell lennie. Például: tty1 esetén 1. Ellenkező esetben problémáink lehetnek a bejelentkezéssel. A futási szinteknek azon szintek listáját kell megadnunk, ahol az adott akciót végre kell hajtani. Az akció az init program által definiált műveleteket jelenti: Akció respawn Leírás A processz mindig induljon újra, ha valamiért leállna.

67 67 Akció wait once boot bootwait off initdefault sysinit powerwait powerfail powerokwait powerfailnow ctrlaltdel Leírás A processz egyszer induljon el, amikor az adott futási szintre lépünk, és az init várja meg amíg véget ér. A processz egyszer induljon el, amikor az adott futási szintre lépünk. A processz a rendszer indulásakor induljon el. (A futási szint mezőt figyelmen kívül hagyja.) Mint a boot, csak az init megvárja, amíg véget ér. (A futási szint mezőt figyelmen kívül hagyja.) Nem csinál semmit. Speciális bejegyzés. A kezdő futási szintet adja meg. Ha hiányzik, akkor az init rákérdez. (A processz mezőt figyelmen kívül hagyja.) A processz a rendszer indulásakor fog elindulni, még a boot és a bootwait előtt. (A futási szint mezőt figyelmen kívül hagyja.) A processz akkor fog végrehajtódni, amikor elmegy a tápfeszültség. (UPS használata esetén.) Az init megvárja, amíg véget ér. Mint a powerwait, csak az init nem várja meg a végét. Akkor fut le a processz, ha visszajött a tápfeszültség. Ez a processz akkor fog lefutni, ha az UPS értesíti a gépet, hogy rövidesen kimerül. A processz akkor hajtódik végre, ha megnyomjuk a CTRL-ALT- DEL billentyű kombinációt. A processz mező egy végrehajtandó program elérési útját, és a paramétereit tartalmazza. Ez a program lehet script állomány is természetesen. Nézzük meg az /etc/inittab néhány sorát: id:3:initdefault: Azt mondja meg, hogy induláskor az alapértelmezett futási szint a 3-as legyen. si::sysinit:/etc/rc.d/rc.sysinit Ez a sor indítja el közvetlenül az init program indulása után az /etc/rc.d/rc.sysinit script-et. Ez a script gondoskodik a korábban említett rendszer inicializációról. l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5

68 68 l6:6:wait:/etc/rc.d/rc 6 Ezek a sorok futtatják le az egyes futási szintek script-jeit, amelyek a szolgáltatások elindításáról gondoskodnak. Ez a RedHat rendszereken tulajdonképpen egyetlen script eltérő paraméterekkel. ca::ctrlaltdel:/sbin/shutdown -t3 -r now A CTRL-ALT-DEL billentyű kombináció lenyomására a shutdown program indul el, amely ebben a beállításban 3 másodperc múlva újraindítja a gépet. 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 Ezek a sorok hozzák létre a virtuális terminálokat, amelyek között váltogathatunk az ALT + F1-6 gombokkal. x:5:respawn:/etc/x11/prefdm -nodaemon És végül a sor, amely az xdm (X Display Manager) programot az 5-ös futás szinten elindítja. (Lásd.: 5.2.5) A RedHat rendszereken prefdm script választja ki az xdm programot, illetve valamelyik változatát majd lefuttatja. Próbáljuk ki a futási szintek változtatását! Vizsgáljuk meg az 1-es, 3-as, és 5-ös futási szinteket! Változtassuk meg az alapértelmezett futási szintet Shutdown System Administration Guide Elfelejtettük a jelszót, nem probléma, törjük fel! Időnként felmerülő probléma, hogy egyes ritkán használt gépeknek hajlamosak vagyunk elfelejteni a root jelszavát, és esélyünk sincs, hogy megtaláljuk valamelyik papírhalom alján azt a cetlit, amire ráírtuk. Ilyenkor valahogy jó lenne jelszó nélkül bejutni, és megváltoztatni. Az egyik lehetőségünk a rescue lemez használata, amikor egy kis rendszert állítunk fel a memóriában, ahonnan rendbe tehetjük a rendszerünket. Erről később a rendszer helyreállításánál fogunk beszélni.

69 69 A másik lehetőség nem igényel semmilyen további segédeszközt. A GRUB és a kernel segítségével megoldható. A kernel indításakor egy paraméterrel megadhatjuk, hogy a rendszer az 1-es futási szinttel induljon. Ilyenkor nem kell bejelentkeznünk, rögtön egy root jogokkal rendelkező shell-t kapunk a konzolon. Nézzük, hogyan is néz ez ki a gyakorlatban: 1. A GRUB menüjének megjelenésekor válasszuk ki az indítani kívánt kernelt. 2. Az e gombbal eljutunk a menüelem szerkesztéséhez. 3. A kernelre vonatkozó sort keressük meg. 4. Az e gomb ismételt lenyomásával eljutunk a sor szerkesztéséig. 5. Egészítsük ki a kernel paramétereket a következővel: single 6. Ezek után a b gombbal boot-olhatjuk a rendszert Természetesen az eddig tárgyalt eset ritkán fordul elő. Viszont ezek után láthatjuk, hogy a fontos rendszereknél milyen lényeges, hogy fizikailag megvédjük a konzolt. Megtehetjük, hogy a GRUB ezen funkcióit jelszóval védjük. Ebben az esetben azonban még továbbra is indíthatunk floppy lemezről, vagy CD-ről teljes értékű rendszereket, amellyel szintén rendszergazdai szinten férünk hozzá az állományokhoz. A BIOS beállításaival és jelszavaival megakadályozhatjuk természetesen ezt is, de igazi védelmet valójában csak az jelent, ha nem engedünk a gép közelébe illetékteleneket A futásszintek szolgáltatásai Az inittab állomány tanulmányozásánál már láthattuk, hogy létezik egy /etc/rc.d/rc script a RedHat rendszerekben, amely minden futásszinten lefut a futásszint paraméterével. Ennek a parancsállománynak a feladata, hogy az /etc/rc.d/rc<futásszint>.d könyvtárstruktúra alapján az egyes futásszintekhez tartozó szolgáltatásokat elindítsa és leállítsa. Az /etc/rc.d/rc[0-6].d könyvtárak szimbolikus linkeket tartalmaznak az /etc/rc.d/init.d könyvtárban található script állományokra. Ezeknek a parancsállományoknak a közös jellemzője, hogy start paraméterrel meghívva őket elindítják a hozzájuk tartozó szolgáltatást. A stop paraméter hatására pedig leállítják azokat. Például:./httpd start és./httpd stop Az /etc/rc.d/rc script a futásszintek könyvtárában található szimbolikus linkek alapján hívja meg a szolgáltatások indító-leállító script-jét. A végrehajtott művelet függ a szimbolikus link nevétől.

70 70 Ezek a nevek 3 részből tevődnek össze: 1. Az első karakter S vagy K határozza meg, hogy indítjuk (start) a szolgáltatást vagy leállítjuk (kill). 2. Ezt követi egy kétjegyű szám. Ez határozza meg az egyes szolgáltatások indításának vagy leállításának sorrendjét. (A kisebb szám jelent elsőbbséget a végrehajtásban.) 3. Ezt követi a szolgáltatás neve. Például: S85httpd vagy K15httpd Kezelés kézzel A szintaktika ismeretében akár saját kezűleg létrehozhatunk, illetve törölhetünk linkeket, és ezzel beállíthatjuk, milyen szolgáltatások induljanak el az adott futási szinten. (Ha egy futási szinten az adott szolgáltatást nem szeretnénk elindítani, akkor célszerű a leállítást beállítani, mert a egyébként a futásszintek váltása közben az adott szolgáltatás nem állna le.) A chkconfig program A chkconfig program megkönnyíti a /etc/rc.d/rc[0-6].d könyvtárstruktúra kezelését. A program 4 funkcióval rendelkezik: - Új szolgáltatások bevonása a menedzseltek közé. - Szolgáltatások eltávolítása a menedzseltek közül. - Az aktuális indítási információk kilistázása. - Az indítások/leállítások módosítása. A --add paraméterrel felvehetünk egy szolgáltatást a menedzseltek közé. Ezt a paramétert akkor szoktuk használni, amikor egy új szolgáltatást telepítünk a rendszerre. Ilyenkor az indító script-ben található információk alapján a chkconfig beállítja az alapértelmezett indítási jellemzőket is. chkconfig --add httpd A --del paraméter hatására a chkconfig eltávolítja a szolgáltatást a menedzseltek közül, és letörli az összes linket a /etc/rc.d/rc[0-6].d könyvtárstruktúrából. chkconfig --del httpd

71 71 A --list paraméterrel kilistázhatjuk egy vagy az összes szolgáltatás beállításait. chkconfig --list A --level <futásszintek> opció segítségével beállíthatjuk hogy egy szolgáltatás valamely futási szinten elinduljon-e vagy sem. Ha az opciót elhagyjuk, akkor a beállítás minden futási szintre érvényes. Az elindítást az on, a leállítást az off kulcsszóval állíthatjuk be. chkconfig --level 35 httpd on chkconfig httpd off 4.5 Automatizált programindítás A Linux rendszerben nem csak boot-olás során indíthatunk programokat, hanem más előre meghatározott időben, vagy időközönként is. Így megtehetjük, hogy egyes erőforrás igényesebb feladatokat éjszakára időzítünk, amikor a szervert kevesen használják. De felhasználhatjuk arra is, hogy bizonyos időközönként automatikus tisztogató, információgyűjtő, archiváló programokat futtassunk. Azonban nem csak időpontokhoz köthetjük a folyamatok indítását, hanem a rendszer terheléséhez is. Beállíthatjuk hogy bizonyos terheltségi szint alatt futtasson a rendszer programokat Cron A cron daemon segítségével ismétlődő feladatokat hajthatunk végre. Ennek meghatározására idő és dátum részekből állítunk össze egy feltételt. A cron feltételezi, hogy a rendszerünk folyamatosan működik. Vagyis a beállításoknak megfelelő időpontokban elindítja a programokat. Azonban ha ezt az időpontot lekési, mert a rendszer nem működött, akkor az indítás elmarad. A cron daemon-t a boot folyamat során el kell indítanunk hasonlóan a többi folyamatosan futó szolgáltatáshoz. Az indító script: /etc/rc.d/init.d/crond Konfiguráció A cron szolgáltatás fő konfigurációs állománya az /etc/crontab: SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts

72 72 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly * * root run-parts /etc/cron.monthly Az első sorok a környezeti változók beállításait tartalmazzák. A MAILTO változó értéke azt a felhasználót adja meg, ahova a cron a végrehajtott feladatok kimenetét küldi egy levélben. Ha értéke, akkor nem készül jelentés a feladat végrehajtásáról. A # jellel kezdődő sorok megjegyzésnek számítanak. A további sorok a cron egy-egy feladatát jelentik a következő formában: <idő megadása> <parancs> Az idő az alábbi mezőkből áll: perc 0-59 óra 0-23 hónap napja 1-31 hónap 1-12 hét napja 0-7 (a 0 és a 7 vasárnap) A mező értékek a következők lehetnek: Használhatunk *-t, amely az adott mezőre minden értéket jelent. Megadhatunk tartományt: 1-3 Megadhatunk listát: 1,3,5 Lépték megadására is lehetőségünk van. Ezt a / jellel tehetjük. Ha például a hónap mezőbe a következőt írjuk: */2 akkor minden második hónapban hívódik meg a feladat. De tartományokkal is kombinálhatjuk. Például az óra mezőben a 7-12/2 értéket adjuk meg, akkor 7 és 10 között minden második órában teljesül a feltétel. A példában az egyes sorok a run-parts scriptet futatják, amely meghívja a paraméterként megadott könyvtárban található scripteket. A sorok értelmezése: 01 * * * * root run-parts /etc/cron.hourly Minden óra 1 perckor végrehajtja az /etc/cron.hourly könyvtárban található scripteket * * * root run-parts /etc/cron.daily Minden nap 4 óra 2 perckor végrehajtja az /etc/cron.daily könyvtárban található scripteket * * 0 root run-parts /etc/cron.weekly Minden vasárnap 4 óra 22 perckor végrehajtja az /etc/cron.weekly könyvtárban található scripteket * * root run-parts /etc/cron.monthly

73 73 Minden elsején 4 óra 42 perckor végrehajtja az /etc/cron.monthly könyvtárban található scripteket. Ha ezektől eltérő időpontban szeretnénk meghívni egy programot, akkor azt külön sorban meg kell adnunk. Egyébként pedig használhatjuk a megadott könyvtárakat. Nem kell feltétlenül az /etc/crontab állományt módosítanunk. Az /etc/cron.d/ könyvtárban is elhelyezhetünk állományokat, amelyben a crontab-hoz hasonlóan specifikálhatunk feladatokat Felhasználók lehetőségei Az /etc/crontab állományt csak a rendszergazda módosíthatja, de a felhasználóknak is lehetősége van rá, hogy használják a cron daemon-t. Ezt a crontab paranccsal tehetik meg. A következő parancs meghívja az alapértelmezett szövegszerkesztőt (az EDITOR környezeti változó által megadott), amellyel létrehozhatunk egy saját crontab állományt. Ezt a program a /var/spool/cron/ könyvtárban helyezi el a felhasználó nevével A hozzáférés szabályozása Az /etc/cron.allow és /etc/cron.deny állományokban felsorolhatjuk azokat a felhasználókat, akiknek engedélyezzük, vagy tiltjuk a cron szolgáltatás használatát. Szintaktikailag egy névlistát kell megadnunk, egy nevet egy sorba. Ha egyik állomány sem létezik, akkor minden felhasználó számára engedélyezett. Ha létrehozzuk a cron.deny állományt, akkor csak az abban nem megadott felhasználók számára lesz engedélyezett a szolgáltatás használata. A cron.allow állomány létezése esetén csak az abban felsorolt személyek használhatják a cron-t A módosítások hatályba lépése A módosítások során nem kell újraindítanunk a cron daemon-t. Minden percben megvizsgálja a változásokat az eddig tárgyalt konfigurációs állományoknál, és ez alapján frissíti a beállításait At Az at daemon a cron-al ellentétben az egyszer, bizonyos időpontokban végrehajtandó feladatokra lett kitalálva. Ezt a szolgáltatást az /etc/init.d/atd scripttel indíthatjuk el a korábbiakhoz hasonló módon.

74 74 A feladatokat itt az at parancs segítségével adhatjuk meg: at <dátum & idő> A futtatandó parancsokat a standard bemeneten írhatjuk be, vagy a f paraméterrel adhatjuk meg a parancsfájl nevét. Az időt a következő módokon adhatjuk meg: HH:MM Óra, perc midnight 00:00 noon 12:00 teatime 16:00 now most hónap nap év Például: Jul Az év opcionális. MMDDYY, MM/DD/YY, Hónap, nap, év MM.DD.YY <vmi> + <szám> <mérték> Például: now + 3 hours A mértékegységek a következők lehetnek: minutes, hours, days, weeks Ha nem adtuk meg a f paramétert, akkor a parancs lefuttatásakor egy prompt-ot kapunk. Itt megadhatjuk azokat a parancsokat, amelyeket végre szeretnénk hajtatni. A végét a Ctrl+D billentyűkkel jelezhetjük. A feladatok listáját az atq paranccsal nézhetjük meg. Egyes bejegyzéseket az atrm paranccsal törölhetünk A hozzáférés szabályozása A jogosultságokat az /etc/at.allow és az /etc/at.deny állományokkal szabályozhatjuk. Ezek szintaxisa és funkcionalitása megegyezik a cron daemon hasonló állományaival Batch Az at csomag rendelkezik még egy további paranccsal is. A batch paranccsal megadhatunk olyan feladatokat, amelyeket a rendszer akkor fog végrehajtani, amikor a szerver load értéke 0.8 alá esik. A parancs lefuttatásakor a korábbiakhoz hasonlóan egy prompt-ot kapunk, ahol megadhatjuk a parancsainkat. A végén egy üres sorban nyomjuk le a Ctrl+D gombokat. A másik lehetőség hogy f paraméterekkel parancsállományokat adunk meg.

75 Log mechanizmus A log állományok információkat tárolnak a rendszer működéséről, a kernel, a szolgáltatások, az applikációk eseményeiről. Az ilyen könyvelések nagyon hasznosak lehetnek a rendszer problémák kiderítésében, vagy az illetéktelen tevékenységek felderítésében. Ebben a fejezetben a Linux log rendszerét tekintjük át röviden. Linux alatt a programok általában két féle mechanizmust használnak a működési információik, eseményeik könyvelésére. Az egyszerűbb, de kevésbé flexibilis megoldás, amikor a program egy vagy több, a konfigurációs állományában beállított log fájlba jegyzi az információkat. Ezek az állományok általában a /var/log könyvtárban helyezkednek el, vagy ha nem, akkor célszerű úgy bekonfigurálni, hogy oda kerüljenek. Azonban az egyéni logolások mellett a Linux rendelkezik egy központi mechanizmussal, amely képes fogadni és tárolni a processzek eseményeit. Ennek neve syslog syslog A rendszerben folyamatosan fut egy syslogd szolgáltatás (daemon), amely képes mind lokálisan, mind hálózaton keresztül fogadni az eseményeket. Ennek előnyei: - A programoknak nem kell külön implementálniuk a log állományok kezelését. - Mivel egy központi, konfigurálható helyre kerülnek az események, így az adminisztrátor a saját elgondolása szerint oszthatja szét őket. Ezáltal a kritikus eseményeket kigyűjtheti egy külön állományba. - A hálózati logolás révén kialakíthatunk egy központi szervert, amely képes akkor is megőrizni az események listáját, ha a gépünk összeomlott, vagy támadás áldozata lett. A syslogd konfigurációs állománya az /etc/syslog.conf. Ez határozza meg a logolás szabályait. Minden szabálysor két mezőből áll. Az első mező az események egy csoportjának kiválasztására szolgál a szolgáltatás és az esemény prioritása alapján. A második mező a végrehajtandó műveletet adja meg a syslog számára. Ez általában egy állománynév, ahova az adott eseményt el kell tárolnia. A kiválasztó mező két részre osztható: <szolgáltatás>.<priorítás> A szolgáltatást a következő kulcsszavak valamelyikével adhatjuk meg: auth, authpriv, cron, daemon, kern, lpr, mail, news, syslog, user, uucp és local0-local7. Az egyes programok a feladatkörüktől függően ezen azonosítók valamelyikével küldik el az eseményeiket. Így például minden szerver a LOG_MAIL azonosítót csatolja az üzeneteihez. A prioritást is kulcsszavakkal adhatjuk meg. A következő lista a lehetőségeket tartalmazza növekvő sorrendben: debug, info, notice, warning, err, crit, alert, emerg. Az egyes szolgáltatások ezekkel a címkékkel jelzik üzenetük jellegét, fontosságát. A syslog

76 76 alapértelmezett működési metódusa az, hogy a kiválasztásnál azok az események felelnek meg, amelyeknek a prioritása megegyezik, vagy nagyobb a megadottnál. Az egyszerű szolgáltatás-prioritás pár megadásán kívül léteznek további lehetőségeink is: - A szolgáltatás vagy a prioritás helyett használhatunk * karaktert. Ez az összes szolgáltatást, illetve az összes prioritást jelenti. A prioritás helyén a none kulcsszó pedig azt jelenti, hogy egyik sem. - Akár több szolgáltatást is felsorolhatunk az adott prioritás szinthez, -vel elválasztva. - Kiválasztó mezők listáját is megadhatjuk egy művelethez ; karakterrel elválasztva. Ilyenkor az egyes kiválasztó mezők módisíthatják is a listában korábbiak hatását. - Amennyiben csak egy bizonyos prioritás szintre szeretnénk a műveletet végrehajtani, akkor ezt a prioritás elé írt = jellel adhatjuk meg. - Negálhatjuk is a prioritás megadást a! jellel. Vagyis ebben az esetben minden olyan prioritást figyelmen kívül hagy, amely egyezik, vagy nagyobb a megadottnál. - Az = és! jeleket kombinálhatjuk is egy!= jellé. Ennek jelentése, hogy csak a megadott prioritás szintet hagyja figyelmen kívül. Az eseményekre végrehajtandó művelet leggyakrabban egy állományba való beleírás. De vannak további lehetőségeink is: - Kiírathatjuk a konzolra (/dev/console). - Kiírhatjuk felhasználók egy csoportjának a képernyőjére (felhasználó nevek, - vel elválasztva). - Elküldhetjük az összes bejelentkezett felhasználó képernyőjére ( * ). - Átirányíthatjuk egy csővezetékbe (az állománynév elé egy jelet kell tenni). - Elküldhetjük egy központi gépre jel után host név). Nézzünk néhány példát a rendszer /etc/syslog.conf állományából: kern.* /dev/console A kernel összes üzenete jelenjen meg a konzolon. *.info;mail.none;authpriv.none;cron.none /var/log/messages Minden info és nagyobb szintű üzenet kerüljön a /var/log/messages állományba. Kivéve a mail, authpriv, és cron szolgáltatások üzenetei. *.emerg * Minden emerg prioritású üzenet minden felhasználónak megjelenik. Tanulmányozzuk az /etc/syslog.conf állományt, hogy megtudjuk az egyes log állományok nevét!

77 Log állományok Az syslog.conf állományból megtudhatjuk, hogy mely log állományok milyen információkat tartalmaznak. Vegyük sorra a legfontosabbakat: - A boot.log tartalmazza a szolgáltatások elindításának és leállításának eseményét. (/etc/rc.d/init.d könyvtárban található szolgáltatás script-ek által küldött események.) - A cron állomány az időzített feladatokról szolgál információkkal. - A maillog fájl tartalmazza a levelező szerver üzeneteit, könyvelését. - A messages talán a legfontosabb log fájl. Ez tartalmaz szinte minden fontosabb rendszereseményt. - A secure állomány a felhasználók bejelentkezésének könyvelése Logrotate Ha körülnézünk a /var/log könyvtárban, akkor láthatjuk hogy a log állományokból általában több példányt láthatunk. Ezeket a név után ponttal elválasztott szám különbözteti meg egymástól. Minél nagyobb a szám annál régebbi az adott log állomány. Ennek oka az, hogy nem őrizhetjük meg a könyveléseket örök időkre. Időnként a régi, elavult bejegyzéseket ki kell selejteznünk, ellenkező esetben megtelne a merevlemezünk. A selejtezés legegyszerűbb módja, hogy a log állományokat időközönként átsoroljuk egyre régebbi kategóriákba (ez a számozás), és a legrégebbieket letöröljük. Ezt a műveletet a logrotate program végzi el automatikusan, magát a műveletet pedig log rotációnak nevezzük. A logrotate program beállításait az /etc/logrotate.conf állomány tartalmazza, míg az egyes szolgáltatásokra vonatkozó konfigurációkat az /etc/logrotate.d könyvtár.

78 RPM csomagkezelés A RedHat által kifejlesztett csomagkezelő segítségével könnyen, gyorsan és egyszerűen tudjuk kezelni a rendszert felépítő csomagokat. Az RPM által nyújtott szolgáltatások közül néhány a teljesség igénye nélkül: Install, uninstall, tesztelés és függőség figyelés Frissítés Információk lekérdezése telepített és nem telepített csomagokról Bináris RPM készítése forrás RPM-ből RPM készítése tgz csomagból Tekintsük át ezeket a funkciókat röviden: Csomag telepítése és eltávolítása Az RPM minden egyes csomag telepítése vagy eltávolítása előtt ellenőrzi a csomag függőségi viszonyát és figyelmeztet, ha probléma van, valamint telepítés előtt a konfliktusokat is figyeli (pl. telepítve van már a csomag). Fontos és hasznos, hogy egyszerre több csomagot is megadhatunk. Ez a kényelmen túl, akkor hasznos, ha például két kölcsönösen függő csomagot szeretnénk telepíteni. Mindkét csomagot megadva, nem kapunk függőségi figyelmeztetést. Ha egy csomag telepítése vagy eltávolítása valamilyen ellenőrzési hiba miatt megakad, de tudjuk, hogy ez a probléma csak ideiglenes, használhatjuk a --force kapcsolót, hogy az RPM ne vegye figyelembe a hibát. Csak óvatosan bánjunk ezzel a kapcsolóval, mert az esetek döntő többségében igaza van a csomagkezelőnek! Install (-i) # rpm -i eject i386.rpm # Ha több információt kapunk, ha a -v kapcsolót is használjuk, ami több csomag egyidejű telepítésekor lehet hasznos: # rpm -iv *.rpm Installing eject i386.rpm Installing ibcs i386.rpm Installing logrotate i386.rpm # A -h kapcsoló használata még személetesebbé teszi az installáció folyamatát: # rpm -ivh *.rpm eject ################################################## ibcs ################################################## logrotate ################################################## # Ha valamiért még több információt szeretnénk kapni a telepítés közben használjuk a -vv kapcsolót:

79 79 # rpm -ivv eject i386.rpm D: installing eject i386.rpm Installing eject i386.rpm D: package: eject files test = 0 D: running preinstall script (if any) D: setting file owners and groups by name (not id) D: ///usr/bin/eject owned by root (0), group root (0) mode 755 D: ///usr/man/man1/eject.1 owned by root (0), group root (0) mode 644 D: running postinstall script (if any) # Előfordul, hogy csak ellenőrizni szeretnénk, hogy egy csomag feltelepíthető-e, ekkor használhatjuk a --test kapcsolót, ami csak az ellenőrzéseket végzi el: # rpm -i --test eject i386.rpm # Két példa a hibaüzenetekre: Itt egy régebbi csomagot próbálunk feltenni, holott már telepítve van egy frissebb: # rpm -i --test rpm i386.rpm /bin/rpm conflicts with file from rpm /usr/bin/gendiff conflicts with file from rpm /usr/bin/rpm2cpio conflicts with file from rpm /usr/bin/rpmconvert conflicts with file from rpm /usr/man/man8/rpm.8 conflicts with file from rpm error: rpm i386.rpm cannot be installed # Itt pedig egy függőségi probléma látható # rpm -i --test blather i386.rpm failed dependencies: bother >= 3.1 is needed by blather # Uninstall (-e) # rpm -e eject # Sikeres végrehajtás estén itt sincs semmi értesítés. Az telepítéshez hasonlóan itt is használható a -v, -vv és a --test kapcsoló: # rpm -ev eject # # rpm -evv eject D: uninstalling record number D: running preuninstall script (if any) D: removing files test = 0 D: /usr/man/man1/eject.1 - removing D: /usr/bin/eject - removing D: running postuninstall script (if any)

80 80 D: removing database entry D: removing name index D: removing group index D: removing file index for /usr/bin/eject D: removing file index for /usr/man/man1/eject.1 # # rpm -e --test bother removing these packages would break dependencies: bother >= 3.1 is needed by blather # Frissítés Két frissítési metódust ismer az RPM, az upgrade-et (-U) és a frissítést (-F). A különbség a két mód között, hogy frissítés esetén csak abban az esetben kerül fel a csomag, ha már volt belőle korábbi verzió telepítve a rendszerre. Mindkét estben a frissítés felfogható egy telepítés és minden korábbi verzió eltávolításának egymás utáni alkalmazásával, így ugyanazok a kapcsolók használhatóak, mint a telepítésnél.(-v, -h, -vv, --test, -- force) # rpm -U eject i386.rpm # # rpm -F eject i386.rpm # Információk lekérdezése A lekérdezés kapcsolója a q, amit kiegészítő kapcsolókkal paraméterezve az információk széles palettáját nyújtja a felhasználó felé a csomagkezelő. Például információkat kérdezhetünk le a már feltelepítet és a még fel nem telepített csomagokról. Szimplán a -q kapcsoló használatával a csomag teljes nevét tudhatjuk meg. # rpm -q bash bash-2.05b-20.1 # Az -a kapcsoló kilistázza az összes csomagot. # rpm -qa setup bzip2-libs e2fsprogs openssh-server-3.5p1-11 sendmail-cf

81 81 mailman # Az -f opció segítségével megkérdezhető, hogy egy adott file melyik csomaghoz tartozik #rpm -qf /etc/ntp.conf ntp rc1.2 # Az -l kapcsoló kilistázza a csomaghoz tartozó fileokat. #rpm -ql time /usr/bin/time /usr/share/doc/time-1.7 /usr/share/doc/time-1.7/news /usr/share/doc/time-1.7/readme /usr/share/info/time.info.gz # Az -i kapcsoló információkat ad a csomakról. #rpm -qi bash Name : bash Relocations: /usr Version : 2.05b Vendor: Red Hat, Inc. Release : 20.1 Build Date: Wed 09 Apr :02:36 PM CEST Install Date: Wed 27 Aug :59:11 PM CEST Build Host: stripples.devel.redhat.com Group : System Environment/Shells Source RPM: bash- 2.05b-20.1.src.rpm Size : License: GPL Signature : DSA/SHA1, Tue 10 Jun :45:19 AM CEST, Key ID cddb42a60e Packager : Red Hat, Inc. < Summary : The GNU Bourne Again shell (bash). Description : The GNU project Bourne Again shell (bash) is a shell or command language interpreter that is compatible with the Bourne shell (sh). Bash incorporates useful features from the Korn shell (ksh) and the C shell (csh) and most sh scripts can be run by bash without modification. Bash is the default shell for Red Hat Linux. # A -p kapcsoló lehetővé teszi, hogy egy RPM csomagot adjunk meg információ forrásként. #rpm -qlp ulogd-0.97rk-3.i386.rpm /etc/rc.d/init.d/ulogd /usr/lib/ulogd /usr/lib/ulogd/ulogd_base.so /usr/lib/ulogd/ulogd_logemu.so /usr/lib/ulogd/ulogd_oprint.so

82 82 /usr/lib/ulogd/ulogd_pwsniff.so /usr/sbin/ulogd /usr/share/doc/ulogd-0.97rk /usr/share/doc/ulogd-0.97rk/authors /usr/share/doc/ulogd-0.97rk/copying /usr/share/doc/ulogd-0.97rk/readme /usr/share/doc/ulogd-0.97rk/ulogd.a4.ps /usr/share/doc/ulogd-0.97rk/ulogd.conf.sample /usr/share/doc/ulogd-0.97rk/ulogd.html /usr/share/doc/ulogd-0.97rk/ulogd.txt # Csomagok fordítása, készítése Forrás csomag lefordítása TODO Hozzuk le az eject src.rpm forrás rpm csomagot és installáljuk fel! A /usr/src/redhat/sources/ könyvtárban megtaláljuk a forrást../configure make make DESTDIR=/tmp install Bináris RPM készítése source RPM-ből Előfordul, hogy csak a source RPM áll rendelkezésünkre, azonban ilyenkor is lehetőségünk van bináris csomag előállítására a source csomagokból. # rpmbuild --rebuild eject src.rpm SPEC file RPM HOWTO Bináris RPM készítése tgz forrásból Vannak olyan programok, amik csak tgz formátumú forrás csomagokban állnak rendelkezésre. Amennyiben a csomagban található egy úgynevezett spec file, szintén készíthető bináris RPM csomag, amit már könnyen beilleszthetünk rendszerünkbe. Ha valaki ügyes akár saját maga is készíthet egy egyszerűbb spec file-t. A példához innen szedhetünk egy csomagot: # rpmbuild ta autospec-0.8.tar.gz

83 A kész csomag itt található: /usr/src/redhat/rpms/noarch 83

84 X Window Manapság ha egy operációs rendszer versenyképes szeretne lenni a piacon, akkor kétség kívül szüksége van egy grafikus kezelői felületre (GUI). A GUI felület számos feladatra egyértelműen barátságosabb és könnyebben kezelhető, mint egy szöveges terminál. A Unix rendszerek és a Linux grafikus felülete az XWindow (vagy egyszerűen X), amely hasonlóan sok más Unix-os fejlesztéshez egy akadémiai projekt eredménye. Az XWindow-t MIT-n az Athena projekt keretében fejlesztették ki. A Unix kezdetek óta rendelkezik a többfelhasználós (multiuser), többfeladatos (multitask) képességekkel, illetve a hálózatok elterjedése óta támogatja a távoli bejelentkezést is. Az X architektúráját is úgy alakították ki, hogy illeszkedjen ebbe az elképzelésbe. Az X az Athena projekt keretében, 1984-ben jött létre tól az X konzorcium felügyeli a fejlesztést és a terjesztést. Specifikációja szabadon hozzáférhető, ez utat nyitott az ingyenes implementációk létrejöttének, amilyen az XFree86. Linux alatt is ezt a felületet használjuk. Elterjedtsége viszont nem korlátozódik a Linuxra, használják más operációs rendszereken is (BSD, OS/2), de nevével ellentétben más CPU architektúrákon is XWindow architektúra Az X-et kliens-szerver architektúrájúra alakították ki. Az alkalmazások a kliensek, amelyek kommunikálnak a szerverrel. Kéréseket küldenek, és információkat kapnak. Az X szerver kezeli a képernyőt és a bemeneti eszközöket (billentyűzet, egér), a programok ezekhez nem férnek hozzá közvetlenül, csak az X szervert kérik meg az egyes műveletek végrehajtására. Ennek a megoldásnak az előnye egyértelmű: a kliensnek nem kell az adott eszköz jellemzőivel foglalkoznia, csak a szerver kommunikációt kell implementálnunk. Ez pedig nem különbözik attól, mintha csak egy grafikus könyvtárat használnánk. Az X architektúra azonban ennél tovább is megy. Nem szükséges, hogy a kliens és a szerver alkalmazás egy gépen fusson. A kliens-szerver protokoll hálózaton keresztül is megvalósítható bármilyen IPC mechanizmussal, amely megbízható stream jellegű kommunikációt biztosít. Az egyes gépeken használt operációs rendszer is eltérhet Ablakkezelők Amikor ablakos, grafikus felületet használunk, akkor természetes igényünk, hogy a kliens ablakokat kezelhessük: mozgathassuk, átméretezhessük, minimalizálhassuk, maximalizálhassuk, stb. Az X nem kezeli ezeket a műveleteket, ez a feladat az ablakkezelőkre (window manager) vár. Az ablakkezelő díszíti az ablakokat, illetve a felhasználóknak felületet biztosít az ablakműveletekhez, magukat az ablakműveleteket az X szerver implementálja. Mivel az ablakkezelő is csak egy kliens program, nem része az X szervernek, így kívánság szerint cserélgethetjük, és széles választékból választhatunk az ízlésünknek megfelelőt.

85 85 Bár az ablakkezelő fő feladata a kliensek ablakainak menedzselése, emellett különböző egyéb funkciókkal is rendelkezhet. Az egyik ilyen általános funkció például a kliens programok indítása Kliens alkalmazások Az X-es alkalmazások készítésénél a programozók úgynevezett widget könyvtárakat használnak. Ezek a programkönyvtárak tartalmazzák az ablakok felületén megjelenő különböző vezérlő elemeket (pl. gombok, edit mező, lista mező, stb.). Mivel ezek működése eltérően lehet implementálva az egyes programkönyvtárakban, ezért a programok viselkedése nagyban függ a fejlesztő által választott widget könyvtártól. Az első Widget könyvtár az Athena projekt keretében kifejlesztett Athena könyvtár volt. Csak a legalapvetőbb elemeket tartalmazza, és a kontroll elemek kezelése eltér a manapság használatosaktól. Ezt követő legismertebb könyvtár az Open Software Foundation (OSF) Motif csomagja volt tól a korai 1990-es évekig volt igen elterjedt, de a mai napig sok helyen használják. A legkomolyabb hibája, hogy súlyos összegekbe kerül a fejlesztői licence. Manapság már vannak jobb alternatívák árban, sebességben, szolgáltatásokban. Ilyen például a Gtk, amely a GIMP projekthez készült. Aránylag kicsi, sok szolgáltatással, bővíthető, és teljesen ingyenes, illetve egy másik népszerű toolkit, a Qt, amely a KDE projekt óta ismert igazán, mivel a KDE alapját szolgáltatja. A Qt forráskódja nem, de a használata ingyenes. További alternatíva a LessTif, amely egy ingyenes helyettesítője a Motif-nak. Azonban mivel minden X kliens alkalmazás alapvetően az Xlib-en alapul, ezért egyes opciókat egységesen kezelnek. Az általános X kliens opciók: Paraméter -bg szín -bd szín -bw szám -fg szín -fn -geometry -icon -display név:szám -xrm string Leírás az ablak háttér színe az ablakkeret színe az ablakkeret pixel vastagsága az ablak előtér színe az alapértelmezett méretű fontset az ablak méreteit és elhelyezkedése a program ikon méretben indul Megadja szerver nevét és az X szerver display számát az applikáció számára. Ha nem állítjuk be, akkor a kliens az információkat a DISPLAY környezeti változóból veszi. resource string-eket állíthatunk be Desktop Environment A korábbiakból látható, hogy felhasználóként választhatunk ablakkezelőt kedvünk szerint, és a programok írói is választhatnak widget könyvtárakat. Azonban ennek a nagy szabadságnak megvannak a hátrányai:

86 86 - A kliens program írója határozza meg, hogy milyen widget könyvtárat használ. Azonban mivel e könyvtárak kontroll elemei nagyban különbözhetnek, előfordulhat, hogy ahány programot használunk, annyiféle módon kell kezelni. - Ezek a widget könyvtárak általában dinamikusan linkelődnek a programokhoz, azonban ha a kliens programjaink különbözőket használnak, akkor az plusz memóriát igényel. - Az ablakkezelők is sokfélék, különböző kezelési koncepciókkal. - Az egész felület ezeknek következtében nem áll össze egy egységes egésszé, például nem lehet egyben konfigurálni a kinézetét, kezelését. Ez azért alakult így, mert az X kialakítása során a flexibilitásra, és a felhasználók szabadságára helyezték a hangsúlyt, ellentétben egyéb operációs rendszerek (például Windows, MacOS) megkötöttségeivel, zártságával. Mindez azonban a fent említett helyzethez vezetett, ezért előtérbe került a komplex felület létrehozása a szabadsággal szemben. Ez a helyezet vezetett az Asztai Környezetek (Desktop Environment) kialakulásához. Az Asztali Környezet tartalmaz szolgáltatásokat és módszertanokat, amellyel a felület egységesíthető és a problémák leküzdhetőek. Ugyanakkor több fajtája is létezik, és a választás szabadsága ez által megmarad. Az ismertebbek: CDE (Common Desktop Environment), KDE (K Desktop Environment), GNOME Az X elindítása Az X session elindítására két metódus közül választhatunk. Amennyiben a gépünk nem futtat folyamatosan X szervert, ami egy szerver gép esetén gyakori, akkor a startx paranccsal indíthatjuk el és hozhatunk létre egy session-t. A másik lehetőség, amikor egy xdm (X Display Manager) nevű szolgáltatás (vagy ennek egy variánsa) folyamatosan fut a gépünkön. Ez a munkaállomások esetén gyakori. Az xdm menedzseli az X felületet. Egy authentikációs szolgáltatást nyújt, ahol bejelentkezhetünk és elindítja számunka a session-t A startx működése A startx valójában egy front-end az xinit program számára. Egy kicsit barátságosabb felületet nyújt számunkra, mint az xinit parancs formátuma. Az xinit futtatja a $HOME/.xinitrc script-et. Ha ez nem létezik, akkor a rendszerszintű xinitrc script indul el (/usr/lib/x11/xinit/xinitrc vagy /etc/x11/xinit/xinitrc). Ez az állomány elindíthat X kliens applikációkat és a window manager-t, de jelenlegi konfigurációkban ezt az Xclients script teszi. Az.xinitrc futatja a $HOME/.Xclients script-et, vagy ha ez nem létezik, akkor a rendszer szintű változatát (/etc/x11/xinit/xclients). Ennek feladata az X kliensek és a választott window manager indítása. Vizsgáljuk meg a felsorolt script állományokat!

87 Az X session indulása Az xdm használata esetén belépéskor hasonló folyamatok játszódnak le, mint a startx esetén. Az xdm létrehoz egy új session-t. Lefuttatja rendszerszintű Xsession script-et (/usr/lib/x11/xdm/xsession vagy /etc/x11/xdm/xsession). Ez a script futtatja a felhasználó $HOME/.xsession script-jét. Ha nem létezik az.xsession script, akkor a $HOME/.Xclients vagy az /etc/x11/xinit/xclients script hajtódik végre. Ezekben a script-ekben indíthatjuk el az X kliens applikációkat és a window manager-t. Vizsgáljuk meg a felsorolt script állományokat! Kliens futtatása távoli gépen Mint már volt róla korábban szó, az X architektúrájában lehetőség van rá, hogy az X szerver (a kezelői felület) az egyik gépen fusson, míg a kliens program egy másikon, és a hálózaton keresztül kommunikáljanak. Ez az X protokoll-on keresztül zajlik. (Ezt tömöríteni is lehet a lassú kapcsolatokhoz.) Ha használni szeretnénk ezt a funkcionalitást, akkor a következő képen kell eljárnunk: 1. A lokális géppel (X szerver) közölnünk kell, hogy fogadja a távoli gép kapcsolódását. 2. A távoli géppel (kliens program) közölnünk kell, hogy a kimenetét a lokális gépünkre irányítsa. 3. Lehetséges, hogy egy gépen több X szervert használjunk, vagy több felhasználó által futtatott programok egy X szerveren jelenjenek meg. Ezeket is a távoli elérésnél használatos módszerekkel szabályozhatjuk A jogosultság beállítása az X szerveren Az X szerver nem fogad kapcsolódást bárhonnan. Ha nem így lenne, az biztonságilag komoly problémákat vetne fel: Bárki bármit odarakhatna a képernyőnkre, és monitorozhatná a billentyű leütéseinket, egér-eseményeket, stb. Az X Window az authentikációra kétféle metódust támogat: a host listát használó mechanizmus (xhost), és a magic cookie-t használó xauth xhost Ebben az esetben az X szerver egy listát kezel a kapcsolódásra jogosult gépek neveiről. Ehhez a listához hozzáadhatunk és elvehetünk gép neveket: Xserver> xhost +xclient.valahol.hu Xserver> xhost xclient.valahol.hu

88 88 De akár teljesen ki is kapcsolhatjuk (mindenkit engedélyezünk), de ez természetesen nem javasolt, mert a fentebb említett biztonsági problémákat veti fel. Xserver> xhost + Visszaállítása: Xserver> xhost Az xhost, mint látható, nem biztonságos megoldás. Egyrészt nem különbözteti meg az adott gépen lévő felhasználókat, másrészt gépnév alapján dolgozik, ami félrevezethető. Így ezt csak olyan hálózaton használjuk, ahol megbízunk a felhasználó-társainkban xauth Az xauth azon klienseknek engedi a kapcsolódást, amelyek ismerik a titkos jelszót (authorization record vagy magic cookie). A cookie-k az ~/.Xauthority állományban tárolódnak. (Vigyázni kell a jogok beállításánál, hogy csak a tulajdonos olvashassa.) Ezt az állományt az xauth program kezeli. Az xauth protokoll használatához az X szervert az auth <authfile> paraméterrel kell indítani. Kezelése nehézkesebb, mint az xhost-os megoldásé. Ugyanakkor az authentikációs kommunikáció továbbra is kódolatlanul zajlik a hálózaton, ezért a biztonság szempontjából érdemes lehet egy kódolt csatornával kiegészíteni: ssh Az X kliens kimenetének átirányítása A DISPLAY környezeti változón keresztül adhatjuk meg az X applikációknak, hogy melyik X szerverhez kapcsolódjanak. DISPLAY=:0 DISPLAY=localhost:1 DISPLAY=x.valahol.hu:0 A DISPLAY változó egy host névvel kezdődik, ami opcionális. Követi egy :. Utána az X szerver sequence száma következik. Ha egy gépnek több display-e van, vagy csak több X szervert futtatunk, akkor ez az indexe az azonosításhoz. (Kiegészíthető meg egy screen numberrel is: Hostname:Display.Screen módon.) A kliens programok induláskor megvizsgálják a DISPLAY környezeti változót, hogy hova kell kapcsolódniuk. Azonban ezt felülírhatjuk a display paraméterrel, ami után ugyanúgy kell megadnunk a display leírását, mint korábban a DISPLAY változónál. Nézzünk néhány példát (a Xclient> az applikációt (X kliens) futtató gép promptja): Xclient> export DISPLAY=x.valahol.hu:0

89 89 Xclient> xterm & Xclient> DISPLAY=x.valahol.hu:0 xterm & Xclient> xterm display x.valahol.hu:0 & Használhatjuk az rsh (remote shell) parancsot, vagy a biztonságosabb ssh (secure shell) programot. rsh xclient.valahol.hu xapplikáció -display szerver: ssh X forward A hagyományos megoldásokhoz képest a legegyszerűbb és legbiztonságosabb megoldást az ssh program X forward funkciója nyújtja. Ez lehetővé teszi, hogy amennyiben a gépünkön X-et használunk, és az ssh programmal belépünk egy távoli gépre, akkor a shell-ből indított programok kimenete automatikusan az X-es felületünkre irányítódik át egy titkosított csatornán keresztül. Ehhez a felhasználónak semmilyen beállítást nem kell elvégeznie. A kapcsolat felépítéséhez az ssh automatikusan létrehoz egy Xauthory állományt egy véletlen jelszóval. Később ezzel azonosítja az átirányított kapcsolatokat. Megjegyzés: Az ssh ezen funkciójának használatához az ssh-szervernek támogatnia kell az X kapcsolatok átirányítását. A konfigurációs állományban a ForwardX11 opciónak engedélyezve kell lennie KDE A KDE egy korszerű, a hálózat szempontjából átlátszó, ingyenes Asztali Környezet a Unix munkaállomások számára. Célja, hogy az X világ számára egy könnyen kezelhető felületet nyújtson, hasonlót, mint a MacOS, vagy a Microsoft Windows. Ennek elősegítésére sok hasznos, egységes felülettel rendelkező applikációt tartalmaz, lehetővé teszi az általános konfigurációt, tartalmaz egy irodai (office) programcsomagot, és egy fejlesztői keretrendszert a programozók számára. Az oktató segítségével tekintsük át röviden a KDE control center konfigurációs lehetőségeit! Grafikus konfigurációs eszközök Az adminisztrációs feladatok megkönnyítésére léteznek grafikus felülettel rendelkező segédprogramok, amelyekkel a szokásos feladatok könnyebben és gyorsabban elvégezhetőek. Azonban nem célszerű kizárólag ezekre támaszkodni, mert az általuk beállítható paraméterek korlátozottabbak lehetnek, illetve nem elemei minden disztribúciónak. Továbbá a kis sávszélességű távoli elérés esetén használatuk nehézkesebb lehet, mint a parancssoros változataiké.

90 90 A következőkben áttekintjük, hogy a RedHat disztribúció milyen programokat tartalmaz az eddig tárgyalt feladatok elvégzésére. A programok kezelésére a dokumentumban nem térünk ki, mert felületük a korábbi ismeretek alapján könnyen értelmezhető A felhasználók adminisztrálása A felhasználók adminisztrálásának megkönnyítésére használhatjuk a RedHat User Manager programot. Ez a system-config-users RPM csomag része. Segítségével felvehetünk új felhasználókat, törölhetünk, megnézhetjük, és módosíthatjuk adataikat. Használatához rendszergazdai jogosultságokkal kell rendelkeznünk. A program helye: Start System Settings Users and Groups Ábra 5.1 A User Manager fő ablaka A fő ablakon láthatjuk a felhasználók vagy a csoportok listáját, és főbb információikat. A gombokkal létrehozhatunk új felhasználót, csoportot, vagy módosíthatjuk, törölhetjük az éppen kiválasztottat A folyamatok monitorozása A folyamatok kilistázására, kezelésére, a rendszer állapotának a figyelemmel kísérésére mind a KDE, mind a GNOME környezet tartalmaz programokat. A KDE környezetben találjuk a KDE System Guard szoftvert. Helye: Start System Tools More KDE System Guard

91 91 Ábra 5.2 KDE System Guard rendszer terheltség Ábra 5.3 KDE System Guard folyamatok adatai A GNOME környezet a folyamatok kezelésére a System Monitor programot nyújtja. Helye: Start System Tools System Monitor

92 92 Ábra 5.4 System Monitor folyamatok adatai Ábra 5.5 System Monitor rendszer terheltség Futásszintek beállításai Az egyes futási szinteken induló szolgáltatások beállítására is készített a RedHat segédeszközt. A system-config-services RPM csomag tartalmazza a Service Configuration programot. Helye: Start System Settings Server Settings Services Ábra 5.6 Futásszintek beállításai Log állományok tanulmányozása A számtalan log állomány könnyebb áttekintésére is létezik segédeszköz. A RedHat disztribúció a System Logs programot nyújtja erre a feladatra. Ez systemlogviewer RPM csomagban található. Az állományok megjelenítése mellett rendelkezik egy figyelmeztető funkcióval is. Egyes kulcsszavakra kérhetünk riasztásokat. A program helye: Start System Tools System Logs

93 93 Ábra 5.7 Log állományok kezelése Rendszer csomagok telepítése és eltávolítása A RedHat disztribúció tartalmaz egy csomagkezelő szoftvert, amellyel a rendszer csomagjait utólag is feltelepíthetjük és eltávolíthatjuk. Ennek neve Add/Remove Applications, és a system-config-packages RPM csomagban található. Helye: Start System Settings Add/Remove Applications Ábra 5.8 Csomagok telepítése/eltávolítása

94 94 6. A Linux szorosan kötődik a hálózatokhoz. Létrejöttét az internetnek köszönheti, a hálózati támogatás a kezdetek óta megtalálható benne, és funkcióját tekintve is, mint hálózati kiszolgáló szerver a legelterjedtebb. Ebben a fejezetben a hálózati konfiguráció alapjaitól a leggyakoribb hálózati szolgáltatásokig jutunk el. 6.1 TCP/IP hálózatok TCP/IP hálózat mûködése, TCP/IP alapú kommunikáció - jegyzet. TCP fejléc és a kapcsolatok felépítése. TODO 6.2 Hálózati eszközök A Unix rendszerek alatt a hálózati eszközök leírói gyakran a /dev könyvtárban vannak. Azonban a Linux nem tartozik ezek közé. Linux alatt a hálózati eszközök dinamikusan a kernelben jönnek létre, nem tartozik hozzájuk eszköz állomány. Az esetek többségében automatikusan hozzák létre az eszközvezérlők. Az interfészek elnevezése általában az eszköz típusától függ. Elnevezés eth[0..n] isdn[0..n] ppp[0..n] tr[0..n] lo Típus Ethernet ISDN Modem, xdsl Token Ring Loopback Amennyiben a Linux kernelben a hálózati eszköz alias-ok támogatása be van kapcsolva, akkor létrehozhatunk virtuális hálózati interfészeket is. Ezek ugyanazt a fizikai eszközt használják, amelyből származtattuk, azonban más IP cím beállításokkal láthatjuk el őket. Ezen virtuális interfészek neve az eredeti fizikai eszköz neve után írt egy : -al elválasztott számból áll. Például az eth0 eszközből származtatott első virtuális interfész neve: eth0:0

95 A hálózati interfészek konfigurálása A hálózati interfészek kernel rezidens részeinek kezelésére az ifconfig program szolgál. Segítségével aktiválhatjuk, vagy deaktiválhatjuk az interfészeket, illetve beállíthatjuk az interfészek jellemzőit: IP cím, netmask, stb. Paraméterek nélkül meghívva kilistázza az aktív interfészeket. Az eth0 interfész deaktiválása: ifconfig eth0 down Az eth0 interfész IP cím beállítása és aktiválása: ifconfig eth netmask up Aktiváljuk egy, a hálózati interfészünkből származó virtuális interfészt a / tartományból választott címmel, majd próbáljuk ki! RedHat konfigurációs scriptek A RedHat disztribúció tartalmaz egy script gyűjteményt a hálózati interfészek automatikus felkonfigurálására, és egyszerűbb kezelésére. A script-ek az /etc/sysconfig/network-scripts könyvtárban található konfigurációs állományokat használják az interfészek beállítására. A könyvtár minden interfészhez tartalmaz egy állományt melynek neve ifcfg-<eszköz>. Ezeket kiegészíti az /etc/sysconfig/network konfigurációs állomány, amely a globális routing és host beállításokat tartalmazza. Mindezeket a konfigurációs állományokat könnyen módosíthatjuk a system-confignetwork program segítségével Az ethernet interfész Egy ethernet interfész esetén az állomány tartalma a következő (ifcfg-eth0): DEVICE=eth0 BOOTPROTO=static IPADDR= NETMASK= ONBOOT=yes USERCTL=no - A DEVICE paraméter tartalmazza az eszköz nevét. - A BOOTPROTO az IP cím beállítás módját: statikus (static), dinamikus (bootp, dhcp). - Az IPADDR és a NETMASK az IP beállítások.

96 96 - Az ONBOOT paraméter adja meg, hogy az interfészt a rendszer indulásakor automatikusan aktiválódjon, vagy sem. - Az USERCTL megadja, hogy nem root felhasználók kezelhetik-e az eszközt. Azonban a konfigurációs script állomány tartalmazhat még további opciókat is: - DHCP_HOSTNAME Csak abban az esetben használjuk, ha a DHCP szerver megköveteli, hogy megadjunk egy host nevet, amire ő az IP címet szolgáltatja. - DNS{1,2} Megadhatunk dns szerver címeket, amelyet a script automatikusan elhelyez az /etc/resolv.conf állományban amikor az interfész aktív. Azonban ehhez engedélyezni kell a PEERDNS opciót is. - HWADDR Amennyiben több hállókártyát is tartalmaz a gépünk, akkor specifikálhatjuk MAC címmel, hogy melyiket kívánjuk konfigurálni. - MACADDR Beállíthatjuk a hálókártya MAC címét. (Értelem szerint az előző opcióval nem szabad együtt használni.) - NETWORK Megadhatjuk a hálózati címet, de használata nem kötelező. - PEERDNS Ha engedélyezzük, akkor a hálókártya konfiguráló scriptek az /etc/resolv.conf állományt is frissítik. Elsősorban a DHCP szerverek esetén használatos, mivel ezen szolgáltatás automatikusan megadja a hálózaton használható nameserver-eket IPSec interfész Manapság a hálózat biztonsági kérdések egyre inkább előtérbe kerülnek. Ennek egyik eleme a biztonságos, titkos adat továbbítás a megbízhatatlan Interneten keresztül. Ilyen esetekben gyakran az IPSec csatornákhoz folyamodunk. Amennyiben két LAN-t szeretnénk az interneten biztonságosan összekötni (pl. két telephely), akkor pedig egyértelműen ezt választjuk. A redhat rendszerekben erre is találunk scripteket, ezért az ethernet interfészhez hasonlóan egyszerűen felkonfigurálhatjuk. Ez a 2.6-os Linux kernel beépített IPSec implementációját használja a csatornák megvalósításához. Egy IPSec konfigurációs file (ifcfg-ipsec1) a következőket tartalmazhatja: ONBOOT=yes DSTGW= SRCGW= DSTNET= /24 SRCNET= /24 DST= TYPE=IPSEC IKE_METHOD=PSK A DSTGW a célhálózat, az SRCGW a forrás hálózat internet kapcsolatát biztosító gateway. A DSTNET a célhálózat, az SRCNET a forrás hálózat címtartománya. A DST esetünkben a célhálózat routere, host kapcsolat esetén a célhost. A TYPE értéke IPSEC, amely az IPSec interfészt definiálja.

97 97 Az IKE_METHOD az IKE (Internet Key Exchange) metódusát adja meg. Az IKE protokoll lehetővé teszi a node-oknak, hogy megállapodjanak az authentikációs és titkosítási metódusokban. A PSK a pre-shared key rövidítése. Ezen kívül választhatjuk certificatek használatát is Alias és Clone interfész Nem túl gyakori, de azért indőnként felmerülő igény, hogy egy hálózati interfészhez több IP címet rendeljünk. Ezt könnyen megtehetjük alias interfészek használatával. Alias interfészeket az ifcfg konfigurációs állományokkal is létrehozhatunk. Ilyenkor csak a :<szám> résszel ki kell egészíteni az interfész nevét. Például: ifcfg-eth0:0 Ezt az interfészt ugyanúgy felkonfigurálhatjuk, mint az eredetit, amiből származik. Logikailag egy másik interfészt alkot, de fizikailag természetesen ugyanarról az eszközről van szó. A klón interfészeknél az elnevezés konvenció a következő: ifcfg-<if név>-<klón név> Az új konfigurációs állomány ebben az esetben az eredeti kiegészítésére szolgál. Vagyis a klón interfész felhúzásakor a konfigurációs script az eredeti és a klón uniójából áll össze Dialup interfész A dialup interfész működése kicsit összetettebb az ethernet interfésznél. Ahhoz, hogy létrejöjjön a hálózati kapcsolat, egy egyszerű konfigurálás kevés. Ilyenkor segédprogramokra van szükség. Az egyik kezeli a modemet az AT parancsokkal, pl. tárcsázza a számot (pl. dip, wvdial, stb.). Miután létrejött a kapcsolat a két modem között, akkor a tárcsázó program PPP kapcsolat esetén elindítja a ppp programot. Ez az /etc/ppp könyvtárban lévő konfigurációs állományok alapján megpróbál authentikálni a szerverre. Majd a belépés után létrejön egy PPP kapcsolat, illetve egy ppp0 interfész. Innentől az interfész paraméterit megnézhetjük az ifconfig paranccsal. Dialup interfész esetén az ifcfg-<eszköz> állomány is összetettebb. Nézzünk erre egy példát (ifcfg-ppp0): DEVICE=ppp0 NAME=test WVDIALSECT=test MODEMPORT=/dev/modem LINESPEED= PAPNAME=test USERCTL=true ONBOOT=no PERSIST=no DEFROUTE=yes PEERDNS=yes DEMAND=no

98 98 IDLETIMEOUT=600 - A NAME paraméterrel beállított név lényegében csak egy azonosító a dialup beállítások csoportjának. - A WVDIALSECT a wvdial tárcsázó program (a RedHat által preferált tárcsázó program) használt konfigurációs szekcióját adja meg. Ez a konfiguráció az /etc/wvdial.conf állományban található. - A MODEMPORT a modemhez kapcsolódó soros port eszközt adja meg. - A LINESPEED a baud-rate-et adja meg. - A PAPNAME paraméter a PAP (Password Authentication Protocol) authentikáció használata esetén használt nevet adja meg. (A jelszó az /etc/ppp/pap-secrets állományban található.) - A PERSIST paraméter megadja, hogy az interfész folyamatosan aktív legyen-e. - A DEFROUTE meghatározza, hogy az adott kapcsolat lesz-e az alapértelmezett kapcsolatunk a külvilág felé, vagy sem. - A PEERDNS paraméterrel megadható, hogy a szolgáltatótól kapott DNS szerver beállításokat használja-e a rendszer vagy sem. - A DEMAND paraméter meghatározza, hogy a kapcsolatot automatikusan létrejöjjöne ha valaki a hálózatot próbálja használni (yes), vagy sem (no). - A IDLETIMEOUT megadja, hogy hány másodperc múlva bontson le a kapcsolat, ha senki sem használja Egyéb interfészek Az ifcfg-<eszköz> konfigurációs állományokkal még további interfész típusokat is beállíthatunk: - Az ifcfg-lo a loopback hálózati interfész beállítása. A loopback interfész feladata a gépen belüli IP kommunikáció lekezelése. - Az ifcfg-irlan0 az infravörös kapcsolatok interfésze. - Az ifcfg-tr0 a token ring kommunikáció interfésze. Azonban ezt már lényegében kiszorította az ethernet Interfész kontroll scriptek Az eddigi fejezetekben definiált interfész konfigurációk segítségével az /etc/sysconfig/network-scripts/ könyvtárban található interfész specifikus ifup és ifdown scriptek konfigurálják fel, illetve állítják le az interfészeket. Azonban a megfelelő script kiválasztását elintézik nekünk az /sbin/ könyvtárban található ifup és ifdown frontend script. Például: ifup eth0 Amennyiben az összes hálózati interfészt szeretnénk egyszerre leállítani, elindítani, vagy újraindítani, akkor ezt az /etc/init.d/network scripttel tehetjük meg.

99 Útválasztás Először is érdemes definiálni mi is az az IP routing: Az IP Routing egy olyan folyamat, amelynek segítségével egy több hálózati interfésszel rendelkező host eldönti, hogy a kapott IP csomagokat merre továbbítsa. Nézzünk erre egy gyakorlati példát: Képzeljünk el egy kis céget, amelynek van egy routere. Ez két Ethernet interfésszel rendelkezik a cég két alhálózatához, és egy PPP interfésszel az Internet felé. Amikor a router kap egy csomagot valamelyik interfészén keresztül, akkor a routing az a mechanizmus, amelynek segítségével eldöntheti, hogy melyik interfészén kell tovább küldenie. Az egyszerű host-ok is rendelkeznek routing táblával. Minden hálózatra kapcsolt gépnek legalább két interfésze van. Egy virtuális loopback interfész, melyet a lokális visszacsatolásokhoz használ a rendszer, és egy valódi hálózati interfész (Ethernet, PPP, stb.) Ezek után nézzük, hogyan is működik ez a mechanizmus. Minden host tartalmaz egy speciális listát a routing szabályokról, ezt hívjuk routing táblának. Ennek a táblának a sorai legalább három információt kell, hogy tartalmazzanak. Egyrészt a cél címét (ez gyakran egy alhálózat címe és netmask-ja), az interfészt, amelyen a csomagot továbbítja, és a harmadik opcionális, egy router címe amely a csomag továbbításában a következő lépcső szerepet tölti be. Ezt a táblát a route paranccsal listázhatjuk ki. Maga a routing folyamat egyszerű: ha a számítógép kap egy csomagot, akkor megvizsgálja célcímet és összehasonlítja a tábla minden bejegyzésével. Kiválasztja a legjobban illeszkedő sort (a legspecifikusabb az illeszkedő sorok közül) és továbbítja a csomagot az adott interfész felé. Ha a gateway mező is ki van töltve, akkor az adott gépnek küldi tovább, ha nincs kitöltve, akkor úgy veszi, hogy a célgép az adott hálózaton helyezkedik el, és közvetlenül oda továbbítja. Ezt a táblát az előbb megismert route paranccsal kezelhetjük. A parancsot különböző paraméterekkel meghívva hozzáadhatunk, törölhetünk vagy módosíthatunk sorokat a táblában. (Ezt a táblát a kernel kezeli, a route parancs rendszerhívásokkal kéri a kerneltől a tábla módosítását.) Nézzünk egy példát a routing tábla kezelésére: A következő módon hozzáadhatunk egy sort a routing táblához, amellyel megmondjuk a kernelnek, hogy a * IP című gépeknek szánt csomagokat ezen az interfészen küldje ki:

100 100 route add -net netmask eth0 (Lényeges a -net paraméter megadása. Ez jelzi, hogy a megadott cím egy hálózatot jelöl. Egyes gépeket a -host paraméterrel adhatunk meg.) Ezzel a bejegyzéssel már létrehozhatunk IP kapcsolatokat a szegmensünk gépeivel. Azonban ahhoz, hogy a világ többi részével is beszélgetni tudjunk, az ő hálózatuk irányába is be kell állítanunk routing szabályokat. De mivel egy gépen keresztül látjuk az internetet, ezért elég csak egy szabályt megadnunk, amely az összes olyan csomagot, amire nem tudtunk szabály sort illeszteni, elküldi ennek a router-nek. Ő majd gondoskodik arról, hogy tovább menjen. Ezt a szabályt nevezzük default szabálynak, a gépet pedig default gateway-nek. A deafult gateway-t az alábbi paranccsal állíthatjuk be. route add default gw eth0 (A gw paraméter jelenti azt, hogy az IP cím egy gateway (router) címe vagy neve, amely a csomagot továbbítja a célhoz.) Az interfészeknél már említett konfiguráló script mechanizmusnak a default gateway-t is megadhatjuk, hogy a rendszer indulásakor automatikusan beállítsa rá a routing szabályt. Ezt a paramétert (GATEWAY) az /etc/sysconfig/network állományban találjuk. 6.5 Név leképezés Mivel az IP címek az emberi elme számára nehezen megjegyezhetőek, ezért az IP címekhez neveket rendelünk. Az előbb említett /etc/sysconfig/network állományban a gépünk nevét is beállíthatjuk (HOSTNAME paraméter). Azonban ez lényegében az ön felismerést szolgálja, vagyis hogy az egyes szolgáltatások tudják, hogy mi a gép neve. Az igazi nevet természetesen a DNS (Domain Name System) szerver határozza meg. A gépünk által használt DNS szervereket az /etc/resolv.conf állományban állíthatjuk be. A nameserver direktíva után adhatjuk meg a DNS szerver IP címét. Természetesen több szervert is megadhatunk egymás után. Ezek sorrendje határozza meg, hogy melyik szerverhez forduljon először. Ha a saját hálózatunk gépeire nem szeretnénk teljes névvel hivatkozni, akkor a search direktíva után megadhatjuk domain nevet, így a rendszer automatikusan megpróbálja a név után illeszteni. Ha szeretnénk statikus név - IP cím összerendeléseket is összehozni (Például: localhost), akkor azt az /etc/hosts állományban tehetjük meg.

101 Network Configuration program A hálózati konfigurációs állományok kezelésének egyszerűsítésére a RedHat disztribúció tartalmaz egy grafikus eszközt is. A program neve Network Configuration, és a systemconfig-network RPM csomag része. Helye: Start System Settings Network Ábra 6.1 Network Configuration főablak Ezzel a programmal könnyen létrehozhatunk konfigurációs állományokat az új interfészeknek, vagy módosíthatjuk a beállításait a már meglévőknek. Emellett lehetőség nyílik a DNS szerver és a hosts állomány beállításainak megváltoztatására is. 6.7 Hálózati szolgáltatások automatikus indítása Miután a hálózati eszközök konfigurációját befejeztük a következő lépés az egyes hálózati szolgáltatások beüzemelése. A szerverprogramok alapvető működési elve, hogy a hálózaton keresztűl várják a kliens programok kapcsolódását, majd kiszolgálják azok kéréseit. Ezért a szerver programok gyakran a hátérben folyamatosan futó processzek, amelyek egyes TCP/UDP portokra kapcsolódva várják a felhasználókat. Ezeket a szolgáltatásokat a már korábban megismert /etc/rc.d/init.d könyvtári script-ekkel és az /etc/rc.d adat struktúrával indítjuk automatikusan. Ennek hátránya, hogy ilyenkor a processzek idejűk jelentős részében csak várnak és foglalják az erőforrásokat. Azonban létezik egy másik metódus is. Az inetd program segítségével elérhetjük, hogy a szolgáltatás csak akkor induljon el, amikor szükség van rá. Ilyenkor csak az inetd daemon indul el és fut folyamatosan. Várja a szolgáltatások portjain a kapcsolódási kérelmeket, majd amikor érkezik egy, akkor automatikusan

102 102 elindítja a szerver szolgáltatást. Az inetd egy flexibilisebb és biztonságosabb változata az xinetd program, amelyen manapság a Linux szervereken találkozhatunk. Az xinetd által indított szolgáltatásokat két csoportra oszthatjuk. A szolgáltatások egyik csoportját többszálúnak hívják. Ez működési elvükből adódik, mivel az xinetd minden kapcsolódási kérelem hatására egy újabb példányt indít el belőle. Az új példány kezeli a továbbiakban azt a kapcsolatot, az xinetd pedig várja az újabb kapcsolódásokat. A másik csoport azonban olyan szolgáltatásokat tartalmaz, amelyek az összes kapcsolódási kérelmet egymagukban kezelik le. Ezeket nevezzük egy szálúnak. Az xinetd egy ilyen szolgáltatás elindítása után felfüggeszti az újabb kérelmek lekezelését, azt meghagyja a szolgáltatásnak egészen addig, amíg a szerver program le nem áll. Az ilyen szolgáltatások általában UDP alapúak. Azonban az xinetd daemon az eddigieken kívül további előnyökkel is rendelkezik. A mechanizmus révén központosítva adminisztrálhatjuk a szolgáltatásokhoz való hozzáféréseket, továbbá könyvelhetjük az egyes szolgáltatások tevékenységét. Az xinetd program konfigurációs állománya az /etc/xinetd.conf. Ebben sorolhatjuk fel az egyes szolgáltatások paramétereit. Az egyszerűbb kezelhetőség érdekében azonban ezt az állományt általában részekre szokás bontani. A RedHat disztribúcióban az egyes szolgáltatásokhoz külön állományok tartoznak az /etc/xinetd.d könyvtárban. Az egyes szolgáltatások paraméterei a következő formában találhatóak: service <szolgáltatás neve> { <paraméter> <operátor> <érték> <érték> } Az operátor a következő jelek valamelyike: =, +=, -= A paraméterek nagy részénél csak a = jel értelmezett. Ezzel állíthatjuk be egy jellemző értékét. Azonban ha egy paraméter érték listát is tartalmazhat, akkor += jellel vehetünk fel új elemeket a listába, a -= jellel pedig eltávolíthatjuk. A paraméterek a következők lehetnek: Paraméter id type flags disable Leírás A szolgáltatás egyedi azonosítója. A szolgáltatás típusa: RPC kommunikáció (RPC), az xinetd belső szolgáltatása (INTERNAL), TCPMUX szolgáltatás (lásd. RFC 1078), nem szabványos (UNLISTED) A szolgáltatás működésének speciális beállításai. A szolgáltatás letiltása ( yes vagy no )

103 103 Paraméter socket_type protocol wait user group instances nice server server_args only_from no_access access_times log_type log_on_success log_on_failure env passenv port redirect bind interface banner banner_success banner_fail per_source cps max_load umask enabled rlimit_<erőforrás> Leírás A kommunikáció típusa: stream, dgram, raw (IP), seqpacket (szekvenciális datagram) A protokoll típusa. Lásd.: /etc/protocols Értéke általában tcp, vagy udp. Ezzel a paraméterrel állíthatjuk be, hogy az szolgáltatás egy szálú (yes), vagy több szálú (no). A szolgáltatás felhasználó azonosítója. A szolgáltatás csoport azonosítója. Egyszerre hány példány lehet aktív a szolgáltatásból. A szolgáltatás processzének prioritása. A szolgáltatáshoz futtatott program. A szolgáltatás programjának paraméterei. Csak a felsorolt IP címekről, illetve tartományokból érhető el a szolgáltatás. A felsorolt IP címekről, illetve tartományokból nem elérhető a szolgáltatás. Korlátozhatjuk a hozzáférést az idő alapján is. A logolás metódusa. A szolgáltatás elindulásakor a logban eltárolandó paraméterek. Meghatározza a logolandó információkat, amikor valami oknál fogva nem sikerül a szolgáltatás elindítása. A szerver processz számára beállított további környezeti változók. Az xinetd processz környezeti beállításaiból a szerver processz számára továbbítottak listája. A szolgáltatás portja. A tcp alapú szolgáltatást az xinetd átirányítja egy másik gépre. A szolgáltatás hálózati interfészhez rendelése. Lásd: bind A kapcsolódáskor elküldött szövegállomány. Engedélyezett, sikeres kapcsolódás esetén elküldendő szövegállomány. Megtagadott, vagy sikertelen kapcsolódás esetén elküldendő szövegállomány. Az egy IP címről eredő kapcsolódások maximális száma. A maximális kapcsolódási ráta. A megadott rendszerterheltségi limit fölött nem engedélyez több kapcsolódást a szolgáltatáshoz. A szolgáltatás processzének beállított umask értéke. A szolgáltatás engedélyezése. A szolgáltatás erőforrás limitációi.

104 104 Paraméter deny_time Leírás A szolgáltatások újraindításának minimális ideje. (DOS támadások megakadályozására) A service kulcsszó mellett használhatjuk a defaults kulcsszót is, amellyel az alapértelmezett értékeket állíthatjuk be. Vizsgáljuk meg az xinetd szolgáltatások beállításait! Engedélyezzük valamelyik szolgáltatást és próbáljuk ki! A korábban megismert chkconfig programmal az xinetd szolgáltatásokat is engedélyezhetjük, letilthatjuk, listázhatjuk. Ebben az esetben természetesen nem adhatunk meg futás szintet. A chkconfig programmal listázzuk ki az xinetd szolgáltatásokat! Tiltsuk le az előbb engedélyezett szolgáltatást! 6.8 TCP Wrapper A TCP Wrapper egy plusz védelmi réteget alkot az xinetd és a hálózat között. (De más programok is használhatják.) Feladata hogy központilag konfigurálhassuk a szerver hálózati szolgáltatásaihoz való hozzáférést. Ezt az /etc/hosts.allow Engedélyezések és az /etc/hosts.deny Tiltások állományokkal tehetjük. Elsőként a rendszer a hosts.allow állományban található szabályokat illeszti az adott kapcsolati kérelemre, így ha itt van találat, akkor a kapcsolat engedélyezve lesz. Ezek után elemzi a hosts.deny állományt. Ha itt találatunk van, akkor tiltva lesz a kapcsolat. A formátum: <szolgáltatás>: <kliensek megadása> [: <opciók>: <opciók>:...] Például: vsftpd :.bme.hu Ha ezt a hosts.allow állományban helyezzük el, akkor a bme.hu gépeinek engedélyezzük az ftp szolgáltatás használatát. Ha pedig a hosts.deny állományba, akkor letiltjuk. Mind a szolgáltatásnál, mind a kliensnél használhatjuk az ALL kulcsszót. De kombinálhatjuk az EXCEPT operátorral, amely kivételt jelent. ALL EXCEPT vsftpd :.bme.hu

105 105 Vagyis minden szolgáltatás kivéve az ftp. Ezen kívül még számos egyéb, de ritkábban használatos lehetőséggel rendelkezik a rendszer. Azonban jelenleg használata visszaszorult, és ezeket a megkötéseket tűzfalakkal kényszerítjük ki. 6.9 Távoli shell alapú elérés A telnet szerver lehetővé teszi, hogy távoli gépekről bejelentkezzünk a szerver gépre, és egy felhasználói shell-t kapjunk. A telnet kliens egy virtuális terminált hoz létre a felhasználó számára. Ezen a felületen keresztül mindazt megtehetjük, amit a lokális virtuális terminálokon. A telnet szervert az xinetd mechanizmuson keresztül futtathatjuk. Állítsuk be az xinetd-t, hogy futtassa a telnet szervert! Próbáljunk meg kapcsolódni a szomszéd gépére! (Ha szükséges ehhez hozzunk létre felhasználókat a szomszédaink számára!) Azonban arra is lehetőségünk van, hogy a távoli gépen ne interaktív shell-t futtassunk, hanem csak egyes parancsokat hajtsunk végre. Erre az rsh (Remote Shell) program szolgál. Az rsh szerver a telnet-hez hasonlóan az xinetd mechanizmuson keresztül futtatható. A kliens program parancs szintaxisa: rsh [-l felhasználó] host [parancs] Üzemeljük be az rsh szervert! Futassunk parancsokat a szomszéd gépén! Azonban mind a telnet, mind az rsh nyílt, titkosítatlan kommunikációt használ, ezért lehallgatható. Azonban létezik egy biztonságos alternatívájuk, az ssh (Secure Shell). Működését tekintve az rsh programnak felel meg, azonban biztonságos, titkosított kommunikációt használ. 11 Az ssh szerver program képes daemon-ként folyamatosan futni, de használhatjuk a az xinetd mechanizmuson keresztül is. Az utóbbi azonban nem célszerű. Az ssh szerver a működéséhez egy szerver kulcs legenerálását igényeli, azonban ha ezt minden kapcsolódáskor el kell végeznie, akkor az lelassítja a bejelentkezés műveletét. Az ssh kliens szintaxisa: ssh [-l felhasználó] host [parancs] 11 Az SSH protokoll két változata létezik a v1 és a v2. A v1 protokoll jelenleg már nem tekinthető teljesen biztonságosnak, ezért csak a v2 használata javasolt.

106 106 vagy ssh [parancs] Ha nem adunk meg parancsot, akkor interaktív shell-t kapunk, így a telnet programot is kiválthatjuk vele. Vizsgáljuk meg, hogy fut-e a gépünkön az ssh szerver! Ha nem, akkor indítsuk el! Lépjünk be a szomszéd gépére! Az ssh szerver konfigurációját az /etc/ssh/sshd_config állományban állíthatjuk be. A kliens alapértelmezett konfigurációja az /etc/ssh/ssh_config állományban található Állományok átvitele Mind az rsh, mind az ssh szolgáltatás rendelkezik a lokális cp parancs gépek között alkalmazható változatával. Ezeknek neve rcp (Remote Copy), illetve scp. A parancs szintaxisa: scp [[user@]host1:]file1 [...] [[user@]host2:]file2 Használhatjuk még a -r paramétert, amellyel rekurzívan másolhatunk. Az ssh csomag tartalmaz még egy sftp nevű programot is, amellyel az ftp-hez hasonló módon tölthetünk le állományokat Állományok megosztása Manapság a számítógépek már nagy háttértárolókkal rendelkeznek, azonban még mindig szükség van a file szerverekre. Az okok lehetnek az alábbiak: - Fontos információk központi tárolása, mások számára elérhetővé tétele. - Az egyes számítógépek különböző veszélyeknek vannak kitéve, vírusok, meghibásodások, emberi hibák. Ezért biztonsági másolatokat helyezhetünk el a központi szerveren. - A munkaállomások könnyebb adminisztrációja, az installációs állományok tárolása, vagy a programok központi szerverről való futtatása révén FTP Az állományok megosztásának egyik legrégibb, és manapság is elterjedten használt módja az FTP (File Transfer Protocol) szerverek használata. A Linux rendszereken, akárcsak máshol, az FTP szerverek több változata is elterjedt. Jelenleg a RedHat

107 107 disztribúció a vsftpd (Very Secure FTP Daemon) programot használja. Ennek működése daemon jellegű. Azonban léteznek inetd alapú FTP szerver implementációk is. A vsftpd konfigurációs állománya az /etc/vsftpd/vsftpd.conf. Az FTP szerverek működése alapján két változatot különböztetünk meg. A legáltalánosabban használt, amikor a rendszer felhasználói a nevükkel és jelszavukkal bejelentkezve, a felhasználói jogaikkal látják az állományrendszert. Ilyenkor kezelhetik a saját állományaikat. A másik működési mód, amikor publikálunk állományokat. Ebben az esetben a kliens programok azonosítás nélkül, un. anonymous -ként jelentkeznek be. Ekkor az ftp felhasználó jogaival tevékenykednek, és mozgási területük az ftp felhasználó home könyvtárára korlátozódik. A vsftpd programban is bekapcsolhatjuk az anonymous működési módot. Az /export könyvtárat tegyük elérhetővé anonymous FTP-n keresztül! NFS Az NFS (Network File System) protokoll a Unix rendszerek elterjedt megoldása az állományok megosztására. A Linux rendszerek üzemelhetnek NFS szerverként is, de kliensként fel is csatolhatjuk más szerverek megosztott könyvtárait. Linux alatt az NFS szerver implementációja két részre oszlik. Egyrészt egy kernel modulra, másrészt egy felhasználói módú programra. A felhasználói módban futó folyamat fogadja a kapcsolódási kérelmeket, és indítja a kernel szálakat. Az NFS szerver elindulása és működése részben különbözik az eddig megismert daemon, illetve inetd alapú működéstől. Ennek oka, hogy RPC (Remote Procedure Call) alapú kommunikációra épül. Ezért igényli a működéséhez az RPC kommunikációs rendszert is, amelyhez kapcsolódik a folyamatosan futó daemon jellegű szerver. Az RPC kommunikációs rendszert a portmap szolgáltatással indíthatjuk el. Ezek után már futtathatjuk az nfs és az nfslock szolgáltatásokat. A könyvtár megosztásokat az /etc/exports állományban állíthatjuk be. Minden sor elején a megosztott könyvtár szerepel, majd ezt követi a megosztást elérhető kliensek listája (üres helyekkel elválasztva). Minden kliensnek külön megadhatjuk a hozzáférési jogait zárójelben. Kliensnek megadhatunk egyes gépeket névvel vagy IP címmel. De megadhatjuk gépek egy csoportját úgy, hogy a név megadásánál használjuk a * és? karaktereket, vagy IP címtartományt adunk meg. A hozzáférés paramétereit a következő táblázatban láthatjuk: Paraméter ro Leírás Csak olvasható a megosztás. (Alapértelmezett)

108 108 Paraméter rw secure insecure async sync no_wdelay subtree_check no_subtree_check root_squash no_root_squash all_squash no_all_squash anonuid anongid Leírás Olvasható-írható a megosztás. A kliens kérelmének 1024 alatti portról kell érkeznie, vagyis csak root lehet a felhasználó. (Alapértelmezett) A secure opció ellentéte. Aszinkron módon kezeli a szerver a meghajtót, vagyis hamarabb válaszol, mint hogy letárolta a módosításokat. Szinkron kezeli a meghajtót. (Alapértelmezett) A szerver kicsit várakoztatja a módosítások kiírását a lemezre, ha arra számít, hogy még további kérelmek jöhetnek. Ezáltal, az adatok egyszerre kiküldésével növeli a rendszer teljesítményét. Ha egy alkönyvtárt osztunk meg, akkor a jogok megfelelő kezeléséhez az NFS szervernek végig kell néznie, hogy az adott felhasználónak a szülő könyvtárakhoz van-e megfelelő hozzáférése, hogy a megosztott könyvtárhoz hozzáférjen. Ezt hívjuk subtree check-nek. (Alapértelmezett) A subtree check kikapcsolása. (Biztonsági problémát jelenthet.) A root azonosítókat (uid/gid 0) leképezi anonymous azonosítóra. (Alapértelmezett) Kikapcsolja a root azonosító leképezést. Minden felhasználót anonymous-ra képez le. Kikapcsolja az azonosítók leképezését. (Alapértelmezett) Az anonymous felhasználói azonosítója. Az anonymous csoport azonosítója. Nézzünk egy példát: /pub *.valahol.hu(rw,all_squash) Itt a /pub könyvtárat tettük elérhetővé a valahol.hu domain minden gépe számára olvasás-írás joggal, és a felhasználók anonymous-ra képezésével. Megjegyzés: Figyeljünk arra, hogy a gép név és az opciók között ne legyen üres hely! Nézzük az előző példa módosított változatát: /pub *.valahol.hu (rw,all_squash) Ilyenkor a valahol.hu domain gépei csak olvasási jogot kapnak (alapértelmezett), és a világ többi része olvasás-írás jogot. Osszuk meg az /export könyvtárat mindenki számára csak olvashatóan, illetve a szomszédunk számára olvashatóan és írhatóan! Egy szerver NFS megosztásait a következő paranccsal listázhatjuk ki: showmount -e <gépnév>

109 109 A megosztások konfigurálására is tartalmaz a RedHat disztribúció grafikus konfiguráló programot. Ennek neve NFS Server Configuration, és a system-config-nfs RPM csomagban található. Helye: Start System Settings Server Settings NFS Server Ábra 6.2 NFS Server Configuration főablak Segítségével megosztásokat hozhatunk létre, törölhetünk, vagy paramétereit módosíthatjuk. Ábra 6.3 Megosztások létrehozása Az előbb felsorolt paramétereket mind beállíthatjuk az megosztás számára:

110 110 Ábra 6.4 Általános beállítások Ábra 6.5 Felhasználói jogok

111 Tűzfalak Kadlecsik József netfilter szemináriuma és még további hasznos szemináriumok

112 Samba A Samba az SMB (System Message Block) protokollt implementálja, amely a Microsoft Windows kliensek és szerverek elsődleges protokollja az állományok és printerek megosztására. Így a Linux alapú szerverek szolgálhatnak állományszerverként MS Windows környezetben is. A szolgáltatás három daemonként futó alrészből áll: nmbd: A név regisztrációkat és feloldásokat kezelő daemon. smbd: A file és printer megosztásokat TCP/IP kapcsolatokon szolgáltató daemon. Továbbá kezeli a lokális authentikációs metódusokat. winbindd: Ezt a daemont akkor használjuk, amikor a Samba szerver egy Windows NT4 vagy ADS domain része A működő szerver vizsgálata A működő Samba szervert tesztelhetjük egyrészt Windows kliensekkel, másrészt Linux kliens gépen, vagy magán a szerveren az smbclient nevű programmal. Ilyenkor az alapértelmezett megosztásokat láthatjuk. (Köztük megtaláljuk az $IPC megosztás.) Az smbclient parancs a Samba csomag része. A Linux gépek egyik SMB klienseként szolgál, amellyel elérhetjük a megosztott könyvtárakat. Az egyik gyakran használt paraméterezése: smbclient -N -L ServerName A program ilyenkor bejelentkezik a szerverre az alapértelmezett guest felhasználóként, és kilistázza a felhasználó által elérhető szolgáltatásokat. Lekérdezhetjük más felhasználó által használható megosztásokat is, ebben az esetben el kell hagynunk a N opciót (nincs jelszó) és a U paraméter után meg kell adnunk a felhasználói nevet. Az smbclient parancs egy másik gyakran elforduló formája: smbclient //ServerName/user U user Ezzel a paraméterezéssel egy FTP szerű fájltranszfer kapcsolatot hozhatunk létre. Miután a kapcsolat létre jött a get és put parancsokkal letölthetünk, illetve elküldhetünk állományokat, illetve a dir paranccsal kilistázhatjuk a könyvtár tartalmát. Bejelentkezéskor a felhasználó a home könyvtárát láthatja, amely megosztás alapértelmezett a Samba csomagban.

113 113 Az első paranccsal a szerver működéséről bizonyosodhatunk meg. A második típusú paranccsal a megosztásokat ellenőrizhetjük le A konfiguráció A Samba szerver konfigurációs állományai az /etc/samba/ könyvtárban találhatóak. - Az smb.conf fájl tartalmazza a szerver beállításait. Megosztásokat is ebben az állományban hozhatunk létre. - Az lmhosts a hosts fájlhoz hasonlít, azonban a NetBIOS név IP cím leképezéseket tartalmazza. - Az smbusers az NT felhasználók Linux felhasználó listába való leképezését tartalmazza. Egy-egy sort tartalmaz minden Linux felhasználóhoz, és az NT felhasználónevek listáját, amelyeket az adott felhasználóra képez le a rendszer. - Az smbpasswd állomány a Samba felhasználói jelszókat tartalmazza kódolt formában. (Az eredeti passwd állományt, amelyben a Linux rendszer a jelszavakat tárolja csak abban az esetben használhatjuk, ha a jelszavakat nyíltan továbbítjuk a hálózaton.) A rendszer másik fontos könyvtára a /var/log/samba könyvtár, ahol a log állományok találhatók. A Samba nem használja a korábban megismert syslog szolgáltatást, a log állományok kezeléséről maga gondoskodik Alap szerver beállítások Ahogy az előbb a konfigurációs állományoknál láttuk, a fő konfigurációs opciók az /etc/samba/smb.conf állományban találhatóak. Első lépésként beállíthatjuk a szerver workgroup paraméterét, a leíró szövegét, és esetleg a NetBIOS nevét is: netbios name = név workgroup = CSOPORT server string = Ez egy samba szerver Következő lépésként lekorlátozhatjuk a hozzáférést a szerverhez egyes IP cím tartományokra a cím részleges megadásával: host allow = Authentikációs beállítások Az SMB/CIFS világban alapvetően kétféle authentikációs metódust különböztetünk meg. A régi Windows 9x metódust (share), amely a megosztásokra ad meg jelszavakat, illetve a felhasználók azonosításán alapuló metódust. Utóbbi esetben 4 különböző megoldás közül is választhatunk az információk ellenőrzésénél: 12 A fordításkor bekonfigurálhatjuk a Samba-t úgy is, hogy használja a syslog mechanizmust.

114 114 user: A legegyszerűbb változat. A Samba szerver fogadja a usernév/jelszó párost és az adatbázisa alapján leellenőrzi. domain: Ebben az esetben a szerver egy NT domain tagja, rendelkezik egy machine accounttal a domain controllerben. Minden authentikációs információt a domain controller felé továbbít. ADS: A Samba szerver csatlakozhat egy Active Directory domainhez is. Amennyiben ezt nem NT-kompatibilis módban használjuk, akkor választhatjuk ezt az opciót. Ehhez azonban még szükséges a kerberos authentikáció bekonfigurálása is. server: Ez egy elavult választási lehetőség abból az időből, amikor még a Samba nem volt képes a domain authentikációra. Lényege, hogy a szerver átveszi a usernevet/jelszót a klienstől, majd ezzel megpróbál a domain controllerre belépni. Amennyiben sikerül, akkor elfogadja az authentikációt. Mi az egyszerűség kedvéért a példában user authentikációs metódust választunk, titkosított jelszókezeléssel. Az authentikációs metódust a következő sorral állíthatjuk be: security = user Azonban ahhoz, hogy a jelszavak a hálózaton biztonságban legyenek, szükséges hogy titkosítva továbbítsuk. Ennek beállítása: encrypt passwords = yes Ez felvet egy problémát. Az MS Windows rendszeren és a Unix/Linux rendszerek jelszó kódolási algoritmusa különbözik egymástól. Ugyanakkor a kódolás egyirányú, ezért a titkos jelszóból az eredeti jelszó nem nyerhető vissza, ebből következően a Linux jelszavakat nem tudjuk felhasználni a samba authentikációhóz. Vagyis kódolt jelszavak esetén a samba jelszavakat külön meg kell adnunk és tárolnunk. Az állomány, amely a jelszókat tárolja a következő sorral adható meg: smb passwd file = /etc/samba/smbpasswd A jelszót az smbpasswd programmal tudjuk beállítani. De ehhez először fel kell vennünk a samba felhasználókat. Így az első alkalommal a -a paraméterrel kell meghívnunk: smbpasswd -a <felhasználó> Azonban, hogy a samba és a Linux jelszavunk egyforma legyen megadhatjuk, hogy az smbpasswd program használata esetén az automatikusan a passwd paranccsal a rendszer jelszavunkat is utána állítsa a samba jelszónak. Ezt az alábbi parancsokkal kapcsolhatjuk be: unix password sync = Yes

115 115 passwd program = /usr/bin/passwd %u passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully* Megjegyzés: Arra is van lehetőség, hogy a passwd parancs használatakor a Samba jelszót is módosítsuk. Ehhez a PAM mechanizmus és a pam_smbpass.so modul segítségével lehet elérni. Ha a Samba felhasználók neve nem egyezik meg a Linux accountokkal, akkor leképezést is megadhatunk a kettő között. Ezt a korábban említett smbusers állomaány tartalmazza, és az alábbi sorral adhatjuk meg: username map = /etc/samba/smbusers Felhasználók importálása az smbpasswd állományba Bár a jelszavakat nem importálhatjuk be a Samba felhasználói adatbázisába, a felhasználók neveit azonban igen. Az smbpasswd állomány legenerálását a következő képpen végezhetjük el: cat /etc/passwd mksmbpasswd.sh > /etc/samba/smbpasswd A létrehozott állomány kényes információkat tartalmaz, ezért módosítsuk úgy a jogait, hogy csak a rendszergazda férhessen hozzá. A felhasználók listájának legenerálása után az smbpasswd programmal beállíthatjuk az jelszavakat is egyenként Megosztások A főbb paraméterek beállítása után már létrehozhatunk megosztásokat is. Ha egy publikus, de csak olvasható megosztást szeretnénk létrehozni, akkor annak alakja a következő lehet: [public] comment = Publikus path = /home/samba public = yes writable = no printable = no Itt a [] jelek közötti szöveg adja meg a megosztás nevét, a comment a megosztás leírását. A path paraméterrel állíthatjuk be a megosztott könyvtárat. A public jellemző beállításával mindenki számára elérhetővé tesszük. Viszont mivel a writable paramétert no -ra állítottuk, ezért csak olvasható.

116 116 Ha azt szeretnénk, hogy a felhasználók egy csoportja írhassa, akkor az alábbiak szerint módosítsuk: [public] comment = Publikus path = /home/samba public = yes writable = yes printable = no write list = felhasználó1 felhasználó2 A felhasználók felsorolása helyett megadhatunk csoportot is. Ilyenkor a csoport neve elé be kell írnunk jelet. Azonban ha csak egyes felhasználók számára szeretnénk valami teljes eléréssel megosztani, akkor a következő konfigurációt használhatjuk: [joe] comment = Joe könyvtára path = /home/joe valid users = joe public = no writable = yes printable = no Ha a szerver minden felhasználójának szeretnénk megosztani a saját home könyvtárát, akkor szerencsére nincs szükségünk arra, hogy mindegyikhez írjunk egy ilyen konfigurációs részt. Ehhez a Samba támogat egy speciális megosztást, amelynek a neve homes. [homes] comment = Home Directories browseable = no writable = yes create mode = 0664 directory mode = 0775 Ha nem hozunk létre egy megosztást a felhasználó nevével, de egy klienssel mégis csatlakozni szeretnénk egy ilyen megosztáshoz, akkor a Samba a homes szekció beállításai alapján automatikusan hoz létre nekünk egy ilyen megosztást. A browseable = no paraméter azt jelenti, hogy ez a megosztás ne látszódjon a browser-ben. Két további paramétert is láthatunk illusztráció képen. A create mode azt adja meg, hogy az új állományok milyen jogokkal jöjjenek létre. A directory mode paraméter hatása ugyanez a könyvtárakra. Osszuk meg publikusan az /export könyvtárat!

117 Konfiguráció ellenőrzése Az elkészített konfigurációs állományt a testparm programmal ellenőriztethetjük. testparm /etc/samba/smb.conf A tesztelés után érdemes csak az új konfigurációval elindítanunk a szervert Grafikus konfigurálás A Samba szerver konfigurálásához és a megosztások létrehozásához is létezik grafikus segédeszköz a RedHat disztribúcióban. Ennek a programnak a neve Samba Server Configuration. A system-config-samba RPM csomagban található. Helye: Start System Settings Server Settings Samba Server Ábra 8.1 Samba Server Configuration főablak Ábra 8.2 Szerver beállítások Ábra 8.3 Megosztások

118 Levelezés Az az Internet egyik leglényegesebb szolgáltatása. Az internet minden felhasználója ismeri és használja, mint az egymás közötti kapcsolat tartás eszközét. Az e- mail továbbítása alapvetően a következő részekre osztható: 1. A feladó a levelező kliensével megírja a levelet, majd elküldi. A levelező kliens ilyenkor kapcsolatba lép a levelező szerverrel és átadja neki a levelet. 2. A levelező szerver továbbítja a levelet a címzett levelező szerverére. 3. A címzett levelezőszervere veszi a levelet, és elhelyezi a címzett postaládájában. 4. Általában a címzett a levelező kliensével letölti a levelet a levelező szerveréről. Manapság ritkább az az eset, amikor magán a szerveren nézi meg egy kliens programmal a levelesláda tartalmát. Ahhoz, hogy ez a folyamat végre tudjon hajtódni, több protokoll használatára van szükség. A feladó kliensétől a levelező szerverre, majd a két levelező szerver között a kommunikáció az SMTP (Simple Mail Transfer Protocol) használatával valósul meg. A címzett kliens programja a levelező szerveréről egy másik protokollal tölti le a leveleket. Ez lehet a POP3 (Post Office Protocol 3), vagy az IMAP (Internet Message Access Protocol) SMTP Az SMTP elsődleges feladata, hogy a levelező szerverek között továbbítsa a leveleket. Azonban ugyanezzel a protokollal kommunikál a levelező kliens is a levél elküldésekor a szerverrel. Alapvető jellemzője, hogy a kommunikáció során csak a levél küldője tud kezdeményezni, és ezáltal a levelet csak a címzett levelesládájáig tudja továbbítani. Ezért van szükség másik protokollra a levél lehozásához. Fontos még megemlíteni, hogy a protokoll eredetileg nem használ semmilyen authentikációt. Ez nem meglepő, hiszen a levelező szerverek nem ismerhetik egymást feltétlenül. (Azonban a kliensek levelének továbbításához beállíthatunk különböző azonosításokat.) Azonban biztonsági problémák miatt idővel authentikációs metódusokat is adtak a protokollhoz, hogy ezáltal a felhasználók azonosítás után több jogosultsággal rendelkezhessenek. (Az MTA relayezzen nekik.) Ilyenkor javasolt az SSL titkosítás használata is a kényes információk átviteléhez. A SMTP protokollt megvalósító, és ezáltal a levél továbbítását végző szervernek (MTA, Mail Transport Agent) gyakran a Sendmail program használatos. Azonban léteznek további implementációk is: Postfix, qmail, exim. Ezek szolgáltatásaik számában, összetettségükben különböznek egymástól.

119 POP3 A POP3 protokoll segítségével képesek a levelező kliensek letölteni a levelesláda tartalmát. Gyakran törlik is onnan a már letöltött leveleket. Azoknak a felhasználóknak hasznos, akik egy kliens gépet használnak (esetleg több szervert is), és leveleiket helyben szeretnék tárolni. Továbbá ha nem állandó internet kapcsolattal rendelkeznek. Működése során a kliens program bejelentkezik a levelező szerverre. A szerver azonosítja a felhasználót, majd lehetővé teszi a kliensnek, hogy kilistázza és letöltse a leveleket. Az azonosítás azonban alapértelmezett esetben nem biztonságosan történik, ezért célszerű SSL titkosítást, vagy APOP, Kerberos, stb. authentikáció használata. A Fedora Core 2 disztribúció a Dovecot IMAP szerver csomagnak a POP3 protokollt kiszolgáló komponensét használja IMAP Az IMAP protokoll használata esetén a felhasználó a leveleit a szerveren tárolja és kezeli. A levelező kliens megnyithatja és törölheti a leveleket. Továbbá létrehozhat könyvtárakat, amelyekben rendezve tárolhatja a korábban kapott leveleket. Használata elsősorban azoknak javasolt, akik több kliens gépet használnak, és központilag a szerveren kívánják tartani a levelezésüket. Azonban ebben az esetben állandó kapcsolat szükséges a szerverrel, hogy a leveleinket elérhessük. Az IMAP protokoll szintén azonosítást kíván a felhasználóhoz. Azonban ez a protokoll is alapértelmezett esetben biztonságilag gyenge, plain jelszavakat használ. Ezért célszerű az SSL titkosítás használata, vagy más biztonságos metódus választása. A Fedora Core 2 disztribúcióban a már korábban említett Dovecot IMAP szerver használható ehhez a szolgáltatáshoz Sendmail A Sendmail jelenleg talán a legtöbb szolgáltatással rendelkező levelező szerver a társaihoz képest. Nagymértékben konfigurálható, és jól skálázható. Azonban ugyanakkor bonyolult, nehezen kezelhető a konfigurációs állománya a többi levelező szerverhez képest. A konfigurációs állományokat az /etc/mail könyvtárban találhatjuk meg. A rendszer fő konfigurációs állománya a sendmail.cf. Azonban ha ezt az állományt szemügyre vesszük, akkor láthatjuk, hogy mérete és bonyolultsága miatt nehezen kezelhető. Erre alternatívát nyújt a sendmail.mc állomány használata. Ebben a fájlban makrók használatával és paraméterezésével összeállíthatjuk a kívánt konfigurációt, és ebből az m4 program segítségével legenerálhatjuk az előbb említett sendmail.cf állományt.

120 120 A konfiguráció generálásához használható makrókat az /usr/share/sendmail-cf/ könyvtárban találhatjuk. (Ennek cf alkönyvtárában megtalálhatunk néhány konfigurációt is a különböző Unix változatokra.) Egy egyszerű mc állomány, amely egy teljes értékű mail szerver konfigurációjához elegendő, a következőket kell, hogy tartalmazza: VERSIONID(`az en verziom') OSTYPE(linux)dnl DOMAIN(generic)dnl MAILER(local)dnl MAILER(smtp)dnl A sorok jelentése: - A VERSIONID csak egy verzió információt helyez el az eredmény konfigurációs állományban. - Az OSTYPE megadása azért szükséges, mert ez alapján kerülnek be az adott operációs rendszerre jellemző beállítások. - A DOMAIN makróval állíthatjuk be a levelező szerverünk nevét. A generic kulcsszó használata esetén a sendmail automatikusan fogja meghatározni. Probléma esetén azonban explicit meg is adhatjuk. - A MAILER(local) a lokális, a szerver belső levéltovábbításához szükséges. - A MAILER(smtp) a hálózati levéltovábbítás bekapcsolásához kell. Ettől lesz SMTP szerver. Megjegyzés: A MAILER deklarációknak mindig az állomány végén kell lenniük. A hivatalos sendmail csomagban az elkészített mc állományból a következő paranccsal állíthatjuk elő a cf állományt: m4 ${CFDIR}/m4/cf.m4 config.mc > config.cf A parancsban a CFDIR változó értéke tartalmazza a sendmail konfigurációs scriptjeinek könyvtárát. Fedora esetén ez az /usr/share/sendmail-cf/ könyvtár. Azonban az egyszerűsítés végett az /usr/share/sendmail-cf/cf/ könyvtár tartalmaz egy Makefile állományt. Ennek segítségével a könyvtárban található mc állományokat könnyebben is lefordíthatjuk. Ha egy mc állományt szeretnénk lefordítani, akkor használhatjuk a következő parancsot: make <fájlnév>.cf Viszont Fedora disztribúció esetén tovább egyszerűsödik a feladatunk. Az alapértelmezett /etc/mail/sendmail.mc állományt az /etc/mail könyvtárban kiadott make

121 121 paranccsal is lefordíthatjuk. Ezek után nézzük meg az alapértelmezett sendmail.mc állományt a FC2 disztribúcióban: divert(-1)dnl dnl # dnl # This is the sendmail macro config file for m4. If you make changes to dnl # /etc/mail/sendmail.mc, you will need to regenerate the dnl # /etc/mail/sendmail.cf file by confirming that the sendmail-cf package is dnl # installed and then performing a dnl # dnl # make -C /etc/mail dnl # include(`/usr/share/sendmail-cf/m4/cf.m4')dnl VERSIONID(`setup for Red Hat Linux')dnl OSTYPE(`linux')dnl A VERSIONID és az OSTYPE funkcióját már korábban megismertük. dnl # dnl # default logging level is 9, you might want to set it higher to dnl # debug the configuration dnl # dnl define(`conflog_level', `9')dnl Megadhatjuk a log részletességét. Logoláshoz a sendmail a syslog rendszert használja. dnl # dnl # Uncomment and edit the following line if your outgoing mail needs to dnl # be sent out through an external mail server: dnl # dnl define(`smart_host',`smtp.your.provider') Amennyiben egy bizonyos szervernek szeretnénk átadni a kimenő leveleinket, akkor azt ennek a sornak a megadásával tehetjük meg. dnl # define(`confdef_user_id',``8:12'')dnl dnl define(`confauto_rebuild')dnl define(`confto_connect', `1m')dnl define(`conftry_null_mx_list',true)dnl define(`confdont_probe_interfaces',true)dnl define(`procmail_mailer_path',`/usr/bin/procmail')dnl A procmail program megadása. A procmail képes a levelek feldolgozására a beállított procmailrc scriptek alapján. define(`alias_file', `/etc/aliases')dnl Az /etc/aliases állományban megadhatunk felhasználói név leképezéseket, illetve automatikus forward szabályokat. define(`status_file', `/var/log/mail/statistics')dnl define(`uucp_mailer_max', ` ')dnl define(`confuserdb_spec', `/etc/mail/userdb.db')dnl define(`confprivacy_flags', `authwarnings,novrfy,noexpn,restrictqrun')dnl define(`confauth_options', `A')dnl dnl #

122 122 dnl # The following allows relaying if the user authenticates, and disallows dnl # plaintext authentication (PLAIN/LOGIN) on non-tls links dnl # dnl define(`confauth_options', `A p')dnl Amennyiben lehetővé szeretnénk tenni a felhasználóink számára, hogy authentikáció után a szerver továbbítsa a leveleiket, akkor azt ennek az opciónak a beállításával tehetjük meg. Ellenkező esetben a szerver egyáltalán nem vesz át leveleket továbbításra csak lokálisan, illetve a bekonfigurált tartományokból. 13 dnl # dnl # PLAIN is the preferred plaintext authentication method and used by dnl # Mozilla Mail and Evolution, though Outlook Express and other MUAs do dnl # use LOGIN. Other mechanisms should be used if the connection is not dnl # guaranteed secure. dnl # Please remember that saslauthd needs to be running for AUTH. dnl # dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl define(`confauth_mechanisms', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl Ezekkel a sorokkal kiválaszthatjuk az authentikációs metódust. dnl # dnl # Rudimentary information on creating certificates for sendmail TLS: dnl # make -C /usr/share/ssl/certs usage dnl # or use the included makecert.sh script dnl # define(`cert_dir',`/etc/mail/certs') define(`confcacert_path',`cert_dir') define(`confcacert',`cert_dir/cacert.pem') define(`confserver_cert',`cert_dir/cert.pem') define(`confserver_key',`cert_dir/key.pem') define(`confclient_cert',`cert_dir/cert.pem') define(`confclient_key',`cert_dir/key.pem') Az SSL (TLS) titkosítás használata esetén a szervernek szüksége van tanusítványra (certificate), hogy azonosítsa magát. Normál esetben ezt a tanusítványt az úgynevezett Certificate Authority szervezetektől igényelhetjük. Azonban a kommentben látható módon lehetőségünk van rá, hogy mi magunk generáljunk egy nem megbízható tanusítványt, hogy azt használhassuk. (A kliensek jelezni fogják hogy a tanusítvány nem megbízható, de lehetőségünk van ennek ellenére elfogadni.) Megjegyzés: A sendmail elég szigorú a titkos kulcs jogosultságait illetően, ezért figyeljünk rá, hogy csak a rendszergazdának legyen joga olvasni a key filet. dnl # dnl # This allows sendmail to use a keyfile that is shared with OpenLDAP's dnl # slapd, which requires the file to be readble by group ldap dnl # dnl define(`confdont_blame_sendmail',`groupreadablekeyfile')dnl dnl # dnl define(`confto_queuewarn', `4h')dnl dnl define(`confto_queuereturn', `5d')dnl dnl define(`confqueue_la', `12')dnl 13 A sendmail az authentikációhoz a cyrus-sasl (Simple Authentication and Security Layer) szolgáltatást használja. Ezért szükséges, hogy a saslauthd fusson. Amennyiben az authentikációs iformációt nem közvetlenül az /etc/shadow állományból szeretnénk venni, akkor az /etc/sysconfig/saslauthd állományban bekonfigurálhatjuk a kívánt mechanizmust.

123 123 dnl define(`confrefuse_la', `18')dnl define(`confto_ident', `0')dnl dnl FEATURE(delay_checks)dnl FEATURE(`no_default_msa',`dnl')dnl FEATURE(`smrsh',`/usr/sbin/smrsh')dnl Az alapértelmezett /bin/sh shell helyett a rendszer a Sendmail Restricted Shellt használja a programok futtatásához. FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl Az /etc/mail/mailertable.db állományban bekonfigurálhatunk speciális domain mailer összerendeléseket. Vagyis a mailertable állomány formátuma: mailer:domain FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl A korábbi aliases lista egy kibővített formája, ahol a felhasználókat teljes címmel adhatjuk meg. Ezáltal lehetővé teszi virtuális domain-ek használatát. Pl.: info@foo.org foo-info joe@foo.org error:nouser 550 No such user jack@foo.org Azonban a cím megadásnál használhatunk speciális változókat is. Például a %1 a felhasználói nevet jelenti. Ezzel több felhasználó levelét is átirányíthatjuk egy másik %1@foo.org FEATURE(redirect)dnl FEATURE(always_add_domain)dnl A lokálisan küldött leveleknél is hozzáteszi a domaint. FEATURE(use_cw_file)dnl Beolvassa az /etc/mail/local-host-names állományt, amelyben felsorolhatjuk a szerverünk további neveit. FEATURE(use_ct_file)dnl Beolvassa az /etc/mail/trusted-users állományt. Ebben felsorolhatjuk azokat a megbízható felhasználókat (root, mailman), amelyek módosíthatják a levél from mezőjét anélkül, hogy erről a tényről a szerver figyelmeztetést írna a levélbe. dnl # dnl # The -t option will retry delivery if e.g. the user runs over his quota. dnl # FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl

124 124 A procmail paraméterezése. FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl Bekapcsolja az access.db támogatást. Ez az állomány megadja, hogy a sendmail mely rendszerektől fogadjon el leveket, és mely gépek levelét továbbítsa. Amennyiben szeretnénk engedélyezni egy tartományra a relayezést, akkor például a következő sorokkal tehetjük meg: RELAY aut.bme.hu RELAY FEATURE(`blacklist_recipients')dnl Letilthatjuk a levelek fogadását egyes célcímekre. EXPOSED_USER(`root')dnl dnl # dnl # The following causes sendmail to only listen on the IPv4 loopback address dnl # and not on any other network devices. Remove the loopback dnl # address restriction to accept from the internet or intranet. dnl # DAEMON_OPTIONS(`Port=smtp,Addr= , Name=MTA')dnl Alapértelmezett beállításban a szerver csak a loopback interfészen ( ) fut. Ahhoz, hogy tényleges hálózati szolgáltató legyen a sort módosítsuk az alábbiak szerint: DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl dnl # dnl # The following causes sendmail to additionally listen to port 587 for dnl # mail from MUAs that authenticate. Roaming users who can't reach their dnl # preferred sendmail daemon due to port 25 being blocked or redirected find dnl # this useful. dnl # dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl dnl # dnl # The following causes sendmail to additionally listen to port 465, but dnl # starting immediately in TLS mode upon connecting. Port 25 or 587 followed dnl # by STARTTLS is preferred, but roaming clients using Outlook Express can't dnl # do STARTTLS on ports other than 25. Mozilla Mail can ONLY use STARTTLS dnl # and doesn't support the deprecated smtps; Evolution <1.1.1 uses smtps dnl # when SSL is enabled-- STARTTLS support is available in version dnl # dnl # For this to work your OpenSSL certificates must be configured. dnl # dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl Ezzel a sorral bekapcsolhatjuk az SSL titkosítás támogatását a szerverünkben. (Ehhez a korábbi konfigurációs beállítások, tanusítvány is szükségesek.) dnl # dnl # The following causes sendmail to additionally listen on the IPv6 loopback dnl # device. Remove the loopback address restriction listen to the network. dnl # dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')dnl dnl # dnl # enable both ipv6 and ipv4 in sendmail:

125 125 dnl # dnl DAEMON_OPTIONS(`Name=MTA-v4, Family=inet, Name=MTA-v6, Family=inet6') dnl # dnl # We strongly recommend not accepting unresolvable domains if you want to dnl # protect yourself from spam. However, the laptop and users on computers dnl # that do not have 24x7 DNS do need this. dnl # FEATURE(`accept_unresolvable_domains')dnl Elfogadja azoktól a gépektól is a kapcsolatot, amelynek a nevét a DNS nem tudja feloldani. dnl # dnl FEATURE(`relay_based_on_MX')dnl dnl # dnl # Also accept sent to "localhost.localdomain" as local . dnl # LOCAL_DOMAIN(`localhost.localdomain')dnl dnl # dnl # The following example makes mail from this host and any additional dnl # specified domains appear to be sent from mydomain.com dnl # dnl MASQUERADE_AS(`mydomain.com')dnl dnl # dnl # masquerade not just the headers, but the envelope as well dnl # dnl FEATURE(masquerade_envelope)dnl dnl # dnl # masquerade not as well dnl # dnl FEATURE(masquerade_entire_domain)dnl dnl # dnl MASQUERADE_DOMAIN(localhost)dnl dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl dnl MASQUERADE_DOMAIN(mydomain.lan)dnl MAILER(smtp)dnl MAILER(procmail)dnl Bár a konfiguráció elemzése során már említettük, foglaljuk össze mégegyszer, hogy milyen állományokkal befolyásolhatjuk a levelező szerver működését: - access - Megadja, hogy a sendmail mely rendszerektől fogadjon el leveket, és mely gépek levelét továbbítsa. - domaintable - Szerver név leképezéseket adhatunk meg. Például ha a cég nevet és domain-t változtatott, akkor ebben az állományban megadhatjuk a leképezést. - local-host-names - Megadhatjuk a szerverünk alternatív neveit. - mailertable - Ha egyes gépekre a levél továbbításra más út használata szükséges, mint az alapértelmezett, akkor ebben az állományban specifikálhatjuk azt. - trusted-users A megbízható felhasználók listája, akik specifikálhatnak speciális feladókat is a levelekben. - virtusertable - Segítségével több virtuális domain-t fogadhatunk egy levelező szerveren, majd a beállítások alapján a felhasználók helyi, vagy más szerveren lévő levelesládáiba továbbíthatjuk. Mivel a sendmail valójában az ezekből a szöveges állományokból generált adatbázisokat használja, ezért a módosítások után újra kell generálnunk az adatbázisokat: makemap hash /etc/mail/<állomány> < /etc/mail/<állomány>

126 126 De az Fedora disztribúcióban elegendő, ha kiadjuk a make parancsot az /etc/mail könyvtárban, amely frissíti az összes db állományt. Az /etc/aliases állomány módosítása esetén pedig a newaliases parancsot kell lefuttatnunk. Ahhoz, hogy a szerverünk elfogadja a lokális hálózatunkon lévő gépek levelező klienseitől a leveleket, szükséges felvennünk vagy a gépeket, vagy a domain nevet, vagy a címtartományt az access állományba. Példánkban a lokális hálózat neve és címtartománya: valahol.hu /24. A levelező szerver neve és címe: mail.valahol.hu ( ). A kliens neve és címe: kliens.valahol.hu ( ). Amennyiben csak az adott kliens leveleit akarjuk továbbítani, akkor a következő sort kell elhelyeznünk az access állományban: kliens.valahol.hu RELAY vagy RELAY Amennyiben a helyi hálózat összes gépének levelét továbbítani szeretnénk, akkor: valahol.hu RELAY vagy RELAY Ezek után újra kell generálnunk az adatbázist, majd újraindítani a sendmail-t. Állítsuk be az access állományban, hogy a sendmail a helyi hálózat leveleit továbbítsa! Amikor a MTA szerverek leveleket továbbítanak, akkor gyakran előfordul, hogy a címzett levelező szervere valamiért éppen nem elérhető. Ebben az esetben a szerver egy várakozási listába helyezi a levelet, és meghatározott időközönként újra megpróbálja elküldeni. A sendmail esetén ezt a várakozási listát a mailq paranccsal tudjuk kilistázni. Helyileg a várakozó levelek a /var/spool/mqueue könyvtárban találhatóak. Ha manuálisan szeretnénk kiváltani a várakozó lista elküldését, akkor azt a sendmail -q paranccsal tehetjük meg Procmail A procmail egy lokális levéltovábbító rendszer, amely ugyanakkor komoly filterezést tesz lehetőve. Ezáltal a beérkező leveleinket szortírozhatjuk.

127 127 A procmail programot több féle képpen is meghívhatjuk. Az előbb beállított konfigurációban a sendmail automatikusan meghívja minden beérkező levélre. A procmail az /etc/procmailrc és a felhasználó home könyvtárában található.procmailrc konfigurációs állományokban megadottak szerint dolgozza fel a levelet. A procmailrc állományok szintaktikájának leírása a man procmailrc paranccsal tekinthető meg. Az /etc/procmailrc állományban célszerű elhelyezni a következő sort, hogy a procmail ne root privilégiumokkal, hanem a címzett felhasználó nevében hajtsa végre az utasításokat: DROPPRIVS=yes A ~/.procmailrc állomány elején is célszerű pár sort mindenképpen elhelyezni. A mail mappák helye: MAILDIR=$HOME/mail És a log állomány, hogy visszanézhessük a procmail tevékenységét: LOGFILE=$HOME/.procmail.log SPAM szűrés A spam levelek elkapásának egyik kézenfekvő helye a levelező szerver. A spam szűrők integrálásának több módja is van, de az egyik legegyszerűbb a procmail használata. A procmail-el továbbíthatjuk a levelet a SpamAssassin programnak, amely a levélben spam jellemzők után keres, majd becslést ad arra, hogy az adott levél mekkora valószínűséggel spam. Ezek után a procmail segítségével eldönthetjük a levél további sorsát (semmit nem teszünk vele, külön mappában helyezzük el, töröljük, stb.). A szűrés bekapcsolásának legegyszerűbb módja ha az alábbi sort elhelyezzük az felhasználó vagy a rendszer procmailrc állományába: INCLUDERC=/etc/mail/spamassassin/spamassassin-default.rc Ez a sor minden levélre meghívja az /usr/bin/spamassassin programot, amely elvégzi az elemzést. Nagyobb kihasználtság esetén célszerű választás lehet, hogy az elemző algoritmust daemonként futtassuk és ehhez egy klienssel csatlakozzunk. Ekkor automatikusan kell futtatni a spamassassin szolgáltatást (/etc/init.d/spamassassin start) és a procmailrc állományban az alábbi bejegyzést kell elhelyezni:

128 128 INCLUDERC=/etc/mail/spamassassin/spamassassin-spamc.rc Ilyenkor a sor csak a kliens programot hívja meg, amely kisebb terhelést jelent a rendszernek. A spamassassin szürési algoritmusát az /etc/mail/spamassassin/local.cf konfigurációs állománnyal hangolhatjuk rendszer szinten. A felhasználók rendelkeznek egy ~/.spamassassin/user_prefs állománnyal, ahol a rendszerszintű beállításokat maguknak módosíthatják. A konfigurációs állomány két leggyakrabban használt opciója: required_hits - A komparálási szint. whitelist_from A mindig átengedett forrás címek. A szűrés után a spam-nek minősített levelet az alábbi beállításokkal helyezhetjük el külön állományban: :0 Hw * ^X-Spam-Status: Yes spam Vagy ha törölni szeretnénk, akkor az alábbi megoldást használhatjuk: :0 Hw * ^X-Spam-Status: Yes /dev/null Dovecot A Dovecot IMAP és POP3 szervert a biztonsági szempontok figyelembe vételével alakították ki. Teljesen kompatibilis az elterjedt University of Washington imap csomaggal, amely széles körben használt. A konfigurációs állománya az /etc/dovecot.conf. Az egyes protokollok kiszolgálását a következő sorral kapcsolhatjuk be: protocols = imap imaps pop3 pop3s Az s végű protokollok az eredeti SSL-t használó változatai. Mivel a jelszó továbbítás egyébként nyílt, ezért célszerű ezek használata. Az SSL titkosítás használatához szükségünk van SSL certificate-ekre (tanúsítványokra). Ennek beszerzésére két lehetőségünk van: egy Certificate Authority (CA) cégtől kérünk

129 129 egyet, vagy egy self-signed certificate-et hozunk létre. Utóbbi megoldás teszteléshez, csak javasolt. 14 A konfigurációs állományban az alábbi sorokkal adhatjuk meg a tanusítvány és a privát kulcs helyét: ssl_cert_file = /usr/share/ssl/certs/dovecot.pem ssl_key_file = /usr/share/ssl/private/dovecot.pem Ezek legenerálásához segít a dokumentáció mellett található script: /usr/share/doc/dovecot /mkcert.sh A sendmail és az imap beállításával már el is készült a levelező szerverünk. 14 Egy olcsó alternatív megoldás, ha saját magunk hozunk létre egy Certificate Authority-t a felhasználóink számára. Ebben az esetben elő kell állítanunk egy root certificate-et, amelyet a csoport minden felhasználójának a gépén el kell fogadtatnunk, mint megbízható root certificate. Ezek után ezek a gépek elfogadják az általunk aláírott tanúsítványokat.

130 Web szerver Linux alatt a legelterjedtebb web szerver az Apache. Az Apache egy robosztus, széles körű funkcionalitással, és bővíthetőséggel rendelkező web szerver. A Fedora disztribúciók jelenlegi a 2.0-s verziót tartalmazzák, továbbá számos bővítő modult. Az Apache szerver fő konfigurációs állománya az /etc/httpd/conf/httpd.conf. Ennek további, modulokhoz tartozó kiegészítő részei az /etc/httpd/conf.d könyvtárban találhatóak. A web szervert a httpd szolgáltatás elindításával indíthatjuk. A publikált web oldalak könyvtára a httpd.conf állományban beállított DocumentRoot. Ez a Fedora esetén a /var/www/html könyvtár. Indítsuk el a web szervert, helyezzünk el egy html oldalt a dokumentum könyvtárban, majd ellenőrizzük a rendszer működését egy böngészővel! Megjegyzés: Figyeljünk arra, hogy az állományok a web szerver által olvashatóak legyenek! A web szerver uid és gid beállításai a httpd.conf állományban találhatóak (User és Group). Fussuk át a httpd.conf állomány főbb beállításait! Globális beállítások A globális szekció (a httpd.conf állomány első része) a szerver általános beállításait tartalmazza A port és interfész használat A Listen opcióval megadhatjuk, hogy a webszerver melyik TCP portot használja a kapcsolatok fogadásához: Listen 80 De interfészt is specifikálhatunk, ha nem mindegyiken akarjuk elérhetővé tenni a szervert: Listen :80

131 Server-Pool beállítások Amikor az apache szerver fogadja a kéréseket, akkor ezeket szét kell osztania kiszolgáló szálak, vagy processzek között. Ezzel érjük el, hogy párhuzamosan több klienst is képes kiszolgálni. Ezeket a szálakat server-pool-nak nevezzük. Az apache 2.0-s verziója több megoldást is tartalmaz a server-pool-ok létrehozására és kezelésére. Linux alatt jelenleg a prefork, és a worker érhető el. (De rövidesen a perchild metódus is elkészül.) A régi (apache 1.3-ban megtalálható) több processzes megoldást a prefork metódus képviseli. Ha a stabilitást és a kompatibilitást tartjuk szem előtt, akkor ezt célszerű választanunk. Paraméterei: StartServers: Az induláskor létrehozandó szerver processzek száma. MinSpareServers: A várakozó processzek minimális száma. MaxSpareServers: A várakozó processzek maximális száma. MaxClients: Az indítható szerver processzek maximális száma. MaxRequestsPerChild: A szerver processzek által kiszolgálható kérések maximális száma. Ez után a processzt megszűnteti a szerver. Így elkerülhető egy esetleges memory leak-ből eredő probléma. Amennyiben a webszerverünknél a teljesítmény és a skálázhatóság a fő szempont, akkor célszerű egy szálakat használó megoldást választanunk. Ez a worker metódus. Paraméterei: StartServers: Az induláskor létrehozandó szerver processzek száma. MaxClients: A párhuzamos kliens kapcsolatok maximális száma. MinSpareThreads: A várakozó kiszolgáló szálak minimális száma. MaxSpareThreads: A várakozó kiszolgáló szálak maximális száma. ThreadsPerChild: A kiszolgáló szálak száma egy szerver processzben. MaxRequestsPerChild: A szerver processzek által kiszolgálható kérések maximális száma Dynamic Shared Object (DSO) Lehetőségünk van arra, hogy a szerverbe további modulokat töltsünk be induláskor, ezzel bővítve a képességeit. A modulokat a LoadModule kulcsszóval tölthetjük be. Azonban egyes modulok további konfigurációs beállításokat is igényelnek. Ebben az esetben a betöltést és a konfigurációt egy külön állományban adjuk meg az /etc/httpd/conf.d könyvtárban. Ezeket az Include conf.d/*.conf sorral töltjük be A fő szerver szekció A fő szerver konfigurációs szekcióban azokat a paramétereket adjuk meg, amelyekkel a fő szervert üzemeltetni szeretnénk. A fő szerver kifejezés azt a web szervert takarja,

132 132 amelyet nem a később tárgyalt virtuális szerver szekció kezel. Azonban ezek a beállítások a virtuális szerverek alapértelmezett értékeiként is tekinthetőek Jogosultság beállítások Megadhatjuk, hogy a web szerver melyik felhasználó és csoport nevében, illetve jogaival fusson: User apache Group apache Adminisztratív cím A ServerAdmin paraméterrel megadhatjuk az adminisztrátor címét akihez probléma esetén a felhasználók fordulhatnak A szerver azonosítása A szerver a ServerName paraméterben megadott névvel és porttal azonosítja magát a kommunikáció során A dokumentum könyvtár A fő dokumentum könyvtárat a következő sor állítja be: DocumentRoot "/var/www/html" Az URL-ben szereplő elérési út alapértelmezett esetben ettől a könyvtártól értendő Könyvtár beállítások A <Directory "/path"> és </Directory> direktívák által közrefogott részben egy könyvtár paramétereit állíthatjuk be. Engedélyezhetünk opciókat az Options kulcsszóval. A következő listából választhatunk: Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews De használható a None és az All direktíva is. Az AllowOverride kulcsszóval definiálhatjuk, hogy milyen beállításokat definiálhatunk felül az alkönyvtárakba elhelyezett.htaccess állománnyal. A választható kulcsszavak: Options FileInfo AuthConfig Limit Továbbá a None és az All. Az Order kulcsszóval megadhatjuk, hogy a szerver először az Allow vagy a Deny beállításokat értékelje ki.

133 133 Az Allow kulcsszóval megadhatjuk, mely kliensek férhetnek hozzá a könyvtárhoz. A Deny-al pedig letilthatjuk Felhasználói könyvtárak Ahhoz, hogy a felhasználók is elhelyezhessenek saját weboldalakat a szerveren, engedélyeznünk kell a következő opciót: UserDir public_html Ezáltal a felhasználó home könyvtárában létrehozott public_html könyvtár tartalmát publikálja a szerver /~user/ cím alatt. Természetesen a könyvtárra és az állományokra olyan jogosultságokat kell megadnunk, hogy a szerverszolgáltatás hozzá férhessen. Azonban a könyvtárban elérhető szolgáltatások korlátozására célszerű a lentebb található rész kikommentezése is: <Directory /home/*/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> Az alapértelmezett index állomány Amikor a felhasználó az URL-ben nem ad meg oldalt, csak egy könyvtárat (a címet / jellel zárja), akkor a szerver az alapértelmezett index állományt adja vissza, ha az létezik. Azt, hogy mi számítson az alapértelmezett index állománynak, a DirectoryIndex kulcsszóval adhatjuk meg. Például: DirectoryIndex index.html index.htm htaccess állomány Korábban már szó volt a.htaccess állományról, amellyel felül definiálhatjuk egy könyvtár beállításait, megadhatjuk a hozzáférési követelményeket. Azonban hogy ezt az állományt pontosan hogyan is nevezzük, az AccessFileName kulcsszóval adhatjuk meg. Például:

134 134 AccessFileName.htaccess MIME típus beállítások A MIME típus listát és összerendelést tartalmazó állományt a TypesConfig kulcsszóval állíthatjuk be: TypesConfig /etc/mime.types Az alapértelmezett MIME típus A DefaultType kulcsszóval megadhatjuk az alapértelmezett MIME típust, amit a szerver akkor használ, amikor nem tudja meghatározni. DefaultType text/plain Logolás Az ErrorLog kulcsszóval megadhatjuk a szervernek, hogy melyik állományba logolja a hibákat. A LogLevel a logolás részletességét hangolja. A LogFormat a bejegyzések formátumát. A kommunikációs bejegyzések állományát és formátumát a CustomLog kulcsszóval definiálhatjuk A dokumentum-könyvtáron kívüli könyvtárak elérése Az Alias kulcsszó lehetővé teszi, hogy a dokumentum-könyvtárstruktúrán kívül eső más könyvtárakat is elérhetővé tegyünk azáltal, hogy leképezzük erre a területre. A ScriptAlias olyan könyvtárakat tesz elérhetővé, amelyben futtatható CGI állományok vannak. Az ilyen könyvtárakat többnyire nem is a dokumentumkönyvtárstruktúrában helyezzük el biztonsági okokból, hogy a kód ne legyen elérhető Átirányítás A Redirect kulcsszót akkor használjuk, amikor egyes oldalak más címre kerültek. Ilyenkor a címben szereplő régi könyvtárakat új URL-re cseréli A szerver által generált index lista Ha a könyvtárban nem szerepel index állomány, és engedélyeztük a könyvtárban található állományok listájának lekérdezését, akkor az IndexOptions kulcsszóval megadhatjuk ennek formátumát.

135 135 Az AddIcon* direktívákkal megadhatjuk az egyes állománytípusokhoz használt ikonokat, illetve a DefaultIcon-al az alapértelmezettet. Az AddDescription kulcsszóval leírásokat is megadhatunk egyes állomány-kiterjesztésekhez. A ReadmeName és HeaderName kulcsszóval megadott állományneveket a szerver keresi a könyvtárban, és ha rendelkezésre állnak, akkor hozzáfűzi a tartalmukat a generált listához. Ha egyes állományokat szeretnénk kihagyni a listából, akkor az IndexIgnore kulcsszóval adhatjuk meg őket mintákkal Nyelvi beállítások A DefaultLanguage kulcsszóval beállíthatjuk a dokumentumok alapértelmezett nyelvét. Az AddLanguage pedig lehetővé teszi, hogy különböző kiterjesztésekkel több nyelven is elérhetővé tegyük oldalainkat. Amennyiben a kliens browserek nem rendelkeznek nyelv preferencia listával, akkor a szerver a LanguagePriority kulcsszóval megadott listát fogja követni. Hasonlóan a nyelvekhez alapértelmezett character set-et is megadhatunk az AddDefaultCharset direktívával, illetve kiterjesztés összerendelést is beállíthatunk az AddCharset kulcsszóval További kiterjesztés leképezések Az AddType kulcsszóval felül definiálhatjuk egyes kiterjesztésekre az állomány MIME típusát. Az AddEncoding hasonlóan egyes tömörített állományok típusát adja meg, hogy a kliens automatikusan kitömöríthesse. Az AddHandler segítségével egyes kiterjesztésekre beállíthatjuk a lekezeléseket. Ezek lehetnek beépítettek, vagy az Action direktívával definiálhatunk sajátokat is Hibajelzések Az ErrorDocument direktívával felüldefiniálhatjuk az alapértelmezett hibajelzéseket. Ez lehet egy egyszerű szöveg, egy lokális oldal, vagy egy URL Egyéni browser beállítások A BrowserMatch direktíva segítségével alkalmazkodhatunk az egyes browser-ek jellemzőihez, hibáihoz Apache mint proxy szerver Az apache képes proxy szerverként is funkcionálni. Ehhez a mod_proxy modul bejegyzései előtt lévő komment jeleket ki kell szednünk, és a ProxyRequests kulcsszó

136 136 után on értéket megadnunk. A Proxy tag-ek közt található a hozzáférés korlátozásának beállításai. A mod_disk_cache modul segítségével cache funkcióval is felruházhatjuk szerverünket Virtuális szerverek Ha több hosztnévhez tartozó web szervert is egy gépen szeretnénk megvalósítani, akkor a virtuális szerverek kialakításához kell folyamodnunk. A leggyakoribb a név alapú leképezés használata. Ennek használathoz be kell kapcsolnunk a következő opciót: NameVirtualHost *:80 Majd beállítjuk az egyes virtuális konténereket: <VirtualHost *:80> ServerName server1.example.org ServerAlias server1b.example.org DocumentRoot /var/www/html/ </VirtualHost> <VirtualHost *:80> ServerName server2.example.org DocumentRoot /var/www2/html </VirtualHost> Védett könyvtár létrehozása Ha a web szerveren valamelyik könyvtárat le akarjuk védeni, akkor erre is lehetőségünk van. Ezt két féle módon tehetjük. Egyik megoldás, hogy létrehozunk az adott könyvtárban egy.htaccess nevű állományt az alábbi beállításokkal: AuthType Basic AuthName "Restricted Directory" AuthUserFile /etc/httpd/conf/passwd Require user felhasznalo Azonban figyeljünk arra, hogy az adott könyvtárra engedélyeznünk kell az authentikációs beállítások módosítását. Ezt az AllowOverride AuthConfig opcióval tehetjük meg.

137 137 A másik megoldás, hogy létrehozunk egy konfigurációs állományt az /etc/httpd/conf.d könyvtárban, az alábbi tartalommal: <Directory "/var/www/html/vedett"> AuthType Basic AuthName "Restricted Directory" AuthUserFile /etc/httpd/conf/passwd Require user felhasznalo AllowOverride None </Directory> Mindkét megoldáshoz szükséges, hogy a htpasswd programmal létrehozzuk a felhasználót, és jelszót állítsunk be neki. Hozzunk létre védett könyvtárat! Azonban ennek a megoldásnak hibája, hogy a jelszó nyíltan, kódolás nélkül közlekedik a hálózaton. Viszont az Apache szerverhez rendelkezésre áll egy SSL modul, amellyel titkosíthatjuk a kommunikációt SSL A Fedora disztribúció alapértelmezett esetben tartalmazza ezt a modult. A modul konfigurációs állománya az /etc/httpd/conf.d/ssl.conf. Ezzel az Apache web szerver támogatja a https kommunikációt is. Természetesen itt is előkerül a tanúsítványok problematikája. A csomag alapértelmezett selfsigned tanúsítványokkal érkezik, amelyek lehetővé teszik a tesztelést. A későbbiekben azonban célszerű ezt szabályos tanúsítványokra cserélni. A bejelentkezéskor megkövetelhetjük a https protokoll használatát. Ehhez az alábbi sorral kell kiegészítenünk a fenti beállításokat: SSLRequireSSL A védett könyvtárunkat használjuk https protokollon keresztűl! Grafikus konfigurációs eszköz Az Apache konfigurálásához is rendelkezésünkre áll grafikus segédeszköz. A Fedora eszközének neve Apache Configuration. Ez a program a system-config-httpd RPM csomagban található. Helye: Start System Settings Server Settings HTTP Server

138 138 Ábra 9.1 Apache Configuration Megjegyzés: Ha ezt a programot használjuk a szerver konfigurálására, akkor ne módosítsuk kézzel a httpd.conf állományt, mert felülírja a módosításainkat. 9.2 Squirrelmail Gyakori igény, hogy a felhasználók szeretnék webes felületről is elérni leveleiket. Ezáltal lehetővé válik publikus számítógépek, vagy más olyan gépek használata is, ahol nincs módunk vagy szándékunk egy levelező klienst felkonfigurálni. A Squirrelmail egy PHP alapú webmail szolgáltatás. A PHP beépített IMAP és SMTP protokoll támogatását használja a levelező szerver eléréséhez. Telepítéséhez nem igényel további csomagokat, konfigurálása egyszerű. A Fedora disztribúcióban található csomag ezt még tovább egyszerűsíti, így már csak néhány beállítás marad az adminisztrátorra. A szolgáltatás könyvtárát a /etc/httpd/conf.d/squirrelmail.conf állomány képezi le a webszerver könyvtárstruktúrájába. A konfigurációs állománya: /etc/squirrelmail/config.php. Azonban ezt közvetlenül nem szoktuk kezelni. Erre szolgál az /usr/share/squirrelmail/config/conf.pl perl script. Az /usr/share/squirrelmail egyben a szolgáltatás fő könyvtára. A benne található php scriptek valósítják meg a funkcionalitást. A csomag által használt további könyvtárak a /var/lib/squirrelmail/prefs, amely a felhasználók egyéni beállításait tartalmazza, illetve a /var/spool/squirrelmail/attach, amely a csatolt állományok tárolására szolgál. Mindkét könyvtár tartalmazhat kényes információkat, ezért ügyeljünk rá, hogy csak az apache szerver férjen hozzá. (Az viszont szükséges, egyébként nem tudnánk használni.) Mielőtt használni kezdjük a szolgáltatást a konfigurációs script segítségével be kell állítanunk:

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK Mérési Utasítás Linux/Unix jogosultságok és fájlok kezelése Linux fájlrendszerek és jogosultságok Linux alatt, az egyes fájlokhoz való hozzáférések szabályozása érdekében a fájlokhoz tulajdonost, csoportot

Részletesebben

Operációs rendszerek 1.

Operációs rendszerek 1. Operációs rendszerek 1. Fájlkezelés Balla Tibor balla.tibor@inf.unideb.hu Fájlrendszer: Könyvtárak és Fájlok Inode szuperblokk inode tábla tényleges lemezterület inode = index-node Az inode tábla egy fix

Részletesebben

Operációs rendszerek. UNIX/Linux fájlrendszerek

Operációs rendszerek. UNIX/Linux fájlrendszerek Operációs rendszerek UNIX/Linux fájlrendszerek Tartalom Linux fájlrendszerek UNIX/Linux fájlrendszerek Szimbolikus linkek Fájlrendszerek csatolása Virtuális fájlrendszer Szuperblokk Inode Objektumok 2

Részletesebben

Hálózati adminisztráció Linux (Ubuntu 8.04) 7. gyakorlat

Hálózati adminisztráció Linux (Ubuntu 8.04) 7. gyakorlat Hálózati adminisztráció Linux (Ubuntu 8.04) 7. gyakorlat Johanyák Zsolt Csaba 1 1. Belépés és fájlkezelés Azonosító: hallgato Jelszó: hallgato Átváltás karakteres konzolra: Ctrl+Alt+F1.. Visszaváltás grafikus

Részletesebben

Operációs rendszerek gyak.

Operációs rendszerek gyak. Operációs rendszerek gyak. Linux alapok III., Bash Cirok Dávid Hirling Dominik Szegedi Tudományegyetem Cirok.David@stud.u-szeged.hu Hirling.Dominik@stud.u-szeged.hu Linux alapok III., Bash 1 Linkelés 2

Részletesebben

4. Laborgyakorlat. A fájlokról ezeket az adatokat, a fájlrendszer tárolja. Számunkra az 1, 3, 4. oszlopok lesznek az érdekesek.

4. Laborgyakorlat. A fájlokról ezeket az adatokat, a fájlrendszer tárolja. Számunkra az 1, 3, 4. oszlopok lesznek az érdekesek. Linux fájlrendszerek. 4. Laborgyakorlat Előző gyakorlaton, már volt szó a fájlrendszerekről, mikor a mount parancs -t kapcsolójáról volt szó. Linux alatt, az egyes fájlokhoz való hozzáférések miatt, a

Részletesebben

Unix/Linux alapok 2. Operációs rendszerek I. készítette: Kozlovszky Miklós, Bringye Zsolt Póserné Oláh Valéria, Windisch Gergely

Unix/Linux alapok 2. Operációs rendszerek I. készítette: Kozlovszky Miklós, Bringye Zsolt Póserné Oláh Valéria, Windisch Gergely Unix/Linux alapok 2. Operációs rendszerek I. készítette: Kozlovszky Miklós, Bringye Zsolt Póserné Oláh Valéria, Windisch Gergely linux (unix) fájlrendszerek http://www.csie.ntu.edu.tw/~pangfeng/system%20programming/lecture_note_2.htm

Részletesebben

Operációs rendszerek I. IIII. gyakorlat

Operációs rendszerek I. IIII. gyakorlat Operációs rendszerek I. IIII. gyakorlat o who o w o last o users o finger o talk o write o mesg o clear III. gyakorlat o alias/unalias o passwd o pwgen o ls o mkdir o cd o rm / rmdir o tree o pwd 2 finger

Részletesebben

I. Felzárkoztató Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

I. Felzárkoztató Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK Mérési Utasítás Alapvető Linux/UNIX parancsok A terminál. A Linux és a UNIX, multi taszkos, több felhasználós rendszerek. A több feladat végrehajtásához egy (vagy akár több) felhasználó több terminálon

Részletesebben

A L I N U X f e l é p í t é s e

A L I N U X f e l é p í t é s e A L I N U X f e l é p í t é s e Fájlrendszer, könyvtárszerkezet, kernel, terminal, X-window DE-EFK Egészségügyi Ügyvitelszervező Szak Linux c. tantárgy 2006 I. félév F á j l r e n d s z e r Fájlrendszernek

Részletesebben

Operációs rendszerek gyakorlat

Operációs rendszerek gyakorlat 01 Operációs rendszerek gyakorlat Berta Árpád berta@inf.u-szeged.hu www.inf.u-szeged.hu/~berta Irinyi magasföldszint, Mesterséges Intelligencia kutatócsoport, 45/A szoba Fogadó óra: hétfő 15:00-16:00-ig

Részletesebben

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer 1 Fájl rendszer Terminológia Fájl és könyvtár (mappa) koncepció Elérési módok Fájlattribútumok Fájlműveletek ----------------------------------------- Könyvtár szerkezet -----------------------------------------

Részletesebben

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár) man!!! Man Munka állományokkal cd :az aktuális könyvtár (.) beállítása (alapesetben a ~ könyvtárra) pwd: aktuális könyvtár kiiratása mkdir: új könyvtár létreh cp: másolás -r, -R: rekurzív (könyvtár) mv:

Részletesebben

Unix-Linux alapok I. gyakorlatvezető: Lutár Patrícia

Unix-Linux alapok I. gyakorlatvezető: Lutár Patrícia Unix-Linux alapok I. gyakorlatvezető: Lutár Patrícia Ez a dokumentum az órán bemutatott alapparancsoknak egy vázlatos áttekintése. A parancsokhoz tartozó kapcsolók/opciók (flagek) felsorolása nem teljes.

Részletesebben

Operációs rendszerek gyakorlat

Operációs rendszerek gyakorlat 01 Operációs rendszerek gyakorlat Berta Árpád berta@inf.u-szeged.hu www.inf.u-szeged.hu/~berta Irinyi magasföldszint, Mesterséges Intelligencia kutatócsoport, 45/A szoba Fogadó óra: hétfő 15:00-16:00-ig

Részletesebben

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED Munka állományokkal Operációs rendszerek 2. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 1 / 12 Állományrendszer

Részletesebben

Bevezetés az informatikába, második gyakorlat. Bevezetés Környezetváltozók és néhány egyszerű utasítás Jogosultságok Fájlkezelés

Bevezetés az informatikába, második gyakorlat. Bevezetés Környezetváltozók és néhány egyszerű utasítás Jogosultságok Fájlkezelés Bevezetés az informatikába, második gyakorlat Bevezetés Környezetváltozók és néhány egyszerű utasítás Jogosultságok Fájlkezelés Bevezetés Parancsértelmező (bash) Utasítások man Szövegszerkesztők Bash Különféle

Részletesebben

1_Linux_bevezeto_bash

1_Linux_bevezeto_bash 1_Linux_bevezeto_bash September 21, 2016 1 Számítógépes alapismeretek 1.1 ELTE - Fizika Bsc 1. évfolyam 1.2 # Félévés tematika: Linux alapismeretek Szövegszerkesztés Adatok ábrázolása Bevezetés a programozás

Részletesebben

1.2. NFS kliens telepítése és beállítása

1.2. NFS kliens telepítése és beállítása Hálózati adminisztráció Linux (Ubuntu 9.04) 10. gyakorlat Johanyák Zsolt Csaba 1 NFS és Samba szolgáltatások telepítése és beállítása Az NFS segítségével könyvtárakat oszthatunk meg Linux operációs rendszert

Részletesebben

fájlrendszer A /proc A /proc fájlrendszer 2010.03.10. A /proc fájlrendszer

fájlrendszer A /proc A /proc fájlrendszer 2010.03.10. A /proc fájlrendszer Linkek Dr. Mileff Péter Sok operációs rendszerben: egy az egyes összerendelés van az állományok és az állománynevek között. Minden állománynak egy neve van és minden állománynév egy állományt jelöl. A

Részletesebben

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt segédlet A Szilipet programok az adatok tárolásához Firebird adatbázis szervert használnak. Hálózatos

Részletesebben

A legfontosabb DOS parancsok

A legfontosabb DOS parancsok A legfontosabb DOS parancsok A DOS parancsok általános formája: KULCSSZÓ paraméterek Az utasítások akár kis-, akár nagybetűkkel is írhatók, a DOS nem tesz köztük különbséget. A kulcsszó és az első paraméter

Részletesebben

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek Linux alapok Parancsok általános alakja parancs kapcsolók paraméterek Könyvtárszerkezet abszolút útvonal útvonal megadása a gyökérből kiindulva / gyökérkönyvtár relatív útvonal útvonal megadása az aktuális

Részletesebben

Általános áttekintés. Általános áttekintés. Általános áttekintés. Egy boot folyamat

Általános áttekintés. Általános áttekintés. Általános áttekintés. Egy boot folyamat Dr. Mileff Péter 2 Rendszerindítás (boot): az a folyamat, amely a számítógép bekapcsolása után az operációs rendszer betöltését végzi. A ''boot'' (csizma) név egy olyan képbıl származik, mely szerint a

Részletesebben

Az állományok kezelésére használt fontosabb parancsok

Az állományok kezelésére használt fontosabb parancsok Függelék a 3 fejezethez Az állományok kezelésére használt fontosabb parancsok Tartalom Az ls parancs1 A mkdir parancs2 Az rmdir parancs2 A cp parancs3 A rm parancs4 Az mv parancs4 Az állományok kezeléséhez

Részletesebben

Java-s Nyomtatványkitöltő Program Súgó

Java-s Nyomtatványkitöltő Program Súgó Java-s Nyomtatványkitöltő Program Súgó Hálózatos telepítés Windows és Linux operációs rendszereken A program nem használja a Registry-t. A program három könyvtárstruktúrát használ, melyek a következők:

Részletesebben

Operációs rendszerek gyakorlat

Operációs rendszerek gyakorlat 01 Operációs rendszerek gyakorlat Berta Árpád berta@inf.u-szeged.hu www.inf.u-szeged.hu/~berta Irinyi magasföldszint, Mesterséges Intelligencia kutatócsoport, 45/A szoba Fogadó óra: hétfő 12:00-13:00-ig

Részletesebben

Opensuse automatikus telepítése

Opensuse automatikus telepítése Leírás www.npsh.hu Opensuse automatikus telepítése Tartalomjegyzék I. Automatikus telepítés indokai... 3 II. Automatikus telepítés lehetőségei opensuse rendszerrel...3 III. Automatikus telepítés előkészítése...

Részletesebben

Operációs rendszerek gyakorlat

Operációs rendszerek gyakorlat 01 Operációs rendszerek gyakorlat Berta Árpád berta@inf.u-szeged.hu www.inf.u-szeged.hu/~berta Irinyi magasföldszint, Mesterséges Intelligencia kutatócsoport, 45/A szoba Fogadó óra: hétfő 15:00-16:00-ig

Részletesebben

LINUX PMB2506-2 LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB

LINUX PMB2506-2 LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB LINUX PMB2506-2 LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB LINUX PARANCSOK ÉS HASZNÁLATUK ls: listázás -l részletes lista -a rejtett fájlok megjelenítése cp: fájlok másolása -i Már létező cél felülírása előtt

Részletesebben

MS Windows XP Professional SP2 telepítés virtuális gépre. ember@vodafone.hu

MS Windows XP Professional SP2 telepítés virtuális gépre. ember@vodafone.hu MS Windows XP Professional SP2 telepítés virtuális gépre 1 Előzmények Új gép esetén meg kell győződnünk arról, hogy a gép XP kompatibilis Lehetséges, hogy csak Vista drivereket kínál a gyártó a géphez,

Részletesebben

Saját Subversion tároló üzemeltetése i. Saját Subversion tároló üzemeltetése

Saját Subversion tároló üzemeltetése i. Saját Subversion tároló üzemeltetése i Saját Subversion tároló üzemeltetése ii KÖZREMŰKÖDŐK CÍM : Saját Subversion tároló üzemeltetése TEVÉKENYSÉG NÉV DÁTUM ALÁÍRÁS ÍRTA Jeszenszky, Péter 2014. február 16. VERZIÓTÖRTÉNET VERZIÓ DÁTUM LEÍRÁS

Részletesebben

Linux alapok gyakorlat

Linux alapok gyakorlat 11. évfolyam, informatikai rendszerüzemeltető 2018. Témakörök (elméleti tárgyrész) 1. Kialakulása 2. Disztribúciók 3. Telepítés, bootloader 4. Csomagkezelés 5. Rendszer felépítése, kernel (könyvtárak,

Részletesebben

Hogyan telepíthetsz fel Arch linuxot

Hogyan telepíthetsz fel Arch linuxot Hogyan telepíthetsz fel Arch linuxot Már régóta kerestem valami jó kis cikket, ami viszonylag részletesen bemutatja ennek a nagyszerű disztribúciónak a telepítését. Eddig semmit nem találtam, de ma végre

Részletesebben

Linux fájlrendszerek. Papp Zsolt. Rendszermérnök, Novell PSH. papp.zsolt@npsh.hu

Linux fájlrendszerek. Papp Zsolt. Rendszermérnök, Novell PSH. papp.zsolt@npsh.hu Linux fájlrendszerek Papp Zsolt Rendszermérnök, Novell PSH papp.zsolt@npsh.hu Az előadásról Mi az a fájlrendszer? Naplózó fájlrendszerek Hol léteznek a fájlrendszerek Elérhető fájlrendszerek Linux alatt

Részletesebben

Tájékoztató. Használható segédeszköz: -

Tájékoztató. Használható segédeszköz: - A 35/2016. (VIII. 31.) NFM rendelet szakmai és vizsgakövetelménye alapján. Szakképesítés azonosítószáma és megnevezése 52 481 02 Irodai informatikus Tájékoztató A vizsgázó az első lapra írja fel a nevét!

Részletesebben

FTP szerver telepítése

FTP szerver telepítése FTP szerver telepítése Pure-FTPd szerver telepítése Debian GNU/Linux Squeeze rendszeren - Jegyzet Szerző: Sallai András Copyright Sallai András, 2011 Licenc: GFDL Weblap: http://szit.hu Verzió: 0.02 (2011.03.16)

Részletesebben

2. modul - Operációs rendszerek

2. modul - Operációs rendszerek 2. modul - Operációs rendszerek Érvényes: 2009. február 1-jétől Az alábbiakban ismertetjük a 2. modul (Operációs rendszerek) syllabusát, amely az elméleti és gyakorlati modulvizsga követelményrendszere.

Részletesebben

Informatika szintmérő-érettségi tételek 2015. február

Informatika szintmérő-érettségi tételek 2015. február 1.oldal (17) Háttértár- és könyvtárkezelés A számítógépes munka során háttértárolókat kezelünk, amin partíciók vannak. Egyegy partíción több ezer állományt tárolnak. A partíciót az áttekinthető felhasználás

Részletesebben

Alkalmazások típusai Szoftverismeretek

Alkalmazások típusai Szoftverismeretek Alkalmazások típusai Szoftverismeretek Prezentáció tartalma Szoftverek csoportjai Operációs rendszerek Partíciók, fájlrendszerek Tömörítés Vírusok Adatvédelem 2 A szoftver fogalma A szoftver teszi használhatóvá

Részletesebben

UNIX: fájlrendszerek

UNIX: fájlrendszerek UNIX: fájlrendszerek kiegészítő fóliák az előadásokhoz Mészáros Tamás http://home.mit.bme.hu/~meszaros/ Budapesti Műszaki Egyetem Méréstechnika és Információs Rendszerek Tanszék 1 Alapfogalmak Fájl (állomány,

Részletesebben

13. Tárgymutató. Windows XP alapokon

13. Tárgymutató. Windows XP alapokon Windows XP alapokon 13. Tárgymutató Ablakok elemei...16 ablak határvonal...18 címsor...17 előző méret gomb...18 kilépés gomb...17 kis méret gomb...17 teljes méret gomb...18 vezérlőmenü...19 fogalma...15

Részletesebben

A Linux operációs rendszer 2017.

A Linux operációs rendszer 2017. 2017. Témakörök 1. Kialakulása 2. Disztribúciók 3. Telepítés, bootloader 4. Csomagkezelés 5. Rendszer felépítése (könyvtárak, fájlok, jogok, felhasználók) 6. Konzol 7. Alapvető parancsok 8. Grafikus felület

Részletesebben

Munka állományokkal. mv: áthelyezés (átnevezés) rmdir: üres könyvtár törlése rm: törlés. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

Munka állományokkal. mv: áthelyezés (átnevezés) rmdir: üres könyvtár törlése rm: törlés. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár) man!!! Man Munka állományokkal cd: az aktuális könyvtár (.) beállítása (alapesetben a ~ könyvtárra) pwd: aktuális könyvtár kiiratása mkdir: új könyvtár létrehozása cp: másolás -r, -R: rekurzív (könyvtár)

Részletesebben

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II. 7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II. A gyakorlat célja: 1. A shell vezérlő szerkezetei használatának gyakorlása. A használt vezérlő szerkezetek: if/else/fi, for, while while, select, case,

Részletesebben

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED Reguláris kifejezések - alapok, BASH Operációs rendszerek 9. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor

Részletesebben

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED Jogosultságkezelés, linkelés, csővezeték Operációs rendszerek 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik

Részletesebben

Linux rendszergazda tanfolyamok

Linux rendszergazda tanfolyamok Linux rendszergazda tanfolyamok Linux tanfolyamaink államilag akkreditált tanfolyamok, melyekhez sikeres vizsga esetén oklevelet a Kurzus- Felnőttképző iskola állít ki. A tanfolyamokat jellemzően pénteken

Részletesebben

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED Munka állományokkal Operációs rendszerek 2. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 1 / 18 Linux

Részletesebben

Bevezetés az informatikába 7. előadás. A UNIX operációs rendszer. Jellemzői. Védelem. A UNIX rendszer felépítése

Bevezetés az informatikába 7. előadás. A UNIX operációs rendszer. Jellemzői. Védelem. A UNIX rendszer felépítése Bevezetés az informatikába 7. előadás A UNIX operációs rendszer A UNIX és a Linux alapú operációs rendszerek Jellemzői UNIX a megbízható op. rendszer, Parancsvezérelt rendszer Multitasking Időosztásos

Részletesebben

Unix fájl-hierarchia

Unix fájl-hierarchia Unix fájl-hierarchia Buday Gergely Károly Róbert Főiskola 2014 ősz.... Filesystem Hierarchy Standard 2.3-as verzió Rusty Russell, Daniel Quinlan, Christopher Yeoh 2004. január 28. nincs kőbe vésve....

Részletesebben

Hardver és szoftver követelmények

Hardver és szoftver követelmények Java-s Nyomtatványkitöltő Program Súgó Telepítési útmutató Hardver és szoftver követelmények A java-s nyomtatványkitöltő program az alábbi hardverigényt támasztja a számítógéppel szemben: 400 MHz órajelű

Részletesebben

Választó lekérdezés létrehozása

Választó lekérdezés létrehozása Választó lekérdezés létrehozása A választó lekérdezés egy vagy több rekordforrásból származó adatokat jelenít meg. A választó lekérdezések a táblák, illetve az adatbázis tartalmát nem változtatják meg,

Részletesebben

Informatikai Rendszerek Intézete Gábor Dénes Foiskola. Operációs rendszerek - 105 1. oldal LINUX

Informatikai Rendszerek Intézete Gábor Dénes Foiskola. Operációs rendszerek - 105 1. oldal LINUX 1. oldal LINUX 2. oldal UNIX történet Elozmény: 1965 Multics 1969 Unix (Kernighen, Thompson) 1973 Unix C nyelven (Ritchie) 1980 UNIX (lényegében a mai forma) AT&T - System V Microsoft - Xenix Berkeley

Részletesebben

Számítógépes munkakörnyezet II. Szoftver

Számítógépes munkakörnyezet II. Szoftver Számítógépes munkakörnyezet II. Szoftver A hardver és a felhasználó közötti kapcsolat Szoftverek csoportosítása Számítógép működtetéséhez szükséges szoftverek Operációs rendszerek Üzemeltetési segédprogramok

Részletesebben

1. Alapok. #!/bin/bash

1. Alapok. #!/bin/bash 1. oldal 1.1. A programfájlok szerkezete 1. Alapok A bash programok tulajnképpen egyszerű szöveges fájlok, amelyeket bármely szövegszerkesztő programmal megírhatunk. Alapvetően ugyanazokat a at használhatjuk

Részletesebben

Az operációs rendszer. Az operációs rendszer feladatai, részei, fajtái Az operációs rendszer beállítása

Az operációs rendszer. Az operációs rendszer feladatai, részei, fajtái Az operációs rendszer beállítása Az operációs rendszer Az operációs rendszer feladatai, részei, fajtái Az operációs rendszer beállítása Az operációs rendszer feladatai Programok indítása, futtatása Perifériák kezelése Kapcsolat a felhasználóval

Részletesebben

Merevlemez üzembe helyezése, particionálása

Merevlemez üzembe helyezése, particionálása Merevlemez üzembe helyezése, particionálása (gyakorlati) A meghajtók és partíciók fogalma A meghajtó egy fizikai tárolóeszközt, például a merevlemez-meghajtó vagy a cserélhető USB-meghajtó. A partíció

Részletesebben

Szkriptnyelvek. 1. UNIX shell

Szkriptnyelvek. 1. UNIX shell Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek

Részletesebben

ALKALMAZÁSOK ISMERTETÉSE

ALKALMAZÁSOK ISMERTETÉSE SZE INFORMATIKAI KÉPZÉS 1 SZE SPECIFIKUS IT ISMERETEK ALKALMAZÁSOK ISMERTETÉSE A feladat megoldása során valamely Windows Operációs rendszer használata a javasolt. Ebben a feladatban a következőket fogjuk

Részletesebben

LINUX PMB2506-1 VIRTUALBOX TÖRTÉNELEM DEBIAN ALAPPARANCSOK - GRUB

LINUX PMB2506-1 VIRTUALBOX TÖRTÉNELEM DEBIAN ALAPPARANCSOK - GRUB LINUX PMB2506-1 VIRTUALBOX TÖRTÉNELEM DEBIAN ALAPPARANCSOK - GRUB VIRTUÁLIS GÉP FÁJL LETÖLTÉSE http://zeus.nyf.hu/~shaggy/lin2014/debian-7-pmb2506.ova UNIX UNIX (1969-1972) tervezői: Ken Thompson, Dennis

Részletesebben

Linux alapismeretek. Felhasználó Felhasználói programok (folyamatok) Rendszerkönyvtárak (rendszerhívások) Segédprogramok (utility)

Linux alapismeretek. Felhasználó Felhasználói programok (folyamatok) Rendszerkönyvtárak (rendszerhívások) Segédprogramok (utility) Készítette: Petróczy Tibor*Ide írhatja a cég nevét+ Linux alapismeretek, kitekintő 1 Linux alapismeretek Linux történeti áttekintés 1960-as évek MIT -> MULTICS (MULTiplexed Information and Computing Service)

Részletesebben

chmod umask chown, chgrp

chmod umask chown, chgrp 5. Gyakorlat chmod umask chown, chgrp csak a tulajdonos tudja átállítani ezeket a jogokat r=4, w=2, x=1 pl:r+x=5 s-setuid bit /root jogosultságot igénylőprogramokhoz (u=rwxs) chmod 751 proba.txt chmod

Részletesebben

Vectory telepítési útmutató

Vectory telepítési útmutató Vectory telepítési útmutató A vectory kliens programja egy vyw.exe valamint egy bejelentkezes.ini nevű fájlból áll. A vyw.exe-nek és a bejelentkezes.ini-nek egy közös könyvtárba kell kerülniük. Könyvtárak,

Részletesebben

Fájlrendszerek. A Windows operációs rendszerek fájlrendszere

Fájlrendszerek. A Windows operációs rendszerek fájlrendszere Fájlrendszerek A Windows operációs rendszerek fájlrendszere Fájlrendszerek definíció A számítástechnika egy fájlrendszer alatt a számítógépes fájlok tárolásának és rendszerezésének a módszerét érti, ideértve

Részletesebben

Operációs rendszerek. Tanmenet

Operációs rendszerek. Tanmenet Tanmenet TANMENET- Operációs rendszerek Témakörök Javasolt óraszám 1. Operációs rendszerek alapjai 2. Windows 2000 ismeretek- Munka a képernyőn 3. Windows 2000 ismeretek- A Start menü elemei 4. Windows

Részletesebben

Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0

Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0 Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0 Az Ön letölthető fájl tartalmazza az Evolut Főkönyv 2013. program telepítőjét. A jelen leírás olyan telepítésre vonatkozik, amikor Ön

Részletesebben

ELSŐ LÉPÉSEK A SZÁMÍTÓGÉPEK RODALMÁBA AMIT A SZÁMÍTÓGÉPEKRŐL TUDNI ÉRDEMES

ELSŐ LÉPÉSEK A SZÁMÍTÓGÉPEK RODALMÁBA AMIT A SZÁMÍTÓGÉPEKRŐL TUDNI ÉRDEMES ELSŐ LÉPÉSEK A SZÁMÍTÓGÉPEK RODALMÁBA AMIT A SZÁMÍTÓGÉPEKRŐL TUDNI ÉRDEMES Számítógép = Univerzális gép! Csupán egy gép a sok közül, amelyik pontosan azt csinálja, amit mondunk neki. Hardver A számítógép

Részletesebben

Windows há lo záti ádminisztrá cio gyákorlát

Windows há lo záti ádminisztrá cio gyákorlát Windows há lo záti ádminisztrá cio gyákorlát Dr. Johanyák Zsolt Csaba http://johanyak.hu Parancssori alapok (CMD.EXE) A CMD.EXE-t használó parancssori utasításokat két csoportba oszthatjuk aszerint, hogy

Részletesebben

iseries Client Access Express - Mielőtt elkezdi

iseries Client Access Express - Mielőtt elkezdi iseries Client Access Express - Mielőtt elkezdi iseries Client Access Express - Mielőtt elkezdi ii iseries: Client Access Express - Mielőtt elkezdi Tartalom Rész 1. Client Access Express - Mielőtt elkezdi.................

Részletesebben

Windows mappaműveletek

Windows mappaműveletek Windows mappaműveletek Windows 7 / 10 Források: http://www.akonyv.hu/windows_elemei/windows_7_mappa_allomany_es_lemezkezeles_minta.pdf http://www2.akg.hu/info/erettsegi/szobeli/10.html Windows Intéző felépítése

Részletesebben

Operációs rendszerek. Az X Window rendszer

Operációs rendszerek. Az X Window rendszer Operációs rendszerek X Windows rendszer Az X Window rendszer Grafikus felhasználói felületet biztosító alkalmazás és a kapcsolódó protokoll 1983-84: a Massachusetts Institute of Technology-n (MIT, USA).

Részletesebben

Mappák megosztása a GroupWise-ban

Mappák megosztása a GroupWise-ban - 1 - Fő me nü Mappák megosztása a GroupWise-ban Amennyiben a feladataink végzése szükségessé teszi, lehetővé tehetjük, hogy a GroupWise rendszerben tárolt személyes mappáinkat, az ott található tételeket

Részletesebben

Műveletek makrókkal. Makró futtatása párbeszédpanelről. A Színezés makró futtatása a Makró párbeszédpanelről

Műveletek makrókkal. Makró futtatása párbeszédpanelről. A Színezés makró futtatása a Makró párbeszédpanelről Műveletek makrókkal A munkafüzettel együtt tárolt, minden munkalapon elérhető makrót a Fejlesztőeszközök szalag Makrók párbeszédpanelje segítségével nyithatjuk meg, innen végezhetjük el a makrókkal megoldandó

Részletesebben

Zimbra levelező rendszer

Zimbra levelező rendszer Zimbra levelező rendszer Budapest, 2011. január 11. Tartalomjegyzék Tartalomjegyzék... 2 Dokumentum információ... 3 Változások... 3 Bevezetés... 4 Funkciók... 5 Email... 5 Társalgás, nézetek, és keresés...

Részletesebben

HVK Adminisztrátori használati útmutató

HVK Adminisztrátori használati útmutató HVK Adminisztrátori használati útmutató Tartalom felöltés, Hírek karbantartása A www.mvfportal.hu oldalon a bejelentkezést követően a rendszer a felhasználó jogosultsági besorolásának megfelelő nyitó oldalra

Részletesebben

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED BASH bevezetés, script írása, futtatása Operációs rendszerek 4. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik

Részletesebben

A Windows az összetartozó adatokat (fájlokat) mappákban (könyvtárakban) tárolja. A mappák egymásba ágyazottak.

A Windows az összetartozó adatokat (fájlokat) mappákban (könyvtárakban) tárolja. A mappák egymásba ágyazottak. Mappakezelés WINDOWS-7 A Windows az összetartozó adatokat (fájlokat) mappákban (könyvtárakban) tárolja. A mappák egymásba ágyazottak. A PC legnagyobb mappája, amely az összes többi mappát is magában foglalja,

Részletesebben

Bár a szoftverleltárt elsősorban magamnak készítettem, de ha már itt van, miért is ne használhatná más is.

Bár a szoftverleltárt elsősorban magamnak készítettem, de ha már itt van, miért is ne használhatná más is. SZOFTVERLELTÁR FREE Amennyiben önnek vállalkozása van, akkor pontosan tudnia kell, hogy milyen programok és alkalmazások vannak telepítve cége, vállalkozása számítógépeire, és ezekhez milyen engedélyeik,

Részletesebben

BASH script programozás II. Vezérlési szerkezetek

BASH script programozás II. Vezérlési szerkezetek 06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van

Részletesebben

Hálózatok építése és üzemeltetése

Hálózatok építése és üzemeltetése Hálózatok építése és üzemeltetése Linux 1 Rendszergazda jogosultságok (Fehér Gábor slide-jai) 2 Root jogosultságok Többfelhasználós rendszerekben adminisztrációs teendők Felhasználók menedzselése Külső

Részletesebben

1. Origin telepítése. A telepítő első képernyőjén kattintson a Next gombra:

1. Origin telepítése. A telepítő első képernyőjén kattintson a Next gombra: 1. Origin telepítése Az Origin telepítéséhez tegye be az Origin CD-t a CDROM-ba, majd kattintson az Origin 7.5 hivatkozásra, miután elindult a CD behelyezésekor a telepítő program. Ha nem indulna el a

Részletesebben

Megjegyzés vezeték nélküli LAN felhasználóknak

Megjegyzés vezeték nélküli LAN felhasználóknak Megjegyzés vezeték nélküli LAN felhasználóknak Русский Suomi Norsk Dansk Polski Čeština Svenska A készülék használata előtt figyelmesen olvassa el ezt a kézikönyvet, és tartsa könnyen hozzáférhető helyen.

Részletesebben

Alap protokollok. NetBT: NetBIOS over TCP/IP: Name, Datagram és Session szolgáltatás.

Alap protokollok. NetBT: NetBIOS over TCP/IP: Name, Datagram és Session szolgáltatás. Alap protokollok NetBT: NetBIOS over TCP/IP: Name, Datagram és Session szolgáltatás. SMB: NetBT fölötti főleg fájl- és nyomtató megosztás, de named pipes, mailslots, egyebek is. CIFS:ugyanaz mint az SMB,

Részletesebben

BaBér. Bérügyviteli rendszer. Telepítési segédlet 2014.

BaBér. Bérügyviteli rendszer. Telepítési segédlet 2014. BaBér Bérügyviteli rendszer Telepítési segédlet 2014. Tartalom 1. Ajánlott konfiguráció... 3 2. A BaBér és az SQL2005 szerver telepítése... 5 3. A BaBér program és az SQL2005-ös adatbázis kezelő telepítése...

Részletesebben

Felhasználói dokumentáció. a TávTagTár programhoz. Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43

Felhasználói dokumentáció. a TávTagTár programhoz. Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43 a TávTagTár programhoz Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43 Tartalomjegyzék Futási feltételek... 3 Telepítés... 3 Indítás... 3 Főablak... 4 Új személy felvétele...

Részletesebben

Használati utasítás.

Használati utasítás. Lotus Notes Naptár Windows telefonra Használati utasítás. Írta: Varga Róbert 1 http://www.robertwpapps.uw.hu Bevezetés: Ezt az alkalmazást a fejlesztő saját használatra írta a teljesség igénye nélkül.

Részletesebben

VARIO Face 2.0 Felhasználói kézikönyv

VARIO Face 2.0 Felhasználói kézikönyv VARIO Face 2.0 Felhasználói kézikönyv A kézikönyv használata Mielőtt elindítaná és használná a szoftvert kérjük olvassa el figyelmesen a felhasználói kézikönyvet! A dokumentum nem sokszorosítható illetve

Részletesebben

1. A Windows Vista munkakörnyezete 1

1. A Windows Vista munkakörnyezete 1 Előszó xi 1. A Windows Vista munkakörnyezete 1 1.1. Bevezetés 2 1.2. A munka megkezdése és befejezése 4 1.2.1. A számítógép elindítása 4 1.2.2. Az üdvözlőképernyő 5 1.2.3. A saját jelszó megváltoztatása

Részletesebben

Ubuntu Érettségi Remix Telepítési és beállítási leírás. Informatika érettségihez

Ubuntu Érettségi Remix Telepítési és beállítási leírás. Informatika érettségihez Ubuntu Érettségi Remix 17.04 Telepítési és beállítási leírás Informatika érettségihez Tartalomjegyzék Bevezetés... 3 Telepítés... 3 A rendszer beállításai... 8 Új felhasználó létrehozása... 8 A rendszer

Részletesebben

SC Kérdés. SC Kérdés. SC Kérdés

SC Kérdés. SC Kérdés. SC Kérdés Melyik Windows Vista verzióról lehet melyik Windows 7 verzióra helyben frissíteni? Windows Vista Business -> Windows 7 Professional Windows Vista Business -> Windows 7 Home Premium Windows Vista Ultimate

Részletesebben

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED BASH recap, reguláris kifejezések Operációs rendszerek 9. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor

Részletesebben

Készítette: Csatlós István 2010-ben

Készítette: Csatlós István 2010-ben Készítette: Csatlós István 2010-ben 1 A Linux ősei a ngyszámítógépes Unixok voltak Próbálkozások PC-re írt kisebb rendszerekkel: Minix A 386-os processzor lehetőségeinek kihasználása 1991-ben elkészül

Részletesebben

UNIX fájlrendszerek alapismeretei

UNIX fájlrendszerek alapismeretei UNIX fájlrendszerek alapismeretei kiegészítő fóliák az előadásokhoz Mészáros Tamás http://home.mit.bme.hu/~meszaros/ Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek

Részletesebben

BASH SCRIPT SHELL JEGYZETEK

BASH SCRIPT SHELL JEGYZETEK BASH SCRIPT SHELL JEGYZETEK 1 TARTALOM Paraméterek... 4 Változók... 4 Környezeti változók... 4 Szűrők... 4 grep... 4 sed... 5 cut... 5 head, tail... 5 Reguláris kifejezések... 6 *... 6 +... 6?... 6 {m,n}...

Részletesebben

Telepítési Kézikönyv

Telepítési Kézikönyv Intelligens Dokumentum Kezelő Rendszer Telepítési Kézikönyv 1/15. oldal Dokumentum áttekintés Dokumentum címe: doknet telepítési kézikönyv Dokumentum besorolása: szoftver telepítési leírás Projektszám:

Részletesebben

Operációs rendszerek. UNIX fájlrendszer

Operációs rendszerek. UNIX fájlrendszer Operációs rendszerek UNIX fájlrendszer UNIX fájlrendszer Alapegység: a file, amelyet byte-folyamként kezel. Soros (szekvenciális) elérés. Transzparens (átlátszó) file-szerkezet. Link-ek (kapcsolatok) létrehozásának

Részletesebben

S, mint secure. Nagy Attila Gábor Wildom Kft. nagya@wildom.com

S, mint secure. Nagy Attila Gábor Wildom Kft. nagya@wildom.com S, mint secure Wildom Kft. nagya@wildom.com Egy fejlesztő, sok hozzáférés Web alkalmazások esetében a fejlesztést és a telepítést általában ugyanaz a személy végzi Több rendszerhez és géphez rendelkezik

Részletesebben

Samsung GT-S7230 (Wave 723) Exchange ActiveSync beállítása Virtualoso levelezésre

Samsung GT-S7230 (Wave 723) Exchange ActiveSync beállítása Virtualoso  levelezésre Samsung GT-S7230 (Wave 723) Exchange ActiveSync beállítása Virtualoso email levelezésre A következô lépések segítségével egyszerûen beállíthatja a Virtualoso email levelezést Samsung GT-S7230 készülékre.

Részletesebben

Rendszerkezelési útmutató

Rendszerkezelési útmutató Rendszerkezelési útmutató Medtronic MiniMed Northridge, CA 91325 USA 800-646-4633 (800-MiniMed) 818.576.5555 www.minimed.com Képviselet az Európai Unióban: Medtronic B.V. Earl Bakkenstraat 10 6422 PJ Heerlen

Részletesebben