GPL je napisan tako da sačuva slobode korisnika. Svaki korisnik ove knjige ima pravo:

Size: px
Start display at page:

Download "GPL je napisan tako da sačuva slobode korisnika. Svaki korisnik ove knjige ima pravo:"

Transcription

1 2015/01/29 11:54 1/232 Verzija dokumenta : Napomena : Moguće su pravopisne i gramatičke pogreške.također je moguće i očekivano da će doći do izmjena pojedinih dijelova dokumenta, kao i dodavanja novih poglavlja, do trenutka izdavanja stabilne verzije 1.x. Autor:Hrvoje Horvat LinkedIn info Open Source Osijek Info Sadržaj (biti će automatski kreiran kasnije) Uvod Dokument je izdan pod GPL v.2. licencom Što znači GPL v.2. licenca za ovu knjigu? GPL je napisan tako da sačuva slobode korisnika. Svaki korisnik ove knjige ima pravo: na korištenje u bilo koju svrhu, pravo na izradu kopija i pravo na proučavanje, mijenjanje i redistribuciju. U slučaju da knjigu mijenjate, nova knjiga mora sadržavati: link na izvornu lokaciju knjige: Popis autora izvorne knjige GNU GPL je, copyleft licenca, što znači da zahtjeva da sav softver (u ovom slučaju svi novi dokumenti) koji nastanu kao modifikacija ovog dokumenta, također garantiraju iste slobode što znači da moraju biti distribuirani pod istom licencom. Open Source Osijek -

2 wiki:knjige:uvod_u_linux Predgovor U trenutku nastanka ideje o pokretanju predavanja nastala je i ideja da sva predavanja pretočimo u knjižicu ili skriptu koja će rasti i razvijati se sa svakim novim predavanjem. Po završetku svakog predavanja dodavana su i napredna poglavlja, koja nismo pokrili u samom predavanju ali smatram da će biti dobrodošla za one koji žele naučiti nešto više. Za one koji tek ulaze u svijet Linuxa, napredna poglavlja mogu slobodno preskočiti, dok ne savladaju osnove. Nakon završetka zadnjeg predavanja, dodavati će se i nova poglavlja i popunjavati postojeća, sa što konkretnijim primjerima iz prakse u želji da ova za sada mala i skromna knjižica preraste u Linux osnovno i napredno. Koje su prednosti Linuxa i drugih sustava otvorenog koda Korištenjem Linuxa i drugih sustava otvorenog koda (engl. Open Source), u odnosu na sustave zatvorenog koda (koje često nazivamo komercijalnim programima ili sustavima [što ne mora biti točno]), dobivamo slijedeće prednosti : Kvaliteta : Sve komponente Linuxa, počevši od Linux kernela (jezgre) do svih programa, kao i drugih Open Source programa i sustava, razvijani su od strane stotina ili tisuća programera a testirane od strane stotina tisuća ili više programera i običnih korisnika. Svi uključeni u razvoj i testiranje (ovdje govorimo, ovisno o programu, i o stotinama tisuća ljudi), kako je praksa pokazala, vrlo brzo (višestruko brže nego kod komercijalnog softvera) su uočavali greške i ispravljali ih ili radili na poboljšanjima, optimizacijama (pr. ubrzanjima) ili dodavanju novih funkcionalnosti. Sve navedeno drastično je povećalo kvalitetu. Ovdje možemo citirati tvorca Linux kernela : Linus Torvalds : Given enough eyeballs, all bugs are shallow. Dakle ako dovoljno veliki broj ljudi gleda u određeni problem ili grešku (bug), svi problemi će vrlo brzo biti otkriveni (i riješeni). Ako se već bavite razvojem programa, postavite si slijedeća pitanja : Koliki postotak ukupnog vremena u razvoju svog programa ili sustava trošite na testiranje u širem smislu riječi?. Koliko vremena planirate za dokumentaciju vašeg programa i sustava? Sigurnost : Sigurnost je usko povezana sa paradigmama vezanim za kvalitetu jer kao što veliki broj programera i korisnika koji razvijaju softver povećava kvalitetu, istovremeno otkriva i sigurnosne propuste i ispravlja ih (u praksi puno brže od komercijalnih riješenja). Naime niti najveće korporacije nemaju na tisuće zaposlenih programera i testera na svakom pojedinom softveru, a pošto je njihov izvorni kod skriven od javnosti nitko drugi im ne može puno pomoći - osim ukazati na problem kada se već pojavio i napravio štetu. Ako se već bavite razvojem programa, postavite si slijedeća pitanja : Printed on 2015/01/29 11:54

3 2015/01/29 11:54 3/232 koliki postotak vremena u razvoju svog programa ili sustava trošite na sigurnost : od faze dizajna, preko implementacije do svih faza testiranja?. Fleksibilnost : Komercijalnim proizvođaćima programa i sustava u konačnici nije u interesu imati najbolji, najbrži, najsigurniji i najkvalitetniji program ili sustav sa svim funkcionalnostima koje neki korisnici ili grupe korisnika trebaju jer za to treba imati puno resursa, od programera, testera, hardvera,. Jedan od problema u razvoju je i fleksibilnost i koliko je vremena potrebno uložiti u razvoj, a da bi program i/ili sustav bio stvarno fleksibilan. Iza svega navdenog zapravo stoje pitanja koja su specifična kod razvoja sustava zatvorenog kôda tj. proizvođaća: kako će vam nametnuti potrebu da plaćate nove verzije programa i sustava ako vam je postojeći dobar ili čak odličan, kako će vas natjerati da kupujete nadogradnje zbog novih funkcionalnosti, ali i sigurnosnih nadogradnji ili popravaka nekih (njihovih) grešaka, kako će vas natjerati da kupite novi hardver (računalo) ako je postojeći ili novi program ili sustav brz i optimiziran. S druge strane Open Source sustavi ne boluju od ovakvih (i drugih) stvari te je na vama odluka kada ćete primjerice mijenjati vaš hardver (računalo) jer budimo iskreni - nova verzija Open Source programa nije napravljena nabrzinu samo da se proda pa se kasnije ispravljaju (i često naplačuju) greške a vi ste besplatni tester nečijeg programa/sustava (koji plačate). Također, kod pisanja kôda ako vaš kod nije fleksibilan u širem smislu rijeći, često će vas netko već upozoriti na to i/ili ispraviti vaš loše napisan kôd. Ako se već bavite razvojem programa, postavite si slijedeća pitanja : Koliko je program ili sustav koji razvijate fleksibilan i koliko pazite da kôd bude moguće ponovno iskoristiti (engl. Code reuse). Interoperabilnost : Open Source programi i sustavi se u praksi barem pokušavaju držati standarda te ne uvode neke svoje (izmišljene) formate datoteka, standarde, protokole i sl.. Stoga imate veću vjerojatnost da će Open Source program ili sustav koji vi koristite raditi u kombinaciji s Open Source programom i sustavom koji koriste vaši klijenti ili netko drugi. Također je velika vjerojatnost ako pr. koristite neki mrežni protokol koji je pisan prema načelima open source-a, iz jednog izvora ili su dio jednog riješenja ili proizvoda, da će isti raditi s drugim riješenjima ili proizvodima. Naime ovo je najviše slučaj kod raznih sustava, raznih protokola (pr. mrežnih protokola) i uređaja ali i kod programa i njihovih međusobno većinom namjerno ili ne nekompatibilnih formata datoteka. Podrška : Suprotno mišljenju, podrška za Open Source programe i sustave postoji u istoj mjeri kao i za komercijalne programe i sustave. U praksi, podrška je višestruko bolja, kvalitetnija i uslužnija za Open Source programe i sustave. Zbog nekoliko činjenica: Podršku za komercialne programe i sustave pruža vam tvrtka koja je razvila taj sustav a njeni Open Source Osijek -

4 wiki:knjige:uvod_u_linux partneri zaduženi su samo za riješavanje određenih problema (kôd samog programa je i dalje u vlasništvu i dostupnosti samo tvrtke vlasnika ), pa ovdje često dolazi do razvlačenja odgovornosti (i gubljenja vremena za vas kao korisnika njihovog programa/sustava): tvrtka vlasnik programa/sustava partnerska tvrtka Za sve probleme koji traže angažman tvrtke vlasnika programa/sustava, pogotovo ako je to inozemna tvrtka, bez obzira da li ima predstavništvo u vašoj zemlji, ćete se prema raznim statistikama (i mom osobnom iskustvu) načekati a u dosta slučajeva, dobiti ćete riješenje problema koji ste prijavili uz cijeli niz novih problema. Podršku za Open Source programe i sustave, uključujući mogućnost promijena samog kôda što uključuje : popravke grešaka, dodavanje novih funkcionalnosti, raznih optimizacija prema vašim željama i sl., može vam odraditi lokalna tvrtka (iz vašeg grada/županije/države). Što je još bitnije tih lokalnih tvrtki može biti nekoliko, što dovodi do zdrave konkurencije, pa će se svi boriti da pruže bolju i kvalitetniju uslugu za vas kao korisnika nekog Open Source programa i sustava (koji vjerojatno već koriste milijuni ljudi širom svijeta i za koji također postoji podrška od strane tisuća i tisuća tvrtki širom svijeta). Za sve Open Source programe i sustave podršku možete dobiti i od zajednice (engl. community) koja je i razvila određeni program ili sustav ali vrlo često je iz te zajednice i izrasla i neka fondacija ili tvrtka kojoj/kojima također možete platiti još viši (i brži) nivo podrške. Pitanje za one koji su i dalje skeptični prema podršci za Open Source i koji bi platili (i plačaju) koliko god treba : Da li ste platili komercijalnu podršku za neki Open Source program ili sustav i ostali nezadovoljniji u odnosu na Close Source komercijalne sustave za koje (već) plačate podršku? Ako i sami razvijate neki close source program ili sustav, Pitajte vaše krajnje korisnike (preko nekog posrednika), kakva je podrška za vaš program ili sustav? Troškovi : Troškovi Open Source programa i sustava su nekada i višestruko manji od troškova komercijalnih programa i sustava : Većina Linux operativnih sustava je besplatna ali kao što smo vidjeli, za većinu njih možete plaćati direktnu podršku (često zakladi [Fundation] ili tvrtci koja (uglavnom) stoji iza njih) ili naravno lokalnoj tvrtci. U slučaju da za kompletnu podršku plaćate lokalnu tvrtku, novac ostaje u vašem gradu/županiji/državi od poreza, prireza, plaća radnicima te tvrtke, Za Linux-e za koje se plaća (pr. RedHat, SuSe, ) cijena je puno manja od drugih komercijalnih operativnih sustava, a uz tu cijenu dobivate i određenu osnovnu podršku, koja je prema mnogima [i meni],puno bolja,brža i kvalitetnija. Osim toga možete nadoplatiti i za dodatnu podršku ili jednostavno kupiti samo Linux uz osnovnu podršku a za sve ostalo, podršku platiti lokalnoj tvrtci. Ostali programi su besplatni za osobnu i/ili komercijalnu upotrebu, za sve njih također možete plaćati podršku, po sličnom modelu kao i za Linux. Troškovi potencijalnog školovanja ljudi u vašoj tvrtci zbog prelaska na Open Source programe i sustave i cijelokupne migracije na Open Source : kada se sve zbroji, moguće je nekoliko scenarija uz određene varijacije: Troškove školovanja i migracije plaćate ili odrađujete sami, početni troškovi su manji a dugoročni troškovi su višestruko manji Troškove školovanja i migracije plaćate (lokalnoj tvrtci), početni troškovi su isti ili približni a dugoročni troškovi su višestruko manji Troškove školovanja i migracije plaćate (lokalnoj i/ili inozemnoj tvrtci), početni troškovi su isti ili zanemarivo veći a dugoročni troškovi su manji. Printed on 2015/01/29 11:54

5 2015/01/29 11:54 5/232 Lista nekih od Open Source programa i sustava, prema kategorijama, vidljiva je na našoj stranici: Tko sve koristi Linux i sustave otvorenog koda Nakon, po nekima samo teorije, o prednostima upotrebe Linuxa i drugih sustava otvorenog koda, pogledajmo primjere upotrebe u praksi. Naime sve veći broj država i državnih agencija od Sjedinjenih Američkih Država, preko Europe do Sjeverne Koreje sve više koristi Linux, kao i razne druge programe i sustave bazirane na principima otvorenog koda. Ne zaboravimo i sve veći broj tvrtki: od najvećih korporacija do malih tvrtki sa svega nekoliko zaposlenih. Krenimo od upotrebe Linuxa na mjestima koja će vas možda i začuditi Državne agencije i ministarstva : Ministartvo obrane Sjedinjenih Američkih Država (U.S. Department of Defense): Koriste RedHat Linux, prema nekim izvorima ovdje je za RedHat Linux najveći broj instaliran računala unutar jedne tvrtke ili institucije Mornarica Sjedinjenih Američkih Država : Flota nuklearnih podmornica (U.S. Navy Submarine Fleet): Poznato je da koriste Linux baziran na Red Hat Linuxu Federalni sudovi (U.S. Federal Courts) u Sjedinjenim Američkim Državama Savezna uprava za civilno zrakoplovstvo (Federal Aviation Administration) Sjedinjenih Američkih Država Francuski parlament: Koriste Ubunut Linux sa OpenOffice paketom, instalirano je ~1.100 računala Španjolska (većina državnih institucija i agencija) Napravili su svoju distribuciju Linuxa, baziranu na Debian Linuxu, naziva : LinEx Pošta Sjedinjenih Američkih Država (U.S. Postal Service): Svi poslužitelji su migrirani na Linux : preko 900 Clustera sa Linux poslužiteljima, širom države Češka pošta : Koriste SuSe Linux sa Poslužitelja i računala Njemačka : Grad Minhen, migrirao ~ stolnih računala sa Microsoft Windows na Linux Nizozemski sustav za Ministarstvo unutarnjih poslova (Internet Research and Investigation Network (irn)) : Koriste Ubuntu Linux na ~2.200 računala Njemački nacionalni sustav za zapošljavanje (Bundesagentur für Arbeit) Koriste OpenSuSe Linux na ~ računala NASA (National Aeronautics and Space Administration), od poslužitelja i stolnih računala do drugih sustava (pr. Space Shuttle misija STS-83 je koristila Linux za kontrolu eksperimenata). Sustav napredne kontrole prometa u gradu San Francisco Japanski vlakovi tkzv Bullet Trains tj. Shinkansen uz sustav kontrole i nadzora vlakova i cijelog sustava, koristi Linux Školstvo : Brazilsko školstvo: Koriste Linux na : Računala u škola širom države Njemačka Sveučilišta : Koriste SuSe Linux za poslužitelje i desktop računala u 33 sveučilišta, za studenata Savezna Država Indiana (SAD), školski sustav : Open Source Osijek -

6 wiki:knjige:uvod_u_linux Koriste Linux za studenata i učenika Italija, regija Bolzano : školski sustav sa studenata i učenika Makedonija : školski sustav Linux stolnih računala : i Ubuntu Thin Client računala Rusija : cijeli školski sustav i sve državne institucije : Plan je nabavka ~ stolnih računala i ~ poslužitelja upogonjenih Linuxom i Open Source programima, baziranih na Baikal CPU. Švicarska: pojedini kantonalni školski sustavi : Koriste Linux sa OpenOffice paketom : Ženeevski kanton : ~9.000 računala Neke od velikih tvrtki ili korporacija koje koriste Linux i OpenSource za poslovanje: Google : na poslužiteljima i stolnim računalima IBM : na poslužiteljima i stolnim računalima Panasonic : na poslužiteljima i stolnim računalima Cisco : na poslužiteljima i stolnim računalima Amazon : za skoro svaku komponentu poslovnog sustava se koristi Linux, kako su i sami izjavili : everything that happens in them is driven by Linux Virgin America : sustav za zabavu unutar zrakoplova in-flight entertainment system Peugeot : Koriste: Novell Desktop Linuxa i SuSe Linux Enterprise Server Wikipedia Burza u New York-u (New York Stock Exchange) : Koriste Red Hat Enterprise Linux Londonska burza Toyota : Odjeli prodaje koriste Linux za oko 30. različitih sustava: od sustava za naručivanje dijelova, garancije, popravke,. Komunikacijski sustav i sustav elektroničke zabave unutar vozila (In-Vehicle-infotainment (IVI) systems) koriste Linux Facebook Twitter Siemens McDonalds Deutsche Bank Bank of America Bank of New York DreamWorks NTT Telekom grupa (Nippon Telegraph and Telephone Corporation) - vlasnik preko 30 telekom tvrtki širom svijeta Morgan Stanley, Goldman Sachs, Osim navedenog i većina najjačih superračunala u svijetu koristi Linux. Tko još (pametan) razvija programe i sustave otvorenog koda Dobro, mnoge državne institucije i tvrtke sve više koriste programe i sustave otvorenog koda ali tko još (pametan) od tvrtki razvija ovakve sustave?. Printed on 2015/01/29 11:54

7 2015/01/29 11:54 7/232 Navesti ću samo nekoliko velikih tvrtki koje su najviše uložile u programe i sustave otvorenog koda: IBM Uložio je nekoliko milijardi američkih dolara u servise i programe bazirane na Linuxu, kroz Linux Technology Center koji uključuje 300+ stalno zaposlenih Linux programera. Donira 40 millijuna američkih dolara u Eclipse ( (12.5+ milijuna linija kôda). Ulaže u Open Source Initiative ( Donira u razvoj Java-base relational database management system (RDBMS) Apache Derby ( SUN Microsystems razvija programski jezik Java koji 1995.g. predstavlja javnosti te 2007.g. licencira pod GPL licencom (6.5 milijuna linija koda) kupuje njemačku tvrtku StarDivision za 73.5 milijuna američkih dolara i između ostaloga, s njom StarOffice kojeg kasnije Sun objavljuje kao OpenOffice pod LGPL i SISSL licencama (~10. milijuna linija koda) je razvio i pokrenuo GlassFish (aplikacijski server) kao open source projekt. kasnije 2005 godine kupuju tvrtku Storage Tek za 4.1 milijarde US$ te 2008 objavljuje kôd Sun Storage 7000 Unified Storage systems koji je baza za razvoj ZFS-a koji je kombinacija datotečnog sustava i volume nanagera objavljuje izvorni kôd kernel i network dijela operativnog sustava Solaris,potom pokreće OpenSolaris s istim kodom pod CDDL licencom, kasnije uključuje i DTRACE, ZFS, Solaris Containers i druge tehnologije (2+ milijuna linija koda) kupuje tvrtku MySQL AB sa MySQL bazom podataka za 1 milijardu američkih dolara. Kasnije izdaje MySQL pod GPL licencom. Google kupuje tvrtku Android Inc. te s njom dobiva Android operativni sustav izdaje Android pod Apache 2.0 licencom (10+ milijuna linija koda) razvija Google Chrome web preglednik te isti izdaje pod nazivom Chromium u open source (2+ milijuna linja koda). Razvija Chrome/Chromium OS. Razvija Google Web Toolkit ( linija koda). Google Summer of Code (GSoC) je godišnji događaj, prvi puta održan U njemu Google nagrađuje sa 5,000 američkih dolara (u 2013.) stotine studenata koji uspješno završe zadane open source projekte do kraja događanja. RedHat Praktično živi od Open Source filozofije. U fiskalnoj godini 2012, ukupni prihodi su 1.13 milijardi američkih dolara. Red Hat Enterprise Linux (RHEL) je dostupan samo kroz pretplatu, koja uključuje pristup softveru (ISO image) i zakrpama te raznim nivoima tehničke podrške (ovisno o vrsti pretplate). Proizvod se sastoji većinom od programa koji se distribuiraju kroz open source licence. Cijeli kôd za sve programske pakete RedHat Linuxa je javno dostupan: CentOS Linux koristi isti taj kôd za izradu svoje distribucije Linuxa. razvili su (i napisali) ~12% od cijelog Linux kernel kôda (prema broju linija koda), na kojem su bazirani svi Linuxi. Open Source Osijek -

8 wiki:knjige:uvod_u_linux JBoss (aplikacijski Server) (2+ milijuna linija koda), izdan pod LGPL licencom. Red Hat sponzorira Fedora projekt (community verziju Red Hat Enterprise Linux). Microsoft Microsoft je na 21. mjestu po sudjelovanju u razvoju Linux kernela (~1% udjela, prema broju linija koda). Shvaća prednosti razvoja prema principima Open Source: : Microsoft Hrvatska 5. lipnja organizira prvu Microsoft Open Source konferenciju u suradnji sa Sveučilištem u Zagrebu, koja je namijenjena upravo vama. Microsoft je kao tvrtka proširio svoju filozofiju i sve više pridonosi open source zajednicama na način da promiče developersku suradnju kako bi se lakše razvijala i održavala interoperabilna IT rješenja. Što je s malim tvrtkama? Osim navedenih velikih igrača, veliki broj malih tvrtki je osnovan na bazi poslovnog modela koji obuhvaća neke (ili sve) segmente komercijalne upotrebe Open Source programa i/ili sustava: Pružanja tehničke podrške za kupce, Razvoja i optimizacije prema potrebama klijenata (kupaca), Razvoja zasebnih komercijalnih Close Source ili Open Source aplikacija za postojeći Open Source program ili sustav, Integracija sustava kod kupca, Filmovi i literatura koju preporučujemo Za sve koji žele vidjeti komentare i iskustva ljudi koji su najviše doprinjeli razvoju Open Source inicijative, iz prve ruke, preporučujemo da pogledaju dokumentarni film : Revolution OS : IMDB : U dokumentarcu nam svoja iskustva govore : Richard M. Stallman (Programer, tvorac Free Software Movement i GNU projekta) Linus Torvalds (tvorac Linux kernela) Eric Steven Raymond (Programer UNIX programa, kasnije i GNU/LINUX i autor knjige The Cathedral and the Bazaar,suosnivač Open Source Initiative (OSI) ) Bruce Perens (tvorac definicije Open Source, Programer i suosnivač Open Source Initiative (OSI) ) Larry Augustin (Suvlasnik/Osnivać tvrke VA Linux Systems ) Ako se bavite razvojem softvera (ne nužno i Open Sourcea), preporučujem da pročitate knjižicu (~35 stranica) koja je promijenila stavove mnogih trvtki o Open Source -u. Autor knjige je Eric Steven Raymond, koji je od sredine 1980 radio na razvoju raznih programa za Unix: Net Hack (igra), Razne komponente Emacs-a, xlife kasnije je radio i na igri The Battle for Wesnoth,.. Printed on 2015/01/29 11:54

9 2015/01/29 11:54 9/232 On je praktično cijelo desetljeće radio na razvoju Unix programa ustaljenim i stabilnim metodologijama razvoja (poput Katedrale kako i sam kaže) a odatle i naziv knjige. Nakon toga krenuo je u avanturu razvoja programa metodologijom koju je preporučao Linus Torvalds, a koju on naziva modelom tržnice (engl. Bazaar).Dakle razvoja u kojem sudjeluje veći ili veliki broj ljudi, od kojih svatko često objavljuje promjene koda, ali o tome u knjizi. On nam opisuje svoja iskustva i probleme uz riješenja, na koje je nailazio u razvoju klijenta (Fetchmail) na kojem je počeo raditi. Njegova knjiga je i po mnogima uzrokovala odluku tvrtke Netscape Communications Corporation koja je tvorac, u to vrijeme, najboljeg Web preglednika, da kompletan kôd Netscape Navigator preglednika, daju u Open Source i otvore Mozilla fondaciju. Taj potez je kasnije otvorio vrata za razvoj današnjih preglednika baziranih na Mozilla Firefox pregledniku koji je razvijan unutar fondacije Mozilla. Knjižica se zove : The Cathedral and the Bazaar, možete ju potražiti na internetu : njena izvorna verzija se može pronaći na : Postoji i proširena verzija od stotina stranica, koja je naravno komercijalna i zanimljiva ali mislim da je za razumjevanje svega dovoljna i ova izvorna verzija. Zašto Unix/Linux Priču o Linuxu moramo započeti puno prije njegovog vremena nastanka, točnije nekih dvadesetak godina ranije.ona počinje s razvojem Unix operativnih sustava. Što je toliko posebno oko UNIX-a?. Njegove razne varijante su u upotrebi već desetke godina i provjerene u radu u raznim industrijskim i drugim zahtjevnim okruženjima (telekomi, banke, industrija, vojska, ). Tisuće programa koji čine UNIX/Linux su također u vrlo dugoj upotrebi te su ispolirani, testirani i višestruko optimizirani u radu. Povijest Unix-a Razvijen je 1969 u AT&T Bell labs se smatra rođenjem Unixa Od tada su se pojavile razne varijante, koje su i danas u upotrebi: BSD Unix, SUN OS (kasnije Solaris), IRIX, HP-UX, AIX, Digital UNIX, NeXTSTEP (kasnije Mac OS/IOS), QNX, Minix, Open Source Osijek -

10 wiki:knjige:uvod_u_linux Koristi se na različitim arhitekturama: x86, PowerPC, mips, SPARC, ARM, Razvoj UNIX-a od 1969 do danas vidljiv je u ovom dokumentu (koji se stalno osvježava) : Unix podržava: Multitasking tj. pokretanje ili izvršavanje više zadataka (programa) istovremeno, Multiuser rad moguć je rad više korisnika istovremeno, Interaktivan je (izvođenje naredbi je trenutno). Osnovna filozofija Unix-a kaže : Everything is a file Sve je datoteka i prema tome baratanje sa samim operativnim sustavom, njegovim aplikacijama i njegovim hardverom je vrlo jednostavno te je moguće skriptirati i automatizirati svaki djelić sustava, prema potrebi. Za sada samo dobro upamtite : Everything is a file Povijest Open Source-a i Linux-a Za razumjevanje razvoja Linux-u bitno je razumjeti i razvoj Open Source-a. Naime godine pokreće se Free Software Movement te godinu dana kasnije (1983/84) Richard Stallman pokreće GNU projekt koji 1984 kreće s razvojem prvih programa. Želja je bila sve programe koji postoje u komercijalnim Unix opeativnim sustavima prepisati od nule (ne koristeći niti jednu liniju koda jer bi to bilo kršenje autorskih prava) tj. napisati nove programe s istom ili proširenom funkcionalnosti i objaviti ih pod nekom od Open Source Licenci. Veći dio ovog posla (dakle ovdje govorimo o tisućama programa) je dovršen negdje u toku godine. Neovisno o razvoju FSF i GNU godine Linus Torvalds razvija jezgru (Kernel) i slijedi logičan korak tj. povezivanje tisuća programa pisanih unutar GNU pokreta i kernela. Od tog trenutka povezano je sve što je bilo potrebno za stvaranje novog operativnog sustava danas poznatog pod nazivom Linux (GNU Linux). Od tada do danas pojavile su se razne varijante Linux-a, od kojih su se ustalile tri grane na osnovi kojih su nastali na deseci drugih Linux distribucija: Debian Slackware RedHat Printed on 2015/01/29 11:54

11 2015/01/29 11:54 11/232 Nešto više detalja možete vidjeti u našem predavanju o open source-u: : Počeci Linuxa Linux se od prve verzije ili tkzv. distribucije nastavio razvijati preko nekoliko glavnih distribucija, što je vidljivo na slikama (1) Open Source Osijek -

12 wiki:knjige:uvod_u_linux Printed on 2015/01/29 11:54

13 2015/01/29 11:54 13/232 Od kojih komponenti se sastoji Unix / Linux Linux se sastoji od slijedećih komponenti: Kernel-a, koji sadrži: boot code driveri memory & file management Razvojnog okruženja, koje se sastoji od: Compilera, linkera, System Library, Debugger-a itd Korisničkog sućelja (User interface): Komandno linijski interface (shell) Grafičko sučelje Ostali programi (GNU) Dokumentacija Logička shema rada Unix/Linux-a je vidljiva na slici: Open Source Osijek -

14 wiki:knjige:uvod_u_linux Upoznajmo se sa Linux-om Da bi se mogli pobliže upoznati sa Linux sustavom na kojem radimo, potrebne su nam i neke osnovne naredbe, pomoću kojih ćemo saznati nešto više o samom sustavu, kao i o naredbama koje će nam pomoći da pronađemo potrebne naredbe ili komponente sustava. Saznajmo nešto više o Linuxu i Linux naredbama Na većini Unix i Linux sustava standardno su instalirane i detaljnije upute za svaku naredbu, koje je moguće i pretraživati. man naredba U slučajevima kada želimo pronaći detaljnije upute naredbe koju poznajemo, koristiti ćemo naredbu man Upute (manuals) pozivamo naredbom man. Upute (man) su podjeljene u nekoliko područja, označenih brojevima: 1 User Commands Printed on 2015/01/29 11:54

15 2015/01/29 11:54 15/232 2 System Calls 3 C Library Functions 4 Devices and Special Files 5 File Formats and Conventions 6 Games et. Al. 7 Miscellanea 8 System Administration tools and Deamons Moguće je pretraživati upute za određe naredbe prema definiranim područjima (ili bez njih). U slučaju da navodimo i područje, pretraživanje će se vršiti samo unutar definiranog područja (br. 1. do 8.). Primjer : 1. Nađmo sve upute (iz svih područja uputa) za samu naredbu man : man man 1.1. Nađimo upute za naredbu ls (izlistavanja sadržaja direktorija) man ls 2. Nađimo upute za naredbu man ali samo iz područja (section -s) 1 (User Commands): man -s 1 man 3. Nađimo upute za narebu man ali samo iz područja (section -s) 7 (Miscellanea): man -s 7 man 4. Pretražimo whatis bazu pomoću man naredbe, za ključnu riječ ls man -k ls whatis i apropos naredbe whatis naredba daje nam samo osnovni opis naredbe za koju tražimo informacije.osnovni opisi svih naredbi (naravno uz pripadajuću naredu)se pohranjuju u posebnu bazu podataka : tkzv. whatis database. Pogledajmo primjer za man naredbu: whatis man man man (1) - format and display the on-line manual pages (1p) - display system documentation Open Source Osijek -

16 man man [manpath] man-pages man.config [man] wiki:knjige:uvod_u_linux (7) (1) (7) (5) - macros to format man pages format and display the on-line manual pages conventions for writing Linux man pages configuration data for man Naredba whatis nam je vratila sve opise gdje postoji opis man naredbe. Brojevi () u drugom stupcu ukazuju na poglavlje man naredbe u kojem se nalaze detaljiji opisi. Whatis baza se obićno nalazi u : /var/cache/man/whatis i nju može (re)kreirati samo root (administrator) korisnik. Whatis baza sadrži samo imena svih naredbi uz njihov osnovni opis, izvučen iz svih man opisa. U slučaju da smo instalirali novu naredbu u sustav, uz koju su se instalirale i man stranice (upute), potrebno je kreirati i whatis unose u whatis bazi. To se radi pomoću naredbe makewhatis naredbe (ovo može pokrnuti samo root korisnk i može potrajati neko vrijeme): makewhatis apropos naredba nam omogućava pretraživanje bilo koje ključne rijeći iz whatis baze podataka. U slučajevima kada ne znamo točan naziv neke naredbe ali znamo što bi ta naredba trebala raditi, možemo pretraživati bilo koji pojam ili ključnu rijeć, te će nam apropos dati popis svih naredbi čili opisi sadrže ono što tražimo, uz pridruženu naredbu. Primjer: 1. Tražimo sve naredbe koje sadrže riječ pci apropos pci lspci (8) - list all PCI devices setpci (8) - configure PCI devices update-pciids (8) - download new version of the PCI ID list Vidimo da smo dobili ponuđene tri naredbe koje u opisu imaju pojam ili riječ pci : lspci, setpci i update-pciids 2.Zanima nas koja naredba sadrži u opisu točan pojam : remove a directory, jer nas zanima kako obrisati direktorij apropos "remove a directory" rmdir (3p) - remove a directory unlink (3p) - remove a directory entry unlinkat (2) - remove a directory entry relative to a directory file descriptor Printed on 2015/01/29 11:54

17 2015/01/29 11:54 17/232 Sada smo također dobili tri naredbe : rmdir, unlink i unlinkat, od kojih nas je zapravo zanimala naredba rmdir. Sada možemo potražiti man stranicu od naredbe rmdir. Osnovne naredbe vezane uz operativni sustav i komponente računala: Popis osnovnih sistemskih naredbi, pomoću kojih možemo doznati nešto više o samom Linux sustavu te o hardveru na kojem se nalazi:: uname : ispiše osnovne sistem informacije dmesg : ispiše sistemske poruke (HW Events) dmidecode: ispiše DMI (SMBIOS) info ili sadržaj /proc/ direktorija lspci : ispiše sve PCI uređaje Pogledajmo što nam govore gore navedene naredbe: uname -a Linux uciona01.inkubator.hr pve #1 SMP Tue Aug 6 07:04:06 CEST 2013 x86_64 x86_64 x86_64 GNU/Linux Pokretanjem naredbe uname -a dobijamo nekoliko osnovnih informacija o sustavu: Linux Dakle ovo je Linux uciona01.inkubator.hr ovo je ime računala (Hostname) pve ovo je verzije Linux kernela SMP Symmetric multi-processing - podrška za više procesora (CPU) ili više jezgri Tue Aug 6 07:04:06 CEST 2013 Datum kada je linux kernel compile-iran x86_64 x86_64 Arhitektura za koju je kernel compile-iran x86_64 Arhitektura ovog sustava GNU/Linux OS : GNU tools / Linux kernel dmesg Initializing cgroup subsys cpuset Initializing cgroup subsys cpu Linux version el6.x86_64 (mockbuild@x86027.build.eng.bos.redhat.com) (gcc version (Red Hat ) (GCC) ) #1 SMP Mon Mar 3 13:32:45 EST 2014 Command line: ro root=uuid=fb38dcf6-d76d-4191-b6e7-a5378c4fd6cc rd_no_luks KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_no_md SYSFONT=latarcyrhebsun16 crashkernel=auto rd_no_lvm rd_no_dm rhgb quiet rhgb quiet KERNEL supported cpus: Intel GenuineIntel AMD AuthenticAMD Centaur CentaurHauls sd 0:0:0:0: [sda] byte logical blocks: (299 GB/279 GiB) sd 0:0:0:0: [sda] Write Protect is off Open Source Osijek -

18 wiki:knjige:uvod_u_linux sd 0:0:0:0: [sda] Mode Sense: sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA sda: sda1 sda2 sda3 sda4 <sda5 sda6> sd 0:0:0:0: [sda] Attached SCSI disk ACPI: Power Button [PWRF] ACPI: acpi_idle yielding to intel_idle thermal LNXTHERM:01: registered as thermal_zone0 ACPI: Thermal Zone [THM0] (8 C) ERST: Failed to get Error Log Address Range. GHES: APEI firmware first mode is enabled by APEI bit and WHEA _OSC. Non-volatile memory driver v1.3 Linux agpgart interface v0.103 crash memory driver: version 1.1 Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled serial8250: ttys0 at I/O 0x3f8 (irq = 4) is a 16550A serial8250: ttys1 at I/O 0x2f8 (irq = 3) is a 16550A 00:08: ttys1 at I/O 0x2f8 (irq = 3) is a 16550A Naredba dmesg ispisuje sve poruke sustava, od trenutka podizanja i učitavanja kernela i kernel modula (drivera) na dalje. Na početku našeg izlistanja vidimo inicijalizaciju procesora (CPU ),.. kasnije diskova sd (sda), raznih portova i sl. Dakle na početku se inicijalizira cijeli sustav i provjeravaju i inicijaliziraju sve hardverske komponente. Nakon što se sustav podigne, sa dmesg se vide i sve tekuće sistemske poruke. kao što su poruke : kada ubacite CD ili USB stick o grešci neke komponente sustava i sl. dmidecode Handle 0xD100, DMI type 209, 68 bytes HP BIOS NIC PCI and MAC Information NIC 1: PCI device 04:00.0, MAC address D8:9D:68:42:3D:F1 NIC 2: PCI device 04:00.1, MAC address D8:9D:68:42:3D:F2 Handle 0x110F, DMI type 17, 34 bytes Memory Device Array Handle: 0x1001 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 8192 MB Form Factor: DIMM Set: 15 Locator: PROC 2 DIMM 8 Printed on 2015/01/29 11:54

19 2015/01/29 11:54 19/232 Bank Locator: Not Specified Type: DDR3 Type Detail: Synchronous Registered (Buffered) Speed: 1600 MHz Manufacturer: HP Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Rank: 2 Configured Clock Speed: 1600 MHz Naredba dmidecode daje nam izlistanje statusa svih bitnih harverskih kompomenti, standarno su podjeljene u nekoliko kategorija: bios system baseboard chassis processor memory cache connector slot Dakle možemo zatražiti ispis stanja svih hardverskih kmpomenti ili naredbu pozvati s prekidaćem -t uz specifikaciju određene komponente. Pr. Zanimaju nas podaci samo o BIOS-u računala (matične ploče): dmidecode -t bios # dmidecode 2.9 SMBIOS 2.31 present. Handle 0x0000, DMI type 0, 20 bytes BIOS Information Vendor: ASUS // Phoenix Technologies Ltd. Version: 7.00 R Release Date: 11/25/2013 Address: 0xE49F0 Runtime Size: bytes ROM Size: 2048 kb Characteristics: PCI is supported PNP is supported APM is supported BIOS is upgradeable BIOS shadowing is allowed ESCD support is available Boot from CD is supported Selectable boot is supported Open Source Osijek -

20 wiki:knjige:uvod_u_linux lspci :00.0 Host bridge: Intel Corporation Xeon E5/Core i7 DMI2 (rev 07) 00:01.0 PCI bridge: Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 1a (rev 07) 00:01.1 PCI bridge: Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 1b (rev 07) 00:04.0 System peripheral: Intel Corporation Xeon E5/Core i7 DMA Channel 0 (rev 07) 00:04.1 System peripheral: Intel Corporation Xeon E5/Core i7 DMA Channel 1 (rev 07) 00:05.0 System peripheral: Intel Corporation Xeon E5/Core i7 Address Map, VTd_Misc, System Management (rev 07) 00:05.2 System peripheral: Intel Corporation Xeon E5/Core i7 Control Status and Global Errors (rev 07) 00:05.4 PIC: Intel Corporation Xeon E5/Core i7 I/O APIC (rev 07) 00:11.0 PCI bridge: Intel Corporation C600/X79 series chipset PCI Express Virtual Root Port (rev 05) 00:1a.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #2 (rev 05) 00:1c.0 PCI bridge: Intel Corporation C600/X79 series chipset PCI Express Root Port 1 (rev b5) 00:1d.0 USB controller: Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #1 (rev 05) 00:1e.0 PCI bridge: Intel Corporation PCI Bridge (rev a5) 00:1f.0 ISA bridge: Intel Corporation C600/X79 series chipset LPC Controller (rev 05) 01:00.1 VGA compatible controller: Matrox Electronics Systems Ltd. MGA G200EH 02:01.0 Ethernet controller: Intel Corporation 82547EI Gigabit Ethernet Controller 03:00.0 RAID bus controller: Hewlett-Packard Company Smart Array Gen8 Controllers (rev 01) 04:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM Gigabit Ethernet (rev 11) Naredba lspci ispisuje nam podatke o svim PCI sabirnicama i uređajim koji su se prijavili na sve PCI sistemske sabirnice. Dakle ovdje je vidljv dobar dio hardvera. Osim osnovnog poziva naredbe, moguće je istu naredbu pozvati i sa prekidaćem -v ili -s -vv ako želimo više detalja o hardveru: Dakle ovako: lspci -v ili Printed on 2015/01/29 11:54

21 2015/01/29 11:54 21/232 lspci -vv U ovom slučaju pogledajmo detaljnije samo mrežnu karticu INTEL 82547EI: lspci -vv :01.0 Ethernet controller: Intel Corporation 82547EI Gigabit Ethernet Controller Subsystem: Fujitsu Technology Solutions Device 101e Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErrStepping- SERR- FastB2B- DisINTxStatus: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium>TAbort<TAbort- <MAbort->SERR- <PERR- INTx+ Latency: 0 (63750ns min), Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 18 Region 0: Memory at e (32-bit, non-prefetchable) [size=128k] Region 2: I/O ports at 3000 [size=32] Capabilities: [dc] Power Management version 2 Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PMEKernel driver in use: e1000 Kernel modules: e1000 Diskovi i particije Geometrija diskova S obzirom na činjenicu da operativni sustav kao i sve programe kao i podatke držimo i spremamo na tvrdi disk (engl. Hard Disk), bitno je razumjeti osnove rada tvrdog diska.svaki tvrdi disk sastoji se od nekoliko dijelova: Upravljačke elektronike Servo motora Ploča Glava za čitanje i pisanje Kučišta Fizički izgled tvrdog diska je vidljiv na slici: Open Source Osijek -

22 wiki:knjige:uvod_u_linux Pojednostavljeno, logički, tvrdi disk izgleda ovako: Tvrdi disk radi tako da upravljačka elektronika kontrolira rad servo motora, koji rotira ploče (diskove), konstantnom brzinom. Podatke na disk zapisuju i čitaju glave (engl. Head) koje se nalaze sa svake strane ploče (diska). Glave se pomiću odnosno pozicioniraju prema potrebi, na lokaciju s koje moraju čitati ili pisati podatke. Podaci se čitaju i zapisuju s obije strane svake ploče (diska). Rotacijske brzine diskova, danas dostupnih na tržištu su: Broj okretaja diska [o/min] Printed on 2015/01/29 11:54

23 2015/01/29 11:54 23/ Što je veća brzina rotacije diska i sve ostale komponente diska moraju raditi brže a samim time brzina pristupa podacima kao i brzina prijenosa podataka postaje veća. Površina svake ploče (diska) je podijeljena u koncentrične krugove tj. u takozvane trake ili staze: Više traka na istoj poziciji, na svim pločama tj. diskovima se naziva cilindrom: Kako BIOS prepoznaje tvrdi disk i njegov kapacitet Open Source Osijek -

24 wiki:knjige:uvod_u_linux Spajanjem tvrdog diska na disk kontroler (ATA/SATA/SCSI/SAS/ ) na matičnoj ploči ili na PCI/PCI Express kartici, disk kontroler prijavljuje tvrdi disk BIOS-u računala. Bitno je znati da svaki tvrdi disk dolazi s tvorničkim formatom na vrlo niskoj razini (engl. Low Level Format) koji služi za pravilno pozicioniranje glava na pozicije za pisanje/čitanje za svaki sektor na disku. Nakon što je tvrdi disk inicijalno vidljiv u BIOS-u računala,prvi korak BIOS-a je mapiranje fizičke i logičke podjele na tvrdom disku (do nivoa sektora), prema kojemu se izračunava i nazivni kapacitet diska. Starije metode su koristile CHS mapiranje (Cilinder Head Sector) odnosno adresiranje tj. identifikaciju svakog individualnog sektora na disku prema njegovoj poziciji unutar trake (staze). Pri tome je traka (staza) bila određena prema (logičkoj) glavi (engl. Head) i broju cilindra. CHS zbog svog načina mapiranja i ograničenosti koje donosi, CHS može adresirati tvrde diskove do veličine od 504 MB. Novije metode koriste tkzv. LBA (Logical block addressing) metodu koja logički adresira sektore. Ranije verzije su imale ograničenje od maksimalne veličine tvrdog diska od 2.1GB a novije do 8.4 GB. Standard se proširivao pa je slijedeća granica bila 137 GB i dalje sve do 2TB granice (48.bitno adresiranje). Najnovija implementacija koje više ne koristi BIOS već UEFI ( Unified Extensible Firmware Interface) kao noviju verziju BIOS-a, koji koristi 64.bitnu shemu za adresiranje pa je prema tome ograničenje ako imamo sektor od 512 byte-a x 64.bit-a = 9.4 ZB (9.4 10^21 byte-a) Pogledajmo sada površinu jedne ploče (diska): Printed on 2015/01/29 11:54

25 2015/01/29 11:54 25/232 Područja za zapisivanje podatka se nalaze unutar traka. Svaka traka je podjeljena na najmanje jedinice koje se nazivaju sektori. Veličina sektora na većini tvrdih diskova je obično 512 byte-a. Podaci se u konačnici zapisuju u blokove od nekoliko sektora koji se nazivaju klasteri. Veličina klastera podataka, koji je i najmanja jedinica za zapisivanje podataka, ovisi o datotečnom sustavu (engl. File System). Proces logičkog formiranja površine diska u trake i sektore se zove formatiranje. Različiti datotečni sustavi imaju različite moguće veličine klastera koje možemo odabrati samo u trenutku formatiranja particije. Kao što smo rekli podaci se zapisuju u klastere kao najmanje jedinice zapisa, jedan za drugim (koliko god je to moguće). Kod zapisivanja podataka na disk cilj je niz podataka koje zapisujemo zapisati u klastere koji su u nizu. U tom slučaju je i čitanje bre nego da su podaci razbacani na različitim dijelovima diska, što se može dogoditi kod brisanja nekih podataka koji se nalaze pozicionirani između drugih podataka (datoteka). Kada se nakon toga ponovno zapisuju neki drugi podaci, može se dogoditi da su upisani dijelom na mjesta gdje su bili prethodon obrisani podaci a drugim dijelom (ako su novi podaci veći od onih koji su prethodno obrisani) na prvu slijedeću slobodnu poziciju. Ovaj problem se zove fragmentacija i redovito se događa na nekim datotečnim sustavima koji nemaju zaštitni mehanizam protiv fragmentacije (pr. FAT i NTFS datotečni sustavi imaju problem sa fragmentacijom). U slučaju fragmentacije podataka, čitanje s diska postaje s vremenom sve sporije i sporije. Open Source Osijek -

26 wiki:knjige:uvod_u_linux Vratimo se na klastere. Veličinom klastera je uvjetovana i veličina cijelog datotečnog sustava (odnos je specifičan za svaki datotečni sustav). Tablica pokazuje odnos maksimalne veličine particije uz pripadajuću veličinu klastera, za određeni datotečni sustav: FAT16 Maksimalna veličina particije Veličina klastera 64 MB 1 KB 128 MB 2 KB 256 MB 4 KB 512 MB 8 KB 1 GB 16 KB 2 GB 32 KB 4 GB 64 KB FAT32 Maksimalna veličina particije Veličina klastera 128 MB 1 KB 256 MB 2 KB 8 GB 4 KB 16 GB 8 KB 32 GB 16 KB NTFS Maksimalna veličina particije Veličina klastera 16 TB 4 KB 32 TB 8 KB 64 TB 16 KB 128 TB 32 KB 256 TB 64 KB ext3/ext4 Maksimalna veličina particije Veličina klastera (Block size) 4 TB 1 KB 8 TB 2 KB 16 TB 4 KB 32 TB 8 KB Linux/UNIX datotečni sustavi veličinu klustera nazivaju Block Size tj veličinom bloka. Printed on 2015/01/29 11:54

27 2015/01/29 11:54 27/232 Primjer Ako nam je veličina sektora 512 byte-a i koristimo datotečni sustav kojem je veličina klastera pr. 4KB to znači da se koriste 4 sektora za jedan klaster. Ako trebamo zapisati datoteku veličine 4KB to znači da će se podaci zapisati točno u jedan klaster. Ako trebamo zapisati datoteku veličine 7KB to znači da će se iskoristiti 2 klastera od 4KB (ukupno 8KB), i u ostatak od 7KB do 8KB će ostati neiskorišten jer se podaci mogu zapisivati samo do nivoa klastera, bez obzira koliko če biti popunjen ili ne. Logička shema diska Prema logičkoj shemi, svaki tvrdi (ili SSD) disk na samom početku, u prvom sektoru (na večini tvrdih diskova, veličine je 512 byte-a) ima tkzv. Master Boot Record (MBR), to je poseban dio diska s kojega, kod pokretanja računala, BIOS računala počinje čitati podatke. U Master Boot Recordu (MBR ) se nalazi mali program koji čita particijsku tablicu, te provjerava koja od njih je označena kao aktivna. Detaljnije, MBR sadrži informacije o particijama i njihovim pozicijama. Osim toga u MBR se nalazi i tkzv. Loader koji se učitava i pokreće kod podizanja sustava. On prvo pronalazi aktivnu particiju, potom pogledom na particijsku tablicu pronalazi prvi sektor aktivne particije. Pozicija na prvom sektoru particije naziva se Boot Record -u (BR), ili Volume Boot Record (VBR). Na tom prvom sektoru aktivne particije nalazi se tkzv. Boot Loader. Ako je to bila aktivna particija tada Boot Loader tj. VBR pokreće prvi dio operativnog sustava, pohranjenog na podatkovnom dijelu particije (Data dio), koji onda nastavlja dalje s učitavanjem ostalih komponenti sustava. Ograničenja MBR-a Korištenjem MBR particijske tablice koja se kako smo rekli nalazi u dijelu MBR-a, je ograničeno na diskove čija je maksimaln veličina particije do 2TB, zbog 32.bitnog adresiranja. Računica je vrlo jasna : 2^32 x 512 byte-a = 2TB. Dakle Tvrdi diskovi s većim particijama od 2 TB ne mogu koristiti MBR shemu. Stoga se u novije vrijeme u novim verzijama BIOS-a, koji se zove UEFI (Unified Extensible Firmware Interface), više ne koristi MBR shema nego nova GPT shema (GUID Partition Table) koja nadilazi ovo ograničenje. Ograničenje koje postavlja GPT na maksimalnu veličinu particije je 9.4 ZB (Zetabajta) Mi ćemo se u daljnjem tekstu bazirati na MBR shemi. Podsjetimo se : Aktivna može biti samo jedna od maksimalno 4 primarne particije. Open Source Osijek -

28 wiki:knjige:uvod_u_linux Što kada želimo imati Multiboot sustav U slučajevima kada želimo instalirati dve ili više operativnih sustava te imati mogućnost odabira koji operativni sustav želimo da se pokrene npr. instalirali smo 2 ili više Linuxa ili Linux i Windows ili neki drugi OS. U ovakvom scenariju potreban nam je Loader koji je instaliran u MBR, a koji ima mogućnost pokretanja Operativnog sustava sa željene particije. Primjer: Imamo instalirana 2 Linuxa, svaki na svojoj particiji. Prvo smo instalirali Linux Centos (particija 1) i pri tome smo Boot loader instalirali na root particiju tj. na Boot Record od particije 1. (u primjeru /dev/sdb1). Nakon toga smo instalirali Linux Slackware na drugu particiju (/dev/sdb2) ali smo na kraju instalacije rekli da želimo boot loader instalirati na MBR od diska (/dev/sdb). Particija 1 : Linux CentOS Particija 2 : Linux Slackware Što se sada dogodilo: Imamo dvije particije od kojih je svaka označena kao boot particija i sada nije bitno koja je od njih označena kao aktivna jer će se Loader na MBR brinuti o tome s koje particije će podići operativni sustav. Osnosno biti će nam ponuđen odabir željenog operativnog sustava. Particije izgledaju ovako: Disk Drive: /dev/sdb Size: bytes, 1073 MB Heads: 139 Sectors per Track: 8 Cylinders: 1885 Name Flags Part Type FS Type [Label] Size (MB) sdb1 Boot Primary Linux ext3 CentOS sdb2 Boot Primary Linux ext3 Slackware * Odabirom 1 (Linux CentOS) Loader sa MBR pronalazi prvi sektor (tj.boot Record) na prvoj particiji i učitava boot loader koji dalje podiže Linux CentOS. Odabirom 2 (Linux Slackware) Loader sa MBR bi morao pronaći prvi sektor (tj.boot Record) na drugoj particiji i učitavati boot loader koji dalje podiže Linux Slackware. > Ovo bi bio normalan postupak. Vratimo se na logički izgled diska. Slika prikazuje osnovni izgled diska s 4 primarne particije: Printed on 2015/01/29 11:54

29 2015/01/29 11:54 29/232 Originalna shema particioniranja PC računala, dozvoljava samo 4 primarne particije. Pošto je to s vremenom postalo premalo, uvedene su tkzv extended (proširene) ili logičke particije. Uvođenjem proširenih particija zapravo je omogućeno unutar svake od primarnih particija, kreiranje do 15 pod particija (tj. Logičkih particija). U daljem tekstu ćemo se zbog jednostavnosti, držati primarnih particija. Za početak ćemo se bazirati na osnovnim Unix/Linux datotečnim sustavima, koji se nalaze na primarnoj particiji. Unix/Linux sustavi diskove i particije vide prvo kao datoteke (u /dev/ direktoriju), koje se povezuju ( mount -aju) u neki postojeći direktorij za razliku od Windows OS-a, koji particije naziva ( C:, D:,E:, ). Primjer Za tvrde diskove: /dev/sda označava SATA tvrdi disk 1, pri tome : /dev/sda1 označava SATA tvrdi disk 1, particiju 1 /dev/sda2 označava SATA tvrdi disk 1, particiju 2 /dev/sdb označava SATA tvrdi disk 2, pri tome : /dev/sdb1 označava SATA tvrdi disk 2, particiju 1 /dev/sdb2 označava SATA tvrdi disk 2, particiju 2 Open Source Osijek -

30 wiki:knjige:uvod_u_linux /dev/sdc označava SATA tvrdi disk 3 Napredno Block Device Prije svega, moramo objasniti kako se uopće zapisuju podaci na neki disk storage tj. medij koji se sastoji od blokova podataka iste veličine tj. block device-a. Block device je zapravo virtualni uređaj za zapisivanje podataka spremljenih u blokove (podataka), pri čemu je moguć pristup bilo kojem od tih blokova podataka neovisno o pristupu nekom drugom bloku podataka. Ovakav način pristupa se naziva Random Access. Dakle kada se podaci zapisuju na tvrdi disk, oni se zapisuju u blokovima (podataka) i na isti način im se pristupa za čitanje. Uređaji koji koriste Block device su : Tvrdi disk SSD Disk Određeni mrežni protokoli (pr. : iscsi, DRBD, ) CD/DVD Pogledajmo naš tvrdi disk (/dev/sda ): ls -al /dev/sda brw-rw root disk 8, 0 Apr 8 15:57 /dev/sda Prvo slovo u ovlastima (permissions) ove datoteke koja predstavlja naš cijeli tvrdi disk je b, što znači da je on Block Device. Dakle u radu s diskovima i particijama se podrazumjeva da radimo s Block Device -ima. Ostale tipove datoteka (i direktorija) možete vidjeti u poglavlju DIrektoriji i datoteke Kako se mapiraju ( mount-aju) particije u direktorije i zašto?. U Linux svijetu je i sama particija određena datoteka u /dev/ direktoriju a želimo joj pristupiti preko file sustava koji je kreiran na njoj (i koji se, kao što smo rekli brine o datotekama i direktorijima). Zbog toga se svaka particija, formatirana sa određenim file sustavom, mora povezati s određenom točkom u postojećoj strukturi tj. stablu direktorija. Kako to izgleda: Pr. SATA tvrdi disk 1, particija 1 je formatirana sa ext4 file sustavom i nju ćemo povezati s novim direktorijem koji smo nazvali /hdd-novi Printed on 2015/01/29 11:54

31 2015/01/29 11:54 31/232 Dakle /dev/sda1 će se mapirati (mount-ati) u /hdd-novi Kod mount-anja je potrebno znati i koji je file sustav u pitanju te se on mora dodati kao parametar. Primjer File sustave ext3 i ext4 nije potrebno navoditi jer se podrazumjevaju. Za ostale se mora navesti vrsta file sustava.takav slučaj je pr. XFS file sustav. Ručno to možemo odraditi na slijedeći način (za ext4 file sustav): mount /dev/sda1 /hdd-novi Da je ovo bio XFS file sustav, naredba bi izgledala ovako: mount -t xfs /dev/sda1 /hdd-novi Sa -t prekidačem se odabire koji file sustav je u pitanju. Od tog trenutka, sadržaj direktorija /hdd-novi je particija SATA tvrdog diska 1, particija 1, sve do restarta računala. Dakle ovo mapiranje koje smo napravili nije permanentno (trajno). Objasniti ćemo i automatski način, koji osigurava rad i nakon restarta računala. Kako mount-ati CD/DVD-ROM?. Praktično isto kao i tvrdi disk, uz razliku, da kada nam više ne treba, moramo napraviti i unmount (jer u protivnom nećemo moći izvaditi CD/DVD medij iz uređaja): Ako je CD/DVD-ROM, uređaj vidljiv kao /dev/cdrom i ako ga želimo mountati u direktorij /cdrom : mount -t iso9660 /dev/cdrom /cdrom Nakon završetka rada ca CD/DVD medijem kada ga želimo izvaditi, moramo izaći iz /cdrom direktorija te moramo napraviti unmount. umount /dev/cdrom Što je /etc/fstab Da bi mogli razumjeti automatsko mount -anje particija, prvo moramo razumjeti /etc/fstab. /etc/fstab sadrži popis svih file sustava, njihovih lokacija i ostalih parametara koji su potrebni da bi Open Source Osijek -

32 wiki:knjige:uvod_u_linux se neki file sustav mount-ao prilikom podizanja sustava. Dakle kod svakog podizanja operativnog sustava, prvo se čita /etc/fstab te se na osnovu njegovih unosa, prvo se mount-a root direktorij (/ ), sa file sustava i particije na kojoj se nalazi cijeli sustav. Nakon toga isto tako se mount-aju i ostali file sustavi, prema redosljedu, kojim su navedeni. Što se nalazi u /etc/fstab i kako to izgleda (na primjeru root / direktorija). root ( / ) particija Ako je primjerice /dev/sda1 sistemska particija na kojoj se nalazi cijeli Linux i formatirana je sa ext4 file sustavom, i ona se treba mount-ati u / direktorij koji predstavlja korijen (eng. root = korijen) stabla direktorija cijelog operativnog sustava. File Sustav Direktorij u koji se mounta File Sustav Opcije Dump Pass /dev/sda1 / ext4 errors=remount-ro 0 1 U opcijama koje vidimo, može se dodavati dosta parametara,a ovaj koji mi imamo (errors=remount-ro) znači da će se u slučaju grešaka ova particija mount-ati samo read-only (bez prava snimanja), zbog toga da se može pokrenuti provjera tog file sustava ako dođe do greške. Za provjeru i popravljanje integriteta podataka, postoje alati koji su specifični za točno određeni file sustav.u našem slučaju to je ext4, pa se obično koristi alat fsck.ext4. Za sada je bitno znati da kada se radi provjera ili popravljanje podataka na file sustavu, isti mora biti read-only. Dakle da se ne bi dogodilo da netko (ili neki program) u pozadini radi neke izmjene na podacima, jer one mogu dodatno pogoršati stanje. Dump može imati vrijednost 0 ili 1 (uključena ili isključen opcija) Dump označava staru metodu Backup-a, kod gašenja sustava ovo se ne koristi pa je preporuka da ostane na 0 Pass može imati vrijednost 0, 1 ili 2 : 0 - isključeno 1 - pokreni fsck prvo na ovoj particija 2 - pokreni fsck na ovoj particiji nakon one koja ima 1 Pass-ing označava da li postoji potreba da se automatski pokreće provjera file sustav-a (fsck), za root (/ ) se preporuča da bude na 1. U slučaju root (/) file sustava to znači da će file sustav biti provjeravan automatski nakon određenog broja restarta sustava. Kako je to konfigurirano, možemo vidjeti sa naredbom dumpe2fs. Probajmo saznati kako to izgleda na našem sustavu, na root particiji (/dev/sda1) : Izlistati će se dosta toga a nas zanima samo ovo: dumpe2fs -h /dev/sda Printed on 2015/01/29 11:54

33 2015/01/29 11:54 33/232 Mount count: 9 Maximum mount count: 36 To znači da je sustav restartan 9 puta te da će se nakon 36 puta pokrenuti fsck (privjera stanja diska). swap particija Druga bitna particija koju svaki Linux mora imati je swap particija.u Windows operativnim sustavima postoji swap datoteka,a u Linux svijetu je za to potrebna posebna swap particija, sa posebnim swap file sustavom optimiziranim za swap. Što je Swap? U slučaju kada nam je sva radna (RAM) memorija puna, te nam je potrebno još RAM memorije, sustav uključuje SWAP memoriju tj, počinje koristiti swap particiju na tvrdom disku kao proširenje RAM memorije. To je proces koji se dešava automatski. SWAP nije zamijena za RAM memoriju, već je samo (privremena) pomoć. Preporuke kod kreiranja swap particije (ovo se radi samo kod instalacije operativnog sustava)su: Ako sustav ima do 1GB RAM, kreirati swap particiju 2 x RAM Ako sustav ima preko 2 GB RAM, kreirati swap particiju iste veličine kao RAM. U slučaju da vam sustav intenzivno počinje koristiti swap, to je znak da je potrebno nadograditi RAM memoriju.to se može provjeriti pomoću naredbe free : Provjerimo koliko nam je zauzeće memorija (u GB) [server u primjeru ima 96GB RAM i SWAP od 93GB] free -g total cached Mem: -/+ buffers/cache: Swap: used free shared 33 buffers Kako izgleda unos u /etc/fstab za swap particiju (ako je swap particija /dev/sda2 ): File sustav Direktorij u koji se mount-a Tip file sustava Opcije Dump Pass /dev/sda2 none swap sw 0 0 Dakle vidimo da se za razliku od root (/) particije swap ne mount-a nigdje i da je tip swap. Kreiranje particija Za kreiranje particija najčešće imamo dostupna dva programa: Open Source Osijek

34 wiki:knjige:uvod_u_linux fdisk (komandnolinijski) cfdisk ( grafički komandnolinijski) Mi ćemo koristiti cfdisk koji će nam prikazati disk i particije na vizualan i malo razumljiviji način. U ovom primjeru koristiti ćemo drugi SATA hard disk ( /dev/sdb ) i na njemu kreirati samo jednu particiju. Pokrenimo cfdisk na /dev/sdb disku : cfdisk /dev/sdb cfdisk (util-linux ) Disk Drive: /dev/sdb Size: bytes, GB Heads: 255 Sectors per Track: 63 Cylinders: Name Flags Part Type FS Type [Label] Size (MB) Pri/Log Free Space [ Help ] [ New ] [ Print ] [ Quit ] [ Units ] [ Write ] Postaviti će nam se pitanja: 1. Da li je particija primarna [PRIMARY] ili logička [LOGICAL] = odabiremo Primarnu 2. Koju veličinu particije želimo (mi želimo sav rasploživ prostor pa nećemo ništa mijenjati) samo ENTER Sada dolazimo do slijedećeg: cfdisk (util-linux ) Disk Drive: /dev/sdb Size: bytes, GB Heads: 255 Sectors per Track: 63 Cylinders: Name Flags Part Type FS Type [Label] Size (MB) sdb1 Pri/Log Linux [ Bootable ] [ Delete ] [ Help ] [ Maximize ] [ Print ] [ Quit ] [ Type ] [ Units ] [ Write ] Dakle particija je spremna, oznaka joj je /dev/sdb1 (broj 1 označava da je to prva particija), te je tip (vrsta) particije označena kao Linux, što i želimo jer ju kasnije želimo formatirati sa nekim od Linux File sustava. Sada sve promijene treba snimiti na disk, odabirom WRITE Printed on 2015/01/29 11:54

35 2015/01/29 11:54 35/232 Sustav će nas upozoriti da ćemo s ovime izgubiti sve podatke na ovom disku, ako želimo nastaviti treba upisati yes Nakon što se sve završi možemo izaći iz programa sa QUIT Sada imamo kreiranu particiju koju moramo formatirati. Formatiranje particije Da bi mogli koristiti particiju, moramo ju formatirati s nekim file (diskovnim) sustavom na kojemu ćemo moći raditi s direktorijima i datotekama. Particiju ćemo formatirati sa Linux Ext4 file sustavom, na slijedeći način (koristiti ćemo default posatvke formatiranja). Sintaksa je : naredba za formatiranje block device (tj. particija) U našem slučaju to će biti: mkfs.ext4 /dev/sdb1 Nakon toga će se kreirati file sustav na toj particiji (što može potrajati ovisno o veličini particije): mke2fs (29-Jul-2012) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks inodes, blocks blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks= block groups blocks per group, fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, , , , , , , , , , , , , , , Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done Sada imamo formatiranu particiju /dev/sdb1, koju možemo mountati. U našem slučaju napraviti ćemo to automatski u direktorij /STORAGE mkdir /STORAGE Open Source Osijek -

36 wiki:knjige:uvod_u_linux Za test probati ćemo to prvo ručno: mount /dev/sdb1 /STORAGE mount /dev/sdb1 on /STORAGE type ext4 (rw,relatime,barrier=1,data=ordered) Zanima nas /dev/sdb1 što izgleda ok Pogledajmo i veličinu particija koje su mount-ane: df -h Filesystem Size Used Avail Use% Mounted on /dev/sdb1 550G 198M 522G 1% /STORAGE Dakle /dev/sdb1 je veličine 522GB i mountan je u /STORAGE Sada ćemo ga unmount-ati i to napraviti tako da se mount-a kod svakog podizanja sustava!! Oprezno!! umount /STORAGE Dodajmo na kraj datoteke /etc/fstab, slijedeći red (objašnjeno je u nekoliko poglavlja prije) /dev/sdb1 /STORAGE ext4 errors=remount-ro 0 1 Nakon prvog restarta cijelog servera mount nove particije će biti automatski odrađen, ali to možemo i ovako: mount -a Logička polja diskova U slučajevima kada želimo postići veću sigurnost, skalabilnost ili brzinu pisanja ili čitanja na tvrdi disk ili SSD disk, potrebno je koristiti tehnologije u kojiima se koristi više fizičkih diskova u istovremenom radu. Povezivanja više fizičkih diskova u neki logički disk odnosno polje diskova moguće je pomoću tkzv. RAID tehnologija ili tkzv. Volume Managera. RAID je skraćenica od redundantnog polja nezavisnih diskova (engl. Redundand Array of Independent Disks). Printed on 2015/01/29 11:54

37 2015/01/29 11:54 37/232 O ćemu se radi? Podaci se zapravo zapisuju (i čitaju) na više diskova paralelno, na način koji je definiran u tkzv. RAID polju, koje smo odabrali prilikom inicijalizacije RAID polja. Postoji nekoliko standardnh RAID polja od kojih svako ima neke prednosti i mane. Osim toga postoje dvije mogućnosti kreiranja RAID polja : Softverski (na nivou operativnog sustava ili drivera) i Hardverski (za što je potreban RAID kontroler). Softversko RAID polje se kreira iz operatvnog sustava a hardversko iz RAID kontrolera tj. posebne kartice poput ove na slici dolje Na slici je RAID kontroler tvrtke Adaptec (Adaptec 2100S). Slika prikazuje hardverski RAID kontroler za spajanje SCSI tvrdih diskova pomoću 68 pin-skog konektora/kabela, preko kojeg je moguće spojiti do 15 tvrdih diskova. Ovaj RAID kontroler se na matičnu ploču spaja preko PCI sabirnice. Na njemu je vidljivo slijedeće: (A) SCSI disk kontoler (AIC-7892B) (B) CPU/ASIC RAID kontolera koji je zadužen za kreiranje RAID polja i druge operacije potrebne za RAID (C) RAM Memorija za cache podataka (u gornjem dijelu kartice) (32MB PC-100 ECC - proširivo) (D) 68pin-ski SCSI konektor za spajanje SCSI tvrdih diskova Open Source Osijek -

38 wiki:knjige:uvod_u_linux Kako to radi? U slučaju upotrebe hardverskog RAID kontrolera prilikom uključivanja računala nakon što se inicijalizira BIOS na matičnoj ploči inicijalizira se i BIOS RAID kontrolera. Tada je potrebno ući u BIOS RAID kontrolera te kreirati željeno RAID polje (ili više njih) sa dostupnim tvrdim diskovima spojenim na RAID kontroler. Ako raspolažemo s većim brojem tvrdih diskova, moguće je kreirati više RAID polja tj. tkzv. Logičkih diskova. Uglavnom nakon što snimimo konfiguraciju RAID polja koja smo kreirali, RAID kontroler počinje s inicijalizacijom RAID polja, u potpunosti (što može trajati i satima [ovisno o RAID polju i broju i brzini tvrdih diskova]) ili samo djelomično. U slučaju da se RAID polja ne moraju potpuno inicijalizirati (što je slučaj kod novijih RAID kontrolera), možemo rastartati računalo. Potom će BIOS-u računala biti prijevljen po jedan Logički disk za svako RAID polje koje smo kreirali. RAID polja će se kasnije u pozadini inicijalizirati nakon startanja operativnog sustava a ti logički diskovi će nam biti vidljivi kao običan fizički tvrdi disk (po jedan za svako RAID polje koje smo kreirali), koji možemo normalno particionirati i formatirati. U slučaju kada se RAID polje mora inicijalizirati unutar BIOS-a RAID kontrolera, potrebno je pričekati da se proces završi, što može potrajati satima osvisno o veličini i tipu RAID polja. Nakon inicijalizacije se restarta računalo, svako RAID polje (Logički disk) se prijavljuje BIOS-u matične ploče, te je vidljivo operativnom sustavu kao običan fizički tvrdi disk (isto kao u gornjem slučaju). U slučaju upotrebe softverskog RAID polja koje u Linuxu odrađuje tkzv. LVM2 odnosno Logical Volume Manager verzije 2 nakon podizanja operativnog sustava pomoću alata koji dolaze sa LVM2 paketom, kreiramo željeno RAID polje na cijelom tvrdom disku ili željenim particijama. Nakon što se to polje inicijalizira, možemo ga normalno formatirati i dalje koristiti kao da je u pitanju normalna particija na običnom tvrdom disku. LVM2 donosi i druge mogućnosti osim samog RAID polja, a neke od njih su : Mogućnost dodavanja i vađenja diskova u radu (ako to podržava hardver), Povećavanje veličine bilo kojeg logičkog diska (engl. resize), Izrada sigurnosne kopije (engl. Backup) cijelog logičkog diska u radu, bez zaustavljanja, korištenjem tkzv. Snapshot metode, U oba slučaja preporuča se definiranje tvrdog diska čija je jedina namjena promjena neispravnog diska, kada greška nastupi. Tvrdi disk koji namjenimo za taj zadatak naziva se engl. Hot Spare disk. U slučaju greške na nekom od diskova, automatiziran proces rekreiranja (engl. Rebuild) RAID polja kreće s upotrebom ovog Hot Spare diska, koji nakon završetka procesa postaje funkcionalan disk koji je član RAID polja u kojem je bio neispravan disk. Tada se neispravan disk može izvaditi i zamijeniti (uglavnom novi zamjenjeni disk tada postaje novi Hot Spare ). Koja su najčešća RAID polja u upotrebi i koje su im prednosti i mane? Danas u upotrebi imamo nekoliko RAID polja od kojih svako ima neke prednosti i neke mane. Standardna RAID polja Važno je znati da hardverski ili softverski RAID kontroleri kod inicijalizacije RAID polja (između ostalih stvari), sve tvrde diskove u polju dijele na male blokove podataka (ovisno o RAID kontroleru i/ili softveru) koji postaju najmanje jedinice za zapis podataka, praktično kao što su clusteri tj. blokovi Printed on 2015/01/29 11:54

39 2015/01/29 11:54 39/232 na datotečnom sustavu. Veličina ovih blokova podataka u RAID terminologiji se zove engl. Stripe size. Ovo je bitno jer svi diskovi u nekom RAID polju moraju imati istu podijelu na najmanje blokove podataka koji se mogu čitati ili pisati tj. nad njima provoditi određene logičke operacije. Najčešća veličina Stripe size -a je 64kB ali ju je moguće i mijenjati (ne preporuča se ukoliko ne znate zašto to radite) prije nego se krene u proces inicijalizacije RAID polja. Standardna RAID polja su: RAID 0 RAID 0 ili Stripe polje sastoji se od minimalno 2 diska. Ukupan kapacitet ovog polja jednak je zbroju kapaciteta svih diskova u polju. U ovo polje moguće je dodavati diskove različitih veličina ali polje će se kreirati tako da će na svim diskovima biti iskorišten samo kapacitet od najmanjeg diska. Ako imamo diskove od 120 GB, 320 GB i 500 GB, ukupni kapacitet će biti 120 GB x 3 = 360 GB. Zapisivanje podataka u RAID 0 polje radi se tako da se podaci koji se trebaju zapisati dijele na blokove (pr. 64kB) i pri tome se razlomljeni blokovi podataka pravilno zapisuju (raspoređuju) na sve diskove u polju. Ako imamo dva diska kao na slici dolje. Podaci se tada raspoređuju i zapisuju praktično pola na jedan a pola na drugi disk i to redom kako dolaze. Ako su recimo blokovi (Stripe size) od 64kB na svakom disku kao najmanje jedinice za zapisivanje i imamo 128kB podataka za zapisati, prvih 64kB će biti zapisano na prvi disk a drugih 64kB na drugi disk i tako redom. Ovo polje ne daje nam nikakvu sigurnost odnosno redundanciju. Ako se pokvari bio koji disk u polju, SVI podaci će biti izgubljeni. Najveća prednost ovog polja je u njegovoj brzini i kapacitetu. Kod zapisivanja se podaci snimaju na sve diskove paralelno,a isto tako se i čitaju sa svih diskova paralelno,zbog toga je brzina RAID 0 polja najveća od svih RAID polja. RAID 1 RAID 1 ili Mirror odnosno zrcalno polje, sastoji se od minimalno 2 diska. U ovom polju moguće je imati i više od 2 diska uz isto ograničenje za kapacitet kao za RAID 0 (kapacitet najmanjeg diska se koristi na svim diskovima). Ovo polje radi identičnu (zrcalnu) kopiju svih podataka s prvog diska na Open Source Osijek -

40 wiki:knjige:uvod_u_linux drugi (ili na više njih) i to također kako podaci dolaze, razbijanjem u blokove (engl. Stripe). Ako imamo 2 diska u RAID 1 polju i zapisujemo pr. 128kB podataka događa se slijedeće: Prvih 64kB se zapisuje na prvi i drugi disk Drugih 64kB se zapisuje na prvi i drugi disk Ovime imamo zapisano svih 128kB na oba diska (pogledajte sliku). Ovo polje daje nam najveću sigurnost jer su svi podaci zapisani na prvi disk zapisani i na drugi disk (ili koliko ih već ima u polju). Brzina čitanja je veća jer se podaci mogu čitati u parovima (polovina podatka s prvog a pola s drugog diska). Na brzinu čitanja najviše utiće implementirana funkcionalnost čitanja s više diskova paralelno što ovisi o RAID kontroleru tj. softveru koji to odrađuje (lošije implementacije daju i lošije rezultate). Brzine kod zapisivanje su jednake brzini jednog diska jer se podaci moraju istovremeno zapisivati na sve diskove u polju. RAID 5 Za ovo RAID polje potrebna su nam minimalno 3 tvrda diska. Ovo je prvo specifično polje koje koristi računanje pariteta niza podataka, koje je procesorski zahtjevnije od RAID 0 i RAID 1 polja. Ovdje do izražaja dolaze hardverski RAID kontroleri koji imaju poseban procesor (CPU) koji izračunava paritet za svaki niz podataka. Zamislimo RAID 5 polje sa 4 tvrda diska kao na slici: Printed on 2015/01/29 11:54

41 2015/01/29 11:54 41/232 Uzmimo standardni Stripe size od 64kB. U ovom polju sa 4 tvrda diska svaki niz podataka se lomi na 3 dijela (ukupan broj diskova -1). Zamislimo da moramo zapisati 192kB podataka u prvom nizu: Zapisuje se prvih 64kB na prvi disk Zapisuje se drugih 64kB na drugi disk Zapisuje se trećih 64kB na treći disk Potom se radi logička XOR operacija prvih, drugih i trećih 64kB podataka i dobija se rezultat (engl. Parity), koji je veličine 64 kb i zapisuje se na četvrti disk. U slijedećem nizu podataka razlomljeni podaci se zapisuju na prvi, drugi i četvrti disk a paritet se izračunava i zapisuje na treći disk. Kod svakog slijedećeg niza podataka, paritet se izračunava i zapisuje na neki drugi disk, tako da ako nam se pokvari bilo koji disk u polju, od preostalih diskova se pomoću paritetnih podataka mogu izračunati (restaurirati) podaci koji nedostaju. Kako radi računanje pariteta (XOR funkcija)? Prvo se podsjetimo XOR logičke operacije Ulaz A Ulaz B XOR rezultat Dakle ako su oba ulaza jednaka, rezultat je nula (0) a ako su ulazi različiti, rezultat je jedan (1). Vratimo se na naša 4 diska i Stripe -ove od 64kB. Pošto nam je 64kB preveliki broj, za razmijevanje logike rada, zamisliti ćemo da je Stripe size samo 4 bita. Zamislimo da moramo zapisati slijedeći podatak : Pošto se on mora razlomiti na 3 dijela po 4 bita (4. bita nam je Stripe size) to će izgledat ovako : Sada svaki od ovih razlomljenih dijelova ide prema diskovima: Open Source Osijek -

42 wiki:knjige:uvod_u_linux Podaci za disk 1 : 1011 Podaci za disk 2 : 1110 Podaci za disk 3 : 0110 Radi se XOR prvi disk: 1011 i drugi disk: 1110 = 0101 Sada se radi XOR prvog rezultata: (0101) sa trećim diskom i dobivamo paritetne podatke: 0011 Dakle na četvrti disk se zapisuje paritet : 0011 Sada imamo slijedeće zaipise u prvom nizu zapisivanja: Disk 1 Disk 2 Disk 3 Disk i tako redom, drugi niz, pa paritet na disku 3, pa slijedeći niz s paritetom na disku 2, pa slijedeći niz s paritetom na disku 1, Zamislimo da nam se pokvario Disk 2. Dakle imamo stanje: Disk 1 Disk 2 Disk 3 Disk Sada se ponovno radi XOR operacija, redom (Disk1, Disk 3, Disk 4): Disk 1: 1011 XOR Disk 3: 0110 rezultat = 1101 Rezultat prvog XOR: 1101 XOR Disk 4: 0011 = 1110 Dobili smo rezultat odnosno sadržaj bloka tj. Stripe -a koji je neispravan : 1110, što je točno. Što se događa kada imamo nesipravan disk? Ako nemamo Hot Spare disk ili nismo zamijenili neispravan disk, RAID kontroler će raditi XOR u radu ( u letu), za svaki niz podataka, tako da će sve raditi i dalje (djelomično usporenije) ali ako nam se istovremeno pokvari još jedan disk, izgubiti ćemo SVE podatke. Ako smo ipak imali Hot Spare disk, RAID kontroler će poćeti s procesom restauriranja podataka (engl. rebuild) na Hot Spare disk. Ako nismo imali Hot Spare disk, kada izvadimo neispravni disk i ubacimo ispravni, proces restauriranja će se pokrenuti. Ovaj proces kreće uglavnom automatski, u radu. Pošto sada RAID kontroler mora preračunati podatke za svaki niz podataka na cijeloj površini svih tvrdih diskova, to može potrajati satima ili čak danima - u slučaju da imamo velike količine podataka. Karakteristike RAID 5 polja Brzina čitanja je prilično velika jer se podaci mogu čitati s više diskova istovremeno. Brzina pisanja je Printed on 2015/01/29 11:54

43 2015/01/29 11:54 43/232 manja od RAID 0 i RAID 1 polja jer se podaci zapisuju na više diskova paralelno ali se za svaki niz podataka mora izračunavati i paritet. Ukupni kapacitet cijelog polja je jednak zbroju svih diskova minus jedan (-1) disk. RAID 5 polje dozvoljava ispad samo jednog tvrdog diska iz polja i to bilo kojeg diska u polju. RAID 6 Za ovo RAID polje potrebna su nam minimalno 4 tvrda diska. Ovo polje je slično RAID 5 polju s time da se ovdje računaju dva (2) pariteta koja se razmještaju na različite tvrde diskove u polju. Zamislimo osnovno RAID 6 polje poput ovoga na slici Paritet se razmješta po istom principu kao kod RAID 5 polja, svaki puta se za svaki novi niz podataka pomiće na druge diskove (s time da ovdje imamo dva pariteta, dakle svaki na svoj disk). Ovo polje diskova stoga omogućava ispad do dva bilo koja tvrda diska u polju. Ukupni kapacitet polja jednak je zbroju kapaciteta svih diskova minus kapacitet dva diska (-2). Brzina čitanja je slična ili nešto sporija kao kod RAID 5 polja (ovisno o implementaciji). Brzina pisanja također ovisi o implementaciji (hardver [i to koji?] / softver) a također je slična ili lošija od RAID 5 zbog dvostrukog izračunavanja pariteta. Ugnježđena RAID polja Često se koriste i kombinacije RAID 1,5 i 6 sa RAID 0 poljem. Ovakva polja nazivamo ugnježđenim RAID poljima (engl. Nested) ili hibridnim RAID poljima. RAID 0+1 Ovo RAID polje često se naziva i RAID 01. Ovo polje (engl. Mirror of Stripes) nastaje kreiranjem dva ili više RAID 0 polja na dva ili više diskova koja se stavljaju unutar većeg RAID 1 polja. Konačno RAID 1 polje se prijavljuje kao logički disk BIOS-u matične ploče računala. Kapacitet je jednak polovici kapaciteta svih diskova. Ovo polje otporno je na ispad cijelog jednog RAID 0 polja (pošto RAID 0 ispada uslijed kvara samo jednog diska), a RAID1 (engl. Mirror) zrcaljenje štiti sa identičnom kopijom koja se nalazi na drugom RAID 0 polju. U slučaju ispada dva diska iz različitih RAID 0 polja, cijelo RAID 01 polje se ruši i gube se SVI podaci. Proširivanje ovog polja (kapacitetom) je nepraktično (i skoro neizvedivo u praksi) jer zahtjeva manipulacije na svim RAID 0 poljima. Open Source Osijek -

44 wiki:knjige:uvod_u_linux Brzina čitanja je prilično velika pošto se podaci mogu čitati sa svih diskova istovremeno (dio podataka s asvakog diska). Brzina pisanja je također prilično velika pošto se podaci mogu čitati sa svih diskova istovremeno (dio podataka sa svakog diska). Za rad ovog polja potrebno je minimalno 4 diska, kao što je vidljivo na slici: RAID 10 Ovo RAID polje često se naziva i RAID 10. Za rad ovog polja potrebno je minimalno 4 diska Ovo polje je slično RAID 01 odnosno prema logici rada, potpuno obrnuto. Po dva diska se dodaju u RAID 1 polje (engl. Mirror) odnosno zrcalno se kopiraju jedan na drugi. Druga dva diska također, u svoj RAID 1, a isto tako i treća, četvrta, peta ili x-ta dva diska. Potom se kreira RAID 0 (engl. Stripe) koij povezuje sve zrcaljene parove diskova u jedan veliki logički disk. Kapacitet je jednak polovici kapaciteta svih diskova. Ovo polje otporno je na ispad bilo kojeg diska unutar bilo kojeg RAID1 (engl. Mirror) zrcanog para diskova na bilo kojem RAID 1 paru diskova. Brzina čitanja je prilično velika pošto se podaci mogu čitati sa svih diskova istovremeno (dio podataka sa svakog diska). Brzina pisanja je također prilično velika pošto se podaci mogu čitati sa svih diskova istovremeno (isto dio podataka sa svakog diska). Dodatna prednost je i u tome što neki RAID kontroleri omogućavaju proširenje kapaciteta vršnog RAID 0 polja (koje je vidljivo kao logički disk) dodavanjem novog para RAID 1 (engl. Mirror) diskova. Primjer rada RAID 10 polja je vidljiv na slici: Printed on 2015/01/29 11:54

45 2015/01/29 11:54 45/232 Osim navedenih ugnježđenih RAID polja, moguća su i polja 100, 50 i 60 Izvor slika iz ovog poglavlja je Wikipedia : File System File System (datotečni sustav) je zadužen za rad s datotekama i direktorijima, tj. zadužen je za njihovo smještanje na tvrdi disk.pošto smo rekli da je u UNIX-u/Linux-u sve datoteka (file), samim time ovaj dio sustava dobiva dodatno na važnosti. Za razliku od Windows operatvnih sustava, Linux ne koristifat/fat32/extfat ili NTFS datotečni sustav kao primarni za rad odnosno za samsistem, na sistemskom disku/particiji. Moderni Linux-i koriste : ext3 i ext4, XFS ili druge napredne datotečne sustave. Osnovne prednosti gore navedenih modernih Linux datotečnih sustava su: Ne postoji fragmentacija podataka Oni su transakcijski (journaling) datotečni sustavi Podržavaju dodatne napredne mogućnosti Od čega se sastoji UNIX/Linux file system Open Source Osijek -

46 wiki:knjige:uvod_u_linux Unix/Linux Datotečni sustav se sastoji od : direktorija, datoteka i I-node tablica I-node tablica sadrži zapis za svaku datoteku i direktorij: Vlasnika (owner), Grupu (group), Prava čitanja, pisanja i izvršavanja (r w x ), Struktura datoteka i direktorija: Razlikuju se velika i mala slova Koristi se hijerarhijska struktura direktorija Struktura direktorija je u obliku stabla Osnovne grane su već definirane i rezervirane za operacijski sustav Imena mogu biti dužine 255 znakova, mogu se koristiti svi znakovi $ ^ & *, ; ` ( ){ } [ ] < > / \? ~ razmak Struktura sistemskih direktorija Struktura sistemskih direktorija je definirana unutar FHS-a (Filesystem Hierarchy Standard). Prikaz osnovne strukture sistemskih direktorija (koja je hijerarhijska) u svakom UNIX/Linux sustavu, je vidljiv na slici: Što se nalazi u kojem od osnovnih direktorija: /bin - Osnovne sistemske naredbe (binaries), koje moraju biti dostupne i u single user mode-u rada /boot sve što je potrebno za boot (podizanje) Linux sustava [boot loader-i : kernel, initrd, ] /dev - svi uređaji (devices) i hardver te posebne datoteke /etc Sve konfiguracijske datoteke Printed on 2015/01/29 11:54

47 2015/01/29 11:54 47/232 /home direktoriji korisnika (home directory) /lib sve sistemske biblioteke te biblioteke za razne aplikacije(library) /proc virtualni file system koji daje informacije o svim procesima i poruke kernela /usr - ovdje se nalaze višekorisnički (multiuser) programi, podaci itd. /var varijabilni (promijenjivi) podaci, poput log datoteka, cache datoteka i sl. Direktoriji i datoteke Tipovi direktorija i datoteka su vidljivi kod izlistanja datoteka i/ili direktorija [potpuno lijeva oznaka] Dakle pogledajmo nekoliko specifičnih datoteka (/dev/sda /dev/tty /etc/rc.d/rc.local /etc/rc.d/rc3.d/s58ntpd) i što nam govore njihove oznake. ls -al /dev/sda /dev/tty /etc/rc.d/rc.local /etc/rc.d/rc3.d/s58ntpd brw-rw root disk 8, 0 Apr 8 15:57 /dev/sda crw-rw-rw- 1 root tty 5, 0 Apr 7 18:15 /dev/tty lrwxrwxrwx. 1 root root 14 Dec 2 11:34 /etc/rc.d/rc3.d/s58ntpd ->../init.d/ntpd -rwxr-xr-x. 1 root root 882 Dec 2 11:34 /etc/rc.d/rc.local Koje sve oznake postoje za datoteke i direktorije : [ d ] Direktorij [ - ] Obična datoteka Osim standardnih, postoje i posebne vrste datoteka, koje predstavljaju logičke jedinice, poput: /dev/zero (generator nula [0] ) /dev/random (generator slučajnih brojeva [random] ) Osim logičkih jedinica, postoje i dodatne vrste posebnih datoteka u koje spadaju: [ l ] Simbolički link [ p ] Named pipe datoteka ili samo pipe (FIFOs) [ s ] Socket file Te druga grupa koja predstavlja neki odnosno sami uređaj (device file): [ b ] Block : barata s IO, blokovima podataka [ c ] Character device: barata s IO, karakterima (znakovima) Iz nekoliko primjera izlistanja direktorija i datoteka će sve biti puno jasnije: Open Source Osijek -

48 wiki:knjige:uvod_u_linux ls -al / drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x dr-xr-xr-x drwxr-xr-x drwxr-xr-x 20 root root 4096 Jun 13 12:53./ 20 root root 4096 Jun 13 12:53../ 2 root root 4096 Mar bin/ 2 root root 4096 Oct boot/ 17 root root Nov 11 15:20 dev/ 19 root root 4096 Nov 11 15:20 etc/ 2 root root 4096 Oct home/ 4 root root 4096 May lib/ 17 root root 0 Nov 11 15:20 proc/ 15 root root 4096 Jun 13 12:53 usr/ 11 root root 4096 Jun 13 12:53 var/ Ovdje su vidljivi samo obični direktoriji [ d ] ls -al /dev/sda1 brw-rw root disk 8, 1 Nov 11 17:36 /dev/sda1 Ovdje smo odabrali posebni (device file) koji predstavlja uređaj, tj. konkretno prvi SATA ili SCSI Hard Disk i to njegovu prvu particiju (o toime kasnije). On ima oznaku [ b ] ls -al /dev/ttys0 crw-rw root dialout 4, 64 Nov 11 17:36 /dev/ttys0 Ovdje je također odabran poseban (device file), koji je konkretno prvi serijski port na računalu (RS232). Oznaka je [ c ] ls -al /dev/cdrom lrwxrwxrwx. 1 root root 3 Nov 11 17:36 /dev/cdrom -> sr1 Sada je vidljiv simbolički link, koji za CDROM uređaj pokazuje na fizički uređaj oznake sr1. Oznaka simboličkog linka je [ l ] Napredno Named pipe Kreiranje Named pipe datoteke imena my_pipe mkfifo my_pipe Nakon što smo kreirali Named Pipe, Kreirati ćemo pipe koji će komprimirati sve što uđe u njega i stvoriti komprimiranu datoteku imena komprimirana.datoteka.gz: gzip -9 -c <my_pipe> komprimirana.datoteka.gz & Printed on 2015/01/29 11:54

49 2015/01/29 11:54 49/232 Sada ćemo poslati svoju datoteku (datoteka.txt) da se komprimira cat datoteka.txt> my_pipe Brisanje Named pipe datoteke (isto kao i za bilo koju drugu datoteku) rm my_pipe Kao što smo i prije rekli, sada postaje jasno da Everything is a file ima sve više smisla. Slijedi još nekoliko primjera. Dakle /dev/zero je posebna datoteka koja je generator nula (0), koju ćemo iskoristiti za generiranje nula unutar jedne datoteke, imena sve.nule.txt. Osim toga želimo da veličina datoteke bude 1024 byte-a. Za rad s ovom posebnom datotekom koristiti ćemo program disk dump ( dd ), koji se koristi za konvertiranje i kopiranje datoteka, a pošto je u Unix/Linux svijetu sve datoteka, to ćemo i iskoristiti. Ali prvo da vidimo koje sve prekidaće naredba dd ima. Lista nekoliko osnovnih prekidaća: if - input file (ulazna datoteka) of output file (izlazna datoteka) bs - koliko byte-a da čita/piše odjednom (ovo se smatra jednim blokom podataka) count - koliko blokova podataka (iz pr. bs ) dozvoljavamo da se obradi Ograničiti ćemo veličinu bloka ( bs=1024 ) na 1024 byte-a i to samo s jednim ponavljanjem ( count=1 ) dd if=/dev/zero of=/neki-direktorij/sve.nule.txt bs=1024 count=1 1+0 records in 1+0 records out 1024 bytes (1.0 kb) copied, e-05 s, MB/s Drugi primjer će biti kopiranje cijele diskete (/dev/fd0) u datoteku : /nekidirektorij/disketa.img dd if=/dev/fd0 of=/neki-direktorij/disketa.img U slijedećem primjeru ćemo koristiti posebnu datoteku, koja generira slučajne brojeve, vrlo brzo ( /dev/urandom) i pomoću nje generirati datoteku veličine 1MB, imena test.file i to u blokovima od 1024 byte-a, 1k (1000) puta. dd if=/dev/urandom of=/neki-direktorij/test.file bs=1024 count=1k records in records out Open Source Osijek -

50 wiki:knjige:uvod_u_linux bytes (1.0 MB) copied, s, MB/s PATH (Putanje) Putanja do neke datoteke može biti: Apsolutna (počinje od root direktorija / ) : pr datoteka messages.: /var/log/messages Relativna (počinje od trenutnog direktorija) pr.: nalazimo se u /var pa je putanja do datoteke: log/messages Ovlasti (permissions & modes) Svaki direktorij i datokeka imaju određene ovlasti (permissions). Dakle svaki puta kada se kreira neka datoteka ili direktorij, za nju se zapisuju određene ovlasti i to : tko je njen vlasnik (owner) te kojoj grupi korisnika pripada (group) te ovlasti za sve ostale (all users) Ovlasti (permissions) se mijenjaju sa: chown,te se definiraju : Prema vlasniku (owner) Prema grupi (group) Prema svima ostalima (all users) Osim toga postoje i prava pristupa i rada, koja se povezuju za gore nevadene korisnike/gupu/sve ostale, koja se mijenjaju sa naredbom : chmod. Moguće je definirati slijedeća prava pristupa Pravo čitanja (Read) Pravo pisanja (Write) Pravo izvršavanja/pokretanja (Execute) Pravo čitanja (Read) omogućava samo čitanje određene datoteke (ne i njeno mijenjanje). Pravo pisanja (Write) omogućava i mijenjanje sadržaja datoteke. Za razliku od Windows operativnih sustava,u UNIX/Linux sustavima se pravo izvršavanja (pokretanja) datoteke dodjeljuje tako da se određenoj datoteci dodaje pravo izvršavanja (Execute), bez obzira na ekstenziju datoteke. U Windows svijetu datoteka mora imati ekstenziju pr..exe, da bi bila izvršna U UNIX/Linux-u to nije potrebno, dovoljno je samo execute pravo na bilo koju datoteku (naravno definirano za vlasnika, grupu ili za sve ostale)!. Što nam govore ovlasti Permissions (ovlasti) se čitaju od lijevo na desno!. Izlistanjem ( ls ) direktorija /bin iz root ( / ) direktorija će sve biti jasnije: drwxr-xr-x 20 root root 4096 Jun 13 12:53 /bin Printed on 2015/01/29 11:54

51 2015/01/29 11:54 51/232 Pogledajmo samo oznake s lijeve strane d rwx r-x r-x /bin Prvi znak ima posebno značenje (pogledati poglavlje Direktoriji i datoteke) [u ovom slučaju je to znak d] Prvi niz od tri znaka (oktet) su za vlasnika (owner) [u ovom slučaju rwx ] Drugi niz od tri znaka (oktet) su za grupu (group) [u ovom slučaju r-x ] Treći niz od tri znaka (oktet) su za sve ostale (others) [u ovom slučaju r-x] Napomena : postoji i iznimka za zadnja tri znaka umjesto Execute [ x ], mogu biti i s ili t : executable and setuid( s ) / setgid( s ) [omogućava korisnicima koji nisu root (admini) da mogu izvršiti/pokrenuti [execute] datoteku ] sticky ( t ) [ rename (preimanovanje) ili brisanje (delete) datoteke može raditi samo vlasnik (owner) ] Izlistavanjem sa naredbom ls, vidljive su nam simboličke oznake ovlasti (r, w, x), osim njih moguće je mijenjati ih i na druge načine. Usporedba je vidljiva na slici: Pr Kao root (admin) kreirali smo datoteku test: -rw-r--r-- 1 root root :54 test Na koje načine možemo mijenjati ovlasti : 1. Opisno Za koga mijenjamo ovlasti [ a ] svi (i vlasnik i grpa i svi ostali) [ u ] vlasnik (owner : user) [ g ] grupa (group) [ o ] svi ostali (other) Open Source Osijek -

52 wiki:knjige:uvod_u_linux Operator : dodajemo ili oduzimamo ovlasti [ + ] dodajemo [ - ] oduzimamo Koje ovlasti mienjamo [ r ] čitanje (read) [ w ] pisanje (write) [ x ] izvršavanje/pokretanje (execute) Primjer, Omogućimo svima ostalima (other) mogućnost izvršavanja datoteke test chmod o+x test Pogledajmo sada što smo dobili (x na kraju): ls -al -rw-r--r-x 1 root root :54 test* 2. Oktalno, prema tablici, za svakog korisnika, zbrajajući vrijednosti: r wx 42 1 Mapiranje (računanje) simboličkih u oktalne oznake, prema prethodnoj tablici : (2+1) (4+1) (4+2) (4+2+1) x w w+x r r+x r+w r+w+x Dakle mapiranje o oktalni prikaz se označava za svakog od : owner/user, group i other users. Primjerice 755 znači: 7 za vlasnika (owner) - tj r+w+x 5 za grupu (group) - tj. r+x 5 za sve ostale (other users) - tj. r+x Odnosno opisno 755 znači da: 7 : vlasnik (owner) ima prava čitanja (r), pisanja (w) i izvršavanja/pokretanja (x) 5 : grupa (group) ima prava čitanja (r) i izvršavanja/pokretanja (x) 5 : svi ostali (other users) ima prava čitanja (r) i izvršavanja/pokretanja (x) Primjer : Promijenimo za : vlasnika (owner), da može čitati, zapisivati i izvršavati/pokretati: r+w+x (7) grupu (group), da može samo čitati i pokretati: r+x (5) za sve ostale (others), da mogu samo čitati i pokretati : r+x (5) chmod 755 test Printed on 2015/01/29 11:54

53 2015/01/29 11:54 53/232 Sada pogledajmo kako to izgleda: ls -al -rwxr-xr-x 1 root root :54 test* Rad s direktorijima i datotekama Pogledajmo primjer izlistanja sadržaja direktorija : Što je ovdje vidljivo? (1) Ovlasti/permissions (objašnjeno nešto prije) (2) Brojčana vrijednost : Za datoteke broj hard linkova na tu datoteku (obično 1) Za direktorije broj poddirektorija +2 (ako ih nema onda je 2, ako sadrži 1 poddirektorij onda je vrijednost 3, ) (3) Tko je vlasnik (root) (4) Kojoj grupi pripada (server) (5) Veličina : Za datoteke veličina datoteke Za direktorij veličina za metapodatke za datoteke unutar tog direktorija (obično je to default veličina bloka datotečnog sustava [ext2/3/4/]) i može rasti (6) Datum zadnje izmjene (7) Ime datoteke/direktorija umask Kada kreiramo bilo koji direktorij ili datoteku ona se kreira s određenim (definiranim) ovlastima, koje se čitaju iz sistemske varijable umask (default je 022). Obično je definirana u : /etc/profile Vrijednost umask varijable oduzima se od: Za direktorije : maksimalna. vrijednosti za direktorije je 777, računica je : = 755 Za datoteke : maksimalna vrijednosti za datoteke je 666, računica je : = 644 Open Source Osijek -

54 wiki:knjige:uvod_u_linux Ovo znači da će kod svakog kreiranja novog direktorija, direktorij biti kreiran sa ovlastima 755, dok će novokreirane datoteke imati ovlasti 644. Pimjeri: Promijeni vlasnika u pero i grupu u server za datoteku /root/podaci/test.sh chown pero:server /root/podaci/test.sh Promijeni ovlasti na datoteci /root/podaci/test.sh da bude i izvršna (read+write+execute), samo za vlasnika chmod 0744 /root/podaci/test.sh Promijeni vlasnika (pero) i grupu (server) za direktorij /root/podaci te sve poddirektorije i sve datoteke rekurzivno : chown -R pero:server /root/podaci File System detaljnije Da bi razumjeli detalje o file sustavu, potrebno je razumjeti neke činjenice o datotekama. Svaka datoteka se na nivou file sustava sastoji od dva dijela: Dijela s podacima Data : - ovaj dio je asociran s I-node unosom u I-node tablici. Dijela s imenom datoteke Filename (1) Dakle ovako izgleda datoteka na Linux File Sistemu (pr. ext/3/4 ) ili na Unix file sustavu (pr. UFS): Hard Linkovi Podaci unutar svake datoteke se zapravo nalaze unutar i-node-a. Hard link nastaje kada se u dijelu datoteke u kojem je i-node broj koristi i-node broj unutar kojeg su zapisani podaci od neke druge datoteke: Printed on 2015/01/29 11:54

55 2015/01/29 11:54 55/232 Prednosti i mane Hard Linkova: Mogu se kreirati samo unutar jedne particije jer i-node tablica postoji za svaki file system/particiju zasebno Brisanjem izvorne datoteke podaci ostaju sve dok postoji barem jedan hard link Mogu se linkati samo datoteke, ne i direktoriji uz iznimku: Kada se kreira svaki novi direktorij ( mkdir ) kreira se hard link: Jedan za roditeljski (parent) (.. ) = ima isti inode broj kao parent Jedan za trenutni direktorij (. ) = ima novi inode broj Teže ih je primjetiti i pratiti jer se mora gledati broj linkova i i-node broj Primjeri: Kreirajmo datoteku imena text.txt echo probni text > text.txt Napravimo Hard link na nju (nova datoteka će se zvati hard.link) ln text.txt hard.link Provjerimo kako to izgleda ( i prekidač naredbe ls nam prikazuje I-node broj) ls ali drwxr-xr-x 2 root root 4096 Nov 13 09:47. dr-xr-x root root 4096 Nov 13 09:28.. -rw-r--r-- 2 root root 5 Nov 13 21:29 text.txt -rw-r--r-- 2 root root 5 Nov 13 21:29 hard.link Pogledajte I-node brojeve od datoteka : text.txt i hard.link. Open Source Osijek -

56 wiki:knjige:uvod_u_linux Soft linkovi Soft Linkovi zapravo pokazuju na već kreiranu datoteku ili direktorij s apsolutnom ili relativnom putanjom. Logička shema je vidljiva na slici: Prednosti i mane Soft Linkova Fleksibilniji su jer pokazuju na putanju (path) do datoteke ili direktorija Mogu se koristiti i između file sustava (diskova ili particija) Brisanjem originala (source) soft link postaje neupotrebljiv (pokazuje i dalje na nepostojeću datoteku/direktorij). Primjeri Nastavak na primjere od Hard Linkova: Napravimo Soft link na text.txt (nova datoteka će se zvati soft.link) ln -s text.txt soft.link Provjerimo kako to izgleda ls -ali drwxr-xr-x 2 root root 4096 Nov 13 09:47. dr-xr-x root root 4096 Nov 13 09:28.. -rw-r--r-- 2 root root 5 Nov 13 21:29 text.txt -rw-r--r-- 2 root root 5 Nov 13 21:29 hard.link lrwxrwxrwx 1 root root 8 Nov 13 09:34 soft.link -> text.txt Uočimo razliku u I-node broju soft linka : datoteka imena : soft.link Printed on 2015/01/29 11:54

57 2015/01/29 11:54 57/232 Timestamps (oznake vremena) Za svaki direktorij i datoteku zapisuju se i oznake vremena: modify : kada je kreiran ili mijenjan access : kada mu je pristupano change : kada je promijenjen status (i-node unosi) Primjeri: Nastavljamo s već kreiranim datotekama. Provjerimo kako izgledaju oznake vremena: ls -al drwxr-xr-x 2 root root 4096 Nov 13 19:03. dr-xr-x root root 4096 Nov 13 19:28.. -rw-r--r-- 2 root root 5 Nov 13 19:29 hard.link lrwxrwxrwx 1 root root 8 Nov 13 19:34 soft.link -> text.txt -rw-r--r-- 2 root root 5 Nov 13 19:29 text.txt Pogledajmo vremenske unose malo detaljnije (naredba stat) (pr. datoteka text.txt) stat text.txt File: `text.txt'; Size: 5 ; Blocks: 8 ; IO Block: 4096 ; regular file Device: 801h/2049d ; Inode: ; Links: 2 Access: (0644/-rw-r--r--);Uid: ( 0/root) ; Gid: ( 0/root) Access: :47: Modify: :29: Change: :20: Kako promijeniti vremena pristupa/promijene datoteke: promijeniti ćemo: access (-a) i modify (-m) vrijeme u : Godina : 2013, Mjesec : 11, Dan : 11, Sat : 12, minuta : 01, sekunda : 10. touch -a -m -t text.txt Provjerimo sada vremena: stat text.txt File: `text.txt' Size: 5 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: Links: 2 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Open Source Osijek -

58 wiki:knjige:uvod_u_linux Access: :01: Modify: :01: Change: :20: File Descriptors File descriptori su indeksi na unose u kernelu, prema (otvorenim) datotekama. Postoje ih tri vrste: stdout - standardni izlaz stdin - standardni ulaz (1) stderror - standardna greška (2) Svaki puta kada otvorite datoteku (file), operacijski sustav kreira određenu vezu (stream) prema toj datoteci. File descriptor zapravo predstavlju tu vezu (stream) prema toj otvorenoj datoteci. U slučaju rada u terminalu, postoje gore navedene tri vrste posebnih file descriptor-a. Ova tri file descriptora ( stdin, stdout, stderror ) su spojena na terminal a ne na datoteke (kao ostali file descriptori-i). To znači da kada nešto pišete u terminalu, sve što pišete ide na stdin a ono što vidite na ekranu odlazi zapravo na stdout. Napredno: Kao što smo rekli, svaki puta kada operativni sustav otvara neku datoteku, sustav kreira file descriptor. Iz sigurnosnih i razloga iskorištavanja resursa sustava, ograničen je maksimalan broj file descriptor-a, koji se može definirati za svakog korisnika.u svakodnevnom radu, posebno servisa/daemona, ponekada nam je potrebno saznati koliko file descriptora su oni zauzeli. Ne zaboravimo da je u Linux-u sve datoteka (file). Tako da svaki program pristupa priličnom broju datoteka, poput : Log datoteka biblioteka (library) /dev/ datoteka (hardver ili posebne datoteke) Unix/Network Socket datoeka Drugih programa i njihovih datoteka Prvo što moramo saznati je koji proces ID (PID) ima servis/daemon/program koji pratimo. To možemo na nekoliko načina. Recimo da se radi o procesu imena sshd (to je SSH Server) 1. Način : Upotrebom naredbe za izlistavanje aktivnih Linux procesa ps : ps -aux grep sshd root ? Ss Feb22 0:00 /usr/sbin/sshd Printed on 2015/01/29 11:54

59 2015/01/29 11:54 59/232 PID se nalazi u drugom stupcu (u našem slučaju je to PID: 18670). 2. Način : Upotrebom naredbe pidof, koja nam na osnovu imane procesa vrati PID tog procesa: pidof sshd Dakle imamo PID: Sada moramo saznati koliko datoteka (file descriptora) ima otvoren naš PID Za namjenu prebrojavanja file descriptora za određeni PID je tzadužena naredba lsof Listu ćemo dobiti ovako: lsof -a -p i to datoteku po datoteku. Pošto nama treba samo broj otvorenih file descriptora, koristiti ćemo naredbu word count tj. wc -l, da nam ih (samo) prebroji. Tako da ćemo pokrenuti: lsof -a -p wc -l 39 I konačno smo dobili rezultat : 39 otvorenih file descriptor-a. Želimo li vidjeti koliko file descriptora je u upotrebi na cjielom sustavu, to ćemo postići na sličan način: lsof wc -l 334 Dakle cijeli Linux na kojem smo pokrenuli ovu naredbu koristi 334 file descriptora. Ulimit Naredba ulimit daje nam mogućnost definiranja sistemskih ograničenja. Ograničenja File Descriptor-a Pošto smo pričali o file deskriptorima, pogledajmo koja ograničenja nam sustav daje u startu. Zanima nas koliko file descriptora možemo imati (postoje soft i hard limiti). Limit na file descriptor-e znači zapravo koliko datoteka možemo imati istovremeno otvorenih Open Source Osijek -

60 wiki:knjige:uvod_u_linux (tj. na koliko ih istovremeno možemo raditi ). Pogledajmo Soft limit na file descriptore (ograničenje do kojeg možemo ići bez ikakve poruke sustava ). ulimit -Sn 1024 Pogledajmo Hard limit na file descriptore (ograničenje preko kojeg ne možemo ići [sustav nam neće dopustiti]): ulimit -Hn 4096 U slučaju da nam je potrebno raditi s većim brojem datoteka (file desciptora-a), podignimo im Hard Limit. Ovo je potrebno za neke velike baze podataka i sl. namjene. Mi ćemo trenutno podići limit na 8192 file descriptora. ulimit -n 8192 Da bi ova promjena ostala stalna, potrebno ju je zapisati u neku sistemsku startup skriptu (ovisno o našim potrebama). Što još možemo mijenjati s ulimit naredbom i koji su njeni drugi prekidači: -a All current limits are reported -c The maximum size of core files created -d The maximum size of a process s data segment -e The maximum scheduling priority ( nice ) -f The maximum size of files written by the shell and its children -i The maximum number of pending signals -l The maximum size that may be locked into memory -m The maximum resident set size (has no effect on Linux) -n The maximum number of open file descriptors (most systems do not allow this value to be set) Ograničenja procesa U slučaju potrebe za ograničenjem maksimalnog broja procesa koje pojedini korisnik može pokrenuti, također možemo koristiti naredbu ulimit ili definirati ograničenja za pojedinog korisnika na nivou cijelog sustava. Prvo pogledajmo koja su standardna ograničenja (Soft i Hard Limiti): Soft limit na broj procesa: ulimit -Su Hard limit na broj procesa Printed on 2015/01/29 11:54

61 2015/01/29 11:54 61/232 ulimit -Hu Sada ćemo za korisnika ucenik1, postaviti Hard i Soft limite na max. broj pokrenutih procesa i to: maksimalno 100 procesa kao soft limit. maksimalno 500 procesa kao hard limit. Editirajmo datoteku sa vi programom: /etc/security/limits.conf Dodati ćemo slijedeće linije na kraj datoteke: ucenik1 soft nproc 100 ucenik1 hard nproc 500 Nakon što snimimo ove promjene i korisnik se ponovno logira, provjerimo stanje: ulimit -Su 100 ulimit -Hu 500 Vidimo da su ograničenja aktivna. Baratanje s file deskriptorima u kernel memoriji Želimo li vidjeti više informacija o file deskriptorima na nivou kernel-a, možemo to napraviti sa: sysctl fs.file-nr fs.file-nr = Što to znači: 1184 alociranih file handel-ova u Kernel memoriji 0 nekorištenih ali alociranih (težimo da je 0) maksimalni nroj file handlera za cijeli sustav (koliko kernel uopće može alocirati). Postoji i drugi način provjere i konfiguriranja file deskriptora, pomoću direktne provjere ili upisa u kernel parametre. Podjetimo se da je /proc specifičan direktorij, koji sadrži parametre kernela. Provjerimo koliko kernel možre alocirati file deskriptora (isti podatak od primjera gore) : cat /proc/sys/fs/file-max Na sličan način to možemo i promjeniti, pr. smanjimo ih sa: na echo " "> /proc/sys/fs/file-max Open Source Osijek -

62 wiki:knjige:uvod_u_linux Ako to stavimo u neku datoteku,koja se podiže kod podizanja sustava, to će postati permanentno,ali to se preporuča upotrebom sysctl metoda (pogledjte slijedeće poglavlje). Sysctl (napredno) Sysctl je interface za baratanje s parametrima sustava, na nivou kernela. U ovo se uklapaju i primjeri s file descriptorima iz prethodnog poglavlja, koje možemo permanentno konfigurirati korištenjem sysctl metoda. U datoteci /etc/sysctl.conf se nalaze upisani parametri kernela koji će biti učitani kod svakog podizanja sustava. Primjeri Dodajmo slijedeće linije (preporuča se još jedna linija s opisom), u /etc/sysctl.conf : # Maximum number of open files permited fs.file-max = Postavili smo vrijednost na file deskriptora. Ako želimo provjeriti što se sve može konfigurirati preko sysctl pokrenimo: sysctl -a Ako želimo ponovno postaviti vrijednosti koje smo definirali u /etc/sysctl.conf sysctl -p /etc/sysctl.conf Provjera kapaciteta ( i dostupnosti ) diskova i particija te direktorija Za provjeru slobodnog prostora odnosno kapaciteta diskova i particija ili zauzeća direktorija, koristi se nekoliko naredbi (jednu smo već upoznali): lsblk prikazuje nam logičku podjelu i dostupnost Block Device uređaja. df ili Disk Free - prikazuje nam koliko prostora (kapaciteta) imamo zauzeto/slobodno na svim mountanim particijama. du ili Disk Usage prikazuje nam zauzeće prostora za određeni direktorij i/ili poddirektorije. lsblk Pogledajmo prvo naše diskove odnosno logičku sliku diskova i particija uz ostale blok uređaje (Block Device), pomoću naredbe: lsblk lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT Printed on 2015/01/29 11:54

63 2015/01/29 11:54 63/232 sr0 sda sda1 sda2 11:0 8:0 8:1 8: M 0 120G 0 100G 0 20G rom disk part / part [SWAP] Dakle imamo: sr0 uređaj - to je naš DVD/CD ROM sda to je naš SATA tvrdi disk, kapaciteta 120GB, koji ima dvije particije: sda1 : Prva ili root ( / ) odnosno sistemska particija, kapaciteta 100 GB sda2 : Druga partcija koja je swap particija, kapaciteta 20GB Naredba lsblk ima dosta prekidača, od kojih ćemo spomenuti prekidać -f koji će nam prikazati detalje o datotečnom sustavu (File System): lsblk -f NAME FSTYPE LABEL UUID sda sda1 ext4 sda2 swap MOUNTPOINT 48edf cb2-82ac-b62043ec1055 / 6c82a0a2-964a-4e94-a326-b1c75bcaec57 [SWAP] Vidljivo je da je je sda disk podjeljen na dvije particija (sda1 i sda2) te da niti jedna od njih nema nazive (LABEL), vidljivi su UUID-i i u što je mount-ana određena particija (MOUNTPOINT), detaljnije : NAME : daje nam ime uređaja (u našem slučaju /dev/sda1 znači sda1) Pogledajte poglavlje o diskovima i particijama FSTYPE : daje nam vrstu odnosno tip datotečnog sustava Pogledajte poglavlje o diskovima i particijama - u našem primjeru sda1 koristi ext4 datotečni sustav (ovo je sistemska particija) sda2 koristi swap datotećni sustav (ovo je swap particija) LABEL : oznaka particije (proizvoljno opisno ime - može i ne mora biti upisano) UUID : jedinstveni identifikator svake particije MOUNTPOINT : označava u što je mount-ana particija Pogledajte poglavlje o diskovima i particijama df Naredba df prikazuje nam zauzeće datotečnog sustava (File System) koji smo mount-ali. Navedena naredba ima veći broj prekidaća od kojih ćemo koristiti nekoliko: Open Source Osijek -

64 wiki:knjige:uvod_u_linux Standardno se ispisuje zauzeće u blokovima podataka od 1KB. -h ili -g : prikaz u GB (Human Readable format) -i : prikaz prema i-node tablicama (iskorišteno/slobodno) -T : prikaz uz ispis o vrsti/tipu datotečnog sustava (File System) Primjeri 1.Ispišimo zauzeće mount-anih particija : df Filesystem /dev/sda1 1K-blocks Used Available Use% % Mounted on / Vidljivo je da nam je prikaz u blokovima od 1KB pomalo nepraktičan 2. Ispišimo zauzeće u nama (ljudima) malo ljepšem formatu (-h): df -h Filesystem /dev/sda1 Size 100G Used 2.7G Avail 97.3G Use% Mounted on 2.7% / 3. Prijašnjem primjeru dodajmo i ispis vrste datotečnog sustava (-T): df -Th Filesystem /dev/sda1 Type ext4 Size 100G Used 2.7G Avail 97.3G Use% Mounted on 2.7% / du Naredba du (Disk Usage) daje nam ispis zauzeća diskovnog prostora za određeni direktorij odnosno sve njegove poddirektorije rekurzivno. Neki od prekidaća su : -h : ili Human Readable format - lakši za razumjevanje -s : ili Summary odnosno sumariziran ispis bez ispisivanje svake datoteke i poddirektorija zasebno Primjeri 1. Ispišimo samo sumarizirano (-s) zauzeće cijelog direktorija /home/ i svih njegovih poddirektorija Printed on 2015/01/29 11:54

65 2015/01/29 11:54 65/232 zajedno (dakle koliko svi korisnici imaju u svojim home direktorijma) ali lijepo formatirano (-h): Ova operacija može potrajati, ovisno o količini poddirektorija i datoteka du -hs /home/ 54M /home/ Shell Shell ili komandnolinijska ljuska je sučelje između korisnika i Operativnog sustava, iz nje pokrećemo razne programe i upravljamo cijelim sustavom. Postoji ih veći broj,od kojih svaki ima neke specifičnosti, neki od češće korištenih su: Bourne shell ( sh ) Bourne-Again shell ( bash ) Z shell ( zsh ) C-shell ( csh ) T Shell ( tcsh ) Korn shell ( ksh ) Kako izgleda Shell (komandna linija): root@server1 :~$ Logiranje / odlogiranje Da bi se uopće mogli logirati u sistem vaš korisnički računa ( account) mora biti kreiran od strane administratora (root korisnika) Razlikuju se velika i mala slova Minimalna dužina imena accounta je 6 znakova (u pravilu) Lozinka se mijenja naredbom : passwd Izlaz iz sistema se ostavaruje slijedećim naredbama: exit, logout Ili kombinacijom tipki : CTRL d Rad s korisničkim računom Svaki korisnički račun ima svoj ID (uid) Svaki korisnički račun pripada barem jednog grupi Svaka grupa ima svoj ID (gid) Open Source Osijek -

66 wiki:knjige:uvod_u_linux Kako provjeriti pripadnost korisničkog računa grupi/grupama korisnika: id -a uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon) Dakle ovdje vidimo da je korisnik root da pripada primarnoj grupi (gid) root da pripada i dodatnim grupama (groups) : bin i daemon Osnovne kontrolne naredbe CTRL CTRL CTRL CTRL CTRL CTRL CTRL a - skoči na početak reda e - skoči na kraj reda c - prekini izvršavanje naredbe d - odlogiraj se d - još znači i pošalji End of File trenutnom procesu ALT Fn - prebaci se na n-ti terminal (n=1 6) z - privremeni prekid rada procesa (suspend) Shell varijable Komandnolinjska ljuska (shell) omogućava nam upotrebu varijabli poput varijabli u nekom programskom jeziku. Razlikujemo nekoliko vrsta varijabli: Environment varijable Obične shell varijable Obične varijable vrijede samo unutar shell-a u kojem su pokrenute, Ako unutar postojećeg shell-a pokrenemo novi shell (tkzv. subshell), variable se neće nasljediti. U tu svrhu možemo koristiti Environment varijable, koje se prenose u sve pod shell-ove. Primjeri Kreirajmo sistemsku varijablu TEST, koja će imati vrijednost korisnik1 TEST=korisnik1 Ispišimo ju (vrijednost varijable dobivamo sa $) echo $TEST korisnik1 Postavimo ovu varijablu kao Environment varijablu (za to se koristi naredba export), da bi ju kasnije mogli koristiti u novom subshell-u : Printed on 2015/01/29 11:54

67 2015/01/29 11:54 67/232 export TEST Pokrenimo podljusku (subshell) i ispišimo varijablu bash echo $TEST korisnik1 Obrišimo postavljenu varijablu iz početnog shell-a (za to se koristi naredba unset) unset TEST Aliasi Aliasi se koriste za dodjeljivanje niza naredbi nekoj novoj ( alias ) naredbi. Možemo ih zamisliti kao postavljanje nama razumljive naredbe koja u pozadini poziva cijeli niz naredbi, nama kao korisnicima, zbog bržeg/lakšeg rada Primjer Stvorimo alias imena ll koji će pokrenuti naredbu ls -alhi alias ll= ls -alhi Za izlistanje svih postavljenih aliasa koristi se naredba alias: Primjer Izlistajmo sve trenutno postavljene aliase (na kraju je i naš novo kreirani): alias alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias ll='ls -alhi' Za brisanje aliasa koristi se naredba unalias Primjer Obrišimo alias ll unalias ll Open Source Osijek -

68 wiki:knjige:uvod_u_linux Konfiguracija komandne ljuske (shell) Kod startanja shell-a, prvo se učitava globalna konfiguracijska datoteka, mi ćemo govoriti o bash shell-u. Globalnu konfiguracijsku datoteku ( /etc/profile) konfigurira administrator i kod logiranja se ona prva učitava. Potom se učitava konfiguracijska datoteka specifična za svakog pojedinog korisnika, iz njegovog home direktorija (ako postoji), datoteka je imena :.bashrc. Napomena: Vrijednosti postavjene u /etc/profile datoteci mogu se u.bashrcpromjeniti samo ako nisu postavljene kao readonly od strane administratora. Dakle moguće je konfigurirati određene vrijednosti (koje se definiraju u /etc/profile) da budu readonly, tako da ih korisnici u svojoj konfiguraciji (.bashrc) ne mogu zaobići ili mijenjati. Pamćenje izvršenih (starih) naredbi [ History ] Od trenutka logiranja na sistem a to je i trenutak kada se pokreće komandna ljuska (Shell) pamte se sve naredbe koje smo pozvali Naredbe koje smo pozivali moguće je: pozvati ponovno pretraživati Naredbom history izlistavamo sve naredbe koje smo pozivali u prošlosti. Moguće je definirati koliko zadnjih naredbi će sistem pamtiti: set HISTSIZE = xxx Podešavanje koliko zadnjih naredbi ( xxx ) će se pamtiti Primjer History size je obično postavljen na pamćenje zadnjih naredbi, to ćemo povećati na set HISTSIZE = 5000 Još neke od korisnih mogućnosti su :!123 pozovi naredbu iz povijesti pod rednim brojem 123!ls pozovi zadnju naredbu iz povijesti koja počinje sa ls CTRL r pretraži history (ovo važi za bash shell) nakon ovog se upisuje pojam/naredba koja se traži iz history-ja Tko je sve logiran i što radi? S vremena na vrijeme želimo saznati tko nam je sve logiran na sustav (u shell) i što sve radi. Printed on 2015/01/29 11:54

69 2015/01/29 11:54 69/232 To možemo saznati pomoću dvije naredbe: who prikazuje nam tko je sve logiran na sustav (uz još neke informacija) w prikazuje tko je logiran u sustav te koje je sve procese pokrenuo who Naredba who daje nam detaljne informacije o korisnicima logiranim u sustav Najčešći prekidaći ove naredbe su: -a Ispiši sve detalje -b ispiši samo informaciju kada se operativni sustav startao -m ispiši samo kombinaciju hostname (ime računala) i username (korisničko ime) -r ispiši trenutni Runlevel -u ispiši koji su sve korisnici logirani Primjeri 1. Ispiši sve dostupne podatke (-a) who -a LOGIN LOGIN LOGIN LOGIN LOGIN LOGIN root ucenik system boot run-level 3 tty1 tty2 tty3 tty4 tty5 tty6 + pts/0 + pts/ :05 20:05 20:06 20:06 20:06 20:06 20:06 20:06 20:17 20: id=1 id=2 id=3 id=4 id=5 id=6 ( ) ( ) Opis: Vidljivo je : da je operativni sustav startan u 20:05.h. da je trenutni Runlevel 3 da su logirani korisnici root i ucenik, preko pts/0 i pts/1 (udaljeni pristup - u ovom slučaju ssh), vremena kada su se logirali i njihove IP adrese ( ) 2. Ispiši samo tko je sve logiran na sustav Open Source Osijek -

70 wiki:knjige:uvod_u_linux who -u root ucenik pts/0 pts/ : :38 00: ( ) 1419 ( ) w Naredba w daje nam informacije o tome koje procese (programe) je pokrenuo koji logirani korisnik. Samim pokretanjem (bez argumenata) naredbe w, dobivamo informacije u svim logiranim korisnicima te procesima (programima) koje su pokrenuliprimjeri 1. Ispišimo sve korisnike logirane na sustav te procese koje su pokrenuli: w 20:56:20 up 51 min, 2 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ root pts/ :17 ucenik pts/ :38 /usr/bin/mc -P /tmp/mc-ucenik/mc.pwd.1423 IDLE 0.00s 3.00s JCPU 0.47s 0.11s PCPU 0.03s 0.06s WHAT w Opis: Vidimo da je korisnik root pokrenuo naredbu w (to smo mi) Također je vidljivo da je korisnik ucenik pokreuo naredbu mc (Midnight Commander) s određenim prekidačima, uz sve detalje o proesima i vremenu pokretanja naredne/procesa te IP adrese s koje se spojio. 2. Ispišimo podatke o pokrenutim procesima samo za korisnika ucenik w ucenik 21:00:44 up 55 min, 2 users, USER TTY FROM ucenik pts/ P /tmp/mc-ucenik/mc.pwd.1423 load average: 0.00, 0.00, 0.00 LOGIN@ IDLE JCPU PCPU WHAT 20:38 4: s 0.06s /usr/bin/mc Procesi Svaki proces je instanca pokrenutog programa/naredbe na linux (bilo kojem) operativnom sustavu. Naredbama ps i top možemo izlistati procese. Svaki proces identificira niz parametera od kojih nas sada zanimaju samo ovi: Printed on 2015/01/29 11:54

71 2015/01/29 11:54 71/232 UID - tko je vlasnik procesa PID - jedinstvena identifikacija (dodjeljuje ju sistem) STIME - vrijeme kada je proces pokrenut TIME - vrijeme koliko je CPU radio na procesu CMD - je naredba koja čini taj proces Primjer upotrebe ps naredbe Primjer upotrebe naredbe ps koja ispisuje pokrenute procese. ps -ef UID PID PPID C STIME TTY TIME CMD root Nov14? 00:00:01 /sbin/init root Nov14? 00:00:00 [kthreadd] root Nov14? 00:00:00 [migration/0] root Nov14? 00:06:03 [ksoftirqd/0 Primjer upotrebe ps naredbe sa prekidačima (-auxf) koji nam daju prikaz stabla procesa : ps -auxf USER PID %CPU %MEM VSZ RSS TTY root ? root ? /sbin/udevd -d root ? /sbin/rsyslogd -i /var/run/syslogd.pid -c 5 root ? /usr/sbin/sshd root ? sshd: root@pts/0 STAT Ss S<s START Oct01 Oct01 TIME COMMAND 0:00 init 0:00 \_ Sl Oct01 0:00 \_ Ss Oct01 0:00 \_ Ss 09:29 0:00 \_ Ovdje vidimo da je init proces pokrenuo sve ostale procese (koji su pod njim). Isto tako vidimo da je proces sshd (PID 300) pokrenuo podproces (PID 301) Primjer upotrebe top naredbe Primjer upotreba naredbe top koja daje puno više informacija o svakom pokrenutom procesu top 15:24:20 up 1 day, 5:45, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 143 total, 1 running, 142 sleeping, 0 stopped, 0 zombie Cpu(s): 1.3%us, 0.2%sy, 0.0%ni, 98.4%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st Mem: k total, k used, k free, 89428k buffers Open Source Osijek -

72 wiki:knjige:uvod_u_linux Swap: k total, 0k used, k free, k cached PID USER PR 1 root root root RT 0 4 root 20 0 NI VIRT RES SHR S S S S %CPU %MEM TIME+ COMMAND S :01.27 init 0:00.00 kthreadd 0:00.01 migration/0 6:03.23 ksoftirqd/0 Opis značenja: 1. PID - Process ID jedinstveni identifikacijski broj (ID) svakog procesa 2. USER - Username koji je pokrenuo taj proces 3. PR - Prioritet procesa (od -20 za najbitnije do 20 manje važne procese) 4. NI - Nice vrijednost modificira prioritet procesa 5. VIRT -Ukupna količina virtualne memorije koju proces koristi 6. RES - Rezident-na veličina (kb) Non-swapped fizička memorija koju proces koristi 7. SHR - Shared memory size (kb) količina dijeljene memorije koju proces koristi (dijeljena memorija je memorja koju mogu alocirati i drugi procesi) 8. S - Process status moguće vrijednosti: R - Running pokrenuto D - Sleeping - (nije ga moguće prekinuti - interrupted ) S - Sleeping (moguće ga je prekinuti interrupted ) T - Traced or stopped Z - Zombie ili hung process %CPU - Postotak CPU vremena koje je proces koristio u vrijeme kada je naredba top zadnji puta osvježena %MEM - Postotak memorije (RAM) koje je proces koristio u vrijeme kada je naredba top zadnji puta osvježena TIME+ -Kumulativno CPU vrijeme koje su proces i njegovi podprocesi (child/djeca)koristili COMMAND -Ime procesa ili naredbe koja je pokrenuta (pritisni c za prebacivanje između imena procesa i putanje naredbe koja je pokrenula proces) Prioriteti i procesi Na primjeru CPU (Centralni procesor) sa jednom jezgrom, možemo vidjeti da je CPU u svakom trenutku tj. najmanjoj jedinici vremena, zapravo u stanju obraditi samo jedan proces. Ono što se zapravo događa je da, prvo sistem (ili naknadno korisnik) može za svaki proces odrediti određeni prioritet, prema kojemu se računa koliko vremena, unutar jednog segmenta vremena će CPU odrađivati koji proces. Praktično CPU radi preklapanje (switching) ili takozvani context switching između više procesa. Možemo ovo zamislitit kao da svaki CPU ima malu sklopku koju prebacuje s procesa na proces (pogledajte sliku) Pojednostavljeno to izgleda ovako: Ako imamo 2 procesa: prvi prioriteta 90% a drugi 10% CPU u svakom segmentu vremena (neka je to pr. 10 us) obrađuje prvi proces 9µs a drugi 1 µs, u slijedećem segmentu vremena ( slijedećih 10 µs ) ponovno i tako dalje. Printed on 2015/01/29 11:54

73 2015/01/29 11:54 73/232 Analogija ovome je vidljiva i u višenitnim (multi threading) programima (oni su na nivou operatinog sustava isto procesi) koji su još jedan nivo iznad ove priće ali kada dođu do nivoa obrade na CPU ponovno se dešava ista stvar. Dakle svaka nit (thread) dobija određeni prioritet tj. obrađuje se samo djelić vremena, pa se prebacuje na drugu nit i tako u krug (dok se ne odrade sve niti, pa ponovno iz početka). Dakle da sumiramo: Svaki pokrenuti proces ima određeni prioritet Standardni prioritet je 0 Prioriteti se kreću od -20 do 20 (19) Najveći prioritet je -20 a najmanji 20 Primjeri: Pokreni proces (skriptu test.sh) s prioritetom 10: nice -n 10 test.sh ili nice -10 test.sh Recimo da smo već pokrenuli skriptu ili proces gore i da naknadno želimo promijeniti njen prioritet u 5, njen PID je renice 5 -p Open Source Osijek -

74 wiki:knjige:uvod_u_linux Želimo li naknadno promijeniti prioritet svih procesa čiji je vlasnik pero i svih čiji su vlasnici iz grupe korisnici u prioritet 10 renice 10 -u pero -g korisnici Procesi i signali koje im možemo poslati Svakom procesu koji je pokrenut možemo poslati određene signale (postoji ih na desetke), najkorišteniji su: SIGHUP (br. 1) Hang UP obično se proces stopira ili za daemon-e restarta i učita konfiguraciju (re-read) SIGKILL (br. 9) nasilno zaustavi proces SIGTERM (br. 15) standarno zaustavi proces Listu podržanih signala možete vidjeti sa : kill -l Ovo je lista podržanih signala na linux kernel 2.6.x: 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20)SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39)SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTM IN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53)SIGRTMAX-11 54) SIGRTMAX10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX Nakon što se logirate na Linux sustav te pokrenete neku naredbu unutar shell-a, ta naredba/program će se izvršavati sve dok ne izađete is shell-a (namjerno ili ako vam se veza na udaljeni shell [pr. preko ssh protokola]) prekine. Dakle kod odlogiranja se svim procesima koje ste pokrenuli šalje SIGHUP (1) signal i oni se svi gase. Ako imate potrebu da se neki proces (naredba/program) nastavi izvršavati i nakon što se odlogirate, to se može postići na slijedeći način (recimo da se radi o našoj skripti imena vazno_za_rad.sh ). nohup vazno_za_rad.sh & Na ovaj način smo pokrenuli našu skriptu u background-u/pozadini [ & ] te je zbog pokretanja sa nohup otporna na odlogiranje. Primjeri: Stopiraj (SIGHUP [1]) proces PID (ovo je neka skripta koju smo pokrenuli) kill Printed on 2015/01/29 11:54

75 2015/01/29 11:54 75/232 Stopiraj (SIGTERM [15]) ovo je default proces PID (ovo je neka skripta koju smo pokrenuli) kill ili kill Nasilno stopiraj (SIGKILL [9])proces PID (ovo je neka skripta koju smo pokrenuli) kill Jobs Unix / Linux Poslovi (Jobs) Važno za znati je da Shell kreira novi posao (job) svaki puta kada se pokrene neka naredba. Provjeru stanja poslova možeom napraviti korištenjem naredbe jobs. Poslovi mogu biti u slijedećim stanjima: Foreground (ovo je standardno stanje) [ fg ] Background (pokretanje u pozadini-ako se pokreće sa & na kraju) [ bg ] Stopped (Stopiran ali se može pokrenuti u Foreground ili Background) Terminated (Zaustavljen) U primjerima koji slijede biti će jasno što su poslovi i kako se barata s njima. Primjeri: Kreiraj datoteku koja će se popunjavati slučajnim znakovima dd if=/dev/urandom of=/root/slucajni.znakovi.txt Stopiraj ovaj posao (job) CTRL z [1]+ Stopped dd if=/dev/urandom of=/root/slucajni.znakovi.txt Vidljivo je da ovaj posao im ID br. 1. Pokrenuti ćemo ga ponovno u pozadini (background) bg 1 Stopirati ćemo ovaj isti posao (job) br 1 [prije broja posla mora biti znak %] stop %1 Open Source Osijek -

76 wiki:knjige:uvod_u_linux Prebaciti ćemo ga ponovno u normalan rad (foreground) fg 1 I na kraju ćemo ga stopirati CTRL c Meta znakovi Meta znakovi su većinom nealfanumerički znakovi ili karakteri koji imaju posebno značenje u komnadnoj ljusci (shell) ili drugim programima. Meta znakove često koristimo za regularne izraze. Neki od meta znakova su : < > *? [ ] $ & -! ; Wildcards znakovi su podgrupa Meta znakova i zamjenjuju alfanumeričke znakove, ato su : *?! [ ] - Značenje nekih meta znakova Wildcards znakovi : * označava bilo koji i bilo koliko znakova (i 0 njih)? označava točno jedan bilo koji znak [ ] označava listu znakova pr. [a-za-z] Meta znakovi : ; pokretanje više naredbi jedna za drugom & pokretanje programa u pozadini (background) Regularni izrazi Regularni izrazi predstavljaju zapise koji se odnose na određeni uzorak. Koriste se za pronalaženje i baratanje s određenim uzorcima Koriste ih i razni programi : vi, more, grep, sed, awk, Printed on 2015/01/29 11:54

77 2015/01/29 11:54 77/232 Primjeri 1.Izlistajmo datoteke (naredba ls ) čije ime počinje sa d ls -al d* -rw-r--r-- 1 root root 320 Nov 15 11:28 datoteka.txt 2.Izlistajmo datoteke čije ime počinje s datoteka.tx i ima još jedan bilo koji karakter (alfabet) ls -al datoteka.tx? -rw-r--r-- 1 root root 320 Nov 15 11:28 datoteka.txt Regularni izrazi i metaznakovi Ponekad želimo isključiti djelovanje metaznakova, za to služi metaznak \ Pr.: želimo ispisati test* ali pošto je * metaznak, sustavu nekako moramo naznačiti da ga ipak samo ispiše echo test\* test* Posebni metaznakovi Posebni metaznakovi su : Jednostruki navodnici isključuju interpretaciju svih meta znakova osim! \ Dvostruki navodnici isključuju interpretaciju svih metaznakova osim $ (koji služi za supstituciju varijabli) te! ` \ Jednostruki kosi navodnici ` ` - sve što se nalazi unutar njih će biti izvršeno kao naredba ili niz naredbi Primjeri Postaviti ćemo varijablu TEST na vrijednost 1 TEST=1 Potom ćemo Ispisati samu varijablu preko echo $TEST 1 Zatim ćemo ju Ispisati preko ' ' Open Source Osijek -

78 wiki:knjige:uvod_u_linux echo '$TEST' $TEST! Ovdje je vidljivo to da smo sa upotrebom ' ', ispisali samu varijablu a ne njenu vrijednost! Ispisati ćemo komentar i pozvati drugu naredbu, pomoću i ` ` Obratite pažnju da je sve što je bilo upisano između ` ` pokrenuto kao naredba. echo "komentar `ls -al datoteka.txt`" komentar -rw-r--r-- 1 root root 0 Nov 21 09:49 datoteka.txt A sada ćemo isto pokrenuti pomoću ' ' echo 'komentar `ls -al datoteka.txt` ' komentar `ls -al datoteka.txt` I sada sve isto ali pomoću echo 'komentar "ls -al datoteka.txt" ' komentar "ls -al datoteka.txt" Tablica sa primjerima upotrebe metakaraktera u često korištenim Unix/Linux programima/naredbama: Printed on 2015/01/29 11:54

79 2015/01/29 11:54 79/232 Preusmjeravanje i Pipe Preusmjeravanje (redirekcija), radi se pomoću meta znakova «< >» Default ulaz je stdin (tipkovnica) Default izlaz je stdout (ekran) Pipe ( ) preusmjerava standardni izlaz jedne naredbe u standardni ulaz druge, bez potrebe za korištenjem privremenih datoteka. Na primjerima ćemo vidjeti preusmjeravanje i pipe na djelu. Primjeri preusmjeravanja Preusmjeri naredbu u datoteku: Pr. Preusmjeri izlistanje direktorija (ls -al) u datoteku naredba > datoteka.txt ls -al> datoteka.txt Open Source Osijek -

80 wiki:knjige:uvod_u_linux Kada koristimo standardno preusmjeravanje ( > ) sadržaj datoteke u koju preusmjeravamo ispis neke naredbe, biti će svaki puta prebrisan a potom popunjen novim sadržajem. Ako želimo koristiti preusmjeravanje ali želimo nadodati svoj (novi) sadržaj na kraj datoteke, tada moramo koristiti» ls -al>> datoteka.txt Preusmjeri datoteku u naredbu : naredba < datoteka.txt cat <file1> file2 Ulaz cat naredbe je file1 a izlaz se preusmjerava u file2 Primjeri Pipe -a Iz prethodnog primjera preusmjeravanja ispisa direktorija u datoteku ćemo prebrojati koliko riječi sadrži ta datoteka. Za prebrojavanje riječi koristiti ćemo naredbu wc (word count). Ona standardno ispisuje: broj novih redova broj riječi byte count ls -al> datoteka.txt cat datoteka.txt wc Dakle broj redova je 7, broj riječi je 58 i byte count je 320. Neime s naredbom cat smo ispisali sadržaj datoteke tj poslali ga na standard output, koji je znak pipe proslijedio slijedećoj naredbi kao njen ulaz tj standard input te ga je naredba wc uzela i obradila te nam dala rezultat svoje obrade. Sada ćemo istu stvar iz pretodnog primjera još više pojednostaviti. ls -al wc Osnovne Linux naredbe Popis nekih od osnovnih Linux/Unix naredbi: cd - promijeni direktorij (change directory) ls - ispis direktorija/datoteka (list directory contents) Printed on 2015/01/29 11:54

81 2015/01/29 11:54 81/232 pwd - ispis trenutnog direktorija (Print Working Directory) date - ispis datuma i sata cal - ispis kalendara (calendar) man - ispis uputa (manual) za neku naredbu (pr.: man date) [objašnjeno u zasebnom poglavlju] Primjeri 1. Uđimo u direktorij /home, potom u /home/ucenik (naredba cd) cd /home cd ucenik 1.1 Vratimo se iz /home/ucenik/ u /home/ (naredba cd ) cd.. 2. Pogledajmo gdje se nalazimo (naredba pwd) pwd /home 3. Izlistajmo sadržaj direkorija (naredba ls sa prekidačem -al): ls -al total 12 drwxr-xr-x. 3 root root 4096 Jul 22 21:30. dr-xr-xr-x. 21 root root 4096 Jul 24 16:50.. drwx ucenik ucenik 4096 Jul 24 18:49 ucenik 4. Provjerimo trenutni datum i vrijeme (naredba date): date Thu Jul 24 19:03:49 CEST Ispišimo kalendar za tekuči mjesec (naredba cal) cal July 2014 Su Mo Tu We Th Fr Sa ''24'' Open Source Osijek -

82 wiki:knjige:uvod_u_linux 6. Ispišimo upute (manual [man]) za naredbu cal: man cal CAL(1) CAL(1) BSD General Commands Manual NAME cal - displays a calendar SYNOPSIS cal [-smjy13] [[[day] month] year] DESCRIPTION Cal displays a simple calendar. If arguments are not specified, the current month is displayed. The options are as follows: -1 Display single month output. default.) (This is the -3 Display prev/current/next month output. -s Display Sunday as the first day of the week. -m Display Monday as the first day of the Naredbe za rad s direktorijima mkdir IME-DIREKTORIJA - kreiraj direktorij imena IME (make directory) mv IME1 IME2 (move) prebaci direktorij IME1 u IME2 mv ime-datoteke ime-dir (move) prebaci datoteku u direktorij mv staro-ime novo-ime (move) prebaci datoteku prvog imena u drugo ime rmdir IME obriši direktorij imena IME (remove directory): ne može se brisati direktorij u kojem se nalazimo ne može se brisati direktorij koji je pun : Za rekurzivno brisanje punih direktorija koristiti rm -rf IME Primjeri : Kreiraj direktorij sa poddirektorijem u njemu (test/test1) mkdir -p test/test1 Kreiraj datoteku imena proba.txt unutar test/test1/ direktorija Printed on 2015/01/29 11:54

83 2015/01/29 11:54 83/232 touch test/test1/proba.txt Obriši (! oprez!) direktorije test/test1/ i sve datoteke u njima rm -rf test Kreiranje datoteka touch IME kreiraj datoteku imena IME cat > IME kreiraj datoteku imena IME (upisati sadržaj, CTRL d za kraj i snimanje) vi IME kreiraj datoteku imena IME i editiraj istu sa vi editorom echo > IME kreiraj datoteku imena IME Primjeri 1. Kreirajmo praznu datoteku imena prazno1.txt touch prazno1.txt 2. Kreirajmo drugu praznu datoteku prazno2.txt (nakon pozivanja ove metode kreiranja datoteke za kraj stisnuti CTRL d) cat> prazno2.txt CTRL d 3. Kreirajmo datoteku imena prazno3.txt, pomoću vi editora (o vi editoru u kasnijim poglavljima) vi prazno3.txt 4. Kreirajmo praznu datoteku imena prazno4.txt echo> prazno4.txt 5. Upišimo tekst TEST u datoteku prazno1.txt, pomoću naredbe echo echo "TEST"> prazno1.txt Naredbe za ispis datoteka cat IME- ispis datoteke (stdout) ili povezivanje više njih (concatenate) more IME- ispis datoteke na standardni izlaz, ekran po ekran less IME- napredna verzija more head IME- ispis samo početka datoteke (stdout) tail IME- ispis samo kraja datoteke (stdout) Primjeri Open Source Osijek -

84 wiki:knjige:uvod_u_linux 1. Ispišimo sadržaj datoteke prazno1.txt (iz prethodnog poglavlja), pomoću naredbe cat cat prazno1.txt TEST 2. Ispišimo sadržaj datoteke (/etc/profile) pomoću naredbi more i less (njihova puna funkcionalnost vidljiva je tek kod ispisa dužeg teksta) more /etc/profile... Napomena : Naredba more prikazuje tekst, koji je moguće skrolati (gore/dolje), pretraživati i sl. U slučaju izlistanja dužeg teksta (na više stranica) Izlazak je tipka Q less /etc/profile TEST Napomena : Naredba less prikazuje tekst, koji je moguće skrolati (gore/dolje), pretraživati i sl. Izlazak je tipka Q 3. Ispis pomoću naredbe head se koristi kada želimo ispisati samo početak neke datoteke (pr. /etc/profile): head /etc/profile Ispis pomoću naredbe tail se koristi kada želimo ispisati samo kraj neke datoteke (isti primjer datoteke : /etc/profile tail /etc/profile... Rad s datotekama mv IME1 IME2 (move) prebacivanje mv ime-datoteke ime-dir (move) mv staro-ime novo-ime (move) rm IME Brisanje (remove) Printed on 2015/01/29 11:54

85 2015/01/29 11:54 85/232 cp izvor odredište Kopiranje (copy) cp izvor1 izvor2 odredište cp -r izvor odredište - Rekurzivno kopiranje direktorija Primjeri Izlistajmo prvo direktorije i datoteke: ls -al total 16 drwxrwxr-x drwx------rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r-drwxrwxr-x ucenik ucenik ucenik ucenik ucenik ucenik ucenik ucenik ucenik 4096 Jul 21 21:57. ucenik 4096 Jul 21 21:45.. ucenik 5 Jul 21 21:34 prazno1.txt ucenik 0 Jul 21 21:33 prazno2.txt ucenik 0 Jul 21 21:33 prazno3.txt ucenik 0 Jul 21 21:34 prazno4.txt ucenik 0 Jul 21 21:27 prazno.txt ucenik 4096 Jul 21 21:57 test 1. Prebacimo datoteku prazno1.txt u direktorij test mv prazno1.txt test 2. Pogledajmo sada saržaj direktorija test, te preimenujmo datoteku prazno1.txt u puno1.txt ls -al test total 16 drwxrwxr-x drwxrwxr-x -rw-rw-r-drwxrwxr-x ucenik ucenik ucenik ucenik ucenik 4096 Jul 21 22:00 ucenik 4096 Jul 21 22:00 ucenik 5 Jul 21 21:34 ucenik 4096 Jul 21 21:57... prazno1.txt test1 cd test mv prazno1.txt puno1.txt Pogledajmo sada sadržaj direktorija: ls -al total 8 -rw-rw-r-- 1 ucenik ucenik 5 Jul 21 21:34 puno1.txt drwxrwxr-x 2 ucenik ucenik 4096 Jul 21 21:57 test1 3.Kopirajmo datoteku puno1.txt u prazno1.txt cp puno1.txt prazno1.txt Open Source Osijek -

86 wiki:knjige:uvod_u_linux Pogledajmo sadržaj: ls -al total 20 drwxrwxr-x drwxrwxr-x -rw-rw-r--rw-rw-r-drwxrwxr-x ucenik ucenik ucenik ucenik ucenik ucenik 4096 Jul 21 22:08. ucenik 4096 Jul 21 22:00.. ucenik 5 Jul 21 22:08 prazno1.txt ucenik 5 Jul 21 21:34 puno1.txt ucenik 4096 Jul 21 21:57 test1 4. Sada obrišimo datoteku puno1.txt rm puno1.txt Pogledajmo ponovno sadržaj direktorija: ls -al total 16 drwxrwxr-x drwxrwxr-x -rw-rw-r-drwxrwxr-x ucenik ucenik ucenik ucenik ucenik 4096 Jul 21 22:09 ucenik 4096 Jul 21 22:00 ucenik 5 Jul 21 22:08 ucenik 4096 Jul 21 21:57... prazno1.txt test1 Rad sa sadržajem datoteka U radu sa sadržajem datoteka (uglavnom tekstualnog formata) najčešće koristimo nekoliko osnovnih programa/naredbi. grep (pronalazi traženi pojam unutar datoteke) cut (pronalazi tražene dijelove teksta unutar datoteke [pr. polje podataka, stupac ili sl.] ) awk (programski jezik za pronalaženje i obradu uzoraka teksta) sed (koristi se ra razne transformacije teksta) Osim navedenih, postoji i veći broj pomoćnih programa, od kojih ćemo spomenuti: wc prebrojavanje riječi u datoteci uniq izbacivanje riječi koje se ponavljaju sort sortiranje grep grep je nastao u vrijeme nastanka prvih UNIX-a (1973). Koristi se za pretraživanje (regularnih) izraza unutar tekstualnih podataka. Postoji nekoliko važnijih varijanti grep-a : grep (standardni), Printed on 2015/01/29 11:54

87 2015/01/29 11:54 87/232 egrep (nadogradnja na osnovni, dodaje nove metakaraktere za regularne izraze: +,?,, () ), može se pozvati i sa grep -E, fgrep, (grep optimiziran za brzo pretraživanje, ne podržava regularne izraze), može se pozvati i sa grep -F, Primjeri Iz tabličnog kalkulatora (Open Office Calc ili Microsoft Excell ) smo eksportirali tablicu sa ocjenama studenata za predmeta i Linux Napredno u CSV formatu. Postoje tri stupca : Ime, Prezime i Ocjena, odvojena sa znakom ;. Tablice sada izgledaju ovako : cat uvod-u-linux.csv Ime;Prezime;Ocjena Ana;Anic;4 Marina;Horvat;5 Luka;Lukic;2 Pero;Peric;4 Kristijan;Kristic;5 Maja;Anic;2 cat linux-napredno.csv Ime;Prezime;Ocjena Ana;Anic;2 Marina;Horvat;4 Luka;Lukic;2 Pero;Peric;4 Kristijan;Kristic;3 Maja;Anic;2 1.Pomoću naredbe grep, unutar datoteke uvod-u-linux.csv pronađimo cijeli unos (red) od Studenta imena Ana: grep Ana uvod-u-linux.csv Ana;Anic;4 1.1 Ispišimo i broj reda u kojem je pronađen student imena Ana (-n = Ispiši broj reda) : grep -n Ana uvod-u-linux.csv 2:Ana;Anic;4 2. Sada nas zanima i kako izgleda unos u obije tablice (datoteke), za istu osobu ( Ana ). Sada ćemo koristiti regularni izraz * (bilo koji znak), pošto obije datoteke u imenu imaju riječ linux i extenziju.csv grep Ana *linux*.csv Open Source Osijek -

88 wiki:knjige:uvod_u_linux linux-napredno.csv:ana;anic;2 uvod-u-linux.csv:ana;anic;4 3. Probajmo istu pretragu ali da se ignoriraju velika i mala slova - sada ćemo tražiti ime ana (malim slovima). grep -i ana *linux*.csv linux-napredno.csv:ana;anic;2 uvod-u-linux.csv:ana;anic;4 4. Pretražimo sve direktorije i poddirektije, rekurzivno ( -r ), počevši od trenutnog u kojem se nalazimo (. ) i sve datoteke unutar njih koje sadrže rijeć ana : grep -r -i ana../uvod-u-linux.csv:ana;anic;4./linux-napredno.csv:ana;anic;2 4.1 Ispišimo samo datoteke u kojima je pronađeno ime Ana ili ana (-l = samo ispis imena datoteka koje zadovoljavaju kriterije pretrage) grep -r -i ana -l../uvod-u-linux.csv./linux-napredno.csv 5. Ispišimo sve ostale osim studenta ana (invert match = -v) iz datoteke : inux-napredno.csv grep -v -i ana linux-napredno.csv Ime;Prezime;Ocjena Marina;Horvat;4 Luka;Lukic;2 Pero;Peric;4 Kristijan;Kristic;3 Maja;Anic;2 6. Prebrojimo koliko studenata se preziva Anic, u istoj datoteci (-c = prebrojavanje) grep -c Anic linux-napredno.csv 2 7.Pronađimo više unosa istovremeno. Nađimo prezimena Anic i Lukic : 7.1. Pomoću naredbe grep (potrebno je odvajati pojmove sa pipe ( ) ali ga moramo pozivati sa \ ): grep 'Anic\ Lukic' uvod-u-linux.csv Printed on 2015/01/29 11:54

89 2015/01/29 11:54 89/232 Ana;Anic;4 Luka;Lukic;2 Maja;Anic; Pomoću naredbe egrep (ovdje ne moramo koristiti escape \ karakter za pipe znak ): egrep 'Anic Lukic' uvod-u-linux.csv Ana;Anic;4 Luka;Lukic;2 Maja;Anic;2 cut Naredba cut se koristi za procesiranje teksta odnosno pronalaženje dijelova teksta poput određenog stupca teksta ili sl. Pogledajmo nekoliko primjera: Primjeri 1. Imamo datoteku u kojoj su sadržani podaci o korisnički računima /etc/passwd u kojoj se nalaze slijedeći podaci : root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh Želimo izvući samo drugi stupac - to bi bilo drugo slovo (znak). To ćemo napraviti na slijedeći način: cut -c2 /etc/passwd o a i y y a Dakle dobili smo ispisano samo drugo slovo, kako smo i htjeli. 2. Želimo izvući sve što se nalazi u prvom stupcu iste datoteke od gore, što je zapravo lista imena korisničkih računa. Naime u toj CSV datoteci delimiter (oznaka stupca) je znak :. cut -d':' -f1 /etc/passwd root Open Source Osijek -

90 wiki:knjige:uvod_u_linux daemon bin sys sync games Prekidač -d koristimo da bi rekli naredbi da je delimiter u ovoj CSV datoteci znak : a prekidač -f da bi joj rekli da želimo damo prvi stupac -f1. 3. Želimo izvući sve što se nalazi u prvom (korisničko ime) i sedmom (shell od tog korisnika) stupcu iste datoteke od gore te zamijeniti delimiter sa znakom ; jer nam to treba za novu CSV datoteku u kojoj će delimiter biti ;. cut -d':' -f1,7 --output-delimiter=';' /etc/passwd root;/bin/bash daemon;/bin/sh bin;/bin/sh sys;/bin/sh sync;/bin/sync games;/bin/sh Vidimo da smo dobili ispisani prvi i sedmi stupac te delimiter zamijenjen sa znakom ; (kako smo i htijeli). awk awk je nastao 1970 u Bell Labs od strane tri autora: Alfred Aho, Peter Weinberger i Brian Kernighan, koji su kombinirali : egrep (naredba za pretraživanje), ed (tekst editor), snobol (StriNg Oriented and symbolic Language) i C (programski jezik) awk je interpreterski programski jezik, dakle direktno se izvršava bez compile-iranja, a koristi se za : procesiranje teksta, izvlačenje podataka, reporting, provjeru i manipulacije s tekstom, awk naredbe se nižu po principu: awk condition { action } tj. Printed on 2015/01/29 11:54

91 2015/01/29 11:54 91/232 awk uvjet { akcija/radnja } Print naredba Opis osnovnih naredbi za ispis : { print } Ispiše cijeli sadržaj { print $0} Ispiše cijeli sadržaj ($0 = sve) { print $1} Ispiše prvi stupac iz cijelog sadržaja { print $2} Ispiše drugi stupac iz cijelog sadržaja { print $1,$2} Ispiše prvi i drugi stupac iz cijelog sadržaja Primjer Kreirali smo datoteku awk.test.txt, sadržaja: PC-1 PC-3 PC-1 PC-2 PC-1 PC-2 PC Sadržaj predstavlja pojednostavljeni dio log datoteke u koju se snima statistika izlaza na iternet za svaku IP adresu. 1. Iz datoteke awk.test.txt, želimo prikazati sve (sadržaj cijele datoteke): awk '{print}' awk.test.txt PC-1 PC-3 PC-1 PC-2 PC-1 PC-2 PC Sada želimo prikazati samo drugi stupac tj. čije računalo (hostname) je išlo na internet awk '{print $2}' awk.test.txt PC-1 PC-3 PC-1 Open Source Osijek -

92 wiki:knjige:uvod_u_linux PC-2 PC-1 PC-2 PC-2 3. Sada želimo prikazati drugi i treći stupac tj. koja/čija računala (hostname) su koliko puta pristupala određenim web starnicama: awk '{print $2,$3}' awk.test.txt PC-1 PC-3 PC-1 PC-2 PC-1 PC-2 PC Varijable Moguće je koristiti sistemske varijable ili definirati svoje. Sistemske varijable Opis češće korištenik sistemskih varijabli: NR: Keeps a current count of the number of input records. NF: Keeps a count of the number of fields in an input record. The last field in the input record can be designated by $NF. FILENAME: Contains the name of the current input-file. FS: Contains the field separator character used to divide fields on the input record. The default, white space, includes any space and tab characters. FS can be reassigned to another character to change the field separator. RS: Stores the current record separator character. Since, by default, an input line is the input record, the default record separator character is a newline. OFS: Stores the output field separator, which separates the fields when Awk prints them. The default is a space character. ORS: Stores the output record separator, which separates the output records when Awk prints them. The default is a newline character. OFMT: Stores the format for numeric output. The default format is %.6g. Primjeri 1. Ispišimo brojeve linija (redova) za našu datoteku awk.test.txt Printed on 2015/01/29 11:54

93 2015/01/29 11:54 awk '{print NR}' 93/232 awk.test.txt Ispišimo ukupan broj redova unutar naše datoteke awk.test.txt awk 'END {print NR}' awk.test.txt 7 Dakle imamo ukupno 7 redova (linija) 3. Ispišimo broj stupaca za svaku liniju (red) unutar naše datoteke awk.test.txt awk '{print NF}' awk.test.txt Vdiljivo je da za svaki red imamo 4 stupca 4. Ispišimo zadnji stupac (bez obzira koliko ih ima) unutar naše datoteke awk.test.txt awk '{print $NF}' awk.test.txt Varijable koje možemo sami definirati Kao što smo i rekli ranije, moguće je definirati i svoje varijable. Pogledajmo primjere osnovnog kreiranja i korištenja svojih varijabli. Primjer Open Source Osijek -

94 wiki:knjige:uvod_u_linux Kreirajmo datoteku varijable.awk U navedenoj datoteci ćemo kreirati varijablu BROJ i dodjeliti joj vrijednost 10 BEGIN { BROJ = 10 print "vrijednost BROJ=" BROJ } awk program koji smo napravili, sada ćemo i pokrenuti (nakon prekidaća -f, slijedi ime awk datoteke) : awk -f varijable.awk vrijednost BROJ=10 Dakle vidimo da smo ispisali vrijednost varijable BROJ, uz tekst koji smo joj pridružili (vrijednost BROJ=) Funkcije i for petlje Programski jezik awk nam omogućava i kreiranje (i pozivanje) funkcija. Primjer Kreirati ćemo funkciju imena BROJAC, koju ćemo poslije pozvati. Kreirajmo novu datoteku funkcije.awk, sa slijedećim sadržajem: function BROJAC() { for (i = 0; i <10; i++) print "BROJAC=" i } Dakle kreirana je funkcija BROJAC koja ima slijedeću funkcionalnost : for (i = 0; i < 10; i++) kreiramo FOR petlju u kojoj varijabla i ima vrijednost 0 te se povećava (increment) za 1 (i++) u svakom prolazu, sve dok ne dosegne vrijednost do 10. print BROJAC= i ispisujemo tekst (BROJAC=) i vrijednost varijable i (koja se mijenja/povećava) Naime ovo će biti mali brojać od 0 do 9. Sada nam je potrebno od negdje i pozvati našu funkciju BROJAC, to ćemo postići tako da ćemo na kraj dodati slijedeći kod: BEGIN { Printed on 2015/01/29 11:54

95 2015/01/29 11:54 95/232 BROJAC() } Dakle cijela datoteka sada izgleda ovako: function BROJAC() { for (i = 0; i <10; i++) print "BROJAC=" i } BEGIN { BROJAC() } Sada ju snimimo i pozovimo: awk -f funkcije.awk BROJAC=0 BROJAC=1 BROJAC=2 BROJAC=3 BROJAC=4 BROJAC=5 BROJAC=6 BROJAC=7 BROJAC=8 BROJAC=9 Uvjeti Kao i svaki drugi programski jezik awk ima i uvjete, popis uvjeta koji su podržani je : if-else while do-while for switch break continue next nextfile exit Mi ćemo obratiti osnovi uvjet if-else, koji imaju slijedeću logiku: if (condition) then-body [else else-body] Primjer Open Source Osijek -

96 wiki:knjige:uvod_u_linux Proširiti ćemo prethodni primjer pozivanja funkcija, sa dva uvjeta, kod ispisivanja brojeva : Dali su brojevi koji se kreiraju veći ili jednaki 5 ili manji ili jednaki 5 Kopirajmo datoteku funkcije.awk u if-else.awk Dodati ćemo slijedeći kod/redove function BROJAC() { for (i = 0; i <10; i++) if (i <= 5) print "i je manji ili jednak 5 : " i else print "i je veci od 5 : " i } BEGIN { BROJAC() } Objasnimo if else dio : Pošto se nalazimo u for petlji koja vrti brojeve od 0 do 9 dodali smo : if (i <= 5) print "i je manji ili jednak 5 : " i Što znači da sve dok je i manje ili jednako 5, ispisujemo (print) i je manji ili jednak 5 : i vrijednost varijable i else print "i je veci od 5 : " i I else uvjet koji kaže, a inaće ispišimo (print) i je veći ili jednak 5 : i vrijednost varijable i Pokrenimo primjer: awk -f if-else.awk i i i i i i i i i i je je je je je je je je je je manji ili manji ili manji ili manji ili manji ili manji ili veci od 5 veci od 5 veci od 5 veci od 5 jednak jednak jednak jednak jednak jednak : 6 : 7 : 8 : : : : : : : Printed on 2015/01/29 11:54

97 2015/01/29 11:54 97/232 Polja (Array) Polje (Array) (polje) predstavlja tablicu vrijednosti koje zovemo elementima. Elemente polja razlikujemo po indeksima. Dakle polja možemo promatrati kao varijable koje sadrže više elemenata Imena polja imaju istu sintaksu kao i imena varijabli ali ne smijemo koristiti isto ime i za polje (array) i za varijablu. u awk-u se Array (polja), definicija broja elemenata ili komponenti ne mora definirati prije korištenja (za razliku od većine programskih jezika). Primjeri 1. Kreirajmo datoteku imena array.awk, koja sadrži slijedeći kod: { IP[$4]++; } END { for (var in IP){ print var, "Pristupano", IP[var]," puta" } } Koristiti ćemo datoteku koja je pojednostavljena log datoteka izlaza na internet, koja u 4 stupci ima popis IP aresa kojima se pristupalo. Datoteka awk.test.txt izgleda ovako: PC-1 PC-3 PC-1 PC-2 PC-1 PC-2 PC Mi s gore navedenim naredbama (kodom) želimo kreirati Array (polje) imena IP koja će sadržavati sve IP adrese iz 4-tog stupca naše datoteke :awk.test.txt, to smo postigli sa : { IP[$4]++; } Kod gore - ovdje kreiramo polje imena IP, u koje ubacujemo vrijednosti iz 4-tog stupca (IP arese) te ih svaki puta uvećamo (increment: ++) tj povećavamo polje, sa svakim novim elementom. for (var in IP){ Ovdje za elemente (var) polja IP koje smo popunili u primjeru gore, print var, "Pristupano", IP[var]," puta" Open Source Osijek -

98 wiki:knjige:uvod_u_linux Ispisujemo svaku pojedinu IP adresu iz polja (print var) uz pripadajući tekst te ispisujemo koliko je bilo ponavljanja iste IP adrese IP[var] Pokrenimo naš novi program imena array.awk, na log datoteci imena : awk.test.txt : awk -f array.awk awk.test.txt Pristupano 2 puta Pristupano 2 puta Pristupano 3 puta 2. Istu stvar mogli smo pokrenuti i iz jednolinijskog awk koda, sa istim rezultatom: awk '{IP[$4]++;} END{for (var in IP) print var, "Pristupano", IP[var]," puta"}' awk.test.txt Pristupano 2 puta Pristupano 2 puta Pristupano 3 puta 3. Napraviti ćemo istu stvar i pomoću niza linux naredbi: cat awk.test.txt awk '{print $4}' sort uniq -c sort -nr Opis: 1.Ispisujemo datoteku awk.test.txt sa naredbom cat 2.Potom sa nredbom awk ispisujemo samo 4 stupac 3.Sortiramo IP adrese naredbom sort 4. Prebrojavamo broj istih IP adresa naredbom uniq -c 5. Ponovno pozivamo naredbu sort -nr ali sada da bi poredali sve po prvom stupcu (broju konekcija koje smo prebrojavali u koraku 4.). Pretraživanje Pomoću jezika awk, moguće je i pretraživati tekst prema nekoj ključnoj rijeći. Sintaksa je : awk '/XY/ {print }' FILE : Traži pojam XY Printed on 2015/01/29 11:54

99 2015/01/29 11:54 99/232 Primjer Iz datoteke ocjena studenata : uvod-u-linux.csv, pronađimo sve studente koji se prezivaju Anic. Pošto je ovo CSV datoteka u kojoj je delimiter ; pa ga moramo definirati sa -F, ali uz korištenje escape karaktera \ dakle sa -F\; awk -F\; '/Anic/' uvod-u-linux.csv Ana;Anic;4 Maja;Anic;2 2. Isti primjer možemo proširiti i sa drugim mogućnostima awk-a, pr. filtrirajmo samo 3 stupac iz primjera gore: awk -F\; '/Anic/ {print $3}' uvod-u-linux.csv 4 2 Aritmetičke operacije i operatori awk nam omogućava upotrebu aritmetičkih operacija i operatora: Operatori : > Veće od >= Veće ili jednako od < Manje od Manje ili jednako od == Jednako sa!= Različito od && Oba izraza moraju biti istinit Bilo koji od izraza mora biti istinit Aritmetičke operacije: + Zbrajanje - Oduzimanje / Dijeljenje * Množenje ^ Potenciranje % Modulo (pr. 16%6=4,16/6=2, 2*6=12, 16-12=4) Popis unarnih operacija + Pozitiviranje broja - Negiranje broja ++ Auto increment Open Source Osijek -

100 wiki:knjige:uvod_u_linux Auto decrement Primjeri 1. Iz naše datoteke sa ocjenama, želimo zbrojiti sve ocjene i podjeliti ih s brojem studenata da bi dobili prosjek ocjena. Pošto je prvi red naše CSV datoteke uvod-u-linux.csv opis, moramo ga maknuti, to ćemo napraviti pomoću naredbe tail -n +2 (ispiši sve redove počevši od drugog reda, pa sve do kraja datoteke). Sada možemo zbrojiti sve zadnje stupce tj. treči stupac (x = x +$3) te rezultat podijeliti sa brojem svih redova (osim prvog kojeg smo maknuli) : print x/nr tail -n +2 uvod-u-linux.csv awk -F\; '{ x = x + $3} END { print x/nr }' Iz naše datoteke sa logovima (awk.test.txt) pristupa internetu, pomnožimo u svakom redu prvi stupac sa 2: awk '{print $1*2}' awk.test.txt Za više detalja o programskom jeziku awk, možete pogledati knjigu : sed sed (Stream Editor),koristi se za parsiranje i transformiranje teksta (podataka). sed podržava regularne izraze Najčešće koršteni regularni izrazi u sed-u: * niti jedan ili bilo koliko karaktera \+ kao * ali za jedan ili više karaktera \? niti jedan ili jedan karakter \{i\} kao * ali za točno i broj karaktera \{i,j\} između i i j broja karaktera, uključujuči oba \{i,\} višeo ili jednako i karaktera. bilo koji karakter uključujuči novu liniju ^ null string - pr. space - na početku linije Printed on 2015/01/29 11:54

101 2015/01/29 11:54 101/232 $ null string - pr. space - na kraju linije Primjeri. Kreirati ćemo datoteku iena : ulaz.txt koja će sadržavati: POCETAK 1 2 STARO 3 4 NOVO 5 KRAJ Zamjena stringova Iz datoteke ulaz.txt svugdje gdje se pojavljuje pojam STARO, zamijeniti ćemo sa NOVO i tu snimiti u novu datoteku izlaz.txt: sed 's/staro/novo/g' ulaz.txt> izlaz.txt Pogledajmo rezultat: cat izlaz.txt POCETAK 1 2 NOVO 3 4 NOVO 5 KRAJ Sada ćemo napraviti dvije zamjene odjednom: sed 's/staro/novo/g ; s/pocetak/kraj/g' ulaz.txt> izlaz.txt Što smo dobili : cat izlaz.txt KRAJ 1 2 NOVO Open Source Osijek -

102 wiki:knjige:uvod_u_linux NOVO 5 KRAJ Brisanje stringova Obrišimo pojam STARO: sed 's/staro//' ulaz.txt> izlaz.txt Pogledajmo rezultat: cat izlaz.txt POCETAK NOVO 5 KRAJ Napomena: Direktne promjene na datoteci mogu se raditi ako koristimo prekidač -i : sed -i 's/staro//' ulaz.txt Unutar datoteke ulaz.txt obrišimo (d) prazne (^$) redove sed -i '/^$/d' ulaz.txt Na ispisu datoteke ulaz.txt obrišimo sve od 1 do 4 reda (uključujuči 4.) cat ulaz.txt sed '1,4d' ovo smo mogli napraviti i ovako (-e znači da slijedi sed naredba): sed -e '1,4d' ulaz.txt 3 4 NOVO 5 Printed on 2015/01/29 11:54

103 2015/01/29 11:54 103/232 KRAJ Iz datoteke ulaz.txt obrišimo sve redove između određena dva reda koja sadrže riječi POČETAK i NOVO sed -e '/POCETAK/,/NOVO/d' ulaz.txt 5 KRAJ Traženje datoteka S vremena na vrijeme porebno nam je pronaći neku datoteku (ili naredbu), prema određenom kriteriju, u tu svrhu se koriste: whereis Koristi se kada želimo pronaći gdje se u strukturi direktorija koji su nam u putanji (PATH), te u putanji za man stranice, nalazi određena naredba ili datoteka Prvo pogledajmo koji direktoriji su nam u putanji (PATH), za trenutno logiranog korisnika: echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/ucenik/bi n Dakle u svim i iz svih navedenih direktorija (odvojenih dvotočkom : ) možemo pokretati naredbe i u njima će i naredba whereis pretraživati. Primjer 1. Pronađimo gdje se nalazi naredba ls i pripadajući manual (upute) za nju: whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz which Koristi se kada želimo pronaći gdje se točno u putanji direktorija nalazi određena izvršna naredba (i na što pokazuje njen alias ako postoji). Primjeri 1. Gdje se nalazi naredba more tj. odakle ju zapravo pozivamo: Open Source Osijek -

104 wiki:knjige:uvod_u_linux which more /bin/more 2. Gdje se nalazi naredba less tj. odakle ju zapravo pozivamo which less /usr/bin/less 3. Gdje se nalazi naredba ls tj. odakle ju zapravo pozivamo : which ls alias ls='ls --color=auto' /bin/ls Što ovo znači?. Da se naredba ls nalazi u /bin/ direktoriju Da naredba ls ima alias koji presreće izvornu naredbu ls tj. poziva ju s određenim prekidaćem, tj. ovako : ls color=auto locate i updatedb Naredba locate koristi se za brzo traženje datoteka. Njena brzina je u tome da se pomoću naredbe updatedb skeniraju datoteke na cijelom tvrdom disku (hard disk) te se njihov naziv i putanja (lokacija unutar direktorija) spremaju u posebnu bazu podataka: tkzv mlocate baza, koja se obično nalazi u : /var/lib/mlocate/ mlocate.db. Definicija koji tipovi datoteka (uz ostale parametre) će se pretražiti pokretanjem update-a ove baze tj. pokretanjem naredbe updatedb je definirana u datoteci : /etc/updatedb.conf. Naime nakon pokretanja updatedb skenira se cijeli disk i obnavlja mlocate baza podataka koju zapravo naredba locate pretražuje kod potrage za datotekama. Često se na raznim Linux sustavima updatedb pokreće automatski svaki dan (noć) ili svakih nekoliko dana, tako da mlocate baza bude što točnija. Primjeri. 1. Kreiraj novu mlocate bazu i skeniraj cijeli tvrdi disk (ovo može potrajati prilično dugo) updatedb 2. Pronađi datoteku imena koje počinje sa sysctl.conf locate sysctl.conf /etc/sysctl.conf Printed on 2015/01/29 11:54

105 2015/01/29 11:54 105/232 /usr/share/man/man5/sysctl.conf.5.gz 3.Pronađimo gdje se sve nalazi datoteka imena rc.local locate rc.local /etc/rc.local /etc/rc.d/rc.local 4.Pronađimo koje sve datoteke imaju ime koje počinje sa apache locate apache /etc/selinux/targeted/modules/active/modules/apache.pp /usr/lib/python2.6/site-packages/sos/plugins/apache.py /usr/lib/python2.6/site-packages/sos/plugins/apache.pyc /usr/lib/python2.6/site-packages/sos/plugins/apache.pyo /usr/share/selinux/devel/include/services/apache.if /usr/share/selinux/targeted/apache.pp.bz2 /usr/share/vim/vim72/syntax/apache.vim /usr/share/vim/vim72/syntax/apachestyle.vim... Osim navedenih primjera postoje i neki prekidaći naredbe locate, za dodatne osnovne opcije pretraživanja. Za sva složenija pretraživanja koristi se slijedeća naredba. find Koristi se za nalaženje datoteka prema raznovrsnim parametrima pretraživanja, kojih naredba find ima na stotine. Osnovna sintaksa je : find /početni-direktorij-za-pretraživajne -opcije što-tražimo Osnovni prekidači su : -name ime datoteke -iname ime datoteke ali se ignoriraju velika i mala slova -type : -type f označava datoteku -type d označava direktorij -type l označava simbolički link -perm označava da slijede ovlasti (permisions) Open Source Osijek -

106 wiki:knjige:uvod_u_linux -exec označava da slijedi pozivanje naredbi iz operativnog sustava -mtime slijedi oznaka vremena kada je (datoteka ili direktorij) modificiran -atime slijedi oznaka vremena kada je (datoteci ili direktoriju) pristupano (read ili copy) -size slijedi veličina datoteke Primjeri 1. Pronađimo datoteku imena rc.local, za koju znamo da se nalazi negdje u /etc/ direktoriju, pa nećemo pretraživati cijeli tvrdi disk, počevši od / direktorija: find /etc/ -name rc.local /etc/rc.d/rc.local /etc/rc.local 2. Već se nalazimo u /etc/ diretoriju, krenimo s istom pretragom iz prethodog primjera ali označivši da krećemo iz trenutnog direktorija (. ) find. -name rc.local./rc.d/rc.local./rc.local 3. Pronađimo istu datoteku iz prethodnog primjera ali s time da se ignoriraju velika i mala slova (jer nismo sigurni koje je veliko a koje malo slovo u nazivu datoteke) find. -iname rc.local./rc.d/rc.local./rc.local 4.Pronađimo direktorij imena ssh, ali želimo pretražiti cijeli disk jer ne znamo gdje se nalazi find / -type d -name ssh /etc/ssh 5. Pronađimo datoteku unutar /etc/ direktorija (i svih poddirektorija), koja ima ekstenziju.sample find /etc/ -type f -name "*.sample" /etc/gdm/postlogin/default.sample 6. Pretražimo sve korisničke home direktoije u potrazi za datotekama koje imaju ovlasti 777 (Read Write execute za sve): find /home/ -type f -perm print Printed on 2015/01/29 11:54

107 2015/01/29 11:54 107/ Pronađimo sve MP3 datoteke u korisničkim home direktorijima i obrišimo ih!! find /home/ -type f -name "*.mp3" -exec rm -f {} \; Opis: ovdje pozivamo prekidač -exec, kojim pozivamo vanjsku naredbu od operativnog sustava : rm -f sa dodatnim parametrima 8. Pronađimo sve prazne datoteke u home direktoriju svih korisnika: find /home/ -type f -empty 8.1. Pronađimo sve prazne direktorije, također u home direktoriju svih korisnika find /home/ -type d -empty 9. Pronađimo sve datoteke koje su promijenjene (modify) u zadnjih 10 dana u home direktoriju svih korisnika find /home/ -mtime Pronađimo sve datoteke kojima je pristupano (access) u zadnjih 10 dana u home direktoriju svih korisnika. Pristupano znači da su čitane (read) ili kopirane. find /home/ -atime Pronađimo sve datoteke u home direktoriju svih korisnka, koje su veće od 100 MB find /home/ -size 100M 12. Pronađimo sve datoteke u home direktoriju svih korisnka, koje su veće od 50MB ali manje od 100MB find /home/ -size +50M -size -100M xargs Naredba xargs nije vezana za pretraživanje ali se često koristi u kombinaciji sa naredbom find (ili drugim naredbama). NAPREDNO Zbog čega i kada koristiti xargs? Naime Linux kao i svaki drugi operativni sustav ima određena ograničenja prema broju file deskriptora ali i na veličinu memorije koja je u slučaju Linuxa rezervirana za broj (količinu) argumenata koje svaka naredba može pohraniti u memoriji. Standardno Linux koristi 1/4 memorije od broja sistemski definiranog maksimalnog broja file deskriptora. Open Source Osijek -

108 wiki:knjige:uvod_u_linux Dakle: maximum amount of space for command arguments = [ ulimit -s ] / 4 Možete pogledati i u poglavlje ulimit za detalje. Naredba xargs radi tako da uzima sve iz standarnog ulaza (standard input [ stdin ]) te lomi dugačke ulazne podatke na više manjih/kraćih, koje u praksi proslijeđujemo nekoj drugoj naredbi. Na taj način se riješava problem ograničenja navedenih u tekstu gore, bez potrebe za promijenama na nivou Linux file descriptora. Dakle ovo se dešava samo u slučajevima kada nam na ulaz (ili izlaz naredbe prije) dolazi velika količina podataka u nizu te kada obično dobijemo sistemski pogrešku : Argument list too long Ovaj problem u praksi se dešava samo kod slučajeva kada se barata sa vrlo velikom količinom argumenata. Primjeri Na primjeru iz naredbe find, gdje sve proađene.mp3 datoteke iz /home/ direktorija šaljemo u listu {} te pozivamo vanjsku naredbu u koju se puni ta lista, u slučaju da je pronađeni broj takvih datoteka izuzetno velik, te ne stane u listu koju proslijeđujemo naredbi rm -f, mogli bi dobiti grešku : Argument list too long Ovo je bio primjer : Pronađimo sve MP3 datoteke u korisničkim home direktorijima i obrišimo ih!! find /home/ -type f -name "*.mp3" -exec rm -f {} \; 1. U našem primjeru prilagoditi ćemo se upotrebom naredbe xargs, kojom ćemo pokrenuti naredu rm -f sa listom {} imena.mp3 datoteka koju nam je popunio find : find /home/ -type f -name "*.mp3" -print xargs rm -f {} \; istu stvar možemo napraviti i bez liste, već slanjem imena datoteka od find-a kroz xargs prema naredbi rm -f : find /home/ -type f -name "*.mp3" -print xargs rm -f Pogledajmo i što nam sve find pronalazi i što xargs proslijeđuje (šaljemo sve pronađeo na ispis na ekran [echo]): find /home/ -type f -name "*.mp3" -print xargs echo /home/ucenik/1.mp3 /home/ucenik/3.mp3 /home/ucenik/2.mp3 1.1 U slučaju da smo imali neku datoteku koja ima razmak (space) u imenu, find ih ne bi pronašao niti bi ih xargs proslijedio na brisanje. Riješimo ovaj problem u find-u (dodajemo -print0 što znaći da Printed on 2015/01/29 11:54

109 2015/01/29 11:54 109/232 se ispisuju i one datoteke koje imaju razmak u imenu) te isto recimo i xargs-u (-0): Pogledajmo listu.mp3 datoteka: ls -al *.mp3 -rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r root root root root root root root root root root Jul Jul Jul Jul Jul :42 18:42 18:42 18:42 18:29 0.mp3 1.mp3 2.mp3 3 0.mp3 3.mp3 Vidimo da postoji jedna datoteka koja se zove 3 0.mp3 - dakle ima razmak u imenu. find /home/ -type f -name "*.mp3" -print0 xargs -0 rm -f 2. Ispišimo niz brojeva, potom ih podjelimo, pomoću xargs, tako da ih bude maksimalno 2 u jednom redu: echo xargs sada iskoristimo mogućnost ograničavanja maksimalnog broja elemenata u svakom redu (prekidač -n), ograničimo ispis na 2 elementa: echo xargs -n Izvršavanje naredbi u zadano vrijeme U svakom UNIX/Linux sustavu moguće je sutomatizirati pokretanje naredbi ili skripti u određeno vrijeme. Nekada je potrebno pokretati određene naredb ili skripte periodički, a nekada postoji potreba samo jednom (jednokratno) pokrenuti nešto. Oba scenarija su pokrivena sa dvije naredbe tj. servisa/daemona: crontab - za periodičko repetitivno pokretanje : pr. želimo pokretati nek skripte svaki dan u ponoć (antivirus scan, disk check, ntp dohvaćanje točnog vremena i sl.) at - za jednokratno pokretanje: pr. želimo samo danas u 20:00.h. pokrenuti neku skriptu koja će nam pokrenuti neki posao čije izvršavanje će trajati cijelu noć i sl. Open Source Osijek -

110 wiki:knjige:uvod_u_linux Crontab Crontab se koristi za automatsko pokretanje programa u točno određeno vrijeme Svaki korisnik može imati svoje crontab unose Format crontab unosa je opisan na slici: Dakle svaki red u crontab-u je novi unos, koji mora biti strukturiran kako je opisano na slici. Na slici je konkretan primjer pokretanja naredbe ntpdate, koja se spaja na ntp server ( ) i povlači točno vrijeme, svaki dan u ponoć (00:00). Opcije naredbe crontab su: e - editiraj crontab datoteku l - (malo slovo L) ispiši sadržaj datoteke r - briše korisnikovu crontab datoteku Primjer Kreiraj novi crontab unos (da se pokreće svaki dan u 00:00.h.), koji će pokretati naredbu koja će ispisati zauzeće diskovnih particija: df -h crontab -e 0 0 * * * df -h Printed on 2015/01/29 11:54

111 2015/01/29 11:54 111/232 at naredba Koristi se za automatsko jednokratno pokretanje programa ili skripti u točno određeno vrijeme. Ako izlaz naredbe at nije preusmjeren u datoteku generirati će se koji sadrži stdout (standardnu poruku programa) i stderr (standardnu poruku o grešci - ako je ima). Primjeri Kreirajmo datoteku at.datoteka u 10:18.h. (CTRL d je izlaz) at 10:18 touch at.datoteka CTRL d Neka at pokrene samo skriptu (-f) at.skripta.sh u 10:19.h. i još pošalje (-m) at 10:19 -m -f at.skripta.sh Osim navođenja točnog vremena, moguće je navoditi i relativno vrijeme, pr. da se određeni at zadatak pokreće za nekoliko, minuta, sati ili dana od sada. Primjer (2 minute od sada, 2 sata od sada ili 2 dana od sada): at now + 2 min... at now + 2 hour... at now + 2 day Provjerimo koje sve at zadatke imamo aktivne: atq 3 Tue Jan 7 10:519: a root U prvom stupcu je vidljiv broj posla [job number] (3 u našem primjeru), potom datum kada se treba izvršiti i pod kojim korisničkim imenom (root u našem slučaju). Ako zbog nekog slučaja želimo maknuti tj. obrisati određeni at zadatak (job) za to se koristi naredba atrm nakon kojeg je potrebno navesti job number (u primjeru ćemo obrisati naš prethodni at posao br. 3): atrm 3 Open Source Osijek -

112 wiki:knjige:uvod_u_linux Administracija Linux sustava Za administraciju Linux sustava, potrebno je biti root korisnik (administrator) : root korisnik ima User ID 0 (UID) Drugi korisnici mogu dobiti root ovlasti (ako znaju root lozinku), upotrebom naredbe su (Substitute User) Rad s korisničkima računima, grupama i lozinkama Pošto je Unix/Linux svijet višekorisnički, posebnu pažnju treba posvetiti korisničkim računima te korisničkim grupama na samom sustavu. Dakle u svakom trenutku, moguće je da više korisnika koristi sustav u isto vrijeme. U primjerima oko ovlasti (permissions) vidljiva je veza između korisničkih računa i korisničkih grupa. U ovom poglavlju krenuti ćemo s administracijske strane. Svaki korisnik uz samo korisničko ime na nivou sustav identificira se jedinstvenim korisničkim brojem UID (User ID), isto vrijedi i za svaku korisničku grupu, koja ima jedinstveni grupni identifikacijski broj odnosno GID (Group ID). U UNIX/Linux svijestu root korisnik ID:0 je ekvivalent Administratoru, on također pripada grupi root, koja isto ima GID:0. Primjer Postani root korisnik i preuzmi njegovo okruženje (environment) [ - prekidač ] su - root Svaki korisnički račun (account) je upisan u /etc/passwd, njegova kriptirana lozinka je zapisana u /etc/shadow a sve grupe korisnika koje postoje na sustavu, zajedno s pripadnostima korisnik/grupa se nalaze u /etc/groupšto se nalazi u kojoj od navedenih sistemskih datoteka (malo detaljnije): /etc/passwd - sadrži ime accounta, osobne podatke (ime, prezime, ) i shell koji će biti pokrenut kod logiranja, /etc/shadow - sadrži kriptirane lozinke za svaki korisnički račun (account) /etc/group - ovdje su definirane sve korisničke grupe i pripadnosti grupama /etc/passwd /etc/passwd datoteka sadrži bitne informacije, koje su potrebne za logiranje svakog korisnika na sustav. Kod logiranja na sustav, prvo se provjerava da li određeni korisnik postoji (prvi stupac u datoteci je upravo username [ime korisničkog accounta]). Drugi stupac (x) označava da se kriptirani password nalazi u datoteci /etc/shadow, koja će biti kasnije objašnjena. Osim toga važno je znati da svaki korisnik može pripadati samo jednoj primarnoj grupi (pogledajte GID [Group ID] stupac na slici dolje) i Printed on 2015/01/29 11:54

113 2015/01/29 11:54 113/232 u više sekundarnih grupa korisnika koje su opisane u poglavlju o /etc/group datoteci. Izgled /etc/passwd datoteke je opisan na slici: /etc/shadow /etc/shadow datoteka sadrži kriptiranu lozinku za svaki korisnički račun (account). Nakon prvog koraka (objašnjenog u poglavlju prije), kod logiranja korisnika na sustav i provjere da li korisnik postoji, ako postoji, sustav će vas zatražiti da upišete lozinku. Lozinka se tada kriptira i uspoređuje se s već kriptiranom u datoteci /etc/shadow, za točno određenog korisnika. Ako se poklapaju omogućen je pristup sustavu. Izgled /etc/shadow datoteke je opisan na slici: Open Source Osijek -

114 wiki:knjige:uvod_u_linux Napredno Pogledajmo samo dio kriptirane lozinke Kriptirani password dio sa slike, ali uvećan: Što je opće password hash? To je matematička metoda/algoritam pomoću koje se na osnovi niza ulaznih znakova (pr. naš password) stvara (kreira) jedinstveni nîz znakova fiksne duljine. Ovo je jednosmjeran put nije moguće na onovi hash nîza dobiti izvorni password. Dakle password hash se praktično pohranjuje u /etc/shadow Hash/Checksum Printed on 2015/01/29 11:54

115 2015/01/29 11:54 115/232 Vjerojatno ste nekada kopirali ISO image (CD ili DVD) te ste uz njega primjetili pr. MD5 sum od tog ISO image-a, koji se napravljen stoga da nakon što se skinuli (download) taj ISO file, možete i na svom računalu napraviti MD5 sum i usporediti vrijednost koju ste dobili sami sa onom koji se nalazi na stranici s koje ste kopirali ISO image. Primjer je lista MD5 checksum-a za CentOS Linux: 83221db52687c7b857e65bfe b86ca338360bc1212f06ea1719f 8c37390fa5d932d03feb05fba13fe92e 7b571e13ce6c3f61dc176bd34f8d60bb 0d9dc37b5dd4befa1c440d2174e88a87 939fd1d87c11ffe b85adfb CentOS-6.5-x86_64-bin-DVD1.iso CentOS-6.5-x86_64-bin-DVD2.iso CentOS-6.5-x86_64-LiveCD.iso CentOS-6.5-x86_64-LiveDVD.iso CentOS-6.5-x86_64-minimal.iso CentOS-6.5-x86_64-netinstall.iso Kako MD5 checksum [hash]) napraviti na Linux-u, na datoteci : CentOS-6.5-x86_64-bin-DVD1.iso (CentOS instalacijski DVD image) : md5sum CentOS-6.5-x86_64-bin-DVD1.iso 83221db52687c7b857e65bfe CentOS-6.5-x86_64-bin-DVD1.iso Dakle ovdje vidimo da smo dobili identičan MD5 checksum što znaći da se DVD ISO datoteka ispravno kopirala s interneta. Osim MD5, postoje i drugi hash algoritmi: Brojčana oznaka u Linuxu Hashing algoritam 1 MD5 2 Blowfish 5 SHA SHA-512 Vratimo se na sliku Kako izgleda kriptirani password. U Linux-u, lozinka (password) se kreira kombiniranjem salt-a i željenog password-a, pomoću odabranog algoritma. Primjer 1. Kako provjeriti koji hash-ing algoritam naš Linux sustav koristi, iz komandne linije: authconfig --test grep hash Rezultat našeg upita je : password hashing algorithm is sha512 U našem slučaju koristi se hashing algoritam 6 : tj SHA-512, pa ćemo u primjeru koji slijedi, koristiti isti algoritam. Open Source Osijek -

116 wiki:knjige:uvod_u_linux 2. Kako ručno kreirati password, korištenjem salt-a i željenog algoritma?. Koristiti ćemo programski jezik python, iz komandne linije: python -c 'import crypt; print crypt.crypt("ovo_je_password","$6$ovo_je_salt")' python skripta nam je kreirala slijedeću kriptiranu lozinku: $6$ovo_je_salt$fPiMsDoTHyyQ9R6qx3cIICWKOCqD8dfBzMTrF8rnRMHsETgsU. Rezultat/ispis je funkcionalan dio passworda, koji smo na dvije slike prije označili kao dio pod nazivom Kriptirani password. Ovakav niz karaktera/znakova je potpuno funkcionalan za upotrebu u /etc/shadow datoteci, na pravom mjestu - opisanom i vidljivom na istoj slici, /etc/group /etc/group datoteka sadrži korisničke grupe i pripadnosti korisnika tim grupama. Primjerice grupa bin ima svoj identifikacijski broj 1 i njoj pripadaju korisnici bin i daemon Izgled /etc/group datoteke je opisan na slici: Osnovne naredbe za rad s korisničkim računima i grupama Printed on 2015/01/29 11:54

117 2015/01/29 11:54 117/232 Lista osnovnih naredbi za rad s korisničkim računima i korisničkim grupama: id ispiši tko je trenutni logirani korisnik, koji je njegov User ID (UID) i Group ID (GID) i kojim grupama pripada groups ispiši kojim korisničkim grupama pripada trenutni korisnik groupadd dodaj/kreiraj novu korisničku grupu groupdel obriši korisničku grupu groupmod modifikacije nad korisničkim grupama useradd dodavanje novog korisnika userdel brisanje postojećeg korisnika usermod modifikacije nad korisničkim računom Primjeri 1. Ispiši tko je trenutni korisnik [naredba id]. id uid=0(root) gid=0(root) groups=0(root) Opis : uid 0, znači da je korisnički ID jednak 0 ( 0 je root korisnik [Administrator po Windows terminologiji]), te da je primarna grupa ovog korisnika (ime grupe je root ), te da još pripada u sekundane grupe ( root ). 2. Ispiši kojim sve grupama pripada trenutni korisnik root (naredba groups) groups root 3. Kreiraj nove grupe korisnici, korisnici2 i novi za koje želimo da imaju GID (Group ID) [-g], br : 1001 i 1002 te 1003 (naredba groupadd) groupadd -g 1001 korisnici groupadd -g 1002 korisnici2 groupadd -g 1003 novi 4. Želimo promijeniti GID (Group ID) grupe br.: 1003 (grupa: novi) u Ovo se radi naredbom groupmod groupmod -g 2003 novi Open Source Osijek -

118 wiki:knjige:uvod_u_linux 5. Odlučili smo grupu novi preimenovati u novikorisnici groupmod -n novikorisnici novi 6. Ipak želimo obrisati grupu novikorisnici jer nam više ne treba groupdel novikorisnici 7.Kreiraj korisnika pero, koji će dobiti UID (User ID) 100,pripadati će primarnoj grupi koja ima GID (Group ID) 1001, home direktorij će mu biti /home/pero te će mu startni shell biti bash U ovom primjeru home direktorij će biti automatski kreiran od strane operativnog sustava. useradd pero -u 100 -g d /home/pero -s /bin/bash 8.Dodajmo istog korisnika ( pero ) i u dodatnu grupu (-a) korisnici2 ali ne mijenjati primarnu grupu] (- G) : usermod -a -G korisnici2 pero 9.Promijeni pripadnost primarnoj grupi korisnici2 (-g) za korisnika pero usermod -g korisnici2 pero 10. Više nam ne treba korisnik pero, obrišimo ga, kao i njegov home direktorij i sve datoteke u njemu (-r), čak iako je već logiran (-f) userdel -f -r pero Runlevels Runlevel-i su modovi ili stanja rada svakog UNIX/Linux operativnog sustava. Kod podizanja operativnog sustava, sustav se podiže u određeni runlevel ovisno o potrebama: Za poslužitelje (servere) se primjerice često podiže runlevel 3 koji nam omogućava višekorisnički rad s podignutom mrežom i svim mrežnim servisima (daemon-ima) te svim ostalim funkcionalnostima, S druge strane za desktop računala se obično podiže runlevel 5, koji ima sve mogućnosti kao runlevel 3 ali ima i grafičko sučelje koje se u UNIX/Linux sustavima zove: X Window System. Osim toga za posebne namjene se koriste i ostali runleveli: runlevel 1 : koristi se za održavanja, kada ne želimo da se itko može spojiti na sustav preko mreže, već samo lokalni administrator (root korisnik), - koristi se za potrebe popravljanja većih grešaka ba sustavu, tvrdom disku i sl. runlevel 0 : koristi se za gašenje sustava, ovaj runlevel se brine o tome da se svi programi i servisi uredno ugase runlevel 6 : koristi se za restartanje sustava, sistem rada je sličan kao runlevel 0. Popis i malo više detalja o runlevelima pogledajmo u tablici: Printed on 2015/01/29 11:54

119 2015/01/29 11:54 119/232 Kod svakog startanja operativnog sustava, nakon što se učita Linux kernel, pokreće se prvi proces tj. init program, on čita datoteku /etc/inittab u kojoj su definirani runleveli. init proces osim toga pokreće i sve ostale procese na sustavu a sam se pokreće kao servis ( daemon ). On na osnovi runlevel broja pokreće skripte koje se nalaze u direktorijima unutar glavnog direktorija /etc/rc.d. Osnovna struktura direktorija unutar /etc/rc.d je : drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x root root root root root root root root root root root root root root 4.0K 4.0K 4.0K 4.0K 4.0K 4.0K 4.0K Nov Nov Nov Nov Nov Nov Nov :05 15:05 15:05 15:05 15:05 15:05 15:05 rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d Pri tome: rc0.d je init 0 rc1.d je init 1 itd. Pogledajmo sadržaj direktorija za runlevel 3 ( /etc/rc.d/rc3.d ) : lrwxrwxrwx 1 root root../init.d/htcacheclean lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root 22 Nov 11 15:04 K15htcacheclean -> Jul Jul Jul Nov Nov Jul Nov :06 16:06 16:06 15:05 15:05 16:06 15:05 Open Source Osijek - K35nmb ->../init.d/nmb K35smb ->../init.d/smb K50netconsole ->../init.d/netconsole K50snmpd ->../init.d/snmpd K50snmptrapd ->../init.d/snmptrapd K73winbind ->../init.d/winbind K74nscd ->../init.d/nscd

120 lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root../init.d/restorecond lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root../init.d/portreserve lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root../init.d/modules_dep lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root lrwxrwxrwx 1 root root wiki:knjige:uvod_u_linux Nov Jul Nov Nov Jul :04 16:06 15:04 15:05 16:06 K75netfs ->../init.d/netfs K75quota_nld ->../init.d/quota_nld K75udev-post ->../init.d/udev-post K87named ->../init.d/named K87restorecond -> 17 Jul 24 16:06 K87rpcbind ->../init.d/rpcbind 21 Jul 24 16:06 K89portreserve -> 15 Nov 11 15:04 K89rdisc ->../init.d/rdisc 18 Jul 24 16:06 S08iptables ->../init.d/iptables 21 Jul 24 16:06 S08modules_dep -> Nov Nov Jul Jul Jul Jul Nov Jul Nov :04 15:05 16:06 16:06 16:06 16:06 15:04 16:06 15:04 S10network ->../init.d/network S12rsyslog ->../init.d/rsyslog S55sshd ->../init.d/sshd S56xinetd ->../init.d/xinetd S65saslauthd ->../init.d/saslauthd S80sendmail ->../init.d/sendmail S85httpd ->../init.d/httpd S90crond ->../init.d/crond S99local ->../rc.local Vidimo da su sve S* i K* datoteke zapravo simbolički linkovi na datoteke koje se nalaze unutar direktorija /etc/rc.d/init.d. To je tako zbog toga što sve servise (daemone) tj. njihove skripte kreiramo samo na jednom mjestu ( /etc/rc.d/init.d ) a onda u svakom runelevel direktoriju ( /etc/rc.d/rc*.d ) trebamo samo kreirati simbolički link koji ako mu ime počinje s K, će biti pokrenut s opcijom stop, a ako mu ime počinje sa S, biti će pokrenut sa start Ono što je važno kod izvornih skripti koje se nalaze unutar direktorija /etc/rc.d/init.d je to da moraju imati minimalno implementirane tri opcije ( stop, start, restart ). Osim toga, u slučaju RedHat baziranik Linux-a [pr. CentOS] ako skripta sadrži ključnu riječ # chkconfig, parametri iza nje će se koristiti za automatsko kreiranje /etc/rc.d/rc*.d simboličkih linkova. Kako to radi (sistemski dio) Važno je znati je da je PID od init procesa 1, pošto je on prvi proces koji starta sve ostale procese i brine se o njima. Standardno se podiže runlevel 3, kod Linux-a koji ne startaju grafičko sučelje (X Window) a za one koji ga startaju, se podiže runlevel 5. Dakle ako je standardni (default) runlevel 3, dešava se slijedeće: 1. Nakon startanja kernela init ulazi u direktorij /etc/rc.d/rc3.d/ 2. Iz tog direktorija pokreću se sve skripte koje u imenu počinju sa K i to prema broju. Dakle prvo s najmanjim brojem pr. K1.., K2., pa K3.. i tako do najvećeg broja i to tako da se svaka od njih poziva sa opcijom stop. Dakle K1 stop, pr.: K15htcacheclean stop i to tako za sve njih koliko god ih ima. Printed on 2015/01/29 11:54

121 2015/01/29 11:54 121/232 Dakle prvo se stopiraju svi servisi. 3. Nakon toga se startaju one skripte sa S u imenu (ovdje se zapravo startaju servisi), ponovno s najmanjim brojem pr. S1.., S2., pa S3.. i tako do najvećeg broja i to tako da se svaka od njih poziva sa opcijom start. Dakle S1 start, pr.: S10network start i to tako za sve njih koliko god ih ima. Zbog čega brojevi kod imena S i K skripti? Zbog toga da točno možemo kontrolirati koja će se prije ili poslije koje skripte pokrenuti. Jedina mala razlika su runleveli 0 (halt/shutdown) i 6 (reboot). Dakle /etc/rc.d/rc0.d/ i /etc/rc.d/rc6.d/ sastoje se 99% od datoteka imena K*, pošto oni, kod gašenja ili restarta računala moraju uredno stopirati tj.poubijati (odatle Kill) sve servise. Obično su samo dvije S* datoteke. Prva je koja nakon što je sve uredno stopirano preko K* poubija sve što je možda zaostalo. Druga je ona koja u slučaju init 0 gasi računalo a u slučaju init 6 (restart) restarta računalo. Napomena : U svakom trenutku, moguće je promijeniti runlevel, naredbom init Primjeri. 1. Želimo li ugasiti računalo to možemo napraviti sa: init 0 2.Ako ga želimo restartati onda pokrećemo: init 6 3. Želimo nešto raditi/popraviti na sustavu i ne želimo dozvoliti pristup nikome preko mreže vež samo nama (root), koji smo fizički ispred računala/poslužitelja, tada možemo koristiti: init 1 Sistemski servisi/daemoni Sistemski servisi koji se u Unix/Linux svijetu nazivaju Daemoni su programi koji se pokreću u pozadini (background) i koji su zamišljeni da rade bez stalne kontrole i uplitanja korisnika. Dakle oni su zaduženi za pojedine funkcionalnosti sustava. Naime funkcionalnost cijelog Linux sustava je raspodjeljena u cijeli niz daemona, od kojih svaki odrađuje svoj zadatak.pr. jedna skripta podiže daemone koji startaju mrežne kartice i konfiguriraju ih, druga koja podiže jedan mrežni servis (pr. SSH Server), treća koji podiže drugi mrežni servis (pr. NFS mrežni datotečni sustav) itd. svaki za svoju namjenu. U praksi, daemone pozivaju shell skripte koje se inicijalno nalaze u direktoriju /etc/rc.d/init.d/ te koje sustav starta/stopira ili restarta prema pravilima koja smo već objasnili u prijašnjem poglavlju. Kako ih možemo ručno pokretati/stopirati i restartati te što moraju sadržavati, Open Source Osijek -

122 wiki:knjige:uvod_u_linux objasniti ćemo kroz primjere. Slijedi primjer izlistanja početka skripte koja starta SSH Server ( /etc/rc.d/init.d/sshd ) na kojoj ćemo opisati procese inicijalizacije. #!/bin/bash # # sshd Start up the OpenSSH server daemon # # chkconfig: # description: SSH is a protocol for secure remote shell access. \ # This service starts up the OpenSSH server daemon Dakle linija # chkconfig: znači slijedeće: prvi niz brojeva ( 2345 u ovom slučaju) znači u kojim runlevel-ima će se pokretati ova skripta drugi broj ( 55 u ovom primjeru) je prioritet kod startanja ( S* broj) treći broj ( 25 u ovom primjeru) je prioritet kod stopiranja ( K* broj) Naime u ovom slučaju sistem će kreirati simboličke linkove naziva S55sshd u runlevel direktorijima 2,3,4 i 5 ( /etc/rc.d/rc*.d )te K25sshd u preostalim runlevelima u kojima sistem mora gasiti ovaj servis, dakle : 0 (shutdown), 1 (singleuser, no network) i 6 (reboot) Osim gore navedenog svaka skripta koja poziva određene daemone mora imati minimalno implementirane tri opcije: stop, start, restart Kako to pojednostavljeno izgleda na primjeru SSH skripte (nastavak na početak /etc/rc.d/init.d/sshd skripte izlistane gore) # Some functions to make the below more readable KEYGEN=/usr/bin/ssh-keygen SSHD=/usr/sbin/sshd RSA1_KEY=/etc/ssh/ssh_host_key RSA_KEY=/etc/ssh/ssh_host_rsa_key DSA_KEY=/etc/ssh/ssh_host_dsa_key PID_FILE=/var/run/sshd.pid Printed on 2015/01/29 11:54

123 2015/01/29 11:54 123/232 start() { [ -x $SSHD ] exit 5 [ -f /etc/ssh/sshd_config ] exit 6 # Create keys if necessary if [ "x${autocreate_server_keys}"!= xno ]; then do_rsa1_keygen do_rsa_keygen do_dsa_keygen fi echo -n $"Starting $prog: " $SSHD $OPTIONS && success failure RETVAL=$? [ $RETVAL -eq 0 ] && touch $lockfile echo return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p $PID_FILE $SSHD RETVAL=$? # if we are in halt or reboot runlevel kill all running sessions # so the TCP connections are closed cleanly if [ "x$runlevel" = x0 -o "x$runlevel" = x6 ] ; then trap '' TERM killall $prog 2>/dev/null trap TERM fi [ $RETVAL -eq 0 ] && rm -f $lockfile echo } restart() { stop start } Vidimo da je unutar metoda start/stop/restart niz naredbi koje zapravo u slučaju pozivanja metode start startaju SSH daemon tj /usr/sbin/sshd sa određenim parametrima i argumentima odnosno metoda stop stopira isti daemon odnosno restart, prvo poziva metodu stop pa metodu start. Nadalje postoji i naredba (za Linuxe bazirane na Redhatu), s kojom možemo vidjeti u kojim runlevelima se koji servis (daemon tj. skripta koja ga starta/stopira) podiže ili ne podiže. Naredba je chkconfig. Možemo ju samo pozvati bez opcija i prekidača ili s njima. Mi ćemo probati ispisati sve runlevele za skriptu (daemon) koju smo maloprije gledali (sshd): Open Source Osijek -

124 wiki:knjige:uvod_u_linux chkconfig --list sshd sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off Ovdje vidimo ono o čemu smo pričali gore (pogledajte 2,3,4 i 5). S naredbom chkconfig moguće je i naknadno mijenjati runlevele skripti (servisa/daemona) koji su već na sustavu ili dodavati nove (ili brisati postojeće). Primjeri 1.Želimo da se HTTP server (httpd) starta sa sustavom automatski (dakle da bude u runlevelima 2,3,4,5) chkconfig httpd on Provjera: chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off 2. Želimo ipak da se HTTP server ne starta više automatski: chkconfig httpd off Provjera: chkconfig --list httpd httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 3. Kreirali smo svoju novu skriptu, naziva /etc/rc.d/init.d/moj-servis, koja sadrži start, stop i restart opcije te ju želimo dodati pomoći chkconfig naredbe,da se starta automatski sa sustavom. Prvo ju dodajmo u chkconfig90 chkconfig --add moj-servis Sada joj dodjelimo prava da se starta automatski u runlevelima 2,3,4,5 chkconfig moj-servis on Package Management Printed on 2015/01/29 11:54

125 2015/01/29 11:54 125/232 U radu i primjerima koji slijede, koristiti ćemo Red Hat package management (RPM), koji koriste i druge distribucije Linux-a, bazirane na Red Hat-u, poput: CentOS Linux SUSE Linux Open SUSE Linux Fedora Linux Oracle Linux Ekstenzija paketa je.rpm. RPM Package manager RPM Package manager nam omogućava: instalaciju paketa deinstalaciju paketa provjeru ispravnosti (checksum) paketa pretraživanje paketa update paketa Ekvivalent Linux paketa u Windows svijetu je instalacija nekog programa u formatu.msi ili.exe : Npr. Setup.exe ili Setup.msi Paketi se uglavnom nalaze na tkzv. javnim repository-jima poput EPEL repozitorija EPEL repozitorij za RedHat bazirane Linux-e, verzije 6.x, i to za 64.bitnu x86 platformu procesora, je dostupan na : Repozitorij je pripremljeni direktoriji na Web-u, koji sadrži softverske pakete (.rpm) i ostale specifične datoteke, s kojega možete skinuti (download) željene dostupne pakete. Podržani načini skidanja su preko HTTP ili FTP protokola. Svaki RPM paket može biti i kriptografski verificiran pomoću: GPG (GNU Privacy Guard) alternativa PGP i MD5 Vratimo se paketima i onome što se nalazi unutar svakog paketa: Header informacije o samom paketu: verzija, arhitektura, opis, listu datoteka, Payload arhiva samih datoteka obično u cpio formatu ( koja je komprimirana sa gzip-om, noviji formati podržavaju i druge kompresije) Signature (potpis) koji osigurava integritet paketa [GPG ili MD5] U trenutku kada radimo neku operaciju sa paketima, oodređene informacije o svakom paketu se snimaju/čitaju u/iz interne RPM baze podataka (na samom računalu). Interna RPM baza podataka sadrži listu instaliranih paketa na sustavu. Bazu možemo pretraživati po raznim kriterijima te možemo Open Source Osijek -

126 wiki:knjige:uvod_u_linux provjeriti verzije instaliranih paketa. Primjeri Ispiši verziju paketa imena telnet : rpm -q telnet Izlistaj (-q) sve (-a) instalirane pakete: rpm -qa Upotreba wildcard-a ispiši sve instalirane pakete i pronađi samo onaj koji u imenu ima telnet* rpm -qa "telnet*" Pronađi koji paket je instalirao točno određenu datoteku (s apsloutnom putanjom) pr. datoteka ssh, koja se nalazi u /usr/bin/ssh: rpm -qf /usr/bin/ssh openssh-clients-5.3p el6.x86_64 Osnovni prekidači rpm naredbe su: -i IME : install instaliraj paket (IME može biti i URL [FTP ili HTTP]) -U IME : Upgrade nadogradi paket -e IME : Erase obriši/uninstaliraj paket -V IME : Verify provjeri paket, provjeravaju se : Owner, Group, Mode, MD5 checksum, Size, Major and Minor Version number, Symlink, Modification time Dodatni korisni prekidači : -h (hash marks -#) i -v (verbose) Korisni prekidaći za pretraživanje (malo slovo Q): -qi IME: ispiši opis paketa (ovdje je i ime grupe kojoj pripada) -qg IME : ispiši listu paketa koji pripadaju određenoj grupi Pr.: rpm -qg System Environment/Daemons -ql IME : ispiši listu datoteka unutar paketa Pr.: rpm -ql openssh-clients Printed on 2015/01/29 11:54

127 2015/01/29 11:54 127/232 -qc IME : ispiši konfiguracijske datoteke određenog paketa -qs IME : ispiši stanje datoteka unutar paketa, poruke mogu biti slijedeće: normal Datoteka je instalirana, not installed datoteka iz paketa nije instalirana replaced datoteka je zamijenjena I na kraju o nedostacima rpm paketa i samog managera paketa: Ne može riješiti ovisnosti o nekom drugom paketu (dependencies) Jedino što RPM može napraviti po pitanju ovisnosti o nekom drugom paketu je da prije instalacije provjeri da li je taj paket instaliran i upozori vas da vam nedostaju određeni paketi, ali on ih za vas neće moći instalirati. To morate sami (moguće je [i dosta često] da neki paket koji nedostaje ovisi o nekom trećem ili četvrtom i tako dalje) YUM Package Management YUM (Yellow dog Update Modified) je nadogradnja na mogućnosti RPM package managera. Možemo reći da je on frontend za RPM package manager. YUM omogućava praćenje ovisnosti (dependencies) o drugim paketima i automatski ih riješava: On to riješava uvođenjem dodatka na RPM repository (Metadata), koji je zapravo dodatna baza podataka koja sadrži podatke o svakom paketu i svim međuovisnostima (dependency) između svih rpm paketa. Svaki puta kada pokrenete yum, on se spaja na sve repozitorije na internetu, koji su vam dodani u sustav. Nakon pokretanja yum povlači sve YUM baze podataka s njih, na vaše računalo. Na taj način u svakom trenutku usporedbom instaliranih paketa i onih koji su u YUM bazi podataka, YUM zna da li se pojavila novija verzija nekog programa (uz osnovnu funkcionalnost da su mu poznate međuovisnosti paketa [dependencies]). Kako se instaliraju paketi pomoću YUM-a? Procedura je slijedeća: 1. Dodajete novi repository (ako nije dodan, a baš na njemu se nalazi paket koji trebate), ako već je dodan, onda preskačete ovaj korak, 2. Kod (svakog) pokretanja YUM-a, sinkroniziraju se meta podaci (Metadata) sa Web repozitorija na lokalno računalo, 3. YUM kopira RPM pakete te provjerava ovisnosti (dependencies), ako postoje,prvo se kopiraju i instaliraju svi paketi koji su prethodno potrebni, a tek onda oni koji slijede. Open Source Osijek -

128 wiki:knjige:uvod_u_linux Koji su osnovni prekidači YUM-a? Osnovni prekidači (najčešće korišteni), su : yum yum yum yum yum yum yum update : napravi update svih paketa (full system update) install IME : Instaliraj novi paket imena (IME) erase IME : Uninstaliraj paket imena (IME) search IME : pretraži sve pakete u potrazi za ključnom riječi (IME) list installed : Ispiši popis svih instaliranih paketa grouplist : Ispiši popis svih instaliranih grupa paketa groupinstall IME : Instaliraj grupu paketa, npr: yum groupinstall "Development Tools" yum groupremove IME : Uninstaliraj grupu paketa, npr yum groupremove "Development Tools" Primjeri Dodavanje novog repozitorija, poluautomatski (pr. EPEL za 64). Dakle otišli smo na EPEL repozitorij: te želimo instalirali automatski taj repozitorij (tu se nalazi paket epel-.rpm). Metoda 1. Korištenjem naredbe wget koja će napraviti download RPM (package) datoteke koju ćemo instalirati, pomoću RPM paket manager programa rpm u drugom koraku (drugi red) wget noarch.rpm rpm -ivh epel-release-6-8.noarch.rpm Metoda 2. Korištenjem RPM paket managera, koji podržava HTTP i FTP download direktno, uz instaliranje istog paketa u jednom koraku : rpm -ivh noarch.rpm Provjerimo da li je novi repozitorij dodan (treba se pojaviti epel): yum repolist Naš ispis slijedi: Printed on 2015/01/29 11:54

129 2015/01/29 11:54 129/232 Loaded plugins: downloadonly, fastestmirror Loading mirror speeds from cached hostfile epel/metalink * base: mirrors.paknet.org * epel: ftp.upjs.sk * extras: mirrors.paknet.org * rpmforge: mirror.de.leaseweb.net * updates: mirrors.paknet.org Internet2 base epel epel/primary_db extras rpmforge Vidimo da je epel izlistan te da je napravljen download s njega, dakle to je u redu. U slučaju da epel (ili neki drugi) repozitorij nije uredno dodan u listu aktivnih repozitorija, možemo ga ručno uključiti yum --enablerepo=epel Instalirajmo Midnight Commander (Norton Commander klon za Linux), ime paketa je mc yum install mc Uninstalirajmo Midnight Commander (Norton Commander klon za Linux), ime paketa je mc yum erase mc Arhiviranje i komprimiranje/dekomprimiranje podataka Za arhiviranje i čitanje arhiviranih datoteka koristi se naredba tar Nastala je zbog potrebe za arhiviranjem podataka na tračne medije, za pohranu podataka (backup). Naziv je došao od Tape ARchive (tračna arhiva). Arhiviranje, komprimiranje i dekomprimiranje Za potrebe arhiviranja podataka ili komprimiranje i dekomprimiranje, najčešće se koristi naredba tar. Razlikujmo arhiviranje od komprimiranja (ili dekomprimiranja) jer arhiviranje uključuje i više od toga. tar osim samih datoteka i/ili direktorija može spremati i sve ovlasti (permissions) datoteka i direktorija. Ovo je vrlo bitno jer u slučaju da smo arhivirali (napravili backup) podatke i kasnije ih želimo Open Source Osijek -

130 wiki:knjige:uvod_u_linux dearhivirati tj. vratiti nazad na izvorno mjesto, želimo da nam budu sačuvane i sve ovlasti (od vlasnika, grupe i ostalih, do rwx modova za svakoga od njih). Neki od prekidača naredbe tar su : c create (kreiraj) v - verbose (detaljniji ispis) t izlistaj sadržaj f slijedeći argument je naziv datoteke z dodatno komprimiraj (gzip format) j dodatno komprimiraj (bzip2 format) p sačuvaj sve ovlasti (preserve permissions ovo je standardno ako ste root) Primjeri Kreiraj tar arhivu od trenutnog direktorija (. ), naziva arhiva.tar tar cvf arhiva.tar. Kreiraj tar arhivu od trenutnog direktorija (. ), direktno na traku (/dev/st0) tar cvf /dev/st0. Kreiraj komprimiranu tar arhivu od trenutnog direktorija (. ), naziva arhiva.tgz tar cvzf arhiva.tgz. Ispiši samo sadržaj datoteke arhiva.tgz tar tvf arhiva.tgz Odkomprimiraj i dearhiviraj arhivu: arhiva.tgz tar xvzf arhiva.tgz Komprimiranje i dekomprimiranje U slučajevima kada nam je potrebno samo komprimiranje ili dekomprimiranje datoteka (i direktorija), zbog potreba arhiviranja, kopiranja s medija na medij (pr. tvrdi disk USB stick) ili preko mreže, možemo koristiti neke od često korištenih programa. gzip i gunzip : komprimiranje (gzip) i dekomprimiranje (gunzip) zip i unzip : Komprimiranje (zip) i dekomprimiranje (unzip) bzip2 i bunzip2 :Komprimiranje (bzip2) i dekomprimiranje (bunzip2) Printed on 2015/01/29 11:54

131 2015/01/29 11:54 131/232 gzip gzip je program odnosno format datoteka (.gz ili.gzip) koji je nastavo kao zamjena za komercijalni UNIX alat/naredbu compress, u sklopu GNU projekta, početkom 1992.g. On je baziran na DEFLATE algoritmu koji je kombinacija LZ77 i Huffman coding algoritama zbog činjenice da su u to vrijeme LZW i drugi algoritmi za kompresiju bili zaštićeni patentima. Jednu varijantu LZ77 algoritma za komprimiranje/dekomprimiranje koristi i ALDC (Adaptive Lossless Data Compression) algoritam koji koriste tračni uređaji (Poglavlje : Rad s tračnim uređajima LZ4 format komprimiranja/dekomprimiranja podataka u radu (on the fly), koji je baziran na LZ77, koristi i ZFS datotečni sustav (uz gzip :DEFLATE, LZJB i druge), što govori o njegovoj brzini rada. Svaka gzip datoteka osim samih komprimiranih podataka sadrži i CRC-32 Checksum, tako da se integritet podataka može provjeriti u bilo kojem trenutku. Česti prekidaći naredbe gzip: -d : dekomprimiraj (isto kao i pozivanje naredbe gunzip) -c : izlaz je na standard output (stdout) tako da će izvorne datoteke biti sačuvane -l : pogledajmo koliki je omjer komprimiranja postignut da gzip datoteci -r : rekurzivno komprimiranje svih datoteke unutar svih poddirektorija -t : testirajmo komprimiranu arhivu -1-9 : faktor/brzina komprimiranja : -1 najbrže (i najlošije ), -9 najsporije (i najbolje ) Primjeri Prvo izlistajmo daoteke i direktorije ls -alh total 164K drwxr-xr-x drwxr-xr-x drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r root root root root root root root root root root root root 4.0K 4.0K 4.0K 33K 112K 2.7K Aug Aug Aug Aug Aug Aug :27 11:18 11:27 11:22 11:22 11:20... podaci text1.txt text2.txt text.txt 1. Komprimirajmo datoteke : text.txt, text1.txt i text2.txt : Open Source Osijek -

132 wiki:knjige:uvod_u_linux gzip text.txt text1.txt text2.txt Svaka datoteka će biti komprimirana a izvorne (nekomprimirane neće biti zadržane). Pogledajmo što smo dobili: ls -alh total 24K drwxr-xr-x drwxr-xr-x drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r root root root root root root root 4.0K Aug root 4.0K Aug root 4.0K Aug root 157 Aug root 391 Aug root 66 Aug :30 11:18 11:27 11:22 11:22 11:20... podaci text1.txt.gz text2.txt.gz text.txt.gz 2. Odkomprimirajmo priješnje komprimirane datoteke: gzip -d text.txt.gz text1.txt.gz text2.txt.gz Mogli smo koristiti i naredbe: gunzip text.txt.gz text1.txt.gz text2.txt.gz ili koristiti regularne izraze s obije naredbe, pr.: gunzip *.txt.gz 3. Komprimirajmo sada datoteku : text2.txt ali tako da zadržimo (-c) i izvornu nekomprimiranu datoteku. Pošto će sve ići na standard output, moramo to sve i redirektati u izvorišnu gz ili gzip datoteku: gzip -c text2.txt> text2.txt.gz Pogledajmo sadržaj direktorija: ls -alh total 168K drwxr-xr-x drwxr-xr-x drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r--rw-r--r root root root root root root root root root root root root root root 4.0K 4.0K 4.0K 33K 112K K Aug Aug Aug Aug Aug Aug Aug :41 11:18 11:27 11:22 11:22 11:41 11:20... podaci text1.txt text2.txt text2.txt.gz text.txt Vidljivo je da je i izvorna datoteka ostala netaknuta te da je kreirana nova koju smo komprimirali (text2.txt.gz) Printed on 2015/01/29 11:54

133 2015/01/29 11:54 133/ Pogledajmo kolika (-l) kompresija je postignuta na našoj datoteci: gzip -l text2.txt.gz compressed 391 uncompressed ratio uncompressed_name 99.7% text2.txt Postignuta je vrlo velika kompresija od 99.7% jer se radi o tekstualnoj datoteci koja sadrži samo nizove brojeva koji se ponavljaju 5. Komprimirajmo sve datoteke u direktoriju podaci : Prvo pogledajmo sadržaj direktorija podaci: ls -al podaci/ total 160 drwxr-xr-x drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r root root root root root root 4096 Aug root 4096 Aug root Aug root Aug root 2688 Aug :01 11:59 11:27 11:27 11:27... text3.txt text4.txt text5.txt Sada sve to komprimirajmo rekurzivno (-r) - dakle sve datoteke unutar svih poddirektorija (ako postoje) unutar direktorija podaci: gzip -r podaci Izlistajmo sada taj direktorij ponovno: ls -al podaci/ total 20 drwxr-xr-x drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r root root root root root root 4096 Aug root 4096 Aug root 157 Aug root 391 Aug root 67 Aug :03 11:59 11:27 11:27 11:27... text3.txt.gz text4.txt.gz text5.txt.gz Vidljivo je da su sve datoteke komprimirane i da izvorne nekomprimirane nisu zadržane! gzip može komprimirati samo datoteke a ne i direktorije s datotekama! Za tu namjenu koristimo naredbu tar sa ugrađenom gzip metodom komprimiranja ili druge programe za komprimiranje/dekomprimiranje. Open Source Osijek -

134 wiki:knjige:uvod_u_linux zcat Naredba zcat poziva funkcionalnosti naredbe gzip a funkcionalno se ponaša kao naredba cat.dakle zcat u letu odkomprimira sadržaj komprimirane datoteke te se nakon toga ponaša kao cat. To možemo promatrati i kao pozivanje naredbe gzip -c - koji sve šalje na standardni izlaz (stdout) te pozivanje naredbe cat nakon toga. Primjeri 1.Izlistajmo komprimiranu datoteku text2.txt.gz koja u našem slučaju sadrži niz brojeva zcat text2.txt.gz Ponovimo prijašnju naredbu s time da želimo pomoću grep naredbe pronaći samo red koji sadrži : 2211 zcat text2.txt.gz grep zip Za razliku od gzip-a, zip arhive mogu komprimirati/dekomprimirati i direktorije i datoteke. ZIP format je analogan kombinaciji naredbe tar i gzip. ZIP format poput gzip formata koristi DEFLATE algoritam za komprimiranje i dekomprimiranje. Unutar zip arhive, moguće je pohraniti cijelu strukturu direktorija i datoteka, uz sve njihove ovlasti. Česti prekidaći naredbe zip su: -r : rekurzivno koprimiranje direktorija i svih poddirektorija sa svim datotekama -T : testiranje ispravnosti arhive -x : ne ubacuj (Exclude) određene datoteke u arhivu Printed on 2015/01/29 11:54

135 2015/01/29 11:54 135/232-1, -9 : faktor/brzina komprimiranja : -1 najbrže (i najlošije ), -9 najsporije (i najbolje ) Česti prekidaći naredbe unzip su : -t : testiranje arhive -o : kod dekomprimiranja, pregazi postojeće datoteke bez pitanja -p : šalji sadržaj odkomprimirane zip arhive u Linux Pipe Primjeri 1. Komprimirajmo datoteke : text.txt, text1.txt i text2.txt te ih sve ubacimo u ZIP arhivu : arhiva.zip : zip arhiva.zip text.txt text1.txt text2.txt 2.Komprimirajmo samo datoteku text1.txt u zip arhivu imena arhiva1.zip zip arhiva1.zip text1.txt adding: text1.txt (deflated 100%) 3.Testirajmo (-T) arhivu : arhiva.zip : zip -T arhiva.zip test of arhiva.zip OK 4. ISpišimo sadržaj zip arhive arhiva.zip: unzip -l arhiva.zip Archive: arhiva.zip Length Date Time :20 11:22 16:38 Name ---text.txt text1.txt text2.txt files 5. Dekomprimirajmo sve datoteke iz zip arhive arhiva.zip, s time da pregazimo postojeće datoteke (ako ih ima) : unzip -o arhiva.zip Archive: arhiva.zip inflating: text.txt inflating: text1.txt inflating: text2.txt Open Source Osijek -

136 wiki:knjige:uvod_u_linux 6. Dekomprimirajmo zip arhivu : arhiva1.zip (koja sadrži samo jednu tekstualnu datoteku) te ju pošaljimo ( Pipe ) na naredbu more (pomoću prekidaća -p) unzip -p arhiva1.zip more Komprimirajmo cijeli direktorij : podaci i sve njegove poddirektorije i datoteke rekurzivno, u datoteku podaci.zip. zip -r podaci.zip podaci adding: adding: adding: adding: podaci/ (stored 0%) podaci/text4.txt (deflated 100%) podaci/text3.txt (deflated 100%) podaci/text5.txt (deflated 99%) bzip2 bzip2 je program za komprimiranje i dekomprimiranje, poput gzip-a. Dakle za rad s datotekama a ne s direktorijima. Izlazna komprimirana datoteka ima ekstenziju.bz2 Za razliku od gzip i zip programa on koristi algoritam za komprimiranje i dekomprimiranje koji postiže puno bolje rezultate ali proces komprimiranja traje nešto dulje. U biti proces se sastoji od nekoliko algoritama, prvi je : Burrows Wheeler transform algoitam, nakon kojeg se primjenjuje move-to-front transform tj. MTF Algoritam i na kraju Huffman coding algoritam. Ova metoda se zove i block-sorting metoda komprimiranja. Programe koji mogu komprimirati direktorije i datoteke (potencijalno i uz snimanje ovlasti svih datoteka i direktorija unutar arhive), zovemo File Archiver -i Česti prekidaći naredbe bzip2 : -d : dekomprimiraj (isto kao i pozivanje naredbe bunzip2) -c : izlaz je na standard output (stdout) tako da će izvorne datoteke biti sačuvane Printed on 2015/01/29 11:54

137 2015/01/29 11:54 137/232 -k : sačuvaj izvorne datoteke (inaće će biti obrisane nakon što se kreiraju komprimirane datoteke) -r : rekurzivno komprimiranje svih datoteke unutar svih poddirektorija -t : testirajmo komprimiranu arhivu -1-9 : faktor/brzina komprimiranja : -1 najbrže (i najlošije ), -9 najsporije (i najbolje ) Primjeri Pogledajmo naš direktorij: ls -alh total 164K drwxr-xr-x drwxr-xr-x drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r root root root root root root root root root root root root 4.0K 4.0K 4.0K 33K 112K 2.7K Aug Aug Aug Aug Aug Aug :47 11:58 14:10 11:22 16:38 11:20... podaci text1.txt text2.txt text.txt 1. Komprimirajmo naše datoteke : text.txt, text1.txt i text2.txt jednu po jednu : bzip2 text.txt text1.txt text2.txt Pogledajmo što se dogodilo : ls -alh total 24K drwxr-xr-x drwxr-xr-x drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r root root root root root root root 4.0K Aug root 4.0K Aug root 4.0K Aug root 78 Aug root 86 Aug root 69 Aug :49 11:58 14:10 11:22 16:38 11:20... podaci text1.txt.bz2 text2.txt.bz2 text.txt.bz2 Dakle izvorišne datoteke su prebrisane s novima - kao i kod gzip-a. Da bi to izbjegli trebali bi koristiti prekidać -k 2.Odkomprimirajmo ih sada sve zajedno: bunzip2 *.bz2 3. Probajmo sada komprimirati datoteku text2.txt u datoteku text2.txt.bz2 korištenjem izlaza na standardni izlaz (stdout) (-c) i redirekcije (>) u komprimiranu datoteku: bzip2 -c text2.txt> text2.txt.bz2 Sve ostale operacije i prekidaći su gotovo identični kombinaciji naredbi: gzip / gunzip.. Open Source Osijek -

138 wiki:knjige:uvod_u_linux bzcat Naredba bzcat poziva funkcionalnosti naredbe bunzip2a funkcionalno se ponaša kao naredba cat. Dakle bzcat u letu odkomprimira sadržaj komprimirane datoteke te se nakon toga ponaša kao cat. To možemo promatrati i kao pozivanje naredbe bzip2 -c koji sve šalje na standardni izlaz (stdout) te pozivanje naredbe cat nakon toga. Ovo ponašanje je identićno naredbi zcat. Primjeri 1. Ispišimo sadržaj datoteke komprimirane sa bzip2 : text2.txt.bz2 : bzcat text2.txt.gz Ponovimo prijašnju naredbu s time da želimo pomoću grep naredbe pronaći samo red koji sadrži : 2211 bzcat text2.txt.bz2 grep Rad s tračnim uređajima Za potrebe izrade sigurnosnih kopija (backup), najviše se koriste tračni uređaji i same trake kao medij za pohranu podataka. Neke od slabo poznatih činjenica o trakama: Podaci se na trake zapisuju serijski (u nizu) Mogu spremiti velike količine podataka (pr. LTO 6 : 2.5TB, tj. plan za LTO 8 je 12.8 TB po traci) Najjeftiniji su pouzdani medij za pohranu velike količine podataka I danas se koriste za pohranu podataka (backup) koja se obično negdje pohranjuje na određeno (duže) vrijeme Specifikacija osnovnih karakteristika LTO traka: Atribut Datum prve upotrebe Nazivni Kapacitet (bez kompresije) Brzina zapisivanja na traku [MB/s] LTO 1 LTO 2 LTO 3 LTO 4 LTO 5 LTO 6 LTO 7 LTO g g g g g g. u pripremi u pripremi 100 GB 200 GB 400 GB 800 GB 1.5 TB 2.5 TB 6.4 TB 12.8 TB Printed on 2015/01/29 11:54

139 2015/01/29 11:54 Hardverska kompresija i omjer kompresije 139/232 ALDC ALDC ALDC ALDC ALDC LTO-DC Planirano Planirano 2:1 2:1 2:1 2:1 2:1 2.5 : : : 1 Osim navedenog spomenimo još nekoliko važnih stvari o tračnim uređajima i trakama : Trake su izdržljive: omougučavaju do nekoliko tisuća ubacivanja i izbacivanja iz tračnog uređaja omogučavaju nekoliko stotina prepisivanja cijele trake Slika (1) pokazuje kako izgleda jedan (DDS4) tračni uređaj i same trake za pohranu podataka: Za rad s tračnim uređajima i trakama koristi se naredba mt (magnetic tape controll) Prekidači naredbe mt : -f file device (ime uređaja /dev/ ) rewind premotaj traku na početak retension premotaj na kraj pa na početak (zbog izjednačavanja napetosti trake) status ispiši status reserve rezerviraj i nakon završetka snimanja release oslobodi traku za drugi rad Open Source Osijek -

140 wiki:knjige:uvod_u_linux erase obriši cijelu traku offline unload tape (izbaci traku) Primjeri 1.Premotaj traku (/dev/st0) na početak: mt -f /dev/st0 rewind 2. Provjeri na kojem bloku se traka nalazi mt -f /dev/st0 tell 3. Ispiši sve datoteke na traci tar -tzf /dev/st0 4.Napravi restore direktorija www [na traci] ali prvo premotaj na početak cd /root/restoredir/ mt -f /dev/st0 rewind tar -xzf /dev/st0 www vi Editor vi editor je inicijalno razvijan za prve verzije UNIX-a (1976.g.), te je od tada dostupan na svim verzijama Unix-a i Linux-a koje postoje. Ovo je jedini tekst editor koji ćemo naći na bilo kojem UNIX ili Linux baziranom operativnom sustavu pa je bitno poznavati neke njegove osnove. Koliko god da je netko navikao ne neki drugi tekst editor, u praksi nikada ne možemo biti sigurni koji tekst editor ćemo zateći na nekom UNIX ili Linux sustavu, osim vi editora koji se nalazi na svima. vi editor Ima dva osnovna moda rada: insert mode : za upisivanje teksta naredbeni mod : za izvršavanje naredbi nad tekstom Upoznajmo osnovne naredbe, podjeljene u logičke cjeline: Printed on 2015/01/29 11:54

141 2015/01/29 11:54 Insert i append naredbe i (insert) ubaci tekst ispred a (append) ubaci tekst iza o otvori novi red ispod O otvori novi red iznad I ubaci tekst na početak reda A ubaci tekst na kraj reda ESC - vraća u naredbeni mode Ako ne rade kursorske tipke: h (lijevo) l (desno) j (dolje) k (gore) ESC - vraća u naredbeni mode Brisanje: x (brisanje znaka: [znak po znak]) dd (brisanje cijelog reda) Undo u (undo prvu promjenu) U (undo sve promjene u redu) Ponavljanje naredbe. (ponavlja zadnju naredbu) Kopiranje (Yank) yw (kopiraj trenutnu riječ) 2yw (kopiraj 2 riječi) yy ili Y (kopiraj trenutni red) 2yy (kopiraj 2 reda) Paste p (paste) Traženje /pojam (traži riječ pojam ) n (traži slijedeći pojam) N (traži prethodni nađeni pojam) Pronađi i zamjeni %s/prvo/drugo/g (Zamjeni riječ prvo sa drugo ) Snimanje Open Source Osijek /232

142 wiki:knjige:uvod_u_linux :w (snimi) :wq (snimi i izađi iz vi-ja) :wq! (snimi i izađi iz vi-ja, čak i ako je otvorena datoteka read-only) Shell skripte Podsjetimo se: Shell ili komandnolinijska ljuska je sučelje između korisnika i Operativnog sustava, iz njega pokrećemo razne programe i upravljamo cijelim sustavom. Postoji ih veći broj,od kojih svaki ima neke specifičnosti, mi ćemo se bazirati na bash (Bourne-Again SHell) shellu. bash shell (bash) je Unix shell (command language interpreter [CLI]) napisan za GNU Projekt kao zamjena za Bourne shell (sh). u 1989.g.. Široko se koristi i danas je standardni (default) shell za Linux i Mac OS X. Portan je i na Microsoft Windows, Novell NetWare i Android kroz razne terminal emulatore (aplikacije). Dakle bash je naredbeni (command) processor, koji se pokreće u tekstualnom prozoru te omogućava korisnicima da pokreću razne Unix/Linux naredbe. Bash također može čitati naredbe iz datoteke, zvane skripte. Kod logiranja na sustav vrlo je vjerojatno da ćete koristiti upravo bash shell. Definicija raznih parametara logiranja za bash shell se nalazi u datotekama (za svakog korisnika ~ [home dir] ), koje se učitavaju ovim redosljedom: 1. /etc/profile za sve korisnike, Potom se učitava, prvi od slijedećih koji postoji: 1. ~/.bash_profile 2. ~/.bash_login 3. ~/.profile U slučaju da se bash ne koristi kao login shell, učitava se : ~/.bashrc ~ znak označava vaš home direktorij Bash shell nam daje mogućnost korištenja kratica na tipkovnici: CTRL CTRL CTRL CTRL CTRL CTRL CTRL a - skoči na početak reda e - skoči na kraj reda c - prekini izvršavanje naredbe d - odlogiraj se d - još znači i pošalji End of File trenutnom procesu ALT Fn - prebaci se na n-ti terminal (n=1 6) : pr CTRL ALT F1 z - privremeni prekid rada procesa (suspend) Najveća snaga svakog shella (komandnolinijske ljuske) je mogućnost izrade shell skripti. Bash nam daje prilično široke mogućnosti. Printed on 2015/01/29 11:54

143 2015/01/29 11:54 143/232 Svaka shell skripta mora zadovoljiti dva uvjeta: 1. Prvi red svake skripte mora sadržavati tkzv. sha-bang ili shebang, koji daje instrukcije operativnom sustavu. kakva je to skripta i što da prvo pokrene. U našem slučaju to je bash shell skripta, dakle za njeno pokretanje sustav će za nas u pozadini prvo pokrenuti bash shell (može biti i neki drugi shell kada pričamo o shell skriptama) pa našu skriptu u njemu. Kako to izgleda (mora počinjati sa #!, nakon koje slijedi točna putanja do bash shella) #!/bin/bash Skripta mora biti izvršna (execute). Dakle treba promijeniti ovlasti (permissions) da skripta postane izvršna (pr. chmod +x ime.skripte) Varijable Podsjetimo se osnova Shell varijabli, pa možemo krenuti dalje. Osim standardnih (običnih) i environment varijabli moguće je definirati i konstante tj. varijable koje se neće mijenjati. Za to se koristi naredba readonly iza koje slijedi varijabla i njena vrijednost: Primjer Definirajmo konstantu (varijablu) PI, koja će imati vrijednost 3.14 : readonly PI=3.14 Polja (Array) Osim gore navedenih tipova varijabli, možemo koristiti i varijable polja (Array).Dakle ako imamo potrebu unutar jedne varijable upisati više vrijednosti, koristiti ćemo polja (Array), po principu: POLJE=(VRIJEDNOST1 VRIJEDNOST2 VRIJEDNOST3..) Primjer 1. Kreirajmo jedno polje (varijablu) koja će sadržavati tri vrijednosti : jedan, dva, tri. POLJE=(jedan dva tri) Naše polje sada ima tri elementa, kako doći do kojeg elementa? Jedan od načina je korištenje vitičaste zagrade za polje unutar koje možemo definirati elemente unutar uglatih zagrada. Kao na primjeru, gdje ćemo ispisati prvi element polja [0] (broji se od 0) echo ${POLJE[0]} jedan Ako želimo ispisati sve elemente moramo koristiti [*]. Odnosno to bi izgledalo ovako> echo ${POLJE[*]} Open Source Osijek -

144 wiki:knjige:uvod_u_linux jedan dva tri 2. Napravimo for petlju s kojom ćemo ispisati elemente polja, jedan po jedan. kreirajmo datoteku imena:for.polje.sh, koja ć sadržavati: #!/bin/bash POLJE=(jedan dva tri) for PETLJA in ${POLJE[@]}; do echo $PETLJA done Opis: POLJE=(jedan dva tri) kreirali smo polje sa tri elementa for PETLJA in ${POLJE[@]}; do kreiramo for petlju, koja internu varijablu PETLJA popunjava sa elementima polja (u svakom prolazu sa jednim) echo $PETLJA ispisujemo varijablu PETLJA (u svakom prolazu for petlje) Promijenimo ovlasti i pokrenimo skriptu: chmod +x for.polje.sh./for.polje.sh jedan dva tri Brisanje polja ili elemenata polja Moguće je brisati cijelo polje, pr. naše cijelo polje imena POLJE: unset POLJE ili možemo brisati samo pojedine elemente unutar polje, pr. obrišimo samo drugi element [1]: unset POLJE[1] Pogledajmo što smo dobili izbacivši drugi element polja: echo ${POLJE[*]} jedan tri Operacije na varijablama Printed on 2015/01/29 11:54

145 2015/01/29 11:54 145/232 Brojanje duljine varijable ili prebrojaanje broja elemenata polja. Sintaksa je : ${#VAR} Prebrojimo broj elemenata polja koje smo kreirali: echo ${#POLJE} 3 U slučaju da je to bila obična varijabla, dobili bi rezultat prebrojavanja alfabeta unutar vrijednosti varijable. Pr.: kreirajmo varijablu INVENTAR sa vrijesnosti monitor INVENTAR=monitor Prebrojimo sada vrijednost varijable (riječ monitor) echo ${#INVENTAR} 7 Izvlačenja dijela vrijednosti varijable Moguće je izvući dio vrijednosti varijable, prema principu : ${VARIJABLA:OFFSET:LENGTH} OFFSET je odmak s lijeve strane od početka vrijednosti varijable LENGTH je broj karaktera koliko želimo da se uzima Primjer Iz vrijednosti postojeće varijable INVENTAR izvucimo slova od 4-tog slova, 2 slijedeća slova : m o n i t o r (to bi trebalo biti to) echo ${INVENTAR:4:2} to Parametri pozicije Često imamo potrebu prosljeđivanja više parametara našoj skripti. Primjerice želimo da se pri pokretanju naše skripte moraju definirati dva parametra. Parametri pozicije imaju slijedeće oznake na sustavu: $0 Označava sami program koji pokrećemo (tj. našu skriptu) $1 Označava prvi parametar (prva pozicija) Open Source Osijek -

146 wiki:knjige:uvod_u_linux $2 Označava drugi parametar (druga pozicija) $3 Označava treći parametar (treća pozicija) itd. Primjer 1. Napravimo skriptu koja zbraja dva broja, na način da pozivamo našu skriptu sa dva parametra, prvi je prvi broj a drugi je drugi broj. Kreirajmo slijedeću skriptu pozicija-zbroj.sh, koja će sadržavati slijedeće : #!/bin/bash echo "Zbroj je : " echo $(( $1 + $2 )) Promijenimo ovlasti i pokrenimo našu skriptu, s tim da ćemo joj proslijediti brojeve 5 i 4 (da ih skripta zbroji) chmod +x pozicija-zbroj.sh./pozicija-zbroj.sh 5 4 Zbroj je : 9 Uvjeti Bash shell nam omogućava korištenje uvjeta, neki od češće korištenih su : if - else case Postoje i uvjeti koji su definirani kao File-based odnosno koji su dodatak standardnim uvjetima kada imamo potrebu unutar uvjeta provjeravati određena stanja datoteka ili direktorija. Često korišteni su: -e (exissting) Datoteka postoji -d (Directory) Direktorij postoji Za posebne vrste datoteka -b (Block) datoteka postoji i tipa je Block device (obično se nalaze unutar /dev/ direktorija) -c (Character) datoteka postoji i tipa je Character device (obično se nalaze unutar /dev/ direktorija) -h (Symbolic Link) datoteka postoji i tipa je simbolički link Symbolic link Osim toga postoje logički uvjeti na stringovima, neki od njih su: STRING1==STRING2 STRING1 je jednak STRING2 STRING1!=STRING2 STRING1 nije jednak STRING2 -z string je prazan (empty) -n string nije prazan (nonempty) Printed on 2015/01/29 11:54

147 2015/01/29 11:54 147/232 I na kraju naravno, postoje i aritmetički uvjeti : BROJ1 -eq BROJ2 BROJ1 je jednak (equal) broju BROJ2 BROJ1 -ne BROJ2 BROJ1 nije jednak (non equal) broju BROJ2 BROJ1 -gt BROJ2 BROJ1 je veći od (greater than) broja BROJ2 BROJ1 -ge BROJ2 BROJ1 je veći od (greater than or equal) ili jednak broju BROJ2 BROJ1 -lt BROJ2 BROJ1 je manji od (less than) broja BROJ2 BROJ1 -le BROJ2 BROJ1 je manji od (less than or equal) ili jednak broju BROJ2 Primjeri 1. Primjer upotrebe if - else uvjeta: Tražimo od korisnika unos brojeva između 1 i 3 (uključujući) 3. Za svaki broj koji smo unjeli pomoću višestrukih if - else uvjeta provjeriti koji broj smo upisali, a ako nije niti 1,2 ili 3 ispisati ćemo dodatnu poruku. Kreirajmo datoteku if-else.sh, koja će sadržavati : #!/bin/bash echo -n "Unesite broj izmedu 1 i 3 (ukljucujuci 3) : " read broj if [ "$broj" = "1" ]; then echo "Upisali ste 1." else if [ "$broj" = "2" ]; then echo "Upisali ste 2." else if [ "$broj" = "3" ]; then echo "Upisali ste 3." else echo "Niste upisali broj izmedu 1 i 3!" fi fi fi Opis: echo -n Ispisuje poruku i ne baca nas u novi red nego ostaje u istom redu (-n) read broj Naredba read očekuje naš unos s tipkovnice (ovdje unosimo podatke) te ih ubacuje u varijablu broj if [ $broj = 1 ]; then Ako je vrijednost ($) varijable broj jednaka 1 onda ide u slijedeći red i preko echo naredbe ispisuje poruku else inaće if [ $broj = 2 ]; then ako je vrijednost varijable broj (ista provjera kao u prvom if uvjetu) jednaka 2, onda ide u slijedeći red i preko echo naredbe ispisuje poruku. i tako smo nanizali uvjet za uvjetom do kraja skripte Open Source Osijek -

148 wiki:knjige:uvod_u_linux Sada moramo promijeniti ovlasti (da naša skripta postane izvršna [executable]) i pozvati skriptu chmod +x if-else.sh Pokrenimo ju (pokrećemo ju sa./ jer ju pokrećemo iz trenutnog direktorija )./if-else.sh Upisati ćemo broj 2 da vidimo što će se dogoditi: Unesite broj izmedu 1 i 3 (ukljucujuci 3) : 2 Upisali ste Napravimo shell skriptu koja provjerava da li imamo CD/DVD-ROM na našem poslužitelju. Pod Linuxom to znači postojanje linka na /dev/cdrom, koji obično pokazuje na /dev/sr0 uređaj koji je poseban tip datoteke (Block device) i označava CD/DVD-ROM uređaj. Dakle provjeravamo da li postoji datoteka tipa Block Device : /dev/sr0. I ako postoji ispisujemo poruku da postoji a ako ne postoji ispisujemo poruku da ne postoji. Kreirajmo datoteku: if-special-file.sh sadržaja: #!/bin/bash if [ -b /dev/sr0 ]; then echo "CD/DVD-ROM postoji" else echo "CD/DVD-ROM ne postoji" fi Promijenimo joj ovlasti i pokrenimo ju: chmod +x if-special-file.sh./if-special-file.sh CD/DVD-ROM postoji 3. Punovimo prvi primjer ali upotrebom uvjeta: case. Datoteka će se zvati uvjeti-case.sh i sadržavati: #!/bin/bash echo -n "Unesite broj read broj case $broj in 1 ) echo "Upisali ;; 2 ) echo "Upisali ;; 3 ) echo "Upisali izmedu 1 i 3 (ukljucujuci 3) : " ste 1." ste 2." ste 3." Printed on 2015/01/29 11:54

149 2015/01/29 11:54 149/232 ;; * ) echo "Niste upisali broj izmedu 1 i 3!" esac Promijenimo mu ovlasti i pokrenimo ga : chmod +x uvjeti-case.sh./uvjeti-case.sh Petlje Petlje koristimo kada imamo potrebu ponavljanja određenog dijela programa sve dok se ne zadovolji neki od uvjeta. Najčešće su u upotrebi dvije vrste petlji : while petlja se vrti u krug sve dok je uvjet točan until petlja se vrti u krug sve dok je uvjet netočan Moguće je imati i petlju u petlji (tkzv. ugnježđivanje) Primjeri. 1. (while petlja) : Napravimo brojač (petlju) od 0 do 9. Kada se dođe do 9. petlja treba završiti. Kreirajmo datoteku imena : petlja-while.sh, koja sadrži: #!/bin/bash brojac=0 while [ $brojac -lt 10 ]; do echo "Broj je :" $brojac brojac=$[$brojac + 1] done Opis: while petlja ima za uvjet da varijabla brojac ima vrijdnost manju ili jednaku 10 (-lt 10) tj: while [ $brojac -lt 10 ]; do sve dok je gore navedeni uvjet točan idi dalje: echo Broj je : $brojac ispiši poruku Broj je :, sa vrijednost ($) varijable brojac brojac=$[$brojac + 1] Povećava brojać za 1 done kraj petlje (koja se vrti u krug do se ne zadovolji uvjet pod while) Sada joj promjenimo ovlasti i pokrenimo ju: chmod +x petlja-while.sh./petlja-while.sh Open Source Osijek -

150 Broj Broj Broj Broj Broj Broj Broj Broj Broj Broj je je je je je je je je je je : : : : : : : : : : wiki:knjige:uvod_u_linux (until petlja) : Napravimo brojač (petlju) od 0 do 9. Kada se dođe do 9. petlja treba završiti. Kreirajmo datoteku imena : petlja-until.sh, koja sadrži: #!/bin/bash brojac=0 until [ $brojac -ge 10 ]; do echo "Broj je :" $brojac brojac=$[$brojac + 1] done Opis: Razlika u odnosu na while petlju je upravo suprotna logika (sve dok je uvjet netočan): Uvjet je : sve dok je varijabla brojac veća ili jednaka 10 (-ge), a pošto until petlja čeka netočan uvjet dobili smo isti rezultat kao u while petlji. Promijenimo ovlasti skripti i pokrenimo ju: chmod +x petlja-until.sh./petlja-until.sh Broj je : 0 Broj je : 1 Broj je : 2 Broj je : 3 Broj je : 4 Broj je : 5 Broj je : 6 Broj je : 7 Broj je : 8 Broj je : 9 Liste naredbi Liste odnosno nizove naredbi koristimo kada je potrebno pozvati naredbe u nizu, jednu za drugom. Nizati naredbe možemo koristeći neke od operatora: & operator koji se koristi za pokretanja nekog procesa u pozadini Printed on 2015/01/29 11:54

151 2015/01/29 11:54 151/232 ; operator kojim možemo nizati naredbe u nizu, sekvencijalno (završetkom prve naredbe u nizu pokreće se druga, nakom njenog završetka slijedeća itd.) ILI (OR) operator za nizanje naredbi poput ;, dakle nije bitno da li je prijašnja naredba uspješno završila && I (AND) operator za nizanje naredbi, ako je prva naredba uspješno završila (return status code=0) Sintaksa je : naredba1 list-operator naredba2 list-operator naredba3 Pr. Upotreba operatora &&: naredba1 && naredba2 Primjeri 1. Pokrenimo dvije naredbe u nizu, i to samo ako je prva uspješno završila: Ako postoji datoteka /dev/sr0 (ovo znači da postoji CD/DVD-ROM uređaj na sustavu), ispiši CD/DVDROM postoji ls -alh /dev/sr0 && echo "CD/DVD-ROM postoji" brw-rw root cdrom 11, 0 Jun 6 15:35 /dev/sr0 CD/DVD-ROM postoji Opis: Naredba ls -alh /dev/sr0 je vratila status 0 (OK) [dakle tražena datoteka postoji] te je sustav pokrenuo naredbu echo CD/DVD-ROM postoji i ispisao nam poruku. Funkcije Kao i većina programskih jezika i bash shell može koristiti funkcije. Funkcije implementiraju određene radnje ili operacije koje ćemo potencijalno koristiti više puta unutar programa odnosno skripte. Korištenjem funkcija činimo kod čitljivijim (svaka funkcija bi trebala odrađivati određeni zadatak) i iskoristivijim (kod se ne bi trebao ponavljati, već pozivati funkciju). Funkcije možemo koristiti na dva načina, sintaksa je : function ime_funkcije { naredbe naredbe } ili Open Source Osijek -

152 function wiki:knjige:uvod_u_linux ime_funkcije () { naredbe naredbe } Osim toga ne moramo niti koristiti ključnu riječ function, pa će to izgledati ovako: ime_funkcije { naredbe naredbe } ili ime_funkcije () { naredbe naredbe } Možemo i ugnježđivati funkciju unutar funkcije. Primjeri 1. Napravimo skriptu koja će imati dvije funkcije: jednu za zbrajanje dva broja i drugu za množenje dva broja. Skripta mora tražiti unos korisnika : prvi broj potom drugi broj i naziv matematičke operacije koju se želi izvršiti (zbrajanje ili množenje): Kreirajmo datoteku funkcije1.sh, sadaržaja: #!/bin/bash echo "Upisi prvi broj pa drugi broj te operaciju : zbrajanje ili mnozenje:" read broj1 broj2 operacija function zbrajanje () { echo $(($broj1+$broj2)) } function mnozenje () { echo $(($broj1*$broj2)) } Printed on 2015/01/29 11:54

153 2015/01/29 11:54 153/232 case $operacija in zbrajanje ) zbrajanje ;; mnozenje ) mnozenje ;; * ) echo "Niste upisali : zbrajanje ili mnozenje" esac Opis: echo Upisi Ispiše tekst read broj1 broj2 operacija očekujemo unos od korisnika, koji će se zapisati u tri varijable : broj1 ovo će biti naš prvi broj broj2 ovo će biti naš drugi broj operacija ovo će biti matematička operacija (zbrajanje ili mnozenje) function zbrajanje () { echo $(($broj1+$broj2)) } Ovdje kreiramo funkciju imena 'zbrajanje' koja preko echo naredbe (u drugom redu) zbraja vrijednosti varijabli : broj1 i broj2 i ispisuje rezultat isto se ponavlja i kod funkcije mnozenje, s time da ona množi ta dva unešena broja i ispisuje rezultat case $operacija in Sada pozivamo uvjet case koji provjerava što smo upisali kao treću vrijednost (prve dvije su bili brojevi) a za treću očekujemo da bude opisna matematička operacija : zbrajanje ili mnozenje zbrajanje ) zbrajanje ;; dakle ovdje provjeravamo da li je upisano zbrajanje (prva rijeć u ovom primjeru) i ako je pozivamo funkciju zbrajanje (druga riječ u ovom primjeru) mnozenje ) mnozenje ;; ovdje provjeravamo da li je upisano mnozenje i ako je, tada pozivamo funkciju zbrajanje * ) echo Niste upisali : zbrajanje ili mnozenje ako nisu zadovoljena prva dva uvjeta, tada ispisujemo poruku Niste upisali : zbrajanje ili mnozenje Promijenimo ovlasti i pokrenimo našu skriptu: chmod +x funkcije1.sh Pokrenimo skriptu te unesimo brojeve 2, 4 i operaciju zbrajanje./funkcije1.sh Upisi prvi broj pa drugi broj te operaciju : zbrajanje ili mnozenje: 2 4 zbrajanje 6 Dobili smo vrijednost 6, što smo i očekivali Open Source Osijek -

154 wiki:knjige:uvod_u_linux Lokalne varijable Moguće je određene varijable definirati kao lokalne (pr. unutar naše funkcije) Pogledajmo kako možemo definirati lokalne varijable uz sličan primjer, prethodnom: Varijablu definiramo lokalnom pozivanjem ključne riječi: local ispred imena varijable $ vi funkcije2.sh #!/bin/bash x=100 y=200 zbrajanje(){ local x=$1 local y=$2 echo "Rezultat je :" $(( $x + $y )) } echo "Pozovimo globalnu varijablu x: $x" echo "Pozovimo globalnu varijablu y: $y" echo "Pozovimo funkciju za zbrajanje uz varijable koje smo mi unjeli (lokalne varijable unutar funkcije):" zbrajanje $1 $2 Opis: Na početku smo definirali globalne varijable x i y: x=100 y=200 Nakon toga kreiramo funkciju koja će zbrajati dva broja. Unutar te funkcije smo definirali loklane varijable, čija vrijednost traje samo unutar ove funkcije : local x=$1 local y=$2 Podsjetimo se: $1 i $2 su sistemske varijable koje označavaju prvi i drugi argument koji upisujemo (pr. uz pokretanje ove skripte) Potom ispisujemo rezultat: echo "Rezultat je :" $(( $x + $y )) Printed on 2015/01/29 11:54

155 2015/01/29 11:54 155/232 Izvan naše funkcije ispiujemo globalne varijable: echo "Pozovimo globalnu varijablu x: $x" echo "Pozovimo globalnu varijablu y: $y" A na kraju pozivamo našu funkciju, kojoj prosljeđujemo argumente s kojima ćemo pokrenuti našu skriptu ($1 i $2). Dakle vrijednosti $1 i $2 se prosljeđuju unutar naše funkcije koju pozivamo (pokrećemo): zbrajanje $1 $2 Promijenimo ovlasti: chmod +x funkcije2.sh Pokrenimo našu skriptu i dodajmo joj argumente (u našem slučaju brojeve 2 i 4)./funkcije2.sh 2 4 Pozovimo globalnu varijablu x: 100 Pozovimo globalnu varijablu y: 200 Pozovimo funkciju za zbrajanje uz varijable koje smo mi unjeli (lokalne varijable unutar funkcije): Rezultat je : 6 Dobili smo željeni rezultat. Mrežni sustav Da bi se upoznali s mrežama, prvo se moramo upoznati s mrežnim protokolima i modelima prema kojim su nastali i osnovnim standardima vezanim uz mreže. OSI model i TCP/IP model OSI model (Open Systems Interconnection model) je konceptualni slojeviti model mrežne komunikacije, koji opisuje funkcije i međusobnu komunikaciju između njegovih slojeva.održava se od strane ISO organizacije (International Organization for Standardization), pod oznakom : ISO/IEC Na osnovi OSI modela, razvijen je TCP/IP model mrežne komunikacije. Naziv TCP/IP potjeće od Transmission Control Protocol (TCP) i Internet Protocol (IP) kao prva dva protokola koja su bila razvijena u setu TCP/IP protokola. Današnji TCP/IP set protokola sadrži cijeli niz raznih protokola (zbog toga govorimo o setu ili grupi protokola naziva TCP/IP). Ovaj set protokola često se naziva i DoD model zbog toga što je inicijalno razvijan od strane DARPA agencije (Defense Advanced Research Projects Agency) unutar Ministarstva obrane Sjedinjenih Američkih Država Open Source Osijek -

156 wiki:knjige:uvod_u_linux (Department of Defense), krajem i početkom godine. Tijekom narednih godina razvijale su se nove verzije : TCP v1, TCP v2, TCP v3 i IP v3, te TCP/IP v4 koji se koristi i danas (uz IP v6.). TCP/IP je skup protokola nužan za komunikaciju računala. Današnji internet je baziran na TCP/IP setu/grupi protokola. On se sastoji od nekoliko dijelova odnosno slojeva od kojih svaki odrađuje određenu funkcionalnost te predaje na obradu slijedećem sloju. Na slici je vidljiva usporedba OSI i TCP/IP modela te može poslužiti kao primjer komunikacije TCP/IP protokola. Prema slici će se najbolje shvatiti što se događa kod komunikacije dva računala TCP/IP-om: Upoznajmo se (okvirno) s komunikacijom prema OSI odnosno TCP/IP modelu komunikacije. Kod komunikacije između dva računala: Source [izvor] Destination [odredište], dolazi do slijedećeg : 1.Aplikacija (pr. Web browser se spaja na Web poslužitelj ) formira podatke koje želi slati na drugo računalo (Layer 4, tj po OSI-ju 7,6 i 5 ). i prosljeđuje ju nižem sloju (Layeru) 2.Transportni sloj (TCP) preuzima podatke od gornjeg sloja i dodaje svoj dio (u ovom slučaju Source i Destination portove, CRC check [provjeru integriteta podataka], ) i prosljeđuje ju nižem sloju, 3.Internet sloj (IP) preuzima podatke od gornjeg sloja i dodaje svoj dio (Source i Destination IP adrese,..) i prosljeđuje ju nižem sloju 4.Network Access sloj preuzima podatke od gornjeg sloja i dodaje svoj dio (MAC adrese, ) te šalje podatke samoj mrežnoj kartici, koja ih pretvara u električne (ili optičke) signale i šalje ih na medij. Važno je znati da mrežnim medijem prolaze paketi podataka, dogovorene maksimalne veličine. Ako je na početku procesa enkapsulacije (ugnježđivanja) podataka utvrđeno da treba poslati više podataka Printed on 2015/01/29 11:54

157 2015/01/29 11:54 157/232 nego što je maksimalna veličina paketa (pr.~1500 byte = 1.5kB), dolazi do kreiranja više paketa (fragmentacija),od kojih svaki sadrži serijski broj, da bi se ispravno posložili na drugoj strani te sastavili u izvorni oblik. S druge strane (na drugom računalu, proces je obrnut): Mrežna kartica prima električne impulse, pretvara ih u slijed digitalnih podataka (0 i 1), koje preuzima prvi sloj, obrađuje ih, prosljeđuje drugom sloju, i tako redom sve do aplikacijskog sloja koji to sve slaže u prvobitni oblik podataka, koji je poslan s prvog računala (Source). Dakle sve se vraća u suprotnmo smjeru (od točke 4. prema točki 1.). TCP/UDP Portovi TCP/IP protokol dopušta maksimalno portova [216] (16 bitni broj). Za svaki TCP/IP protokol je definiran i port preko kojega se koristi. Pomoću portova, svako računalo može (u svakom trenutku) paralelno komunicirati s više protokola, jer svaki od njih koristi drugačiji port. Neki od osnovnih portova odnosno protokola koji ih koriste, nabrojani su u tablici. Broj porta Naziv 20 FTP Data 21 FTP Opis File Transfer Protocol za podatke File Transfer Protocol za kontrolu Secure Shell : udaljeni pristup shell-u i Secure File Transfer Protocol te SSH, SFTP i SCP Secure Copy Protocol TELNET Telnet udaljeni pristup SMTP Simple Mail Transport Protocol DNS Domain Naime Server protokol BOOTP/DHCP BOOTP i DHCP Protokoli TFTP Trivial FTP Protokol HTTP Hyper Text Transfer Protocol NTP Network Time Protocol Ako vas zanima malo veći popis poznatijih portova pogledajte na Wikipedia članak Kao što smo spomenuli u transportnom sloju (TCP/IP model sloj [Layer] 3) se osim drugih stvari dodaju i portovi i to Source port (izvorni) i Destination port (odredišni), koji definiraju (nad)protokol kojim će se odvijati komunikacija. (Ovo će vam biti jasnije nakon slijedećih poglavlja). Osim portova bitno je i kojim točno transportnim protokolom se koristi niži protokol. Od transportnih protokola unutar TCP/IP seta nalaze se TCP i UDP protokoli. Oni su zaduženi za prijenos paketa preko mreže. Open Source Osijek -

158 wiki:knjige:uvod_u_linux Transportni protokoli TCP TCP je tkzv. connection-oriented transportni protokol, protokol koji se brine za stanje veze, kao i za integritet podataka. To znači da se kod komunikacije dva računala, otvara konekcija pomoću tkzv. metode Three-way handshake i TCP protokol se brine da je svaki segment podataka koji je poslan sa računala A na računalo B primljen u ispravnom (nepromijenjenom) obliku. Svaki paket koji je s druge strane zaprimljen neispravan, zatraži se retransmisija i paket se šalje ponovno, sve dok nije potpuno ispravan. Također se kod zatvaranja veze koristi dogovaranje oko zatvaranja, slično kao i kod otvaranja konekcije. U prijenosu podataka kroz medij (kabel, optičko vlakno, zrak/vakuum) može doći i dolazi, do gubitka djela podataka. Kako se uspostavlja TCP veza: TCP veza se uspostavlja putem tkzv Three-way handshake tj. uspostave veze u tri koraka. 1. Računalo (A) koje uspostavlja vezu šalje SYN poruku (on je klijent) na drugo računalo (drugo računalo je server) (B). Također klijent postavlja sequence number na slučajnu vrijednost, koja se koristi dalje. Pr.(HEX): SEQ= F5 72 B7 12 sequence number je redni broj svakog paketa koji se šalje, da bi se kasnije na drugoj strani koja ih prima mogli poredati po redosljedu kojim su poslani te obraditi (opisano u poglavlju Enkapsulacija ). 2.Računalo (B) (server strana) šalje SYN-ACK poruku te postavlja acknowledgment number za jedan broj veći od sequence number broja iz prvog koraka. Računalo B (server strana) postavlja za sequence number ovog paketa isto slučajan broj. Pr.: SEQ= D8 7F C4 A3 Printed on 2015/01/29 11:54

159 2015/01/29 11:54 159/232 ACK= F5 72 B Računalo (A) (klijent strana), šalje ACK poruku nazad na računalo B (server strana). Računalo A postavlja sequence number kao primljeni acknowledgement number a acknowledgement number povećava za 1 u odnosu na primljeni sequence number. Inaće se u daljoj komunikaciji uvijek sa acknowledgement number potvrđuje sequence number i uvećava za 1. Pr.: SEQ= F5 72 B7 13 ACK= D8 7F C4 A4 Napomena: Ako gledamo mrežni promet korištenjem programa Wireshark, TCP ACK i SEQ brojevi koji se standardno prikazuju su tkzv. Relativni tj. Wireshark ih prikazuje na nama razumljiviji način (počevši od '0'). Stvarni ACK i SEQ brojevi su 32-bitni brojevi, vidljivi u heksadecimalnom dijelu (dolje). Nakon ovog procesa TCP veza između računala A i B je uspostavljena. Slika : Uspostavljanje TCP veze: Open Source Osijek -

160 wiki:knjige:uvod_u_linux Nakon uspostavljene TCP veze, kreće promet preko nje. Prvi paket nastavlja s označavanjem SEQ i ACK brojeva, s time da se oni više ne povećavaju za 1, već za veličinu tkzv. Payload -a tj. veličinu koliko se podataka prenosi. Dakle ACK na drugoj strani standardno potvrđuje primljeni SEQ broj te kreira novi, koji je uvećan za taj Payload odnosno veličinu prenesenih podataka. Kako se zatvara TCP veza: TCP veza se zatvara putem tkzv four-way handshake tj. uspostave veze u četiri koraka,ali moguće su varijante i u tri koraka ili dva koraka. Objasniti ćemo standardno zatvaranje u četiri koraka: 1. Kada jedna strana želi zatvoriti (svoju stranu) veze (Računalo A) ona prvo šalje FIN poruku (nećemo ulaziti ponovno u detalje oko sequence number i acknowledgment number jer je sistem isti kao kod otvaranja veze i kao kod bilo koje druge TCP komunikacije). 2. Druga strana (Računalo B) odgovara slanjem poruke ACK. Nakon toga Računalo A čeka da TCP Timeout istekne te zatvara svoju stranu veze. S ovom porukom je zatvoren jedan dio veze : Računalo A Računalo B. Od trenutka kada je primljena poruka ACK za zatvaranje veze, TCP port koji je otvoren za tu vezu, još je otvoren, sve dok ne istekne TCP timeout, kada se sve zatvara 3. Sada druga strana (Računalo B) također šalje FIN paket prema drugoj strani (na Računalo A) 4. Druga strana (Računalo A) potvrđuje prekid veze slanjem poruke ACK, koju kada Računalo B primi također čeka na TCP timeout te potom zatvara vezu (isto kao točka 2.). Ovim korakom je zatvorena i strana veze : Računalo B Računalo A i samim time cijela TCP veza. Slika: zatvaranje TCP veze u četiri koraka: Printed on 2015/01/29 11:54

161 2015/01/29 11:54 161/232 Metoda zatvaranja veze u 3 koraka (Three-way handshake) Ovo je najčešća metoda zatvaranja TCP veze. 1. Računalo A šalje poruku FIN 2. Računalo B odgovara sa porukom FIN ACK 3. Računalo A odgovara sa porukom ACK Nakon ovog koraka obije strane čekaju da TCP tiemeout istekne te zatvaraju cijelu TCP vezu. Metoda zatvaranja veze u 2 koraka (Two-way handshake) Ako oba računala istovremeno pošalju poruku FIN i također nakon toga potvrde drugoj strani istovremeno sa zatvaranjem - porukom ACK. TCP konekcija može biti i napola otvorena! Open Source Osijek -

162 wiki:knjige:uvod_u_linux Moramo biti svjesni činjenice da je uspostavljena TCP veza uspostavljena zapravo s dvije strane, što se može promatrati kao dvije jednosmjerne veze: strana A strana B strana B strana A Stoga, moguće je da TCP veza ostane napola otvorena tj. half-open,što se dešava kada jedna strana regularno zatvori vezu a druga ne. Tada, strana koja je zatvorila vezu ne može slati podatke na drugu stranu ali druga strana može slati prema njoj, sva dok druga strana ne zatvori svoju stranu veze. UDP UDP (User Datagram Protocol) transportni protokol koristi jednostavan ali vrlo brzi sustav za prijenos podataka bez provjere o uspješnom primanju ili integritetu podataka poslanih unutar mrežnih paketa. S druge strane on (UDP) prepušta sve provjere na stranu same aplikacije koja šalje ili prima podatke. Dakle UDP je nepouzdan ali vrlo brz. Želite li pouzdanost a morate ili želite koristiti UDP, sve zaštitne mehanizme morate ugraditi u vašu aplikaciju. Ako ipak želite smo brzinu onda je UDP pravi izbor. UDP se često koristi kada imamo komunikaciju koja je vremenski osjetljiva a nije nam previše bitno da li će se koji paket usput izgubiti u prijenosu. Primjer ovakve upotrebe je Audio ili Video komunikacija, gdje nam nije bitno ako se izgubi koji dio slike na trenutak ili djelić glasa ali nam je bitno da nema vremenskog kašnjenja. Osim ove primjene, koristi se i kod drugih tipova komunikacije kao što su razni protokoli za logiranje određenih poruka (spremanje sistemskih poruka sa raznih uređaja na centralnu lokaciju), kada nam nije najbitnije ako se jedna mala poruka izgubi i sl. Još jedan primjer su DNS (Domain Name Service) protokol ili NTP (Network Time Protocol) protokol, koji ako ne dobiju odgovor u nekom vremenu, poruku će poslati ponovno. Koriste ih i DHCP (Dynamic Host Configuration Protocol), TFTP (Trivial FTP) i mnogi drugi protokoli. Enkapsulacija Pogledajmo detaljnije što se dešava kod TCP/IP komunikacije. Slika prikazuje enkapsulaciju (ugnježđivanje) prema TCP/IP, sa Source računala. Ovdje će vam biti malo jasniji tok podataka i veza između TCP/IP slojeva. Printed on 2015/01/29 11:54

163 2015/01/29 11:54 163/232 Zamislimo slijedeći (pojednostavljen) primjer: Naš program (aplikacija), pr. naš Web preglednik se želi spojiti na neku stranicu na koju upisujemo neke podatke (pr. korisničko ime i lozinku). Sada naš TCP/IP prokol uskače u pomoć. Aplikacijski sloj uzima podatke iz same aplikacije (u našem slučaju naše korisničko ime i lozinku) te ih razdvaja na manje dijelove (ako je potrebno), koji stanu u mrežni paket, u formatu koji je razumljiv višem sloju tj. aplikaciji. Ti naši podaci (ovdje su naše korisničko ime i lozinka koje smo upisali) su na slici prikazani kao [DATA]. Transportni sloj - transportni sloj (3) preuzima paket podataka od aplikacijskog sloja te dodaje svoj dio [Transport Header] ovdje se dodaju i Source i Destination portovi i paketi označavaju rednim brojevima te se dodaju i ostale stvari : ovisno da li se za transport koriste TCP ili UDP. Ako je pr. TCP protokol odabran za transport, izračunava se checksum podata i dodaje se i on, Na kraju se sve zajedno sa svime iz prethodnog sloja (Aplikacijskog) i novododanih stvari, proslijeđuje slijedećem sloju.prema OSI modelu ovo je Layer 4 Source port se nasumično odabire ( Random [slučajni broj]) a Destination port označava protokol za komunikaciju (pogledajte tablicu s portovima). Open Source Osijek -

164 wiki:knjige:uvod_u_linux Internet sloj preuzima paket od transportnog sloja i dodaje svoj dio, koji sadrži i Source IP adresu (pošiljatelja) i destination IP adresu (primatelja) te se dalje sve (što sadrži sve što su dodali prethodni slojevii ovaj sloj), prosljeđuje slijedećem sloju.prema OSI modelu ovo je Layer 3 Network Access sloj preuzima paket od Internet sloja te dodaje i Source i Destination MAC adrese (dakle MAC adrese mrežne kartice ovog računala i računala na koje se šalje paket [ovisno da li je na istoj mreži - o ovome kasnije]).tada se kreira novi paket koji sadrži sve preuzeto od prijašnjeg sloja iono što je ovaj sloj dodao i šalje se na mrežnu karticu. Prema OSI modelu ovo je Layer 2 Nadalje se sve pretvara u signale za slanje na mrežni medij (pr. bakar ili optika tj. električne signale ili svjetlosne impulse), od strane mrežne kartice. Ovaj proces se na računalu koje prima podatke, odvija u suprotnom smjeru.odnosno Web poslužitelj na koji smo se spajali, prima s mrežnog medija signale koji se pretvaraju u podatke koje preuzima Network Access sloj koji provjerava svoj dio i skida ga te prosljeđuje Internet sloju koji provjerava svoj dio i skida ga i prosljeđuje Transportnom sloju koji provjerava svoj dio: ako je za transport bio korišten TCP, provjerava se integritet (točnost/ispravnost) i ako je sve ok, skida se dio koji je od ovog sloja i proslijeđuje Aplikacijskom sloju uz naznaku broja porta (jer on naznačava aplikacijski protokol i na kraju krajeva aplikaciju). Aplikacijski sloj izvlači podatke i prosljeđuje ih našoj aplikaciji (u ovom slučaju Web poslužitelju). Ostali pojmovi MAC adresa (Media Access Control) je jedinstvena adresa, ugrađena u svaku mrežnu karticu, od strane proizvođača odnosno u svaki port na switchu (ili bilo kojem mrežnom uređaju). MAC adresa je 48 bitna, označava se sa 12 heksadecimalnih brojeva, grupiranih po 2 i obično odvojenih sa : ili -. Prvih 6. hexa brojeva označava proizvođaća a ostalih 6 su redni brojevi. Na osnovu MAC adrese možemo raspoznati proizvođaća same kartice (Intel, 3Com,Broadcom, ) Pr. Izgled MAC adrese: A-FD-6C IP adresa je jedinstvena adresa, te ju ne može imati niti jedno drugo računalo na mreži. IP adresa (Ipv4) je 32bitni binarni broj razlomljen u seriju dekadskih brojeva odvojenih točkom (.). Prvo se cijeli binarni broj razdjeli u 4 grupe od 8 binarnih brojeva, tada se svaka grupa od 8 bitova pretvara u decimalni broj. IPv4 može adresirati 4 8 bitova= 32b (bita) = 232 IP adresa. Osim IPv4 postoji i IPv6. IPv6 se sastoji od 8 heksteta tj (8 x 4 bajta) tj 8 puta po 4 heksadecimalna broja odvojena točkom (.) Dakle IPv6 može adresirati: 8 x 16 bitova = 128b (bita)=2128 IP adresa. Printed on 2015/01/29 11:54

165 2015/01/29 11:54 165/232 Network IP adresa (adresa mreže) je adresa koja definira samu mrežu. To je prvaadresa u mrežnom segmentu ili prva adresa u subnetu. Broadcast IP adresa ovisi o tome da li je mreža subnetirana ili nije. Univerzalna broadcast adresa je: inače ovisi o kojoj se mreži radi i u pravilu je to zadnja adresa unutar opsega mreže ili zadnja adresa u subnetu. Sve što se pošalje na broadcast adresu, primiti će svi unutar te mreže, a u slučaju univerzalnog broadcasta svi na svim mrežama. (Routeri po defaultu ne propuštaju broadcast poruke). ARP (Adress Resolution Protocol). Pošto u TCP/IP mrežama svaki paket mora sadržavati Source i Destination IP i MAC adrese, potrebna je i upotreba ARP protokola. On je zadužen za pronalaženje MAC adrese od određene IP adrese (pridjeljuje MAC adresu IP adresi). Kada računalo A želi pristupiti računalu B (kojemu još nije pristupalo), ono provjeri da li zna njegovu MAC adresu (pošto mu je poznata IP adresa). Ako mu nije poznata njegova MAC adresa, računalo šalje ARP zahtjev te potom kada primi ARP odgovor, pomoću njega saznaje ispravnu MAC adresu od pripadajuće IP adrese. (Više detalja o ARP protokolu dalje u tekstu). Topologija mreže Mrežna topologija definira strukturu same mreže odnosno način međusobnog spajanja svih mrežnih komponenti ako pričamo o fizičkoj topologiji. Logička topologija daje nam uvid u logičke veze između svih mrežhih komponenti. Prema fizičkoj topologiji razlikujemo slijedeće modele: Sabirnica: (engl. Bus) koristi dijeljenu vezu. Svi su spojeni direktno na dijeljenu vezu. Prsten: (engl. Ring) spajaju se svi jedan na drugi (serijski) te zadnji sa prvimšto kreira zatvoreni prsten. Zvijeza: (engl. Star) svi se spajaju na jednu centralnu točku (ovako se spaja pomoću HUB-ova ili switcheva). Proširena zvijezda: (engl. Extended Star) više zvijezda se spaja u jednu točku (ovako se spaja pomoću HUB-ova ili switcheva). Hijerarhijska topologija (ili Stablo ) slična je proširenoj zvijezdi ali mora se sastojati od minimalno tri (3) sloja. Ukrižana Mreža: (engl. Mesh) koristi se da omogući što veću sigurnost od ispada bilo kojeg dijela mreže, ima više puteva do svake točke Slika prikazuje navedene tipove mrežnih topologija: Open Source Osijek -

166 wiki:knjige:uvod_u_linux Mrežni pojmovi Mreže u globalu dijelimo na LAN (Local Area Network) i WAN (Wide Area Network) mreže. LAN - Lokalna mreža je primjerice mreža unutar jedne zgrade kao što je mreža unutar neke tvrtke. WAN - mreža je mreža koja povezuje više LAN mreža između udaljenih lokacija (pr. dvije lokacije tvrtke ili vašu tvrku s internetom). Naravno postoje i neki drugi specifični tipovi mreža (SAN, VPN, ) ali nisu nam za ovaj uvod u mreže bitni. Bitno je znati da LAN mreže u praksi rade na puno većim brzinama od WAN mreža. Iznimke su velike korporacije, banke i telekomi koji si mogu priuštiti i WAN mreže brzina koje su inaće u LAN mrežama. Razlike u brzinama između prosječnog LAN-a i WAN-a koji se danas koriste, mogu biti: LAN: 100Mbps, 1000Mbps (1Gbps), 10000Mbps (10Gbps), WAN: 512Kbps, 1Mbps, 2Mbps, 4Mbps, 8Mbps, 10Mbps, Dakle 100 i više puta su veće prosječne brzine u LAN mrežama nego u WAN mrežama. Naravno u iznimnim slučajevima to se može i izjednačiti ali uz ekstremno visoke troškove. Printed on 2015/01/29 11:54

167 2015/01/29 11:54 167/232 Brzina mreže Kod brzina mreža potrebno je razlikovati bandwidth od throughput-a. Bandwidth Bandwidth se definira kao količina informacija koje mogu prolaziti određenim mrežnim medijem. Mrežni mediji mogu biti žičani kabeli (koaksijalni [RG*], parični [F/S/U/TP] ), optički kabeli [single/multi mode] ili eter (zrak, vakuum) Za svaki medij postoje ograničenja bandwidth-a. Uvijek postoje razlike između bandwidtha i throughputa, i to zbog raznih gubitaka, što u samom mediju (dolazi do slabljenja ili miješanja signala, ) a što zbog dodataka na korisne podatke, koje dodaju određeni mrežni protokoli. Jedinica za bandwidth je bps (bits per second) [bitova u sekundi]: Jedinica Oznaka Vrijednost Bitova u sekundi bps 1bps = Osnovna jedinica Kilobita u sekundi kbps 1kbps=1 000 bps Megabita u sekundi Mbps 1Mbps= bps Gigabita u sekundi Gbps 1Gbps= Terabita u sekundi Tbps 1Tbps= Throughput Throughput je stvarni izmjereni bandwidth u jedinici vremena. Radi se o tome da uz korisne informacije mrežom prolaze i kontrolne informacije, te ukupni promet nisu samo korisni podaci. Ako govorimo o slučajevima kada mjerimo throughput kopiranja recimo nekih datoteka preko mreže, sa dva različita mrežna protokola za dijeljenje datoteka preko mreže, uočiti ćemo razlike u brzinama i zbog činjenice da određeni mrežni protokoli dodaju više ili manje kontrolnih i drugih podataka u svaki paket (uz razlike u dizajnu i sl.). Jedinica za throughput je Bps (Byte per second) [Bajta u sekundi] (uočite da je slovo B veliko). Maksimalnu propusnost mreže (throughput) možemo izračunati: tako da veličinu određene datoteke (u bitovima) podijelimo sa bandwidthom. Za Ethernet mreže možemo općenito koristiti tablicu: Bandwidth Maksimalni teoretski Throughput 1 Mbps 128 kbps 10 Mbps 1.28 MBps 100 Mbps 12.8 MBps Mbps (1Gbps) 128 MBps Mbps (10 Gbps) 1280 MBps Open Source Osijek -

168 wiki:knjige:uvod_u_linux Duplex Duplex je uz čistu brzinu mreže (10Mbps/100Mbps/1000Mbps/ ) drugi bitan parametar vezan uz samu brzinu (ovo možda zvuči malo čudno). O čemu se radi?. Half Duplex U starim mrežama (10 Mbps i 100 Mbps) koje su dijelile jedan medij (iz vremena korištenja HUB-ova), u svakom trenutku je bilo moguće ili primati ili slati podatke preko mreže (sjetimo se da je to jedan djeljeni medij [kabel]). Zbog problema ako je netko u takvoj mreži pokušao slati podatke istovremeno s nekim drugim je i uveden CSMA/CD protokol (pogledajte CSMA/CD poglavlje) koji je to riješio tako da je pojednostavljeno natjerao sve koji su spojeni na mrežu da u jednom djeliću sekunde samo jedan može slati podatke a ostali samo slušati. Ovakav način komunikacija nazivamo Half Duplex. Bitno je razumjeti da je Half Duplex način komunikacije u samo jednom smjeru : ili se šalje ili se prima podatke, nikako istovremeno. Full Duplex Razvojem mreža i prelaskom s HUB-ova na Switcheve više nije bilo potrebe za Half Duplex komunikacijom (iako neki uređaji i danas traže takav način komunikacije). Dakle upotrebom switcheva komunikacija više ne teće kroz jedan dijeljeni medij između svih koji su spojeni na mrežu već je praktično svaka veza između računala (ili nekog drugo uređaja na mreži) i switcha jedini dijeljeni medij pa je prema tome moguće istovremeno i primati i slati podatke. Naime prva komponenta između vas i susjednog računala je upravo switch, prema kojemu svako računalo može imati dvosmjernu komunikaciju i na fizičkom nivou (Layer 1).Pošto switchevi rade na sloju 2 (Layer 2), mrežne paketa obrađuje switch i preklapa ih iz jednog računala, preko sebe do drugog računala i obrnuto, za svaki paket posebno tako da je obostrana komunikacija zadržana. Ovu mogućnost dvostrane komunikacije (i primanje i slanje paketa mrežom u isto vrijeme) nazivamo Full Duplex. Postoji još jedna zanimljivost Full Duplex načina rada a to je kumulativna brzina mreže.ako recimo naša brzina mreže iznosi Mbps (1 Gbps) to znači da tom brzinom možemo istovremeno i primati i slati podatke što opet znaći da maksimalna brzina onda iznosi Mbps (1 Gbps), što neki proizvođaći i iznose u karaktaeristikama mrežnih uređaja ili komponenti : Standardna Brzina Full Duplex Brzina 10 Mbps 20 Mbps 100 Mbps 200 Mbps 1000 Mbps 2000 Mbps Ethernet standard i njegove podvarijante možete vidjeti na : IEEE Auto Negotiation Kako su Ethernet mreže rasle s brzinom od 10 Mbps prema 100 Mbps i 1000 Mbps (1Gbps) ili dalje sa Mbps (10 Gbps) morala je postojati mogućnost korištenja smanjenja brzina odnosno kompatibilnosti unatrag. Dakle da se sa Mbps (1 Gbps) mrežnom karticom možemo spojiti na mrežu koja rad recimo na 100 Mbps. Printed on 2015/01/29 11:54

169 2015/01/29 11:54 169/232 Osim fizičke kompatibilnosti unazad te ručnog konfiguriranja brzine i Duplex moda, uveden je mrežni protokol imena : Auto Negotiation, koji omogućava da dvije strane mreže (pr. Računalo Switch) dogovore : Brzinu rada : 10 Mbps, 100 Mbps, Mbps (1Gbps) ili Mbps (10 Gbps) Duplex način rada : od Half do Full I brzina i duplex način rada se uvijek dogovaraju od najveće brzine prema najmanjoj brzini i isto tako od Full Duplex do Half Duplex prema strani koja ima najlošije parametre veze. Preporuka je da se Auto Negotiation ne koristi za međusobno spajanje Switcheva, Routera, Poslužitelja ili druge mrežne opreme. Zbog čega ova preporuka? Naime razni proizvođaći mrežne opreme: od mrežnih kartica, preko switcheva, routera i drugih mrežnih komponenti često se ne drže standarda ili ih ne implementiraju na najbolji način te se događa da se dvije strane koje dogovaraju brzinu i duplex, krivo dogovore te tada počinju problemi i usporavanja u mreži. Primjeri Najčešći vidljivi problem kod krivo dogovorene brzine je veliko gubljenje paketa u oba smijera (Upload/Download) unutar LAN mreže. Najčešći vidljivi problem krivo dogovorenog duplex moda je velika nesimetrija tj.razlika u brzinama ovisno o smjeru podataka (Upload/Download) unutar LAN mreže. Zbog čega ponavljam unutar LAN mreže, zbog toga jer ovo nije mjerilo kod danas najčešće WAN tahnologije za Izlaz na internet tj. ADSL-a, koji je i kako ime kaže (Asymmetric Digital Subscriber Line) - Asimetričan, dakle projektiran da u jednom smjeru ima veliku brzinu (Download) a u drugom vrlo malu (Upload). CSMA/CD i Nasljeđe prošlosti CSMA/CD i Kolizijska domena (Carrier Sense Multiple Access With Collision Detection). Prije vremena switcheva, koristili su se uređaji zvani HUB-ovi. Računala i druga mrežna oprema se na njih spajala na isti način kao na switcheve (prema topologiji : zvijezda [star]) sva računala i oprema, svaki na svoj port na HUB-u. Open Source Osijek -

170 wiki:knjige:uvod_u_linux Na HUB-ovima se dijelila zajednička veza jer je on praktično bio samo pojačalo električnog signala. Veza je prema tome bila Half Duplex (samo primanje ili slanje na mrežu u jednom trenutku). U praksi se stalno dešavalo da su dva ili više računala u jednom djeliću vremena krenula u slanje podataka. Tu je uskakao CSMA/CD koji je tada detektirao ovaj slučaj koji se zove kolizija dakle Collision Detection mehanizam, koji radi tako da tada svaki od pošiljatelja mora sačekati određeni nasumični broj od nekoliko milisekundi te probati slati podatke ponovno i tako iz početka, svaki puta kada se detektira kolizija tj. istovremeno slanje podataka na mrežu od strane 2 ili više računala. Upotrebom switcheva više nema kolizije ako se koristi Full Duplex mod rada portova (interface-a). Samim time i kolizijska domena više ne postoji odnosno u najgorem slučaju je moguća na nivou jednog porta na switchu i to samo ako je on konfiguriran u Half Duplex modu rada. Važno je znati da je zbog kompatibilnosti unatrag i dalje ostao Half Duplex mod rada svakog porta na koji treba paziti.problem se može pojaviti jer se svaki port na switchu i krajnje računalo ili mrežna oprema mogu krivo dogovoriti te uspostaviti Half Duplex umjesto Full Duplex moda - u slučaju upotrebe Auto Negotiation protokola. Full duplex je mod rada u kojemu je moguće istovremeno slanje i primanje podataka i to samo ako je tako konfigurirano na strani switcha i druge strane (računalo, drugi switch, poslužitelj,.). Dakle obije strane moraju biti jednako konfigurirane!. Kako radi mreža (Layer2) U današnjim mrežam za međusobno umrežavanja/spajanje računala, poslužitelja i ostale mrežne opreme koriste se switchevi koji standardno rade na Layer 2 (dakle barataju sa MAC adresama). Spajanjem bilo kojeg računala ili uređaja na neki port na switchu, sam switch prvo mora saznati njegovu MAC adresu te ju spremiti u svoju internu tablicu koja sadrži par : Source MAC adresa < -> port (interface) na switchu To je i sva logika koja je potrebna za uspješno preklapanje (switching), Naime kada spojimo računala A i B na switch, i to primjerice: Računalo A (MAC 00:01:02:A1:11:11) port (interface) 1 Računalo B (MAC 00:01:02:B2:22:22) port (interface) 2 Switch si nakon nekoliko trenutaka izgradi gore navedenu tablicu koju primjenjuje na svaki paket koji mu dođe. Prisjetimo se TCP/IP komunikacije : Svaki paket mora imati (uz ostale podatke) : Source i Destination MAC adrese i Source i Destination IP adrese. Pošto govorimo o standardnom switchu, koji je Layer 2 uređaj, on gleda svaki paket i to samo dio sa Source MAC adresom i destination MAC adresom i na osnovu njih odrađuje preklapanje odnosno slanje Printed on 2015/01/29 11:54

171 2015/01/29 11:54 171/232 mrežnih paketa sa jednog svog porta na drugi. (Layer 2 po OSI tj Layer 1 po TCP/IP modelu ): Računalo A šalje paket na računalo B : Pojednostavljeno to radi ovako: 1. Switch pogleda Source MAC (to je MAC od Računala A) i vidi da ga već ima u tablici (ako nema zapamti ga sada, na portu na koji je spojen) te pogleda i destination MAC adresu (to je MAC od Računala B) 2. Switch provjerava svoju tablicu i gleda da li ima MAC adresu od računala B, ako ima gleda na kojem je portu (interface-u) i paket šalje na taj port (interface) Ako nema MAC adresu od računala B, pokuša ju saznati slanjem ARP poruke te ju zapamti i izgradi si tablicu. Upoznajmo se detaljnije s ARP protokolom ARP protokol u komunikaciji koristi dva scenarija: Standardni scenarij 1. Šalje se ARP Request (Odnosno ARP upit - tko ima IP adresu x.y.z.w) [Opcode 1 - Request] [Broadcast poruka] 2. Šalje se ARP Reply (Odnosno ARP odgovor - za IP adresu x.y.z.w koristi se MAC adresa AA:BB:CC:DD:EE:FF) [Opcode 2 - Reply] [Unicast poruka] Važno je znati da svaki uređaj na mreži može poslati ARP request (zahtjev) koji se šalje na Broadcast MAC adresu 'FF:FF:FF:FF:FF:FF' i koju primaju sva računala unutar određene LAN mreže (odnosno unutar Broadcast domene). Isto tako bilo tko može odgovoriti na ovaj zahtjev odnosno upit i poslati ARP Response (odgovor), koji je Unicast poruka, odnosno odgovor ide na MAC adresu pošiljatelja ARP Request-a. Scenarij za osvježavanje ARP tablice (tkzv Gratuitous ARP ) U ovom slučaju nema potrebe za dva koraka kao u prethodnom slučaju, već bilo koji uređaj može slati ARP Reply [Opcode 2 - Reply]. Razlika u odnosu na normalan ARP Reply je u tome što se ovaj Reply šalje na Broadcast MAC adresu tj. 'FF:FF:FF:FF:FF:FF'. Primjer je vidljv na slici: Ethernet II, Src: 02:02:02:02:02:02, Dst: ff:ff:ff:ff:ff:ff Destination: ff:ff:ff:ff:ff:ff (Broadcast) Source: 02:02:02:02:02:02 (02:02:02:02:02:02) Type: ARP (0x0806) Trailer: Address Resolution Protocol (request/gratuitous ARP) Hardware type: Ethernet (0x0001) Protocol type: IP (0x0800) Hardware size: 6 Open Source Osijek -

172 wiki:knjige:uvod_u_linux Protocol size: 4 Opcode: request (0x0001) Sender MAC address: 02:02:02:02:02:02 (02:02:02:02:02:02) Sender IP address: ( ) Target MAC address: ff:ff:ff:ff:ff:ff (Broadcast) Target IP address: ( ) 0000 ff ff ff ff ff ff c0 a ff ff ff ff ff ff c0 a Ovdje vidimo da uređaj sa MAC adresom '02:02:02:02:02:02' šalje Broadcast poruku svima ('FF:FF:FF:FF:FF:FF') da od sada IP adresa (' ') pripada MAC adresi ('02:02:02:02:02:02'). Na ovaj način je sam sebe proglasio nadležnim za IP adresu (' '). Ovo rade mnogi uređaji koji koriste razne Virtualne IP adrese koje se dijele s drugoim uređajima (pr. za HSRP, VRRP GLBP i slične protokole te za protokole unutar raznih clustera), da bi se najavila promjena uređaja koji je postao aktivan vlasnik virtualne IP adrese. Za detalje pogledajte način funkcioniranja protokola HSRP ili VRRP. Vratimo se na switcheve i Layer 2 komunikaciju Ponovimo : 1.Switch pogleda Source MAC (to je MAC od Računala A) i vidi da ga već ima u tablici (ako nema zapamti ga sada, na portu na koji je spojen) te pogleda i destination MAC adresu (to je MAC od Računala B) 2.Switch provjerava svoju tablicu i gleda da li ima MAC adresu od računala B, ako ima gleda na kojem je portu (interface-u) i paket šalje na taj port (interface) U slučaju da nema MAC adresu od računala B, pokuša ju saznati slanjem ARP poruke te ju zapamti i izgradi si novu tablicu (tj. osvježi ju). Ova MAC tablica na switch-u se zove i CAM tablica (Content Addressable Memory) tablica. Sada kada switch ima u CAM tablici i Source i Destination MAC adrese od ovog (i svakog) paketa od Računala A on paket (jedan po jedan) prebaci/preklopi na interface na kojem se nalazi spojeno računalo B. Ovo se ponavlja za svaki paket i za sve komunikacije. Sumarizirajmo mogućnosti Layer 2 switchinga Bridge-ing brzinom hardvera Hardware based bridging tj Wire Speed performance Kolizijska domena je na nivou porta, odnosno upotrebom Full Duplex moda ne postoji Nema mrežnog prometa između VLAN-ova, Broadcast domena se proteže na sve portove (interface-e) i sve međusobno spojene Layer 2 switcheve Printed on 2015/01/29 11:54

173 2015/01/29 11:54 173/232 Bacimo pogled na klasične Routere (usmjerivače), koji rade na Layer 3 i 4 Broadcast domena ja unutar jednog porta (interface-a) Layer 3 procesiranje je od strane CPU-a i samim time je više kašnjenje (latency) od Layer 2 switchinga :(Routeri s mrežnim paketima rade u miliskundama, switchevi i mikrosekundama [1.000 puta brže]) Visoka cijena prema broju portova (interface-a) Što su Multilayer switchevi? Osim Standardnih Layer 2 switcheva, postoje i tkzv. Multilayer switchevi, odnosno switchevi koji rade na: Layer 2 (switching) Layer3 (routing/switching) i Layer 4 (routing/switchinga) i to uz vrlo nisku latenciju koja je oko puta manja od Routera. Dakle većinu operacija sa mrežnim paketima Multilayer switch odrađuje oko puta brže od klasičnih Routera (usmjerivača). Možemo reći da je Multilayer switch spoj klasičnog Layer 2 switcha i Routera koji radi na Wire Speed -u unutar jedne hardverske platforme. Sve operacije koje on obavlja, obavlja i klasični Layer 2 Switch i standardni Router (usmjerivač) ali sve na hardverskoj brzini unutar milisekundi. Njegovom upotrebom možemo povećati performanse cijele mreže,ali uz pravilan dizajn mreže i pravilno dimenzioniranje. Što se dešava na kojem sloju i kojom brzinom (za switcheve koji imaju ASIC ): Layer 2 : sve se odrađuje na osnovi MAC adresa, brzinom hardvera (tkzv. Wire Speed ) Layer 3 : sve operacije preklapanja tj, ovdje govorimo o routing-u (usmjeravanju) se odrađuju na osnovi IP adresa, sve se odrađuje brzinom hardvera (za razliku od Routera-a kod kojih CPU sve odrađuje) Layer 4 : Dodaje se mogućnost rada na Transportnom sloju (TCP/UDP portovi) možemo reći da je ovaj sloj Application aware svjestan aplikacija. O čemu se radi (ASIC)? ASIC (Application Specific Integrated Circuit) je IC ( chip ) koji se ovisno o izvedbi i modelu switcha praktično nalazi na svakom portu (interface-u) i to kod primjerice opreme od proizvođaća poput: Cisco, Juniper i još samo par drugih tvrtki. ASIC je u mogućnosti unutar granica milisekundi: primiti, obraditi i proslijediti svaki mrežni paket. Veliko ubrzanje u radu ASIC-a, uz upotrebu vrlo brze SRAM memorije, donosi i upotreba slijedećih komponenti integriranih u sam ASIC (za Cisco Switcheve 3750 ili jače): Open Source Osijek -

174 wiki:knjige:uvod_u_linux CAM memorije (tablice) za Layer 2 funkcionalnosti TCAM memorije (tablice) za Layer 3 funkcionalnosti, Zbog gore navedenih karakteristika, standardno ASIC (Cisco 3750 ili jači modeli) omogućava obradu slijedećih funkcija, hardverskom brzinom : Traffic forwarding (obrada i prosljeđivanje paketa) QoS (Quality of Service) ACL lookup (Access Liste) Route Processing (Obrada Routing funkcionalnosti) STP (Spanning Tree protokol) Slika prikazuje logičku shemu Cisco 3750 Multilayer (Layer: 2,3 i 4) switcha: Broadcast domena Razni protokoli za svoj rad tj. u komunikaciji koriste Broadcast način komunikacije koji radi tako da se poruke šalju na specijalnu Broadcast adresu koju primaju svi uređaji (računala, poslužitelji i dr.) unutar određene mreže. Problem je u tome što ovakav način komunikacije zagušuje mrežu. Hub-ovi i switchevi propuštaju broadcast domenu a Routeri standardno Ne propuštaju. Dakle ako imamo potrebu ograničiti Broadcast domenu, mreža mora biti razdvojena na segmente koji su spojeni preko Routera ili drugih Layer 3 uređaja (pr. Multilayer switcheva). Printed on 2015/01/29 11:54

175 2015/01/29 11:54 175/232 IP adrese Nakon što smo nešto naučili o osnovama mreža, upoznajmo se s njima malo detaljnije. U daljnjem tekstu, pričati ćemo samo o IPv4 protokolu. Kako izgledaj jedna IP (IPv4) adresa u dekadskom i binarnom sustavu: Uzeti ćemo za primjer IP adresu : , koja binarno izgleda ovako : Pogledajmo to u tablici, da bude malo jasnije: Dekadski Binarno Binarno broj bitova Vidljivo je da je IP adresa podjeljena u 4 segmenta od 8 bitova, odvojenih s točkom (.) Klase IP adresa Kada se IP adresa dodjeljuje računalu, neki od bitova s lijeve strane prezentiraju mrežu. Broj bitova koji će prezentirati mrežu ovisi o klasi mreže. Dakle IP adrese su podjeljene u točno definirane klase, od kojih svaka ima svoju (preporučenu) namjenu: Klasa IP adresa Opseg (prvi oktet) Klasa A do Klasa B Klasa C Klasa D Klasa E Namjena Za ekstremno velike mreže Rezervirano za loopback (lokalno računalo i 127. sl.) do Za srednje do velikih mreža do Manje mreže do Multicast adrese do Rezervirana od IETF za istraživanje Primjerice sve IP adrese koje počinju od pa sve sve do su adrese koje su unutar klase B. Osim navedenih klasa, u novije vrijeme zatraženo je da se unutar klasa A,B i C rezerviraju određeni dijelovi mreža za privatne mreže (engl. Private Networks). prema RFC1918 : Klasa adresa Opseg A do B do Open Source Osijek - Netmask Max broj IP adresa

176 C wiki:knjige:uvod_u_linux do IP adrese unutar ovih okvira se smatraju privatnim IP adresama te se ne koriste kao javne IP adrese (engl. Public Address). Mreže Korištenjem kombinacije IP adrese i Netmask adrese definiran je svaki mrežni element (Računalo,poslužitelj,.) Tako i svaka mreža ima svoju: IP adresu (adresu mreže) opseg (range) IP adresa za upotrebu Broadcast IP adresu Netmask To ćemo objasniti na primjeru. Uzmimo jednu mrežu B klase: Unutar velike mreže B klase odabrati ćemo ćemo dvije mreže: Mreža A: *, koja se označava sa Mreža B: *, koja se označava sa Pogledajmo što te mreže sadrže: Adresa mreže Opseg adresa za upotrebu Broadcast adresa za (ovu) mrežu (Network Address) do do Dakle mreža A, ima IP adresu Unutar te mreže svim računalima,poslužiteljima i ostalim uređajima kojima ćemo dodjeliti neku IP adresu, IP adresu možemo dodjeliti iz opsega IP adresa od: sve do a na kraju našeg opsega IP adresa se nalazi broadcast IP adresa (koja je rezervirana i nju ne možemo koristiti), u ovom slučaju to je adresa : Isto pravilo vrijedi i za mrežu B (i druge mreže). Zamisliti ćemo naše dvije mreže s računalima, spojene na slijedeći način: Printed on 2015/01/29 11:54

177 2015/01/29 11:54 177/232 Mreža A je na jednoj strani a mreža B na drugoj te su spojene preko Routera, preko kojeg obije mreže imaju izlaz na internet. U slučaju da komunikacija teće samo između računala u mreži A isto kao i u slučavima kada komunikacija teće samo između računala u mreži B, računala normalno komuniciraju preko TCP/IP seta protokola i to direktno : Prvo računalo šalje promet na drugo i obratno [ pošto uz polazišnu i odredišnu MAC adresu (Source i Destination MAC) znaju svoju IP adresu i IP adresu računala s kojim komuniciraju ] Ali kada je potrebno da računala iz mreže A komuniciraju s računalima iz mreže B, neke osnovne stvari moraju biti zadovoljene: Naravno Uz IP adresu mora biti definiran i Netmask (o tome u slijedećem poglavlju) Mora biti definiran i Default Gateway tj. uređaj koji spaja našu mrežu s drugim mrežama Što se dalje dešava, vidjeti ćemo kada naučimo još nekoliko pojmova!. Netmask Netmask je 32 bitni broj (232) koji identificira svaki uređaj na mreži (engl. Host).Maska mreže (Netmask) govori nam na koji način će IP adresa biti interpretirana tj. kojoj mreži IP adresa pripada. Zbog podjele mreža na klase te potrebe podjela mreža na podmreže (engl. Subnet), uz IP adresu se mora koristiti i maska mreže (engl. Netmask) Open Source Osijek -

178 wiki:knjige:uvod_u_linux Na slici je vidljiva podjela na 4 okteta od kojih svaki ima 8 bitova (što će biti jasnije iz druge slike). Bitovi s lijeve strane označavaju mrežu (Network) a s desne strane identificiraju računalo (Host) na mreži. Pogledajmo detaljniju tablicu za određivanje Netmaska. Donja tablica nam govori koliko bitova koristimo s lijeve strane za identificiranje same mreže a koliko nam ostaje za hostove (računala). Netmask se određuje tako da prvo moramo saznati kojoj klasi pripada naša IP adresa. Network dio Popunimo sve jedinice s lijeve strane, dok ne dođemo do naše mreže (pr. Klasa C je tj prva tri okteta su sve jedinice). Pr. za našu IP adresa možemo reći slijedeće : Ona je iz klase C (spada u opseg od : do ) Prema tablici gore za C klasu mreže vidimo da je host dio u 4-tom oktetu: dakle je mreža a ćetvrti (zadnji) oktet koji je nula je za računala - (što smo već prije zaključili a sada znamo i zašto) Njen Netmask, će prema tome biti : Pogledajte mrežni dio na tablici gore pa pogledajte detaljnu tablicu dolje (za ) Dakle popunili smo sve jedinice binarno od lijeva na desno: i dobili dekadski : Ovaj dio sa jedinicama od lijevo na desno definira mrežu. Host dio Nule na kraju,tj. prebrojavanjem 0 od desno na lijevo (dok ne dođemo do jedinica) nam je naš Host dio. S navedenim netmaskom za naš slučaj vidimo da je cijeli zadnji oktet (8 puta po 0 tj. 28=256) slobodan za računala : to je 256 adresa (0 do 255 uključujući nulu). Printed on 2015/01/29 11:54

179 2015/01/29 11:54 179/232 Dakle : (sada gledamo nule za host dio) Pogledajmo to ovako : je mrežni dio (to je netmask) a dio 0 (sve nule u našem slučaju) je dio za računala. Ne zaboravimo da u svakoj mreži postoje i dvije dodatne IP adrese : Prva moguća IP adresa je rezervirana za mrežu (network adresa) Zadnja moguća IP adresa je rezervirana za Broadcast IP adresu Nama zbog navedenog u svakoj mreži ostaje ukupan broj IP adresa umanjen za ove dvije IP adrese. U našem slučaju = 254 upotrebljive adrese. Provjerimo u tablici dolje za netmask CIDR notacija koristi se za skraćeno označavanje Netmaska, a označava se tako da prebrojimo jedinice s lijeve strane. Dakle Netmask ima 24 jedinice s lijeve strane pa je CIDR oznaka /24 Open Source Osijek -

180 wiki:knjige:uvod_u_linux Podmreže (Subnets) Podmreže (engl. Subnets) se koriste za segmentiranje IP adresa (unutar klasa A,B i C), na nivou pojedine mreže na manje dijelove. Printed on 2015/01/29 11:54

181 2015/01/29 11:54 181/232 Subnetiranjem razbijamo određenu mrežu na podmreže, koje se u potpunosti ponašaju kao obične mreže, dakle imaju: IP adresu mreže Opseg IP adresa za upotrebu Broadcast IP adresu Subnetirati mrežu na podmreže je moguće uz pomoć subnet maske tj Netmask-a. Subnetirana IP adresa se sastoji od mrežnog dijela te subnet i host dijela IP adrese. Pošto se kod svake TCP/IP konekcije uz IP adresu provjerava i Netmask, svako računalo (mrežna oprema) na osnovu Netmaska prepoznaje da li je riječ o subnetiranju ili nije odnosno kojoj mreži pripada određeni par IP adresa+netmask. Kako prepoznati da li je mreža subnetirana : U slučajevima kada se držimo Netmask-a definiranog prema klasama mreža, za određenu IP adresu, tada mreža nije subnetirana. Podsjetimo se koje su standardne vrijednosti Netmaska, prema klasama mreža, za mreže koje nisu subnetirane: Klasa mreže Netmask A B C Kako mrežni uređaji znaju kojoj mreži pripada određena IP adresa (i dali je ta mreža subnetirana)? Za svaki par IP adresa i Netmask se prvo radi logička AND (hrv. logička operacija I) operacija te se dobija IP adresa mreže kojoj pripada ta IP adresa. Na osnovi IP adrese mreže jasno je gdje će se svaki mrežni paket koji ima tu IP/Netmask kombinaciju i proslijediti od strane Layer 3 uređaja (Router ili Multilayer switch). Podsjetimo se AND logičke operacije : Ulaz A Ulaz B Rezultat Uzmimo slijedeću IP adresu : Dekadski Binarno i njenu pripadajući Netmask adresu: Open Source Osijek -

182 wiki:knjige:uvod_u_linux Dekadski Binarno Na osnovi IP adrese se radi logička AND operacija sa Netmaskom: IP adresa Netmask Rezultat AND operacije - binarno Rezultat AND operacije - dekadski Dobiil smo kao rezultat : , dakle ovo je IP adresa mreže (koja nije subnetirana jer pripada klasi C sa standardnim Netmaskom). Podsjetimo se da je ova IP adresa ujedno i nulta IP adresa unutar ove mreže (kao i za druge mreže). Rekli smo da je IP adresa mreže nulta (odnosno prva IP adresa koju ne smijemo i ne možemo koristiti), te da nakon nje slijedi niz upotrebljivih IP adresa. Važno za znati je da se kod prolaska mrežnih paketa mrežom, za svaki par IP/Netmask unutar svakog paketa na mreži, u pozadini prvo odradi AND-ing jer se jedino na osnovi rezultata logičke AND operacije utvrđuje gdje određeni mrežni paket treba ići. Ovaj posao odrađuju Layer 3 uređaji (Routeri ili Multilayer switchevi). Dakle oni poznaju mrežnu topologiju te znaju gdje im je spojena koja mreža te kada saznaju na koju mrežu (prema izračunatoj IP adresi mreže) poslati paket, u tom smijeru ga i proslijeđuju. Sada znamo IP adresu mreže te nam još nedostaje i zadnja IP adresa unutar ove mreže (ili subneta). Ovo se radi u dva koraka: 1.Izračun inverzne maske Radi se logička operacija XOR sa netmaskom koja ima sve 1-ice ( ) i sa našim Netmaskom (u našem slučaju : ) Podsjetimo se XOR logičke operacije : Ulaz A Ulaz B Rezultat Netmask sa svim 1-icama Naš Netmask Rezultat XOR operacije Rezultat je dekadski : Konačni rezultat Da bi dobili zadnju IP adresu unutar naše mreže a to je Broadcast IP adresa, radimo logičku operaciuju OR (hrv. ILI) od našeg rezultata XOR operacije ( ) i naše IP adrese mreže koju smo tako]er iyra;unali ( ): Printed on 2015/01/29 11:54

183 2015/01/29 11:54 183/232 Podsjetimo se OR logičke operacije : Ulaz A Ulaz B Rezultat Rezultat XOR operacije IP adresa naše mreže - binarno Rezultat OR operacije - Broadcast IP adresa Dekadski rezultat je ovo je Broadcast IP adresa naše mreže (tj. zadnja IP adresa u toj mreži). Sada imamo sve podatke za mrežu, koji su nam potrebni : IP adresa: sa pripadajućim Netmaskom : , nalazi se u mreži: Broadcast IP adresa (i samim time zadnja IP adresa u mreži) te mreže je : Upotrebljive IP adrese su od : do Da bi odlučili kako subnetirati mrežu, od strane Administratora potrebno je procijeniti : Koliko subneta želimo unutar pojedine mreže, Koliko hostova (računala) želimo unutar svakog subneta. Potom se izračunava subnet koji nam odgovara. Kada smo odredili subnet, potrebno je za svaki subnet zapisati : Adresu mreže subneta Broadcast adresu subneta Opseg iskoristivih IP adresa unutar subneta Kako se radi subnetiranje? Kada smo pričali o masci mreže odnosno Netmasku rekli smo da postoji dio koji je rezerviran za mrežu i dio za Hostove. Kod upotrebe standardnih netmaska tu je kraj priće ali kod subnetiranja mi od Host dijela moramo posuditi lijevi dio za proširenje postojećeg netmaska tako da dobivamo lsijedeće Open Source Osijek -

184 wiki:knjige:uvod_u_linux (slika): Mi zapravo od host dijela posuđujemo bitove s lijeve strane i popunjavamo ih isto s lijeva na desno kao što popunjavamo kod Netmaska s time da se dodani bitovi nadodaju na postojeći netmask. Pr. Netmask : Netmask dekadski Netmask binarno Uvom primjeru onaj desni oktet koji ima sve jedinice je Host dio. Taj dio moramo podjeliti tako da dodavanjem svakog bita s lijevo na desno praktično dijelimo mrežu na dva (2) dijela a ostatak prema desno je upotrebljiv za upotrebu (opseg IP adresa unutar subneta) Ako želimo podjeliit ovu mrežu na dva dijela dodati ćemo jedan bit s lijeve strane, pa ćemo dobiti slijedeći Netmask: (Pogledajte taj bit koji smo dodali u zadnji oktet i ostale nule koje su slobodne za upotrebu) Netmask dekadski Netmask binarno Pogledajmo tablicu za podmreže za klasu A mreža: Netmask CIDR notacija / / / / / / / /15 Broj mogućih podmreža (subneta) Broj iskoristivih IP adresa (Hostova) unutar subneta Ukupan (z)broj svih upotrebljivih IP adresa Pogledajmo i tablicu za podmreže za klasu B mreža : Netmask CIDR notacija Broj mogućih podmreža (subneta) Broj iskoristivih IP adresa (Hostova) unutar subneta Ukupan (z)broj svih upotrebljivih IP adresa Printed on 2015/01/29 11:54

185 2015/01/29 11:54 185/ / / / / / / / / I na kraju slijedi tablica za podmreže za klasu C mreža: / / / / / / /30 Broj mogućih podmreža (subneta) / Netmask CIDR notacija Broj iskoristivih IP adresa (Hostova) unutar subneta samo za point-to-point mreže Ukupan (z)broj svih upotrebljivih IP adresa samo za point-topoint mreže Na osnovi naših potreba te korištenjem ovih tablica možemo odabrati pravilnu masku mreže. Uzmimo slijedeći primjer : imamo mrežu sa netmaskom : Tu mrežu želimo podjeliti na dvije (2) mreže unutar kojih nam treba biti maksimalno 126 korisnih IP adresa. Pogledajmo našu mrežu: Dekadski Binarno i njenu pripadajući Netmask adresu: Dekadski Binarno Korištenjem tablice zaključili smo da ako želimo 2 subneta od kojih svaki može imati do 126 korisnih adresa, Netmask mora biti : tj. prema CIDR notaciji /25 što znaći da imamo 25 jedinica u subnetu. To izgleda ovako: Dekadski Binarno Dakle posudili smo jedan bit iz host dijela da bi ga iskoristili za subnetiranje. Open Source Osijek -

186 wiki:knjige:uvod_u_linux Ovo je najbrža metoda kalkulacije subneta: S jednim posuđenim bitom imamo dvije moguće mreže (prva mreža ako je bit u 0-li i druga kada je taj bit u 1-ici): Bit ima vrijednost 0 Dekadski Binarno Bit ima vrijednost 1 Binarno Dekadski Ovdje smo dobili dvije mreže (kako smo i odabrali/planirali) : (1 mreža): i (2 mreža): Što to znači : Za prvu mrežu IP adresa mreže je : Mreža se proteže sve do (za jedan broj manje od druge mreže) Prema tome Broadcast IP je : Upotrebljive IP adrese su od : do Za drugu mrežu IP adresa mreže je : Mreža se proteže sve do (za jedan broj manje od druge mreže) Prema tome Broadcast IP je : Upotrebljive IP adrese su od : do Printed on 2015/01/29 11:54

187 2015/01/29 11:54 187/232 Nadmreže (Supernetting) Nadmreža (Supernetting) je po logici suprotnost subnettingu. U slučajevima kada od više malih mreža želimo napraviti jednu veliku mrežu koristimo supernetting. Supernetting je opisan u dva RFC-a : RFC1338 i RFC1519. Određivanje nadmreža radi se u suprotnom smijeru od podmreža (subnets).pogledamo li način na koji smo pomicali tj. posuđivali bitove u masci mreže (netmask) kod podmreža smo to radili od lijeva na desno, u slučaju nadmreža se zapravo vraćamo unazad tj. od desno na lijevo. Ova metoda se često koristi kod sumarizacija route-a često zvana i agregacija route-a. O čemu se radi. Za svaku mrežu koju imamo, naš Layer 3 uređaj (često Router) mora imati Route-u do nje. Svaka nova route-a zauzima memoriju i oduzima određeno vrijeme za procesiranje (CPU load). Pr. Ako imamo slijedeće route (iz mreža koje smo subnetirali prije): / / Koje za izlaz na internet i sa interneta dolaze sa drugog interface-a na routeru : / i želimo smanjiti broj route-a, napraviti ćemo nadmrežu koja uključuje sve postojeće podmreže. Naš netmask izgleda ovako: Dekadski Binarno Pogledajmo sliku: Open Source Osijek -

188 wiki:knjige:uvod_u_linux Ovo je mali broj mreža ali ako imamo sustave sa jako velikim brojem mreža pojaviti će se potreba da ubrzamo stvari sumarizacijom route-a, pa ćemo napraviti nadmreže. U našem slučaju možemo napraviti slijedeće: Za mrežu : / Izlazna IP će biti : / Dakle sada koristimo slijedeći netmask : Dekadski Binarno S ovime smo smanjili Routing tablicu na pola. Što smo napravili? Promijenili smo Netmask koji sada govori da cijela nadmreža : / 24 : što znači IP adrese do , ima jednu route-u za ulaz/izlaz na internet i obratno da sve mreže koje dolaze s interneta znaju da ovaj router iza sebe ima jednu veću mrežu /24, bez potrebe da znaju da smo ju mi iznutra razbili na dvije mreže. Na taj način smo i sebi i susjednim routerima smanjili routing tablice. Printed on 2015/01/29 11:54

189 2015/01/29 11:54 189/232 Usmjeravanje (Routing) Usmjeravanje (engl. Routing) je proces odabira (najboljeg) puta za prolaz mrežnih paketa prema odredištu. Za potrebe routinga možemo koristiti : Statičke route Routing protokole Statitičke Route se dodaju, kao što i ime kaže, statički (ručno) za svaku mrežu, što postaje malo nezgodno kada imamo više mreža ili kada se mreže mijenjaju. U slučajevima kada imamo veliki broj mreža statičke route postaju problematične tj. vrlo teško ih je održavati ručnim i stalnim dodavanjem i brisanjem, stoga se za sve imalo veće mreže korisite routing protokoli koji dinamički, automatski dodaju i brišu odnosno mijenjaju route. Svi Routeri na internetu, primjerice koriste neke od routing protokola. Statičke route se koriste za dodavanje default route (ovo je osnovna route-a) tj. default gateway-a. Drugi slučaj je ako imamo statične ili male nreže u kojima nam je praktično ručno dodavati/mijenjati ili brisati route. Default route-a obično ima oblik : IP Adresa Netmask Default route-a koju vidite znači za sve IP adrese, odnosno u slučaju kada router ne zna gdje poslati neki paket tj. kada nema route za njega, paket se šalje na default route-u koja pokazuje gdje ga poslati. Zbog toga se i ova route-a dodaje ručno. Što su uopće route? Route nam pokazuju tko je od routera (tj. njegov IP/Netmask par) odgovoran za koju mrežu tako da znamo gdje poslati koji mrežni paket koji izlazi iz naše mreže, prema drugoj mreži. Jedna route-a može izgledati ovako (opisno): Za mrežu / koristi IP : Routing protokoli prema logici rada mogu koristiti dvije vrste algoritama, dakle routing protokole dijelimo prema vrsti algoritma koji koristi, a to su : Distance vector protokoli Link-state protokoli "Distance vector" protokoli Open Source Osijek -

190 wiki:knjige:uvod_u_linux Distance vector routing protokoli su jednostavni za konfiguriranje i održavanje. Distance vector routing protokoli troše manje resursa. Princip njihovog rada je u tome da svaki router korištenjem Distance vector routing protokola obavještava susjedne routere o promjenama, periodički. Link-State routing protokoli s druge strane moraju obavještavati sve routere unutar topologije, o promijenama u mrežama. Distance-vector protokoli su bazirani na kalkuliranju smjera (engl.direction) i udaljenosti (engl. Distance) do odredišne mreže. Pod smjerom se smatra IP adresa slijedećeg routera (engl. Next Hop) na koji se šalje paket (uz podatak o tome koji je izlazni interface našeg routera). Pod udaljenosti se smatra cijena (engl. Cost) do odredišta. Kako se određuje cijena ovisi o samom protokolu tj. metrici. Pr. RIP protokol koristi tkzv. hop count do odredišta tj. prebrojavanje routera kroz koje mora paket proći da dođe do odredišta.s druge strane IGRP koristi kašnjenje (engl. Delay) i dostupni Bandwidth do tog odredišta. Na osnovu svih navedenih parametara Router gradi tkzv. vektore minimalnih udaljenosti do svake mreže u tablicu koja se zove Routing tablica. Proces kada routeri razmjenjuju route i osvježavaju svoje routing tablice se zove konvergencija. Konvergencija Distance-vector protokola je veća u odnosu na Link state routing protokole (dakle sporiji su). Primjeri Distance vector routing protokola su : RIP - Routing Information Protocol (v.1 i v2.), IGRP - Interior Gateway Routing Protocol, EIGRP - Enhanced IGRP, "Link-state" protokoli Link-state routing protokoli rade tako da svaki router kreira kartu veza svih mreža u kojoj je vidljivo kako su routeri međusobno spojeni odnosno kreira si topologiju mreže. Tada si svaki router kalkulira najbolje logičke puteve za sva mrežna odredišta, prema kojima se, korištenjem određenih algoritama, kreira routing tablica. Ovaj proces je prilično zahtjevniji (CPU i RAM) od Distance vector routing protokola ali je puno praktičniji za veće mreže te smanjuje konvergenciju uslijed promijena u mrežama. Routing protokoli ove skupine načelno rade na slijedeći način: 1. Pronalaze se susjedni routeri, Printed on 2015/01/29 11:54

191 2015/01/29 11:54 191/ Između susjeda se razmjenjuju informacije, periodički ali i u slučajevima kada dolazi do nekih promijena u mreži, 3. Kreira se topologija mreže, 4. Na osnovu topologije mreže se kreira (preračunava) routing tablica Ono što dodatno čini ove protokole boljima za veće mreže je: Mogućnost slanja podataka samo ako je došlo do promjena na nekoj od mreža Uzimanja cijele topologije mreže kao bitne za odluke kod usmjeravanja (routinga) Neki od protokola koji spadaju u ovu kategoriju su : OSPF - Open Shortest Path First, IS-IS - Intermediate System to Intermediate System. Kako radi mreža (Layer2 + Layer3) Zamislimo slijedeću topologiju mreže: Open Source Osijek -

192 wiki:knjige:uvod_u_linux Računalo PC - A želi poslati mrežni paket na računalo PC - B. Pogledajmo samo dio paketa koji sadrži: Source (izvor) i Destination (odredište) IP adrese i Source (izvor) i Destination (odredište) MAC adrese Za sve IP adrese pretpostavljamo Netmask : , pa ga nećemo spominjati. Što će se dogoditi s paketom, prolaskom kroz Routere na mreži, pogledajmo na slici: Printed on 2015/01/29 11:54

193 2015/01/29 11:54 193/232 Opis 1. Računalo PC - A želi poslati paket na IP adresu : , pošto to nije IP adresa iz njegove mreže, ono prvo gleda svoju routing tablicu i traži da li ima neku route-u do te mreže, pošto je nema (pretpostavimo da je tako u ovom slučaju), zna da paket mora poslati na Default Gateway : IP : , za koji prvo mora saznati MAC adresu (ovo je destination MAC): Ako ju već ima, formira paket i šalje ga Ako ju nema ide u ARP zahtjev da sazna MAC adresu od IP adrese te formira paket i šalje ga. Dakle ovaj paket sadrži IP adresu ovog računala koje ga šalje (Source IP), i također MAC adresu ovog računala (Source MAC) te odredišnu krajnju IP adresu: te kao odredišnu MAC adresu MAC adresu Default Gateway-a. 2. Sada je Default Gateway (Router R1) preuzeo paket, on gleda svoju routing tablicu i na osnovu nje (ili ako nema route-u, ide na svoju default route-u [ ]), koja u našem slučaju pokazuje na Router R2 priprema paket tako da zadržava Source i Destination IP adrese ali kao Source MAC stavlja svoju MAC adresu a kao Destination MAC, MAC adresu od Routera R2 tj. od njegove mrežne kartice s kojom ima direktnu vezu. Te šalje takav paket na njega. 3. Sada Router R2 preuzima paket, on gleda svoju routing tablicu i na osnovu nje (ili ako nema routeu, ide na svoju default route-u [ ]), koja u našem slučaju pokazuje na krajnje (odredišno) računalo PC - B. Jer je to računalo direktno na njegovoj mreži. Potom priprema paket tako da zadržava Source i Destination IP adrese ali kao Source MAC stavlja svoju MAC adresu a kao Destination MAC, MAC adresu od krajnjeg računala PC - B tj. od njegove mrežne kartice čiju MAC adresu poznaje - ako ju ne poznaje traži ju pomoću ARP zahtjeva. Kada su sve MAC adrese poznate šalje se paket na odredište : PC - B. Open Source Osijek -

194 wiki:knjige:uvod_u_linux Važno za napomenuti je da svaki paket sadrži i neke konkretne podatke i viši protokol ali to smo u ovom primjeru zanemarili zbog fokusa na IP i MAC adrese i onoga što se s njima dešava u prijenosu kroz mrežu. Metode komunikacije Različiti mrežni protokoli koriste različite metode odnosno načine komunikacije. Najčešće razlikujemo tri osnovne metode komunikacije: Unicast Broadcast Multicast Unicast Unicast se koristi za komunikaciju Host-to-host tj. s jednog računala direktno na drugo. Koristi se kada dvije krajnje strane u komunikaciji (recimo računalo računalo) trebaju komunicirati samo među sobom bez potrebe da se u komunikacijski kanal između njih uključuje i netko treći. Pr. MAC adrese mrežnih kartica su unikatne, kao i IP adrese računala te u komunikaciji s protokolima koji komuniciraju između dvije MAC adrese ili između dvije IP adrese, kažemo da je konunikacija unicast tip komunikacije. Dakle ovo bi bio slijedeći oblik komunikacije: IP 1 (Računalo 1) IP 2 (Računalo 2) Pr. Slijedeća komunikacija je unicast komunikacija : IP : ili IP : Broadcast Boradcast način komunikacije koristi se kada se određeni mrežni paket želi poslati na sva računala na mreži. Prema logici rada ovo je suprotnost u odnosu na unicast. Printed on 2015/01/29 11:54

195 2015/01/29 11:54 195/232 Zamislimo IP komunikaciju u mreži : / Znamo da je IP adresa Broadcast IP adresa. Ako neko računalo iz postojeće mreže (bilo koja IP adresa od do ) pošalje neki paket na adresu (Broadcast IP) taj paket će primiti SVI na toj mreži. Dakle Broadcast je način komunikacije u kojem jedan šalje na sve : Jedan SVI Broadcast način komunikacije je potreban za samo neke protokole ali za sve ostale nepotrebno zagušuje cijelu mrežu. Multicast Multicast komunikacija je komunikacija prema principu : Jedan Više njih odnosno grupa ili Više njih odnosno grupa Više njih odnosno grupa Multicast IP adrese su jedinstvene IP adrese koje prosljeđuju paket sa multicast odredišnom adresom na preddefiniranu grupu IP adresa. Tako da svako pojedino računalo koje šalje na multicast adresu može slati niz podataka na višestruke primaoce. Multicast je baziran na konceptu grupa. Svaki korisnik (Host računalo) može odabrati neku Multicast grupu, te će primati sadržaj namijenjen za tu grupu. U D klasi IP adresa (koje se koriste za Multicast ). Podsjetimo se : Multicast adrese su adrese unutar slijedećeg opsega: Početna multicast IP adresa Zadnja multicast IP adresa Postoji niz multicast adresa koje su rezervirane za lokalnu upotrebu i koje su rezervirane za točno određenu namjenu. Kraća lista rezerviranih multicast adresa izgleda ovako: Multicast adresa Namjena Rezervirano Svi hostovi unutar mrežnog segmenta Svi Routeri unutar mrežnog segmenta Svi Routeri koji koriste Distance Vector Multicast Routing Protocol (DVMRP) unutar mrežnog segmenta Open Source Osijek -

196 *.*.*.* wiki:knjige:uvod_u_linux OSPF protokol za slanje HELLO paketa unutar mrežnog segmenta RIP v.2 za slanje Routing informacija svim RIP v.2 Routerima Virtual Router Redundancy Protocol (VRRP) komunikacija Odavde počinju upotrebljive multicast IP adrese koje nisu rezervirane Multicast komunikacija može raditi na dva načina: Aplikacijski : ovdje se sama aplikacija brine o multicast grupama (prima i šalje sve na i od multicast grupa) Na mrežnom nivou (kada mrežni uređaji odrađuju sve vezano za multicast grupe): U ovom slučaju mrežni uređaji kreiraju multicast grupe (da ne bude zabune to su multicast IP adrese) a svi koji žele biti članovi određene multicast grupe (IP adrese) moraju se prijaviti mrežnom uređaju da ih uključi u tu grupu. Kada netko šalje paket na tu grupu tada mrežni uređaj u pozadini taj isti paket proslijeđuje na sve koji su se pretplatili da budu članovi te grupe. Popis (i opis) osnovnih mrežnih servisa Zbog potrebe za razumjevanjem rada mreža, potrebno je okvirno shvatiti način rada osnovnih mrežnih servisa odnosno protokola. TFTP i FTP TFTP (Trivial File Transfer Protocol) i FTP (File Transfer Protocol) naizgled izgledaju isti ili barem vrlo slični. Zapravo se radi o dva prilično različita protokola kojima je jedino zajedničko to da se koriste za prijenos datoteka preko mreže. Ovdje prestaju sve sličnosti. Pogledajmo o čemu se radi. TFTP Trivial File Transfer Protocol (TFTP) je vrlo jednostavan protokol za razmjenu datoteka preko mreže. Točnije rečeno omogućava klijentskoj strani da uzme (engl. Get) ili pošalje (engl. Put) datoteku sa ili na TFTP poslužitelj. Dakle logika rada je Klijent Poslužitelj. Najčešća dva primjera upotrebe ovog protokola su: Printed on 2015/01/29 11:54

197 2015/01/29 11:54 197/232 1.Korištenje za instaliranje (kopiranje) operativnog sustava, koji se u pravilu nalazi na jednoj datoteci, na neki uređaj (ili tkzv. Flash -iranje). 2.Za pokretanje ili instaliranje operativnog sustava perko mereže (o ovoj metodi kasnije). Zbog čega upravo TFTP? Zbog toga što je TFTP vrlo jednostavan za implementaciju te sama implementacija zahtjeva vrlo malo prostora za pohranu Dakle stane i u vrlo male Flash memorije, čak na flash memoriju same mrežne kartice. TFTP protokol koristi UDP protokol za transport, što ga čini nezahtjevnim i brzim ali neotpornim na greške. Zbog navedene namjene sigurnost u prijenosu nije bitna jer preko njega se u praksi šalje tek nekoliko datoteka a postoji i dodatni mehanizam zaštite. TFTP koristi UDP port 69 Kako radi prijenos podataka - malo detaljnije: Prijenos podatak pokreće klijentska strana, tražeći čitanje (engl. Read) ili zapisivanje (engl. Write) određene datoteke na TFTP poslužitelju. Ako je poslužitelj odobrio zahtjev datoteka se razlama u blokove od 512 byte-a (standardno), iako je moguće da se dvije strane dogovore za drugu veličinu, te se šalje u jednom UDP paketu (da nema potrebe da se radi dodatna fragmentacija paketa). Svaki poslani paket se potvrđuje slanjem potvrdnog paketa (engl. Acjnowledge). U slučaju da neki paket nij epotvrđen, on se ponovno šalje. Ako se ipak paket izgubi u mreži tj. nikada ne dođe na odredište, čeka se da istekne vremenski okvir za slanje (engl. Timeout) te pošiljatelj (TFTP poslužitelj) ponovno šalje paket. Na kraju kada su svi paketi poslani, šalje se paket koji je obično veličine manje od 512 byte-a tj. manje od onolike veličine koja je dogovorena za slanje. Taj paket završava prijenos. FTP File Transfer Protocol (FTP) je mrežni protokol za prijenos datoteka preko mreže. On za razliku od TFTP protokola koristi TCP protokol za prijenos te se samim time i oslanja na provjeru integriteta podataka od strane TCP protokola. Najčešće se koristi za prijenos jedne ili veće količine datoteka u lokalnim mrežama (LAN) ili preko interneta (WAN mreže). FTP također radi po principu : Klijent Poslužitelj. Kod njega je specifično i to da koristi dva kanala u komunikaciji: Jedan za kontrolni promet i samu vezu Drugi za prijenos podataka. Kod spajanja na FTP poslužitelj može se raditi i autentikacija korisnika po principu slanja : korisničko ime i lozinka ali nekriptirano. Dakle moguće je praćenjem paketa na mreži vidjeti korisničko ime i lozinku u čistom tekstualnom obliku. Osim toga moguća je i upotreba tkzv. Anonimous korisnika, ako je tako konfigurirano na poslužiteljskoj strani. Za osiguranje sigurnosti prijenosa podataka često se koristila okmunikacija kroz neki SSL ili TLS kanal Open Source Osijek -

198 wiki:knjige:uvod_u_linux koij je kriptirao promet. U današnje vrijeme, često je zamijenjen sa SSH File Transfer Protokolom (SFTP) ako je potrebna sigurna razmjena podataka. FTP koristi TCP port 20 za podatke (engl. Data) FTP koristi i TCP port 21 za kontrolu (engl. Command) Kako radi prijenos podataka korištenjem FTP protokola? FTP može raditi u Aktivnom (engl. Active) ili pasivnom modu rada (engl. Passive), o kojima ovisi kako će se konekcija ostvariti. O oba slučaja klijentska strana kreira TCP kontrolnu vezu (TCP destination port 21), s time da je TCP Source port odabran standardnom metodom : 1024+slučajan broj=source port (nazovimo ga X). U aktivnom modu rada klijent čeka dolazeću Data konekciju na portu X+1 sa poslužitelja i šalje FTP poruku poslužitelju da očekuje poruku na portu br. : X+1, tada se ostvaruje nova konekcija (TCP Three Way Handshake). Slika: Aktivni mod rada: Ako je klijent iza nekog Firewall uređaja, ovakav način rada nije moguć te se mora koristiti Passive mod rada. U pasivnom modu rada klijent koristi kontolnu konakciju za slanje PASV naredbe poslužitelju (zahtjeva prebacivanje u pasive mod rada) i dobiva od njega TCP port koji će koristiti kao destination port (pruka koju prima je Passive Port : Y ) tj. Y je broj porta koji mu poslužitelj dodjeljuje, uz njegovu IP adresu (poslužitelja).konkretno dobiva nazad poruku Passive IP Address=a.b.c.d tj. konkretnu IP Printed on 2015/01/29 11:54

199 2015/01/29 11:54 199/232 adresu poslužitelja. Sada klijent otvara konekciju na poslužitelj s IP adresom koju mu je on dao (a.b.c.d) na destination port koji mu je također poslao (Y) a kao source port postavlja X+1 i TCP konekcija se uspostavlja (TCP Three Way Handshake) Slika: Pasivni mod rada: Konekcije se zatvaraju standardno za TCP protokol. Bootp Bootstrap Protocol (BOOTP) se koristi za dodjeljivanje IP addrese mrežnom uređaju (računalu, poslužitelju. itd.) sa Bootp poslužitelja. BOOTP je izvorno opisan u RFC 951. Ova osnovna funkcionalnost se sada koristi preko DHCP (Dynamic Host Configuration Protocol) protokola koji podržava i BOOTP mogućnosti. BOOTP koristi UDP protokol za transport, port 67 Kako to radi? Metoda 1 Open Source Osijek -

200 wiki:knjige:uvod_u_linux S obzirom na činjenicu da je danas u skoro svaku mrežnu karticu ugrađen BOOTP klijent te TFTP klijent u BIOS mrežnih kartica, moguće je podizanje odnosno instalacija operativnog sustava pomoću BOOTP i TFTP protokola već sa mrežne kartice. Ova metoda korištenja mrežne kartice za pokretanje i/ili instalaciju operativnog sustva preko mreže se zove i Preboot execution Environment (PXE). Dakle kod upotrebe BOOTP protokola za pokretanje ili instalaciju operativnog sustava preko mreže: 1.Računalo se uključuje i podiže se PXE Boot dio sa mrežne kartice 2. BOOTP ili u današnje vrijeme DHCP klijent ugrađen u BIOS mrežne kartice traži IP adresu od BOOTP/DHCP poslužitelja 3. BOOTP mu daje IP adresu, te lokaciju Boot managera i IP adresu sa URL-om gdje se nalazi 4. Računalo/mrežna kartica podiže TFTP klijent koji preko TFTP protokola kopira Boot Manager, koji se tada učitava u memorijui preko TFTP-a dohvaća konfiguracijsku datoteku u kojoj su popisani parametri potrebni za slijedeći korak. 5. Boot manager se učitao u memoriju računala (RAM) te podiže najosnovnije mogućnosti rada da pročita konfiguracijsku datoteku u kojoj je upisana lokacija kernela operativnog sustava (koji mora sadržavati i upravljački program [engl. Driver]) za neki brži i pouzdaniji protokol za prijenos datoteka perko mreže (Pr. FTP / SAMBA/CIFS / NFS / ) 6. Pomoću TFTP-a se dohvaća kernel operativnog sustava te se učitava u memoriju, on si otvara konekciju na poslužitelj preko nekog od pouzdanijih protokola za prijenos datoteka (Pr. FTP / SAMBA/CIFS / NFS / ) te ovisno o operativnom sustavu koji je pohranjen na poslužitelju nastavlja sa učitavanjem Operativnog sustava kao da se nalazi na nekom instalacijskom mediju (pr. DVD-ROM ili sl.) Dalje se sve odvija kao da je instalacija ili korištenje Novog operativnog sustava lokalno sa DVD-ROMa ili lokalnog tvrdog diska. Ova metoda se koristi i za tkzv Diskless klijente dakle računala koja nemaju svoj tvrdi disk već sve učitavaju preko mreža sa poslužitelja. Metoda 2 (manje se koristi) Kada se računalo starta i podigne operativni sustav, sustav šalje BOOTP poruku (Broadcast ti poruke) na mrežu i traži da mu se dodjeli IP adresa. BOOTP poslužitelj pogleda u svoju tablicu slobodnih (neiskorištenih) IP adresa i dodjeljuje ovom računalu IP adresu. DHCP Dynamic Host Configuration Protocol (DHCP) je protokol sličan BOOTP protokolu ali sa naprednijim mogućnostima. Dakle DHCP protokol podržava punu funkcionalnost BOOTP protokola uz dodatne funkcionalnosti koje nudi. Koristi se za automatsku konfiguraciju mrežnih IP parametara na strani klijenta, poput IP adrese i Netmaska, Default Gateway-a, DNS poslužitelja i mnogih drugih parametara. Printed on 2015/01/29 11:54

201 2015/01/29 11:54 201/232 Protokol funkcionira po principu : Klijent Poslužitelj DHCP (kao i BOOTP) koristi UDP protokol za transport, port 67 DHCP se koristi u svim modernim mrežama, počevši od kućnih mreža, mreža u malim i većim tvrtkama sve do najvećih mreža u najvećim korporacijama i internet providerima (ISP). Kako radi DHCP? Kada se računalo pokrene i učita se operativni sustav, DHCP klijent na računalu šalje na mrežu DHCP upit (engl. DHCP Query), koji je po tipu Broadcast poruka (svi ju primaju). DHCP poslužitelj na mreži zaprima zahtjev, pregledava svoju tablicu sa listom IP adresa (engl. Pool) i nalazi prvu slobodnu (neiskorištenu) IP adresu + Netmask te čita ostale konfiguracijske parametre koji su aktivirani, pr.: IP adresu Default Gateway-a IP adrese DNS poslužitelja Ime domene(domain name) Time Server DHCP poslužitelj može biti konfiguriran da određeni parovi IP adresa + MAC adresa budu rezervirani. Na taj način će DHCP klijenti koji imaju rezervaciju svaki puta dobiti istu IP adresu. DHCP poslužitelj ima definirano i i maksimalno vrijeme koje vrijedi za svaku IP adresu koju je dodjelio (engl Lease Time). Kada to vrijeme istekne klijent ponovno traži obnavljanje te iste IP adrese te mu poslužitelj odgovara po istom principu. Lease time je isto jedna od opcija (standardna) za DHCP. Nakon toga DHCP poslužitelj šalje DHCP klijentu direktno (unicast) poruku, sa svim parametrima koji su bili aktivirani. Potom DHCP klijent konfigurira mrežu na osnovu parametara koje je primio od strane DHCP poslužitelja. Kako detaljno izgleda proces komunikacije DHCP klijent DHCP poslužitelj možete vidjeti na slici: Open Source Osijek -

202 wiki:knjige:uvod_u_linux DNS Domain Name System (DNS) protokol je hijerarhijski, distribuirani sustav koji barata s imenima (nazivima) (engl. Naming) te se koristi za imena računala, servisa ili drugih resursa na mreži. DNS povezuje ime sa IP adresom koja je osnovni element u mrežnoj komunikaciji. Dakle DNS kontaktiramo kada želimo saznati IP adresu na osnovi imena nekog računala (FQDN - Fully qualified domain name) u mreži. Ovdje je bitno da razumijemo što je domena. Domena je hijerarhijska struktura naziva koja počinje od vršne domene., hijerarhijski prema dolje. Drugim riječima ime domene predstavlja poziciju unutar DNS hijerarhije. Domena se sastoji od liste svih domena, počevši od vršne domene sve do najdonje u hijerarhiji, odvojenih točkom.. DNS koristi u većini slučajeva UDP protokol za transport, port 53 Komunikacija je tipa : klijent poslužitelj. U nekim slučajevima se koristi TCP protokol za transport : Kada je odgovor od strane poslužitelja veći od 512 byte-a ili Kada se radi tkzv. zone transfer Kako izgleda hijerarhija: 1. Postoji korijenska domena na vrhu. 2. Postoje tkzv Top level odnosno vršne domene, koje su točno definirane i ne mogu se mijenjati: Printed on 2015/01/29 11:54

203 2015/01/29 11:54 Domena.com.org.edu.gov.mil.net 203/232 Tko ju koristi Komercijalne organizacije Neprofitne organizacije Edukacijske organizacije Državne agencije Vojne organizacije Organizacije koje se bave mrežama 3. Ispod njih postoje pod domene i ispod njih pod domene i tako dalje. Kako to izgleda: Dakle svaki puta kada primjerice preko našeg web preglednika otvaramo stranicu na adresi : dešava se slijedeće: 1. Naš preglednik kontaktira prvi DNS poslužitelj koji mu je dostupan (i konfiguriran) i pita ga tko zna IP adresu od : Zapravo svaka adresa izgleda ovako (završava s točkom) 2. Nama prvi DNS provjerava u svojoj bazi da li on može odgovoriti, ako ne okntaktira slijedeći DNS u hijerarhiji, koji je odgovoran za vršnu domenu.com, on gleda u svoju bazu i daje IP adresu od DNS poslužitelja odgovornog za tu vršnu domenu. 3. Kontaktira se DNS poslužitelj za tu vršnu domenu, kojeg se pita tko je odgovoran za i on nam odgovara tko je slijedeći DNS koji je odgovoran, te nam on daje IP adresu (pr. to je IP : ). u slučajevima kada nije poznato koji je vršni DNS odgovoran za koju domenu (od vršnih domena :.com.net.org, ) tek tada se kontaktiiraj jedan od root DNS poslužitelja (.) koji daje odgovor na to (tj. on odgovara za vršnu domenu.com je zadužen DNS xy) tada se kontaktira DNS zadužen za tu domenu itd. 4. Sada kada naš preglednik zna da je za IP adresa , on se spaja na nju (na IP adresu). Open Source Osijek -

204 wiki:knjige:uvod_u_linux Važno za znati je da DNS poslužitelji, svaki puta kada saznaju za nove domene i vršne DNS poslužitelje odgovorne za njih, taj podatak čuvaju u svojoj privremenoj memoriji (cache) sve dok ne istekne vremenski period koji je definiran za svaku domenu na svakom poslužitelju. U praksi se radi o vremenima od minimalno nekoliko sati. Stoga ako dođe do neke promijene u nekoj domeni, potrebno je prilično dugo vremena (nekada i 24.h.) da toga budu svijesni svi DNS poslužitelji. Ovo osvježavanje odnosno njegovo namjerno kašnjenje se zove propagacija. U slučaju da tražimo podatak o računalu u našoj mreži: pr. server1.nasadomena, naš DNS poslužitelj koji je odgovoran za tu domenu će nam vratiti IP adresu : pr.: , koja će se u pozadini koristiti za komunikaciju. Telnet i SSH Telnet, kao i noviji SSH protokol omogućavaju nam pristup na komandno linijsko sučelje (shell) udaljenog računala (poslužitelja). Većina operativnih sustava ima svoju implementaciju Telnet protokola za udaljeni pristup ali zbog njegovih poznatih sigurnosnih problema, u današnje vrijeme, većinom se prešlo na upotrebu SSH protokola. Prvo ćemo se ukratko upoznati s telnet protokolom. Telnet Kao što sam rekao telnet omogućava pristup komandno linijskom sučelju udaljenih računala odnosno pristupom na viirtualni terminal udaljenog telnet poslužiteljskog mrežnog servisa. Telnet također radi na principu : klijent poslužitelj. Telnet kao transportni protokol koristi TCP, na portu 23 Telnet se kao protokol razvijao od 1968 godine. U to vrijeme najviše se koristio u akademskoj zajednici ali najveću primjenu doživio je početkom godina, sve većim korištenjem interneta. S obizorom da su se ljudi sve više spajali na udaljena računala ili poslužitelje pomoću telnet-a, sve više je bilo i pokušaja zloupotrebe. Stoga se sve više pažnje počelo posvećivati sigurnosti. Zbog sigurnosnih problema i to najviše činjenice da se sav promet preko telnet protokola prima i šalje u čistom tekstualnom nekriptiranom formatu (uključujući i ime korisničkog računa i lozinke) telnet se počeo zamjenjivati sa puno sigurnijim SSH protokolom. Pošto telnet radi po pricipu klijent poslužitelj, na strani poslužitelja, potrebno je pokrenuti telnet poslužitelj a na strani klijenta, neki od telnet klijenata, poput PuTTY i drugih programa. Printed on 2015/01/29 11:54

205 2015/01/29 11:54 205/232 SSH SSH se koristi za udaljeni pristup na komandnolinijsko sučelje (engl. shell) Secure Shell odnosno (SSH) je mrežni protokol, koji koristi kriptiranje podataka koji se primaju i šalju, za razliku od telnet protokola koji kao što smo rekli, nije siguran za komunikaciju, pogotovo preko interneta. SSH tako]er radi na principu: klijent poslužitelj. SSH kao transportni protokol koristi TCP, na portu 22. Postoje verzije 1 i 2 (poznate kao: SSH-1 i SSH-2) od kojih se verzija 2 najviše koristi. SSH je zamišljen kao zamjena za telnet. SSH koristi (pouzdane) kriptografske algoritme za kriptiranje podataka koji prolaze između klijenta i poslužitelja. SSH koristi tkzv. sustav javnog ključa (engl. Public Key), koji se često naziva i asimetričnom kriptografijom. Princip rada kriptiranja sustavom javni + privatni ključ je takav da : 1. Obije strane u komunikaciji kreiraju svoj par : javni + privatni ključ. Privatni ključ se čuva i ne daje nikome. 2. Jedna strana kriptira podatke s javnim ključem od druge strane, koji mu druga strana nudi. 3. Druga strana može dekriptirati sadržaj samo sa svojim privatnim ključem. Kod SSH osnovni sistem rada je prema tome kreiranje para: javni + privatni ključ, tada se ti ključevi koriste za kriptiranje veze, uz potrebu da se korisnik autenticira sa kombinacijom: korisničko ime i lozinka. Pri tome su korisničko ime i lozinka od sustava a ne posebno kreirani od strane SSH. Ovo je najčešća metoda rada. Druga metoda rada je kreiranje para ključeva : javni i privatni na obije strane (klijent i poslužitelj).javni ključ (engl. Public key) se ručno mora kopirati s klijenta na poslužitelj i poslužiteljev javni ključ na klijentsku stranu. Privatni ključevi se nikada ne razmjenjuju!. Autentikacija se tada određuje upotrebom privatnih ključeva. Privatni ključevi se nikada niti na koji način ne kopiraju preko mreže u procesu autentikacije niti u bilo kojem drugom procesu rada. Kod prve konekcije se lokalno pohranjuje javni ključ koji se veže za IP / Hostname udaljene strane i koji služi za provjeru identiteta druge strane. Naime u slučaju da se promijeni javni ključ koji se veže za IP/Hostname znači da je došlo do nekih potencijalno sigurnosno problematičnih stvari te se ta Open Source Osijek -

206 wiki:knjige:uvod_u_linux konekcija neće ostvariti. Ova metoda omogućava spajanje na drugi sustav bez potrebe da se unosi kombinacija : korisničko ime i lozinka, već se veza automatski kriptira u pozadini. SSH verzija 2 se danas najviše koristi jer je donjela: poboljšanja u procesu kriptiranja (engl. Diffie Hellman key exchange), nove algoritme kriptiranja (AES 128, 192, ), poboljšanu provjeru integriteta podataka podršku za PKI certifikate Konfiguracija mreže u Linuxu Svi primjeri i objašnjenja koja slijede, vrijede za Red Hat bazirane Linux distribucije. Mi ćemo koristiti CentOS Linux distribuciju. Na drugim distribucijama linuxa koje su bazirane na Debian ili Slackware Linuxu, konfiguracija se malo razlikuje ali je koncept isti. Konfiguracija osnovnih mrežnih parametara koja je zajednička za sve (ili barem) većinu distribucija linuxa je konfiguracija dostupnih DNS poslužitelja i parametara vezanih uz njih (/etc/resolv.conf) te konfiguracija mapiranja tj. razriješavanja (engl. Resolving) imena računala (engl. Hostame) u IP adrese (/etc/hosts). /etc/hosts Unutar ove datoteke nalaze se mapiranja iz IP adrese u hostname, za svako računalo za koje nije moguće na neki drugi način razriješiti IP adresu iz naziva računala (hostname). Jedino što mora postojati unutar ove datoteke je unos za loopback interface ( ), slijedećeg oblika localhost.localdomain Pogledajte A klasu mreža (vezano za loopback IP adresu) Ako želimo dodati unos za neko računalo zbog bilo kojeg razloga (pr. nema unos na DNS poslužitelju ili uopće nemamo DNS u svojoj mreži), sintaksa je : IP Adresa Hostname Pr. Računalo imena : server1 i IP adrese : želimo dodati kao novi unos, u novi red ćemo dodati slijedeće: server1 /etc/resolv.conf Unutar ove datoteke nalazi se popis DNS poslužitelja na koje se naš sustav može/mora spojiti te popis Printed on 2015/01/29 11:54

207 2015/01/29 11:54 207/232 domena koje se pretražuju. Dakle ovdje se nalaze upute za default pretraživanje za određenu domenu ili domene. Naime kada se pretražuje ime računala bez navedenog imena domene (tkzv. FQDN : fully qualified domain name) u ovoj datoteci je definirano koje ime domene će sustav automatski nadodati na hostname. Što je FQDN ime? Ako želimo pristupiti računalu čije ime (hostname) je server1 i želimo da nam se hostname poveže sa IP adresom (jer za komunikaciju nam je potrebna IP adresa) a nismo napravili unos u /etc/hosts već želimo da to razriješi DNS poslužitelj u kojemu je napravljen unos za naš poslužitelj server1, potrebno nam je i puno ime s domenom (uz IP adresu DNS poslužitelja koju ćemo ubrzo dodati). Ako je naša domena lab.os onda ili moramo koristiti puno ime (FQDN) : server1.lab.os ili ovu domenu moramo dodati da se automatski nadodaje na hostname-ove koji su bez imena domene. i to ovako (slijedi jedan red/linija u /etc/resolv.conf): search lab.os Osim ovoga moramo navesti i IP adrese našeg DNS poslužitelja u kojem su unosi za naša računala i za sva ostala računala na mreži. Ako je naš DNS server na IP adresi : tada će slijedeći red izgledati ovako: nameserver Pošto je ovo mjesto gdje moramo definirati i sve ostale DNS poslužitelje koje koristimo na/za internetu, moramo dodati i njih (dodati ćemo dva DNS poslužitelja od našeg ISP providera): nameserver nameserver Na ovaj način DNS resolving će nam raditi i prema internetu. Kod svake (TCP/IP) mrežne komunikacije između dva krajnja računala, u pozadini sustav uvijek mora saznati iz imena krajnjih računala (hostname) njihove IP adrese!. /etc/sysconfig/network U ovoj datoteci se definiraju informacije za cijelo računalo, koje se tiću Routinga i samog računala, što važi za sve mrežne interface-a tj. za sve mrežne kartice u računalu. Najčešće se koriste slijedeći parametri: NETWORKING=VRIJEDNOST VRIJEDNOST može biti : Open Source Osijek -

208 wiki:knjige:uvod_u_linux yes Mreža će biti konfigurirana. no Mreža neće biti konfigurirana. HOSTNAME=VRIJEDNOST VRIJEDNOST može biti :ime računala (hostname) ali se preporuča ime računala s domenom (Fully Qualified Domain Name) GATEWAY=VRIJEDNOST VRIJEDNOST je IP adresa Default Gaetway-a za ovo računalo. NOZEROCONF=VRIJEDNOST VRIJEDNOST može biti :. * ''yes'' "zeroconf" se neće koristiti --> ovo je standardno. * ''no'' "zeroconf" će se koristiti. ZEROCONF je mogućnost da se kod podizanja sustava koristi IP adresa iz određenog opsega adresa ( ) bez potrebe da se konfigurira mrežna kartica.!! Ovo se ne koristi za % slučajeva!! Primjer kako bi izgledala ova konfiguracijska datoteka da je konfiguracija našeg računala slijedeća: Hostname : desktop1 Default Gateway IP : NETWORKING=yes HOSTNAME=desktop1 GATEWAY= NOZEROCONF=yes Datoteka /etc/sysconfig/network je mjesto za definiranje imena računala i IP adrese Default Gateway-a te aktiviranje/deaktiviranje mreže globalno na računalu. /etc/sysconfig/network-scripts/ifcfg-<ime-mrežne-kartice> Konfiguracija svake mrežne kartice nalazi se u datoteci poput ove : /etc/sysconfig/networkscripts/ifcfg-<ime-mrežne-kartice> Printed on 2015/01/29 11:54

209 2015/01/29 11:54 209/232 Nazivi mrežnih kartica u Linuxu Standardno, mrežne kartice u Linuxu se nazivaju na slijedeći način: Ime mrežne kartice Opis eth0 Prva mrežna kartica eth1 Druga mrežna kartica eth2 Treća mrežna kartica eth3 Četvrta mrežna kartica Osim standarnih mrežnih kartica, moguće je koristiti i podkartice (subinterface), koje se vežu na postojeću fizičku mrežnu karticu i ponašaju se kao zasebne mrežne kartice, za koje je potrebno definirati sve parametre mreže. Ime mrežne kartice Opis eth0:0 Prva podkartica na prvoj mrežnoj kartici eth0:1 Druga podkartica na prvoj mrežnoj kartici eth1:0 Prva podkartica na drugoj mrežnoj kartici eth1:1 Druga podkartica na drugoj mrežnoj kartici Podkartice (engl. Subinterfaces) uočljive su po tome što u nazivu imaju dodatak na fizičku mrežnu karticu :Broj. Primjerice na eth0 prva podkartica je 0 tj. eth0:0 Moguća je i upotreba VLAN mrežnih kartica. One moraju pripadati fizičkoj mrežnoj kartici, podkartici (ili nekom drugom vršnom tipu kartice). VLAN mrežne kartice označavaju se s točkom., na postojeću mrežnu karticu. Pr, VLAN 14 na eth0 bi izgledao ovako: eth0.14. One se ponašaju kao i fizičke mrežne kartice i za njih je potrebno konfigurirati sve parametre mreže. Open Source Osijek -

210 wiki:knjige:uvod_u_linux Primjer VLAN kartica koje se vežu na fizičku mrežnu karticu, za VLAN 44 Ime mrežne kartice Opis eth0.44 VLAN br. 44 na prvoj mrežnoj kartici eth0 eth1.44 VLAN br. 44 na drugoj mrežnoj kartici eth1 Primjer VLAN kartica koje se vežu na podkarticu (subinterface) fizičke mrežne kartice, za VLAN 44 Ime mrežne kartice Opis eth0:0.44 VLAN br. 44 na prvoj mrežnoj kartici eth0, i to na njenoj prvoj podkartici eth0:1.44 VLAN br. 44 na prvoj mrežnoj kartici eth1 i to na njenoj drugoj podkartici Osim navedenih tipova postoje i drugi tipovi logičkih mrežnih kartica poput: Agregiranih (engl. bonding) kartica : koje služe za agregaciju više fizičkih mrežnih kartica (eth0, eth1, ethn) u jednu logičku mrežnu karticu (Cisco terminologija je Ether Channel). Bridge mrežnih kartica : one služe za spajanje više mrežnih kartica u jedan Bridge tj. Layer2 uređaj, koji propušta sva promet s jedne kartice na drugu i obratno (ponaša se poput poput switcha: - jedna mrežna kartica = jedan port na switchu). Ostalih specifičnih tipova. Nazivi za Bonding kartice su : bond0, bond1, bondn. Na bonding mrežne kartice moguće je kreirati podkartice (subinterface) i također VLAN kartice. Za svaku od tih svih logičkih mrežnih kartica moraju se konfigurirati svi mrežni parametri (IP adresa, Netmask, ). Nazivi Bridge mrežnih karticu su: br0, br1, brn. Na bridge mrežne kartice moguće je kreirati podkartice (subinterface) i također koristiti VLAN-ove Printed on 2015/01/29 11:54

211 2015/01/29 11:54 211/232 unutar bridge-a. Za svaku od tih svih logičkih mrežnih kartica moraju se konfigurirati svi mrežni parametri (IP adresa, Netmask, ). U novije vrijeme, pojavio se i novi način označavanja, zbog sustava s većim brojem mrežnih kartica te potrebe da se iz naziva može vidjeti gdje je ta kartica spojena: on-board (na matičnoj ploči) ili kao PCI/PCI-Express, Nazivi ovih mrežnih kartica su (čisto informativno): Ime mrežne kartice Opis em1, em2, em3, emn on-board - na matičnoj ploči p1p1, p1p2, pxpy Za pr. PCI : p(broj PCI sabirnice)p(broj PCI porta) Ovaj novi način označavanja (koji se i ne koristi previše), nećemo koristiti u daljem radu (primjerima). Konfiguracija mrežnih kartica Konfiguraciju mrežnih parametara svake mrežne kartice možemo odraditi statički (ručno) ili dinamički preko DHCP poslužitelja. Pod mrežnim parametria podrazumjevamo konfiguraciju: IP adrese Netmaska Network IP adrese Broadcast IP adrese Default Gatewaya Ručno se konfiguracija odrađuje preko naredbe ífconfig ili novije naredbe ip. Mi ćemo se bazirati na ručnoj konfiguraciji pomoću naredbe ífconfig. Statička konfiguracija Statička konfiguracija može biti privremena (do slijedećeg restarta) ili trajna (permanentna). Open Source Osijek -

212 wiki:knjige:uvod_u_linux Privremena konfiguracija s naredbom ifconfig Pomoću naredbe ifconfig (engl. Interface Configuration) možemo napraviti privremenu konfiguraciju mrežne kartice odnosno parametara mreže, mrežne kartice. Istoimenu naredbu koristimo i kada želimo samo vidjeti (ispisati) trenutnu konfiguraciju mrežnih kartica. Ako naredbu ifconfig pozovemo bez parametara ili prekidaća, dobiti ćemo ispis konfiguracija svih aktivnih mrežnih kartica tj. interface-a. Naredba Opis ifconfig Ispiši konf. svih mrežnih interface-a koji su aktivni ifconfig -a Ispiši konf. svih mrežnih interface-a - i aktivnih i neaktivnih ifconfig ethx Ispiši konfiguraciju za točno određeni interface (pr. za eth0 : ifconfig eth0) Svaki mrežni interface može biti aktivan ili neaktivan (ali postojeći na sustavu). Aktivacija i deaktivacija interface-a. Svaki interface koji postoji na sustavu inicijalno je potrebno aktivirati. U slučajevima da nam više ne treba možemo ga deaktivirati, on će pritom i dalje postojati na nivou operativnog sustava ali neće biti uključen - slično kao da smo ga ugasili. Interface aktiviramo/deaktiviramo na slijedeći način: Naredba Opis ifconfig ethx up ethx je ime inetrface-a (za eth0 to je : ifconfig eth0 up) ifconfig ethx down ethx je ime inetrface-a (za eth0 to je : ifconfig eth0 down) Primjer 1.Aktivirajmo mrežnu karticu eth0 : ifconfig eth0 up 2.Dektivirajmo mrežnu karticu eth0 : ifconfig eth0 down Konfiguriranje IP parametara U primjerima ćemo koristiti mrežku karticu eth0. Definirajmo slijedeće IP parametre koje ćemo konfigurirati: Printed on 2015/01/29 11:54

213 2015/01/29 11:54 213/232 IP adresa: Netmask: Broadcast IP: Konfiguracija IP adrese mrežnog interface-a Sintaksa je : ifconfig <mrežni interface> <IP adresa> Primjer ifconfig eth Konfiguracija maske mreže (Netmask) mrežnog interface-a Sintaksa je : ifconfig <mrežni interface> netmask <netmask adresa> Primjer ifconfig eth0 netmask Konfiguracija broadcast adrese mrežnog interface-a Napomena : ako je par IP adresa + Netmask pravilno konfiguriran i broadcast IP adresa će biti ispravno automatski konfigurirana. Sintaksa je : ifconfig <mrežni interface> broadcast <broadcast adresa> Primjer ifconfig eth0 broadcast Na kraju potrebno je i podići interface ifconfig eth0 up Sve gore navedeno moguće je konfigurirati u jednom redu. Pogledajmo kako. Sintaksa je : ifconfig <mrežni interface> <IP adresa> netmask <netmask adresa> broadcast <broadcast adresa> Open Source Osijek -

214 wiki:knjige:uvod_u_linux Primjer ifconfig eth netmask broadcast U slučaju da istovremeno konfiguriramo i IP adresu i netmask, Broadcast IP adresa će biti automatski izračunata i dodana: Primjer ifconfig eth netmask Ako želimo obrisati konfiguraciju mreže, mrežne kartice, dovoljno je da ju isključimo: Sintaksa: ifconfig <mrežni interface> down Primjer za eth0: ifconfig eth0 down Trajna (permanentna) konfiguracija. u izradi.. Privremena konfiguracija route-a s naredbom route U slučajevima kada je privremeno potrebno dodavati nove route, koristimo se naredbom route. Ove promijene nisu trajne i traju samo do restarta. Ista naredba se koristi i za ispis trenutnih route-a na sustavu. Primjer Ispišimo sve route na sustavu, u brojčanom obliku (-n prekidać) : route -n Kernel IP routing table Printed on 2015/01/29 11:54

215 2015/01/29 11:54 Destination Iface /232 Gateway Genmask Flags Metric Ref U UG 0 0 Use eth0 0 eth0 Vidimo da je za default route-u (Destination : i Netmask : ) Default Gateway IP : , preko interface-a : eth0 Kako dodati Default Gateway Default gateway koji će biti trajno (permanentno) konfiguriran, konfigurira se u : /etc/sysconfig/network, u varijabli GATEWAY= Privremena konfiguracija Default Gateway-a odrađuje se sa slijedećom sintaksom: route add default gw <IP adresa Default Gateway-a> Primjer route add default gw Kod dodavanja route-a, mogu se dodavati route prema mrežama (engl. Network) ili pojedinim računalima (engl. Host). Sintaksa za dodavanje (engl. Add) route-a prema mrežama: route add -net <IP adresa mreže> netmask <Netmask od te mreže> gw <IP adresa Gateway-a od te mreže> Sintaksa za brisanje (engl. Delete) route-a prema mrežama: route del -net <IP adresa mreže> netmask <Netmask od te mreže> gw <IP adresa Gateway-a od te mreže> Primjeri Dodajmo route-u za mrežu / preko Gateway-a : route add -net netmask gw Ako nam više ne treba obrišimo istu route-u koju smo dodali: Open Source Osijek -

216 wiki:knjige:uvod_u_linux route del -net netmask gw u izradi. Trajna konfiguracija route-a s naredbom route u izradi. Dinamička konfiguracija korištenjem DHCP poslužitelja u izradi. Privremena konfiguracija korištenjem DHCP poslužitelja u izradi. Trajna konfiguracija korištenjem DHCP poslužitelja u izradi. Osnovni mrežni alati Nabrojati ćemo i objasniti neke od osnovnih alata za provjeru dostupnosti i ispravnosti rada mreže i mrežnih servisa. Printed on 2015/01/29 11:54

217 2015/01/29 11:54 217/232 ping Naredba ping se koristi za testiranje dostupnosti hosta (računala,poslužitelja, mrežnog uređaja, ) koji koristi TCP/IP protokol. Osim same dostupnosti mjeri se i vrijeme koje je potrebno da paket dođe do odredišta. Ime naredbe ping je nastalo na osnovu (podvodnog) sonara koji šalje impulse zvuka u određenom smjeru, te detektira jeku (engl. Echo) odnosno odbijeni zvuk, koji se odbio od određenog predmeta ispod vode. Zvuk koji se pri tome čuje podsjeća na riječ ping. Kako radi ping?. Naredba ping šalje poseban paket, korištenjem ICMP protokola (Internet Control Message Protocol), konkretno se radi o ICMP Echo Request poruci, na odredišnu IP adresu te se čeka na odgovor. Sa odredišne IP adrese se šalje odgovor (ICMP Echo Reply) te se mijeri vrijeme između slanja i primanja (engl. Round-trip) te se prati koliko se paketa potencijalno izgubilo. Vrijeme između slanja i primanja se zove latencija ili tromost odnosno kašnjenje. Konačan rezultat je ispis statistike o primljenim paketima: Koliko je paketa poslano a koliko primljeno (koliki je postotak uspješnosti) Koja su prosječna vremena od slanja do primanja paketa (minimalno, srednje i maksimalno vrijeme) Ping omogućava i korištenje dodatnih opcija (prekidača),od kojih ćemo koristiti samo prekidać -c koji označava koliko paketa želimo poslati, a ostale nećemo objašnjavati. Primjer Provjerimo dostupnost IP adrese ( ) na našoj lokalnoj mreži, slanjem 5 paketa: ping -c PING ( ) 56(84) bytes of data. 64 bytes from : icmp_req=1 ttl=64 time=0.297 ms 64 bytes from : icmp_req=2 ttl=64 time=0.125 ms 64 bytes from : icmp_req=3 ttl=64 time=0.199 ms 64 bytes from : icmp_req=4 ttl=64 time=0.246 ms 64 bytes from : icmp_req=5 ttl=64 time=0.325 ms ping statistics --5 packets transmitted, 5 received, 0% packet loss, time 3997ms rtt min/avg/max/mdev = 0.125/0.238/0.325/0.072 ms Open Source Osijek -

218 wiki:knjige:uvod_u_linux Ovdje vidimo da je druga strana dostupna i da je bilo 0% gubitaka. Bitno je i da nije bilo većih odstupanja u vremenima, za svaki paket te da je prosječno vrijeme (avg : engl. Average): ms što je za loklanu mrežu vrlo brzo. Koja vremena odziva očekivati? Za LAN mreže : unutar nekoliko milisekundi (ms) Za WAN mreže : Unutar države do ~100 ms (internet) tj. do ~50ms ako imate zakupljene linkove (između dva grada unutar tvrtke ili sl.) Do drugih susjednih država i dalje ~200 ms Sve puno dalje i nešto više od +200 ms traceroute Za razliku od naredbe ping koja provjerava dostupnost krajnje točke u komunikaciji, naredba traceroute prikazuje nam sve točke (route) kroz koje prolazi paket do odredišta, uz mjerenje kašnjenja do svake od tranzitnih točaka (odnosno Layer 3 uređaja). Kako to radi? Zamislimo slijedeću topologije mreže na internetu : Ako naše računalo (PC1) želi napraviti traceroute na drugo računalo PC2 (koje je negdje na internetu), a paket mora proći kroz 6 routera, mjeriti će se vrijeme koje je potrebno od našeg računala koje inicira mjerenje, do svakog od njih i na kraju do odredišta, po principu: Računalo 1 (PC1) Router 1 (R1) Printed on 2015/01/29 11:54

219 2015/01/29 11:54 219/232 Računalo 1 (PC1) Router 2 (R2) Računalo 1 (PC1) Router 3 (R3) Računalo 1 (PC1) Router 4 (R4) Računalo 1 (PC1) Router 5 (R5) Računalo 1 (PC1) Router 6 (R6) Računalo 1 (PC1) Računalo 2 (PC2) Zapravo se na svaku točku u prijenosu (Router) šalju 3 paketa. Ovisno o implementaciji, obično se ispisuju sva tri mjerenja za svaku točku. U slučaju da sva tri mjerenja po mjernoj točki (routeru) ne budu obrađena, ide se dalje i označavaju se tri znaka o neuspjeloj konekciji (*) na problematičnoj mjernoj točki. traceroute na Linuxu može slati ICMP poruke (isti prokol kao za ping ali drugi podtip poruke), UDP poruke ili TCP poruke.ovaj odabir postoji zbog toga što je moguće da neki routeri u nizu zbog sigurnosnih i drugih razloga imaju isključen rad sa ICMP porukama. Tada će u odgovorima bit samo tri zvijezdice (* * *) koje označavaju grešku, za svaki router koji nije odgovorio. Upotrebom UDP ili TCP poruka taj problem se riješava jer se više ne šalje ICMP poruka nego TCP odnosno UDP paket (port 53 (DNS)). Primjer 1. Probajmo napraviti traceroute na google.com: Napomena :-n prekidać znači da ne želimo da se IP adrese prevode (engl. resolving ) u imena (FQDN) routera, već da imamo samo prikazane IP adrese. traceroute -n google.com traceroute to google.com ( ), 30 hops max, 60 byte packets ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms 8 * * * 9 * * * 10 * * * 11 * * * 12 * * * 13 * * * 14 * * * 15 * * * 16 * * * 17 * * * 18 * * * 19 * * * 20 * * * 21 * * * 22 * * * Open Source Osijek -

220 * * * * * * * * * * * * * * * * wiki:knjige:uvod_u_linux * * * * * * * * Vidljivo je da sve do router br. 7 imamo mjerenja a dalje je sve zablokirano (za ICMP). Inaće se pokušava koristiti maksimalno do 30 točaka (routera) do odredišta (tkzv. Hop-ovi). Zbog toga engl. naziv Hop count. Ovo ograničenje je po potrebi moguće i proširiti. Ovaj pojam je povezan s pojmom TTL (Time To Live) koji označava koliko maksimalno routera neki mrežni paket može proći pa se s tim parametrom i proširuje broj routera (parametar -m Broj-routera-veći-od-30). Svaki paket na mreži ima postavljen TTL (Time To Live) broj i prolaskom paketa kroz svaki router na putu ovaj broj router smanji za jedan, sve dok se ne dođe do nule. Ako se došlo do nule paket se odbacuje. Drugim riječima ako je nekom paketu trebalo do odredišta preveliki broj routera on će biti odbačen. Standardni postavljen TTL na operativnom sustavu Linux je obično 64. Definiran je i može se mijenjati u : /proc/sys/net/ipv4/ip_default_ttl 2. Probajmo sada korištenjem TCP protokola - prekidač -T. U ovom slučaju šalje se TCP SYN paket (za otvaranje TCP konekcije). traceroute -n -T google.com traceroute to google.com ( ), 30 hops max, 60 byte packets ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms ms Sada vidimo da imamo mjerenja do krajnje točke (točka 8). Printed on 2015/01/29 11:54

221 2015/01/29 11:54 221/232 nslookup Naredba nslookup (engl. name server lookup) koristi se za provjeru ispravnosti ili dostupnosti unosa u DNS (engl. Domain Name System) poslužitelju. Pomoću ove naredbe kontaktiramo DNS poslužitelj da nam razriješi IP adresu na osnovu nekom imena računala ili FQDN imena (ime računala s domenom). U slučavima kad asumnjamo da nam DNS poslužitelji nisu dobro konfigurirani ili nam zbog nekog drugog razloga DNS resolving ne radi ovo je alat koji nam može pomoći. Primjer 1. Pronađimo IP adresu poslužitelja opensource-osijek.org nslookup opensource-osijek.org Server: Address: #53 Non-authoritative answer: Name: opensource-osijek.org Address: Ovdje vidimo da je nslookup pronašao prvi DNS poslužitelj konfiguriran na sustavu ( ) te da je njemu poslao upit da mu da IP adresu od FQDN imena: opensource-osijek.org. Dobili smo odgovor da je njegova IP adresa : , što je točno. Iz ovoga možemo reći da nam je DNS poslužitelj dobro konfiguriran te da nam odgovara te da smo dobili traženi odgovor. Napomena : Non-authoritative answer znači da smo dobili odgovor od DNS poslužitelja koji nije zadužen za tu domenu (.org u ovom slučaju) te da je on morao pitati viši DNS poslužitelj u hijerarhiji. Authoritative answer znači da bi dobili odgovor od DNS poslužitelja koji je zadužen za tu domenu za koju smo slali upit te da on nije morao pitati viši DNS poslužitelj u hijerarhiji. 2. Promijenimo DNS poslužitelj koji želimo da se kontaktira u , te mu pošaljimo isti upit. nslookup > server Default server: Address: #53 > opensource-osijek.org Server: Address: #53 Non-authoritative answer: Open Source Osijek -

222 wiki:knjige:uvod_u_linux Name: opensource-osijek.org Address: > exit Naredba nslookup može se pokrenuti i bez parametara, tada ulazimo u njeno komandnolinijsko sučelje (CLI). DNS poslužitelj smo promijenili naredbom server iza koje slijedi IP adresa DNS poslužitelja. Nakon toga očekuje se puno ime računala (FQDN) koje provjeravamo. U slučaju da vaš CentOS nema nslookup naredbu, morate instalirati bind-utils: yum install bind-utils netstat Naredba netstat (engl. Network Statistics) prikazuje nam razne parametre rada mreže : IP konfiguraciju mrežnih kartica, Routing tablice, Mrežne konekcije, Statistike vezane za mrežne protokole,. Postoji cijeli niz parametara od kojih ćemo spomenuti samo neke : Parametar (prekidač) -a -e -g -r -i -n -p Opis Prikazuje sve mrežne konekcije i TCP/UDP portove Prikazuje Ethernet parametre mreže te statistiku o količini primljenih/poslanih podataka Prikazuje statistiku za Multicast Prikazuje Routing tablicu Prikazuje statistiku za mrežne interface-e i mrežne kartice Sve oknekcije koje prikazuje, prikazuje s IP adresama a ne s imenima računala (hostname) Prikazuje statistike prema protokolu uz ispis servisa (daemona) zaduženog za konekciju Primjeri Printed on 2015/01/29 11:54

223 2015/01/29 11:54 223/ Prikaži sve mrežne konekcije (-a) ali u brojčanom formatu (-n): netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp : :* LISTEN tcp : :* LISTEN tcp : :* LISTEN tcp : :* LISTEN tcp : :6851 SYN_RECV tcp : :* LISTEN tcp : :* LISTEN tcp : :* LISTEN tcp : :* LISTEN tcp : :* LISTEN tcp : :43556 TIME_WAIT tcp : :514 ESTABLISHED tcp : :53085 TIME_WAIT tcp : :56128 TIME_WAIT tcp : :40703 TIME_WAIT tcp : :42370 ESTABLISHED Prikaži sve mrežne konekcije (-a) ali u brojčanom formatu (-n) s time da vidimo koji servis (daemon) je otvorio koji TCP/UDP port (-p) vidljivo u stupcu PID/Program name: netstat -anp Open Source Osijek -

224 wiki:knjige:uvod_u_linux Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp : :* LISTEN 596/slapd tcp : :* LISTEN 610/snmpd tcp : :* LISTEN 776/mysqld tcp : :* LISTEN 858/httpd tcp : :* LISTEN 16972/Passenger Rac tcp : :* LISTEN 639/vsftpd tcp : :* LISTEN 620/sshd tcp : :* LISTEN 821/sendmail tcp : :* LISTEN 858/httpd tcp : :48515 TIME_WAIT tcp : :514 ESTABLISHED 493/rsyslogd tcp : :51755 TIME_WAIT tcp : :37826 TIME_WAIT tcp : :42370 ESTABLISHED 596/slapd Vidljivo je pr. da je mysql baza podataka (mysqld servis/daemon) na IP adresi : (ovo računalo), port Osim toga vidimo da je Web poslužitelj httpd (Apache), također na IP adresi : (ovo računalo), port 80, 3. Prikažimo statistiku za sve mrežne interface-e (-i)> netstat -i Kernel Interface table Iface OVR Flg MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX- Printed on 2015/01/29 11:54

225 2015/01/29 11:54 eth0 0 BMRU lo 0 LRU 225/ Vidimo da na sustavu postoje dva mrežna interface-a, za koje vidimo i statistike, koliko mrežnog prometa je primljeno i poslano s njih i na njih: eth0 Ovo je mrežna kartica lo Ovo je loopback interface 4. Ispiši Routing tablicu (-r): netstat -rn Kernel IP routing table Destination Gateway Iface eth eth eth0 Genmask Flags MSS Window irtt U U UG Vidimo da je Default Gateway (Destination IP : i Genmask (netmask): ) postavljen na IP adresu : , preko eth0 mrežne kartice, kao i routing tablicu za mrežu / koja isto ide na eth0 mrežnu karticu (ovo je mreža na kojoj je ovo računalo). Mrežni servisi (daemoni). u izradi. Napredne mrežne tehnologije Ukratko ćemo se upoznati s naprednim mrežnim tehnologijama i objasniti ćemu one služe. Open Source Osijek -

226 wiki:knjige:uvod_u_linux VLAN-ovi VLAN čini logičku grupu ili cjelinu raznih mrežnih komponenti (računala, mrežnih uređaja i sl.). VLAN-ovi se obično grupiraju prema nekim logičkim podjelama mreže: pr. prema odjelu tvrtke, prema specifičnim zahtjevima korisnika, poslužitelja i sl. Switch-evi i bridge-vi propuštaju unicast, multicast i broadcast promet samo unutar VLAN-a unutar kojega se nalaze. Dakle komunikacija je moguća samo između svih mrežnih uređaja i računala unutar jednog VLAN-a. Promet između VLAN-ova nije moguć bez Layer 3 uređaja (Routeri ili Multilayer Switchevi). VLAN TRUNK TRUNK-ovi (prema Cisco terminologiji) omogućavaju propuštanje više istovremenih VLAN-ova, kroz određeni interface. Standardno svaki interface može biti isključivo samo u jednom VLAN-u. U slučaju potrebe da kroz određeni interface (port na switchu/routeru/ ) moramo ili želimo propuštati više VLAN-ova, moramo interface konfigurirati kao trunk te odabrati neki od trunk protokola, koji pojednostavljeno, na svaki mrežni paket lijepe VLAN-ID, tkzv tag ili naljepnicu, sve dok putuje kroz interface koji je u trunk mod-u.dakle kada paket koji ima VLAN tag, dođe do normalnog interface-a, u točno određenom VLAN-u (čiji tag/id nosi), taj tag se skida i paket dalje nastavlja put kao običan/normalan. Postoji nekoliko protokola za trunk-ing a to su: Cisco ISL IEEE 802.1Q Kako to radi na pojednostavljenom modelu, vidljivo je na slici. Printed on 2015/01/29 11:54

227 2015/01/29 11:54 227/232 Bonding (Agregacija/Etherchannel)...u izradi.. Mrežni uređaji Kratak (p)opis mrežnih uređaja i pojmova o kojima smo pričali: HUB Hub-ovi ili koncentratori su se koristili za spajanje više uređaja (računala/poslužitelja, ) na dijeljeni mrežni medija (pr. bakar [UTP]) mrežu. Oni rade poput Repeater-a dakle oni samo pojačavaju oslabljeni signal kroz mrežu. Oni su prema OSI modelu na prvo sloju (Layer 1). Oni nemaju nikakvu logiku rada već samo pojačavaju i šalju signal na mrežu. HUB-ove su zamjenili switchevi (pogledajte prethodno poglavlje Nasljeđe prošlosti i CSMA/CD protokol koji je izmišljen Open Source Osijek -

228 wiki:knjige:uvod_u_linux zbog HUB-ova i problema koje donose). Bridge Bridge uređaji su se koristili za spajanje više mreža povezanih HUB-ovima. Oni su odvajali segmente mreža spojenih HUB-ovima, pošto rade na OSI sloju 2 (Layer 2). Bridge-evi su zapravo switchevi ali sa vrlo malim brojem portova. Bridgeve su zamjenili Switchevi tj. switchevi su bridgevi sa velikim brojem portova. Switch Switchevi ili preklopnici su uređaji koji rade na OSI sloju 2 (Layer 2) (postoje i Multilayer switchevi). Switchevi odlučuju o preklapanju na osnovu MAC adresa, koje se nalaze unutar svakog paketa podataka, koji putuje mrežom.switchevi imaju puno portova (mrežnih utičnica) na koje se spajaju računala. To u praksi znači da switch za svaki paket koji primi, provjeri odredišnu (destination) MAC adresu i onda na osnovu svoje tablice MAC adresa odlučuje na koji port (u konačnici kojem računalu) će proslijediti taj paket. Ako destination MAC adresa paketa nije u MAC adress tablici tada switch traži preko ARP poruke (koja je broadcast - svi na mreži ju primaju) tko ima tu MAC adresu te osvježava svoju MAC tablicu. Nakon toga se taj mrežni paket šalje na ispravan port. Switchevi preklapanje paketa (s porta na port) odrađuju brzinama u okvirima mikrosekundi (μs). Router Routeri ili usmjerivači su uređaji koji rade na OSI sloju 3 (Layer 3) i/ili OSI sloju 4 (Layer 4). Oni obično povezuje udaljene lokacije veza između LAN-a i WAN-a. Njihov princip rada je sličan kao kod switcheva samo što oni umjesto MAC adresa provjeravaju IP adrese. Svaki paket koji dođe do routera, router provjeri (pročita destination IP) te pogleda u svoju routing tablicu (slčno kao MAC tablica kod switcha) da li zna kamo ga poslati. Router također ima DEFAULT ROUTE-u (slično kao Defaul Gateway), ona služi u slučajevima kada Router ne zna kamo s nekim paketom, onda ga on šalje na mrežni interface (serijski link, ethernet, ), na koji mu pokazuje default route-a. Routeri su puno složeniji od Switcheva i imaju posebne routing protokole na osnovu kojih razmijenjuju znanje o dostupnosti određenih lokacija (route-a), njihovoj brzini i sl. Routeri obično povezuju udaljene lokacije (LAN-ove preko WAN mreža). Routeri obično imaju manje portova (mrežnih interface-a), od switcheva. Za obradu svakog mrežnog paketa Routeri koriste centralni procesor (CPU), te je zbog toga prosječno Printed on 2015/01/29 11:54

229 2015/01/29 11:54 229/232 vrijeme obrade svakog mrežnog paketa mjereno u milisekundama (ms). Multilayer Switch Multi-layer switch-evi su uređaji koji rade na OSI slojevima (Layerima) 2,3 i 4. Dakle prema logici oni su uređaji koji objedinjuju funkcionalnost stndardnih switcheva (Layer 2) i Routera (Layer 3 i 4). Multi-layer switch-evi mogu odluke o switching-u/routingu odraditi na osnovi : source/destination MAC adrese u Layer 2 ili source/destination IP adrese u Layer 3 ili source/destination porta u Layer 4. Ono što je specifično za njih je da oni preklapanje (switching) ili usmjeravanje (Routing) paketa odrađuju brzinama koje su inaće moguće samo na Switchevima, i to bez upotrebe centralnog procesora (CPU). Naime oni ove odluke donose upotrebom tkzv ASIC IC-ova. ASIC (Application Specific Integrated Circuit) je IC ( chip ) koji se ovisno o izvedbi i modelu switcha praktično nalazi na svakom portu (interface-u). On je u mogućnosti unutar granica milisekundi: primiti, obraditi i proslijediti svaki mrežni paket. Firewall Firewalli su uređaji koji se stavljaju između javnih dijelova mreže i unutarnje (zaštićene) mreže. Njihova namjena je blokiranje neželjenog prometa u oba smjera (pr. sa interneta na unutarnju mrežu tvrtke i obratno). Oni također rade na Layer 3 nivou i provjeravaju svaki paket koji dođe do njih ali i na Layer 4 (TCP/UDP portovi - dakle prepoznaju protokole) a često znaju filtrirati pakete do nivoa aplikacija (Layer 7). Oni sadrže access liste u kojima se nalaze dozvole za određene IP adrese i protokole tako da se mogu točno definirati prava pristupa: prema pojedinim IP adresama ( , , ), opsegu adresa ( *, *), protokolima (http, ftp, telnet, ntp, ) /portovima (21,23,25,55,78, ), ili nekim drugim kriterijima kome se dozvoljava pristup izvana i to točno na koje računalo/server ili sl. unutar tvrtke i prema van. Firewalli obično imaju 2 interface a: Inside i Outside: Inside i Outside pojmovi podrazumijevaju unutarnje (inside) mrežne priključke kod firewalla, na koje/i su spojena računala ili mrežna oprema koja nije vidljiva ostatku mreže. Outside su mrežni priključci koji su vidljivi svima na mreži (naravno i na njih se može ograničiti pristup). Open Source Osijek -

230 wiki:knjige:uvod_u_linux DMZ DMZ (DeMilitarised Zone) ili demilitarizirana zona je zona koja se nalazi između interneta i intraneta (interneta i tvrtkine unutarnje mreže ). Poslužiteljii i uređaji koji se nalaze unutar te zone imaju malo veća prava pristupa nego da se nalaze na intranetu ali imaju određene restrikcije od i prema internetu, zbog svoje zaštite. Razna oprema se stavlja u DMZ zbog potreba razvoja projekata kojima je potreban direktan pristup internetu ili za potrebe Web hostinga, poslužitelja i sl. Dakle u DMZ zone čessto se stavljaju Web (http/https) poslužitelji, poslužitelji, FTP poslužitelji, DNS poslužitelji i sl. Proxy poslužitelj Proxy poslužitelji (Server) su uređaji koji se stavljaju nakon Firewalla i Routera prema unutarnjoj mreži (intranetu) te se preko njih računala spajaju na internet. Oni u pravilu imaju access liste u kojima su definirane IP adrese računala ili korisnička imena korisnika kojima se dopušta pristup internetu prema određenim pravilima. Na Proxy poslužitelju se može ograničiti pristup raznim sadržajima na internetu.oni također mogu ubrzati pristup internetu snimanjem sadržaja stranica kojima se pristupa na internetu, lokalno na disk (Cache-ing Proxy ). VPN VPN (Virtual Private Network) su privatne mreže koje se fizički nalaze unutar javnih mreža, kaošto je internet. Korištenjem VPN mreže korisnik može sa udaljene lokacije, koja ima pristup internetu, putem VPN-a pristupiti mrežnim resursima svoje tvrtke, kao da je fizički unutar njene mreže. VPN radi tako da se između udaljenog korisnika i tvrtkine mreže (na osnovu logina/lozinke i ključeva) ostvaruje kriptirani (šifrirani), tunel kroz koji putuju podaci. Te podatke ne može vidjeti nitko osim dvije strane koje su otvorile VPN tunel. U globalu razlikujemo 3 tipa VPN-a: Access VPN: omogućava udaljeni pristup na intranet ili extranet infrastrukturu preko dijeljene (share) infrastrukture poput: Dial UP, ISDN, (A/S/H)DSL, Cable modem i sl. na druge udaljene korisnike ili na intranet/e. Intranet VPN: omogućava pristup preko dijeljene veze, za spajanje više lokacija i omogućava pristup samo zaposlenicima unutar korporacije Extranet VPN: omogućava pristup preko dijeljene veze, za spajanje kompanije partnera na udaljenim lokacijama i omogućava pristup vanjskim (engl. External) korisnicima. Log datoteke Zbog potrebe za praćenjem stanja raznih komponenti sustava, logiraju odnosno snimaju se određene aktivnosti na sustavu u tkzv. log datoteke. U Linuxu je moguće logirati više-manje sve, na vrlo jednostavan način koji se svodi na zapisivanje u neku od za to predviđenih datoteka. Standardno se datoteke za logiranje nalaze u /var/log/ direktoriju. Većina tih datoteka je u tekstualnom formatu Printed on 2015/01/29 11:54

231 2015/01/29 11:54 231/232 (uz nekoliko iznimki). Pogledajte kratku listu log datoteka s opisima: /var/log/messages sadrži globalne sistemske poruke koje se spremaju od trenutka podizanja sustava. /var/log/dmesg sadrži informacija koje proslijeđuje kernel. Ove poruke mogu se vidjeti s naredbom dmesg. /var/log/boot.log sadrži informacije koje se logiraju kod podizanja (engl. Boot) sustava tj. podizanja svakog pojedinog servisa/daemona tokom podizanja sustava. /var/log/lastlog Prikazuje informacije o zadnjem logiranom korisniku.naredbom lastlog se može vidjeti sadržaj ove datoteke. /var/log/maillog sadrži log informacije mail poslužitelja. /var/log/xorg.x.log sadrži log informacije o X Window sustavu. /var/log/btmp sadrži informacije o pogrešnim pokušajima logiranja na sustav (! nije u tekstualnom formatu!). S naredbom last može se vidjeti formatirana statistika iz ove datoteka, također i sa utmpdump /var/log/btmp. /var/log/cups prikazje sve informacije vezane za Printere ili print servis/daemon (CUPS). /var/log/anaconda.log sadrži sve informacije o procesu instalacije Linuxa (za to je zadužen servis/daemon Anaconda ). /var/log/yum.log sadrži informacije koje logira YUM package manager kod instalacije paketa. /var/log/cron sadrži informacije koje zapisuje cron servis/daemon. /var/log/secure sadrži sve informacije vezane za sigurnost koje mogu popunjavati razni servisi/daemoni : p. SSH daemon ovdje zapisuje sve poruke oko logiranja. /var/log/wtmp sadrži zapise o logiranju na sustav (! nije u tekstualnom formatu!). Naredba who čita iz ove datoteke. Sadržaj možemo vidjeti sa : utmpdump /var/log/wtmp. Primjer Pošaljimo poruku koja će biti vidljiva unutar shell-a te će se zapisati u sistemsku log datoteku /var/log/messages, koju možemo pregledati i s naredbom dmesg. Poruka neka bude TEST. Naredba za ovu namjenu je logger, prekidać -s označava da će osim zapisa u /var/log/messages, poruka bit iprikazana i u shellu (komandnolinijskoj ljusci). logger -s "--TEST--" root: --TEST Provjerimo da li se sve upisalo u sistemsku log datoteku. tail /var/log/messages Sep 20 17:01:24 Server1 root: --TEST-- Open Source Osijek -

232 wiki:knjige:uvod_u_linux X Window sustav u izradi. INFO Predavanja se uz ostala predavanja najavljuje barem dva tjedna unaprijed, na stranici : From: - Open Source Osijek Permanent link: Printed on 2015/01/29 11:54

Sberbank Business Online na Mozilla FireFox

Sberbank Business Online na Mozilla FireFox Sberbank Business Online na Mozilla FireFox Verzija 1.6 Srpanj 2016. Sberbank d.d. Stranica 1 SADRŽAJ 1 INSTALACIJA... 2 2 POKRETANJE MOZILLE FIREFOX... 3 2.1 IMPORT SECURITY MODULA... 4 2.2 AUTOMATSKI

More information

Uputa za instaliranje programske potpore za operativni sustav WINDOWS

Uputa za instaliranje programske potpore za operativni sustav WINDOWS ZABA SignErgy Desktop aplikacija Uputa za instaliranje programske potpore za operativni sustav WINDOWS SADRŽAJ 1. UVOD 3 2. PODRŽANI OPERATIVNI SUSTAVI 3 3. PROGRAMSKI PREDUVJETI ZA INSTALACIJU PROGRAMSKE

More information

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 08 Zvonimir Bujanović Slaven Kožić Vinko Petričević Uvod: (X)HTML i CSS Na ovim i idućim vježbama naučit ćemo osnove jezika za opisivanje

More information

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365 Windows 8 Licenciranje, razlike u verzijama Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje Serverski proizvodi Server 2012, System centar 2012, SQL 2012, Sharepoint

More information

PKI Applet Desktop Application Uputa za instalaciju programske potpore

PKI Applet Desktop Application Uputa za instalaciju programske potpore 1 SADRŽAJ 1. UVOD 3 2. PODRŽANI OPERATIVNI SUSTAVI 3 3. PROGRAMSKI PREDUVJETI ZA INSTALACIJU PROGRAMSKE POTPORE 3 4. INSTALACIJA PROGRAMSKE POTPORE 3 5. DEINSTALACIJA PROGRAMSKE POTPORE 6 2 1. Uvod PKI

More information

VRIJEDNOSTI ATRIBUTA

VRIJEDNOSTI ATRIBUTA VRIJEDNOSTI ATRIBUTA Svaki atribut (bilo da je primarni ključ, vanjski ključ ili običan atribut) može i ne mora imati ograničenja na svojim vrijednostima. Neka od ograničenja nad atributima: Null / Not

More information

Backup i Restore C particije ili Windowsa sa NORTON-om

Backup i Restore C particije ili Windowsa sa NORTON-om BRZO KOPIRANJE I RESTAURIRANJE DISKOVA (programski paket Norton SystemWorks) OBJAŠNJENJE Backup i Restore C particije ili Windowsa sa NORTON-om Je li vam se nekada srušio operativni sustav ili pokvario

More information

PREDMET. Osnove Java Programiranja. Čas JAVADOC

PREDMET. Osnove Java Programiranja. Čas JAVADOC PREDMET Osnove Java Programiranja JAVADOC Copyright 2010 UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija,

More information

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a Webmail sistem ima podršku za SSL (HTTPS). Korištenjem ovog protokola sva komunikacija između Webmail sistema i vašeg Web čitača je kriptovana. Prilikom pristupa

More information

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA SPECIFIKACIJA BAZE PODATAKA ZA PROJEKAT NAZIV_PROJEKTA Veb knjižara - Specifikacija baze podataka 1 10.04.2017. Verzija V 1.0 Datum: 20. mart 2017. Istorija

More information

Upute za postavljanje Outlook Expressa

Upute za postavljanje Outlook Expressa Upute za postavljanje Outlook Expressa Prije postavljanja klijenata morate obavezno obaviti prvu prijavu na web mail kako bi aktivirali vaš račun na novom sustavu. Ukoliko niste obavili prvu prijavu, nećete

More information

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, 13.04.2017. Podešavanje Hyper-V Servera 2016 za RSAT upravljanje Dario Štefek Lokacije za preuzimanje: Microsoft Hyper-V Server 2016 https://www.microsoft.com/en-us/evalcenter/evaluate-hyper-v-server-2016

More information

VDSL modem Zyxel VMG1312-B10A/B30A

VDSL modem Zyxel VMG1312-B10A/B30A VDSL modem Zyxel VMG1312-B10A/B30A Default Login Details LAN IP Address http://192.168.2.1 User Name user Password 1234 Funkcionalnost lampica Power lampica treperi kratko vrijeme nakon uključivanja modema,

More information

Case Study Hrvatska pošta: Korisničko iskustvo iz snova. Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb,

Case Study Hrvatska pošta: Korisničko iskustvo iz snova. Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb, Case Study Hrvatska pošta: Korisničko iskustvo iz snova Tomislav Turk Samostalni sistem inženjer, Combis d.o.o. Zagreb, 27.12.2018. Sadržaj Hrvatska pošta prije projekta Izazovi projekta Tehnologije korištene

More information

FAT32 datotečni sustav

FAT32 datotečni sustav SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Seminarski rad u okviru predmeta Računalna forenzika 2016/2017 FAT32 datotečni sustav Ivan Blažeković Zagreb, siječanj, 2017. Sadržaj 1. Uvod...

More information

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets CSS CSS CSS: Cascading Style Sheets - Opisuje izgled (appearance) i raspored (layout) stranice - Sastoji se od CSS pravila, koji defini[u skup stilova selector { property: value; 1 Font face: font-family

More information

Uputstvo za korišćenje logrotate funkcije

Uputstvo za korišćenje logrotate funkcije Copyright AMRES Sadržaj Uvod 3 Podešavanja logrotate konfiguracionog fajla 4 Strana 2 od 5 Uvod Ukoliko je aktivirano logovanje za RADIUS proces, može se desiti da posle određenog vremena server bude preopterećen

More information

Vežbe - XII nedelja PHP Doc

Vežbe - XII nedelja PHP Doc Vežbe - XII nedelja PHP Doc Dražen Drašković, asistent Elektrotehnički fakultet Univerziteta u Beogradu Verzija alata JavaDoc za programski jezik PHP Standard za komentarisanje PHP koda Omogućava generisanje

More information

UNIX & UNIX-u slični OS Uvod u Linux

UNIX & UNIX-u slični OS Uvod u Linux UNIX & UNIX-u slični OS Uvod u Linux Željko Jeričević, Ph.D. www.riteh.hr/~zeljkoj/zeljko_jericevic.html zeljkoj@medri.hr UNIX Što je UNIX i zašto je važan Povijesni pregled Osnove Linux-a 2 November 2009

More information

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list. Ime i prezime: Asistent: Predava : Programiranje (C) 1. kolokvij 14. 4. 2003. 1. 2. 3. 4. 5. 6. 7. Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj

More information

Uputstvo za podešavanje mail klijenta

Uputstvo za podešavanje mail klijenta Uputstvo za podešavanje mail klijenta 1. Podešavanje Thunderbird mail klijenta 1.1 Dodavanje mail naloga Da biste podesili Vaš mail klijent (u ovom slučaju Thunderbird) da prima i šalje mail-ove potrebno

More information

Geant2 - JRA1. Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce)

Geant2 - JRA1. Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce) Geant2 - JRA1 Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce) 21.11.2007, CUC2007, Rijeka Što je to JRA1? Glavni zadatak JRA1 (Performance

More information

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Sustavi za praćenje i vođenje procesa Seminarski rad LOGIČKI ANALIZATOR (PC kao instrument) 26. svibnja 2007. Ivan Grubišić 0036404380 1. Logički analizator Logički

More information

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi DELEGATI Bezbedni pokazivači na funkcije Jer garantuju vrednost deklarisanog tipa. Prevodilac prijavljuje grešku ako pokušate da povežete

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Naredbe ciklusa for petlja Naredbe ciklusa Veoma često se ukazuje potreba za ponavljanjem nekih naredbi više puta tj. za ponavljanjem nekog

More information

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Nasledjivanje klasa Modifikator new class A { public virtual void F() { Console.WriteLine("I am A"); } } class B : A { public override void F()

More information

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010 Programiranje Programski jezik C prof.dr.sc. Ivo Ipšić 2009/2010 Sadržaj Ulazno-izlazne funkcije Datoteke Formatirane datoteke Funkcije za rad s datotekama Primjeri Datoteke komunikacija između programa

More information

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa Uvod u programiranje - vežbe Kontrola toka izvršavanja programa Naredbe za kontrolu toka if, if-else, switch uslovni operator (?:) for, while, do-while break, continue, return if if (uslov) naredba; if

More information

Računarske osnove Interneta (SI3ROI, IR4ROI)

Računarske osnove Interneta (SI3ROI, IR4ROI) Računarske osnove terneta (SI3ROI, IR4ROI) Vežbe MPLS Predavač: 08.11.2011. Dražen Drašković, drazen.draskovic@etf.rs Autori: Dražen Drašković Naučili ste na predavanjima MPLS (Multi-Protocol Label Switching)

More information

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET Katedra za elektroniku Računarska elektronika Grupa br. 11 Projekat br. 8 Studenti: Stefan Vukašinović 466/2013 Jelena Urošević 99/2013 Tekst projekta :

More information

Programska podrška

Programska podrška Programska podrška Sadržaj operativni sustav (OS) pojmovi komponente os-a tipovi os-a datotečni sustav organizacija podataka Stranica 2/53 Operativni sustav Operativni sustav je svojevrsna baza na kojoj

More information

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine Sadržaj 1 Web hosting 3 2 Registracija domena 3 3 Internet marketing 3 4 E mail paketi 4 5 Virtuoz 4 6 Internet Security servis 5 7 Kolokacija servera 6 8 Cloud usluge 6 9 Aktivni servisi koji nijesu u

More information

Primjena virtualnih računala u instalaciji i administraciji složenih programskih paketa

Primjena virtualnih računala u instalaciji i administraciji složenih programskih paketa Naslov Primjena virtualnih računala u instalaciji i administraciji složenih programskih paketa Dalibor Grgec, Dubravko Žigman, Davor Cafuta Grgec-06/02-0 Plan izlaganja Problem instalacije nekih programskih

More information

GUI - događaji (Events) i izuzeci. Bojan Tomić

GUI - događaji (Events) i izuzeci. Bojan Tomić GUI - događaji (Events) i izuzeci Bojan Tomić Događaji GUI reaguje na događaje (events) Događaj je neka akcija koju korisnik programa ili neko drugi izvrši korišćenjem perifernih uređaja (uglavnom miša

More information

Cjenovnik usluga informacionog društva

Cjenovnik usluga informacionog društva Cjenovnik usluga informacionog društva Verzija: 01/2018 Sadržaj 1 Web hosting 3 2 Registracija domena 3 3 Internet marketing 3 4 E mail paketi 4 5 Virtuoz 4 6 Internet Security servis 5 7 Kolokacija servera

More information

Naredbe za kontrolu toka

Naredbe za kontrolu toka Naredbe za kontrolu toka Naredbe za kontrolu toka Nakon odslušanog bit ćete u stanju: objasniti semantiku naredbi za kontrolu postupaka navesti sintaksu naredbi if, if-else i case u programskom jeziku

More information

PARALELNO PROGRAMIRANJE

PARALELNO PROGRAMIRANJE Predavanje 09 Odjel za matematiku 1 PARALELNO PROGRAMIRANJE POSIX threadovi za C++ Predavanje 09 Odjel za matematiku 2 Programske niti (thread) unutar procesa Danas ćemo se upoznati s POSIX thread bibliotekom

More information

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Prof. dr. sc. Tomislav Pribanić Izv. prof. dr. sc. Vedran Podobnik Doc. dr. sc. Marija Seder Sveučilište u Zagrebu Fakultet elektrotehnike

More information

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0. Kontrolne naredbe Primjeri: Opšti oblik razgranate strukture (if sa ) if (uslov) Naredba 1 ili blok naredbi1 Naredba 2 ili blok naredbi2 Učitati broj x i štampati vrijednost double x, z; Scanner in=new

More information

VMware Workstation. VMwareWorkstation ESX ($) (vmotion, DRS, HA, Storage vmotion) vcenter Server ($) Server. Guest OS

VMware Workstation. VMwareWorkstation ESX ($) (vmotion, DRS, HA, Storage vmotion) vcenter Server ($) Server. Guest OS VMware Workstation ESX ($) vcenter Server ($) (license manager) Server hardware (vmotion, DRS, HA, Storage vmotion) ESXi (freeware) (ESXi freeware is managed by the Virtual Infrastructure (or vsphere)

More information

VB komande. Programiranje 1

VB komande. Programiranje 1 VB komande Programiranje 1 Zadatak 1: Sastaviti program koji se sastoji iz jedne ListBox kontrole, jedne Textbox kontrole i dva komandna dugmeta. Klikom na prvo komandno dugme umeće se u ListBox sadržaj

More information

Informacioni sistemi i baze podataka

Informacioni sistemi i baze podataka Fakultet tehničkih nauka, Novi Sad Predmet: Informacioni sistemi i baze podataka Dr Slavica Kordić Milanka Bjelica Vojislav Đukić Rad u učionici (1/2) Baze podataka (db2015): Studentska korisnička šema

More information

Linux /proc/irq/<irq>/smp_affinity PC ... PCIe. 3. Legacy PCIe. INTx PCI MSI MSI-X

Linux /proc/irq/<irq>/smp_affinity PC ... PCIe. 3. Legacy PCIe. INTx PCI MSI MSI-X PC Linux /proc/irq//smp_affinity PC... 1. 2 CPU Core2 Core i Intel CPU 2. PCIe NIC 3. Legacy 8259 4. x86_64 Linux 3.2.0+ 5. PCIe INTx PCI PCI PCI PCIe MSI MSI-X 1 MSI PCI 2.3 32 MSI MSI-X PCI 3.0

More information

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end. NAREDBA CIKLUSA SA PREDUSLOVOM WHILE 1.Odrediti vrednosti s i p nakon izvrsenja sledecih naredbi za dato a=43, a=34, a=105 program p1; var a,s,p:integer; write('unesite a:');readln(a); p:=a; s:=0; while

More information

Upravljanje sistemom datoteka

Upravljanje sistemom datoteka Upravljanje sistemom datoteka Sistem datoteka Datoteka (file) predstavlja jedinicu smeštanja informacija na diskovima i ostalim spoljašnjim medijumima. Pri tome datoteka skriva detalje, od korisnika, o

More information

Razvoj hibridnih mobilnih aplikacija pomoću PhoneGap platforme

Razvoj hibridnih mobilnih aplikacija pomoću PhoneGap platforme INFOTEH-JAHORINA Vol. 12, March 2013. Razvoj hibridnih mobilnih aplikacija pomoću PhoneGap platforme Igor Dujlović Elektrotehnički fakultet Banja Luka Banja Luka, BiH dujlovic@gmail.com Zoran Đurić Elektrotehnički

More information

NASLOV SEMINARSKOG RADA (16 pt, Bold) Seminarski rad. (16 pt, Bold)

NASLOV SEMINARSKOG RADA (16 pt, Bold) Seminarski rad. (16 pt, Bold) Sveučilište u Zagrebu (12 pt, Bold) Ekonomski fakultet (12 pt, Bold) Naziv diplomskog studija (12 pt, Bold) NASLOV SEMINARSKOG RADA (16 pt, Bold) Seminarski rad (16 pt, Bold) Ime i prezime studenta/studentice,

More information

OUR KNOWLEDGE FOR YOUR SUCCESS. Iskustva u razvoju i implementaciji ADF aplikacije

OUR KNOWLEDGE FOR YOUR SUCCESS. Iskustva u razvoju i implementaciji ADF aplikacije Iskustva u razvoju i implementaciji ADF aplikacije Sadržaj Opis aplikacije za AZ Mirovinski Fond Internacionalizacija aplikacije Integracija sa Oracle Reports Iskorištenje postojeće PL/SQL logike Kreiranje

More information

JavaScript i HTML DOM

JavaScript i HTML DOM 4. vježbe iz WEB programiranja četvrtak, 22. ožujka 2012. JavaScript 1. dio JavaScript i Što je DOM? Kako JS koristi DOM? Pristup elementima dokumenta Promjena i učitavanje vrijednosti tagova Primjer 1.

More information

Jezik Baze Podataka SQL. Jennifer Widom

Jezik Baze Podataka SQL. Jennifer Widom Jezik Baze Podataka SQL SQL o Jezik koji se koristi u radu sa relacionim bazama podataka o Nije programski jezik i manje je kompleksan. o Koristi se isključivo u radu za bazama podataka. o SQL nije case

More information

Numerical Computation

Numerical Computation GNU Octave Numerical Computation vrlo često u tehnici retko stvarni problemi imaju closed-form solution čak i kad imaju, pitanje upotrebljivosti mnogo detalja numerički pristup u početku tretirano kao

More information

ILM implementacija DWH baza u T-mobile

ILM implementacija DWH baza u T-mobile ILM implementacija DWH baza u T-mobile Bojan Šumljak, PS Consultant Hrvoje Dubravica, PS Head Consultant www.snt-world.com 1 Što je ILM? - information Lifecycle Management praksa primjenjivanja pravila

More information

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0 POM - Pomoć korisnicima Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0 IZUM, 2016 COBISS, COMARC, COBIB, COLIB, IZUM su zaštićeni znaci u posedu

More information

Manually Mount Usb Flash Drive Linux Command Line Redhat

Manually Mount Usb Flash Drive Linux Command Line Redhat Manually Mount Usb Flash Drive Linux Command Line Redhat How to Format USB in Linux using Command Line. This article will help you to format USB Flash drive in Ubuntu systems via Command line. So first

More information

IBM Endpoint Manager. Maja Kehić. security

IBM Endpoint Manager. Maja Kehić. security IBM Endpoint Manager Maja Kehić security IBM Endpoint Manager Endpoints Jedinstven agent Desktop / laptop / server endpoint Mobile Purpose specific Jedinstvena konzola Zajednička infrastruktura Jedan server

More information

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje WEB programiranje HTML & CSS Autor/i: Juraj Benić 2018 1. Zadatak Kreirati stranicu kojoj će naslov biti Zadatak 1. i veličina teksta 20px te staviti

More information

Hybrid Cloud najbolje od oba svijeta

Hybrid Cloud najbolje od oba svijeta Partneri: Hybrid Cloud najbolje od oba svijeta Drazen.Bzik@COMBIS.HR Cloud okolina Hybrid infrastruktura Gartner & Hyperconverged Infrastruktura Source: Gartner, Magic Quadrant for Hyperconverged Infrastructure,

More information

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Spojnice using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO;

More information

ETHERNET LOKALNA MREŽA. I. Podešavanje mrežnih postavki računala u Linux operacijskom sustavu

ETHERNET LOKALNA MREŽA. I. Podešavanje mrežnih postavki računala u Linux operacijskom sustavu ETHERNET LOKALNA MREŽA I. Podešavanje mrežnih postavki računala u Linux operacijskom sustavu Za umrežavanje računala potrebno je: - imati ugrađenu i podešenu Ethernet mrežnu karticu (instaliran pogonski

More information

Prva recenica. Druga recenica.

Prva recenica. Druga recenica. Algoritmi i programiranje Predavanje 4 METODE LOKALNE, GLOBALNE VARIJABLE I KONSTANTE METODA je imenovani izdvojeni slijed naredbi koji rješava određeni zadatak i po potrebi se poziva jednom ili više puta

More information

VERBATIM TVRDI DISK(OVI)

VERBATIM TVRDI DISK(OVI) KORISNIČKI PRIRUČNIK VERBATIM TVRDI DISK(OVI) 1007 Poštovani korisniče! Hvala što ste odabrali Verbatim tvrdi disk(ove) kao vaš vanjski uređaj za pohranu podataka. Za optimalno korištenje i izvedbu savjetujemo

More information

dr. sc.. Josip Musić Originalne slideove izradio:

dr. sc.. Josip Musić Originalne slideove izradio: Uvod u programiranje Programiranje 1 (450) Poglavlje 1 Uvod u računala, Microsoft.NET i VB.NET (dio 2 od 2): Pregled.NET platforme dr. sc.. Josip Musić jmusic@fesb.hr 1 Originalne slideove izradio: Teo

More information

Izrada VI laboratorijske vježbe

Izrada VI laboratorijske vježbe Izrada VI laboratorijske vježbe 1. Programirati proceduru koja se aktivira sa Standard palete alatki klikom na button Fajlovi. Prilikom startovanja procedure prikazuje se forma koja sadrži jedan list box

More information

CA AppLogic and Dell PowerEdge R820 Equipment Validation

CA AppLogic and Dell PowerEdge R820 Equipment Validation CA AppLogic and Dell PowerEdge R820 Equipment Validation Opening Statement Last Updated May 14, 2013 The Dell PowerEdge R820 servers described below are compatible and validated with both CA AppLogic 3.1.14

More information

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Obrada izuzetaka Šta je izuzetak? Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Prosleđuje izuzetak,

More information

Uputa za korištenje Office365 usluga

Uputa za korištenje Office365 usluga Uputa za korištenje Office365 usluga Sadržaj 1. Prijava na Office365... 1 2. Instalacija Office paketa na Vaše uređaje... 3 2.1. Instalacija Office 2016 alata na Vaše računalo... 3 2.2. Instalacija drugih

More information

Zadatci Small Basic za 7. Razred ( programa)

Zadatci Small Basic za 7. Razred (  programa) Zadatci Small Basic za 7. Razred (www.smallbasic.com-preuzimanje programa) 1. Nacrtaj slijedeći crtež pomoću naredbi u small basic-u. Boje odaberite po svojim željama. GraphicsWindow.Width = 600 Visina

More information

Osiguranje dostupnosti IT usluga. Petar Koraca

Osiguranje dostupnosti IT usluga. Petar Koraca Osiguranje dostupnosti IT usluga Petar Koraca whoami VeleRi informatika, smjer programsko inženjerstvo sysadmin @ Infobip, Pula Linux/Windows, High Availability, monitoring, virtualizacija,... Tema? Internet

More information

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv Mašinska vizija Dr Nenad Jovičić 2017. tnt.etf.rs/~mv Linearne 2D geometrijske transformacije 2D geometrijske transformacije Pretpostavka: Objekti u 2D prostoru se sastoje iz tačaka i linija. Svaka tačka

More information

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end.

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end. For 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} for i:=1 to 5do writeln(i); 2) program ispis; {ispisuje brojeve od 5 do 1 jedan ispod drugog} for i:=5 downto 1 do writeln(i); 3) program

More information

Aster Database Platform/OS Support Matrix, version 6.00

Aster Database Platform/OS Support Matrix, version 6.00 Aster Database Platform/OS Support Matrix, version 6.00 Versions AD6.00 Product ID: B700-6042-600K First Published on 12/18/2013 Contents Introduction... 2 Support for Teradata Aster MapReduce Appliance

More information

KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB

KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB 10 th International Scientific Conference on Production Engineering DEVELOPMENT AND MODERNIZATION OF PRODUCTION KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB

More information

CA AppLogic and Dell PowerEdge R420 Equipment Validation

CA AppLogic and Dell PowerEdge R420 Equipment Validation CA AppLogic and Dell PowerEdge R420 Equipment Validation Opening Statement Last Updated May 3, 2013 The Dell PowerEdge R420 servers described below are compatible and validated with both CA AppLogic 3.1.14

More information

Programiranje Internet aplikacija

Programiranje Internet aplikacija Programiranje Internet aplikacija Čas 8 - HTML 5 Dražen Drašković, Sanja Delčev Neka pravila HTML 5 Nove mogućnosti treba da se zasnivaju na HTML-u, CSS-u, DOM-u i JavaScript-u. Smanjiti potrebu za eksternim

More information

CA AppLogic and Dell PowerEdge R620 Equipment Validation

CA AppLogic and Dell PowerEdge R620 Equipment Validation CA AppLogic and Dell PowerEdge R620 Equipment Validation Opening Statement Last Updated May 14, 2013 The Dell PowerEdge R620 servers described below are compatible and validated with both CA AppLogic 3.1.14

More information

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133 Binarne hrpe Potpuno binarno stablo binarno stablo u kojem svaki čvor koji nije list ima točno 2 nasljednika. Binarna hrpa potpuno binarno stablo u kojem svaki čvor koji nije list ima veću ključnu vrijednost

More information

Introduction to Operating Systems. Note Packet # 1. CSN 115 Operating Systems. Genesee Community College. CSN Lab Overview

Introduction to Operating Systems. Note Packet # 1. CSN 115 Operating Systems. Genesee Community College. CSN Lab Overview Introduction to Operating Systems Note Packet # 1 CSN 115 Operating Systems Genesee Community College CSN Lab Overview Dual booted Windows/Linux Workstations Linux workstations currently run CentOS and

More information

PROGRAMIRANJE. Amir Hajdar

PROGRAMIRANJE. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Klase i objekti u Javi Primjer kroz klasu Krug Atributi i metode Inicijalizacija objekata (konstruktori) Polymorphism Statičke varijable i metode This Klase i objekti u

More information

Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni diplomski studij matematike, smjer: Matematika i računarstvo

Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni diplomski studij matematike, smjer: Matematika i računarstvo Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni diplomski studij matematike, smjer: Matematika i računarstvo Danilo Šormaz Razvoj mobilnih aplikacija Seminarski rad Kolegij : Softversko

More information

Aster Database Platform/OS Support Matrix, version 5.0.2

Aster Database Platform/OS Support Matrix, version 5.0.2 Aster Database Platform/OS Support Matrix, version 5.0.2 Contents Introduction... 2 Support for Teradata Aster MapReduce Appliance 2... 2 Support for Teradata Aster Big Analytics Appliance 3H... 2 Teradata

More information

Alen Prodan. Standby DB tehnologija na Oracle SE bazi podataka

Alen Prodan. Standby DB tehnologija na Oracle SE bazi podataka Alen Prodan Standby DB tehnologija na Oracle SE bazi podataka Agenda Uvod u standby database tehnologiju Standby baza podataka na Oracle Standard Edition platformi Automatizacija postupka održavanja standby

More information

Marko Milošević.

Marko Milošević. Marko Milošević marko643@gmail.com marko.milosevic@pmf.edu.rs ESPB 8 Bodovanje Domaći Kolokvijumi 2x10 2x20 Završni ispit 40 Konsultacije sreda 13-14 četvrtak 16-17 Šabloni dizajna (Design Patterns) Metrika

More information

Nove značajke u Liferay portalu v6.2. Ivica Čardić Senior Software Engineer, Liferay Inc.

Nove značajke u Liferay portalu v6.2. Ivica Čardić Senior Software Engineer, Liferay Inc. Nove značajke u Liferay portalu v6.2 Ivica Čardić Senior Software Engineer, Liferay Inc. Fokus u Liferay v6.2 Mobilna platforma Poboljšano web iskustvo Kolaboracijska platforma Aplikacijska platforma Mobilna

More information

Sistemska programska podrška. Programska podrška. MS Windows. MS Windows NT

Sistemska programska podrška. Programska podrška. MS Windows. MS Windows NT Programska podrška Sistemska Namijenjena je pokretanju računala i zatim što djelotvornijem iskorištenju. Aplikativna Namijenjena je rješavanju konkretnih korisničkih poslova Sistemska programska podrška

More information

Single Sign-On s Officeom 365 na Kineziološkom fakultetu Sveučilišta u Zagrebu

Single Sign-On s Officeom 365 na Kineziološkom fakultetu Sveučilišta u Zagrebu Single Sign-On s Officeom 365 na Kineziološkom fakultetu Sveučilišta u Zagrebu Stipe Gorenjak, Kineziološki fakultet Sveučilišta u Zagrebu e-mail: stipe.gorenjak@kif.hr Sponzori Ugasite mobitele. Hvala.

More information

DA LI POSTOJI SAMO JEDNA "ISPRAVNA" ARHITEKTURA WEB POSLOVNIH APLIKACIJA

DA LI POSTOJI SAMO JEDNA ISPRAVNA ARHITEKTURA WEB POSLOVNIH APLIKACIJA DA LI POSTOJI SAMO JEDNA "ISPRAVNA" ARHITEKTURA WEB POSLOVNIH APLIKACIJA Zlatko Sirotić, univ.spec.inf. Istra informatički inženjering d.o.o. Pula Stranica 1 Malo marketinga Stranica 2 Autor je (bar neko

More information

TP-LINK TL-WPA4220 strujni prijenosnik Internet ili IPTV signala s bežičnim modulom. Priručnik za korištenje i brzu instalaciju

TP-LINK TL-WPA4220 strujni prijenosnik Internet ili IPTV signala s bežičnim modulom. Priručnik za korištenje i brzu instalaciju TP-LINK TL-WPA4220 strujni prijenosnik Internet ili IPTV signala s bežičnim modulom Priručnik za korištenje i brzu instalaciju Sadržaj ŠTO JE TP-LINK TL-WPA4220... 3 KAKO KORISITI TP-LINK TL-WPA4220...

More information

Korisničko uputstvo za instalaciju i podešavanje securew2 programa za pristup eduroam servisu

Korisničko uputstvo za instalaciju i podešavanje securew2 programa za pristup eduroam servisu Korisničko uputstvo za instalaciju i podešavanje securew2 programa za pristup eduroam servisu Termin supplicant se koristi u IEEE 802.1X standardu. U širem značenju, ovaj termin predstavlja entitet (korisnik

More information

Besplatni softverski alati

Besplatni softverski alati Sadržaj Besplatni softverski alati GIMP 1 1. 2. 3. 4. 5. Zoltan Geller zoltang@ff.uns.ac.rs 2016 6. Potrebni alati - Kompresovanje fajlova i foldera - Potrebni alati - Dekompresovanje fajlova i foldera

More information

Uputstvo za konfiguraciju računara za korištenje BIHnet ADSL usluge

Uputstvo za konfiguraciju računara za korištenje BIHnet ADSL usluge Uputstvo za konfiguraciju računara za korištenje BIHnet ADSL usluge Za ADSL vezu na Internet potrebno je: Računar: 133MHz i 16 MB Ram (preporučeno više), 10 Base-T/ 100 Base- TX Ethernet mrežni adapter,

More information

OSNOVE 64-BITNOGA RAČUNALSTVA THE BASICS OF 64-BIT COMPUTING

OSNOVE 64-BITNOGA RAČUNALSTVA THE BASICS OF 64-BIT COMPUTING Eng. Rev. 28-2 (2008) 119-130 119 UDK 004.382.7 OSNOVE 64-BITNOGA RAČUNALSTVA THE BASICS OF 64-BIT COMPUTING Sandi SVETIĆ Antun SOK Sažetak: U radu se objašnjavaju osnove na kojima počiva 64-bitno računalstvo

More information

CA AppLogic and Wiwynn SV320 Equipment Validation

CA AppLogic and Wiwynn SV320 Equipment Validation CA AppLogic and Wiwynn SV320 Equipment Validation Opening Statement Last Updated May 22, 2013 The Wiwynn SV320 servers described below are compatible and validated with CA AppLogic 3.5.19 Xen and CA AppLogic

More information

Operativni Sistem koji podržava multitasking

Operativni Sistem koji podržava multitasking Windows Windows Operativni Sistem koji podržava multitasking Kompatibilan sa prethodnim verzijama Windows-a Koristi grafičko okruženje Jednostavan za instalaciju i upotrebu IKONE Desktop START MENI TASK

More information

4. Sustavi za pohranu podataka

4. Sustavi za pohranu podataka 4. Sustavi za pohranu podataka Magnetski diskovi Zapisivanje na magnetski medij Klasteri i fragmentacija Klasično i zonsko snimanje podataka Logička i fizička geometrija Performanse Sučelje ATA naredbe

More information

Linux gaming I game development Mario Kamenjak

Linux gaming I game development Mario Kamenjak Linux gaming I game development Mario Kamenjak Pregled 1)Linux gaming 1.1Desktop Linux kao platforma 1.2Pregled Linux gaming svijeta 2)Linux game development 2.1)Općeniti razvoj na Linuxu 2.2)Razvitak

More information

VHDLPrimeri Poglavlje5.doc

VHDLPrimeri Poglavlje5.doc 5. VHDL opis kola koja obavljaju osnovne aritmetičke funkcije Sabirači Jednobitni potpuni sabirač definisan je tablicom istinitosti iz Tabele 5.1. Tabela 5.1. cin a b sum cout 0 0 0 0 0 0 0 1 1 0 0 1 0

More information

28/02/2017 Instalacija WP-a. WAMP server

28/02/2017 Instalacija WP-a. WAMP server 28/02/2017 Instalacija WP-a WAMP server Denis Selimović, 2017 LOKALNI SERVER Za lokalnu instalaciju WordPress sustava na osobno računalo potrebno je prije toga na računalo instalirati lokalni server na

More information

CST Algonquin College 2

CST Algonquin College 2 Partitions Lab due dates: Labs are due as specified usually on Page1 of the Lab document Lab due dates are expressed as: 10 min before the end of the lab period during a certain week There is a grace period

More information

Instaliranje Debian GNU/Linuxa 2.2 za SPARC

Instaliranje Debian GNU/Linuxa 2.2 za SPARC Instaliranje Debian GNU/Linuxa 2.2 za SPARC Bruce Perens Sven Rudolph Igor Grobman James Treacy Adam Di Carlo verzija 2.2.27, 14. 10. 2001. Sažetak Ovaj dokument sadrži instalacijske upute Debian GNU/Linux

More information

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi. 1 PANEL komponenta kontejnerska, slična GropBox. Roditeljska komponenta za komp. postavljene na nju. Zajedno se pomeraju. Caption svojstvo za naziv; Alighment pomera svojstvo Caption levo i desno; Align

More information