UNIX / Linux rendszeradminisztráció Répási Tibor egyetemi tanársegéd Miskolc Egyetem,Gépészmérnöki kar, Infomatikai és Villamosmérnöki Tanszékcsoport (IVM) Általános Informatikai Tanszék Iroda: Inf.Int. 108. Tel: 2101
Mai program SVR-Init mechanizmus Esettanulmány: felhasználói login Felhasználó menedzsment klasszikus UNIX PAM Hosztkonfiguráció Hosztnév, rendszeróra, hálózat, névfeloldás Telepítési folyamatok OS telepítés, csomagtelepítés Szolgáltatások távoli elérése
SVR-init mechanizmus A kernel bootolás után egyetlen processz indításáról gondoskodik Init processz (pid=1) A kernel számára a felhasználói mód az init processzel kezdődik. Az init feladata, az összes felhasználói módban futó szolgáltatás indítása, vezérlése. Minden felhasználói módú processznek az init a legelső őse.
Az init processz működése A /bin/init binárisból jön létre. Futhat daemon-ként (UNIX háttérprocessz) Interaktítan, parancssorból. Ilyenkor üzenetet küld a daemon-nak. A daemon működése: Definiált futási szinteket (runlevel) kezel Runlevel váltáskor a régihez tartozó szolgáltatásokat leállítja, az újhoz tartozóakat indítja (rc script-ek) Néhány processz futásáról gondoskodik Az idő nagyrészében blokkolt állapotban várakozik; szignálokra reagál.
Az init processz működése Az init daemon gyermek processzének terminálódásakor (SIGCHLD): Kiolvassa exit kódját Ellenőrzi, hogy az init indította-e a processzt, ha Igen, akkor megkeresi az okát (inittab rekordod), és annak megfelelően dolgozik tovább. Nem, akkro nem történik tovább semmi. A parancssori init csupán szignálokat küld a
Az init konfigurációja: inittab Az init processz indulásakor a /etc/inittab fájlt olvassa, ez szabályozza a működést Viszonylag egyezményes formátumú Szövegfájl, ASCII kar.készlet! Hashmark (#) jellel kezdődő sorok megjegyzések Operatív sorok a 0. oszlopban kezdődnek Rekord szerverzésű Rekord szeparátor: soremelés (<LF>) Mező szeparátor: kettőspont (:) Kötött mezőstruktúra
Az init konfigurációja: inittab Az inittab mezői id:runlevels:action:process id: egyedi rekordazonosító 1-4 kar. runlevels: azon futási szintek felszorolása, amely(ek)re a rekord vonatkozik action: tevékenység kiválasztó (respawn, wait, ones, boot, stb.) process: az utasítás, amit indítania kell az initnek
Az init konfigurációja: inittab Az action mező érvényes tartalma: respawn: a processz újraindítása valahányszor az terminálódik wait: a megadott runlevelbe való belépéskor a processzt elindítja és kilépését megvárja once: a megadott runlevelbe való belépéskor a processzt elindítja boot: a rendszer indulásakor hajtódik végre a processz, a runlevel mezőtől függetlenül bootwait: ua. Mint boot, csak az init megvárja a processz terminálódását
Az init konfigurációja: inittab off: nem csinál semmit (kikapcsolt szolg.) ondemand: spec. runlevel (a, b, c,...) melyek hívása nem okoz runlevel váltást, de a hozzá tartozó ondemand processzek lefutnak. initdefault: az alapértelmezett runlevel sysinit: a rendszer bootolásákor jatódik végre, boot es bootwait-ek előtt (runlevels függtln.) powerwait: áramszüneti értesítő (UPS üzem). Az init várakozik a processz befejezésére. powerfail: ua. Mint powerwait csak várákozás nélkül
Az init konfigurációja: inittab powerokwait: értesítő hálózati üzemről, az init megvárja a processz befejezését powerfailnow: UPS üzemben, akku kimerült; gyorsított shutdown eljárás ctrlaltdel: A Ctrl-Alt-Del leütésre a init processz egy SIGINT szignált kap, ilyenkor futtatja ennek a rekordnak megadott processzt kbrequest: ált. Az Alt-<cursor_föl> bill. Kombináció váltja ki.
Példa: inittab # The default runlevel. id:2:initdefault: # Boot time system configuration/initialization script. # This is run first except when booting in emergency ( b) mode. si::sysinit:/etc/init.d/rcs # What to do in single user mode. ~~:S:wait:/sbin/sulogin
Példa: inittab # /etc/init.d executes the S and K scripts upon change # of runlevel. # # Runlevel 0 is halt. # Runlevel 1 is single user. # Runlevels 2 5 are multi user. # Runlevel 6 is reboot. l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # Normally not reached, but fallthrough in case of emergency. z6:6:respawn:/sbin/sulogin
Példa: inittab # What to do when CTRL ALT DEL is pressed. ca:12345:ctrlaltdel:/sbin/shutdown t1 a r now # Action on special keypress (ALT UpArrow). #kb::kbrequest:/bin/echo "Keyboard Request edit /etc/inittab to let this work." # What to do when the power fails/returns. pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop
Példa: inittab # /sbin/getty invocations for the runlevels. # # The "id" field MUST be the same as the last # characters of the device (after "tty"). # 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 # Example how to put a getty on a serial line (for a terminal) # T0:123:respawn:/sbin/getty L ttys0 9600 vt320 #T1:23:respawn:/sbin/getty L ttys1 9600 vt100
Két érdekesség az init-tel UNIX renszergazdák fejből ismerik az inittabot. Miért? Ha sérült a fájlrendszer és az /etc/inittab nem olvasható, akkor az init a konzolról olvassa be azt. Linux kiskapu: a bootloader hajlandó parancssori paramétert adni a bootolandó kernelnek. (pl. init=/bin/sh)
Esettanulmány: login folyamat Konzolon és soros terminálón (vagy modemes kapcsolaton) való bejelentkezést vizsgáljuk! (nem telnet, ssh, stb.) A getty program feladata, hogy virtuális konzolhoz, soros vonalhoz ill. Modemhez illessze a karaktersorozatot, és bejelentkező képernyőt jelenítsen meg rajta.
Esettanulmány: login folyamat Az init indítja a getty-t (pl. 1:1234:respawn:/sbin/getty 38400 tty1) Az 1-es virt.terminált inicializálja A /etc/issue szöveget kiírja Kiír egy login promptot Beolvas egy felhasználó nevet Egy execve rendszerhívassal betölti a /bin/login programot, a felhasználó nevét paraméterként adja. Ezt követően már a login program fut a processz kontextusban!
Esettanulmány: login folyamat A login program tevékenységei (ha felhasználó nevet kapott paraméterként): Kiírja a jelszó promptot. Echo nélkül bekéri a jelszót Olvassa a felhasználói adatbázist és ellenőrzi a jelszót, hibás jelszó eseten újra, vagy exit Kiírja a /etc/motd fájl tartalmát A setuid, setgid rendszerhívásokkal átállítja magát a bejelentkező felhasználó tulajdonúvá Egy execve hívással betölti a felhasználó login shelljét Innen a felhasználó login shell-je fut a processz kontextusban, annak jogaival.
Esettanulmány: login folyamat A login shell bármilyen futtatható, bináris program lehet! A login shell terminálódásakor: Az init érzékeli, hogy egyik gyermek processze terminálódott Megvizsgálja milyen inittab rekord indította azt (eml.: 1:1234:respawn:/sbin/getty...) Mivel respawn rekord, újraindítja Ismét login képernyőt látunk, mert a getty fut. Jöhet a következő felhasználó.
Felhasználó menedzsment A UNIX kezdettől fogva multiuser Az OS szempontjából egy felhasználó: UID: felhasználói számlaszám (1..65535) Egyetlen kitüntetett felhasználó (UID=1) A rendszergazda azonos az OS user módjával GID: csoport számlaszám (1..65535) UNIX-ban minden fájl Minden fájlnak van tulajdonosa (uid) és csoportja (gid) A processzeknek van tulajdonosa (uid), jogosultsága (euid), csoportja (gid) és csoport jogosultsága (egid).
Felhasználó menedzsment Az ősi UNIX felhasználó adatbázis a /etc/passwd fájl Szövegfájl (csak ASCII kar.készlet) Rekord és mező szervezésű Rekord szeparátor: újsor (<LF>) Mező szeparátor: kettőspont (:) Kötött mezőszerkezet
Felhasználó menedzsment A passwd fájl mezőszerkezete: login:pwhash:uid:gid:gecos:homedir:shell Login: a felhasználó bejelentkezési neve Pwhash: a felhasználó jelszava titkosítva Uid: a számlaszám Gid: csoport számlaszám Gecos: szöveges megjegyzés mező Homedir: a felhasználó induló jegyzéke Shell: a login shell program elérési útvonala
Felhasználó menedzsment Jelszavak titkosítása: az alap algoritmus az 56 bites DES A kulcs a felhasználó által begépelt jelszó A só (salt) egy 2 karakterből [A-Za-z0-9./] álló sztring amit a kulcs permutálására használ (4096 lehetséges permutáció). A kulcs első 8 karakterének alsó 7 bitje alkotja a titkosítási kulcsot a DES számára Ezzel a kulccsal egy konstans (általában csupa nulla) sztringet titkosít Az eredmény egy 13 megjeleníthető karakterből álló sztring, melynek első két karaktere a salt.
Felhasználó menedzsment A kulcstér 2^56, azaz 7.2*10^16 elemű. A passwd fájlt minden felhasználó olvashatja, a rendszergazda írhatja. A passwd fájlt író programok (passwd, chfn, chsh, stb.) a rendszergazda euid-javal futnak. Problémák: A titkosított jelszavak megszerezhetők Ekkora kulcstér nyers erővel néhány 10 óra alatt lehereshető Nincs nyilvántartása a jelszócserének, letiltásnak, jelszó elévülésnek.
Felhasználó menedzsment A GNU kiegészítése a jelszó titkosítás MD5 algoritmussal. Ha a titkosított jelszó &1&...& alakú, akkor MD5-tel lett titkosítva. Tulajdonságai: A teljes kulcsot használja, nemcsak az első 8 karakterének alsó 7 bitjét. Nagyobb kulcstér, több idő kell a brute force -nak.
Felhasználó menedzsment A csoportok a /etc/group fájlban vanna definiálva. A group fájl szerkezete megegyezik a passwd fájléval, de más a mezőszerkezet group:pw:gid:userlist Group: a csoport neve Pw: a csoport jelszava titkosítva Gid: a csoport számlaszáma Userlist: a csoport tagjainak listája, vesszővel (,) elválasztva
Shadow file Problémák: A jelszavak nincsennek biztonságban Nincs nyilvántartás a jelszócseréről, lejáratról, stb. A passwd-nek olvashatónak kell lennie mindenki számára. Megoldás: a jelszavak szeparált tárolása, a /etc/shadow fájlban. Felépítésében megegyezik a passwd fájllal, de mások a mezői.
Shadow file A shadow mezők login:pw:change:noch:mustch:expw:expd:dis:r es Login: login nev (kapcsolókulcs passwd-vel) Pw: a titkosított jelszó Change: a jelszó módosításának napja (epoch) Noch: hány napig nem változtatható újra Mustch: hány nap után kötelező változtatni Expw: ennyi nap után figyelmeztet az OS Expd: ennyi nap után letilt az OS Dis: a letiltás napja (epoch) Res: fenntartott mező
Shadow file A shadow file a rendszergazda számára írható-olvasható, a shadow csoport számára csak olvasható, a többi felhasználó számára nem hozzáférhető. A login program euid-je a rendszergazdáé a jelszó azonosítás idején. A jelszó lejáratát a login program ellenőrzi. A passwd program a rendszergazda euidjával fut.
PAM alapok Korszerű felhasználó azonosítás követelményei Biztonság Többféle mechanizmus, felhasználó adatbázis Több hoszton ugyanaz az adatbázis legyen elérhető Megbontható legyen szolgáltatásonként Egységes minden szolgáltatásra Megoldás: Pluggable Authentication Modules (PAM) Nem csak linux, hanem több OS gyártó is használja (pl. Sun).
PAM alapok Jellemzői OS független felhasználó azonosító rendszer Modul rendszerű Az azonosítást az azonosító hatóság biztosítja Minden azonosító hatósághoz van modul (authentication backend) Az azonosítást szolgáltatás (service) kérheti Konfigurációval szabályozható, hogy melyik szolgáltatás, milyen modulokat használjon
PAM alapok Authentication backend: UNIX: a hagyományos UNIX passwd, group, shadow fájlok LDAP: címtár szolgáltató adatbázis Tetszőleges adatbázis, vagy egyénileg fejlesztett modul Szolgáltatások: Bármilyen program amely a PAM library-t használja azonosításra.
PAM alapok Modul három célra használható: Auth: felhasználó azonosításra Account: felhasználói adatok kinyerésére Session: ülés létesítésre Password: jelszó változtatásra Minden szolgáltatásnak megadható, hogy melyik modult milyen célra használhat. Egy szolgáltatás használhat többet is. Vannak speciális modulok is: pl. access: hozzáférés korlátozása, idő, acl, stb. alapján
PAM alapok Előnyei: Széleskörű támogatottság Nagy rugalmasság Központosítottan szabályozható a hozzáférés a szolgáltatásokhoz. Hátrányai: Kikerülhető és régi szoftverek ki is kerülik Nincs challange/response jelszó azonosítás (Winodws-os világ teljesen idegen tőle)
Hosztkonfiguráció Mit kell beállítani, hogy egy gép használható legyen? Hogyan állítsuk rendszerünk paramétereit? Hol találunk segítséget?
Hosztnév Minden gép rendelkezik névvel A használatos névrendszer a DNS, a hosztnévre nem kötelező (UNIX elviseli) Hostname: a gép neve (nem szükséges az egyediség) Domainname: a gép tartományneve Pl. zeus.iit.uni-miskolc.hu Linux-okon nyugottan szerkesszük /etc/hostname fájlt. Általánosan használjuk a hostname parancsot.
Rendszeróra beállításai Meg kell különböztetni: Hardveróra: hardver, általában háttérteleppel Rendszeróra: az operációs rendszer üzemelteti, szoftver, az bootoláskor a hardverórához szinkronizál Általában az órák GMT szerint járnak. Időzóna számításokat library függvények végeznek. A rendszerórát date, a harverórát hwclock parancsokkal állítjuk.
Rendszeróra beállításai Az óra igen fontos eszköz, állítása különös körültekintést igényel. Naplózás időpecsétjei Fájlrendszer időpecsétjei Az időpecsétek összekeveredése komoly problémákat okoz. Óraállítást általában egyfelhasználós üzemmódban!
Időzóna Az órák GMT (UTC) szerint járnak, de az időpecsétet helyi időben használjuk. Az átszámítást könyvtári függvények végzik. Az időzóna beállítás a környezetben (environment) tárolódik. Beállításához a tzconfig programot használjuk. A órákat és az időzónát csak a rendszergazda állíthatja, a többi felhasználó pedig csak lekérdezheti.
IP hálózati beállítások UNIX rendszerek leggyakrabban használt hálózati architektúrája a TCP/IP protokollokon alapszik. Implementációja a kernel része, telepítés ritkán szükséges. Szokásosan a hálózati interfészek beállítására az ifconfig programot, az útválasztótábla beállítására a route programot használjuk. A beállítások ellenőrzésére: ping, traceroute, telnet
IP hálózati beállítások A beállítások a kernel adatstruktúráiban tárolódnak, ezáltal nem perzisztensek. Minden bootolás után beállítást igényel. A legtöbb UNIX rendszer használ konfiguráló scripteket a beállításra. Általában /etc/init.d/network. Most a Debian/GNU Linux konfigurációját nézzük át.
IP hálózati beállítások (Debian) A /etc/network scriptet ne piszkáljuk!!! Minden beállítás a /etc/network/ jegyzékben található. A legfontosabb fájl itt az interfaces Szövegfájl A sor elején hashmark (#) jelzi a megjegyzés sorokat Szerkezetét példan tanulmányozzuk! Interfészek ki-, bekapcsolására az ifup, ifdown utasításokat használjuk.
IP hálózati beállítások (Debian) A loopback eszköz: # The loopback interface auto lo iface lo inet loopback Ezután az ifconfig mutatja, hogy van ilyen eszköz és a ping 127.0.0.1 válaszol lo Link encap:local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:81898 errors:0 dropped:0 overruns:0 frame:0 TX packets:81898 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:243392917 (232.1 MiB) TX bytes:243392917 (232.1 MiB)
IP hálózati beállítások (Debian) Egy ethernet eszköz statikus IP címmel: auto eth0 iface eth0 inet static address 193.6.5.78 # address 192.168.2.100 netmask 255.255.255.0 network 193.6.5.0 broadcast 193.6.5.255 gateway 193.6.5.254 Eleg egyértelmű, nem? Az ifconfig : eth0 Link encap:ethernet HWaddr 00:04:E2:00:79:63 inet addr:193.6.5.78 Bcast:193.6.5.255 Mask:255.255.255.0 inet6 addr: 2001:738:6001:500:204:e2ff:fe00:7963/64 Scope:Global inet6 addr: fe80::204:e2ff:fe00:7963/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2644446 errors:0 dropped:0 overruns:0 frame:0 TX packets:1523301 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1905030967 (1.7 GiB) TX bytes:451948789 (431.0 MiB) Interrupt:11 Base address:0x4f00
IP hálózati beállítások (Debian) Az útválasztó tábla szerkesztésére egyszerű munkaállomáson szerencsére nincs szükség, mindent megold magától. Egy interfész automatikus dhcp konfigurációval auto eth0 iface eth0 inet dhcp
IP hálózati beállítások (Debian) Az IPv4 stack viselkedését módosító sysctl: ip_forward: net.ipv4.ip_forward = 1 spoofprotect: net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 tcp_syncookies: net.ipv4.tcp_syncookies = 1 További aljegyzékek: if-down.d/ : interfész deaktiválásakor lefutó scriptek (run-parts) if-post-down.d/ : interfész deaktiválása után if-up.d/ : interfész aktiválásakor if-pre-up.d/ : interfész aktiválása előtt
Névfeloldás Hosztnevek és IP címek adatbázisa Előrefelé feloldás: hosztnév -> IP Visszafelé feloldás: IP -> hosztnév Nem mindig egyértelmű, gondoljunk bele! A programok számára könyvtári függvények (pl. gethostbyname() ) biztosítják a név- és címfeloldást. A függvények viselkedése konfigurálható Többféle névfeloldó rendszer Sorrend
Névfeloldás Az nsswitch.conf fájl Névterek összerendelése a névfeloldó szolgáltatásokkal Szövegfájl <névtér>: <feloldó1> <feloldó2>... struktúra Most csak a hosts névtér feloldására figyelünk! passwd: group: shadow: #passwd: #group: #shadow: hosts: networks: protocols: services: ethers: rpc: compat compat compat files ldap files ldap files ldap files dns files db files db files db files db files netgroup: nis
Névfeloldás Névfeloldás fájlból /etc/hosts 127.0.0.1 localhost 193.6.5.78 repasi.iit.uni miskolc.hu repasi #193.6.5.30 www db.iit.uni miskolc.hu www db Névfeloldás DNS szolgáltatással /etc/resolv.conf A hosts parancsot használjuk a működés ellenőrzéséhez. DNS-ről lesz egy egész előadas :)
Névfeloldás, DNS beállítás A resolv.conf tartalma search iit.uni miskolc.hu. uni miskolc.hu. nameserver 193.6.5.33 nameserver 193.6.10.1 nameserver 193.6.5.3 A search rekord megadja, hogy milyen domainekkel egészítse ki automatikusan a keresést. A nameserver rekordok megadják, mely gépeken van DNS névszerver. Ha az egyik nem válaszol, akkor próbálkozik a következővel.
Telepítési folymatok Az OS telepítés nagyon változatos lehet. Mai Linux disztribúciók sem egységesek! Az adott disztribúcióhoz kell megkeresni az INSTALL nevű fájlt, amiben leírják részletesen. A Debian GNU/Linux 4.0 telepítése Igen egyszerű (a Windows-é sem egyszerűbb) Telepítés történhet: Telepítő CD-ről Hálózati telepítés: A telepítő bootolása CD-ről vagy USB-ről, utánna letöltés
Telepítési folymatok Sokkal fontosabb (gyakoribb feladat) a szoftverek telepítése, ami történhet Kézzel Csomagkezelővel Kézi telepítés Advanced users only! Wizard nincs, nekünk kell varázsolnunk: letöltés, kicsomagolás, konfigurálás, fordítás, installáció másolás Komoly probléma az eltávolítás, frissítés Nagy nehézségeket okozhatnak a függőségek
Telepítőkészletek (Debian) A CD/DVD telepítőkészlet, több CD/DVD-s kiadvány 1. CD/DVD bootolható, elindul a menüvezérelt telepítő A OS minden része csomagban van. Telepítés folyamata: fájlrendszerek előállítása (particionálás, kötegesítése, format, stb.) alaprendszer előállítása (debootstrap) csomagok telepítése A CD/DVD-k tartalmazzák a csomagokat is (package repository)
Telepítőkészletek (Debian) Hálózati telepítés: Kis méretű (200-300 MB) bootimage CD-ről vagy USB flash drive-ról bootolható Leegyszerűsített OS tartalma: menüvezérelt telepítő program device driver modulok hálózat beállítása diszk menedzser telepítőkészlet letöltő
Telepítőkészletek Más operációs rendszerek telepítői igen változatosak! A CD/DVD-ről bootolás szokványos. A hálózati telepítés nem ritka. A csomagkezelők használata igen gyakori.
Csomagkezelők Szinte minden OS disztribútornak van sajátja. (nemcsak Linux-oknak) A legelterjedtebb Linux csomagkezelők Slackware (tgz) RedHat (rpm) Debian (deb) Gentoo portage (tar.gz)
Csomagkezelők Általános jellemzői: Csomagok telepítését, beállítását, frissítését, eltávolítását vegzi Nyilvántartást vezet a csomagokról Csomag: Egy jól meghatározott szoftvert/komponenst tartalmaz Tartalmazza a telepítéshez, beállításhoz, frissítéshez, eltávolításhoz szükséges információkat (script-eket) Leírást a csomag tartalmáról, verziószámot Kapcsolatokat (requires, recommends, suggests, provides, conflicts)
Csomagtárak A disztribútor összetartozó (egy verzió) csomagjait egy csomagtárban ún. Package repository-ban hozza nyilvánosságra. Lehet CD/DVD-n, ftp- vagy webszerveren. Csomaglistát tartalmaz. A csomagok frissítésére (biztonsági vagy funkcionális) és verzió nyomkövetésére alkalmas.
A Debian csomagkezelő A Debian disztribúció csomagjai egy-egy.deb fájlban találhatók. Csomagkezelője a dpkg program dpkg -i <csomag> : csomag telepítése dpkg -r <csomag> : csomag eltávolítása A csomagoktárat az apt programok kezelik. /etc/apt/sources.list : a csomagtárak elérhetőségei apt-get update : frissíti a csomaglistát apt-get install csomag : telepíti a csomagot apt-get remove [--purge] csomag : eltávolítja a csomagot apt-get upgrade : frissíti azokat a csomagokat, amiből jelent meg újabb verzió
A Debian csomagkezelő apt-cache search kulcsszó : csomagok keresése apt-cache showpkg csomag : egy csomag attribútumainak kiírása Vannak front-end programok dselect: régi, karakteres, menüvezérelt synaptic: grafikus (X-Window) csomagkezelő aptitude: karakteres, menüvezérelt
Távoli szolgáltatások - alapfogalmak Programok egy csoportosítása: Szolgáltatást nyújtó, szolgáltató (szerver) Szolgáltatást igényló (kliens) Itt mindig a szolgáltatás a lényeg! A kliens/szerver modell alapját a kliens és szerver közti kommunikáció képzi: Pont-pont kommunikáció Távoli szolgáltatás = külön gépen van a szerver és a kliens (hálózat köti össze) Szerver: gyakran kapcsolatra vár, kérést fogad, feldolgoz, válaszol. Kliens: kapcsolatot kezdeményez, kérést kült, választ fogad
Távoli szolgáltatások - alapfogalmak A felhasználó gyakran a klienssel áll kapcsolatban. Vigyázat ez NEM mindig igaz!!! Tervezési szempontok: Szolgáltatás orientáltság 1 szerver 1 fajta szolgáltatás 1 szerver, 1 kliens koncepció Több kliens egyidejű kiszolgálása -> multiprocess, multi-thread és worker modellek
Shell szolgáltatások A szolgáltatás: egy (távoli) gép karakteres parancsértelmezőjének használata. Megvalósítások: Telnet protokoll Remote Shell Secure Shell
Telnet Szerver: Tcpwrapper Szolgáltatás: getty Kliens: Leütött karakterek küldése Érkező karakterek kiírása Lehet LINEMODE. Lehet local echo is Kommunikáció: TCP - kapcsolatorientált (23-ös port) Titkosítatlan
Remote Shell A Unix r* utásítások ősi BSD maradványok. (r = remote) Meglévő szolgáltatások ideiglenes hálózatosításának eredményei. Szerver: Tcpwrapper azonosító protokoll és rutinok Szolgoláltató: Bourne shell Kliens: Hasonló a telnet-hez Azonosító eljárással bővített
Secure Shell Az rsh mintájára készült Titkosított kommunikáció Biztonságos azonosítási eljárások: Jelszó: challange/response Pubkey Titkosítás: Egykulcsos, véletlen kulccsal Kapcsolatfelvételkor kulcs-csere kétkulcsos titkosítással Használt algoritmusok: DES, IDEA, DH, RSA, DSA, stb.
Fájlátvitel Célja: fájlok másolása gépek között Gyakori szoláltatásai: File Transfer Protocol, FTP Rcp Scp Probléma: különböző architektúrák, különböző fájl formátumok még szöveg esetén is.
FTP Szerver: Speciális program Komplex funciónálitás Aktív szerver: kapcsolatot kezdeményez a klienssel Kliens: Parancsértelmező jellegű Kommunikáció: Két TCP kapcsolat! tcp/21 : command channel tcp/20 : data channel szerver nyitja!!! Szabvány kiegészítés: Passzív ftp: az adatkapcsolatot is a kliens nyitja
RCP Az rsh mintájára készült. Szerver: Tcpwrapper + azonosító eljárás, rutinok Cp parancshoz hasonló program Kliens: Tcpwrapper + azonosító rutinok Cp parancshoz hasonló program Kommunikáció: TCP
SCP Szerver: SSH szerver Kliens: Scp parancs Kommunikáció ua. mint ssh
Távoli GUI Az X window rendszer kliens/szerver felépítésű. Különválasztja a megjelenítést és az alkalmazás logikát. Szolgáltatás: Megjelenítő Eseményfigyelés, közvetítés Szerver: Képernyő-, billentyűzet-, egér-kezelés Ablakozó megjelenítés, eseménykezelés Kliens: X library-t használó programok Kommunikáció: Unix domain socket, TCP
Távoli GUI A felhasználó az Xserver előtt ül. A programok a kliensek, ezek futhatnak távoli gépen. X kliens programnak meg kell adni az X szerver címét, display és asztal számát. DISPLAY környezeti változó. Az X szerveren engedélyezni kell a kliensek kapcsolódását. xhost parancs SSH-val az X kapcsolat is tunnel-ezhető
Speciális alkalmazások Másolás ssh-val cat file ssh tavoligep 'cat > file' tar cf dir/ ssh tavoligep 'cat > /dev/tape0 X tunnel-ezés ssh -X tavoligep 'xkliens' Port tunnel-ezések ssh -L8080:193.6.5.3:80 tavoligep ssh -R8080:192.168.0.10: 80 tavoligep
Speciális alkalmazások FISH: KDE szolgáltatás / protokoll Ssh alapú Egy perl scriptet tölt át a távoli gépre és futtatja, ez a szerver A kliens, a KDE fájlkezelője (kfm), alblak A kommunikáció ugyanazon az egy ssh kapcsolaton zajlik.